shithub: pokecrystal

Download patch

ref: fbc6fe4722f3faa69f4126ea3d2fe3a41fcba16d
parent: 4162705db909da94a62f30b5e2caee048b3bc107
parent: c60f1331fef22b886adf3472d2b4f348832cfaf7
author: surskitty <surskitty@gmail.com>
date: Mon Jan 22 19:02:56 EST 2018

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

--- a/FAQ.md
+++ b/FAQ.md
@@ -14,7 +14,7 @@
 
 ## What is pokecrystal11.gbc?
 
-Version 1.1 of Pokémon Crystal, which fixed some issues with the initial international release. `make crystal11` defines `CRYSTAL11` so the assembly builds the changed version.
+Version 1.1 of Pokémon Crystal, which fixed some issues with the initial international release. `make crystal11` defines `_CRYSTAL11` so the assembly builds the changed version.
 
 
 ## Can't build ROM; "ERROR: `UNION` already defined"
--- a/Makefile
+++ b/Makefile
@@ -20,8 +20,9 @@
 audio.o \
 home.o \
 main.o \
-maps.o \
 wram.o \
+data/common_text/common_text.o \
+data/maps/maps.o \
 data/pokemon/dex_entries.o \
 data/pokemon/egg_moves.o \
 data/pokemon/evos_attacks.o \
@@ -29,8 +30,7 @@
 engine/events.o \
 gfx/pics.o \
 gfx/sprites.o \
-lib/mobile/main.o \
-text/common_text.o
+lib/mobile/main.o
 
 crystal11_obj := $(crystal_obj:.o=11.o)
 
@@ -52,7 +52,8 @@
 	$(MAKE) -C tools/
 
 
-$(crystal11_obj): RGBASMFLAGS = -D CRYSTAL11
+$(crystal_obj):   RGBASMFLAGS = -D _CRYSTAL
+$(crystal11_obj): RGBASMFLAGS = -D _CRYSTAL -D _CRYSTAL11
 
 # The dep rules have to be explicit or else missing files won't be reported.
 # As a side effect, they're evaluated immediately instead of when the rule is invoked.
@@ -77,12 +78,12 @@
 pokecrystal11.gbc: $(crystal11_obj) pokecrystal.link
 	$(RGBLINK) -n pokecrystal11.sym -m pokecrystal11.map -l pokecrystal.link -o $@ $(crystal11_obj)
 	$(RGBFIX) -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -n 1 -p 0 -r 3 -t PM_CRYSTAL $@
-	sort pokecrystal11.sym -o pokecrystal11.sym
+	tools/sort_symfile.sh pokecrystal11.sym
 
 pokecrystal.gbc: $(crystal_obj) pokecrystal.link
 	$(RGBLINK) -n pokecrystal.sym -m pokecrystal.map -l pokecrystal.link -o $@ $(crystal_obj)
 	$(RGBFIX) -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@
-	sort pokecrystal.sym -o pokecrystal.sym
+	tools/sort_symfile.sh pokecrystal.sym
 
 
 # For files that the compressor can't match, there will be a .lz file suffixed with the md5 hash of the correct uncompressed file.
@@ -119,10 +120,12 @@
 
 ### Pokemon pic graphics rules
 
-gfx/pokemon/%/normal.gbcpal: gfx/pokemon/%/front.png
-	$(RGBGFX) -p $@ $<
+gfx/pokemon/%/front.dimensions: gfx/pokemon/%/front.png
+	tools/png_dimensions $< $@
 gfx/pokemon/%/normal.pal: gfx/pokemon/%/normal.gbcpal
 	tools/palette -p $< > $@
+gfx/pokemon/%/normal.gbcpal: gfx/pokemon/%/front.png
+	$(RGBGFX) -p $@ $<
 gfx/pokemon/%/back.2bpp: gfx/pokemon/%/back.png
 	$(RGBGFX) -h -o $@ $<
 gfx/pokemon/%/bitmask.asm: gfx/pokemon/%/front.animated.tilemap gfx/pokemon/%/front.dimensions
@@ -133,19 +136,18 @@
 	tools/pokemon_animation_graphics -o $@ $^
 gfx/pokemon/%/front.animated.tilemap: gfx/pokemon/%/front.2bpp gfx/pokemon/%/front.dimensions
 	tools/pokemon_animation_graphics -t $@ $^
-# Don't use -h, pokemon_animation_graphics takes care of it
-#gfx/pokemon/%/front.2bpp: gfx/pokemon/%/front.png
-#	$(RGBGFX) -o $@ $<
 
 
 ### Misc file-specific graphics rules
 
-gfx/shrink/shrink1.2bpp: rgbgfx += -h
-gfx/shrink/shrink2.2bpp: rgbgfx += -h
+gfx/new_game/shrink1.2bpp: rgbgfx += -h
+gfx/new_game/shrink2.2bpp: rgbgfx += -h
 
 gfx/trainers/%.2bpp: rgbgfx += -h
 gfx/trainers/%.pal: gfx/trainers/%.gbcpal
 	tools/palette -p $< > $@
+gfx/trainers/%.gbcpal: gfx/trainers/%.png
+	$(RGBGFX) -p $@ $<
 
 gfx/mail/dragonite.1bpp: tools/gfx += --remove-whitespace
 gfx/mail/large_note.1bpp: tools/gfx += --remove-whitespace
@@ -157,6 +159,11 @@
 gfx/pokedex/sgb.2bpp: tools/gfx += --trim-whitespace
 gfx/pokedex/slowpoke.2bpp: tools/gfx += --trim-whitespace
 
+gfx/pokegear/pokegear.2bpp: rgbgfx += -x2
+gfx/pokegear/pokegear_sprites.2bpp: tools/gfx += --trim-whitespace
+
+gfx/mystery_gift/mystery_gift.2bpp: tools/gfx += --trim-whitespace
+
 gfx/title/crystal.2bpp: tools/gfx += --interleave --png=$<
 gfx/title/old_fg.2bpp: tools/gfx += --interleave --png=$<
 gfx/title/logo.2bpp: rgbgfx += -x 4
@@ -194,17 +201,21 @@
 
 gfx/trainer_card/chris_card.2bpp: rgbgfx += -h
 gfx/trainer_card/kris_card.2bpp: rgbgfx += -h
+gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace
 
+gfx/overworld/chris_fish.2bpp: tools/gfx += --trim-whitespace
+gfx/overworld/kris_fish.2bpp: tools/gfx += --trim-whitespace
+
 gfx/battle/dude.2bpp: rgbgfx += -h
 
 gfx/font/unused_bold_font.1bpp: tools/gfx += --trim-whitespace
 
-gfx/pokegear/pokegear.2bpp: rgbgfx += -x2
-gfx/pokegear/pokegear_sprites.2bpp: tools/gfx += --trim-whitespace
+gfx/sgb/sgb_border.2bpp: tools/gfx += --trim-whitespace
 
 gfx/mobile/ascii_font.2bpp: tools/gfx += --trim-whitespace
 gfx/mobile/electro_ball.2bpp: tools/gfx += --trim-whitespace
 gfx/mobile/electro_ball_nonmatching.2bpp: tools/gfx += --remove-duplicates --remove-xflip
+gfx/mobile/mobile_adapter.2bpp: tools/gfx += --trim-whitespace
 gfx/mobile/mobile_splash.2bpp: tools/gfx += --remove-duplicates --remove-xflip
 gfx/mobile/pichu_animated.2bpp: tools/gfx += --trim-whitespace
 
@@ -228,7 +239,5 @@
 	$(RGBGFX) -t $@ $<
 %.gbcpal: %.png
 	$(RGBGFX) -p $@ $<
-%.pal: %.gbcpal
-	tools/palette $< > $@
 %.dimensions: %.png
 	tools/png_dimensions $< $@
--- a/STYLE.md
+++ b/STYLE.md
@@ -1,3 +1,5 @@
+# Style Guide
+
 Some of the code will disagree with this guide. Older code is less likely to be correct. Use your best judgement.
 
 When you come across an edge case that isn't referenced in this guide, please add it.
--- a/audio.asm
+++ b/audio.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "Audio", ROMX
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -40,7 +40,7 @@
 
 	ld hl, Channels ; start of channel data
 	ld de, ChannelsEnd - Channels ; length of area to clear (entire sound wram area)
-.clearchannels ; clear Channel1-$c2bf
+.clearchannels
 	xor a
 	ld [hli], a
 	dec de
@@ -408,7 +408,7 @@
 	ret
 
 .asm_e824d
-	ld a, $3f
+	ld a, $3f ; sound length
 	ld [rNR31], a
 	xor a
 	ld [rNR30], a
@@ -1304,8 +1304,8 @@
 	ld [hl], a
 	; are we on the last channel? (noise sampling)
 	ld a, [CurChannel]
-	and $3
-	cp $3
+	maskbits NUM_MUSIC_CHANS
+	cp CHAN4
 	ret z
 	; update hi frequency from next param
 	call GetMusicByte
@@ -1320,8 +1320,8 @@
 ; load ptr to sample header in NoiseSampleAddress
 	; are we on the last channel?
 	ld a, [CurChannel]
-	and $3
-	cp $3
+	and NUM_MUSIC_CHANS +- 1
+	cp CHAN4
 	; ret if not
 	ret nz
 	; update note duration
@@ -1668,7 +1668,7 @@
 ; if ????, jump
 	; get channel
 	ld a, [CurChannel]
-	and $3 ; ch0-3
+	maskbits NUM_MUSIC_CHANS
 	ld e, a
 	ld d, 0
 	; hl = Channel1JumpCondition + channel id
@@ -1966,8 +1966,8 @@
 	add hl, bc
 	ld [hl], a
 	ld a, [CurChannel]
-	and $3
-	cp CHAN8 & $3
+	maskbits NUM_MUSIC_CHANS
+	cp CHAN4
 	ret z
 	; intensity
 	call Music_Intensity
@@ -2414,7 +2414,7 @@
 	push de
 	; store current channel in de
 	ld a, [CurChannel]
-	and $3
+	maskbits NUM_MUSIC_CHANS
 	ld e, a
 	ld d, 0
 	; get this channel's lr tracks
@@ -2449,7 +2449,7 @@
 	call LoadMusicByte ; store first byte of music header in a
 	rlca
 	rlca
-	and $3 ; get number of channels
+	maskbits NUM_MUSIC_CHANS
 	inc a
 .loop
 ; start playing channels
@@ -2474,7 +2474,7 @@
 
 ; e8b79
 
-_PlayCryHeader:: ; e8b79
+_PlayCry:: ; e8b79
 ; Play cry de using parameters:
 ;	CryPitch
 ;	CryLength
@@ -2505,7 +2505,7 @@
 	; Top 2 bits contain the number of channels
 	rlca
 	rlca
-	and 3
+	maskbits NUM_MUSIC_CHANS
 
 ; For each channel:
 	inc a
@@ -2530,8 +2530,8 @@
 
 ; No tempo for channel 4
 	ld a, [CurChannel]
-	and 3
-	cp 3
+	maskbits NUM_MUSIC_CHANS
+	cp CHAN4
 	jr nc, .start
 
 ; Tempo is effectively length
@@ -2669,7 +2669,7 @@
 	call LoadMusicByte
 	rlca ; top 2
 	rlca ; bits
-	and $3
+	maskbits NUM_MUSIC_CHANS
 	inc a ; # channels -> # loops
 .startchannels
 	push af
@@ -2722,7 +2722,7 @@
 	call LoadMusicByte
 	rlca
 	rlca
-	and 3 ; ch1-4
+	maskbits NUM_MUSIC_CHANS
 	inc a
 
 .loop
@@ -2736,7 +2736,7 @@
 	push de
 	; get tracks for this channel
 	ld a, [CurChannel]
-	and 3 ; ch1-4
+	maskbits NUM_MUSIC_CHANS
 	ld e, a
 	ld d, 0
 	call GetLRTracks
@@ -2749,7 +2749,7 @@
 	add hl, bc
 	ld [hl], a
 
-	ld hl, Channel1Field30 - Channel1 ; $c131 - Channel1
+	ld hl, Channel1Field30 - Channel1
 	add hl, bc
 	ld [hl], a
 
@@ -2760,11 +2760,11 @@
 ; ch3-4
 	ld a, [wSFXDuration]
 
-	ld hl, Channel1Field2e - Channel1 ; $c12f - Channel1
+	ld hl, Channel1Field2e - Channel1
 	add hl, bc
 	ld [hl], a
 
-	ld hl, Channel1Field2f - Channel1 ; $c130 - Channel1
+	ld hl, Channel1Field2f - Channel1
 	add hl, bc
 	ld [hl], a
 
--- a/audio/sfx.asm
+++ b/audio/sfx.asm
@@ -2,8 +2,8 @@
 	musicheader 1, 5, Sfx_PokeballsPlacedOnTable_Ch5
 ; f0944
 
-Sfx_BallWiggle: ; f0944
-	musicheader 1, 5, Sfx_BallWiggle_Ch5
+Sfx_BallWobble: ; f0944
+	musicheader 1, 5, Sfx_BallWobble_Ch5
 ; f0947
 
 Sfx_Potion: ; f0947
@@ -4075,7 +4075,7 @@
 	endchannel
 ; f1d32
 
-Sfx_BallWiggle_Ch5: ; f1d32
+Sfx_BallWobble_Ch5: ; f1d32
 	dutycycle $2
 	soundinput $3a
 	sound __,  5, $f2, $0400
--- a/audio/sfx_pointers.asm
+++ b/audio/sfx_pointers.asm
@@ -180,7 +180,7 @@
 	dba Sfx_Encore
 	dba Sfx_BeatUp
 	dba Sfx_BatonPass
-	dba Sfx_BallWiggle
+	dba Sfx_BallWobble
 	dba Sfx_SweetScent
 	dba Sfx_SweetScent2
 	dba Sfx_HitEndOfExpBar
--- /dev/null
+++ b/charmap.asm
@@ -1,0 +1,415 @@
+; $00-$16 are TX_* constants (see macros/scripts/text.asm)
+
+; Control characters (see home/text.asm)
+
+	charmap "<PLAY_G>",  $14 ; "<PLAYER>くん" or "<PLAYER>ちゃん"; same as "<PLAYER>" in English
+	charmap "¯",         $1f ; soft linebreak
+	charmap "<LNBRK>",   $22
+	charmap "<POKE>",    $24 ; "<PO><KE>"
+	charmap "%",         $25 ; soft linebreak in landmark names
+	charmap "<RED>",     $38 ; RedsName
+	charmap "<GREEN>",   $39 ; GreensName
+	charmap "<ENEMY>",   $3f
+	charmap "<MOM>",     $49 ; MomsName
+	charmap "<PKMN>",    $4a ; "<PK><MN>"
+	charmap "<_CONT>",   $4b ; implements "<CONT>"
+	charmap "<SCROLL>",  $4c
+	charmap "<NEXT>",    $4e
+	charmap "<LINE>",    $4f
+	charmap "@",         $50 ; string terminator
+	charmap "<PARA>",    $51
+	charmap "<PLAYER>",  $52 ; PlayerName
+	charmap "<RIVAL>",   $53 ; RivalName
+	charmap "#",         $54 ; "POKé"
+	charmap "<CONT>",    $55
+	charmap "<……>",      $56 ; "……"
+	charmap "<DONE>",    $57
+	charmap "<PROMPT>",  $58
+	charmap "<TARGET>",  $59
+	charmap "<USER>",    $5a
+	charmap "<PC>",      $5b ; "PC"
+	charmap "<TM>",      $5c ; "TM"
+	charmap "<TRAINER>", $5d ; "TRAINER"
+	charmap "<ROCKET>",  $5e ; "ROCKET"
+	charmap "<DEXEND>",  $5f
+
+; Actual characters (from gfx/font/font_extra.png)
+
+	charmap "<BOLD_A>",  $60 ; unused
+	charmap "<BOLD_B>",  $61 ; unused
+	charmap "<BOLD_C>",  $62 ; unused
+	charmap "<BOLD_D>",  $63 ; unused
+	charmap "<BOLD_E>",  $64 ; unused
+	charmap "<BOLD_F>",  $65 ; unused
+	charmap "<BOLD_G>",  $66 ; unused
+	charmap "<BOLD_H>",  $67 ; unused
+	charmap "<BOLD_I>",  $68 ; unused
+	charmap "<BOLD_V>",  $69
+	charmap "<BOLD_S>",  $6a
+	charmap "<BOLD_L>",  $6b ; unused
+	charmap "<BOLD_M>",  $6c ; unused
+	charmap "<COLON>",   $6d ; colon with tinier dots than ":"
+	charmap "ぃ",         $6e ; hiragana small i, unused
+	charmap "ぅ",         $6f ; hiragana small u, unused
+	charmap "<PO>",      $70
+	charmap "<KE>",      $71
+	charmap "“",         $72 ; opening quote
+	charmap "”",         $73 ; closing quote
+	charmap "·",         $74 ; middle dot, unused
+	charmap "…",         $75 ; ellipsis
+	charmap "ぁ",         $76 ; hiragana small a, unused
+	charmap "ぇ",         $77 ; hiragana small e, unused
+	charmap "ぉ",         $78 ; hiragana small o, unused
+
+	charmap "┌",         $79
+	charmap "─",         $7a
+	charmap "┐",         $7b
+	charmap "│",         $7c
+	charmap "└",         $7d
+	charmap "┘",         $7e
+	charmap " ",         $7f
+
+; Actual characters (from gfx/font/font_battle_extra.png)
+
+	charmap "<LV>",      $6e
+
+	charmap "<DO>",      $70 ; hiragana small do, unused
+	charmap "◀",         $71
+	charmap "『",         $72 ; Japanese opening quote, unused
+	charmap "<ID>",      $73
+	charmap "№",         $74
+
+; Actual characters (from other graphics files)
+
+	; needed for _LoadFontsExtra1 (see engine/load_font.asm)
+	charmap "■",         $60 ; gfx/font/black.2bpp
+	charmap "▲",         $61 ; gfx/font/up_arrow.png
+	charmap "☎",         $62 ; gfx/font/phone_icon.2bpp
+
+	; needed for Special_MagikarpHouseSign (see engine/events/magikarp.asm)
+	charmap "′",         $6e ; gfx/font/feet_inches.png
+	charmap "″",         $6f ; gfx/font/feet_inches.png
+
+	; needed for StatsScreen_PlaceShinyIcon and PrintPartyMonPage1
+	charmap "⁂",         $3f ; gfx/stats/stats_tiles.png, tile 14
+
+; Actual characters (from gfx/font/font.png)
+
+	charmap "A",         $80
+	charmap "B",         $81
+	charmap "C",         $82
+	charmap "D",         $83
+	charmap "E",         $84
+	charmap "F",         $85
+	charmap "G",         $86
+	charmap "H",         $87
+	charmap "I",         $88
+	charmap "J",         $89
+	charmap "K",         $8a
+	charmap "L",         $8b
+	charmap "M",         $8c
+	charmap "N",         $8d
+	charmap "O",         $8e
+	charmap "P",         $8f
+	charmap "Q",         $90
+	charmap "R",         $91
+	charmap "S",         $92
+	charmap "T",         $93
+	charmap "U",         $94
+	charmap "V",         $95
+	charmap "W",         $96
+	charmap "X",         $97
+	charmap "Y",         $98
+	charmap "Z",         $99
+
+	charmap "(",         $9a
+	charmap ")",         $9b
+	charmap ":",         $9c
+	charmap ";",         $9d
+	charmap "[",         $9e
+	charmap "]",         $9f
+
+	charmap "a",         $a0
+	charmap "b",         $a1
+	charmap "c",         $a2
+	charmap "d",         $a3
+	charmap "e",         $a4
+	charmap "f",         $a5
+	charmap "g",         $a6
+	charmap "h",         $a7
+	charmap "i",         $a8
+	charmap "j",         $a9
+	charmap "k",         $aa
+	charmap "l",         $ab
+	charmap "m",         $ac
+	charmap "n",         $ad
+	charmap "o",         $ae
+	charmap "p",         $af
+	charmap "q",         $b0
+	charmap "r",         $b1
+	charmap "s",         $b2
+	charmap "t",         $b3
+	charmap "u",         $b4
+	charmap "v",         $b5
+	charmap "w",         $b6
+	charmap "x",         $b7
+	charmap "y",         $b8
+	charmap "z",         $b9
+
+	charmap "Ä",         $c0
+	charmap "Ö",         $c1
+	charmap "Ü",         $c2
+	charmap "ä",         $c3
+	charmap "ö",         $c4
+	charmap "ü",         $c5
+
+	charmap "'d",        $d0
+	charmap "'l",        $d1
+	charmap "'m",        $d2
+	charmap "'r",        $d3
+	charmap "'s",        $d4
+	charmap "'t",        $d5
+	charmap "'v",        $d6
+
+	charmap "←",         $df
+	charmap "'",         $e0
+	charmap "<PK>",      $e1
+	charmap "<MN>",      $e2
+	charmap "-",         $e3
+
+	charmap "?",         $e6
+	charmap "!",         $e7
+	charmap ".",         $e8
+	charmap "&",         $e9
+
+	charmap "é",         $ea
+	charmap "→",         $eb
+	charmap "▷",         $ec
+	charmap "▶",         $ed
+	charmap "▼",         $ee
+	charmap "♂",         $ef
+	charmap "¥",         $f0
+	charmap "×",         $f1
+	charmap "<DOT>",     $f2 ; decimal point; same as "." in English
+	charmap "/",         $f3
+	charmap ",",         $f4
+	charmap "♀",         $f5
+
+	charmap "0",         $f6
+	charmap "1",         $f7
+	charmap "2",         $f8
+	charmap "3",         $f9
+	charmap "4",         $fa
+	charmap "5",         $fb
+	charmap "6",         $fc
+	charmap "7",         $fd
+	charmap "8",         $fe
+	charmap "9",         $ff
+
+; Japanese control characters (see home/text.asm)
+
+	charmap "<JP_18>",   $18 ; "ノ゛"? (ungrammatical)
+	charmap "<NI>",      $1d ; "に "
+	charmap "<TTE>",     $1e ; "って"
+	charmap "<WO>",      $1f ; "を "
+	charmap "<TA!>",     $22 ; "た!"
+	charmap "<KOUGEKI>", $23 ; "こうげき"
+	charmap "<WA>",      $24 ; "は "
+	charmap "<NO>",      $25 ; "の "
+	charmap "<ROUTE>",   $35 ; "ばん どうろ"
+	charmap "<WATASHI>", $36 ; "わたし"
+	charmap "<KOKO_WA>", $37 ; "ここは"
+	charmap "<GA>",      $4a ; "が "
+
+; Japanese kana, for those bits of text that were not translated to English
+
+	charmap "ガ", $05
+	charmap "ギ", $06
+	charmap "グ", $07
+	charmap "ゲ", $08
+	charmap "ゴ", $09
+	charmap "ザ", $0a
+	charmap "ジ", $0b
+	charmap "ズ", $0c
+	charmap "ゼ", $0d
+	charmap "ゾ", $0e
+	charmap "ダ", $0f
+	charmap "ヂ", $10
+	charmap "ヅ", $11
+	charmap "デ", $12
+	charmap "ド", $13
+
+	charmap "バ", $19
+	charmap "ビ", $1a
+	charmap "ブ", $1b
+	charmap "ボ", $1c
+
+	charmap "が", $26
+	charmap "ぎ", $27
+	charmap "ぐ", $28
+	charmap "げ", $29
+	charmap "ご", $2a
+	charmap "ざ", $2b
+	charmap "じ", $2c
+	charmap "ず", $2d
+	charmap "ぜ", $2e
+	charmap "ぞ", $2f
+	charmap "だ", $30
+	charmap "ぢ", $31
+	charmap "づ", $32
+	charmap "で", $33
+	charmap "ど", $34
+
+	charmap "ば", $3a
+	charmap "び", $3b
+	charmap "ぶ", $3c
+	charmap "べ", $3d
+	charmap "ぼ", $3e
+
+	charmap "パ", $40
+	charmap "ピ", $41
+	charmap "プ", $42
+	charmap "ポ", $43
+	charmap "ぱ", $44
+	charmap "ぴ", $45
+	charmap "ぷ", $46
+	charmap "ぺ", $47
+	charmap "ぽ", $48
+
+	charmap "「", $70
+	charmap "」", $71
+	charmap "』", $73
+	charmap "⋯", $75
+
+	charmap " ", $7f
+
+	charmap "ア", $80
+	charmap "イ", $81
+	charmap "ウ", $82
+	charmap "エ", $83
+	charmap "オ", $84
+	charmap "カ", $85
+	charmap "キ", $86
+	charmap "ク", $87
+	charmap "ケ", $88
+	charmap "コ", $89
+	charmap "サ", $8a
+	charmap "シ", $8b
+	charmap "ス", $8c
+	charmap "セ", $8d
+	charmap "ソ", $8e
+	charmap "タ", $8f
+	charmap "チ", $90
+	charmap "ツ", $91
+	charmap "テ", $92
+	charmap "ト", $93
+	charmap "ナ", $94
+	charmap "ニ", $95
+	charmap "ヌ", $96
+	charmap "ネ", $97
+	charmap "ノ", $98
+	charmap "ハ", $99
+	charmap "ヒ", $9a
+	charmap "フ", $9b
+	charmap "ホ", $9c
+	charmap "マ", $9d
+	charmap "ミ", $9e
+	charmap "ム", $9f
+	charmap "メ", $a0
+	charmap "モ", $a1
+	charmap "ヤ", $a2
+	charmap "ユ", $a3
+	charmap "ヨ", $a4
+	charmap "ラ", $a5
+	charmap "ル", $a6
+	charmap "レ", $a7
+	charmap "ロ", $a8
+	charmap "ワ", $a9
+	charmap "ヲ", $aa
+	charmap "ン", $ab
+	charmap "ッ", $ac
+	charmap "ャ", $ad
+	charmap "ュ", $ae
+	charmap "ョ", $af
+	charmap "ィ", $b0
+
+	charmap "あ", $b1
+	charmap "い", $b2
+	charmap "う", $b3
+	charmap "え", $b4
+	charmap "お", $b5
+	charmap "か", $b6
+	charmap "き", $b7
+	charmap "く", $b8
+	charmap "け", $b9
+	charmap "こ", $ba
+	charmap "さ", $bb
+	charmap "し", $bc
+	charmap "す", $bd
+	charmap "せ", $be
+	charmap "そ", $bf
+	charmap "た", $c0
+	charmap "ち", $c1
+	charmap "つ", $c2
+	charmap "て", $c3
+	charmap "と", $c4
+	charmap "な", $c5
+	charmap "に", $c6
+	charmap "ぬ", $c7
+	charmap "ね", $c8
+	charmap "の", $c9
+	charmap "は", $ca
+	charmap "ひ", $cb
+	charmap "ふ", $cc
+	charmap "へ", $cd
+	charmap "ほ", $ce
+	charmap "ま", $cf
+	charmap "み", $d0
+	charmap "む", $d1
+	charmap "め", $d2
+	charmap "も", $d3
+	charmap "や", $d4
+	charmap "ゆ", $d5
+	charmap "よ", $d6
+	charmap "ら", $d7
+	charmap "り", $d8
+	charmap "る", $d9
+	charmap "れ", $da
+	charmap "ろ", $db
+	charmap "わ", $dc
+	charmap "を", $dd
+	charmap "ん", $de
+	charmap "っ", $df
+	charmap "ゃ", $e0
+	charmap "ゅ", $e1
+	charmap "ょ", $e2
+
+	charmap "ー", $e3
+	charmap "゚", $e4
+	charmap "゙", $e5
+
+	charmap "?", $e6
+	charmap "!", $e7
+	charmap "。", $e8
+
+	charmap "ァ", $e9
+	charmap "ゥ", $ea
+	charmap "ェ", $eb
+
+	charmap "円", $f0
+
+	charmap ".", $f2
+	charmap "/", $f3
+
+	charmap "ォ", $f4
+
+	charmap "0", $f6
+	charmap "1", $f7
+	charmap "2", $f8
+	charmap "3", $f9
+	charmap "4", $fa
+	charmap "5", $fb
+	charmap "6", $fc
+	charmap "7", $fd
+	charmap "8", $fe
+	charmap "9", $ff
--- a/constants.asm
+++ b/constants.asm
@@ -1,3 +1,5 @@
+INCLUDE "charmap.asm"
+
 INCLUDE "macros.asm"
 
 INCLUDE "hram.asm"
@@ -42,8 +44,9 @@
 INCLUDE "constants/sprite_anim_constants.asm"
 INCLUDE "constants/tileset_constants.asm"
 INCLUDE "constants/collision_constants.asm"
-INCLUDE "constants/cgb_constants.asm"
+INCLUDE "constants/scgb_constants.asm"
 INCLUDE "constants/battle_tower_constants.asm"
 INCLUDE "constants/cry_constants.asm"
 INCLUDE "constants/audio_constants.asm"
 INCLUDE "constants/printer_constants.asm"
+INCLUDE "constants/menu_constants.asm"
--- a/constants/battle_anim_constants.asm
+++ b/constants/battle_anim_constants.asm
@@ -37,13 +37,13 @@
 	const ANIM_OBJ_06
 	const ANIM_OBJ_07
 	const ANIM_OBJ_08
-	const ANIM_OBJ_09
+	const ANIM_OBJ_FANG
 	const ANIM_OBJ_0A
-	const ANIM_OBJ_0B
-	const ANIM_OBJ_0C
-	const ANIM_OBJ_0D
-	const ANIM_OBJ_0E
-	const ANIM_OBJ_0F
+	const ANIM_OBJ_EMBER
+	const ANIM_OBJ_DRAGON_RAGE
+	const ANIM_OBJ_FLAMETHROWER
+	const ANIM_OBJ_FIRE_SPIN
+	const ANIM_OBJ_FIRE_BLAST
 	const ANIM_OBJ_BURNED
 	const ANIM_OBJ_BLIZZARD
 	const ANIM_OBJ_12
@@ -57,32 +57,32 @@
 	const ANIM_OBJ_1A
 	const ANIM_OBJ_1B
 	const ANIM_OBJ_BALL_POOF
-	const ANIM_OBJ_1D
-	const ANIM_OBJ_1E
-	const ANIM_OBJ_1F
-	const ANIM_OBJ_20
+	const ANIM_OBJ_BIG_ROCK
+	const ANIM_OBJ_SMALL_ROCK
+	const ANIM_OBJ_STRENGTH
+	const ANIM_OBJ_SEISMIC_TOSS
 	const ANIM_OBJ_BUBBLE
-	const ANIM_OBJ_22
-	const ANIM_OBJ_23
-	const ANIM_OBJ_24
-	const ANIM_OBJ_25
-	const ANIM_OBJ_26
+	const ANIM_OBJ_SURF
+	const ANIM_OBJ_SING
+	const ANIM_OBJ_WATER_GUN
+	const ANIM_OBJ_HYDRO_PUMP
+	const ANIM_OBJ_POWDER
 	const ANIM_OBJ_27
 	const ANIM_OBJ_28
 	const ANIM_OBJ_ICE_BUILDUP
 	const ANIM_OBJ_FROZEN
 	const ANIM_OBJ_MASTER_BALL_SPARKLE
-	const ANIM_OBJ_2C
+	const ANIM_OBJ_RECOVER
 	const ANIM_OBJ_2D
 	const ANIM_OBJ_2E
 	const ANIM_OBJ_2F
-	const ANIM_OBJ_30
+	const ANIM_OBJ_THUNDER_WAVE
 	const ANIM_OBJ_31
 	const ANIM_OBJ_LIGHTNING_BOLT
 	const ANIM_OBJ_33
 	const ANIM_OBJ_34
-	const ANIM_OBJ_35
-	const ANIM_OBJ_36
+	const ANIM_OBJ_CLAMP
+	const ANIM_OBJ_BITE
 	const ANIM_OBJ_37
 	const ANIM_OBJ_38
 	const ANIM_OBJ_39
@@ -95,30 +95,30 @@
 	const ANIM_OBJ_40
 	const ANIM_OBJ_41
 	const ANIM_OBJ_42
-	const ANIM_OBJ_43
+	const ANIM_OBJ_SONICBOOM_JP
 	const ANIM_OBJ_44
 	const ANIM_OBJ_ABSORB
-	const ANIM_OBJ_46
+	const ANIM_OBJ_EGG
 	const ANIM_OBJ_47
 	const ANIM_OBJ_48
 	const ANIM_OBJ_49
 	const ANIM_OBJ_LEECH_SEED
 	const ANIM_OBJ_4B
-	const ANIM_OBJ_4C
-	const ANIM_OBJ_4D
+	const ANIM_OBJ_WAVE
+	const ANIM_OBJ_CONFUSE_RAY
 	const ANIM_OBJ_4E
 	const ANIM_OBJ_4F
-	const ANIM_OBJ_50
-	const ANIM_OBJ_51
+	const ANIM_OBJ_SCREEN
+	const ANIM_OBJ_HARDEN
 	const ANIM_OBJ_CHICK
-	const ANIM_OBJ_53
-	const ANIM_OBJ_54
+	const ANIM_OBJ_AMNESIA
+	const ANIM_OBJ_ASLEEP
 	const ANIM_OBJ_SKULL
 	const ANIM_OBJ_56
 	const ANIM_OBJ_57
 	const ANIM_OBJ_58
 	const ANIM_OBJ_PARALYZED
-	const ANIM_OBJ_5A
+	const ANIM_OBJ_STRING_SHOT
 	const ANIM_OBJ_HAZE
 	const ANIM_OBJ_MIST
 	const ANIM_OBJ_SMOG
@@ -125,97 +125,97 @@
 	const ANIM_OBJ_POISON_GAS
 	const ANIM_OBJ_HORN
 	const ANIM_OBJ_60
-	const ANIM_OBJ_61
-	const ANIM_OBJ_62
-	const ANIM_OBJ_63
+	const ANIM_OBJ_PETAL_DANCE
+	const ANIM_OBJ_SLUDGE_BOMB
+	const ANIM_OBJ_PAY_DAY
 	const ANIM_OBJ_64
-	const ANIM_OBJ_65
-	const ANIM_OBJ_66
-	const ANIM_OBJ_67
-	const ANIM_OBJ_68
-	const ANIM_OBJ_69
-	const ANIM_OBJ_6A
-	const ANIM_OBJ_6B
-	const ANIM_OBJ_6C
-	const ANIM_OBJ_6D
-	const ANIM_OBJ_SKY_ATTACK_FEAROW
+	const ANIM_OBJ_MIMIC
+	const ANIM_OBJ_ATTRACT
+	const ANIM_OBJ_BONEMERANG
+	const ANIM_OBJ_BONE_CLUB
+	const ANIM_OBJ_BONE_RUSH
+	const ANIM_OBJ_SWIFT
+	const ANIM_OBJ_KINESIS
+	const ANIM_OBJ_FLASH
+	const ANIM_OBJ_SHINY
+	const ANIM_OBJ_SKY_ATTACK
 	const ANIM_OBJ_LICK
 	const ANIM_OBJ_WITHDRAW
 	const ANIM_OBJ_71
-	const ANIM_OBJ_72
-	const ANIM_OBJ_73
-	const ANIM_OBJ_74
-	const ANIM_OBJ_75
-	const ANIM_OBJ_76
-	const ANIM_OBJ_77
-	const ANIM_OBJ_78
-	const ANIM_OBJ_79
+	const ANIM_OBJ_GROWTH
+	const ANIM_OBJ_CONVERSION2
+	const ANIM_OBJ_SMOKE
+	const ANIM_OBJ_SMOKESCREEN
+	const ANIM_OBJ_SWORDS_DANCE
+	const ANIM_OBJ_SPEED_LINE
+	const ANIM_OBJ_SHARPEN
+	const ANIM_OBJ_DEFENSE_CURL
 	const ANIM_OBJ_7A
 	const ANIM_OBJ_7B
-	const ANIM_OBJ_7C
-	const ANIM_OBJ_7D
+	const ANIM_OBJ_DISABLE
+	const ANIM_OBJ_AGILITY
 	const ANIM_OBJ_HEART
-	const ANIM_OBJ_7F
-	const ANIM_OBJ_80
+	const ANIM_OBJ_FLAME_WHEEL
+	const ANIM_OBJ_SACRED_FIRE
 	const ANIM_OBJ_COTTON_SPORE
-	const ANIM_OBJ_82
-	const ANIM_OBJ_83
+	const ANIM_OBJ_MILK_DRINK
+	const ANIM_OBJ_ANGER
 	const ANIM_OBJ_84
 	const ANIM_OBJ_85
-	const ANIM_OBJ_86
-	const ANIM_OBJ_87
-	const ANIM_OBJ_88
-	const ANIM_OBJ_89
-	const ANIM_OBJ_8A
-	const ANIM_OBJ_8B
-	const ANIM_OBJ_8C
-	const ANIM_OBJ_8D
+	const ANIM_OBJ_BATON_PASS
+	const ANIM_OBJ_LOCK_ON
+	const ANIM_OBJ_MIND_READER
+	const ANIM_OBJ_SAFEGUARD
+	const ANIM_OBJ_PROTECT
+	const ANIM_OBJ_THIEF
+	const ANIM_OBJ_OCTAZOOKA
+	const ANIM_OBJ_PRESENT
 	const ANIM_OBJ_SPIKES
-	const ANIM_OBJ_8F
-	const ANIM_OBJ_90
-	const ANIM_OBJ_91
-	const ANIM_OBJ_92
+	const ANIM_OBJ_POWDER_SNOW
+	const ANIM_OBJ_DRAGONBREATH
+	const ANIM_OBJ_CONVERSION
+	const ANIM_OBJ_SPIDER_WEB
 	const ANIM_OBJ_93
-	const ANIM_OBJ_94
-	const ANIM_OBJ_95
-	const ANIM_OBJ_96
-	const ANIM_OBJ_97
-	const ANIM_OBJ_98
+	const ANIM_OBJ_NIGHTMARE
+	const ANIM_OBJ_IN_NIGHTMARE
+	const ANIM_OBJ_LOVELY_KISS
+	const ANIM_OBJ_SWEET_KISS
+	const ANIM_OBJ_SKETCH
 	const ANIM_OBJ_99
 	const ANIM_OBJ_9A
-	const ANIM_OBJ_9B
-	const ANIM_OBJ_9C
-	const ANIM_OBJ_9D
-	const ANIM_OBJ_9E
-	const ANIM_OBJ_9F
+	const ANIM_OBJ_DESTINY_BOND
+	const ANIM_OBJ_MORNING_SUN
+	const ANIM_OBJ_GLIMMER
+	const ANIM_OBJ_MOONLIGHT
+	const ANIM_OBJ_HIDDEN_POWER
 	const ANIM_OBJ_A0
 	const ANIM_OBJ_A1
-	const ANIM_OBJ_A2
-	const ANIM_OBJ_A3
-	const ANIM_OBJ_A4
-	const ANIM_OBJ_A5
+	const ANIM_OBJ_SANDSTORM
+	const ANIM_OBJ_ZAP_CANNON
+	const ANIM_OBJ_SPITE
+	const ANIM_OBJ_CURSE
 	const ANIM_OBJ_PERISH_SONG
-	const ANIM_OBJ_A7
-	const ANIM_OBJ_A8
-	const ANIM_OBJ_A9
+	const ANIM_OBJ_FORESIGHT
+	const ANIM_OBJ_RAPID_SPIN
+	const ANIM_OBJ_SWAGGER
 	const ANIM_OBJ_AA
 	const ANIM_OBJ_AB
-	const ANIM_OBJ_AC
+	const ANIM_OBJ_MEAN_LOOK
 	const ANIM_OBJ_AD
 	const ANIM_OBJ_AE
-	const ANIM_OBJ_AF
+	const ANIM_OBJ_RAIN
 	const ANIM_OBJ_B0
-	const ANIM_OBJ_B1
-	const ANIM_OBJ_B2
-	const ANIM_OBJ_B3
-	const ANIM_OBJ_B4
-	const ANIM_OBJ_B5
+	const ANIM_OBJ_PSYCH_UP
+	const ANIM_OBJ_ANCIENTPOWER
+	const ANIM_OBJ_AEROBLAST
+	const ANIM_OBJ_SHADOW_BALL
+	const ANIM_OBJ_ROCK_SMASH
 	const ANIM_OBJ_FLOWER
 	const ANIM_OBJ_COTTON
 	const ANIM_OBJ_PLAYERFEETFOLLOW
 	const ANIM_OBJ_ENEMYFEETFOLLOW
-	const ANIM_OBJ_BA
-	const ANIM_OBJ_BB
+	const ANIM_OBJ_PLAYERHEADFOLLOW
+	const ANIM_OBJ_ENEMYHEADFOLLOW
 
 ; DoBattleAnimFrame arguments (see engine/battle_anims/functions.asm)
 	const_def
--- a/constants/battle_constants.asm
+++ b/constants/battle_constants.asm
@@ -17,8 +17,18 @@
 REST_SLEEP_TURNS EQU 2
 TREEMON_SLEEP_TURNS EQU 7
 
-; PlayerStatLevels and EnemyStatLevels indexes
-; used for GetStatName
+; default move priority
+BASE_PRIORITY EQU 1
+
+; type effectiveness factors, scaled by 10
+SUPER_EFFECTIVE    EQU 20
+MORE_EFFECTIVE     EQU 15
+EFFECTIVE          EQU 10
+NOT_VERY_EFFECTIVE EQU 05
+NO_EFFECT          EQU 00
+
+; PlayerStatLevels and EnemyStatLevels indexes (see wram.asm)
+; GetStatName arguments (see data/battle/stat_names.asm)
 	const_def
 	const ATTACK
 	const DEFENSE
@@ -53,6 +63,7 @@
 	const STAT_SATK
 	const STAT_SDEF
 NUM_STATS EQU const_value
+STAT_SPC EQU STAT_SATK
 
 ; stat formula constants
 STAT_MIN_NORMAL EQU 5
--- a/constants/battle_tower_constants.asm
+++ b/constants/battle_tower_constants.asm
@@ -1,4 +1,13 @@
-; BattleTowerAction arguments (see mobile/battle_tower_5c.asm)
+BATTLETOWER_PARTY_LENGTH EQU 3
+BATTLETOWER_STREAK_LENGTH EQU 7
+
+BATTLETOWER_NUM_UNIQUE_PKMN EQU 21
+BATTLETOWER_NUM_UNIQUE_TRAINERS EQU 70
+
+BATTLETOWER_TRAINERDATALENGTH EQU $24
+BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + BATTLETOWER_PARTY_LENGTH * (PARTYMON_STRUCT_LENGTH + MON_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
+
+; BattleTowerAction writebyte arguments (see engine/events/battle_tower/battle_tower.asm)
 	const_def
 	const BATTLETOWERACTION_CHECK_EXPLANATION_READ
 	const BATTLETOWERACTION_SET_EXPLANATION_READ
@@ -33,7 +42,17 @@
 	const BATTLETOWERACTION_CHOOSEREWARD ; save options
 	const BATTLETOWERACTION_SAVEOPTIONS
 
-; sBattleTowerChallengeState
+; BattleTowerAction return values
+; - from BATTLETOWERACTION_CHECKMOBILEEVENT
+MOBILE_EVENT_OBJECT_GS_BALL EQU $b
+
+; BattleTowerText arguments (see engine/events/battle_tower/trainer_text.asm)
+const_value set 1
+	const BATTLETOWERTEXT_INTRO
+	const BATTLETOWERTEXT_WIN_TEXT
+	const BATTLETOWERTEXT_LOSS_TEXT
+
+; sBattleTowerChallengeState values
 	const_def
 	const BATTLETOWER_NO_CHALLENGE
 	const BATTLETOWER_SAVED_AND_LEFT
@@ -40,12 +59,3 @@
 	const BATTLETOWER_CHALLENGE_IN_PROGESS
 	const BATTLETOWER_WON_CHALLENGE
 	const BATTLETOWER_RECEIVED_REWARD
-
-BATTLETOWER_NROFPKMNS EQU 3
-BATTLETOWER_TRAINERDATALENGTH EQU $24
-BATTLETOWER_NROFTRAINERS EQU 7
-BATTLETOWER_NRMONSPERLEVELBRACKET EQU BATTLETOWER_NROFPKMNS * BATTLETOWER_NROFTRAINERS
-BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + 3 * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
-
-; return value from BattleTowerAction(BATTLETOWERACTION_CHECKMOBILEEVENT)
-MOBILE_EVENT_OBJECT_GS_BALL EQU $b
--- a/constants/cgb_constants.asm
+++ /dev/null
@@ -1,36 +1,0 @@
-; GetSGBLayout arguments (see engine/cgb_layouts.asm and engine/sgb_layouts.asm)
-	const_def
-	const SCGB_BATTLE_GRAYSCALE
-	const SCGB_BATTLE_COLORS
-	const SCGB_POKEGEAR_PALS
-	const SCGB_STATS_SCREEN_HP_PALS
-	const SCGB_POKEDEX
-	const SCGB_SLOT_MACHINE
-	const SCGB_06
-	const SCGB_07
-	const SCGB_DIPLOMA
-	const SCGB_MAPPALS
-	const SCGB_PARTY_MENU
-	const SCGB_EVOLUTION
-	const SCGB_0C
-	const SCGB_0D
-	const SCGB_MOVE_LIST
-	const SCGB_0F
-	const SCGB_POKEDEX_SEARCH_OPTION
-	const SCGB_11
-	const SCGB_POKEPIC
-	const SCGB_13
-	const SCGB_PACKPALS
-	const SCGB_TRAINER_CARD
-	const SCGB_POKEDEX_UNOWN_MODE
-	const SCGB_BILLS_PC
-	const SCGB_UNOWN_PUZZLE
-	const SCGB_GAMEFREAK_LOGO
-	const SCGB_PLAYER_OR_MON_FRONTPIC_PALS
-	const SCGB_TRADE_TUBE
-	const SCGB_TRAINER_OR_MON_FRONTPIC_PALS
-	const SCGB_MYSTERY_GIFT
-	const SCGB_1E
-
-SCGB_PARTY_MENU_HP_PALS  EQU -4
-SCGB_RAM EQU -1
--- a/constants/collision_constants.asm
+++ b/constants/collision_constants.asm
@@ -1,10 +1,10 @@
-; collision permissions (see tilesets/collision_permissions.asm)
+; collision permissions (see data/collision_permissions.asm)
 LANDTILE             EQU $00
 WATERTILE            EQU $01
 WALLTILE             EQU $0f
 TALK                 EQU $10
 
-; collision data types (see tilesets/*_collision.asm)
+; collision data types (see data/tilesets/*_collision.asm)
 ; TileCollisionTable indexes (see data/collision_permissions.asm)
 COLL_FLOOR             EQU $00
 COLL_01                EQU $01 ; garbage
@@ -28,19 +28,19 @@
 COLL_WATER             EQU $29
 COLL_ICE_2B            EQU $2b ; unused
 COLL_WHIRLPOOL_2C      EQU $2c ; unused
-COLL_WATERFALL_RIGHT   EQU $30 ; unused !!!
-COLL_WATERFALL_LEFT    EQU $31 ; unused !!!
-COLL_WATERFALL_UP      EQU $32 ; unused !!!
+COLL_WATERFALL_RIGHT   EQU $30 ; unused
+COLL_WATERFALL_LEFT    EQU $31 ; unused
+COLL_WATERFALL_UP      EQU $32 ; unused
 COLL_WATERFALL         EQU $33
-COLL_CURRENT_RIGHT     EQU $38 ; unused !!!
-COLL_CURRENT_LEFT      EQU $39 ; unused !!!
-COLL_CURRENT_UP        EQU $3a ; unused !!!
-COLL_CURRENT_DOWN      EQU $3b ; unused !!!
-COLL_BRAKE             EQU $40 ; unused !!!
-COLL_WALK_RIGHT        EQU $41 ; unused !!!
-COLL_WALK_LEFT         EQU $42 ; unused !!!
-COLL_WALK_UP           EQU $43 ; unused !!!
-COLL_WALK_DOWN         EQU $44 ; unused !!!
+COLL_CURRENT_RIGHT     EQU $38 ; unused
+COLL_CURRENT_LEFT      EQU $39 ; unused
+COLL_CURRENT_UP        EQU $3a ; unused
+COLL_CURRENT_DOWN      EQU $3b ; unused
+COLL_BRAKE             EQU $40 ; unused
+COLL_WALK_RIGHT        EQU $41 ; unused
+COLL_WALK_LEFT         EQU $42 ; unused
+COLL_WALK_UP           EQU $43 ; unused
+COLL_WALK_DOWN         EQU $44 ; unused
 COLL_BRAKE_45          EQU $45 ; garbage
 COLL_BRAKE_46          EQU $46 ; unused
 COLL_BRAKE_47          EQU $47 ; unused
@@ -92,16 +92,16 @@
 COLL_INCENSE_BURNER    EQU $9f
 COLL_HOP_RIGHT         EQU $a0
 COLL_HOP_LEFT          EQU $a1
-COLL_HOP_UP            EQU $a2 ; unused !!!
+COLL_HOP_UP            EQU $a2 ; unused
 COLL_HOP_DOWN          EQU $a3
 COLL_HOP_DOWN_RIGHT    EQU $a4
 COLL_HOP_DOWN_LEFT     EQU $a5
-COLL_HOP_UP_RIGHT      EQU $a6 ; unused !!!
-COLL_HOP_UP_LEFT       EQU $a7 ; unused !!!
+COLL_HOP_UP_RIGHT      EQU $a6 ; unused
+COLL_HOP_UP_LEFT       EQU $a7 ; unused
 COLL_RIGHT_WALL        EQU $b0
 COLL_LEFT_WALL         EQU $b1
 COLL_UP_WALL           EQU $b2
-COLL_DOWN_WALL         EQU $b3 ; unused !!!
+COLL_DOWN_WALL         EQU $b3 ; unused
 COLL_FF                EQU $ff ; garbage
 
 ; collision data type nybbles
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -1,13 +1,14 @@
-LEN_1BPP_TILE EQU 8 ; bytes
-LEN_2BPP_TILE EQU 16 ; bytes
-
 TILE_WIDTH EQU 8 ; pixels
+LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes
+LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes
 
 NUM_PAL_COLORS EQU 4
 
-SCREEN_WIDTH EQU 20 ; tiles
+PALRGB_WHITE EQUS "palred 31 + palgreen 31 + palblue 31" ; $7fff
+
+SCREEN_WIDTH  EQU 20 ; tiles
 SCREEN_HEIGHT EQU 18 ; tiles
-SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
+SCREEN_WIDTH_PX  EQU SCREEN_WIDTH  * TILE_WIDTH ; pixels
 SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
 
 BG_MAP_WIDTH  EQU 32 ; tiles
@@ -15,9 +16,16 @@
 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
+HP_BAR_LENGTH  EQU 6 ; tiles
 EXP_BAR_LENGTH EQU 8 ; tiles
+HP_BAR_LENGTH_PX  EQU HP_BAR_LENGTH  * TILE_WIDTH ; pixels
 EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * TILE_WIDTH ; pixels
 
-PALPACKET_LENGTH EQU $10
+; sprite_oam_struct members (see macros/wram.asm)
+	const_def
+	const SPRITEOAMSTRUCT_YCOORD     ; 0
+	const SPRITEOAMSTRUCT_XCOORD     ; 1
+	const SPRITEOAMSTRUCT_TILE_ID    ; 2
+	const SPRITEOAMSTRUCT_ATTRIBUTES ; 3
+SPRITEOAMSTRUCT_LENGTH EQU const_value
+NUM_SPRITE_OAM_STRUCTS EQU 40 ; see Sprites
--- a/constants/hardware_constants.asm
+++ b/constants/hardware_constants.asm
@@ -56,7 +56,7 @@
 OBP_NUM      EQU 1 << OAM_OBP_NUM   ; $10
 X_FLIP       EQU 1 << OAM_X_FLIP    ; $20
 Y_FLIP       EQU 1 << OAM_Y_FLIP    ; $40
-BEHIND_BG    EQU 1 << OAM_PRIORITY  ; $80
+PRIORITY     EQU 1 << OAM_PRIORITY  ; $80
 
 ; Other useful constants
 LCDC_DEFAULT EQU %11100011
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -5,262 +5,285 @@
 ; - ItemAttributes (see data/items/attributes.asm)
 ; - ItemEffects (see engine/item_effects.asm)
 	const_def
-	const NO_ITEM      ; $00
-	const MASTER_BALL  ; $01
-	const ULTRA_BALL   ; $02
-	const BRIGHTPOWDER ; $03
-	const GREAT_BALL   ; $04
-	const POKE_BALL    ; $05
-	const TOWN_MAP     ; $06
-	const BICYCLE      ; $07
-	const MOON_STONE   ; $08
-	const ANTIDOTE     ; $09
-	const BURN_HEAL    ; $0A
-	const ICE_HEAL     ; $0B
-	const AWAKENING    ; $0C
-	const PARLYZ_HEAL  ; $0D
-	const FULL_RESTORE ; $0E
-	const MAX_POTION   ; $0F
-	const HYPER_POTION ; $10
-	const SUPER_POTION ; $11
-	const POTION       ; $12
-	const ESCAPE_ROPE  ; $13
-	const REPEL        ; $14
-	const MAX_ELIXER   ; $15
-	const FIRE_STONE   ; $16
-	const THUNDERSTONE ; $17
-	const WATER_STONE  ; $18
-	const ITEM_19      ; $19
-	const HP_UP        ; $1A
-	const PROTEIN      ; $1B
-	const IRON         ; $1C
-	const CARBOS       ; $1D
-	const LUCKY_PUNCH  ; $1E
-	const CALCIUM      ; $1F
-	const RARE_CANDY   ; $20
-	const X_ACCURACY   ; $21
-	const LEAF_STONE   ; $22
-	const METAL_POWDER ; $23
-	const NUGGET       ; $24
-	const POKE_DOLL    ; $25
-	const FULL_HEAL    ; $26
-	const REVIVE       ; $27
-	const MAX_REVIVE   ; $28
-	const GUARD_SPEC   ; $29
-	const SUPER_REPEL  ; $2A
-	const MAX_REPEL    ; $2B
-	const DIRE_HIT     ; $2C
-	const ITEM_2D      ; $2D
-	const FRESH_WATER  ; $2E
-	const SODA_POP     ; $2F
-	const LEMONADE     ; $30
-	const X_ATTACK     ; $31
-	const ITEM_32      ; $32
-	const X_DEFEND     ; $33
-	const X_SPEED      ; $34
-	const X_SPECIAL    ; $35
-	const COIN_CASE    ; $36
-	const ITEMFINDER   ; $37
-	const POKE_FLUTE   ; $38
-	const EXP_SHARE    ; $39
-	const OLD_ROD      ; $3A
-	const GOOD_ROD     ; $3B
-	const SILVER_LEAF  ; $3C
-	const SUPER_ROD    ; $3D
-	const PP_UP        ; $3E
-	const ETHER        ; $3F
-	const MAX_ETHER    ; $40
-	const ELIXER       ; $41
-	const RED_SCALE    ; $42
-	const SECRETPOTION ; $43
-	const S_S_TICKET   ; $44
-	const MYSTERY_EGG  ; $45
-	const CLEAR_BELL   ; $46
-	const SILVER_WING  ; $47
-	const MOOMOO_MILK  ; $48
-	const QUICK_CLAW   ; $49
-	const PSNCUREBERRY ; $4A
-	const GOLD_LEAF    ; $4B
-	const SOFT_SAND    ; $4C
-	const SHARP_BEAK   ; $4D
-	const PRZCUREBERRY ; $4E
-	const BURNT_BERRY  ; $4F
-	const ICE_BERRY    ; $50
-	const POISON_BARB  ; $51
-	const KINGS_ROCK   ; $52
-	const BITTER_BERRY ; $53
-	const MINT_BERRY   ; $54
-	const RED_APRICORN ; $55
-	const TINYMUSHROOM ; $56
-	const BIG_MUSHROOM ; $57
-	const SILVERPOWDER ; $58
-	const BLU_APRICORN ; $59
-	const ITEM_5A      ; $5A
-	const AMULET_COIN  ; $5B
-	const YLW_APRICORN ; $5C
-	const GRN_APRICORN ; $5D
-	const CLEANSE_TAG  ; $5E
-	const MYSTIC_WATER ; $5F
-	const TWISTEDSPOON ; $60
-	const WHT_APRICORN ; $61
-	const BLACKBELT    ; $62
-	const BLK_APRICORN ; $63
-	const ITEM_64      ; $64
-	const PNK_APRICORN ; $65
-	const BLACKGLASSES ; $66
-	const SLOWPOKETAIL ; $67
-	const PINK_BOW     ; $68
-	const STICK        ; $69
-	const SMOKE_BALL   ; $6A
-	const NEVERMELTICE ; $6B
-	const MAGNET       ; $6C
-	const MIRACLEBERRY ; $6D
-	const PEARL        ; $6E
-	const BIG_PEARL    ; $6F
-	const EVERSTONE    ; $70
-	const SPELL_TAG    ; $71
-	const RAGECANDYBAR ; $72
-	const GS_BALL      ; $73
-	const BLUE_CARD    ; $74
-	const MIRACLE_SEED ; $75
-	const THICK_CLUB   ; $76
-	const FOCUS_BAND   ; $77
-	const ITEM_78      ; $78
-	const ENERGYPOWDER ; $79
-	const ENERGY_ROOT  ; $7A
-	const HEAL_POWDER  ; $7B
-	const REVIVAL_HERB ; $7C
-	const HARD_STONE   ; $7D
-	const LUCKY_EGG    ; $7E
-	const CARD_KEY     ; $7F
-	const MACHINE_PART ; $80
-	const EGG_TICKET   ; $81
-	const LOST_ITEM    ; $82
-	const STARDUST     ; $83
-	const STAR_PIECE   ; $84
-	const BASEMENT_KEY ; $85
-	const PASS         ; $86
-	const ITEM_87      ; $87
-	const ITEM_88      ; $88
-	const ITEM_89      ; $89
-	const CHARCOAL     ; $8A
-	const BERRY_JUICE  ; $8B
-	const SCOPE_LENS   ; $8C
-	const ITEM_8D      ; $8D
-	const ITEM_8E      ; $8E
-	const METAL_COAT   ; $8F
-	const DRAGON_FANG  ; $90
-	const ITEM_91      ; $91
-	const LEFTOVERS    ; $92
-	const ITEM_93      ; $93
-	const ITEM_94      ; $94
-	const ITEM_95      ; $95
-	const MYSTERYBERRY ; $96
-	const DRAGON_SCALE ; $97
-	const BERSERK_GENE ; $98
-	const ITEM_99      ; $99
-	const ITEM_9A      ; $9A
-	const ITEM_9B      ; $9B
-	const SACRED_ASH   ; $9C
-	const HEAVY_BALL   ; $9D
-	const FLOWER_MAIL  ; $9E
-	const LEVEL_BALL   ; $9F
-	const LURE_BALL    ; $A0
-	const FAST_BALL    ; $A1
-	const ITEM_A2      ; $A2
-	const LIGHT_BALL   ; $A3
-	const FRIEND_BALL  ; $A4
-	const MOON_BALL    ; $A5
-	const LOVE_BALL    ; $A6
-	const NORMAL_BOX   ; $A7
-	const GORGEOUS_BOX ; $A8
-	const SUN_STONE    ; $A9
-	const POLKADOT_BOW ; $AA
-	const ITEM_AB      ; $AB
-	const UP_GRADE     ; $AC
-	const BERRY        ; $AD
-	const GOLD_BERRY   ; $AE
-	const SQUIRTBOTTLE ; $AF
-	const ITEM_B0      ; $B0
-	const PARK_BALL    ; $B1
-	const RAINBOW_WING ; $B2
-	const ITEM_B3      ; $B3
-	const BRICK_PIECE  ; $B4
-	const SURF_MAIL    ; $B5
-	const LITEBLUEMAIL ; $B6
-	const PORTRAITMAIL ; $B7
-	const LOVELY_MAIL  ; $B8
-	const EON_MAIL     ; $B9
-	const MORPH_MAIL   ; $BA
-	const BLUESKY_MAIL ; $BB
-	const MUSIC_MAIL   ; $BC
-	const MIRAGE_MAIL  ; $BD
-	const ITEM_BE      ; $BE
+	const NO_ITEM      ; 00
+	const MASTER_BALL  ; 01
+	const ULTRA_BALL   ; 02
+	const BRIGHTPOWDER ; 03
+	const GREAT_BALL   ; 04
+	const POKE_BALL    ; 05
+	const TOWN_MAP     ; 06
+	const BICYCLE      ; 07
+	const MOON_STONE   ; 08
+	const ANTIDOTE     ; 09
+	const BURN_HEAL    ; 0a
+	const ICE_HEAL     ; 0b
+	const AWAKENING    ; 0c
+	const PARLYZ_HEAL  ; 0d
+	const FULL_RESTORE ; 0e
+	const MAX_POTION   ; 0f
+	const HYPER_POTION ; 10
+	const SUPER_POTION ; 11
+	const POTION       ; 12
+	const ESCAPE_ROPE  ; 13
+	const REPEL        ; 14
+	const MAX_ELIXER   ; 15
+	const FIRE_STONE   ; 16
+	const THUNDERSTONE ; 17
+	const WATER_STONE  ; 18
+	const ITEM_19      ; 19
+	const HP_UP        ; 1a
+	const PROTEIN      ; 1b
+	const IRON         ; 1c
+	const CARBOS       ; 1d
+	const LUCKY_PUNCH  ; 1e
+	const CALCIUM      ; 1f
+	const RARE_CANDY   ; 20
+	const X_ACCURACY   ; 21
+	const LEAF_STONE   ; 22
+	const METAL_POWDER ; 23
+	const NUGGET       ; 24
+	const POKE_DOLL    ; 25
+	const FULL_HEAL    ; 26
+	const REVIVE       ; 27
+	const MAX_REVIVE   ; 28
+	const GUARD_SPEC   ; 29
+	const SUPER_REPEL  ; 2a
+	const MAX_REPEL    ; 2b
+	const DIRE_HIT     ; 2c
+	const ITEM_2D      ; 2d
+	const FRESH_WATER  ; 2e
+	const SODA_POP     ; 2f
+	const LEMONADE     ; 30
+	const X_ATTACK     ; 31
+	const ITEM_32      ; 32
+	const X_DEFEND     ; 33
+	const X_SPEED      ; 34
+	const X_SPECIAL    ; 35
+	const COIN_CASE    ; 36
+	const ITEMFINDER   ; 37
+	const POKE_FLUTE   ; 38
+	const EXP_SHARE    ; 39
+	const OLD_ROD      ; 3a
+	const GOOD_ROD     ; 3b
+	const SILVER_LEAF  ; 3c
+	const SUPER_ROD    ; 3d
+	const PP_UP        ; 3e
+	const ETHER        ; 3f
+	const MAX_ETHER    ; 40
+	const ELIXER       ; 41
+	const RED_SCALE    ; 42
+	const SECRETPOTION ; 43
+	const S_S_TICKET   ; 44
+	const MYSTERY_EGG  ; 45
+	const CLEAR_BELL   ; 46
+	const SILVER_WING  ; 47
+	const MOOMOO_MILK  ; 48
+	const QUICK_CLAW   ; 49
+	const PSNCUREBERRY ; 4a
+	const GOLD_LEAF    ; 4b
+	const SOFT_SAND    ; 4c
+	const SHARP_BEAK   ; 4d
+	const PRZCUREBERRY ; 4e
+	const BURNT_BERRY  ; 4f
+	const ICE_BERRY    ; 50
+	const POISON_BARB  ; 51
+	const KINGS_ROCK   ; 52
+	const BITTER_BERRY ; 53
+	const MINT_BERRY   ; 54
+	const RED_APRICORN ; 55
+	const TINYMUSHROOM ; 56
+	const BIG_MUSHROOM ; 57
+	const SILVERPOWDER ; 58
+	const BLU_APRICORN ; 59
+	const ITEM_5A      ; 5a
+	const AMULET_COIN  ; 5b
+	const YLW_APRICORN ; 5c
+	const GRN_APRICORN ; 5d
+	const CLEANSE_TAG  ; 5e
+	const MYSTIC_WATER ; 5f
+	const TWISTEDSPOON ; 60
+	const WHT_APRICORN ; 61
+	const BLACKBELT    ; 62
+	const BLK_APRICORN ; 63
+	const ITEM_64      ; 64
+	const PNK_APRICORN ; 65
+	const BLACKGLASSES ; 66
+	const SLOWPOKETAIL ; 67
+	const PINK_BOW     ; 68
+	const STICK        ; 69
+	const SMOKE_BALL   ; 6a
+	const NEVERMELTICE ; 6b
+	const MAGNET       ; 6c
+	const MIRACLEBERRY ; 6d
+	const PEARL        ; 6e
+	const BIG_PEARL    ; 6f
+	const EVERSTONE    ; 70
+	const SPELL_TAG    ; 71
+	const RAGECANDYBAR ; 72
+	const GS_BALL      ; 73
+	const BLUE_CARD    ; 74
+	const MIRACLE_SEED ; 75
+	const THICK_CLUB   ; 76
+	const FOCUS_BAND   ; 77
+	const ITEM_78      ; 78
+	const ENERGYPOWDER ; 79
+	const ENERGY_ROOT  ; 7a
+	const HEAL_POWDER  ; 7b
+	const REVIVAL_HERB ; 7c
+	const HARD_STONE   ; 7d
+	const LUCKY_EGG    ; 7e
+	const CARD_KEY     ; 7f
+	const MACHINE_PART ; 80
+	const EGG_TICKET   ; 81
+	const LOST_ITEM    ; 82
+	const STARDUST     ; 83
+	const STAR_PIECE   ; 84
+	const BASEMENT_KEY ; 85
+	const PASS         ; 86
+	const ITEM_87      ; 87
+	const ITEM_88      ; 88
+	const ITEM_89      ; 89
+	const CHARCOAL     ; 8a
+	const BERRY_JUICE  ; 8b
+	const SCOPE_LENS   ; 8c
+	const ITEM_8D      ; 8d
+	const ITEM_8E      ; 8e
+	const METAL_COAT   ; 8f
+	const DRAGON_FANG  ; 90
+	const ITEM_91      ; 91
+	const LEFTOVERS    ; 92
+	const ITEM_93      ; 93
+	const ITEM_94      ; 94
+	const ITEM_95      ; 95
+	const MYSTERYBERRY ; 96
+	const DRAGON_SCALE ; 97
+	const BERSERK_GENE ; 98
+	const ITEM_99      ; 99
+	const ITEM_9A      ; 9a
+	const ITEM_9B      ; 9b
+	const SACRED_ASH   ; 9c
+	const HEAVY_BALL   ; 9d
+	const FLOWER_MAIL  ; 9e
+	const LEVEL_BALL   ; 9f
+	const LURE_BALL    ; a0
+	const FAST_BALL    ; a1
+	const ITEM_A2      ; a2
+	const LIGHT_BALL   ; a3
+	const FRIEND_BALL  ; a4
+	const MOON_BALL    ; a5
+	const LOVE_BALL    ; a6
+	const NORMAL_BOX   ; a7
+	const GORGEOUS_BOX ; a8
+	const SUN_STONE    ; a9
+	const POLKADOT_BOW ; aa
+	const ITEM_AB      ; ab
+	const UP_GRADE     ; ac
+	const BERRY        ; ad
+	const GOLD_BERRY   ; ae
+	const SQUIRTBOTTLE ; af
+	const ITEM_B0      ; b0
+	const PARK_BALL    ; b1
+	const RAINBOW_WING ; b2
+	const ITEM_B3      ; b3
+	const BRICK_PIECE  ; b4
+	const SURF_MAIL    ; b5
+	const LITEBLUEMAIL ; b6
+	const PORTRAITMAIL ; b7
+	const LOVELY_MAIL  ; b8
+	const EON_MAIL     ; b9
+	const MORPH_MAIL   ; ba
+	const BLUESKY_MAIL ; bb
+	const MUSIC_MAIL   ; bc
+	const MIRAGE_MAIL  ; bd
+	const ITEM_BE      ; be
 
+add_tm: MACRO
+if !DEF(TM01)
+TM01 = const_value
+	enum_start 1
+endc
+	define _\@_1, "TM_\1"
+	const _\@_1
+	enum \1_TMNUM
+ENDM
+
+add_hm: MACRO
+if !DEF(HM01)
+HM01 = const_value
+endc
+	define _\@_1, "HM_\1"
+	const _\@_1
+	enum \1_TMNUM
+ENDM
+
+add_mt: MACRO
+	enum \1_TMNUM
+ENDM
+
 ; see data/moves/tmhm_moves.asm for moves
-	add_tm DYNAMICPUNCH ; $BF
-	add_tm HEADBUTT     ; $C0
-	add_tm CURSE        ; $C1
-	add_tm ROLLOUT      ; $C2
-	const ITEM_C3       ; $C3
-	add_tm ROAR         ; $C4
-	add_tm TOXIC        ; $C5
-	add_tm ZAP_CANNON   ; $C6
-	add_tm ROCK_SMASH   ; $C7
-	add_tm PSYCH_UP     ; $C8
-	add_tm HIDDEN_POWER ; $C9
-	add_tm SUNNY_DAY    ; $CA
-	add_tm SWEET_SCENT  ; $CB
-	add_tm SNORE        ; $CC
-	add_tm BLIZZARD     ; $CD
-	add_tm HYPER_BEAM   ; $CE
-	add_tm ICY_WIND     ; $CF
-	add_tm PROTECT      ; $D0
-	add_tm RAIN_DANCE   ; $D1
-	add_tm GIGA_DRAIN   ; $D2
-	add_tm ENDURE       ; $D3
-	add_tm FRUSTRATION  ; $D4
-	add_tm SOLARBEAM    ; $D5
-	add_tm IRON_TAIL    ; $D6
-	add_tm DRAGONBREATH ; $D7
-	add_tm THUNDER      ; $D8
-	add_tm EARTHQUAKE   ; $D9
-	add_tm RETURN       ; $DA
-	add_tm DIG          ; $DB
-	const ITEM_DC       ; $DC
-	add_tm PSYCHIC_M    ; $DD
-	add_tm SHADOW_BALL  ; $DE
-	add_tm MUD_SLAP     ; $DF
-	add_tm DOUBLE_TEAM  ; $E0
-	add_tm ICE_PUNCH    ; $E1
-	add_tm SWAGGER      ; $E2
-	add_tm SLEEP_TALK   ; $E3
-	add_tm SLUDGE_BOMB  ; $E4
-	add_tm SANDSTORM    ; $E5
-	add_tm FIRE_BLAST   ; $E6
-	add_tm SWIFT        ; $E7
-	add_tm DEFENSE_CURL ; $E8
-	add_tm THUNDERPUNCH ; $E9
-	add_tm DREAM_EATER  ; $EA
-	add_tm DETECT       ; $EB
-	add_tm REST         ; $EC
-	add_tm ATTRACT      ; $ED
-	add_tm THIEF        ; $EE
-	add_tm STEEL_WING   ; $EF
-	add_tm FIRE_PUNCH   ; $F0
-	add_tm FURY_CUTTER  ; $F1
-	add_tm NIGHTMARE    ; $F2
+	add_tm DYNAMICPUNCH ; bf
+	add_tm HEADBUTT     ; c0
+	add_tm CURSE        ; c1
+	add_tm ROLLOUT      ; c2
+	const ITEM_C3       ; c3
+	add_tm ROAR         ; c4
+	add_tm TOXIC        ; c5
+	add_tm ZAP_CANNON   ; c6
+	add_tm ROCK_SMASH   ; c7
+	add_tm PSYCH_UP     ; c8
+	add_tm HIDDEN_POWER ; c9
+	add_tm SUNNY_DAY    ; ca
+	add_tm SWEET_SCENT  ; cb
+	add_tm SNORE        ; cc
+	add_tm BLIZZARD     ; cd
+	add_tm HYPER_BEAM   ; ce
+	add_tm ICY_WIND     ; cf
+	add_tm PROTECT      ; d0
+	add_tm RAIN_DANCE   ; d1
+	add_tm GIGA_DRAIN   ; d2
+	add_tm ENDURE       ; d3
+	add_tm FRUSTRATION  ; d4
+	add_tm SOLARBEAM    ; d5
+	add_tm IRON_TAIL    ; d6
+	add_tm DRAGONBREATH ; d7
+	add_tm THUNDER      ; d8
+	add_tm EARTHQUAKE   ; d9
+	add_tm RETURN       ; da
+	add_tm DIG          ; db
+	const ITEM_DC       ; dc
+	add_tm PSYCHIC_M    ; dd
+	add_tm SHADOW_BALL  ; de
+	add_tm MUD_SLAP     ; df
+	add_tm DOUBLE_TEAM  ; e0
+	add_tm ICE_PUNCH    ; e1
+	add_tm SWAGGER      ; e2
+	add_tm SLEEP_TALK   ; e3
+	add_tm SLUDGE_BOMB  ; e4
+	add_tm SANDSTORM    ; e5
+	add_tm FIRE_BLAST   ; e6
+	add_tm SWIFT        ; e7
+	add_tm DEFENSE_CURL ; e8
+	add_tm THUNDERPUNCH ; e9
+	add_tm DREAM_EATER  ; ea
+	add_tm DETECT       ; eb
+	add_tm REST         ; ec
+	add_tm ATTRACT      ; ed
+	add_tm THIEF        ; ee
+	add_tm STEEL_WING   ; ef
+	add_tm FIRE_PUNCH   ; f0
+	add_tm FURY_CUTTER  ; f1
+	add_tm NIGHTMARE    ; f2
 NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
 
-	add_hm CUT          ; $F3
-	add_hm FLY          ; $F4
-	add_hm SURF         ; $F5
-	add_hm STRENGTH     ; $F6
-	add_hm FLASH        ; $F7
-	add_hm WHIRLPOOL    ; $F8
-	add_hm WATERFALL    ; $F9
+	add_hm CUT          ; f3
+	add_hm FLY          ; f4
+	add_hm SURF         ; f5
+	add_hm STRENGTH     ; f6
+	add_hm FLASH        ; f7
+	add_hm WHIRLPOOL    ; f8
+	add_hm WATERFALL    ; f9
 NUM_HMS = const_value - HM01
-	const ITEM_FA       ; $FA
+	const ITEM_FA       ; fa
 
 	add_mt FLAMETHROWER
 	add_mt THUNDERBOLT
@@ -267,9 +290,10 @@
 	add_mt ICE_BEAM
 NUM_TM_HM_TUTOR = __enum__ +- 1
 
-ITEM_FROM_MEM EQU $FF
+USE_SCRIPT_VAR EQU $00
+ITEM_FROM_MEM  EQU $ff
 
 ; leftovers from red
 SAFARI_BALL    EQU $08 ; MOON_STONE
-MOON_STONE_RED EQU $0A ; BURN_HEAL
+MOON_STONE_RED EQU $0a ; BURN_HEAL
 FULL_HEAL_RED  EQU $34 ; X_SPEED
--- a/constants/item_data_constants.asm
+++ b/constants/item_data_constants.asm
@@ -9,21 +9,15 @@
 	const ITEMATTR_HELP
 ITEMATTR_STRUCT_LENGTH EQU const_value
 
+; item types
+const_value set 1
+	const ITEM     ; 1
+	const KEY_ITEM ; 2
+	const BALL     ; 3
+	const TM_HM    ; 4
 
-; pack pockets
-ITEM     EQU 1
-KEY_ITEM EQU 2
-BALL     EQU 3
-TM_HM    EQU 4
-
-; pack pocket sizes
-MAX_ITEMS     EQU 20
-MAX_KEY_ITEMS EQU 25
-MAX_BALLS     EQU 12
-MAX_PC_ITEMS  EQU 50
-
-
 ; item menu types
+; UseItem.dw indexes (see engine/pack.asm)
 ITEMMENU_NOUSE   EQU 0
 ITEMMENU_CURRENT EQU 4
 ITEMMENU_PARTY   EQU 5
@@ -34,7 +28,22 @@
 CANT_TOSS   EQU 1 << 7
 
 
+; pack pockets
+	const_def
+	const ITEM_POCKET     ; 0
+	const BALL_POCKET     ; 1
+	const KEY_ITEM_POCKET ; 2
+	const TM_HM_POCKET    ; 3
+NUM_POCKETS EQU const_value +- 1
+
+MAX_ITEMS     EQU 20
+MAX_BALLS     EQU 12
+MAX_KEY_ITEMS EQU 25
+MAX_PC_ITEMS  EQU 50
+
+
 ; mail
+MAIL_LINE_LENGTH   EQU $10
 MAIL_MSG_LENGTH    EQU $20
 MAILBOX_CAPACITY   EQU 10
 MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct
@@ -163,8 +172,7 @@
 	const MART_UNDERGROUND
 
 
-; PartyMenuActionText values
-; GetPartyMenuTilemapPointers arguments (see engine/party_menu.asm)
+; PartyMenuQualityPointers indexes (see data/party_menu_qualities.asm)
 	const_def
 	const PARTYMENUACTION_CHOOSE_POKEMON
 	const PARTYMENUACTION_HEALING_ITEM
--- a/constants/landmark_constants.asm
+++ b/constants/landmark_constants.asm
@@ -100,3 +100,14 @@
 	const TOHJO_FALLS       ; 5d
 	const ROUTE_28          ; 5e
 	const FAST_SHIP         ; 5f
+
+; used in CaughtData
+GIFT_LOCATION  EQU $7e
+EVENT_LOCATION EQU $7f
+
+
+; Regions
+	const_def
+	const JOHTO_REGION ; 0
+	const KANTO_REGION ; 1
+NUM_REGIONS EQU const_value
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -3,7 +3,7 @@
 	enum_start 1
 ENDM
 
-mapgroup: MACRO
+mapconst: MACRO
 ;\1: map id
 ;\2: height: in blocks
 ;\3: width: in blocks
@@ -15,474 +15,475 @@
 
 ; map group ids
 ; `newgroup` indexes are for:
-; - MapGroupPointers (see maps/map_headers.asm)
+; - MapGroupPointers (see data/maps/definitions.asm)
 ; - MapGroupRoofs (see data/maps/roofs.asm)
 ; - OutdoorSprites (see data/maps/outdoor_sprites.asm)
-; `mapgroup` indexes are for the sub-tables of MapGroupPointers (see maps/map_headers.asm)
+; - RoofPals (see gfx/tilesets/roofs.pal)
+; `mapconst` indexes are for the sub-tables of MapGroupPointers (see data/maps/definitions.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
+	mapconst OLIVINE_POKECENTER_1F,                        4,  5 ;  1
+	mapconst OLIVINE_GYM,                                  8,  5 ;  2
+	mapconst OLIVINE_TIMS_HOUSE,                           4,  4 ;  3
+	mapconst OLIVINE_HOUSE_BETA,                           4,  4 ;  4
+	mapconst OLIVINE_PUNISHMENT_SPEECH_HOUSE,              4,  4 ;  5
+	mapconst OLIVINE_GOOD_ROD_HOUSE,                       4,  4 ;  6
+	mapconst OLIVINE_CAFE,                                 4,  4 ;  7
+	mapconst OLIVINE_MART,                                 4,  6 ;  8
+	mapconst ROUTE_38_ECRUTEAK_GATE,                       4,  5 ;  9
+	mapconst ROUTE_39_BARN,                                4,  4 ; 10
+	mapconst ROUTE_39_FARMHOUSE,                           4,  4 ; 11
+	mapconst ROUTE_38,                                     9, 20 ; 12
+	mapconst ROUTE_39,                                    18, 10 ; 13
+	mapconst 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
+	mapconst MAHOGANY_RED_GYARADOS_SPEECH_HOUSE,           4,  4 ;  1
+	mapconst MAHOGANY_GYM,                                 9,  5 ;  2
+	mapconst MAHOGANY_POKECENTER_1F,                       4,  5 ;  3
+	mapconst ROUTE_42_ECRUTEAK_GATE,                       4,  5 ;  4
+	mapconst ROUTE_42,                                     9, 30 ;  5
+	mapconst ROUTE_44,                                     9, 30 ;  6
+	mapconst 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 GOLDENROD_UNDERGROUND,                       18, 15 ; 53
-	mapgroup GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, 18, 15 ; 54
-	mapgroup GOLDENROD_DEPT_STORE_B1F,                     9, 10 ; 55
-	mapgroup GOLDENROD_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_PATH,                            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
+	mapconst SPROUT_TOWER_1F,                              8, 10 ;  1
+	mapconst SPROUT_TOWER_2F,                              8, 10 ;  2
+	mapconst SPROUT_TOWER_3F,                              8, 10 ;  3
+	mapconst TIN_TOWER_1F,                                 9, 10 ;  4
+	mapconst TIN_TOWER_2F,                                 9, 10 ;  5
+	mapconst TIN_TOWER_3F,                                 9, 10 ;  6
+	mapconst TIN_TOWER_4F,                                 9, 10 ;  7
+	mapconst TIN_TOWER_5F,                                 9, 10 ;  8
+	mapconst TIN_TOWER_6F,                                 9, 10 ;  9
+	mapconst TIN_TOWER_7F,                                 9, 10 ; 10
+	mapconst TIN_TOWER_8F,                                 9, 10 ; 11
+	mapconst TIN_TOWER_9F,                                 9, 10 ; 12
+	mapconst BURNED_TOWER_1F,                              9, 10 ; 13
+	mapconst BURNED_TOWER_B1F,                             9, 10 ; 14
+	mapconst NATIONAL_PARK,                               27, 20 ; 15
+	mapconst NATIONAL_PARK_BUG_CONTEST,                   27, 20 ; 16
+	mapconst RADIO_TOWER_1F,                               4,  9 ; 17
+	mapconst RADIO_TOWER_2F,                               4,  9 ; 18
+	mapconst RADIO_TOWER_3F,                               4,  9 ; 19
+	mapconst RADIO_TOWER_4F,                               4,  9 ; 20
+	mapconst RADIO_TOWER_5F,                               4,  9 ; 21
+	mapconst RUINS_OF_ALPH_OUTSIDE,                       18, 10 ; 22
+	mapconst RUINS_OF_ALPH_HO_OH_CHAMBER,                  5,  4 ; 23
+	mapconst RUINS_OF_ALPH_KABUTO_CHAMBER,                 5,  4 ; 24
+	mapconst RUINS_OF_ALPH_OMANYTE_CHAMBER,                5,  4 ; 25
+	mapconst RUINS_OF_ALPH_AERODACTYL_CHAMBER,             5,  4 ; 26
+	mapconst RUINS_OF_ALPH_INNER_CHAMBER,                 14, 10 ; 27
+	mapconst RUINS_OF_ALPH_RESEARCH_CENTER,                4,  4 ; 28
+	mapconst RUINS_OF_ALPH_HO_OH_ITEM_ROOM,                5,  4 ; 29
+	mapconst RUINS_OF_ALPH_KABUTO_ITEM_ROOM,               5,  4 ; 30
+	mapconst RUINS_OF_ALPH_OMANYTE_ITEM_ROOM,              5,  4 ; 31
+	mapconst RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM,           5,  4 ; 32
+	mapconst RUINS_OF_ALPH_HO_OH_WORD_ROOM,               12, 10 ; 33
+	mapconst RUINS_OF_ALPH_KABUTO_WORD_ROOM,               7, 10 ; 34
+	mapconst RUINS_OF_ALPH_OMANYTE_WORD_ROOM,              8, 10 ; 35
+	mapconst RUINS_OF_ALPH_AERODACTYL_WORD_ROOM,           7, 10 ; 36
+	mapconst UNION_CAVE_1F,                               18, 10 ; 37
+	mapconst UNION_CAVE_B1F,                              18, 10 ; 38
+	mapconst UNION_CAVE_B2F,                              18, 10 ; 39
+	mapconst SLOWPOKE_WELL_B1F,                            9, 10 ; 40
+	mapconst SLOWPOKE_WELL_B2F,                            9, 10 ; 41
+	mapconst OLIVINE_LIGHTHOUSE_1F,                        9, 10 ; 42
+	mapconst OLIVINE_LIGHTHOUSE_2F,                        9, 10 ; 43
+	mapconst OLIVINE_LIGHTHOUSE_3F,                        9, 10 ; 44
+	mapconst OLIVINE_LIGHTHOUSE_4F,                        9, 10 ; 45
+	mapconst OLIVINE_LIGHTHOUSE_5F,                        9, 10 ; 46
+	mapconst OLIVINE_LIGHTHOUSE_6F,                        9, 10 ; 47
+	mapconst MAHOGANY_MART_1F,                             4,  4 ; 48
+	mapconst TEAM_ROCKET_BASE_B1F,                         9, 15 ; 49
+	mapconst TEAM_ROCKET_BASE_B2F,                         9, 15 ; 50
+	mapconst TEAM_ROCKET_BASE_B3F,                         9, 15 ; 51
+	mapconst ILEX_FOREST,                                 27, 15 ; 52
+	mapconst GOLDENROD_UNDERGROUND,                       18, 15 ; 53
+	mapconst GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, 18, 15 ; 54
+	mapconst GOLDENROD_DEPT_STORE_B1F,                     9, 10 ; 55
+	mapconst GOLDENROD_UNDERGROUND_WAREHOUSE,              9, 10 ; 56
+	mapconst MOUNT_MORTAR_1F_OUTSIDE,                     18, 20 ; 57
+	mapconst MOUNT_MORTAR_1F_INSIDE,                      27, 20 ; 58
+	mapconst MOUNT_MORTAR_2F_INSIDE,                      18, 20 ; 59
+	mapconst MOUNT_MORTAR_B1F,                            18, 20 ; 60
+	mapconst ICE_PATH_1F,                                 18, 20 ; 61
+	mapconst ICE_PATH_B1F,                                18, 10 ; 62
+	mapconst ICE_PATH_B2F_MAHOGANY_SIDE,                   9, 10 ; 63
+	mapconst ICE_PATH_B2F_BLACKTHORN_SIDE,                 9,  5 ; 64
+	mapconst ICE_PATH_B3F,                                 9, 10 ; 65
+	mapconst WHIRL_ISLAND_NW,                              9,  5 ; 66
+	mapconst WHIRL_ISLAND_NE,                              9, 10 ; 67
+	mapconst WHIRL_ISLAND_SW,                              9, 10 ; 68
+	mapconst WHIRL_ISLAND_CAVE,                            9,  5 ; 69
+	mapconst WHIRL_ISLAND_SE,                              9,  5 ; 70
+	mapconst WHIRL_ISLAND_B1F,                            18, 20 ; 71
+	mapconst WHIRL_ISLAND_B2F,                            18, 10 ; 72
+	mapconst WHIRL_ISLAND_LUGIA_CHAMBER,                   9, 10 ; 73
+	mapconst SILVER_CAVE_ROOM_1,                          18, 10 ; 74
+	mapconst SILVER_CAVE_ROOM_2,                          18, 15 ; 75
+	mapconst SILVER_CAVE_ROOM_3,                          18, 10 ; 76
+	mapconst SILVER_CAVE_ITEM_ROOMS,                       9, 10 ; 77
+	mapconst DARK_CAVE_VIOLET_ENTRANCE,                   18, 20 ; 78
+	mapconst DARK_CAVE_BLACKTHORN_ENTRANCE,               18, 15 ; 79
+	mapconst DRAGONS_DEN_1F,                               9,  5 ; 80
+	mapconst DRAGONS_DEN_B1F,                             18, 20 ; 81
+	mapconst DRAGON_SHRINE,                                5,  5 ; 82
+	mapconst TOHJO_FALLS,                                  9, 15 ; 83
+	mapconst DIGLETTS_CAVE,                               18, 10 ; 84
+	mapconst MOUNT_MOON,                                   9, 15 ; 85
+	mapconst UNDERGROUND_PATH,                            14,  3 ; 86
+	mapconst ROCK_TUNNEL_1F,                              18, 15 ; 87
+	mapconst ROCK_TUNNEL_B1F,                             18, 15 ; 88
+	mapconst SAFARI_ZONE_FUCHSIA_GATE_BETA,                4,  5 ; 89
+	mapconst SAFARI_ZONE_BETA,                            18, 10 ; 90
+	mapconst 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
+	mapconst ECRUTEAK_HOUSE,                               9, 10 ;  1
+	mapconst WISE_TRIOS_ROOM,                              4,  4 ;  2
+	mapconst ECRUTEAK_POKECENTER_1F,                       4,  5 ;  3
+	mapconst ECRUTEAK_LUGIA_SPEECH_HOUSE,                  4,  4 ;  4
+	mapconst DANCE_THEATRE,                                7,  6 ;  5
+	mapconst ECRUTEAK_MART,                                4,  6 ;  6
+	mapconst ECRUTEAK_GYM,                                 9,  5 ;  7
+	mapconst ECRUTEAK_ITEMFINDER_HOUSE,                    4,  4 ;  8
+	mapconst 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
+	mapconst BLACKTHORN_GYM_1F,                            9,  5 ;  1
+	mapconst BLACKTHORN_GYM_2F,                            9,  5 ;  2
+	mapconst BLACKTHORN_DRAGON_SPEECH_HOUSE,               4,  4 ;  3
+	mapconst BLACKTHORN_EMYS_HOUSE,                        4,  4 ;  4
+	mapconst BLACKTHORN_MART,                              4,  6 ;  5
+	mapconst BLACKTHORN_POKECENTER_1F,                     4,  5 ;  6
+	mapconst MOVE_DELETERS_HOUSE,                          4,  4 ;  7
+	mapconst ROUTE_45,                                    45, 10 ;  8
+	mapconst ROUTE_46,                                    18, 10 ;  9
+	mapconst 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
+	mapconst CINNABAR_POKECENTER_1F,                       4,  5 ;  1
+	mapconst CINNABAR_POKECENTER_2F_BETA,                  4,  8 ;  2
+	mapconst ROUTE_19_FUCHSIA_GATE,                        4,  5 ;  3
+	mapconst SEAFOAM_GYM,                                  4,  5 ;  4
+	mapconst ROUTE_19,                                    18, 10 ;  5
+	mapconst ROUTE_20,                                     9, 30 ;  6
+	mapconst ROUTE_21,                                    18, 10 ;  7
+	mapconst 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
+	mapconst CERULEAN_GYM_BADGE_SPEECH_HOUSE,              4,  4 ;  1
+	mapconst CERULEAN_POLICE_STATION,                      4,  4 ;  2
+	mapconst CERULEAN_TRADE_SPEECH_HOUSE,                  4,  4 ;  3
+	mapconst CERULEAN_POKECENTER_1F,                       4,  5 ;  4
+	mapconst CERULEAN_POKECENTER_2F_BETA,                  4,  8 ;  5
+	mapconst CERULEAN_GYM,                                 8,  5 ;  6
+	mapconst CERULEAN_MART,                                4,  6 ;  7
+	mapconst ROUTE_10_POKECENTER_1F,                       4,  5 ;  8
+	mapconst ROUTE_10_POKECENTER_2F_BETA,                  4,  8 ;  9
+	mapconst POWER_PLANT,                                  9, 10 ; 10
+	mapconst BILLS_HOUSE,                                  4,  4 ; 11
+	mapconst ROUTE_4,                                      9, 20 ; 12
+	mapconst ROUTE_9,                                      9, 30 ; 13
+	mapconst ROUTE_10_NORTH,                               9, 10 ; 14
+	mapconst ROUTE_24,                                     9, 10 ; 15
+	mapconst ROUTE_25,                                     9, 30 ; 16
+	mapconst 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
+	mapconst AZALEA_POKECENTER_1F,                         4,  5 ;  1
+	mapconst CHARCOAL_KILN,                                4,  4 ;  2
+	mapconst AZALEA_MART,                                  4,  6 ;  3
+	mapconst KURTS_HOUSE,                                  4,  8 ;  4
+	mapconst AZALEA_GYM,                                   8,  5 ;  5
+	mapconst ROUTE_33,                                     9, 10 ;  6
+	mapconst 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
+	mapconst LAKE_OF_RAGE_HIDDEN_POWER_HOUSE,              4,  4 ;  1
+	mapconst LAKE_OF_RAGE_MAGIKARP_HOUSE,                  4,  4 ;  2
+	mapconst ROUTE_43_MAHOGANY_GATE,                       4,  5 ;  3
+	mapconst ROUTE_43_GATE,                                4,  5 ;  4
+	mapconst ROUTE_43,                                    27, 10 ;  5
+	mapconst 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_KYLES_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
+	mapconst ROUTE_32,                                    45, 10 ;  1
+	mapconst ROUTE_35,                                    18, 10 ;  2
+	mapconst ROUTE_36,                                     9, 30 ;  3
+	mapconst ROUTE_37,                                     9, 10 ;  4
+	mapconst VIOLET_CITY,                                 18, 20 ;  5
+	mapconst VIOLET_MART,                                  4,  6 ;  6
+	mapconst VIOLET_GYM,                                   8,  5 ;  7
+	mapconst EARLS_POKEMON_ACADEMY,                        8,  4 ;  8
+	mapconst VIOLET_NICKNAME_SPEECH_HOUSE,                 4,  4 ;  9
+	mapconst VIOLET_POKECENTER_1F,                         4,  5 ; 10
+	mapconst VIOLET_KYLES_HOUSE,                           4,  4 ; 11
+	mapconst ROUTE_32_RUINS_OF_ALPH_GATE,                  4,  5 ; 12
+	mapconst ROUTE_32_POKECENTER_1F,                       4,  5 ; 13
+	mapconst ROUTE_35_GOLDENROD_GATE,                      4,  5 ; 14
+	mapconst ROUTE_35_NATIONAL_PARK_GATE,                  4,  4 ; 15
+	mapconst ROUTE_36_RUINS_OF_ALPH_GATE,                  4,  5 ; 16
+	mapconst 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
+	mapconst ROUTE_34,                                    27, 10 ;  1
+	mapconst GOLDENROD_CITY,                              18, 20 ;  2
+	mapconst GOLDENROD_GYM,                                9, 10 ;  3
+	mapconst GOLDENROD_BIKE_SHOP,                          4,  4 ;  4
+	mapconst GOLDENROD_HAPPINESS_RATER,                    4,  4 ;  5
+	mapconst GOLDENROD_BILLS_HOUSE,                        4,  4 ;  6
+	mapconst GOLDENROD_MAGNET_TRAIN_STATION,               9, 10 ;  7
+	mapconst GOLDENROD_FLOWER_SHOP,                        4,  4 ;  8
+	mapconst GOLDENROD_PP_SPEECH_HOUSE,                    4,  4 ;  9
+	mapconst GOLDENROD_NAME_RATER,                         4,  4 ; 10
+	mapconst GOLDENROD_DEPT_STORE_1F,                      4,  8 ; 11
+	mapconst GOLDENROD_DEPT_STORE_2F,                      4,  8 ; 12
+	mapconst GOLDENROD_DEPT_STORE_3F,                      4,  8 ; 13
+	mapconst GOLDENROD_DEPT_STORE_4F,                      4,  8 ; 14
+	mapconst GOLDENROD_DEPT_STORE_5F,                      4,  8 ; 15
+	mapconst GOLDENROD_DEPT_STORE_6F,                      4,  8 ; 16
+	mapconst GOLDENROD_DEPT_STORE_ELEVATOR,                2,  2 ; 17
+	mapconst GOLDENROD_DEPT_STORE_ROOF,                    4,  8 ; 18
+	mapconst GOLDENROD_GAME_CORNER,                        7, 10 ; 19
+	mapconst GOLDENROD_POKECENTER_1F,                      4,  5 ; 20
+	mapconst GOLDENROD_POKECOM_CENTER_2F_MOBILE,          16, 16 ; 21
+	mapconst ILEX_FOREST_AZALEA_GATE,                      4,  5 ; 22
+	mapconst ROUTE_34_ILEX_FOREST_GATE,                    4,  5 ; 23
+	mapconst 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_PATH_ENTRANCE,            4,  4 ; 13
+	mapconst ROUTE_6,                                      9, 10 ;  1
+	mapconst ROUTE_11,                                     9, 20 ;  2
+	mapconst VERMILION_CITY,                              18, 20 ;  3
+	mapconst VERMILION_HOUSE_FISHING_SPEECH_HOUSE,         4,  4 ;  4
+	mapconst VERMILION_POKECENTER_1F,                      4,  5 ;  5
+	mapconst VERMILION_POKECENTER_2F_BETA,                 4,  8 ;  6
+	mapconst POKEMON_FAN_CLUB,                             4,  5 ;  7
+	mapconst VERMILION_MAGNET_TRAIN_SPEECH_HOUSE,          4,  4 ;  8
+	mapconst VERMILION_MART,                               4,  6 ;  9
+	mapconst VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE,   4,  4 ; 10
+	mapconst VERMILION_GYM,                                9,  5 ; 11
+	mapconst ROUTE_6_SAFFRON_GATE,                         4,  5 ; 12
+	mapconst ROUTE_6_UNDERGROUND_PATH_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
+	mapconst ROUTE_1,                                     18, 10 ;  1
+	mapconst PALLET_TOWN,                                  9, 10 ;  2
+	mapconst REDS_HOUSE_1F,                                4,  4 ;  3
+	mapconst REDS_HOUSE_2F,                                4,  4 ;  4
+	mapconst BLUES_HOUSE,                                  4,  4 ;  5
+	mapconst 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
+	mapconst ROUTE_3,                                      9, 30 ;  1
+	mapconst PEWTER_CITY,                                 18, 20 ;  2
+	mapconst PEWTER_NIDORAN_SPEECH_HOUSE,                  4,  4 ;  3
+	mapconst PEWTER_GYM,                                   7,  5 ;  4
+	mapconst PEWTER_MART,                                  4,  6 ;  5
+	mapconst PEWTER_POKECENTER_1F,                         4,  5 ;  6
+	mapconst PEWTER_POKECENTER_2F_BETA,                    4,  8 ;  7
+	mapconst 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
+	mapconst OLIVINE_PORT,                                18, 10 ;  1
+	mapconst VERMILION_PORT,                              18, 10 ;  2
+	mapconst FAST_SHIP_1F,                                 9, 16 ;  3
+	mapconst FAST_SHIP_CABINS_NNW_NNE_NE,                 16,  4 ;  4
+	mapconst FAST_SHIP_CABINS_SW_SSW_NW,                  16,  4 ;  5
+	mapconst FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN,      17,  5 ;  6
+	mapconst FAST_SHIP_B1F,                                8, 16 ;  7
+	mapconst OLIVINE_PORT_PASSAGE,                         9, 10 ;  8
+	mapconst VERMILION_PORT_PASSAGE,                       9, 10 ;  9
+	mapconst MOUNT_MOON_SQUARE,                            9, 15 ; 10
+	mapconst MOUNT_MOON_GIFT_SHOP,                         4,  4 ; 11
+	mapconst 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
+	mapconst ROUTE_23,                                     9, 10 ;  1
+	mapconst INDIGO_PLATEAU_POKECENTER_1F,                 7,  9 ;  2
+	mapconst WILLS_ROOM,                                   9,  5 ;  3
+	mapconst KOGAS_ROOM,                                   9,  5 ;  4
+	mapconst BRUNOS_ROOM,                                  9,  5 ;  5
+	mapconst KARENS_ROOM,                                  9,  5 ;  6
+	mapconst LANCES_ROOM,                                 12,  5 ;  7
+	mapconst 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
+	mapconst ROUTE_13,                                     9, 30 ;  1
+	mapconst ROUTE_14,                                    18, 10 ;  2
+	mapconst ROUTE_15,                                     9, 20 ;  3
+	mapconst ROUTE_18,                                     9, 10 ;  4
+	mapconst FUCHSIA_CITY,                                18, 20 ;  5
+	mapconst FUCHSIA_MART,                                 4,  6 ;  6
+	mapconst SAFARI_ZONE_MAIN_OFFICE,                      4,  4 ;  7
+	mapconst FUCHSIA_GYM,                                  9,  5 ;  8
+	mapconst FUCHSIA_BILL_SPEECH_HOUSE,                    4,  4 ;  9
+	mapconst FUCHSIA_POKECENTER_1F,                        4,  5 ; 10
+	mapconst FUCHSIA_POKECENTER_2F_BETA,                   4,  8 ; 11
+	mapconst SAFARI_ZONE_WARDENS_HOME,                     4,  5 ; 12
+	mapconst 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
+	mapconst ROUTE_8,                                      9, 20 ;  1
+	mapconst ROUTE_12,                                    27, 10 ;  2
+	mapconst ROUTE_10_SOUTH,                               9, 10 ;  3
+	mapconst LAVENDER_TOWN,                                9, 10 ;  4
+	mapconst LAVENDER_POKECENTER_1F,                       4,  5 ;  5
+	mapconst LAVENDER_POKECENTER_2F_BETA,                  4,  8 ;  6
+	mapconst MR_FUJIS_HOUSE,                               4,  5 ;  7
+	mapconst LAVENDER_SPEECH_HOUSE,                        4,  4 ;  8
+	mapconst LAVENDER_NAME_RATER,                          4,  4 ;  9
+	mapconst LAVENDER_MART,                                4,  6 ; 10
+	mapconst SOUL_HOUSE,                                   4,  5 ; 11
+	mapconst LAV_RADIO_TOWER_1F,                           4, 10 ; 12
+	mapconst ROUTE_8_SAFFRON_GATE,                         4,  5 ; 13
+	mapconst 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
+	mapconst ROUTE_28,                                     9, 20 ;  1
+	mapconst SILVER_CAVE_OUTSIDE,                         18, 20 ;  2
+	mapconst SILVER_CAVE_POKECENTER_1F,                    4,  5 ;  3
+	mapconst 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
+	mapconst POKECENTER_2F,                                4,  8 ;  1
+	mapconst TRADE_CENTER,                                 4,  5 ;  2
+	mapconst COLOSSEUM,                                    4,  5 ;  3
+	mapconst TIME_CAPSULE,                                 4,  5 ;  4
+	mapconst MOBILE_TRADE_ROOM_MOBILE,                     4,  5 ;  5
+	mapconst 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
+	mapconst ROUTE_7,                                      9, 10 ;  1
+	mapconst ROUTE_16,                                     9, 10 ;  2
+	mapconst ROUTE_17,                                    45, 10 ;  3
+	mapconst CELADON_CITY,                                18, 20 ;  4
+	mapconst CELADON_DEPT_STORE_1F,                        4,  8 ;  5
+	mapconst CELADON_DEPT_STORE_2F,                        4,  8 ;  6
+	mapconst CELADON_DEPT_STORE_3F,                        4,  8 ;  7
+	mapconst CELADON_DEPT_STORE_4F,                        4,  8 ;  8
+	mapconst CELADON_DEPT_STORE_5F,                        4,  8 ;  9
+	mapconst CELADON_DEPT_STORE_6F,                        4,  8 ; 10
+	mapconst CELADON_DEPT_STORE_ELEVATOR,                  2,  2 ; 11
+	mapconst CELADON_MANSION_1F,                           5,  4 ; 12
+	mapconst CELADON_MANSION_2F,                           5,  4 ; 13
+	mapconst CELADON_MANSION_3F,                           5,  4 ; 14
+	mapconst CELADON_MANSION_ROOF,                         5,  4 ; 15
+	mapconst CELADON_MANSION_ROOF_HOUSE,                   4,  4 ; 16
+	mapconst CELADON_POKECENTER_1F,                        4,  5 ; 17
+	mapconst CELADON_POKECENTER_2F_BETA,                   4,  8 ; 18
+	mapconst CELADON_GAME_CORNER,                          7, 10 ; 19
+	mapconst CELADON_GAME_CORNER_PRIZE_ROOM,               3,  3 ; 20
+	mapconst CELADON_GYM,                                  9,  5 ; 21
+	mapconst CELADON_CAFE,                                 4,  6 ; 22
+	mapconst ROUTE_16_FUCHSIA_SPEECH_HOUSE,                4,  4 ; 23
+	mapconst ROUTE_16_GATE,                                4,  5 ; 24
+	mapconst ROUTE_7_SAFFRON_GATE,                         4,  5 ; 25
+	mapconst ROUTE_17_ROUTE_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
+	mapconst ROUTE_40,                                    18, 10 ;  1
+	mapconst ROUTE_41,                                    27, 25 ;  2
+	mapconst CIANWOOD_CITY,                               27, 15 ;  3
+	mapconst MANIAS_HOUSE,                                 4,  4 ;  4
+	mapconst CIANWOOD_GYM,                                 9,  5 ;  5
+	mapconst CIANWOOD_POKECENTER_1F,                       4,  5 ;  6
+	mapconst CIANWOOD_PHARMACY,                            4,  4 ;  7
+	mapconst CIANWOOD_PHOTO_STUDIO,                        4,  4 ;  8
+	mapconst CIANWOOD_LUGIA_SPEECH_HOUSE,                  4,  4 ;  9
+	mapconst POKE_SEERS_HOUSE,                             4,  4 ; 10
+	mapconst BATTLE_TOWER_1F,                              5,  8 ; 11
+	mapconst BATTLE_TOWER_BATTLE_ROOM,                     4,  4 ; 12
+	mapconst BATTLE_TOWER_ELEVATOR,                        2,  2 ; 13
+	mapconst BATTLE_TOWER_HALLWAY,                         2, 11 ; 14
+	mapconst ROUTE_40_BATTLE_TOWER_GATE,                   4,  5 ; 15
+	mapconst 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
+	mapconst ROUTE_2,                                     27, 10 ;  1
+	mapconst ROUTE_22,                                     9, 20 ;  2
+	mapconst VIRIDIAN_CITY,                               18, 20 ;  3
+	mapconst VIRIDIAN_GYM,                                 9,  5 ;  4
+	mapconst VIRIDIAN_NICKNAME_SPEECH_HOUSE,               4,  4 ;  5
+	mapconst TRAINER_HOUSE_1F,                             7,  5 ;  6
+	mapconst TRAINER_HOUSE_B1F,                            8,  5 ;  7
+	mapconst VIRIDIAN_MART,                                4,  6 ;  8
+	mapconst VIRIDIAN_POKECENTER_1F,                       4,  5 ;  9
+	mapconst VIRIDIAN_POKECENTER_2F_BETA,                  4,  8 ; 10
+	mapconst ROUTE_2_NUGGET_SPEECH_HOUSE,                  4,  4 ; 11
+	mapconst ROUTE_2_GATE,                                 4,  5 ; 12
+	mapconst 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
+	mapconst ROUTE_26,                                    54, 10 ;  1
+	mapconst ROUTE_27,                                     9, 40 ;  2
+	mapconst ROUTE_29,                                     9, 30 ;  3
+	mapconst NEW_BARK_TOWN,                                9, 10 ;  4
+	mapconst ELMS_LAB,                                     6,  5 ;  5
+	mapconst KRISS_HOUSE_1F,                               4,  5 ;  6
+	mapconst KRISS_HOUSE_2F,                               3,  4 ;  7
+	mapconst KRISS_NEIGHBORS_HOUSE,                        4,  4 ;  8
+	mapconst ELMS_HOUSE,                                   4,  4 ;  9
+	mapconst ROUTE_26_HEAL_SPEECH_HOUSE,                   4,  4 ; 10
+	mapconst ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE,          4,  4 ; 11
+	mapconst ROUTE_27_SANDSTORM_HOUSE,                     4,  4 ; 12
+	mapconst ROUTE_29_ROUTE_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_PATH_ENTRANCE,            4,  4 ; 13
-	mapgroup ROUTE_5_SAFFRON_CITY_GATE,                    4,  5 ; 14
-	mapgroup ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE,             4,  4 ; 15
+	mapconst ROUTE_5,                                      9, 10 ;  1
+	mapconst SAFFRON_CITY,                                18, 20 ;  2
+	mapconst FIGHTING_DOJO,                                6,  5 ;  3
+	mapconst SAFFRON_GYM,                                  9, 10 ;  4
+	mapconst SAFFRON_MART,                                 4,  6 ;  5
+	mapconst SAFFRON_POKECENTER_1F,                        4,  5 ;  6
+	mapconst SAFFRON_POKECENTER_2F_BETA,                   4,  8 ;  7
+	mapconst MR_PSYCHICS_HOUSE,                            4,  4 ;  8
+	mapconst SAFFRON_MAGNET_TRAIN_STATION,                 9, 10 ;  9
+	mapconst SILPH_CO_1F,                                  4,  8 ; 10
+	mapconst COPYCATS_HOUSE_1F,                            4,  4 ; 11
+	mapconst COPYCATS_HOUSE_2F,                            3,  5 ; 12
+	mapconst ROUTE_5_UNDERGROUND_PATH_ENTRANCE,            4,  4 ; 13
+	mapconst ROUTE_5_SAFFRON_GATE,                         4,  5 ; 14
+	mapconst 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
+	mapconst ROUTE_30,                                    27, 10 ;  1
+	mapconst ROUTE_31,                                     9, 20 ;  2
+	mapconst CHERRYGROVE_CITY,                             9, 20 ;  3
+	mapconst CHERRYGROVE_MART,                             4,  6 ;  4
+	mapconst CHERRYGROVE_POKECENTER_1F,                    4,  5 ;  5
+	mapconst CHERRYGROVE_GYM_SPEECH_HOUSE,                 4,  4 ;  6
+	mapconst GUIDE_GENTS_HOUSE,                            4,  4 ;  7
+	mapconst CHERRYGROVE_EVOLUTION_SPEECH_HOUSE,           4,  4 ;  8
+	mapconst ROUTE_30_BERRY_SPEECH_HOUSE,                  4,  4 ;  9
+	mapconst MR_POKEMONS_HOUSE,                            4,  4 ; 10
+	mapconst ROUTE_31_VIOLET_GATE,                         4,  5 ; 11
--- a/constants/map_data_constants.asm
+++ b/constants/map_data_constants.asm
@@ -3,18 +3,19 @@
 GROUP_NONE EQU 0
 MAP_NONE   EQU 0
 
-; map header struct members (see maps/map_headers.asm)
+
+; map header struct members (see data/maps/definitions.asm)
 	const_def
-	const MAPHEADER_MAPHEADER2_BANK ; 0
-	const MAPHEADER_TILESET         ; 1
-	const MAPHEADER_ENVIRONMENT     ; 2
-	const MAPHEADER_MAPHEADER2      ; 3
-	const MAPHEADER_MAPHEADER2_HI   ; 4
-	const MAPHEADER_LOCATION        ; 5
-	const MAPHEADER_MUSIC           ; 6
-	const MAPHEADER_PALETTE         ; 7
-	const MAPHEADER_FISHGROUP       ; 8
-NUM_MAPHEADER_ATTRIBUTES EQU const_value
+	const MAPDEF_MAPDATA_BANK ; 0
+	const MAPDEF_TILESET      ; 1
+	const MAPDEF_ENVIRONMENT  ; 2
+	const MAPDEF_MAPDATA      ; 3
+	const MAPDEF_MAPDATA_HI   ; 4
+	const MAPDEF_LOCATION     ; 5
+	const MAPDEF_MUSIC        ; 6
+	const MAPDEF_PALETTE      ; 7
+	const MAPDEF_FISHGROUP    ; 8
+NUM_MAPDEF_ATTRIBUTES EQU const_value
 
 ; map environments (wEnvironment)
 const_value set 1
@@ -52,7 +53,7 @@
 	const FISHGROUP_QWILFISH_NO_SWARM
 
 
-; connection directions
+; connection directions (see data/maps/data.asm)
 	const_def
 	const EAST_F
 	const WEST_F
@@ -67,6 +68,71 @@
 	shift_const NORTH
 
 
+; SpawnPoints indexes (see data/maps/spawn_points.asm)
+const_value = -1
+	const SPAWN_N_A
+	const SPAWN_HOME
+	const SPAWN_DEBUG
+; kanto
+	const SPAWN_PALLET
+	const SPAWN_VIRIDIAN
+	const SPAWN_PEWTER
+	const SPAWN_CERULEAN
+	const SPAWN_ROCK_TUNNEL
+	const SPAWN_VERMILION
+	const SPAWN_LAVENDER
+	const SPAWN_SAFFRON
+	const SPAWN_CELADON
+	const SPAWN_FUCHSIA
+	const SPAWN_CINNABAR
+	const SPAWN_INDIGO
+; johto
+	const SPAWN_NEW_BARK
+	const SPAWN_CHERRYGROVE
+	const SPAWN_VIOLET
+	const SPAWN_UNION_CAVE
+	const SPAWN_AZALEA
+	const SPAWN_CIANWOOD
+	const SPAWN_GOLDENROD
+	const SPAWN_OLIVINE
+	const SPAWN_ECRUTEAK
+	const SPAWN_MAHOGANY
+	const SPAWN_LAKE
+	const SPAWN_BLACKTHORN
+	const SPAWN_MT_SILVER
+	const SPAWN_FAST_SHIP
+NUM_SPAWNS EQU const_value
+
+
+; outdoor sprite limits (see engine/overworld.asm)
+MAX_OUTDOOR_SPRITES EQU 23
+SPRITE_GFX_LIST_CAPACITY EQU $20
+
+
+; map_object struct members (see macros/wram.asm)
+	const_def
+	const MAPOBJECT_OBJECT_STRUCT_ID ; 0
+	const MAPOBJECT_SPRITE ; 1
+	const MAPOBJECT_Y_COORD ; 2
+	const MAPOBJECT_X_COORD ; 3
+	const MAPOBJECT_MOVEMENT ; 4
+	const MAPOBJECT_RADIUS ; 5
+	const MAPOBJECT_HOUR ; 6
+	const MAPOBJECT_TIMEOFDAY ; 7
+	const MAPOBJECT_COLOR ; 8
+	const MAPOBJECT_RANGE ; 9
+	const MAPOBJECT_SCRIPT_POINTER ; a
+	const MAPOBJECT_POINTER_HI ; b
+	const MAPOBJECT_EVENT_FLAG ; c
+	const MAPOBJECT_FLAG_HI ; d
+	const MAPOBJECT_E ; unused
+	const MAPOBJECT_F ; unused
+OBJECT_LENGTH EQU const_value
+
+MAPOBJECT_SCREEN_HEIGHT EQU 11
+MAPOBJECT_SCREEN_WIDTH EQU 12
+
+
 ; object_struct members (see macros/wram.asm)
 	const_def
 	const OBJECT_SPRITE              ; 00
@@ -102,31 +168,10 @@
 	const OBJECT_1E                  ; 1e
 	const OBJECT_1F                  ; 1f
 	const OBJECT_RANGE               ; 20
-; 33-39 are not used
+	; 21-27 are not used
+OBJECT_STRUCT_LENGTH EQU 40
+NUM_OBJECT_STRUCTS EQU 13 ; see ObjectStructs
 
-; map_object struct members (see macros/wram.asm)
-	const_def
-	const MAPOBJECT_OBJECT_STRUCT_ID ; 0
-	const MAPOBJECT_SPRITE ; 1
-	const MAPOBJECT_Y_COORD ; 2
-	const MAPOBJECT_X_COORD ; 3
-	const MAPOBJECT_MOVEMENT ; 4
-	const MAPOBJECT_RADIUS ; 5
-	const MAPOBJECT_HOUR ; 6
-	const MAPOBJECT_TIMEOFDAY ; 7
-	const MAPOBJECT_COLOR ; 8
-	const MAPOBJECT_RANGE ; 9
-	const MAPOBJECT_SCRIPT_POINTER ; a
-	const MAPOBJECT_POINTER_HI ; b
-	const MAPOBJECT_EVENT_FLAG ; c
-	const MAPOBJECT_FLAG_HI ; d
-	const MAPOBJECT_E ; unused
-	const MAPOBJECT_F ; unused
-OBJECT_LENGTH EQU const_value
-
-MAPOBJECT_SCREEN_HEIGHT EQU 11
-MAPOBJECT_SCREEN_WIDTH EQU 12
-
 ; object_struct OBJECT_FACING values
 OW_DOWN  EQU DOWN  << 2
 OW_UP    EQU UP    << 2
@@ -138,151 +183,3 @@
 FIXED_FACING EQU 2
 SLIDING      EQU 3
 EMOTE_OBJECT EQU 7
-
-
-; SpawnPoints indexes (see data/maps/spawn_points.asm)
-const_value = -1
-	const SPAWN_N_A
-	const SPAWN_HOME
-	const SPAWN_DEBUG
-; kanto
-	const SPAWN_PALLET
-	const SPAWN_VIRIDIAN
-	const SPAWN_PEWTER
-	const SPAWN_CERULEAN
-	const SPAWN_ROCK_TUNNEL
-	const SPAWN_VERMILION
-	const SPAWN_LAVENDER
-	const SPAWN_SAFFRON
-	const SPAWN_CELADON
-	const SPAWN_FUCHSIA
-	const SPAWN_CINNABAR
-	const SPAWN_INDIGO
-; johto
-	const SPAWN_NEW_BARK
-	const SPAWN_CHERRYGROVE
-	const SPAWN_VIOLET
-	const SPAWN_UNION_CAVE
-	const SPAWN_AZALEA
-	const SPAWN_CIANWOOD
-	const SPAWN_GOLDENROD
-	const SPAWN_OLIVINE
-	const SPAWN_ECRUTEAK
-	const SPAWN_MAHOGANY
-	const SPAWN_LAKE
-	const SPAWN_BLACKTHORN
-	const SPAWN_MT_SILVER
-	const SPAWN_FAST_SHIP
-NUM_SPAWNS EQU const_value
-
-
-; TryBGEvent arguments (see engine/events.asm)
-	const_def
-	const BGEVENT_READ
-	const BGEVENT_UP
-	const BGEVENT_DOWN
-	const BGEVENT_RIGHT
-	const BGEVENT_LEFT
-	const BGEVENT_IFSET
-	const BGEVENT_IFNOTSET
-	const BGEVENT_ITEM
-	const BGEVENT_COPY
-
-; object_event types
-; TryObjectEvent arguments (see engine/events.asm)
-	const_def
-	const OBJECTTYPE_SCRIPT
-	const OBJECTTYPE_ITEMBALL
-	const OBJECTTYPE_TRAINER
-	const OBJECTTYPE_3
-	const OBJECTTYPE_4
-	const OBJECTTYPE_5
-	const OBJECTTYPE_6
-
-
-; Emotes indexes (see data/emotes.asm)
-	const_def
-	const EMOTE_SHOCK ; 0
-	const EMOTE_QUESTION ; 1
-	const EMOTE_HAPPY ; 2
-	const EMOTE_SAD ; 3
-	const EMOTE_HEART ; 4
-	const EMOTE_BOLT ; 5
-	const EMOTE_SLEEP ; 6
-	const EMOTE_FISH ; 7
-	const EMOTE_SHADOW ; 8
-	const EMOTE_ROD ; 9
-	const EMOTE_BOULDER_DUST ; 10
-	const EMOTE_GRASS_RUSTLE ; 11
-EMOTE_MEM EQU -1
-
-; FruitTreeItems indexes (see data/items/fruit_trees.asm)
-const_value set 1
-	const FRUITTREE_ROUTE_29      ; 01
-	const FRUITTREE_ROUTE_30_1    ; 02
-	const FRUITTREE_ROUTE_38      ; 03
-	const FRUITTREE_ROUTE_46_1    ; 04
-	const FRUITTREE_ROUTE_30_2    ; 05
-	const FRUITTREE_ROUTE_33      ; 06
-	const FRUITTREE_ROUTE_31      ; 07
-	const FRUITTREE_ROUTE_43      ; 08
-	const FRUITTREE_VIOLET_CITY   ; 09
-	const FRUITTREE_ROUTE_46_2    ; 0a
-	const FRUITTREE_ROUTE_35      ; 0b
-	const FRUITTREE_ROUTE_45      ; 0c
-	const FRUITTREE_ROUTE_36      ; 0d
-	const FRUITTREE_ROUTE_26      ; 0e
-	const FRUITTREE_ROUTE_39      ; 0f
-	const FRUITTREE_ROUTE_44      ; 10
-	const FRUITTREE_ROUTE_37_1    ; 11
-	const FRUITTREE_ROUTE_37_2    ; 12
-	const FRUITTREE_ROUTE_37_3    ; 13
-	const FRUITTREE_AZALEA_TOWN   ; 14
-	const FRUITTREE_ROUTE_42_1    ; 15
-	const FRUITTREE_ROUTE_42_2    ; 16
-	const FRUITTREE_ROUTE_42_3    ; 17
-	const FRUITTREE_ROUTE_11      ; 18
-	const FRUITTREE_ROUTE_2       ; 19
-	const FRUITTREE_ROUTE_1       ; 1a
-	const FRUITTREE_ROUTE_8       ; 1b
-	const FRUITTREE_PEWTER_CITY_1 ; 1c
-	const FRUITTREE_PEWTER_CITY_2 ; 1d
-	const FRUITTREE_FUCHSIA_CITY  ; 1e
-NUM_FRUIT_TREES EQU const_value +- 1
-
-
-; elevator floors
-; used by `elevfloor`
-	const_def
-	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
-CMDQUEUE_ADDR  EQU 1
-CMDQUEUE_03    EQU 3
-CMDQUEUE_04    EQU 4
-CMDQUEUE_05    EQU 5
-CMDQUEUE_ENTRY_SIZE EQU 6
-CMDQUEUE_CAPACITY EQU 4
-
-; command queue types
-CMDQUEUE_STONETABLE EQU 2
-
-; see engine/overworld.asm
-MAX_OUTDOOR_SPRITES EQU 23
-SPRITE_GFX_LIST_CAPACITY EQU $20
--- /dev/null
+++ b/constants/menu_constants.asm
@@ -1,0 +1,33 @@
+; MenuDataHeader flags
+	const_def
+	shift_const MENU_RESTORE_TILES ; Will be set if MENU_BACKUP_TILES(_2) is set.
+	shift_const MENU_UNUSED_1
+	shift_const MENU_UNUSED_2
+	shift_const MENU_NO_CLICK_SFX
+	shift_const MENU_SPRITE_ANIMS
+	shift_const MENU_UNUSED_3
+	shift_const MENU_BACKUP_TILES
+	shift_const MENU_BACKUP_TILES_2
+
+; VerticalMenu/DoNthMenu/SetUpMenu/_2DMenu MenuDataHeader2 flags
+; Per flag the comment specifies which menus actually implement it
+	const_def
+	shift_const STATICMENU_DISABLE_B ; VerticalMenu/_2DMenu
+	shift_const STATICMENU_ENABLE_SELECT ; VerticalMenu/_2DMenu
+	shift_const STATICMENU_ENABLE_LEFT_RIGHT ; DoNthMenu/SetUpMenu
+	shift_const STATICMENU_ENABLE_START ; DoNthMenu/SetUpMenu
+	shift_const STATICMENU_PLACE_TITLE ; VerticalMenu
+	shift_const STATICMENU_WRAP ; All
+	shift_const STATICMENU_NO_TOP_SPACING ; VerticalMenu/_2DMenu
+	shift_const STATICMENU_CURSOR ; VerticalMenu/_2DMenu
+
+; ScrollingMenu MenuDataHeader2 flags
+	const_def
+	shift_const SCROLLINGMENU_CALL_FUNCTION1_CANCEL
+	shift_const SCROLLINGMENU_CALL_FUNCTION3_NO_SWITCH
+	shift_const SCROLLINGMENU_ENABLE_LEFT
+	shift_const SCROLLINGMENU_ENABLE_RIGHT
+	shift_const SCROLLINGMENU_DISPLAY_ARROWS
+	shift_const SCROLLINGMENU_ENABLE_FUNCTION3
+	shift_const SCROLLINGMENU_ENABLE_START
+	shift_const SCROLLINGMENU_ENABLE_SELECT
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -16,6 +16,9 @@
 HP_YELLOW EQU 1
 HP_RED    EQU 2
 
+; G/S version ID: 0 = Gold, 1 = Silver (used by checkver)
+GS_VERSION EQU 0
+
 ; save file corruption check values
 SAVE_CHECK_VALUE_1 EQU 99
 SAVE_CHECK_VALUE_2 EQU 127
@@ -47,7 +50,7 @@
 NUM_BOXES    EQU 14
 
 ; hall of fame
-HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (PKMN_NAME_LENGTH +- 1) ; species, id, dvs, level, nick
+HOF_MON_LENGTH = 1 + 2 + 2 + 1 + (MON_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
 
@@ -83,3 +86,10 @@
 
 ; day-care
 MAX_DAY_CARE_EXP EQU $500000
+
+; bug-catching contest
+BUG_CONTEST_MINUTES EQU 20
+BUG_CONTEST_SECONDS EQU 0
+BUG_CONTEST_PLAYER EQU 1
+NUM_BUG_CONTESTANTS EQU 10 ; not counting the player
+BUG_CONTESTANT_SIZE EQU 4
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -108,9 +108,13 @@
 	const MUSIC_BATTLE_TOWER_LOBBY           ; 65
 	const MUSIC_MOBILE_CENTER                ; 66
 
-; GetMapHeaderMusic picks music for this value (see home/map.asm)
+; GetMapMusic picks music for this value (see home/map.asm)
 MUSIC_MAHOGANY_MART EQU $64
 
-; GetMapHeaderMusic picks music for this bit flag
+; ExitPokegearRadio_HandleMusic uses these values
+RESTART_MAP_MUSIC EQU $fe
+ENTER_MAP_MUSIC   EQU $ff
+
+; GetMapMusic picks music for this bit flag
 RADIO_TOWER_MUSIC_F EQU 7
 RADIO_TOWER_MUSIC EQU 1 << RADIO_TOWER_MUSIC_F
--- a/constants/npctrade_constants.asm
+++ b/constants/npctrade_constants.asm
@@ -19,3 +19,25 @@
 	const NPCTRADE_CHRIS  ; 4
 	const NPCTRADE_KIM    ; 5
 	const NPCTRADE_FOREST ; 6
+
+; trade gender limits
+TRADE_EITHER_GENDER EQU 0
+TRADE_MALE_ONLY     EQU 1
+TRADE_FEMALE_ONLY   EQU 2
+
+; TradeTexts indexes (see engine/npctrade.asm)
+
+; trade dialogs
+	const_def
+	const TRADE_INTRO
+	const TRADE_CANCEL
+	const TRADE_WRONG
+	const TRADE_COMPLETE
+	const TRADE_AFTER
+
+; trade dialog sets
+	const_def
+	const TRADE_DIALOG_COLLECTOR
+	const TRADE_DIALOG_HAPPY
+	const TRADE_DIALOG_NEWBIE
+	const TRADE_DIALOG_GIRL
--- a/constants/phone_constants.asm
+++ b/constants/phone_constants.asm
@@ -1,4 +1,4 @@
-; PhoneContacts indexes (see data/phone_contacts.asm)
+; PhoneContacts indexes (see data/phone/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 data/phone_special.asm)
+; SpecialPhoneCallList indexes (see data/phone/special_calls.asm)
 	const_def
 	const SPECIALCALL_NONE
 	const SPECIALCALL_POKERUS
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -10,14 +10,14 @@
 ; - PokemonPalettes (see data/pokemon/palettes.asm)
 ; - PokedexDataPointerTable (see data/pokemon/dex_entry_pointers.asm)
 ; - AlphabeticalPokedexOrder (see data/pokemon/dex_order_alpha.asm)
+; - EZChat_SortedPokemon (see data/pokemon/ezchat_order.asm)
 ; - NewPokedexOrder (see data/pokemon/dex_order_new.asm)
-; - Pokered_MonIndices (see data/time_capsule/mon_order.asm)
+; - Pokered_MonIndices (see data/pokemon/rby_order.asm)
 ; - AnimationPointers (see gfx/pokemon/anim_pointers.asm)
 ; - AnimationIdlePointers (see gfx/pokemon/idle_pointers.asm)
 ; - BitmasksPointers (see gfx/pokemon/bitmask_pointers.asm)
 ; - FramesPointers (see gfx/pokemon/frame_pointers.asm)
 ; - Footprints (see gfx/footprints.asm)
-; - SortedPokemon (see mobile/fixed_words.asm)
 const_value set 1
 	const BULBASAUR  ; 01
 	const IVYSAUR    ; 02
@@ -170,6 +170,7 @@
 	const DRAGONITE  ; 95
 	const MEWTWO     ; 96
 	const MEW        ; 97
+JOHTO_POKEMON EQU const_value
 	const CHIKORITA  ; 98
 	const BAYLEEF    ; 99
 	const MEGANIUM   ; 9a
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -63,6 +63,10 @@
 	const NO_EGGS      ; f
 
 
+; pokedex entries (see data/pokemon/dex_entries.asm)
+NUM_DEX_ENTRY_BANKS EQU 4
+
+
 ; party_struct members (see macros/wram.asm)
 MON_SPECIES            EQUS "(PartyMon1Species - PartyMon1)"
 MON_ITEM               EQUS "(PartyMon1Item - PartyMon1)"
@@ -98,6 +102,21 @@
 REDMON_STRUCT_LENGTH EQU 44
 
 
+; caught data
+
+CAUGHT_TIME_MASK  EQU %11000000
+CAUGHT_LEVEL_MASK EQU %00111111
+
+CAUGHT_GENDER_MASK   EQU %10000000
+CAUGHT_LOCATION_MASK EQU %01111111
+
+CAUGHT_BY_UNKNOWN EQU 0
+CAUGHT_BY_GIRL    EQU 1
+CAUGHT_BY_BOY     EQU 2
+
+CAUGHT_EGG_LEVEL EQU 1
+
+
 ; maximum number of party pokemon
 PARTY_LENGTH EQU 6
 
@@ -123,32 +142,6 @@
 	const ATK_EQ_DEF
 
 
-; significant happiness values
-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
-
-GRASS_WILDDATA_LENGTH EQU (NUM_GRASSMON * 2 + 1) * 3 + 2
-WATER_WILDDATA_LENGTH EQU (NUM_WATERMON * 2 + 1) * 1 + 2
-
-
-; swarms
-
-SWARM_DUNSPARCE EQU 0
-SWARM_YANMA     EQU 1
-
-FISHSWARM_QWILFISH EQU 1
-FISHSWARM_REMORAID EQU 2
-
-
 ; PokeAnims indexes (see engine/pic_animation.asm)
 	const_def
 	const ANIM_MON_SLOW
@@ -161,6 +154,7 @@
 	const ANIM_MON_EGG1
 	const ANIM_MON_EGG2
 
+
 ; MonMenuOptions indexes (see engine/mon_menu.asm)
 const_value set 1
 ; moves
@@ -192,3 +186,57 @@
 MONMENU_MENUOPTION EQU 1
 
 NUM_MONMENU_ITEMS EQU 8
+
+
+; treemon sets
+; TreeMons indexes (see data/wild/treemons.asm)
+	const_def
+	const TREEMON_SET_CITY
+	const TREEMON_SET_CANYON
+	const TREEMON_SET_AZALEA
+	const TREEMON_SET_ROUTE
+	const TREEMON_SET_KANTO
+	const TREEMON_SET_LAKE
+	const TREEMON_SET_FOREST
+	const TREEMON_SET_ROCK
+NUM_TREEMON_SETS EQU const_value
+
+; treemon scores
+	const_def
+	const TREEMON_SCORE_BAD  ; 0
+	const TREEMON_SCORE_GOOD ; 1
+	const TREEMON_SCORE_RARE ; 2
+
+
+; wild data
+
+NUM_GRASSMON EQU 7 ; data/wild/*_grass.asm table size
+NUM_WATERMON EQU 3 ; data/wild/*_water.asm table size
+
+GRASS_WILDDATA_LENGTH EQU (NUM_GRASSMON * 2 + 1) * 3 + 2
+WATER_WILDDATA_LENGTH EQU (NUM_WATERMON * 2 + 1) * 1 + 2
+
+NUM_ROAMMON_MAPS EQU 16 ; RoamMaps table size (see data/wild/roammon_maps.asm)
+
+
+; swarms
+
+SWARM_DUNSPARCE EQU 0
+SWARM_YANMA     EQU 1
+
+FISHSWARM_QWILFISH EQU 1
+FISHSWARM_REMORAID EQU 2
+
+
+; significant happiness values
+BASE_HAPPINESS        EQU 70
+FRIEND_BALL_HAPPINESS EQU 200
+HAPPINESS_TO_EVOLVE   EQU 220
+HAPPINESS_THRESHOLD_1 EQU 100
+HAPPINESS_THRESHOLD_2 EQU 200
+
+
+; PP
+PP_UP_MASK EQU %11000000
+PP_UP_ONE  EQU %01000000
+PP_MASK    EQU %00111111
--- a/constants/radio_constants.asm
+++ b/constants/radio_constants.asm
@@ -1,100 +1,105 @@
-; PlayRadioShow arguments, RadioJumptable indexes (see engine/radio.asm)
+; radio channel ids
+; indexes for:
+; - RadioChannelSongs (see data/radio/channel_music.asm)
+; - PlayRadioShow/RadioJumptable (see engine/radio.asm)
+; - RadioChannels (see engine/radio.asm)
 	const_def
-	const OAKS_POKEMON_TALK      ; $00
-	const POKEDEX_SHOW           ; $01
-	const POKEMON_MUSIC          ; $02
-	const LUCKY_CHANNEL          ; $03
-	const BUENAS_PASSWORD        ; $04
-	const PLACES_AND_PEOPLE      ; $05
-	const LETS_ALL_SING          ; $06
-	const ROCKET_RADIO           ; $07
-	const POKE_FLUTE_RADIO       ; $08
-	const UNOWN_RADIO            ; $09
-	const EVOLUTION_RADIO        ; $0a
-	const OAKS_POKEMON_TALK_2    ; $0b
-	const OAKS_POKEMON_TALK_3    ; $0c
-	const OAKS_POKEMON_TALK_4    ; $0d
-	const OAKS_POKEMON_TALK_5    ; $0e
-	const OAKS_POKEMON_TALK_6    ; $0f
-	const OAKS_POKEMON_TALK_7    ; $10
-	const OAKS_POKEMON_TALK_8    ; $11
-	const OAKS_POKEMON_TALK_9    ; $12
-	const POKEDEX_SHOW_2         ; $13
-	const POKEDEX_SHOW_3         ; $14
-	const POKEDEX_SHOW_4         ; $15
-	const POKEDEX_SHOW_5         ; $16
-	const POKEMON_MUSIC_2        ; $17
-	const POKEMON_MUSIC_3        ; $18
-	const POKEMON_MUSIC_4        ; $19
-	const POKEMON_MUSIC_5        ; $1a
-	const POKEMON_MUSIC_6        ; $1b
-	const POKEMON_MUSIC_7        ; $1c
-	const LETS_ALL_SING_2        ; $1d
-	const LUCKY_NUMBER_SHOW_2    ; $1e
-	const LUCKY_NUMBER_SHOW_3    ; $1f
-	const LUCKY_NUMBER_SHOW_4    ; $20
-	const LUCKY_NUMBER_SHOW_5    ; $21
-	const LUCKY_NUMBER_SHOW_6    ; $22
-	const LUCKY_NUMBER_SHOW_7    ; $23
-	const LUCKY_NUMBER_SHOW_8    ; $24
-	const LUCKY_NUMBER_SHOW_9    ; $25
-	const LUCKY_NUMBER_SHOW_10   ; $26
-	const LUCKY_NUMBER_SHOW_11   ; $27
-	const LUCKY_NUMBER_SHOW_12   ; $28
-	const LUCKY_NUMBER_SHOW_13   ; $29
-	const LUCKY_NUMBER_SHOW_14   ; $2a
-	const LUCKY_NUMBER_SHOW_15   ; $2b
-	const PLACES_AND_PEOPLE_2    ; $2c
-	const PLACES_AND_PEOPLE_3    ; $2d
-	const PLACES_AND_PEOPLE_4    ; $2e
-	const PLACES_AND_PEOPLE_5    ; $2f
-	const PLACES_AND_PEOPLE_6    ; $30
-	const PLACES_AND_PEOPLE_7    ; $31
-	const ROCKET_RADIO_2         ; $32
-	const ROCKET_RADIO_3         ; $33
-	const ROCKET_RADIO_4         ; $34
-	const ROCKET_RADIO_5         ; $35
-	const ROCKET_RADIO_6         ; $36
-	const ROCKET_RADIO_7         ; $37
-	const ROCKET_RADIO_8         ; $38
-	const ROCKET_RADIO_9         ; $39
-	const ROCKET_RADIO_10        ; $3a
-	const OAKS_POKEMON_TALK_10   ; $3b
-	const OAKS_POKEMON_TALK_11   ; $3c
-	const OAKS_POKEMON_TALK_12   ; $3d
-	const OAKS_POKEMON_TALK_13   ; $3e
-	const OAKS_POKEMON_TALK_14   ; $3f
-	const BUENAS_PASSWORD_2      ; $40
-	const BUENAS_PASSWORD_3      ; $41
-	const BUENAS_PASSWORD_4      ; $42
-	const BUENAS_PASSWORD_5      ; $43
-	const BUENAS_PASSWORD_6      ; $44
-	const BUENAS_PASSWORD_7      ; $45
-	const BUENAS_PASSWORD_8      ; $46
-	const BUENAS_PASSWORD_9      ; $47
-	const BUENAS_PASSWORD_10     ; $48
-	const BUENAS_PASSWORD_11     ; $49
-	const BUENAS_PASSWORD_12     ; $4a
-	const BUENAS_PASSWORD_13     ; $4b
-	const BUENAS_PASSWORD_14     ; $4c
-	const BUENAS_PASSWORD_15     ; $4d
-	const BUENAS_PASSWORD_16     ; $4e
-	const BUENAS_PASSWORD_17     ; $4f
-	const BUENAS_PASSWORD_18     ; $50
-	const BUENAS_PASSWORD_19     ; $51
-	const BUENAS_PASSWORD_20     ; $52
-	const BUENAS_PASSWORD_21     ; $53
-	const RADIO_SCROLL           ; $54
-	const POKEDEX_SHOW_6         ; $55
-	const POKEDEX_SHOW_7         ; $56
-	const POKEDEX_SHOW_8         ; $57
+	const OAKS_POKEMON_TALK      ; 00
+	const POKEDEX_SHOW           ; 01
+	const POKEMON_MUSIC          ; 02
+	const LUCKY_CHANNEL          ; 03
+	const BUENAS_PASSWORD        ; 04
+	const PLACES_AND_PEOPLE      ; 05
+	const LETS_ALL_SING          ; 06
+	const ROCKET_RADIO           ; 07
+	const POKE_FLUTE_RADIO       ; 08
+	const UNOWN_RADIO            ; 09
+	const EVOLUTION_RADIO        ; 0a
+; internal indexes for channel segments
+	const OAKS_POKEMON_TALK_2    ; 0b
+	const OAKS_POKEMON_TALK_3    ; 0c
+	const OAKS_POKEMON_TALK_4    ; 0d
+	const OAKS_POKEMON_TALK_5    ; 0e
+	const OAKS_POKEMON_TALK_6    ; 0f
+	const OAKS_POKEMON_TALK_7    ; 10
+	const OAKS_POKEMON_TALK_8    ; 11
+	const OAKS_POKEMON_TALK_9    ; 12
+	const POKEDEX_SHOW_2         ; 13
+	const POKEDEX_SHOW_3         ; 14
+	const POKEDEX_SHOW_4         ; 15
+	const POKEDEX_SHOW_5         ; 16
+	const POKEMON_MUSIC_2        ; 17
+	const POKEMON_MUSIC_3        ; 18
+	const POKEMON_MUSIC_4        ; 19
+	const POKEMON_MUSIC_5        ; 1a
+	const POKEMON_MUSIC_6        ; 1b
+	const POKEMON_MUSIC_7        ; 1c
+	const LETS_ALL_SING_2        ; 1d
+	const LUCKY_NUMBER_SHOW_2    ; 1e
+	const LUCKY_NUMBER_SHOW_3    ; 1f
+	const LUCKY_NUMBER_SHOW_4    ; 20
+	const LUCKY_NUMBER_SHOW_5    ; 21
+	const LUCKY_NUMBER_SHOW_6    ; 22
+	const LUCKY_NUMBER_SHOW_7    ; 23
+	const LUCKY_NUMBER_SHOW_8    ; 24
+	const LUCKY_NUMBER_SHOW_9    ; 25
+	const LUCKY_NUMBER_SHOW_10   ; 26
+	const LUCKY_NUMBER_SHOW_11   ; 27
+	const LUCKY_NUMBER_SHOW_12   ; 28
+	const LUCKY_NUMBER_SHOW_13   ; 29
+	const LUCKY_NUMBER_SHOW_14   ; 2a
+	const LUCKY_NUMBER_SHOW_15   ; 2b
+	const PLACES_AND_PEOPLE_2    ; 2c
+	const PLACES_AND_PEOPLE_3    ; 2d
+	const PLACES_AND_PEOPLE_4    ; 2e
+	const PLACES_AND_PEOPLE_5    ; 2f
+	const PLACES_AND_PEOPLE_6    ; 30
+	const PLACES_AND_PEOPLE_7    ; 31
+	const ROCKET_RADIO_2         ; 32
+	const ROCKET_RADIO_3         ; 33
+	const ROCKET_RADIO_4         ; 34
+	const ROCKET_RADIO_5         ; 35
+	const ROCKET_RADIO_6         ; 36
+	const ROCKET_RADIO_7         ; 37
+	const ROCKET_RADIO_8         ; 38
+	const ROCKET_RADIO_9         ; 39
+	const ROCKET_RADIO_10        ; 3a
+	const OAKS_POKEMON_TALK_10   ; 3b
+	const OAKS_POKEMON_TALK_11   ; 3c
+	const OAKS_POKEMON_TALK_12   ; 3d
+	const OAKS_POKEMON_TALK_13   ; 3e
+	const OAKS_POKEMON_TALK_14   ; 3f
+	const BUENAS_PASSWORD_2      ; 40
+	const BUENAS_PASSWORD_3      ; 41
+	const BUENAS_PASSWORD_4      ; 42
+	const BUENAS_PASSWORD_5      ; 43
+	const BUENAS_PASSWORD_6      ; 44
+	const BUENAS_PASSWORD_7      ; 45
+	const BUENAS_PASSWORD_8      ; 46
+	const BUENAS_PASSWORD_9      ; 47
+	const BUENAS_PASSWORD_10     ; 48
+	const BUENAS_PASSWORD_11     ; 49
+	const BUENAS_PASSWORD_12     ; 4a
+	const BUENAS_PASSWORD_13     ; 4b
+	const BUENAS_PASSWORD_14     ; 4c
+	const BUENAS_PASSWORD_15     ; 4d
+	const BUENAS_PASSWORD_16     ; 4e
+	const BUENAS_PASSWORD_17     ; 4f
+	const BUENAS_PASSWORD_18     ; 50
+	const BUENAS_PASSWORD_19     ; 51
+	const BUENAS_PASSWORD_20     ; 52
+	const BUENAS_PASSWORD_21     ; 53
+	const RADIO_SCROLL           ; 54
+	const POKEDEX_SHOW_6         ; 55
+	const POKEDEX_SHOW_7         ; 56
+	const POKEDEX_SHOW_8         ; 57
 
-; PlayRadio arguments (see engine/pokegear.asm)
+; PlayRadio.StationPointers indexes (see engine/pokegear.asm)
 	const_def
 	const MAPRADIO_POKEMON_CHANNEL
 	const MAPRADIO_OAKS_MON_TALK
 	const MAPRADIO_POKEDEX_SHOW
-	const MAPRADIO_PKMN_MUSIC
+	const MAPRADIO_POKEMON_MUSIC
 	const MAPRADIO_LUCKY_CHANNEL
 	const MAPRADIO_UNOWN
 	const MAPRADIO_PLACES_PEOPLE
@@ -101,23 +106,18 @@
 	const MAPRADIO_LETS_ALL_SING
 	const MAPRADIO_ROCKET
 
-; PasswordTable indexes (see engine/radio.asm)
-	const_def
-	const BUENA_STARTERS
-	const BUENA_DRINKS
-	const BUENA_ITEMS
-	const BUENA_BALLS
-	const BUENA_MON1
-	const BUENA_MON2
-	const BUENA_TOWNS
-	const BUENA_TYPES
-	const BUENA_MOVES
-	const BUENA_XITEMS
-	const BUENA_STATIONS
-NUM_PASSWORD_CATEGORIES EQU const_value
-NUM_PASSWORDS_PER_CATEGORY EQU 3
+; These tables in engine/radio.asm are all sized to a power of 2
+; so there's no need for a rejection sampling loop
+NUM_OAKS_MON_TALK_ADVERBS    EQU 16 ; OaksPkmnTalk8.Adverbs
+NUM_OAKS_MON_TALK_ADJECTIVES EQU 16 ; OaksPkmnTalk9.Adjectives
+NUM_PNP_PEOPLE_ADJECTIVES    EQU 16 ; PeoplePlaces5.Adjectives
+NUM_PNP_PLACES_ADJECTIVES    EQU 16 ; PeoplePlaces7.Adjectives
 
-; PasswordTable string types (see engine/radio.asm)
+; BuenasPasswordTable sizes (see data/radio/buenas_passwords.asm)
+NUM_PASSWORD_CATEGORIES    EQU 11
+NUM_PASSWORDS_PER_CATEGORY EQU  3
+
+; GetBuenasPassword.StringFunctionJumpTable indexes (see engine/radio.asm)
 	const_def
 	const BUENA_MON
 	const BUENA_ITEM
--- /dev/null
+++ b/constants/scgb_constants.asm
@@ -1,0 +1,150 @@
+; GetSGBLayout arguments (see engine/cgb_layouts.asm and engine/sgb_layouts.asm)
+	const_def
+	const SCGB_BATTLE_GRAYSCALE
+	const SCGB_BATTLE_COLORS
+	const SCGB_POKEGEAR_PALS
+	const SCGB_STATS_SCREEN_HP_PALS
+	const SCGB_POKEDEX
+	const SCGB_SLOT_MACHINE
+	const SCGB_06
+	const SCGB_GS_INTRO
+	const SCGB_DIPLOMA
+	const SCGB_MAPPALS
+	const SCGB_PARTY_MENU
+	const SCGB_EVOLUTION
+	const SCGB_GS_TITLE_SCREEN
+	const SCGB_0D
+	const SCGB_MOVE_LIST
+	const SCGB_0F
+	const SCGB_POKEDEX_SEARCH_OPTION
+	const SCGB_11
+	const SCGB_POKEPIC
+	const SCGB_13
+	const SCGB_PACKPALS
+	const SCGB_TRAINER_CARD
+	const SCGB_POKEDEX_UNOWN_MODE
+	const SCGB_BILLS_PC
+	const SCGB_UNOWN_PUZZLE
+	const SCGB_GAMEFREAK_LOGO
+	const SCGB_PLAYER_OR_MON_FRONTPIC_PALS
+	const SCGB_TRADE_TUBE
+	const SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+	const SCGB_MYSTERY_GIFT
+	const SCGB_1E
+
+SCGB_PARTY_MENU_HP_PALS  EQU -4
+SCGB_RAM EQU -1
+
+; PredefPals indexes (see gfx/sgb/predef.pal)
+; GetPredefPal arguments (see engine/color.asm)
+	const_def
+	const PREDEFPAL_00
+	const PREDEFPAL_PALLET
+	const PREDEFPAL_VIRIDIAN
+	const PREDEFPAL_PEWTER
+	const PREDEFPAL_CERULEAN
+	const PREDEFPAL_LAVENDER
+	const PREDEFPAL_VERMILION
+	const PREDEFPAL_CELADON
+	const PREDEFPAL_FUCHSIA
+	const PREDEFPAL_CINNABAR
+	const PREDEFPAL_SAFFRON
+	const PREDEFPAL_INDIGO
+	const PREDEFPAL_NEW_BARK
+	const PREDEFPAL_CHERRYGROVE
+	const PREDEFPAL_VIOLET
+	const PREDEFPAL_AZALEA
+	const PREDEFPAL_GOLDENROD
+	const PREDEFPAL_ECRUTEAK
+	const PREDEFPAL_OLIVINE
+	const PREDEFPAL_CIANWOOD
+	const PREDEFPAL_MAHOGANY
+	const PREDEFPAL_BLACKTHORN
+	const PREDEFPAL_LAKE_OF_RAGE
+	const PREDEFPAL_SILVER_CAVE
+	const PREDEFPAL_DUNGEONS
+	const PREDEFPAL_NITE
+	const PREDEFPAL_BLACKOUT
+	const PREDEFPAL_DIPLOMA ; RB_MEWMON
+	const PREDEFPAL_TRADE_TUBE ; RB_BLUEMON
+	const PREDEFPAL_POKEDEX ; RB_REDMON
+	const PREDEFPAL_RB_CYANMON
+	const PREDEFPAL_RB_PURPLEMON
+	const PREDEFPAL_RB_BROWNMON
+	const PREDEFPAL_RB_GREENMON
+	const PREDEFPAL_RB_PINKMON
+	const PREDEFPAL_RB_YELLOWMON
+	const PREDEFPAL_CGB_BADGE ; RB_GREYMON
+	const PREDEFPAL_MEWMON_NITE
+	const PREDEFPAL_BLUEMON_NITE
+	const PREDEFPAL_REDMON_NITE
+	const PREDEFPAL_CYANMON_NITE
+	const PREDEFPAL_PURPLEMON_NITE
+	const PREDEFPAL_BROWNMON_NITE
+	const PREDEFPAL_GREENMON_NITE
+	const PREDEFPAL_PINKMON_NITE
+	const PREDEFPAL_YELLOWMON_NITE
+	const PREDEFPAL_PARTY_ICON ; GREYMON_NITE
+	const PREDEFPAL_HP_GREEN
+	const PREDEFPAL_HP_YELLOW
+	const PREDEFPAL_HP_RED
+	const PREDEFPAL_POKEGEAR
+	const PREDEFPAL_33
+	const PREDEFPAL_34
+	const PREDEFPAL_GS_INTRO_GAMEFREAK_LOGO
+	const PREDEFPAL_GS_INTRO_SHELLDER_LAPRAS
+	const PREDEFPAL_37
+	const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
+	const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
+	const PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
+	const PREDEFPAL_3B
+	const PREDEFPAL_PACK ; GS_INTRO_CHARIZARD
+	const PREDEFPAL_SLOT_MACHINE_0
+	const PREDEFPAL_SLOT_MACHINE_1
+	const PREDEFPAL_SLOT_MACHINE_2
+	const PREDEFPAL_SLOT_MACHINE_3
+	const PREDEFPAL_SCGB_11_0
+	const PREDEFPAL_SCGB_11_1
+	const PREDEFPAL_SCGB_11_2
+	const PREDEFPAL_SCGB_11_3
+	const PREDEFPAL_45
+	const PREDEFPAL_46
+	const PREDEFPAL_47
+	const PREDEFPAL_GS_TITLE_SCREEN_0
+	const PREDEFPAL_GS_TITLE_SCREEN_1
+	const PREDEFPAL_GS_TITLE_SCREEN_2
+	const PREDEFPAL_GS_TITLE_SCREEN_3
+	const PREDEFPAL_UNOWN_PUZZLE
+	const PREDEFPAL_4D
+	const PREDEFPAL_GAMEFREAK_LOGO
+
+; SGB system command codes
+; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_System_Command_Table
+	const_def
+	const SGB_PAL01
+	const SGB_PAL23
+	const SGB_PAL03
+	const SGB_PAL12
+	const SGB_ATTR_BLK
+	const SGB_ATTR_LIN
+	const SGB_ATTR_DIV
+	const SGB_ATTR_CHR
+	const SGB_SOUND
+	const SGB_SOU_TRN
+	const SGB_PAL_SET
+	const SGB_PAL_TRN
+	const SGB_ATRC_EN
+	const SGB_TEST_EN
+	const SGB_ICON_EN
+	const SGB_DATA_SND
+	const SGB_DATA_TRN
+	const SGB_MLT_REG
+	const SGB_JUMP
+	const SGB_CHR_TRN
+	const SGB_PCT_TRN
+	const SGB_ATTR_TRN
+	const SGB_ATTR_SET
+	const SGB_MASK_EN
+	const SGB_OBJ_TRN
+
+PALPACKET_LENGTH EQU $10
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -2,8 +2,44 @@
 PLAYER      EQU  0
 LAST_TALKED EQU -2
 
-; GetVarAction arguments (see engine/variables.asm)
+
+; memory constants
 	const_def
+	const MEM_BUFFER_0 ; use StringBuffer3
+	const MEM_BUFFER_1 ; use StringBuffer4
+	const MEM_BUFFER_2 ; use StringBuffer5
+NUM_MEM_BUFFERS EQU const_value
+
+
+; checkmoney/takemoney accounts
+	const_def
+	const YOUR_MONEY ; 0
+	const MOMS_MONEY ; 1
+
+; checkmoney/checkcoins return values
+	const_def
+	const HAVE_MORE   ; 0
+	const HAVE_AMOUNT ; 1
+	const HAVE_LESS   ; 2
+
+; checkpokeitem return values
+	const_def
+	const POKEMAIL_WRONG_MAIL ; 0
+	const POKEMAIL_CORRECT    ; 1
+	const POKEMAIL_REFUSED    ; 2
+	const POKEMAIL_NO_MAIL    ; 3
+	const POKEMAIL_LAST_MON   ; 4
+
+; askforphonenumber return values
+	const_def
+	const PHONE_CONTACT_GOT     ; 0
+	const PHONE_CONTACTS_FULL   ; 1
+	const PHONE_CONTACT_REFUSED ; 2
+
+
+; writecode/checkcode arguments
+; _GetVarAction.VarActionTable indexes (see engine/variables.asm)
+	const_def
 	const VAR_STRINGBUFFER2    ; 00
 	const VAR_PARTYCOUNT       ; 01
 	const VAR_BATTLERESULT     ; 02
@@ -38,6 +74,7 @@
 RETVAR_ADDR_DE EQU (1 << 6)
 RETVAR_EXECUTE EQU (2 << 6)
 
+
 ; PlayerEventScriptPointers indexes (see engine/events.asm)
 const_value set -1
 	const PLAYEREVENT_MAPSCRIPT
@@ -52,3 +89,183 @@
 	const PLAYEREVENT_HATCH
 	const PLAYEREVENT_JOYCHANGEFACING
 NUM_PLAYER_EVENTS EQU const_value
+
+
+; TryBGEvent arguments (see engine/events.asm)
+	const_def
+	const BGEVENT_READ
+	const BGEVENT_UP
+	const BGEVENT_DOWN
+	const BGEVENT_RIGHT
+	const BGEVENT_LEFT
+	const BGEVENT_IFSET
+	const BGEVENT_IFNOTSET
+	const BGEVENT_ITEM
+	const BGEVENT_COPY
+
+; object_event types
+; TryObjectEvent arguments (see engine/events.asm)
+	const_def
+	const OBJECTTYPE_SCRIPT
+	const OBJECTTYPE_ITEMBALL
+	const OBJECTTYPE_TRAINER
+	const OBJECTTYPE_3
+	const OBJECTTYPE_4
+	const OBJECTTYPE_5
+	const OBJECTTYPE_6
+
+
+; showemote arguments
+; Emotes indexes (see data/sprites/emotes.asm)
+	const_def
+	const EMOTE_SHOCK ; 0
+	const EMOTE_QUESTION ; 1
+	const EMOTE_HAPPY ; 2
+	const EMOTE_SAD ; 3
+	const EMOTE_HEART ; 4
+	const EMOTE_BOLT ; 5
+	const EMOTE_SLEEP ; 6
+	const EMOTE_FISH ; 7
+	const EMOTE_SHADOW ; 8
+	const EMOTE_ROD ; 9
+	const EMOTE_BOULDER_DUST ; 10
+	const EMOTE_GRASS_RUSTLE ; 11
+EMOTE_MEM EQU -1
+
+
+; fruittree arguments
+; FruitTreeItems indexes (see data/items/fruit_trees.asm)
+const_value set 1
+	const FRUITTREE_ROUTE_29      ; 01
+	const FRUITTREE_ROUTE_30_1    ; 02
+	const FRUITTREE_ROUTE_38      ; 03
+	const FRUITTREE_ROUTE_46_1    ; 04
+	const FRUITTREE_ROUTE_30_2    ; 05
+	const FRUITTREE_ROUTE_33      ; 06
+	const FRUITTREE_ROUTE_31      ; 07
+	const FRUITTREE_ROUTE_43      ; 08
+	const FRUITTREE_VIOLET_CITY   ; 09
+	const FRUITTREE_ROUTE_46_2    ; 0a
+	const FRUITTREE_ROUTE_35      ; 0b
+	const FRUITTREE_ROUTE_45      ; 0c
+	const FRUITTREE_ROUTE_36      ; 0d
+	const FRUITTREE_ROUTE_26      ; 0e
+	const FRUITTREE_ROUTE_39      ; 0f
+	const FRUITTREE_ROUTE_44      ; 10
+	const FRUITTREE_ROUTE_37_1    ; 11
+	const FRUITTREE_ROUTE_37_2    ; 12
+	const FRUITTREE_ROUTE_37_3    ; 13
+	const FRUITTREE_AZALEA_TOWN   ; 14
+	const FRUITTREE_ROUTE_42_1    ; 15
+	const FRUITTREE_ROUTE_42_2    ; 16
+	const FRUITTREE_ROUTE_42_3    ; 17
+	const FRUITTREE_ROUTE_11      ; 18
+	const FRUITTREE_ROUTE_2       ; 19
+	const FRUITTREE_ROUTE_1       ; 1a
+	const FRUITTREE_ROUTE_8       ; 1b
+	const FRUITTREE_PEWTER_CITY_1 ; 1c
+	const FRUITTREE_PEWTER_CITY_2 ; 1d
+	const FRUITTREE_FUCHSIA_CITY  ; 1e
+NUM_FRUIT_TREES EQU const_value +- 1
+
+
+; describedecoration arguments
+; DescribeDecoration.JumpTable indexes (see engine/decorations.asm)
+	const_def
+	const DECODESC_POSTER     ; 0
+	const DECODESC_LEFT_DOLL  ; 1
+	const DECODESC_RIGHT_DOLL ; 2
+	const DECODESC_BIG_DOLL   ; 3
+	const DECODESC_CONSOLE    ; 4
+
+
+; elevfloor macro values
+; ElevatorFloorNames indexes (see data/elevator_floors.asm)
+	const_def
+	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
+CMDQUEUE_ADDR  EQU 1
+CMDQUEUE_03    EQU 3
+CMDQUEUE_04    EQU 4
+CMDQUEUE_05    EQU 5
+CMDQUEUE_ENTRY_SIZE EQU 6
+CMDQUEUE_CAPACITY EQU 4
+
+; command queue types
+CMDQUEUE_STONETABLE EQU 2
+
+
+; SpecialGameboyCheck return values
+	const_def
+	const GBCHECK_GB  ; 0
+	const GBCHECK_SGB ; 1
+	const GBCHECK_CGB ; 2
+
+; Special_CheckMagikarpLength return values
+	const_def
+	const MAGIKARPLENGTH_NOT_MAGIKARP ; 0
+	const MAGIKARPLENGTH_REFUSED      ; 1
+	const MAGIKARPLENGTH_TOO_SHORT    ; 2
+	const MAGIKARPLENGTH_BEAT_RECORD  ; 3
+
+; SpecialReturnShuckle return values
+	const_def
+	const SHUCKIE_WRONG_MON ; 0
+	const SHUCKIE_REFUSED   ; 1
+	const SHUCKIE_RETURNED  ; 2
+	const SHUCKIE_HAPPY     ; 3
+	const SHUCKIE_FAINTED   ; 4
+
+; CheckPartyFullAfterContest return values
+	const_def
+	const BUGCONTEST_CAUGHT_MON ; 0
+	const BUGCONTEST_BOXED_MON  ; 1
+	const BUGCONTEST_NO_CATCH   ; 2
+
+; HealMachineAnim writebyte arguments
+; HealMachineAnim.Pointers indexes (see engine/events/heal_machine_anim.asm)
+	const_def
+	const HEALMACHINE_POKECENTER   ; 0
+	const HEALMACHINE_ELMS_LAB     ; 1
+	const HEALMACHINE_HALL_OF_FAME ; 2
+
+; Special_UnownPuzzle writebyte arguments
+; LoadUnownPuzzlePiecesGFX.LZPointers indexes (see engine/unown_puzzle.asm)
+	const_def
+	const UNOWNPUZZLE_KABUTO     ; 0
+	const UNOWNPUZZLE_OMANYTE    ; 1
+	const UNOWNPUZZLE_AERODACTYL ; 2
+	const UNOWNPUZZLE_HO_OH      ; 3
+NUM_UNOWN_PUZZLES EQU const_value
+
+; Special_DisplayUnownWords writebyte arguments
+; UnownWalls and MenuDataHeaders_UnownWalls indexes (see data/unown_walls.asm)
+	const_def
+	const UNOWNWORDS_ESCAPE ; 0
+	const UNOWNWORDS_LIGHT  ; 1
+	const UNOWNWORDS_WATER  ; 2
+	const UNOWNWORDS_HO_OH  ; 3
+
+; Special_MoveTutor writebyte arguments
+const_value set 1
+	const MOVETUTOR_FLAMETHROWER ; 1
+	const MOVETUTOR_THUNDERBOLT  ; 2
+	const MOVETUTOR_ICE_BEAM     ; 3
--- a/constants/serial_constants.asm
+++ b/constants/serial_constants.asm
@@ -6,7 +6,25 @@
 	const LINK_COLOSSEUM   ; 3
 	const LINK_MOBILE      ; 4
 
-
+; hSerialReceive high nybbles
 SERIAL_TIMECAPSULE EQU $60
 SERIAL_TRADECENTER EQU $70
 SERIAL_BATTLE      EQU $80
+
+ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
+ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
+
+START_TRANSFER_EXTERNAL_CLOCK EQU $80 ; 1 << rSC_ON
+START_TRANSFER_INTERNAL_CLOCK EQU $81 ; (1 << rSC_ON) | 1
+
+; hSerialConnectionStatus
+USING_EXTERNAL_CLOCK       EQU $01
+USING_INTERNAL_CLOCK       EQU $02
+CONNECTION_NOT_ESTABLISHED EQU $ff
+
+; signals the start of an array of bytes transferred over the link cable
+SERIAL_PREAMBLE_BYTE              EQU $fd
+; this byte is used when there is no data to send
+SERIAL_NO_DATA_BYTE               EQU $fe
+; signals the end of one part of a patch list (there are two parts) for player/enemy party data
+SERIAL_PATCH_LIST_PART_TERMINATOR EQU $ff
--- a/constants/sfx_constants.asm
+++ b/constants/sfx_constants.asm
@@ -180,7 +180,7 @@
 	const SFX_ENCORE                      ; b0
 	const SFX_BEAT_UP                     ; b1
 	const SFX_BATON_PASS                  ; b2
-	const SFX_BALL_WIGGLE                 ; b3
+	const SFX_BALL_WOBBLE                 ; b3
 	const SFX_SWEET_SCENT                 ; b4
 	const SFX_SWEET_SCENT_2               ; b5
 	const SFX_HIT_END_OF_EXP_BAR          ; b6
--- a/constants/sprite_anim_constants.asm
+++ b/constants/sprite_anim_constants.asm
@@ -16,301 +16,303 @@
 	const SPRITEANIMSTRUCT_0D              ; d
 	const SPRITEANIMSTRUCT_0E              ; e
 	const SPRITEANIMSTRUCT_0F              ; f
+SPRITEANIMSTRUCT_LENGTH EQU const_value
+NUM_SPRITE_ANIM_STRUCTS EQU 10 ; see wSpriteAnimationStructs
 
 ; SpriteAnimSeqData indexes (see data/sprite_anims/sequences.asm)
 	const_def
-	const SPRITE_ANIM_INDEX_PARTY_MON               ; 00
-	const SPRITE_ANIM_INDEX_GS_TITLE_TRAIL          ; 01
-	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR    ; 02
-	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO          ; 03
-	const SPRITE_ANIM_INDEX_GS_INTRO_STAR           ; 04
-	const SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE        ; 05
-	const SPRITE_ANIM_INDEX_SLOTS_GOLEM             ; 06
-	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY           ; 07
-	const SPRITE_ANIM_INDEX_SLOTS_EGG               ; 08
-	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR     ; 09
-	const SPRITE_ANIM_INDEX_RED_WALK                ; 0a
-	const SPRITE_ANIM_INDEX_UNUSED_CURSOR           ; 0b
-	const SPRITE_ANIM_INDEX_DUMMY_GAME              ; 0c
-	const SPRITE_ANIM_INDEX_POKEGEAR_ARROW          ; 0d
-	const SPRITE_ANIM_INDEX_TRADE_POKE_BALL         ; 0e
-	const SPRITE_ANIM_INDEX_TRADE_POOF              ; 0f
-	const SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE        ; 10
-	const SPRITE_ANIM_INDEX_TRADEMON_ICON           ; 11
-	const SPRITE_ANIM_INDEX_TRADEMON_BUBBLE         ; 12
-	const SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT ; 13
-	const SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB       ; 14
-	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED        ; 15
-	const SPRITE_ANIM_INDEX_LEAF                    ; 16
-	const SPRITE_ANIM_INDEX_CUT_TREE                ; 17
-	const SPRITE_ANIM_INDEX_FLY_LEAF                ; 18
-	const SPRITE_ANIM_INDEX_EGG_CRACK               ; 19
-	const SPRITE_ANIM_INDEX_1A                      ; 1a
-	const SPRITE_ANIM_INDEX_HEADBUTT                ; 1b
-	const SPRITE_ANIM_INDEX_EGG_HATCH               ; 1c
-	const SPRITE_ANIM_INDEX_1D                      ; 1d
-	const SPRITE_ANIM_INDEX_BLUE_WALK               ; 1e
-	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE       ; 1f
-	const SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL  ; 20
-	const SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL    ; 21
-	const SPRITE_ANIM_INDEX_MOBILE_22               ; 22
-	const SPRITE_ANIM_INDEX_MOBILE_23               ; 23
-	const SPRITE_ANIM_INDEX_MOBILE_24               ; 24
-	const SPRITE_ANIM_INDEX_MOBILE_25               ; 25
-	const SPRITE_ANIM_INDEX_INTRO_SUICUNE           ; 26
-	const SPRITE_ANIM_INDEX_INTRO_PICHU             ; 27
-	const SPRITE_ANIM_INDEX_INTRO_WOOPER            ; 28
-	const SPRITE_ANIM_INDEX_INTRO_UNOWN             ; 29
-	const SPRITE_ANIM_INDEX_INTRO_UNOWN_F           ; 2a
-	const SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY      ; 2b
-	const SPRITE_ANIM_INDEX_CELEBI                  ; 2c
+	const SPRITE_ANIM_INDEX_PARTY_MON                ; 00
+	const SPRITE_ANIM_INDEX_GS_TITLE_TRAIL           ; 01
+	const SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR     ; 02
+	const SPRITE_ANIM_INDEX_GAMEFREAK_LOGO           ; 03
+	const SPRITE_ANIM_INDEX_GS_INTRO_STAR            ; 04
+	const SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE         ; 05
+	const SPRITE_ANIM_INDEX_SLOTS_GOLEM              ; 06
+	const SPRITE_ANIM_INDEX_SLOTS_CHANSEY            ; 07
+	const SPRITE_ANIM_INDEX_SLOTS_EGG                ; 08
+	const SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR      ; 09
+	const SPRITE_ANIM_INDEX_RED_WALK                 ; 0a
+	const SPRITE_ANIM_INDEX_UNUSED_CURSOR            ; 0b
+	const SPRITE_ANIM_INDEX_DUMMY_GAME               ; 0c
+	const SPRITE_ANIM_INDEX_POKEGEAR_ARROW           ; 0d
+	const SPRITE_ANIM_INDEX_TRADE_POKE_BALL          ; 0e
+	const SPRITE_ANIM_INDEX_TRADE_POOF               ; 0f
+	const SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE         ; 10
+	const SPRITE_ANIM_INDEX_TRADEMON_ICON            ; 11
+	const SPRITE_ANIM_INDEX_TRADEMON_BUBBLE          ; 12
+	const SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT  ; 13
+	const SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB        ; 14
+	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED         ; 15
+	const SPRITE_ANIM_INDEX_LEAF                     ; 16
+	const SPRITE_ANIM_INDEX_CUT_TREE                 ; 17
+	const SPRITE_ANIM_INDEX_FLY_LEAF                 ; 18
+	const SPRITE_ANIM_INDEX_EGG_CRACK                ; 19
+	const SPRITE_ANIM_INDEX_GS_INTRO_HO_OH           ; 1a
+	const SPRITE_ANIM_INDEX_HEADBUTT                 ; 1b
+	const SPRITE_ANIM_INDEX_EGG_HATCH                ; 1c
+	const SPRITE_ANIM_INDEX_EZCHAT_CURSOR            ; 1d
+	const SPRITE_ANIM_INDEX_BLUE_WALK                ; 1e
+	const SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE        ; 1f
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL   ; 20
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL     ; 21
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE ; 22
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_PULSE  ; 23
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_PULSE    ; 24
+	const SPRITE_ANIM_INDEX_MOBILE_TRADE_PING        ; 25
+	const SPRITE_ANIM_INDEX_INTRO_SUICUNE            ; 26
+	const SPRITE_ANIM_INDEX_INTRO_PICHU              ; 27
+	const SPRITE_ANIM_INDEX_INTRO_WOOPER             ; 28
+	const SPRITE_ANIM_INDEX_INTRO_UNOWN              ; 29
+	const SPRITE_ANIM_INDEX_INTRO_UNOWN_F            ; 2a
+	const SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY       ; 2b
+	const SPRITE_ANIM_INDEX_CELEBI                   ; 2c
 
 ; DoAnimFrame.Jumptable indexes (see engine/sprite_anims.asm)
 	const_def
-	const SPRITE_ANIM_SEQ_NULL                 ; 00
-	const SPRITE_ANIM_SEQ_PARTY_MON            ; 01
-	const SPRITE_ANIM_SEQ_PARTY_MON_SWITCH     ; 02
-	const SPRITE_ANIM_SEQ_PARTY_MON_SELECTED   ; 03
-	const SPRITE_ANIM_SEQ_GS_TITLE_TRAIL       ; 04
-	const SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR ; 05
-	const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO       ; 06
-	const SPRITE_ANIM_SEQ_GS_INTRO_STAR        ; 07
-	const SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE     ; 08
-	const SPRITE_ANIM_SEQ_SLOTS_GOLEM          ; 09
-	const SPRITE_ANIM_SEQ_SLOTS_CHANSEY        ; 0a
-	const SPRITE_ANIM_SEQ_SLOTS_EGG            ; 0b
-	const SPRITE_ANIM_SEQ_MAIL_CURSOR          ; 0c
-	const SPRITE_ANIM_SEQ_FOR_UNUSED_CURSOR    ; 0d
-	const SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR    ; 0e
-	const SPRITE_ANIM_SEQ_POKEGEAR_ARROW       ; 0f
-	const SPRITE_ANIM_SEQ_TRADE_POKE_BALL      ; 10
-	const SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE     ; 11
-	const SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE     ; 12
-	const SPRITE_ANIM_SEQ_REVEAL_NEW_MON       ; 13
-	const SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB    ; 14
-	const SPRITE_ANIM_SEQ_CUT_LEAVES           ; 15
-	const SPRITE_ANIM_SEQ_FLY_FROM             ; 16
-	const SPRITE_ANIM_SEQ_FLY_LEAF             ; 17
-	const SPRITE_ANIM_SEQ_FLY_TO               ; 18
-	const SPRITE_ANIM_SEQ_19                   ; 19
-	const SPRITE_ANIM_SEQ_1A                   ; 1a
-	const SPRITE_ANIM_SEQ_FOR_MOBILE_23        ; 1b
-	const SPRITE_ANIM_SEQ_FOR_MOBILE_24        ; 1c
-	const SPRITE_ANIM_SEQ_INTRO_SUICUNE        ; 1d
-	const SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER   ; 1e
-	const SPRITE_ANIM_SEQ_CELEBI               ; 1f
-	const SPRITE_ANIM_SEQ_INTRO_UNOWN          ; 20
-	const SPRITE_ANIM_SEQ_INTRO_UNOWN_F        ; 21
-	const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY   ; 22
+	const SPRITE_ANIM_SEQ_NULL                    ; 00
+	const SPRITE_ANIM_SEQ_PARTY_MON               ; 01
+	const SPRITE_ANIM_SEQ_PARTY_MON_SWITCH        ; 02
+	const SPRITE_ANIM_SEQ_PARTY_MON_SELECTED      ; 03
+	const SPRITE_ANIM_SEQ_GS_TITLE_TRAIL          ; 04
+	const SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR    ; 05
+	const SPRITE_ANIM_SEQ_GAMEFREAK_LOGO          ; 06
+	const SPRITE_ANIM_SEQ_GS_INTRO_STAR           ; 07
+	const SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE        ; 08
+	const SPRITE_ANIM_SEQ_SLOTS_GOLEM             ; 09
+	const SPRITE_ANIM_SEQ_SLOTS_CHANSEY           ; 0a
+	const SPRITE_ANIM_SEQ_SLOTS_EGG               ; 0b
+	const SPRITE_ANIM_SEQ_MAIL_CURSOR             ; 0c
+	const SPRITE_ANIM_SEQ_UNUSED_CURSOR           ; 0d
+	const SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR       ; 0e
+	const SPRITE_ANIM_SEQ_POKEGEAR_ARROW          ; 0f
+	const SPRITE_ANIM_SEQ_TRADE_POKE_BALL         ; 10
+	const SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE        ; 11
+	const SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE        ; 12
+	const SPRITE_ANIM_SEQ_REVEAL_NEW_MON          ; 13
+	const SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB       ; 14
+	const SPRITE_ANIM_SEQ_CUT_LEAVES              ; 15
+	const SPRITE_ANIM_SEQ_FLY_FROM                ; 16
+	const SPRITE_ANIM_SEQ_FLY_LEAF                ; 17
+	const SPRITE_ANIM_SEQ_FLY_TO                  ; 18
+	const SPRITE_ANIM_SEQ_GS_INTRO_HO_OH          ; 19
+	const SPRITE_ANIM_SEQ_EZCHAT_CURSOR           ; 1a
+	const SPRITE_ANIM_SEQ_MOBILE_TRADE_SENT_PULSE ; 1b
+	const SPRITE_ANIM_SEQ_MOBILE_TRADE_OT_PULSE   ; 1c
+	const SPRITE_ANIM_SEQ_INTRO_SUICUNE           ; 1d
+	const SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER      ; 1e
+	const SPRITE_ANIM_SEQ_CELEBI                  ; 1f
+	const SPRITE_ANIM_SEQ_INTRO_UNOWN             ; 20
+	const SPRITE_ANIM_SEQ_INTRO_UNOWN_F           ; 21
+	const SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY      ; 22
 
 ; SpriteAnimFrameData indexes (see data/sprite_anims/framesets.asm)
 	const_def
-	const SPRITE_ANIM_FRAMESET_00
-	const SPRITE_ANIM_FRAMESET_PARTY_MON ; 01
-	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL ; 02
-	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM ; 03
-	const SPRITE_ANIM_FRAMESET_PARTY_MON_FAST ; 04
+	const SPRITE_ANIM_FRAMESET_00                       ; 00
+	const SPRITE_ANIM_FRAMESET_PARTY_MON                ; 01
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL      ; 02
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM      ; 03
+	const SPRITE_ANIM_FRAMESET_PARTY_MON_FAST           ; 04
 	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL_FAST ; 05
 	const SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM_FAST ; 06
-	const SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL ; 07
-	const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR ; 08
-	const SPRITE_ANIM_FRAMESET_09
-	const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO ; 0a
-	const SPRITE_ANIM_FRAMESET_GS_INTRO_STAR ; 0b
-	const SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE ; 0c
-	const SPRITE_ANIM_FRAMESET_SLOTS_GOLEM ; 0d
-	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY ; 0e
-	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2 ; 0f
-	const SPRITE_ANIM_FRAMESET_SLOTS_EGG ; 10
-	const SPRITE_ANIM_FRAMESET_RED_WALK ; 11
-	const SPRITE_ANIM_FRAMESET_STILL_CURSOR ; 12
-	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL ; 13
-	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_0 ; 14
-	const SPRITE_ANIM_FRAMESET_TRADE_POOF ; 15
-	const SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE ; 16
-	const SPRITE_ANIM_FRAMESET_TRADEMON_ICON ; 17
-	const SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE ; 18
-	const SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT ; 19
-	const SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB ; 1a
-	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED ; 1b
-	const SPRITE_ANIM_FRAMESET_1C
-	const SPRITE_ANIM_FRAMESET_LEAF ; 1d
-	const SPRITE_ANIM_FRAMESET_CUT_TREE ; 1e
-	const SPRITE_ANIM_FRAMESET_EGG_CRACK ; 1f
-	const SPRITE_ANIM_FRAMESET_EGG_HATCH ; 20
-	const SPRITE_ANIM_FRAMESET_21
-	const SPRITE_ANIM_FRAMESET_22
-	const SPRITE_ANIM_FRAMESET_23
-	const SPRITE_ANIM_FRAMESET_24
-	const SPRITE_ANIM_FRAMESET_HEADBUTT ; 25
-	const SPRITE_ANIM_FRAMESET_26
-	const SPRITE_ANIM_FRAMESET_27
-	const SPRITE_ANIM_FRAMESET_28
-	const SPRITE_ANIM_FRAMESET_29
-	const SPRITE_ANIM_FRAMESET_2A
-	const SPRITE_ANIM_FRAMESET_2B
-	const SPRITE_ANIM_FRAMESET_2C
-	const SPRITE_ANIM_FRAMESET_BLUE_WALK ; 2d
-	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE ; 2e
-	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL ; 2f
-	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL ; 30
-	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_22 ; 31
-	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_23 ; 32
-	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_24 ; 33
-	const SPRITE_ANIM_FRAMESET_FOR_MOBILE_25 ; 34
-	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE ; 35
-	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_2 ; 36
-	const SPRITE_ANIM_FRAMESET_INTRO_PICHU ; 37
-	const SPRITE_ANIM_FRAMESET_INTRO_WOOPER ; 38
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1 ; 39
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_2 ; 3a
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_3 ; 3b
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_4 ; 3c
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F_2 ; 3d
-	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY ; 3e
-	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F ; 3f
-	const SPRITE_ANIM_FRAMESET_CELEBI_LEFT ; 40
-	const SPRITE_ANIM_FRAMESET_CELEBI_RIGHT ; 41
+	const SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL           ; 07
+	const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR        ; 08
+	const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR_BIG    ; 09
+	const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO           ; 0a
+	const SPRITE_ANIM_FRAMESET_GS_INTRO_STAR            ; 0b
+	const SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE         ; 0c
+	const SPRITE_ANIM_FRAMESET_SLOTS_GOLEM              ; 0d
+	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY            ; 0e
+	const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2          ; 0f
+	const SPRITE_ANIM_FRAMESET_SLOTS_EGG                ; 10
+	const SPRITE_ANIM_FRAMESET_RED_WALK                 ; 11
+	const SPRITE_ANIM_FRAMESET_STILL_CURSOR             ; 12
+	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL          ; 13
+	const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_WOBBLE   ; 14
+	const SPRITE_ANIM_FRAMESET_TRADE_POOF               ; 15
+	const SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE         ; 16
+	const SPRITE_ANIM_FRAMESET_TRADEMON_ICON            ; 17
+	const SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE          ; 18
+	const SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT  ; 19
+	const SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB        ; 1a
+	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED         ; 1b
+	const SPRITE_ANIM_FRAMESET_UNUSED_1C                ; 1c
+	const SPRITE_ANIM_FRAMESET_LEAF                     ; 1d
+	const SPRITE_ANIM_FRAMESET_CUT_TREE                 ; 1e
+	const SPRITE_ANIM_FRAMESET_EGG_CRACK                ; 1f
+	const SPRITE_ANIM_FRAMESET_EGG_HATCH_1              ; 20
+	const SPRITE_ANIM_FRAMESET_EGG_HATCH_2              ; 21
+	const SPRITE_ANIM_FRAMESET_EGG_HATCH_3              ; 22
+	const SPRITE_ANIM_FRAMESET_EGG_HATCH_4              ; 23
+	const SPRITE_ANIM_FRAMESET_GS_INTRO_HO_OH           ; 24
+	const SPRITE_ANIM_FRAMESET_HEADBUTT                 ; 25
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1          ; 26
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2          ; 27
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3          ; 28
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_4          ; 29
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_5          ; 2a
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_6          ; 2b
+	const SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_7          ; 2c
+	const SPRITE_ANIM_FRAMESET_BLUE_WALK                ; 2d
+	const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE        ; 2e
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL   ; 2f
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL     ; 30
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_CABLE_BULGE ; 31
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_PULSE  ; 32
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_PULSE    ; 33
+	const SPRITE_ANIM_FRAMESET_MOBILE_TRADE_PING        ; 34
+	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE            ; 35
+	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_2          ; 36
+	const SPRITE_ANIM_FRAMESET_INTRO_PICHU              ; 37
+	const SPRITE_ANIM_FRAMESET_INTRO_WOOPER             ; 38
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1            ; 39
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_2            ; 3a
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_3            ; 3b
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_4            ; 3c
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F_2          ; 3d
+	const SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY       ; 3e
+	const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F            ; 3f
+	const SPRITE_ANIM_FRAMESET_CELEBI_LEFT              ; 40
+	const SPRITE_ANIM_FRAMESET_CELEBI_RIGHT             ; 41
 
 ; SpriteAnimOAMData indexes (see data/sprite_anims/oam.asm)
 	const_def
-	const SPRITE_ANIM_OAMSET_RED_WALK_1 ; 00
-	const SPRITE_ANIM_OAMSET_RED_WALK_2 ; 01
-	const SPRITE_ANIM_OAMSET_02
-	const SPRITE_ANIM_OAMSET_03
-	const SPRITE_ANIM_OAMSET_04
-	const SPRITE_ANIM_OAMSET_05
-	const SPRITE_ANIM_OAMSET_06
-	const SPRITE_ANIM_OAMSET_07
-	const SPRITE_ANIM_OAMSET_08
-	const SPRITE_ANIM_OAMSET_09
-	const SPRITE_ANIM_OAMSET_0A
-	const SPRITE_ANIM_OAMSET_0B
-	const SPRITE_ANIM_OAMSET_0C
-	const SPRITE_ANIM_OAMSET_0D
-	const SPRITE_ANIM_OAMSET_0E
-	const SPRITE_ANIM_OAMSET_0F
-	const SPRITE_ANIM_OAMSET_10
-	const SPRITE_ANIM_OAMSET_11
-	const SPRITE_ANIM_OAMSET_12
-	const SPRITE_ANIM_OAMSET_13
-	const SPRITE_ANIM_OAMSET_14
-	const SPRITE_ANIM_OAMSET_15
-	const SPRITE_ANIM_OAMSET_16
-	const SPRITE_ANIM_OAMSET_17
-	const SPRITE_ANIM_OAMSET_18
-	const SPRITE_ANIM_OAMSET_19
-	const SPRITE_ANIM_OAMSET_1A
-	const SPRITE_ANIM_OAMSET_1B
-	const SPRITE_ANIM_OAMSET_1C
-	const SPRITE_ANIM_OAMSET_1D
-	const SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1 ; 1e
-	const SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2 ; 1f
-	const SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR ; 20
-	const SPRITE_ANIM_OAMSET_FOR_FRAMESET_09 ; 21
-	const SPRITE_ANIM_OAMSET_22
-	const SPRITE_ANIM_OAMSET_GS_INTRO_STAR ; 23
-	const SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1 ; 24
-	const SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2 ; 25
-	const SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3 ; 26
-	const SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1 ; 27
-	const SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2 ; 28
-	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1 ; 29
-	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2 ; 2a
-	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3 ; 2b
-	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4 ; 2c
-	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5 ; 2d
-	const SPRITE_ANIM_OAMSET_SLOTS_EGG ; 2e
-	const SPRITE_ANIM_OAMSET_STILL_CURSOR ; 2f
-	const SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1 ; 30
-	const SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2 ; 31
-	const SPRITE_ANIM_OAMSET_TRADE_POOF_1 ; 32
-	const SPRITE_ANIM_OAMSET_TRADE_POOF_2 ; 33
-	const SPRITE_ANIM_OAMSET_TRADE_POOF_3 ; 34
-	const SPRITE_ANIM_OAMSET_35
-	const SPRITE_ANIM_OAMSET_36
-	const SPRITE_ANIM_OAMSET_TRADEMON_ICON_1 ; 37
-	const SPRITE_ANIM_OAMSET_TRADEMON_ICON_2 ; 38
-	const SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE ; 39
-	const SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1 ; 3a
-	const SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2 ; 3b
-	const SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB ; 3c
-	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1 ; 3d
-	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2 ; 3e
-	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1 ; 3f
-	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2 ; 40
-	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1 ; 41
-	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2 ; 42
-	const SPRITE_ANIM_OAMSET_43
-	const SPRITE_ANIM_OAMSET_44
-	const SPRITE_ANIM_OAMSET_45
-	const SPRITE_ANIM_OAMSET_46
-	const SPRITE_ANIM_OAMSET_47
-	const SPRITE_ANIM_OAMSET_48
-	const SPRITE_ANIM_OAMSET_49
-	const SPRITE_ANIM_OAMSET_4A
-	const SPRITE_ANIM_OAMSET_4B
-	const SPRITE_ANIM_OAMSET_4C
-	const SPRITE_ANIM_OAMSET_4D
-	const SPRITE_ANIM_OAMSET_4E
-	const SPRITE_ANIM_OAMSET_LEAF ; 4f
-	const SPRITE_ANIM_OAMSET_TREE_1 ; 50
-	const SPRITE_ANIM_OAMSET_CUT_TREE_2 ; 51
-	const SPRITE_ANIM_OAMSET_CUT_TREE_3 ; 52
-	const SPRITE_ANIM_OAMSET_CUT_TREE_4 ; 53
-	const SPRITE_ANIM_OAMSET_EGG_CRACK ; 54
-	const SPRITE_ANIM_OAMSET_55
-	const SPRITE_ANIM_OAMSET_56
-	const SPRITE_ANIM_OAMSET_57
-	const SPRITE_ANIM_OAMSET_58
-	const SPRITE_ANIM_OAMSET_59
-	const SPRITE_ANIM_OAMSET_5A
-	const SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2 ; 5b
-	const SPRITE_ANIM_OAMSET_5C
-	const SPRITE_ANIM_OAMSET_5D
-	const SPRITE_ANIM_OAMSET_5E
-	const SPRITE_ANIM_OAMSET_5F
-	const SPRITE_ANIM_OAMSET_60
-	const SPRITE_ANIM_OAMSET_61
-	const SPRITE_ANIM_OAMSET_62
-	const SPRITE_ANIM_OAMSET_BLUE_WALK_1 ; 63
-	const SPRITE_ANIM_OAMSET_BLUE_WALK_2 ; 64
-	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1 ; 65
-	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2 ; 66
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1 ; 67
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2 ; 68
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1 ; 69
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2 ; 6a
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3 ; 6b
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_23 ; 6c
-	const SPRITE_ANIM_OAMSET_FOR_MOBILE_24 ; 6d
-	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1 ; 6e
-	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2 ; 6f
-	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3 ; 70
-	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4 ; 71
-	const SPRITE_ANIM_OAMSET_INTRO_PICHU_1 ; 72
-	const SPRITE_ANIM_OAMSET_INTRO_PICHU_2 ; 73
-	const SPRITE_ANIM_OAMSET_INTRO_PICHU_3 ; 74
-	const SPRITE_ANIM_OAMSET_INTRO_WOOPER ; 75
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_1 ; 76
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_2 ; 77
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_3 ; 78
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1 ; 79
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2 ; 7a
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3 ; 7b
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4 ; 7c
-	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5 ; 7d
-	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY ; 7e
-	const SPRITE_ANIM_OAMSET_CELEBI_1 ; 7f
-	const SPRITE_ANIM_OAMSET_CELEBI_2 ; 80
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1 ; 81
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2 ; 82
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3 ; 83
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4 ; 84
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5 ; 85
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6 ; 86
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7 ; 87
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8 ; 88
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9 ; 89
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10 ; 8A
-	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11 ; 8B
+	const SPRITE_ANIM_OAMSET_RED_WALK_1                 ; 00
+	const SPRITE_ANIM_OAMSET_RED_WALK_2                 ; 01
+	const SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_1          ; 02
+	const SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_2          ; 03
+	const SPRITE_ANIM_OAMSET_GS_INTRO_SHELLDER_1        ; 04
+	const SPRITE_ANIM_OAMSET_GS_INTRO_SHELLDER_2        ; 05
+	const SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1        ; 06
+	const SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2        ; 07
+	const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_1          ; 08
+	const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_2          ; 09
+	const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_3          ; 0a
+	const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_4          ; 0b
+	const SPRITE_ANIM_OAMSET_GS_INTRO_NOTE              ; 0c
+	const SPRITE_ANIM_OAMSET_GS_INTRO_INVISIBLE_NOTE    ; 0d
+	const SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1      ; 0e
+	const SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2      ; 0f
+	const SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3      ; 10
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_1         ; 11
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2         ; 12
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_3         ; 13
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_4         ; 14
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_1    ; 15
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_2    ; 16
+	const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_3    ; 17
+	const SPRITE_ANIM_OAMSET_GS_INTRO_SMALL_FIREBALL    ; 18
+	const SPRITE_ANIM_OAMSET_GS_INTRO_MED_FIREBALL      ; 19
+	const SPRITE_ANIM_OAMSET_GS_INTRO_BIG_FIREBALL      ; 1a
+	const SPRITE_ANIM_OAMSET_GS_INTRO_CHIKORITA         ; 1b
+	const SPRITE_ANIM_OAMSET_GS_INTRO_CYNDAQUIL         ; 1c
+	const SPRITE_ANIM_OAMSET_GS_INTRO_TOTODILE          ; 1d
+	const SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1           ; 1e
+	const SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2           ; 1f
+	const SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR          ; 20
+	const SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR_BIG      ; 21
+	const SPRITE_ANIM_OAMSET_GS_INTRO_GAMEFREAK_LOGO    ; 22
+	const SPRITE_ANIM_OAMSET_GS_INTRO_STAR              ; 23
+	const SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1         ; 24
+	const SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2         ; 25
+	const SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3         ; 26
+	const SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1              ; 27
+	const SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2              ; 28
+	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1            ; 29
+	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2            ; 2a
+	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3            ; 2b
+	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4            ; 2c
+	const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5            ; 2d
+	const SPRITE_ANIM_OAMSET_SLOTS_EGG                  ; 2e
+	const SPRITE_ANIM_OAMSET_STILL_CURSOR               ; 2f
+	const SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1          ; 30
+	const SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2          ; 31
+	const SPRITE_ANIM_OAMSET_TRADE_POOF_1               ; 32
+	const SPRITE_ANIM_OAMSET_TRADE_POOF_2               ; 33
+	const SPRITE_ANIM_OAMSET_TRADE_POOF_3               ; 34
+	const SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_1         ; 35
+	const SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_2         ; 36
+	const SPRITE_ANIM_OAMSET_TRADEMON_ICON_1            ; 37
+	const SPRITE_ANIM_OAMSET_TRADEMON_ICON_2            ; 38
+	const SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE            ; 39
+	const SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1  ; 3a
+	const SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2  ; 3b
+	const SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB          ; 3c
+	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1      ; 3d
+	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2      ; 3e
+	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1      ; 3f
+	const SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2      ; 40
+	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1         ; 41
+	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2         ; 42
+	const SPRITE_ANIM_OAMSET_UNUSED_43                  ; 43
+	const SPRITE_ANIM_OAMSET_UNUSED_44                  ; 44
+	const SPRITE_ANIM_OAMSET_UNUSED_45                  ; 45
+	const SPRITE_ANIM_OAMSET_UNUSED_46                  ; 46
+	const SPRITE_ANIM_OAMSET_UNUSED_47                  ; 47
+	const SPRITE_ANIM_OAMSET_UNUSED_48                  ; 48
+	const SPRITE_ANIM_OAMSET_UNUSED_49                  ; 49
+	const SPRITE_ANIM_OAMSET_UNUSED_4A                  ; 4a
+	const SPRITE_ANIM_OAMSET_UNUSED_4B                  ; 4b
+	const SPRITE_ANIM_OAMSET_UNUSED_4C                  ; 4c
+	const SPRITE_ANIM_OAMSET_UNUSED_4D                  ; 4d
+	const SPRITE_ANIM_OAMSET_UNUSED_4E                  ; 4e
+	const SPRITE_ANIM_OAMSET_LEAF                       ; 4f
+	const SPRITE_ANIM_OAMSET_TREE_1                     ; 50
+	const SPRITE_ANIM_OAMSET_CUT_TREE_2                 ; 51
+	const SPRITE_ANIM_OAMSET_CUT_TREE_3                 ; 52
+	const SPRITE_ANIM_OAMSET_CUT_TREE_4                 ; 53
+	const SPRITE_ANIM_OAMSET_EGG_CRACK                  ; 54
+	const SPRITE_ANIM_OAMSET_EGG_HATCH                  ; 55
+	const SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_1           ; 56
+	const SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_2           ; 57
+	const SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_3           ; 58
+	const SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_4           ; 59
+	const SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_5           ; 5a
+	const SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2            ; 5b
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_1            ; 5c
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_2            ; 5d
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_3            ; 5e
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_4            ; 5f
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_5            ; 60
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_6            ; 61
+	const SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_7            ; 62
+	const SPRITE_ANIM_OAMSET_BLUE_WALK_1                ; 63
+	const SPRITE_ANIM_OAMSET_BLUE_WALK_2                ; 64
+	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1        ; 65
+	const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2        ; 66
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_CABLE_BULGE_1 ; 67
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_CABLE_BULGE_2 ; 68
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_1        ; 69
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_2        ; 6a
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_3        ; 6b
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_SENT_PULSE    ; 6c
+	const SPRITE_ANIM_OAMSET_MOBILE_TRADE_OT_PULSE      ; 6d
+	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1            ; 6e
+	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2            ; 6f
+	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3            ; 70
+	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4            ; 71
+	const SPRITE_ANIM_OAMSET_INTRO_PICHU_1              ; 72
+	const SPRITE_ANIM_OAMSET_INTRO_PICHU_2              ; 73
+	const SPRITE_ANIM_OAMSET_INTRO_PICHU_3              ; 74
+	const SPRITE_ANIM_OAMSET_INTRO_WOOPER               ; 75
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_1              ; 76
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_2              ; 77
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_3              ; 78
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1          ; 79
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2          ; 7a
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3          ; 7b
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4          ; 7c
+	const SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5          ; 7d
+	const SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY         ; 7e
+	const SPRITE_ANIM_OAMSET_CELEBI_1                   ; 7f
+	const SPRITE_ANIM_OAMSET_CELEBI_2                   ; 80
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1           ; 81
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2           ; 82
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3           ; 83
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4           ; 84
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5           ; 85
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6           ; 86
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7           ; 87
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8           ; 88
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9           ; 89
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10          ; 8a
+	const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11          ; 8b
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -1,5 +1,5 @@
 ; sprite ids
-; OverworldSprites indexes (see gfx/sprite_data.asm)
+; OverworldSprites indexes (see data/sprites.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 data/sprite_mons.asm)
+; SpriteMons indexes (see data/sprites/sprite_mons.asm)
 const_value set $80
 SPRITE_POKEMON EQU const_value
 	const SPRITE_UNOWN ; 80
--- a/constants/sprite_data_constants.asm
+++ b/constants/sprite_data_constants.asm
@@ -1,4 +1,4 @@
-; overworld_sprite struct members (see gfx/sprite_data.asm)
+; overworld_sprite struct members (see data/sprites.asm)
 	const_def
 	const SPRITEDATA_ADDR    ; 0
 	const SPRITEDATA_ADDR_HI ; 1
@@ -26,6 +26,7 @@
 	const PAL_OW_ROCK   ; 7
 
 ; object_events set bit 3 so as not to use the sprite's default palette
+; MapObjectPals indexes (see gfx/overworld/npc_sprites.pal)
 const_value set (1 << 3)
 	const PAL_NPC_RED    ; 8
 	const PAL_NPC_BLUE   ; 9
@@ -36,7 +37,7 @@
 	const PAL_NPC_TREE   ; e
 	const PAL_NPC_ROCK   ; f
 
-; SpriteMovementData indexes (see data/map_objects.asm)
+; SpriteMovementData indexes (see data/sprites/map_objects.asm)
 	const_def
 	const SPRITEMOVEDATA_00                   ; 00
 	const SPRITEMOVEDATA_ITEM_TREE            ; 01
@@ -158,7 +159,7 @@
 	const OBJECT_ACTION_GRASS_SHAKE  ; 0f
 	const OBJECT_ACTION_SKYFALL      ; 10
 
-; Facings indexes (see data/facings.asm)
+; Facings indexes (see data/sprites/facings.asm)
 	const_def
 	const FACING_STEP_DOWN_0    ; 00
 	const FACING_STEP_DOWN_1    ; 01
--- a/constants/text_constants.asm
+++ b/constants/text_constants.asm
@@ -1,22 +1,23 @@
 ; name lengths
-NAME_LENGTH        EQU 11
-PLAYER_NAME_LENGTH EQU 8
-BOX_NAME_LENGTH    EQU 9
-PKMN_NAME_LENGTH   EQU 11
-MOVE_NAME_LENGTH   EQU 13
-ITEM_NAME_LENGTH   EQU 13
+NAME_LENGTH          EQU 11
+PLAYER_NAME_LENGTH   EQU 8
+BOX_NAME_LENGTH      EQU 9
+MON_NAME_LENGTH      EQU 11
+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/names.asm)
-PKMN_NAME     EQU 1
-MOVE_NAME     EQU 2
-; dummied out EQU 3
-ITEM_NAME     EQU 4
-PARTY_OT_NAME EQU 5
-ENEMY_OT_NAME EQU 6
-TRAINER_NAME  EQU 7
-; broken ptr  EQU 8
+const_value set 1
+	const MON_NAME              ; 1
+	const MOVE_NAME             ; 2
+	const DUMMY_NAME            ; 3
+	const ITEM_NAME             ; 4
+	const PARTY_OT_NAME         ; 5
+	const ENEMY_OT_NAME         ; 6
+	const TRAINER_NAME          ; 7
+	const MOVE_DESC_NAME_BROKEN ; 8
 
 ; see home/text.asm
 BORDER_WIDTH   EQU 2
@@ -39,3 +40,7 @@
 PRINTNUM_MONEY          EQU 1 << PRINTNUM_MONEY_F
 PRINTNUM_RIGHTALIGN     EQU 1 << PRINTNUM_RIGHTALIGN_F
 PRINTNUM_LEADINGZEROS   EQU 1 << PRINTNUM_LEADINGZEROS_F
+
+; character sets (see charmap.asm)
+FIRST_REGULAR_TEXT_CHAR EQU $60
+FIRST_HIRAGANA_DAKUTEN_CHAR EQU $20
--- a/constants/tileset_constants.asm
+++ b/constants/tileset_constants.asm
@@ -1,28 +1,28 @@
-; Tilesets indexes (see tilesets/tilesets.asm)
+; Tilesets indexes (see data/tilesets.asm)
 const_value set 1
-	const TILESET_JOHTO_1              ; 01
-	const TILESET_JOHTO_2              ; 02
+	const TILESET_JOHTO                ; 01
+	const TILESET_JOHTO_MODERN         ; 02
 	const TILESET_KANTO                ; 03
 	const TILESET_BATTLE_TOWER_OUTSIDE ; 04
-	const TILESET_HOUSE_1              ; 05
+	const TILESET_HOUSE                ; 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_FACILITY             ; 0b
 	const TILESET_MART                 ; 0c
-	const TILESET_CELADON_MANSION      ; 0d
+	const TILESET_MANSION              ; 0d
 	const TILESET_GAME_CORNER          ; 0e
-	const TILESET_GYM_1                ; 0f
-	const TILESET_KURTS_HOUSE          ; 10
+	const TILESET_ELITE_FOUR_ROOM      ; 0f
+	const TILESET_TRADITIONAL_HOUSE    ; 10
 	const TILESET_TRAIN_STATION        ; 11
-	const TILESET_OLIVINE_GYM          ; 12
+	const TILESET_CHAMPIONS_ROOM       ; 12
 	const TILESET_LIGHTHOUSE           ; 13
-	const TILESET_PLAYERS_HOUSE_2F     ; 14
+	const TILESET_PLAYERS_ROOM         ; 14
 	const TILESET_POKECOM_CENTER       ; 15
 	const TILESET_BATTLE_TOWER         ; 16
-	const TILESET_SPROUT_TOWER         ; 17
+	const TILESET_TOWER                ; 17
 	const TILESET_CAVE                 ; 18
 	const TILESET_PARK                 ; 19
 	const TILESET_RUINS_OF_ALPH        ; 1a
@@ -29,8 +29,8 @@
 	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_DARK_CAVE            ; 1e
+	const TILESET_FOREST               ; 1f
 	const TILESET_BETA_WORD_ROOM       ; 20
 	const TILESET_HO_OH_WORD_ROOM      ; 21
 	const TILESET_KABUTO_WORD_ROOM     ; 22
@@ -37,7 +37,8 @@
 	const TILESET_OMANYTE_WORD_ROOM    ; 23
 	const TILESET_AERODACTYL_WORD_ROOM ; 24
 
-; bg palette values (see tilesets/*_palette_map.asm)
+; bg palette values (see gfx/tilesets/*_palette_map.asm)
+; TilesetBGPalette indexes (see gfx/tilesets/bg_tiles.pal)
 	const_def
 	const PAL_BG_GRAY   ; 0
 	const PAL_BG_RED    ; 1
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -12,6 +12,7 @@
 ; - TrainerEncounterMusic (see data/trainers/encounter_music.asm)
 ; - TrainerPicPointers (see data/trainers/pic_pointers.asm)
 ; - TrainerPalettes (see data/trainers/palettes.asm)
+; - BTTrainerClassSprites (see data/trainers/sprites.asm)
 ; - BTTrainerClassGenders (see data/trainers/genders.asm)
 ; trainer constants are Trainers indexes, for the sub-tables of TrainerGroups (see data/trainers/parties.asm)
 	enum_start
@@ -25,20 +26,28 @@
 
 KRIS EQU __enum__
 	trainerclass FALKNER ; 1
+	const FALKNER1
 
 	trainerclass WHITNEY ; 2
+	const WHITNEY1
 
 	trainerclass BUGSY ; 3
+	const BUGSY1
 
 	trainerclass MORTY ; 4
+	const MORTY1
 
 	trainerclass PRYCE ; 5
+	const PRYCE1
 
 	trainerclass JASMINE ; 6
+	const JASMINE1
 
 	trainerclass CHUCK ; 7
+	const CHUCK1
 
 	trainerclass CLAIR ; 8
+	const CLAIR1
 
 	trainerclass RIVAL1 ; 9
 	const RIVAL1_1_CHIKORITA
@@ -60,6 +69,7 @@
 	trainerclass POKEMON_PROF ; a
 
 	trainerclass WILL ; b
+	const WILL1
 
 	trainerclass CAL ; c
 	const CAL1
@@ -67,19 +77,25 @@
 	const CAL3
 
 	trainerclass BRUNO ; d
+	const BRUNO1
 
 	trainerclass KAREN ; e
+	const KAREN1
 
 	trainerclass KOGA ; f
+	const KOGA1
 
 	trainerclass CHAMPION ; 10
 	const LANCE
 
 	trainerclass BROCK ; 11
+	const BROCK1
 
 	trainerclass MISTY ; 12
+	const MISTY1
 
 	trainerclass LT_SURGE ; 13
+	const LT_SURGE1
 
 	trainerclass SCIENTIST ; 14
 	const ROSS
@@ -89,6 +105,7 @@
 	const RICH
 
 	trainerclass ERIKA ; 15
+	const ERIKA1
 
 	trainerclass YOUNGSTER ; 16
 	const JOEY1
@@ -173,6 +190,7 @@
 	const DANA5
 
 	trainerclass JANINE ; 1a
+	const JANINE1
 
 	trainerclass COOLTRAINERM ; 1b
 	const NICK
@@ -305,6 +323,7 @@
 	const SHIRLEY
 
 	trainerclass SABRINA ; 23
+	const SABRINA1
 
 	trainerclass BUG_CATCHER ; 24
 	const DON
@@ -477,6 +496,7 @@
 	const GLENN
 
 	trainerclass BLAINE ; 2e
+	const BLAINE1
 
 	trainerclass BURGLAR ; 2f
 	const DUNCAN
@@ -661,8 +681,10 @@
 	const JAIME
 
 	trainerclass RED ; 3f
+	const RED1
 
 	trainerclass BLUE ; 40
+	const BLUE1
 
 	trainerclass OFFICER ; 41
 	const KEITH
--- a/constants/type_constants.asm
+++ b/constants/type_constants.asm
@@ -1,7 +1,8 @@
-; TypeNames indexes (see data/type_names.asm)
+; TypeNames indexes (see data/types/names.asm)
 ; also used in:
-; - TypeMatchups (see data/type_matchups.asm)
-; - Pokedex_SearchForMons.TypeConversionTable and Pokedex_PlaceSearchScreenTypeStrings.TypeStrings (see engine/pokedex.asm)
+; - PokedexTypeSearchConversionTable (see data/types/search_types.asm)
+; - PokedexTypeSearchStrings (see data/types/search_strings.asm)
+; - TypeMatchups (see data/battle/type_matchups.asm)
 	const_def
 
 PHYSICAL EQU const_value
@@ -38,5 +39,6 @@
 	const ICE
 	const DRAGON
 	const DARK
-
 TYPES_END EQU const_value
+
+NUM_TYPES EQU TYPES_END + UNUSED_TYPES - UNUSED_TYPES_END
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -28,6 +28,7 @@
 	const FRAME_6 ; 5
 	const FRAME_7 ; 6
 	const FRAME_8 ; 7
+NUM_FRAMES EQU const_value
 
 ; TextBoxFlags:
 	const_def
@@ -52,6 +53,7 @@
 	const UP       ; 1
 	const LEFT     ; 2
 	const RIGHT    ; 3
+NUM_DIRECTIONS EQU const_value
 
 DOWN_MASK  EQU 1 << DOWN
 UP_MASK    EQU 1 << UP
@@ -71,6 +73,7 @@
 	const DAY_F      ; 1
 	const NITE_F     ; 2
 	const DARKNESS_F ; 3
+NUM_DAYTIMES EQU const_value
 
 MORN     EQU 1 << MORN_F
 DAY      EQU 1 << DAY_F
@@ -77,6 +80,8 @@
 NITE     EQU 1 << NITE_F
 DARKNESS EQU 1 << DARKNESS_F
 
+ANYTIME EQU MORN | DAY | NITE
+
 ; ScriptFlags: ; d434
 SCRIPT_RUNNING EQU 2
 
@@ -115,9 +120,6 @@
 PLAYER_SKATE     EQU 2
 PLAYER_SURF      EQU 4
 PLAYER_SURF_PIKA EQU 8
-
-OBJECT_STRUCT_LENGTH EQU 40
-NUM_OBJECT_STRUCTS EQU 13
 
 ; After-Champion Spawn
 SPAWN_LANCE EQU 1
--- /dev/null
+++ b/data/battle/accuracy_multipliers.asm
@@ -1,0 +1,17 @@
+; Multiplier ratios for accuracy from modifier -6 to +6
+; (for other stats, see data/battle/stat_multipliers.asm)
+
+AccuracyLevelMultipliers:
+	db  33, 100 ; -6 =  33%
+	db  36, 100 ; -5 =  36%
+	db  43, 100 ; -4 =  43%
+	db  50, 100 ; -3 =  50%
+	db  60, 100 ; -2 =  60%
+	db  75, 100 ; -1 =  75%
+	db   1,   1 ;  0 = 100%
+	db 133, 100 ; +1 = 133%
+	db 166, 100 ; +2 = 166%
+	db   2,   1 ; +3 = 200%
+	db 233, 100 ; +4 = 233%
+	db 133,  50 ; +5 = 266%
+	db   3,   1 ; +6 = 300%
--- /dev/null
+++ b/data/battle/battle_text.asm
@@ -1,0 +1,1293 @@
+BattleText::
+
+BattleText_PlayerPickedUpPayDayMoney: ; 0x80730
+	text "<PLAYER> picked up"
+	line "¥@"
+	deciram wPayDayMoney, 3, 6
+	text "!"
+	prompt
+; 0x80746
+
+WildPokemonAppearedText: ; 0x80746
+	text "Wild @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "appeared!"
+	prompt
+; 0x8075c
+
+HookedPokemonAttackedText: ; 0x8075c
+	text "The hooked"
+	line "@"
+	text_from_ram EnemyMonNick
+	text_start
+	cont "attacked!"
+	prompt
+; 0x80778
+
+PokemonFellFromTreeText: ; 0x80778
+	text_from_ram EnemyMonNick
+	text " fell"
+	line "out of the tree!"
+	prompt
+; 0x80793
+
+WildCelebiAppearedText: ; 0x80793
+	text "Wild @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "appeared!"
+	prompt
+; 0x807a9
+
+WantsToBattleText:: ; 0x807a9
+	text "<ENEMY>"
+	line "wants to battle!"
+	prompt
+; 0x807bd
+
+BattleText_WildFled: ; 0x807bd
+	text "Wild @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "fled!"
+	prompt
+; 0x807cf
+
+BattleText_EnemyFled: ; 0x807cf
+	text "Enemy @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "fled!"
+	prompt
+; 0x807e2
+
+HurtByPoisonText: ; 0x807e2
+	text "<USER>"
+	line "is hurt by poison!"
+	prompt
+; 0x807f8
+
+HurtByBurnText: ; 0x807f8
+	text "<USER>'s"
+	line "hurt by its burn!"
+	prompt
+; 0x8080e
+
+LeechSeedSapsText: ; 0x8080e
+	text "LEECH SEED saps"
+	line "<USER>!"
+	prompt
+; 0x80822
+
+HasANightmareText: ; 0x80822
+	text "<USER>"
+	line "has a NIGHTMARE!"
+	prompt
+; 0x80836
+
+HurtByCurseText: ; 0x80836
+	text "<USER>'s"
+	line "hurt by the CURSE!"
+	prompt
+; 0x8084d
+
+SandstormHitsText: ; 0x8084d
+	text "The SANDSTORM hits"
+	line "<USER>!"
+	prompt
+; 0x80864
+
+PerishCountText: ; 0x80864
+	text "<USER>'s"
+	line "PERISH count is @"
+	deciram wd265, 1, 1
+	text "!"
+	prompt
+; 0x80880
+
+BattleText_TargetRecoveredWithItem: ; 0x80880
+	text "<TARGET>"
+	line "recovered with"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+; 0x80899
+
+BattleText_UserRecoveredPPUsing: ; 0x80899
+	text "<USER>"
+	line "recovered PP using"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+; 0x808b6
+
+BattleText_TargetWasHitByFutureSight: ; 0x808b6
+	text "<TARGET>"
+	line "was hit by FUTURE"
+	cont "SIGHT!"
+	prompt
+; 0x808d2
+
+BattleText_SafeguardFaded: ; 0x808d2
+	text "<USER>'s"
+	line "SAFEGUARD faded!"
+	prompt
+; 0x808e7
+
+BattleText_PkmnLightScreenFell: ; 0x808e7
+	text_from_ram StringBuffer1
+	text " #MON's"
+	line "LIGHT SCREEN fell!"
+	prompt
+; 0x80905
+
+BattleText_PkmnReflectFaded: ; 0x80905
+	text_from_ram StringBuffer1
+	text " #MON's"
+	line "REFLECT faded!"
+	prompt
+; 0x8091f
+
+BattleText_RainContinuesToFall: ; 0x8091f
+	text "Rain continues to"
+	line "fall."
+	prompt
+; 0x80938
+
+BattleText_TheSunlightIsStrong: ; 0x80938
+	text "The sunlight is"
+	line "strong."
+	prompt
+; 0x80951
+
+BattleText_TheSandstormRages: ; 0x80951
+	text "The SANDSTORM"
+	line "rages."
+	prompt
+; 0x80967
+
+BattleText_TheRainStopped: ; 0x80967
+	text "The rain stopped."
+	prompt
+; 0x8097a
+
+BattleText_TheSunlightFaded: ; 0x8097a
+	text "The sunlight"
+	line "faded."
+	prompt
+; 0x8098f
+
+BattleText_TheSandstormSubsided: ; 0x8098f
+	text "The SANDSTORM"
+	line "subsided."
+	prompt
+; 0x809a8
+
+BattleText_EnemyPkmnFainted: ; 0x809a8
+	text "Enemy @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "fainted!"
+	prompt
+; 0x809be
+
+GotMoneyForWinningText:
+	text "<PLAYER> got ¥@"
+	deciram wBattleReward, 3, 6
+	text_start
+	line "for winning!"
+	prompt
+
+BattleText_EnemyWasDefeated: ; 0x809da
+	text "<ENEMY>"
+	line "was defeated!"
+	prompt
+; 0x809eb
+
+TiedAgainstText: ; 0x809eb
+	text "Tied against"
+	line "<ENEMY>!"
+	prompt
+; 0x809fc
+
+SentSomeToMomText:
+	text "<PLAYER> got ¥@"
+	deciram wBattleReward, 3, 6
+	text_start
+	line "for winning!"
+	cont "Sent some to MOM!"
+	prompt
+
+SentHalfToMomText:
+	text "Sent half to MOM!"
+	prompt
+
+SentAllToMomText:
+	text "Sent all to MOM!"
+	prompt
+
+BattleText_0x80a4f: ; 0x80a4f
+	text "<RIVAL>: Huh? I"
+	line "should've chosen"
+	cont "your #MON!"
+	prompt
+; 0x80a75
+
+BattleText_PkmnFainted: ; 0x80a75
+	text_from_ram BattleMonNick
+	text_start
+	line "fainted!"
+	prompt
+; 0x80a83
+
+BattleText_UseNextMon: ; 0x80a83
+	text "Use next #MON?"
+	done
+; 0x80a93
+
+BattleText_0x80a93: ; 0x80a93
+	text "<RIVAL>: Yes!"
+	line "I guess I chose a"
+	cont "good #MON!"
+	prompt
+; 0x80ab9
+
+LostAgainstText: ; 0x80ab9
+	text "Lost against"
+	line "<ENEMY>!"
+	prompt
+; 0x80aca
+
+BattleText_EnemyIsAboutToUseWillPlayerChangePkmn: ; 0x80aca
+	text "<ENEMY>"
+	line "is about to use"
+	cont "@"
+	text_from_ram EnemyMonNick
+	text "."
+
+	para "Will <PLAYER>"
+	line "change #MON?"
+	done
+; 0x80af8
+
+BattleText_EnemySentOut: ; 0x80af8
+	text "<ENEMY>"
+	line "sent out"
+	cont "@"
+	text_from_ram EnemyMonNick
+	text "!"
+	done
+; 0x80b0b
+
+BattleText_TheresNoWillToBattle: ; 0x80b0b
+	text "There's no will to"
+	line "battle!"
+	prompt
+; 0x80b26
+
+BattleText_AnEGGCantBattle: ; 0x80b26
+	text "An EGG can't"
+	line "battle!"
+	prompt
+; 0x80b3b
+
+BattleText_CantEscape2: ; 0x80b3b
+	text "Can't escape!"
+	prompt
+; 0x80b49
+
+BattleText_TheresNoEscapeFromTrainerBattle: ; 0x80b49
+	text "No! There's no"
+	line "running from a"
+	cont "trainer battle!"
+	prompt
+
+BattleText_GotAwaySafely: ; 0x80b77
+	text "Got away safely!"
+	prompt
+
+BattleText_UserFledUsingAStringBuffer1: ; 0x80b89
+	text "<USER>"
+	line "fled using a"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x80ba0
+
+BattleText_CantEscape: ; 0x80ba0
+	text "Can't escape!"
+	prompt
+; 0x80bae
+
+BattleText_UserHurtBySpikes: ; 0x80bae
+	text "<USER>'s"
+	line "hurt by SPIKES!"
+	prompt
+; 0x80bc2
+
+RecoveredUsingText: ; 0x80bc2
+	text "<TARGET>"
+	line "recovered using a"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x80bde
+
+BattleText_UsersStringBuffer1Activated: ; 0x80bde
+	text "<USER>'s"
+	line "@"
+	text_from_ram StringBuffer1
+	text_start
+	cont "activated!"
+	prompt
+; 0x80bf3
+
+BattleText_ItemsCantBeUsedHere: ; 0x80bf3
+	text "Items can't be"
+	line "used here."
+	prompt
+; 0x80c0d
+
+BattleText_PkmnIsAlreadyOut: ; 0x80c0d
+	text_from_ram BattleMonNick
+	text_start
+	line "is already out."
+	prompt
+; 0x80c22
+
+BattleText_PkmnCantBeRecalled: ; 0x80c22
+	text_from_ram BattleMonNick
+	text_start
+	line "can't be recalled!"
+	prompt
+; 0x80c39
+
+BattleText_TheresNoPPLeftForThisMove: ; 0x80c39
+	text "There's no PP left"
+	line "for this move!"
+	prompt
+; 0x80c5b
+
+BattleText_TheMoveIsDisabled: ; 0x80c5b
+	text "The move is"
+	line "DISABLED!"
+	prompt
+; 0x80c72
+
+BattleText_PkmnHasNoMovesLeft: ; 0x80c72
+	text_from_ram BattleMonNick
+	text_start
+	line "has no moves left!"
+	done
+; 0x80c8a
+
+BattleText_TargetsEncoreEnded: ; 0x80c8a
+	text "<TARGET>'s"
+	line "ENCORE ended!"
+	prompt
+; 0x80c9c
+
+BattleText_StringBuffer1GrewToLevel: ; 0x80c9c
+	text_from_ram StringBuffer1
+	text " grew to"
+	line "level @"
+	deciram CurPartyLevel, 1, 3
+	text "!@"
+	sound_dex_fanfare_50_79
+	db "@@"
+; 0x80cb9
+
+BattleText_WildPkmnIsEating: ; 0x80cba
+	text "Wild @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "is eating!"
+	prompt
+; 0x80cd1
+
+BattleText_WildPkmnIsAngry: ; 0x80cd1
+	text "Wild @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "is angry!"
+	prompt
+; 0x80ce7
+
+FastAsleepText: ; 0x80ce7
+	text "<USER>"
+	line "is fast asleep!"
+	prompt
+; 0x80cfa
+
+WokeUpText: ; 0x80cfa
+	text "<USER>"
+	line "woke up!"
+	prompt
+; 0x80d06
+
+FrozenSolidText: ; 0x80d06
+	text "<USER>"
+	line "is frozen solid!"
+	prompt
+; 0x80d1a
+
+FlinchedText: ; 0x80d1a
+	text "<USER>"
+	line "flinched!"
+	prompt
+; 0x80d27
+
+MustRechargeText: ; 0x80d27
+	text "<USER>"
+	line "must recharge!"
+	prompt
+; 0x80d39
+
+DisabledNoMoreText: ; 0x80d39
+	text "<USER>'s"
+	line "disabled no more!"
+	prompt
+; 0x80d4f
+
+IsConfusedText: ; 0x80d4f
+	text "<USER>"
+	line "is confused!"
+	prompt
+; 0x80d5f
+
+HurtItselfText: ; 0x80d5f
+	text "It hurt itself in"
+	line "its confusion!"
+	prompt
+; 0x80d81
+
+ConfusedNoMoreText: ; 0x80d81
+	text "<USER>'s"
+	line "confused no more!"
+	prompt
+; 0x80d97
+
+BecameConfusedText: ; 0x80d97
+	text "<TARGET>"
+	line "became confused!"
+	prompt
+; ItemHealedConfusion
+
+BattleText_ItemHealedConfusion: ; ItemHealedConfusion
+	text "A @"
+	text_from_ram StringBuffer1
+	text " rid"
+	line "<TARGET>"
+	cont "of its confusion."
+	prompt
+; 0x80dcc
+
+AlreadyConfusedText: ; 0x80dcc
+	text "<TARGET>'s"
+	line "already confused!"
+	prompt
+; 0x80de2
+
+BattleText_UsersHurtByStringBuffer1: ; 0x80de2
+	text "<USER>'s"
+	line "hurt by"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x80df5
+
+BattleText_UserWasReleasedFromStringBuffer1: ; 0x80df5
+	text "<USER>"
+	line "was released from"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x80e11
+
+UsedBindText: ; 0x80e11
+	text "<USER>"
+	line "used BIND on"
+	cont "<TARGET>!"
+	prompt
+; 0x80e24
+
+WhirlpoolTrapText: ; 0x80e24
+	text "<TARGET>"
+	line "was trapped!"
+	prompt
+; 0x80e34
+
+FireSpinTrapText: ; 0x80e34
+	text "<TARGET>"
+	line "was trapped!"
+	prompt
+; 0x80e44
+
+WrappedByText: ; 0x80e44
+	text "<TARGET>"
+	line "was WRAPPED by"
+	cont "<USER>!"
+	prompt
+; 0x80e59
+
+ClampedByText: ; 0x80e59
+	text "<TARGET>"
+	line "was CLAMPED by"
+	cont "<USER>!"
+	prompt
+; 0x80e6e
+
+StoringEnergyText: ; 0x80e6e
+	text "<USER>"
+	line "is storing energy!"
+	prompt
+; 0x80e84
+
+UnleashedEnergyText: ; 0x80e84
+	text "<USER>"
+	line "unleashed energy!"
+	prompt
+; 0x80e99
+
+HungOnText: ; 0x80e99
+	text "<TARGET>"
+	line "hung on with"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x80eb0
+
+EnduredText: ; 0x80eb0
+	text "<TARGET>"
+	line "ENDURED the hit!"
+	prompt
+; 0x80ec4
+
+InLoveWithText: ; 0x80ec4
+	text "<USER>"
+	line "is in love with"
+	cont "<TARGET>!"
+	prompt
+; 0x80eda
+
+InfatuationText: ; 0x80eda
+	text "<USER>'s"
+	line "infatuation kept"
+	cont "it from attacking!"
+	prompt
+; 0x80f02
+
+DisabledMoveText: ; 0x80f02
+	text "<USER>'s"
+	line "@"
+	text_from_ram StringBuffer1
+	text " is"
+	cont "DISABLED!"
+	prompt
+; 0x80f19
+
+LoafingAroundText: ; 0x80f19
+	text_from_ram BattleMonNick
+	text " is"
+	line "loafing around."
+	prompt
+; 0x80f31
+
+BeganToNapText: ; 0x80f31
+	text_from_ram BattleMonNick
+	text " began"
+	line "to nap!"
+	prompt
+; 0x80f44
+
+WontObeyText: ; 0x80f44
+	text_from_ram BattleMonNick
+	text " won't"
+	line "obey!"
+	prompt
+; 0x80f54
+
+TurnedAwayText: ; 0x80f54
+	text_from_ram BattleMonNick
+	text " turned"
+	line "away!"
+	prompt
+; 0x80f66
+
+IgnoredOrdersText: ; 0x80f66
+	text_from_ram BattleMonNick
+	text " ignored"
+	line "orders!"
+	prompt
+; 0x80f7b
+
+IgnoredSleepingText: ; 0x80f7b
+	text_from_ram BattleMonNick
+	text " ignored"
+	line "orders…sleeping!"
+	prompt
+; 0x80f99
+
+NoPPLeftText: ; 0x80f99
+	text "But no PP is left"
+	line "for the move!"
+	prompt
+; 0x80fba
+
+HasNoPPLeftText: ; 0x80fba
+	text "<USER>"
+	line "has no PP left for"
+	cont "@"
+	text_from_ram StringBuffer2
+	text "!"
+	prompt
+; 0x80fd7
+
+WentToSleepText: ; 0x80fd7
+	text "<USER>"
+	line "went to sleep!"
+	done
+; 0x80fe9
+
+RestedText: ; 0x80fe9
+	text "<USER>"
+	line "fell asleep and"
+	cont "became healthy!"
+	done
+; 0x8100c
+
+RegainedHealthText: ; 0x8100c
+	text "<USER>"
+	line "regained health!"
+	prompt
+; 0x81020
+
+AttackMissedText: ; 0x81020
+	text "<USER>'s"
+	line "attack missed!"
+	prompt
+; 0x81033
+
+AttackMissed2Text: ; 0x81033
+	text "<USER>'s"
+	line "attack missed!"
+	prompt
+; 0x81046
+
+CrashedText: ; 0x81046
+	text "<USER>"
+	line "kept going and"
+	cont "crashed!"
+	prompt
+; 0x81061
+
+UnaffectedText: ; 0x81061
+	text "<TARGET>'s"
+	line "unaffected!"
+	prompt
+; 0x81071
+
+DoesntAffectText: ; 0x81071
+	text "It doesn't affect"
+	line "<TARGET>!"
+	prompt
+; 0x81086
+
+CriticalHitText: ; 0x81086
+	text "A critical hit!"
+	prompt
+; 0x81097
+
+OneHitKOText: ; 0x81097
+	text "It's a one-hit KO!"
+	prompt
+; 0x810aa
+
+SuperEffectiveText: ; 0x810aa
+	text "It's super-"
+	line "effective!"
+	prompt
+; 0x810c1
+
+NotVeryEffectiveText: ; 0x810c1
+	text "It's not very"
+	line "effective…"
+	prompt
+; 0x810da
+
+TookDownWithItText: ; 0x810da
+	text "<TARGET>"
+	line "took down with it,"
+	cont "<USER>!"
+	prompt
+; 0x810f3
+
+RageBuildingText: ; 0x810f3
+	text "<USER>'s"
+	line "RAGE is building!"
+	prompt
+; 0x81109
+
+GotAnEncoreText: ; 0x81109
+	text "<TARGET>"
+	line "got an ENCORE!"
+	prompt
+; 0x8111b
+
+SharedPainText: ; 0x8111b
+	text "The battlers"
+	line "shared pain!"
+	prompt
+; 0x81136
+
+TookAimText: ; 0x81136
+	text "<USER>"
+	line "took aim!"
+	prompt
+; 0x81143
+
+SketchedText: ; 0x81143
+	text "<USER>"
+	line "SKETCHED"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x81156
+
+DestinyBondEffectText: ; 0x81156
+	text "<USER>'s"
+	line "trying to take its"
+	cont "opponent with it!"
+	prompt
+; 0x8117f
+
+SpiteEffectText: ; 0x8117f
+	text "<TARGET>'s"
+	line "@"
+	text_from_ram StringBuffer1
+	text " was"
+	cont "reduced by @"
+	deciram wd265, 1, 1
+	text "!"
+	prompt
+; 0x811a0
+
+BellChimedText: ; 0x811a0
+	text "A bell chimed!"
+	line ""
+	prompt
+; 0x811b1
+
+FellAsleepText: ; 0x811b1
+	text "<TARGET>"
+	line "fell asleep!"
+	prompt
+; 0x811c1
+
+AlreadyAsleepText: ; 0x811c1
+	text "<TARGET>'s"
+	line "already asleep!"
+	prompt
+; 0x811d5
+
+WasPoisonedText: ; 0x811d5
+	text "<TARGET>"
+	line "was poisoned!"
+	prompt
+; 0x811e6
+
+BadlyPoisonedText: ; 0x811e6
+	text "<TARGET>'s"
+	line "badly poisoned!"
+	prompt
+; 0x811fa
+
+AlreadyPoisonedText: ; 0x811fa
+	text "<TARGET>'s"
+	line "already poisoned!"
+	prompt
+; 0x81210
+
+SuckedHealthText: ; 0x81210
+	text "Sucked health from"
+	line "<TARGET>!"
+	prompt
+; 0x81227
+
+DreamEatenText: ; 0x81227
+	text "<TARGET>'s"
+	line "dream was eaten!"
+	prompt
+; 0x8123c
+
+WasBurnedText: ; 0x8123c
+	text "<TARGET>"
+	line "was burned!"
+	prompt
+; 0x8124b
+
+DefrostedOpponentText: ; 0x8124b
+	text "<TARGET>"
+	line "was defrosted!"
+	prompt
+; 0x8125d
+
+WasFrozenText: ; 0x8125d
+	text "<TARGET>"
+	line "was frozen solid!"
+	prompt
+; 0x81272
+
+WontRiseAnymoreText: ; 0x81272
+	text "<USER>'s"
+	line "@"
+	text_from_ram StringBuffer2
+	text " won't"
+	cont "rise anymore!"
+	prompt
+; 0x8128f
+
+WontDropAnymoreText: ; 0x8128f
+	text "<TARGET>'s"
+	line "@"
+	text_from_ram StringBuffer2
+	text " won't"
+	cont "drop anymore!"
+	prompt
+; 0x812ac
+
+FledFromBattleText:: ; 0x812ac
+	text "<USER>"
+	line "fled from battle!"
+	prompt
+; 0x812c1
+
+FledInFearText: ; 0x812c1
+	text "<TARGET>"
+	line "fled in fear!"
+	prompt
+; 0x812d2
+
+BlownAwayText: ; 0x812d2
+	text "<TARGET>"
+	line "was blown away!"
+	prompt
+; 0x812e5
+
+PlayerHitTimesText: ; 0x812e5
+	text "Hit @"
+	deciram PlayerDamageTaken, 1, 1
+	text " times!"
+	prompt
+; 0x812f8
+
+EnemyHitTimesText: ; 0x812f8
+	text "Hit @"
+	deciram EnemyDamageTaken, 1, 1
+	text " times!"
+	prompt
+; 0x8130b
+
+MistText: ; 0x8130b
+	text "<USER>'s"
+	line "shrouded in MIST!"
+	prompt
+; 0x81321
+
+ProtectedByMistText: ; 0x81321
+	text "<TARGET>'s"
+	line "protected by MIST."
+	prompt
+; 0x81338
+
+GettingPumpedText: ; 0x81338
+	interpret_data
+	text "<USER>'s"
+	line "getting pumped!"
+	prompt
+; 0x8134d
+
+RecoilText: ; 0x8134d
+	text "<USER>'s"
+	line "hit with recoil!"
+	prompt
+; 0x81362
+
+MadeSubstituteText: ; 0x81362
+	text "<USER>"
+	line "made a SUBSTITUTE!"
+	prompt
+; 0x81378
+
+HasSubstituteText: ; 0x81378
+	text "<USER>"
+	line "has a SUBSTITUTE!"
+	prompt
+; 0x8138d
+
+TooWeakSubText: ; 0x8138d
+	text "Too weak to make"
+	line "a SUBSTITUTE!"
+	prompt
+; 0x813ad
+
+SubTookDamageText: ; 0x813ad
+	text "The SUBSTITUTE"
+	line "took damage for"
+	cont "<TARGET>!"
+	prompt
+; 0x813d0
+
+SubFadedText: ; 0x813d0
+	text "<TARGET>'s"
+	line "SUBSTITUTE faded!"
+	prompt
+; 0x813e6
+
+LearnedMoveText: ; 0x813e6
+	text "<USER>"
+	line "learned"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x813f8
+
+WasSeededText: ; 0x813f8
+	text "<TARGET>"
+	line "was seeded!"
+	prompt
+; 0x81407
+
+EvadedText: ; 0x81407
+	text "<TARGET>"
+	line "evaded the attack!"
+	prompt
+; 0x8141d
+
+WasDisabledText: ; 0x8141d
+	text "<TARGET>'s"
+	line "@"
+	text_from_ram StringBuffer1
+	text " was"
+	cont "DISABLED!"
+	prompt
+; 0x81435
+
+CoinsScatteredText: ; 0x81435
+	text "Coins scattered"
+	line "everywhere!"
+	prompt
+; 0x81452
+
+TransformedTypeText: ; 0x81452
+	text "<USER>"
+	line "transformed into"
+	cont "the @"
+	text_from_ram StringBuffer1
+	text "-type!"
+	prompt
+; 0x81476
+
+EliminatedStatsText: ; 0x81476
+	text "All stat changes"
+	line "were eliminated!"
+	prompt
+; 0x81499
+
+TransformedText: ; 0x81499
+	text "<USER>"
+	line "TRANSFORMED into"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x814b4
+
+LightScreenEffectText: ; 0x814b4
+	text "<USER>'s"
+	line "SPCL.DEF rose!"
+	prompt
+; 0x814c7
+
+ReflectEffectText: ; 0x814c7
+	text "<USER>'s"
+	line "DEFENSE rose!"
+	prompt
+; 0x814d9
+
+NothingHappenedText: ; 0x814d9
+	text "But nothing"
+	line "happened."
+	prompt
+; 0x814f0
+
+ButItFailedText: ; 0x814f0
+	text "But it failed!"
+	prompt
+; 0x81500
+
+ItFailedText: ; 0x81500
+	text "It failed!"
+	prompt
+; 0x8150c
+
+DidntAffect1Text: ; 0x8150c
+	text "It didn't affect"
+	line "<TARGET>!"
+	prompt
+; 0x81520
+
+DidntAffect2Text: ; 0x81520
+	text "It didn't affect"
+	line "<TARGET>!"
+	prompt
+; 0x81534
+
+HPIsFullText: ; 0x81534
+	text "<USER>'s"
+	line "HP is full!"
+	prompt
+; 0x81544
+
+DraggedOutText: ; 0x81544
+	text "<USER>"
+	line "was dragged out!"
+	prompt
+; 0x81558
+
+ParalyzedText: ; 0x81558
+	text "<TARGET>'s"
+	line "paralyzed! Maybe"
+	cont "it can't attack!"
+	prompt
+; 0x8157d
+
+FullyParalyzedText: ; 0x8157d
+	text "<USER>'s"
+	line "fully paralyzed!"
+	prompt
+; 0x81592
+
+AlreadyParalyzedText: ; 0x81592
+	text "<TARGET>'s"
+	line "already paralyzed!"
+	prompt
+; 0x815a9
+
+ProtectedByText: ; 0x815a9
+	text "<TARGET>'s"
+	line "protected by"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+; 0x815c1
+
+MirrorMoveFailedText: ; 0x815c1
+	text "The MIRROR MOVE"
+	next "failed!"
+	prompt
+; 0x815da
+
+StoleText: ; 0x815da
+	text "<USER>"
+	line "stole @"
+	text_from_ram StringBuffer1
+	text_start
+	cont "from its foe!"
+	prompt
+; 0x815f7
+
+CantEscapeNowText: ; 0x815f7
+	text "<TARGET>"
+	line "can't escape now!"
+	prompt
+; 0x8160b
+
+StartedNightmareText: ; 0x8160b
+	text "<TARGET>"
+	line "started to have a"
+	cont "NIGHTMARE!"
+	prompt
+; 0x8162b
+
+WasDefrostedText: ; 0x8162b
+	text "<USER>"
+	line "was defrosted!"
+	prompt
+; 0x8163d
+
+PutACurseText: ; 0x8163d
+	text "<USER>"
+	line "cut its own HP and"
+
+	para "put a CURSE on"
+	line "<TARGET>!"
+	prompt
+; 0x81665
+
+ProtectedItselfText: ; 0x81665
+	text "<USER>"
+	line "PROTECTED itself!"
+	prompt
+; 0x8167a
+
+ProtectingItselfText: ; 0x8167a
+	text "<TARGET>'s"
+	line "PROTECTING itself!"
+	done
+; 0x81691
+
+SpikesText: ; 0x81691
+	text "SPIKES scattered"
+	line "all around"
+	cont "<TARGET>!"
+	prompt
+; 0x816b1
+
+IdentifiedText: ; 0x816b1
+	text "<USER>"
+	line "identified"
+	cont "<TARGET>!"
+	prompt
+; 0x816c2
+
+StartPerishText: ; 0x816c2
+	text "Both #MON will"
+	line "faint in 3 turns!"
+	prompt
+; 0x816e4
+
+SandstormBrewedText: ; 0x816e4
+	text "A SANDSTORM"
+	line "brewed!"
+	prompt
+; 0x816f9
+
+BracedItselfText: ; 0x816f9
+	text "<USER>"
+	line "braced itself!"
+	prompt
+; 0x8170b
+
+FellInLoveText: ; 0x8170b
+	text "<TARGET>"
+	line "fell in love!"
+	prompt
+; 0x8171c
+
+CoveredByVeilText: ; 0x8171c
+	text "<USER>'s"
+	line "covered by a veil!"
+	prompt
+; 0x81733
+
+SafeguardProtectText: ; 0x81733
+	text "<TARGET>"
+	line "is protected by"
+	cont "SAFEGUARD!"
+	prompt
+; 0x81751
+
+MagnitudeText: ; 0x81751
+	text "Magnitude @"
+	deciram wd265, 1, 1
+	text "!"
+	prompt
+; 0x81764
+
+ReleasedByText: ; 0x81764
+	text "<USER>"
+	line "was released by"
+	cont "<TARGET>!"
+	prompt
+; 0x8177a
+
+ShedLeechSeedText: ; 0x8177a
+	text "<USER>"
+	line "shed LEECH SEED!"
+	prompt
+; 0x8178e
+
+BlewSpikesText: ; 0x8178e
+	text "<USER>"
+	line "blew away SPIKES!"
+	prompt
+; 0x817a3
+
+DownpourText: ; 0x817a3
+	text "A downpour"
+	line "started!"
+	prompt
+; 0x817b8
+
+SunGotBrightText: ; 0x817b8
+	text "The sunlight got"
+	line "bright!"
+	prompt
+; 0x817d2
+
+BellyDrumText: ; 0x817d2
+	text "<USER>"
+	line "cut its HP and"
+	cont "maximized ATTACK!"
+	prompt
+; 0x817f6
+
+CopiedStatsText: ; 0x817f6
+	text "<USER>"
+	line "copied the stat"
+
+	para "changes of"
+	line "<TARGET>!"
+	prompt
+; 0x81817
+
+ForesawAttackText: ; 0x81817
+	text "<USER>"
+	line "foresaw an attack!"
+	prompt
+; 0x8182d
+
+BeatUpAttackText: ; 0x8182d
+	text_from_ram StringBuffer1
+	text "'s"
+	line "attack!"
+	done
+; 0x8183b
+
+RefusedGiftText: ; 0x8183b
+	text "<TARGET>"
+	line "refused the gift!"
+	prompt
+; 0x81850
+
+IgnoredOrders2Text: ; 0x81850
+	text "<USER>"
+	line "ignored orders!"
+	prompt
+; 0x81863
+
+BattleText_LinkErrorBattleCanceled: ; 0x81863
+	text "Link error…"
+
+	para "The battle has"
+	line "been canceled…"
+	prompt
+; 0x8188e
+
+BattleText_0x8188e: ; 0x8188e
+	text "There is no time"
+	line "left today!"
+	done
+; 0x818ac
--- /dev/null
+++ b/data/battle/critical_hits.asm
@@ -1,0 +1,18 @@
+CriticalHitMoves:
+	db KARATE_CHOP
+	db RAZOR_WIND
+	db RAZOR_LEAF
+	db CRABHAMMER
+	db SLASH
+	db AEROBLAST
+	db CROSS_CHOP
+	db -1
+
+CriticalHitChances:
+	db  7 percent     ;  0
+	db 12 percent + 2 ; +1
+	db 25 percent + 1 ; +2
+	db 33 percent + 1 ; +3
+	db 50 percent + 1 ; +4
+	db 50 percent + 1 ; +5
+	db 50 percent + 1 ; +6
--- /dev/null
+++ b/data/battle/effect_command_pointers.asm
@@ -1,0 +1,182 @@
+; battle commands are defined in engine/battle/effect_commands.asm
+
+	dw 0 ; padding
+
+BattleCommandPointers: ; 3fd28
+; entries correspond to macros/scripts/battle_commands.asm
+	dw BattleCommand_CheckTurn ; 34084
+	dw BattleCommand_CheckObedience ; 343db
+	dw BattleCommand_UsedMoveText ; 34541
+	dw BattleCommand_DoTurn ; 34555
+	dw BattleCommand_Critical ; 34631
+	dw BattleCommand_DamageStats ; 352dc
+	dw BattleCommand_Stab ; 346d2 - 07
+	dw BattleCommand_DamageVariation ; 34cfd
+	dw BattleCommand_CheckHit ; 34d32
+	dw BattleCommand_LowerSub ; 34eee
+	dw BattleCommand_HitTargetNoSub ; 34f60
+	dw BattleCommand_RaiseSub ; 35004
+	dw BattleCommand_FailureText ; 35023
+	dw BattleCommand_CheckFaint ; 3505e
+	dw BattleCommand_CriticalText ; 35175
+	dw BattleCommand_SuperEffectiveText ; 351ad
+	dw BattleCommand_CheckDestinyBond ; 351c0
+	dw BattleCommand_BuildOpponentRage ; 35250
+	dw BattleCommand_PoisonTarget ; 35eee
+	dw BattleCommand_SleepTarget ; 35e5c
+	dw BattleCommand_DrainTarget ; 35fff
+	dw BattleCommand_EatDream ; 36008
+	dw BattleCommand_BurnTarget ; 3608c
+	dw BattleCommand_FreezeTarget ; 36102
+	dw BattleCommand_ParalyzeTarget ; 36165
+	dw BattleCommand_Selfdestruct ; 37380
+	dw BattleCommand_MirrorMove ; 373c9
+	dw BattleCommand_StatUp ; 361e4
+	dw BattleCommand_StatDown ; 362e3
+	dw BattleCommand_PayDay ; 3705c
+	dw BattleCommand_Conversion ; 3707f
+	dw BattleCommand_ResetStats ; 3710e
+	dw BattleCommand_StoreEnergy ; 36671
+	dw BattleCommand_UnleashEnergy ; 366e5
+	dw BattleCommand_ForceSwitch ; 3680f
+	dw BattleCommand_EndLoop ; 369b6
+	dw BattleCommand_FlinchTarget ; 36aa0
+	dw BattleCommand_OHKO ; 36af3
+	dw BattleCommand_Recoil ; 36cb2
+	dw BattleCommand_Mist ; 36c7e
+	dw BattleCommand_FocusEnergy ; 36c98
+	dw BattleCommand_Confuse ; 36d3b
+	dw BattleCommand_ConfuseTarget ; 36d1d
+	dw BattleCommand_Heal ; 3713e
+	dw BattleCommand_Transform ; 371cd
+	dw BattleCommand_Screen ; 372fc
+	dw BattleCommand_Poison ; 35f2c
+	dw BattleCommand_Paralyze ; 36dc7
+	dw BattleCommand_Substitute ; 36e7c
+	dw BattleCommand_RechargeNextTurn ; 36f0b
+	dw BattleCommand_Mimic ; 36f46
+	dw BattleCommand_Metronome ; 37418
+	dw BattleCommand_LeechSeed ; 36f9d
+	dw BattleCommand_Splash ; 36fe1
+	dw BattleCommand_Disable ; 36fed
+	dw BattleCommand_ClearText ; 37e85
+	dw BattleCommand_Charge ; 36b4d
+	dw BattleCommand_CheckCharge ; 36b3a
+	dw BattleCommand_TrapTarget ; 36c2d
+	dw BattleCommand3c ; 36c2c
+	dw BattleCommand_Rampage ; 36751
+	dw BattleCommand_CheckRampage ; 3671a
+	dw BattleCommand_ConstantDamage ; 35726
+	dw BattleCommand_Counter ; 35813
+	dw BattleCommand_Encore ; 35864
+	dw BattleCommand_PainSplit ; 35926
+	dw BattleCommand_Snore ; 359d0
+	dw BattleCommand_Conversion2 ; 359e6
+	dw BattleCommand_LockOn ; 35a53
+	dw BattleCommand_Sketch ; 35a74
+	dw BattleCommand_DefrostOpponent ; 35b16
+	dw BattleCommand_SleepTalk ; 35b33
+	dw BattleCommand_DestinyBond ; 35bff
+	dw BattleCommand_Spite ; 35c0f
+	dw BattleCommand_FalseSwipe ; 35c94
+	dw BattleCommand_HealBell ; 35cc9
+	dw BattleCommand_HeldFlinch ; 36ac9
+	dw BattleCommand_TripleKick ; 346b2
+	dw BattleCommand_KickCounter ; 346cd
+	dw BattleCommand_Thief ; 37492
+	dw BattleCommand_ArenaTrap ; 37517
+	dw BattleCommand_Nightmare ; 37536
+	dw BattleCommand_Defrost ; 37563
+	dw BattleCommand_Curse ; 37588
+	dw BattleCommand_Protect ; 37618
+	dw BattleCommand_Spikes ; 37683
+	dw BattleCommand_Foresight ; 376a0
+	dw BattleCommand_PerishSong ; 376c2
+	dw BattleCommand_StartSandstorm ; 376f8
+	dw BattleCommand_Endure ; 3766f
+	dw BattleCommand_CheckCurl ; 37718
+	dw BattleCommand_RolloutPower ; 37734
+	dw BattleCommand5d ; 37791
+	dw BattleCommand_FuryCutter ; 37792
+	dw BattleCommand_Attract ; 377ce
+	dw BattleCommand_HappinessPower ; 3784b
+	dw BattleCommand_Present ; 37874
+	dw BattleCommand_DamageCalc ; 35612 - 62
+	dw BattleCommand_FrustrationPower ; 3790e
+	dw BattleCommand_Safeguard ; 37939
+	dw BattleCommand_CheckSafeguard ; 37972
+	dw BattleCommand_GetMagnitude ; 37991
+	dw BattleCommand_BatonPass ; 379c9
+	dw BattleCommand_Pursuit ; 37b1d
+	dw BattleCommand_ClearHazards ; 37b39
+	dw BattleCommand_HealMorn ; 37b74
+	dw BattleCommand_HealDay ; 37b78
+	dw BattleCommand_HealNite ; 37b7c
+	dw BattleCommand_HiddenPower ; 37be8
+	dw BattleCommand_StartRain ; 37bf4
+	dw BattleCommand_StartSun ; 37c07
+	dw BattleCommand_AttackUp ; 361ac
+	dw BattleCommand_DefenseUp ; 361b0
+	dw BattleCommand_SpeedUp ; 361b4
+	dw BattleCommand_SpecialAttackUp ; 361b8
+	dw BattleCommand_SpecialDefenseUp ; 361bc
+	dw BattleCommand_AccuracyUp ; 361c0
+	dw BattleCommand_EvasionUp ; 361c4
+	dw BattleCommand_AttackUp2 ; 361c8
+	dw BattleCommand_DefenseUp2 ; 361cc
+	dw BattleCommand_SpeedUp2 ; 361d0
+	dw BattleCommand_SpecialAttackUp2 ; 361d4
+	dw BattleCommand_SpecialDefenseUp2 ; 361d8
+	dw BattleCommand_AccuracyUp2 ; 361dc
+	dw BattleCommand_EvasionUp2 ; 361e0
+	dw BattleCommand_AttackDown ; 362ad
+	dw BattleCommand_DefenseDown ; 362b1
+	dw BattleCommand_SpeedDown ; 362b5
+	dw BattleCommand_SpecialAttackDown ; 362b9
+	dw BattleCommand_SpecialDefenseDown ; 362bd
+	dw BattleCommand_AccuracyDown ; 362c1
+	dw BattleCommand_EvasionDown ; 362c5
+	dw BattleCommand_AttackDown2 ; 362c9
+	dw BattleCommand_DefenseDown2 ; 362cd
+	dw BattleCommand_SpeedDown2 ; 362d1
+	dw BattleCommand_SpecialAttackDown2 ; 362d5
+	dw BattleCommand_SpecialDefenseDown2 ; 362d9
+	dw BattleCommand_AccuracyDown2 ; 362dd
+	dw BattleCommand_EvasionDown2 ; 362e1
+	dw BattleCommand_StatUpMessage ; 363b8
+	dw BattleCommand_StatDownMessage ; 363e9
+	dw BattleCommand_StatUpFailText ; 3644c
+	dw BattleCommand_StatDownFailText ; 3646a
+	dw BattleCommand_EffectChance ; 34ecc
+	dw BattleCommand_StatDownAnim ; 34fdb
+	dw BattleCommand_StatUpAnim ; 34fd1
+	dw BattleCommand_SwitchTurn ; 34ffd - 93
+	dw BattleCommand_FakeOut ; 36a82
+	dw BattleCommand_BellyDrum ; 37c1a
+	dw BattleCommand_PsychUp ; 37c55
+	dw BattleCommand_Rage ; 36f1d
+	dw BattleCommand_DoubleFlyingDamage ; 36f25
+	dw BattleCommand_DoubleUndergroundDamage ; 36f2f
+	dw BattleCommand_MirrorCoat ; 37c95
+	dw BattleCommand_CheckFutureSight ; 37d0d
+	dw BattleCommand_FutureSight ; 37d34
+	dw BattleCommand_DoubleMinimizeDamage ; 37ce6
+	dw BattleCommand_SkipSunCharge ; 37d02
+	dw BattleCommand_ThunderAccuracy ; 37d94
+	dw BattleCommand_Teleport ; 36778
+	dw BattleCommand_BeatUp ; 35461
+	dw BattleCommand_RageDamage ; 3527b
+	dw BattleCommand_ResetTypeMatchup ; 34833
+	dw BattleCommand_AllStatsUp ; 36500
+	dw BattleCommanda5 ; 35165
+	dw BattleCommand_RaiseSubNoAnim ; 365af
+	dw BattleCommand_LowerSubNoAnim ; 365c3
+	dw BattleCommanda8 ; 355b5
+	dw BattleCommand_ClearMissDamage ; 355d5 - a9
+	dw BattleCommand_MoveDelay ; 37e80
+	dw BattleCommand_HitTarget ; 34f57
+	dw BattleCommand_TriStatusChance ; 3658f
+	dw BattleCommand_SuperEffectiveLoopText ; 351a5
+	dw BattleCommand_StartLoop ; 35197
+	dw BattleCommand_Curl ; 365a7
+; 3fe86
--- /dev/null
+++ b/data/battle/stat_multipliers.asm
@@ -1,0 +1,17 @@
+; Multiplier ratios for all stats from modifier -6 to +6
+; (except accuracy, see data/battle/accuracy_multipliers.asm)
+
+StatLevelMultipliers:
+	db  25, 100 ; -6 =  25%
+	db  28, 100 ; -5 =  28%
+	db  33, 100 ; -4 =  33%
+	db  40, 100 ; -3 =  40%
+	db  50, 100 ; -2 =  50%
+	db  66, 100 ; -1 =  66%
+	db   1,   1 ;  0 = 100%
+	db  15,  10 ; +1 = 150%
+	db   2,   1 ; +2 = 200%
+	db  25,  10 ; +3 = 250%
+	db   3,   1 ; +4 = 300%
+	db  35,  10 ; +5 = 350%
+	db   4,   1 ; +6 = 400%
--- /dev/null
+++ b/data/battle/stat_names.asm
@@ -1,0 +1,10 @@
+StatNames:
+; entries correspond to stat ids
+	db "ATTACK@"
+	db "DEFENSE@"
+	db "SPEED@"
+	db "SPCL.ATK@"
+	db "SPCL.DEF@"
+	db "ACCURACY@"
+	db "EVASION@"
+	db "ABILITY@" ; used for BattleCommand_Curse
--- /dev/null
+++ b/data/battle/type_boost_items.asm
@@ -1,0 +1,20 @@
+TypeBoostItems: ; 35703
+	db HELD_NORMAL_BOOST,   NORMAL   ; PINK_BOW/POLKADOT_BOW
+	db HELD_FIGHTING_BOOST, FIGHTING ; BLACKBELT
+	db HELD_FLYING_BOOST,   FLYING   ; SHARP_BEAK
+	db HELD_POISON_BOOST,   POISON   ; POISON BARB
+	db HELD_GROUND_BOOST,   GROUND   ; SOFT_SAND
+	db HELD_ROCK_BOOST,     ROCK     ; HARD_STONE
+	db HELD_BUG_BOOST,      BUG      ; SILVERPOWDER
+	db HELD_GHOST_BOOST,    GHOST    ; SPELL_TAG
+	db HELD_FIRE_BOOST,     FIRE     ; CHARCOAL
+	db HELD_WATER_BOOST,    WATER    ; MYSTIC WATER
+	db HELD_GRASS_BOOST,    GRASS    ; MIRACLE_SEED
+	db HELD_ELECTRIC_BOOST, ELECTRIC ; MAGNET
+	db HELD_PSYCHIC_BOOST,  PSYCHIC  ; TWISTEDSPOON
+	db HELD_ICE_BOOST,      ICE      ; NEVERMELTICE
+	db HELD_DRAGON_BOOST,   DRAGON   ; DRAGON_SCALE
+	db HELD_DARK_BOOST,     DARK     ; BLACKGLASSES
+	db HELD_STEEL_BOOST,    STEEL    ; METAL_COAT
+	db -1
+; 35726
--- /dev/null
+++ b/data/battle/type_matchups.asm
@@ -1,0 +1,119 @@
+TypeMatchups: ; 34bb1
+	;  attacker,  defender,  *=
+	db NORMAL,    ROCK,      NOT_VERY_EFFECTIVE
+	db NORMAL,    STEEL,     NOT_VERY_EFFECTIVE
+	db FIRE,      FIRE,      NOT_VERY_EFFECTIVE
+	db FIRE,      WATER,     NOT_VERY_EFFECTIVE
+	db FIRE,      GRASS,     SUPER_EFFECTIVE
+	db FIRE,      ICE,       SUPER_EFFECTIVE
+	db FIRE,      BUG,       SUPER_EFFECTIVE
+	db FIRE,      ROCK,      NOT_VERY_EFFECTIVE
+	db FIRE,      DRAGON,    NOT_VERY_EFFECTIVE
+	db FIRE,      STEEL,     SUPER_EFFECTIVE
+	db WATER,     FIRE,      SUPER_EFFECTIVE
+	db WATER,     WATER,     NOT_VERY_EFFECTIVE
+	db WATER,     GRASS,     NOT_VERY_EFFECTIVE
+	db WATER,     GROUND,    SUPER_EFFECTIVE
+	db WATER,     ROCK,      SUPER_EFFECTIVE
+	db WATER,     DRAGON,    NOT_VERY_EFFECTIVE
+	db ELECTRIC,  WATER,     SUPER_EFFECTIVE
+	db ELECTRIC,  ELECTRIC,  NOT_VERY_EFFECTIVE
+	db ELECTRIC,  GRASS,     NOT_VERY_EFFECTIVE
+	db ELECTRIC,  GROUND,    NO_EFFECT
+	db ELECTRIC,  FLYING,    SUPER_EFFECTIVE
+	db ELECTRIC,  DRAGON,    NOT_VERY_EFFECTIVE
+	db GRASS,     FIRE,      NOT_VERY_EFFECTIVE
+	db GRASS,     WATER,     SUPER_EFFECTIVE
+	db GRASS,     GRASS,     NOT_VERY_EFFECTIVE
+	db GRASS,     POISON,    NOT_VERY_EFFECTIVE
+	db GRASS,     GROUND,    SUPER_EFFECTIVE
+	db GRASS,     FLYING,    NOT_VERY_EFFECTIVE
+	db GRASS,     BUG,       NOT_VERY_EFFECTIVE
+	db GRASS,     ROCK,      SUPER_EFFECTIVE
+	db GRASS,     DRAGON,    NOT_VERY_EFFECTIVE
+	db GRASS,     STEEL,     NOT_VERY_EFFECTIVE
+	db ICE,       WATER,     NOT_VERY_EFFECTIVE
+	db ICE,       GRASS,     SUPER_EFFECTIVE
+	db ICE,       ICE,       NOT_VERY_EFFECTIVE
+	db ICE,       GROUND,    SUPER_EFFECTIVE
+	db ICE,       FLYING,    SUPER_EFFECTIVE
+	db ICE,       DRAGON,    SUPER_EFFECTIVE
+	db ICE,       STEEL,     NOT_VERY_EFFECTIVE
+	db ICE,       FIRE,      NOT_VERY_EFFECTIVE
+	db FIGHTING,  NORMAL,    SUPER_EFFECTIVE
+	db FIGHTING,  ICE,       SUPER_EFFECTIVE
+	db FIGHTING,  POISON,    NOT_VERY_EFFECTIVE
+	db FIGHTING,  FLYING,    NOT_VERY_EFFECTIVE
+	db FIGHTING,  PSYCHIC,   NOT_VERY_EFFECTIVE
+	db FIGHTING,  BUG,       NOT_VERY_EFFECTIVE
+	db FIGHTING,  ROCK,      SUPER_EFFECTIVE
+	db FIGHTING,  DARK,      SUPER_EFFECTIVE
+	db FIGHTING,  STEEL,     SUPER_EFFECTIVE
+	db POISON,    GRASS,     SUPER_EFFECTIVE
+	db POISON,    POISON,    NOT_VERY_EFFECTIVE
+	db POISON,    GROUND,    NOT_VERY_EFFECTIVE
+	db POISON,    ROCK,      NOT_VERY_EFFECTIVE
+	db POISON,    GHOST,     NOT_VERY_EFFECTIVE
+	db POISON,    STEEL,     NO_EFFECT
+	db GROUND,    FIRE,      SUPER_EFFECTIVE
+	db GROUND,    ELECTRIC,  SUPER_EFFECTIVE
+	db GROUND,    GRASS,     NOT_VERY_EFFECTIVE
+	db GROUND,    POISON,    SUPER_EFFECTIVE
+	db GROUND,    FLYING,    NO_EFFECT
+	db GROUND,    BUG,       NOT_VERY_EFFECTIVE
+	db GROUND,    ROCK,      SUPER_EFFECTIVE
+	db GROUND,    STEEL,     SUPER_EFFECTIVE
+	db FLYING,    ELECTRIC,  NOT_VERY_EFFECTIVE
+	db FLYING,    GRASS,     SUPER_EFFECTIVE
+	db FLYING,    FIGHTING,  SUPER_EFFECTIVE
+	db FLYING,    BUG,       SUPER_EFFECTIVE
+	db FLYING,    ROCK,      NOT_VERY_EFFECTIVE
+	db FLYING,    STEEL,     NOT_VERY_EFFECTIVE
+	db PSYCHIC,   FIGHTING,  SUPER_EFFECTIVE
+	db PSYCHIC,   POISON,    SUPER_EFFECTIVE
+	db PSYCHIC,   PSYCHIC,   NOT_VERY_EFFECTIVE
+	db PSYCHIC,   DARK,      NO_EFFECT
+	db PSYCHIC,   STEEL,     NOT_VERY_EFFECTIVE
+	db BUG,       FIRE,      NOT_VERY_EFFECTIVE
+	db BUG,       GRASS,     SUPER_EFFECTIVE
+	db BUG,       FIGHTING,  NOT_VERY_EFFECTIVE
+	db BUG,       POISON,    NOT_VERY_EFFECTIVE
+	db BUG,       FLYING,    NOT_VERY_EFFECTIVE
+	db BUG,       PSYCHIC,   SUPER_EFFECTIVE
+	db BUG,       GHOST,     NOT_VERY_EFFECTIVE
+	db BUG,       DARK,      SUPER_EFFECTIVE
+	db BUG,       STEEL,     NOT_VERY_EFFECTIVE
+	db ROCK,      FIRE,      SUPER_EFFECTIVE
+	db ROCK,      ICE,       SUPER_EFFECTIVE
+	db ROCK,      FIGHTING,  NOT_VERY_EFFECTIVE
+	db ROCK,      GROUND,    NOT_VERY_EFFECTIVE
+	db ROCK,      FLYING,    SUPER_EFFECTIVE
+	db ROCK,      BUG,       SUPER_EFFECTIVE
+	db ROCK,      STEEL,     NOT_VERY_EFFECTIVE
+	db GHOST,     NORMAL,    NO_EFFECT
+	db GHOST,     PSYCHIC,   SUPER_EFFECTIVE
+	db GHOST,     DARK,      NOT_VERY_EFFECTIVE
+	db GHOST,     STEEL,     NOT_VERY_EFFECTIVE
+	db GHOST,     GHOST,     SUPER_EFFECTIVE
+	db DRAGON,    DRAGON,    SUPER_EFFECTIVE
+	db DRAGON,    STEEL,     NOT_VERY_EFFECTIVE
+	db DARK,      FIGHTING,  NOT_VERY_EFFECTIVE
+	db DARK,      PSYCHIC,   SUPER_EFFECTIVE
+	db DARK,      GHOST,     SUPER_EFFECTIVE
+	db DARK,      DARK,      NOT_VERY_EFFECTIVE
+	db DARK,      STEEL,     NOT_VERY_EFFECTIVE
+	db STEEL,     FIRE,      NOT_VERY_EFFECTIVE
+	db STEEL,     WATER,     NOT_VERY_EFFECTIVE
+	db STEEL,     ELECTRIC,  NOT_VERY_EFFECTIVE
+	db STEEL,     ICE,       SUPER_EFFECTIVE
+	db STEEL,     ROCK,      SUPER_EFFECTIVE
+	db STEEL,     STEEL,     NOT_VERY_EFFECTIVE
+
+	db -2 ; end
+
+; Foresight removes Ghost's immunities.
+	db NORMAL,    GHOST,     NO_EFFECT
+	db FIGHTING,  GHOST,     NO_EFFECT
+
+	db -1 ; end (with Foresight)
+; 34cfd
--- a/data/battle_anims/objects.asm
+++ b/data/battle_anims/objects.asm
@@ -27,13 +27,13 @@
 	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_06
 	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_07
 	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_08
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_09
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_FANG
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_0A
-	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0B
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0C
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0D
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0E
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0F
+	battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_EMBER
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_DRAGON_RAGE
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FLAMETHROWER
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FIRE_SPIN
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FIRE_BLAST
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_BURNED
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_BLIZZARD
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_12
@@ -47,32 +47,32 @@
 	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_1A
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_1B
 	battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_BALL_POOF
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1D
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1E
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1F
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 ; ANIM_OBJ_20
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_BIG_ROCK
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_SMALL_ROCK
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_STRENGTH
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 ; ANIM_OBJ_SEISMIC_TOSS
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_BUBBLE
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_22
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_23
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_24
-	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_25
-	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f ; ANIM_OBJ_26
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_SURF
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_SING
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_WATER_GUN
+	battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_HYDRO_PUMP
+	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f ; ANIM_OBJ_POWDER
 	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_27
 	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_28
 	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BUILDUP
 	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_FROZEN
 	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11 ; ANIM_OBJ_MASTER_BALL_SPARKLE
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d ; ANIM_OBJ_2C
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d ; ANIM_OBJ_RECOVER
 	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2D
 	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2E
 	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2F
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_30
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_THUNDER_WAVE
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_31
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_LIGHTNING_BOLT
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_33
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_34
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_35
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_36
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_CLAMP
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_BITE
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_37
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_38
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_39
@@ -85,30 +85,30 @@
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_40
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_41
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_42
-	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_43
+	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_SONICBOOM_JP
 	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_44
 	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_ABSORB
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_46
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_EGG
 	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_47
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_48
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_49
 	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_LEECH_SEED
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_4B
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17 ; ANIM_OBJ_4C
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_4D
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17 ; ANIM_OBJ_WAVE
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_CONFUSE_RAY
 	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4E
 	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4F
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18 ; ANIM_OBJ_50
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_51
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18 ; ANIM_OBJ_SCREEN
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_HARDEN
 	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_CHICK
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_53
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_54
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_AMNESIA
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_ASLEEP
 	battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_SKULL
 	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_56
 	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_57
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a ; ANIM_OBJ_58
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_PARALYZED
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_5A
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_STRING_SHOT
 	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_HAZE
 	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_MIST
 	battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOG
@@ -115,95 +115,95 @@
 	battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_POISON_GAS
 	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_HORN
 	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_60
-	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_61
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_62
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19 ; ANIM_OBJ_63
+	battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_PETAL_DANCE
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_SLUDGE_BOMB
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19 ; ANIM_OBJ_PAY_DAY
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_64
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_65
-	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_66
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_67
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_68
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_69
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_6A
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_6B
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6C
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6D
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20 ; ANIM_OBJ_SKY_ATTACK_FEAROW
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_MIMIC
+	battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_ATTRACT
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_BONEMERANG
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_BONE_CLUB
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_BONE_RUSH
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_SWIFT
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_KINESIS
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_FLASH
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_SHINY
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20 ; ANIM_OBJ_SKY_ATTACK
 	battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_LICK
 	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_WITHDRAW
 	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_71
-	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12 ; ANIM_OBJ_72
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_73
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_74
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_75
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_76
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_77
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_78
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_79
+	battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12 ; ANIM_OBJ_GROWTH
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_CONVERSION2
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOKE
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_SMOKESCREEN
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_SWORDS_DANCE
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_SPEED_LINE
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_SHARPEN
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_DEFENSE_CURL
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_7A
 	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_7B
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_7C
-	battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13 ; ANIM_OBJ_7D
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_DISABLE
+	battleanimobj RELATIVE_X | X_FLIP | PRIORITY, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13 ; ANIM_OBJ_AGILITY
 	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_HEART
-	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_7F
-	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_80
+	battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_FLAME_WHEEL
+	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_SACRED_FIRE
 	battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_COTTON_SPORE
-	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_82
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_83
+	battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_MILK_DRINK
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_ANGER
 	battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f ; ANIM_OBJ_84
 	battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_85
-	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_86
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_87
-	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_88
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_89
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_8A
-	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_8B
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_8C
-	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19 ; ANIM_OBJ_8D
+	battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_BATON_PASS
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_LOCK_ON
+	battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_MIND_READER
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SAFEGUARD
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_PROTECT
+	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_THIEF
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_OCTAZOOKA
+	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19 ; ANIM_OBJ_PRESENT
 	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SPIKES
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a ; ANIM_OBJ_8F
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_90
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_91
-	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_92
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a ; ANIM_OBJ_POWDER_SNOW
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_DRAGONBREATH
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_CONVERSION
+	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_SPIDER_WEB
 	battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_93
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_94
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_95
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_96
-	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25 ; ANIM_OBJ_97
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23 ; ANIM_OBJ_98
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_NIGHTMARE
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_IN_NIGHTMARE
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_LOVELY_KISS
+	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25 ; ANIM_OBJ_SWEET_KISS
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23 ; ANIM_OBJ_SKETCH
 	battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_99
 	battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_9A
-	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_9B
-	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9C
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_9D
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9E
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12 ; ANIM_OBJ_9F
+	battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_DESTINY_BOND
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_MORNING_SUN
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_GLIMMER
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_MOONLIGHT
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12 ; ANIM_OBJ_HIDDEN_POWER
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A0
 	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A1
-	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f ; ANIM_OBJ_A2
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_A3
-	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_A4
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_A5
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f ; ANIM_OBJ_SANDSTORM
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_ZAP_CANNON
+	battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_SPITE
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_CURSE
 	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_PERISH_SONG
-	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_A7
-	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A8
-	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A9
+	battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_FORESIGHT
+	battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_RAPID_SPIN
+	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_SWAGGER
 	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AA
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_AB
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17 ; ANIM_OBJ_AC
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17 ; ANIM_OBJ_MEAN_LOOK
 	battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AD
 	battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_AE
-	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_AF
+	battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_RAIN
 	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c ; ANIM_OBJ_B0
-	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_B1
-	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B2
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27 ; ANIM_OBJ_B3
-	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15 ; ANIM_OBJ_B4
-	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B5
+	battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_PSYCH_UP
+	battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_ANCIENTPOWER
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27 ; ANIM_OBJ_AEROBLAST
+	battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15 ; ANIM_OBJ_SHADOW_BALL
+	battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_ROCK_SMASH
 	battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_FLOWER
 	battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_COTTON
 	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERFEETFOLLOW
 	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYFEETFOLLOW
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_BA
-	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_BB
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERHEADFOLLOW
+	battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYHEADFOLLOW
 ; ccfbe
--- a/data/battle_command_pointers.asm
+++ /dev/null
@@ -1,180 +1,0 @@
-	dw 0 ; padding
-
-BattleCommandPointers: ; 3fd28
-; entries correspond to macros/scripts/battle_commands.asm
-	dw BattleCommand_CheckTurn ; 34084
-	dw BattleCommand_CheckObedience ; 343db
-	dw BattleCommand_UsedMoveText ; 34541
-	dw BattleCommand_DoTurn ; 34555
-	dw BattleCommand_Critical ; 34631
-	dw BattleCommand_DamageStats ; 352dc
-	dw BattleCommand_Stab ; 346d2 - 07
-	dw BattleCommand_DamageVariation ; 34cfd
-	dw BattleCommand_CheckHit ; 34d32
-	dw BattleCommand_LowerSub ; 34eee
-	dw BattleCommand_HitTargetNoSub ; 34f60
-	dw BattleCommand_RaiseSub ; 35004
-	dw BattleCommand_FailureText ; 35023
-	dw BattleCommand_CheckFaint ; 3505e
-	dw BattleCommand_CriticalText ; 35175
-	dw BattleCommand_SuperEffectiveText ; 351ad
-	dw BattleCommand_CheckDestinyBond ; 351c0
-	dw BattleCommand_BuildOpponentRage ; 35250
-	dw BattleCommand_PoisonTarget ; 35eee
-	dw BattleCommand_SleepTarget ; 35e5c
-	dw BattleCommand_DrainTarget ; 35fff
-	dw BattleCommand_EatDream ; 36008
-	dw BattleCommand_BurnTarget ; 3608c
-	dw BattleCommand_FreezeTarget ; 36102
-	dw BattleCommand_ParalyzeTarget ; 36165
-	dw BattleCommand_Selfdestruct ; 37380
-	dw BattleCommand_MirrorMove ; 373c9
-	dw BattleCommand_StatUp ; 361e4
-	dw BattleCommand_StatDown ; 362e3
-	dw BattleCommand_PayDay ; 3705c
-	dw BattleCommand_Conversion ; 3707f
-	dw BattleCommand_ResetStats ; 3710e
-	dw BattleCommand_StoreEnergy ; 36671
-	dw BattleCommand_UnleashEnergy ; 366e5
-	dw BattleCommand_ForceSwitch ; 3680f
-	dw BattleCommand_EndLoop ; 369b6
-	dw BattleCommand_FlinchTarget ; 36aa0
-	dw BattleCommand_OHKO ; 36af3
-	dw BattleCommand_Recoil ; 36cb2
-	dw BattleCommand_Mist ; 36c7e
-	dw BattleCommand_FocusEnergy ; 36c98
-	dw BattleCommand_Confuse ; 36d3b
-	dw BattleCommand_ConfuseTarget ; 36d1d
-	dw BattleCommand_Heal ; 3713e
-	dw BattleCommand_Transform ; 371cd
-	dw BattleCommand_Screen ; 372fc
-	dw BattleCommand_Poison ; 35f2c
-	dw BattleCommand_Paralyze ; 36dc7
-	dw BattleCommand_Substitute ; 36e7c
-	dw BattleCommand_RechargeNextTurn ; 36f0b
-	dw BattleCommand_Mimic ; 36f46
-	dw BattleCommand_Metronome ; 37418
-	dw BattleCommand_LeechSeed ; 36f9d
-	dw BattleCommand_Splash ; 36fe1
-	dw BattleCommand_Disable ; 36fed
-	dw BattleCommand_ClearText ; 37e85
-	dw BattleCommand_Charge ; 36b4d
-	dw BattleCommand_CheckCharge ; 36b3a
-	dw BattleCommand_TrapTarget ; 36c2d
-	dw BattleCommand3c ; 36c2c
-	dw BattleCommand_Rampage ; 36751
-	dw BattleCommand_CheckRampage ; 3671a
-	dw BattleCommand_ConstantDamage ; 35726
-	dw BattleCommand_Counter ; 35813
-	dw BattleCommand_Encore ; 35864
-	dw BattleCommand_PainSplit ; 35926
-	dw BattleCommand_Snore ; 359d0
-	dw BattleCommand_Conversion2 ; 359e6
-	dw BattleCommand_LockOn ; 35a53
-	dw BattleCommand_Sketch ; 35a74
-	dw BattleCommand_DefrostOpponent ; 35b16
-	dw BattleCommand_SleepTalk ; 35b33
-	dw BattleCommand_DestinyBond ; 35bff
-	dw BattleCommand_Spite ; 35c0f
-	dw BattleCommand_FalseSwipe ; 35c94
-	dw BattleCommand_HealBell ; 35cc9
-	dw BattleCommand_HeldFlinch ; 36ac9
-	dw BattleCommand_TripleKick ; 346b2
-	dw BattleCommand_KickCounter ; 346cd
-	dw BattleCommand_Thief ; 37492
-	dw BattleCommand_ArenaTrap ; 37517
-	dw BattleCommand_Nightmare ; 37536
-	dw BattleCommand_Defrost ; 37563
-	dw BattleCommand_Curse ; 37588
-	dw BattleCommand_Protect ; 37618
-	dw BattleCommand_Spikes ; 37683
-	dw BattleCommand_Foresight ; 376a0
-	dw BattleCommand_PerishSong ; 376c2
-	dw BattleCommand_StartSandstorm ; 376f8
-	dw BattleCommand_Endure ; 3766f
-	dw BattleCommand_CheckCurl ; 37718
-	dw BattleCommand_RolloutPower ; 37734
-	dw BattleCommand5d ; 37791
-	dw BattleCommand_FuryCutter ; 37792
-	dw BattleCommand_Attract ; 377ce
-	dw BattleCommand_HappinessPower ; 3784b
-	dw BattleCommand_Present ; 37874
-	dw BattleCommand_DamageCalc ; 35612 - 62
-	dw BattleCommand_FrustrationPower ; 3790e
-	dw BattleCommand_Safeguard ; 37939
-	dw BattleCommand_CheckSafeguard ; 37972
-	dw BattleCommand_GetMagnitude ; 37991
-	dw BattleCommand_BatonPass ; 379c9
-	dw BattleCommand_Pursuit ; 37b1d
-	dw BattleCommand_ClearHazards ; 37b39
-	dw BattleCommand_HealMorn ; 37b74
-	dw BattleCommand_HealDay ; 37b78
-	dw BattleCommand_HealNite ; 37b7c
-	dw BattleCommand_HiddenPower ; 37be8
-	dw BattleCommand_StartRain ; 37bf4
-	dw BattleCommand_StartSun ; 37c07
-	dw BattleCommand_AttackUp ; 361ac
-	dw BattleCommand_DefenseUp ; 361b0
-	dw BattleCommand_SpeedUp ; 361b4
-	dw BattleCommand_SpecialAttackUp ; 361b8
-	dw BattleCommand_SpecialDefenseUp ; 361bc
-	dw BattleCommand_AccuracyUp ; 361c0
-	dw BattleCommand_EvasionUp ; 361c4
-	dw BattleCommand_AttackUp2 ; 361c8
-	dw BattleCommand_DefenseUp2 ; 361cc
-	dw BattleCommand_SpeedUp2 ; 361d0
-	dw BattleCommand_SpecialAttackUp2 ; 361d4
-	dw BattleCommand_SpecialDefenseUp2 ; 361d8
-	dw BattleCommand_AccuracyUp2 ; 361dc
-	dw BattleCommand_EvasionUp2 ; 361e0
-	dw BattleCommand_AttackDown ; 362ad
-	dw BattleCommand_DefenseDown ; 362b1
-	dw BattleCommand_SpeedDown ; 362b5
-	dw BattleCommand_SpecialAttackDown ; 362b9
-	dw BattleCommand_SpecialDefenseDown ; 362bd
-	dw BattleCommand_AccuracyDown ; 362c1
-	dw BattleCommand_EvasionDown ; 362c5
-	dw BattleCommand_AttackDown2 ; 362c9
-	dw BattleCommand_DefenseDown2 ; 362cd
-	dw BattleCommand_SpeedDown2 ; 362d1
-	dw BattleCommand_SpecialAttackDown2 ; 362d5
-	dw BattleCommand_SpecialDefenseDown2 ; 362d9
-	dw BattleCommand_AccuracyDown2 ; 362dd
-	dw BattleCommand_EvasionDown2 ; 362e1
-	dw BattleCommand_StatUpMessage ; 363b8
-	dw BattleCommand_StatDownMessage ; 363e9
-	dw BattleCommand_StatUpFailText ; 3644c
-	dw BattleCommand_StatDownFailText ; 3646a
-	dw BattleCommand_EffectChance ; 34ecc
-	dw BattleCommand_StatDownAnim ; 34fdb
-	dw BattleCommand_StatUpAnim ; 34fd1
-	dw BattleCommand_SwitchTurn ; 34ffd - 93
-	dw BattleCommand_FakeOut ; 36a82
-	dw BattleCommand_BellyDrum ; 37c1a
-	dw BattleCommand_PsychUp ; 37c55
-	dw BattleCommand_Rage ; 36f1d
-	dw BattleCommand_DoubleFlyingDamage ; 36f25
-	dw BattleCommand_DoubleUndergroundDamage ; 36f2f
-	dw BattleCommand_MirrorCoat ; 37c95
-	dw BattleCommand_CheckFutureSight ; 37d0d
-	dw BattleCommand_FutureSight ; 37d34
-	dw BattleCommand_DoubleMinimizeDamage ; 37ce6
-	dw BattleCommand_SkipSunCharge ; 37d02
-	dw BattleCommand_ThunderAccuracy ; 37d94
-	dw BattleCommand_Teleport ; 36778
-	dw BattleCommand_BeatUp ; 35461
-	dw BattleCommand_RageDamage ; 3527b
-	dw BattleCommand_ResetTypeMatchup ; 34833
-	dw BattleCommand_AllStatsUp ; 36500
-	dw BattleCommanda5 ; 35165
-	dw BattleCommand_RaiseSubNoAnim ; 365af
-	dw BattleCommand_LowerSubNoAnim ; 365c3
-	dw BattleCommanda8 ; 355b5
-	dw BattleCommand_ClearMissDamage ; 355d5 - a9
-	dw BattleCommand_MoveDelay ; 37e80
-	dw BattleCommand_HitTarget ; 34f57
-	dw BattleCommand_TriStatusChance ; 3658f
-	dw BattleCommand_SuperEffectiveLoopText ; 351a5
-	dw BattleCommand_StartLoop ; 35197
-	dw BattleCommand_Curl ; 365a7
-; 3fe86
--- a/data/battle_tower.asm
+++ /dev/null
@@ -1,5786 +1,0 @@
-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.
-; See mobile/battle_tower_47.asm
-	db "HANSON@@@@", FISHER
-	db "SAWYER@@@@", POKEMANIAC
-	db "MASUDA@@@@", GUITARIST
-	db "NICKEL@@@@", SCIENTIST
-	db "OLSON@@@@@", POKEFANM
-	db "ZABOROWSKI", LASS
-	db "WRIGHT@@@@", YOUNGSTER
-	db "ALEXANDER@", HIKER
-	db "KAWAKAMI@@", TEACHER
-	db "BICKETT@@@", POKEFANM
-	db "SAITO@@@@@", KIMONO_GIRL
-	db "CRAWFORD@@", BOARDER
-	db "DIAZ@@@@@@", PICNICKER
-	db "ERICKSON@@", BIKER
-	db "FAIRFIELD@", JUGGLER
-	db "HUNTER@@@@", POKEFANF
-	db "HILL@@@@@@", FIREBREATHER
-	db "JAVIER@@@@", SWIMMERF
-	db "KAUFMAN@@@", SWIMMERM
-	db "LANCASTER@", SKIER
-	db "McMAHILL@@", CAMPER
-; The following can only be sampled in Crystal 1.1.
-	db "OBRIEN@@@@", GENTLEMAN
-	db "FROST@@@@@", BEAUTY
-	db "MORSE@@@@@", SUPER_NERD
-	db "YUFUNE@@@@", BLACKBELT_T
-	db "RAJAN@@@@@", COOLTRAINERF
-	db "RODRIGUEZ@", OFFICER
-	db "SANTIAGO@@", PSYCHIC_T
-	db "STOCK@@@@@", POKEFANM
-	db "THURMAN@@@", SCIENTIST
-	db "VALENTINO@", BEAUTY
-	db "WAGNER@@@@", CAMPER
-	db "YATES@@@@@", BIRD_KEEPER
-	db "ANDREWS@@@", PICNICKER
-	db "BAHN@@@@@@", POKEMANIAC
-	db "MORI@@@@@@", SCIENTIST
-	db "BUCKMAN@@@", SAGE
-	db "COBB@@@@@@", SCHOOLBOY
-	db "HUGHES@@@@", FISHER
-	db "ARITA@@@@@", KIMONO_GIRL
-	db "EASTON@@@@", PSYCHIC_T
-	db "FREEMAN@@@", CAMPER
-	db "GIESE@@@@@", LASS
-	db "HATCHER@@@", GENTLEMAN
-	db "JACKSON@@@", POKEFANF
-	db "KAHN@@@@@@", POKEMANIAC
-	db "LEONG@@@@@", YOUNGSTER
-	db "MARINO@@@@", TEACHER
-	db "NEWMAN@@@@", SAILOR
-	db "NGUYEN@@@@", BLACKBELT_T
-	db "OGDEN@@@@@", SUPER_NERD
-	db "PARK@@@@@@", COOLTRAINERF
-	db "RAINE@@@@@", SWIMMERM
-	db "SELLS@@@@@", BIRD_KEEPER
-	db "ROCKWELL@@", BOARDER
-	db "THORNTON@@", LASS
-	db "TURNER@@@@", OFFICER
-	db "VAN DYKE@@", SKIER
-	db "WALKER@@@@", SCHOOLBOY
-	db "MEYER@@@@@", SWIMMERF
-	db "JOHNSON@@@", YOUNGSTER
-	db "ADAMS@@@@@", GUITARIST
-	db "SMITH@@@@@", BUG_CATCHER
-	db "TAJIRI@@@@", BUG_CATCHER
-	db "BAKER@@@@@", POKEMANIAC
-	db "COLLINS@@@", SCIENTIST
-	db "SMART@@@@@", SUPER_NERD
-	db "DYKSTRA@@@", SWIMMERF
-	db "EATON@@@@@", BIKER
-	db "WONG@@@@@@", FIREBREATHER
-; 1f8450
-
-
-BattleTowerMons: ; 1f8450
-; 10 groups of 21 mons.
-BattleTowerMons1:
-
-	db JOLTEON
-	db MIRACLEBERRY
-	db THUNDERBOLT, HYPER_BEAM, SHADOW_BALL, ROAR
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 40000
-	bigdw 35000
-	bigdw 40000
-	db $dd, $bd ; DVs
-	db 15, 5, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 41 ; HP
-	bigdw 41 ; Max HP
-	bigdw 25 ; Atk
-	bigdw 24 ; Def
-	bigdw 37 ; Spd
-	bigdw 34 ; SAtk
-	bigdw 31 ; SDef
-	db "SANDA-SU@@@"
-
-
-	db ESPEON
-	db LEFTOVERS
-	db MUD_SLAP, PSYCHIC_M, PSYCH_UP, TOXIC
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 50000
-	bigdw 35000
-	bigdw 40000
-	bigdw 40000
-	db $ed, $fb ; DVs
-	db 10, 10, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 39 ; HP
-	bigdw 39 ; Max HP
-	bigdw 26 ; Atk
-	bigdw 24 ; Def
-	bigdw 35 ; Spd
-	bigdw 38 ; SAtk
-	bigdw 31 ; SDef
-	db "E-HUi@@@@@@"
-
-
-	db UMBREON
-	db GOLD_BERRY
-	db SHADOW_BALL, IRON_TAIL, PSYCH_UP, TOXIC
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	db $db, $ef ; DVs
-	db 15, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 46 ; HP
-	bigdw 46 ; Max HP
-	bigdw 25 ; Atk
-	bigdw 34 ; Def
-	bigdw 26 ; Spd
-	bigdw 25 ; SAtk
-	bigdw 39 ; SDef
-	db "BURAtuKI-@@"
-
-
-	db WOBBUFFET
-	db FOCUS_BAND
-	db COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $7f, $d7 ; DVs
-	db 20, 20, 25, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 66 ; HP
-	bigdw 66 ; Max HP
-	bigdw 18 ; Atk
-	bigdw 25 ; Def
-	bigdw 19 ; Spd
-	bigdw 18 ; SAtk
-	bigdw 23 ; SDef
-	db "SO-NANSU@@@"
-
-
-	db KANGASKHAN
-	db MIRACLEBERRY
-	db REVERSAL, HYPER_BEAM, EARTHQUAKE, ATTRACT
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 30000
-	bigdw 40000
-	bigdw 30000
-	bigdw 30000
-	db $ef, $cf ; DVs
-	db 15, 5, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 47 ; HP
-	bigdw 47 ; Max HP
-	bigdw 31 ; Atk
-	bigdw 29 ; Def
-	bigdw 29 ; Spd
-	bigdw 20 ; SAtk
-	bigdw 28 ; SDef
-	db "GARU-RA@@@@"
-
-
-	db CORSOLA
-	db SCOPE_LENS
-	db SURF, PSYCHIC_M, RECOVER, ANCIENTPOWER
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 30000
-	bigdw 33300
-	bigdw 30000
-	bigdw 30000
-	db $fe, $fd ; DVs
-	db 15, 10, 20, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 38 ; HP
-	bigdw 38 ; Max HP
-	bigdw 23 ; Atk
-	bigdw 29 ; Def
-	bigdw 19 ; Spd
-	bigdw 24 ; SAtk
-	bigdw 28 ; SDef
-	db "SANI-GO@@@@"
-
-
-	db MILTANK
-	db GOLD_BERRY
-	db BLIZZARD, EARTHQUAKE, HYPER_BEAM, TOXIC
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 35000
-	db $bb, $df ; DVs
-	db 5, 10, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 46 ; HP
-	bigdw 46 ; Max HP
-	bigdw 27 ; Atk
-	bigdw 32 ; Def
-	bigdw 31 ; Spd
-	bigdw 20 ; SAtk
-	bigdw 26 ; SDef
-	db "MIRUTANKU@@"
-
-
-	db AERODACTYL
-	db LEFTOVERS
-	db HYPER_BEAM, SUPERSONIC, EARTHQUAKE, BITE
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $db, $fb ; DVs
-	db 5, 20, 10, 25 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 43 ; HP
-	bigdw 43 ; Max HP
-	bigdw 32 ; Atk
-	bigdw 24 ; Def
-	bigdw 38 ; Spd
-	bigdw 23 ; SAtk
-	bigdw 26 ; SDef
-	db "PUTERA@@@@@"
-
-
-	db LAPRAS
-	db MIRACLEBERRY
-	db BLIZZARD, SURF, THUNDERBOLT, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $fd, $eb ; DVs
-	db 5, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 52 ; HP
-	bigdw 52 ; Max HP
-	bigdw 29 ; Atk
-	bigdw 27 ; Def
-	bigdw 24 ; Spd
-	bigdw 28 ; SAtk
-	bigdw 30 ; SDef
-	db "RAPURASU@@@"
-
-
-	db SNEASEL
-	db GOLD_BERRY
-	db SLASH, FAINT_ATTACK, SURF, BLIZZARD
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 35000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $fb, $bf ; DVs
-	db 20, 20, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 38 ; HP
-	bigdw 38 ; Max HP
-	bigdw 31 ; Atk
-	bigdw 22 ; Def
-	bigdw 34 ; Spd
-	bigdw 19 ; SAtk
-	bigdw 27 ; SDef
-	db "NIyu-RA@@@@"
-
-
-	db PORYGON2
-	db BRIGHTPOWDER
-	db PSYCHIC_M, BLIZZARD, HYPER_BEAM, TRI_ATTACK
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 40000
-	bigdw 30000
-	bigdw 30000
-	db $fb, $de ; DVs
-	db 10, 5, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 44 ; HP
-	bigdw 44 ; Max HP
-	bigdw 28 ; Atk
-	bigdw 30 ; Def
-	bigdw 23 ; Spd
-	bigdw 33 ; SAtk
-	bigdw 31 ; SDef
-	db "PORIGON2@@@"
-
-
-	db MISDREAVUS
-	db FOCUS_BAND
-	db PERISH_SONG, MEAN_LOOK, PAIN_SPLIT, SHADOW_BALL
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $ef, $df ; DVs
-	db 5, 5, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 37 ; HP
-	bigdw 37 ; Max HP
-	bigdw 24 ; Atk
-	bigdw 24 ; Def
-	bigdw 28 ; Spd
-	bigdw 29 ; SAtk
-	bigdw 29 ; SDef
-	db "MUUMA@@@@@@"
-
-
-	db HOUNDOUR
-	db GOLD_BERRY
-	db FAINT_ATTACK, SOLARBEAM, ROAR, SUNNY_DAY
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 33000
-	bigdw 30000
-	db $fd, $fe ; DVs
-	db 20, 10, 20, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 36 ; HP
-	bigdw 36 ; Max HP
-	bigdw 24 ; Atk
-	bigdw 17 ; Def
-	bigdw 25 ; Spd
-	bigdw 28 ; SAtk
-	bigdw 22 ; SDef
-	db "DERUBIRU@@@"
-
-
-	db GIRAFARIG
-	db KINGS_ROCK
-	db PSYBEAM, MUD_SLAP, SHADOW_BALL, AGILITY
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $ed, $fd ; DVs
-	db 20, 10, 15, 30 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 39 ; HP
-	bigdw 39 ; Max HP
-	bigdw 28 ; Atk
-	bigdw 24 ; Def
-	bigdw 29 ; Spd
-	bigdw 29 ; SAtk
-	bigdw 24 ; SDef
-	db "KIRINRIKI@@"
-
-
-	db BLISSEY
-	db QUICK_CLAW
-	db HEADBUTT, SOLARBEAM, ROLLOUT, STRENGTH
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 32000
-	bigdw 40000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $df, $ce ; DVs
-	db 15, 10, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 77 ; HP
-	bigdw 77 ; Max HP
-	bigdw 14 ; Atk
-	bigdw 14 ; Def
-	bigdw 22 ; Spd
-	bigdw 27 ; SAtk
-	bigdw 39 ; SDef
-	db "HAPINASU@@@"
-
-
-	db SNORLAX
-	db MIRACLEBERRY
-	db HEADBUTT, PROTECT, SNORE, SURF
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $ef, $f7 ; DVs
-	db 15, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 57 ; HP
-	bigdw 57 ; Max HP
-	bigdw 34 ; Atk
-	bigdw 25 ; Def
-	bigdw 18 ; Spd
-	bigdw 23 ; SAtk
-	bigdw 32 ; SDef
-	db "KABIGON@@@@"
-
-
-	db EXEGGUTOR
-	db KINGS_ROCK
-	db TOXIC, GIGA_DRAIN, THIEF, CONFUSION
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $fe, $fe ; DVs
-	db 10, 5, 10, 25 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 45 ; HP
-	bigdw 45 ; Max HP
-	bigdw 31 ; Atk
-	bigdw 29 ; Def
-	bigdw 23 ; Spd
-	bigdw 37 ; SAtk
-	bigdw 25 ; SDef
-	db "NAtuSI-@@@@"
-
-
-	db HERACROSS
-	db GOLD_BERRY
-	db REVERSAL, ENDURE, COUNTER, ROCK_SMASH
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $f7, $f7 ; DVs
-	db 15, 10, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 43 ; HP
-	bigdw 43 ; Max HP
-	bigdw 37 ; Atk
-	bigdw 25 ; Def
-	bigdw 29 ; Spd
-	bigdw 18 ; SAtk
-	bigdw 29 ; SDef
-	db "HERAKUROSU@"
-
-
-	db UNOWN
-	db BERRY
-	db HIDDEN_POWER, 0, 0, 0
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $ff, $ff ; DVs
-	db 15, 0, 0, 0 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 36 ; HP
-	bigdw 36 ; Max HP
-	bigdw 26 ; Atk
-	bigdw 21 ; Def
-	bigdw 21 ; Spd
-	bigdw 26 ; SAtk
-	bigdw 21 ; SDef
-	db "ANNO-N@@@@@"
-
-
-	db TAUROS
-	db KINGS_ROCK
-	db HEADBUTT, SWAGGER, TAIL_WHIP, ICY_WIND
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $65, $57 ; DVs
-	db 15, 15, 30, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 40 ; HP
-	bigdw 40 ; Max HP
-	bigdw 30 ; Atk
-	bigdw 29 ; Def
-	bigdw 32 ; Spd
-	bigdw 18 ; SAtk
-	bigdw 24 ; SDef
-	db "KENTAROSU@@"
-
-
-	db MR__MIME
-	db QUICK_CLAW
-	db TOXIC, PSYCH_UP, FIRE_PUNCH, HEADBUTT
-	dw 0 ; OT ID
-	dt 1000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $73, $67 ; DVs
-	db 10, 10, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 10 ; Level
-	db 0, 0 ; Status
-	bigdw 34 ; HP
-	bigdw 34 ; Max HP
-	bigdw 19 ; Atk
-	bigdw 22 ; Def
-	bigdw 28 ; Spd
-	bigdw 30 ; SAtk
-	bigdw 34 ; SDef
-	db "BARIYA-DO@@"
-
-
-
-
-BattleTowerMons2:
-
-	db UMBREON
-	db LEFTOVERS
-	db PROTECT, TOXIC, MUD_SLAP, ATTRACT
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $cf, $bc ; DVs
-	db 10, 10, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 81 ; HP
-	bigdw 81 ; Max HP
-	bigdw 46 ; Atk
-	bigdw 66 ; Def
-	bigdw 46 ; Spd
-	bigdw 44 ; SAtk
-	bigdw 72 ; SDef
-	db "BURAtuKI-@@"
-
-
-	db STARMIE
-	db GOLD_BERRY
-	db RECOVER, PSYCHIC_M, SURF, PSYCH_UP
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $db, $db ; DVs
-	db 20, 10, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 71 ; HP
-	bigdw 71 ; Max HP
-	bigdw 51 ; Atk
-	bigdw 54 ; Def
-	bigdw 67 ; Spd
-	bigdw 60 ; SAtk
-	bigdw 54 ; SDef
-	db "SUTA-MI-@@@"
-
-
-	db GYARADOS
-	db MIRACLEBERRY
-	db HYPER_BEAM, DRAGON_RAGE, THUNDERBOLT, FIRE_BLAST
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fa, $fd ; DVs
-	db 5, 10, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 83 ; HP
-	bigdw 83 ; Max HP
-	bigdw 72 ; Atk
-	bigdw 51 ; Def
-	bigdw 54 ; Spd
-	bigdw 45 ; SAtk
-	bigdw 61 ; SDef
-	db "GIyaRADOSU@"
-
-
-	db STEELIX
-	db GOLD_BERRY
-	db ROAR, IRON_TAIL, SWAGGER, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 30000
-	bigdw 50000
-	db $ff, $ff ; DVs
-	db 20, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 77 ; HP
-	bigdw 77 ; Max HP
-	bigdw 55 ; Atk
-	bigdw 102 ; Def
-	bigdw 31 ; Spd
-	bigdw 44 ; SAtk
-	bigdw 48 ; SDef
-	db "HAGANE-RU@@"
-
-
-	db ALAKAZAM
-	db BERRY_JUICE
-	db PSYCHIC_M, PSYCH_UP, TOXIC, THUNDERPUNCH
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 50000
-	bigdw 40000
-	db $fd, $ef ; DVs
-	db 10, 10, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 68 ; HP
-	bigdw 68 ; Max HP
-	bigdw 42 ; Atk
-	bigdw 36 ; Def
-	bigdw 69 ; Spd
-	bigdw 75 ; SAtk
-	bigdw 55 ; SDef
-	db "HU-DEiN@@@@"
-
-
-	db ARCANINE
-	db BRIGHTPOWDER
-	db FLAMETHROWER, ROAR, HYPER_BEAM, IRON_TAIL
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 35000
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $db, $fb ; DVs
-	db 15, 20, 5, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 81 ; HP
-	bigdw 81 ; Max HP
-	bigdw 64 ; Atk
-	bigdw 52 ; Def
-	bigdw 60 ; Spd
-	bigdw 60 ; SAtk
-	bigdw 52 ; SDef
-	db "UINDEi@@@@@"
-
-
-	db HERACROSS
-	db FOCUS_BAND
-	db ENDURE, REVERSAL, MEGAHORN, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 30000
-	bigdw 45000
-	bigdw 30000
-	bigdw 45000
-	db $df, $de ; DVs
-	db 10, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 78 ; HP
-	bigdw 78 ; Max HP
-	bigdw 68 ; Atk
-	bigdw 51 ; Def
-	bigdw 52 ; Spd
-	bigdw 37 ; SAtk
-	bigdw 59 ; SDef
-	db "HERAKUROSU@"
-
-
-	db EXEGGUTOR
-	db LEFTOVERS
-	db HYPER_BEAM, PSYCHIC_M, TOXIC, DREAM_EATER
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	db $fd, $eb ; DVs
-	db 5, 10, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 83 ; HP
-	bigdw 83 ; Max HP
-	bigdw 60 ; Atk
-	bigdw 55 ; Def
-	bigdw 43 ; Spd
-	bigdw 70 ; SAtk
-	bigdw 46 ; SDef
-	db "NAtuSI-@@@@"
-
-
-	db AERODACTYL
-	db GOLD_BERRY
-	db REST, HYPER_BEAM, EARTHQUAKE, DRAGON_RAGE
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	db $fb, $bb ; DVs
-	db 10, 5, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 78 ; HP
-	bigdw 78 ; Max HP
-	bigdw 64 ; Atk
-	bigdw 45 ; Def
-	bigdw 72 ; Spd
-	bigdw 44 ; SAtk
-	bigdw 50 ; SDef
-	db "PUTERA@@@@@"
-
-
-	db BLISSEY
-	db BRIGHTPOWDER
-	db PSYCHIC_M, SUBMISSION, SOFTBOILED, COUNTER
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 30000
-	bigdw 50000
-	db $bd, $fe ; DVs
-	db 10, 25, 10, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 148 ; HP
-	bigdw 148 ; Max HP
-	bigdw 24 ; Atk
-	bigdw 22 ; Def
-	bigdw 41 ; Spd
-	bigdw 51 ; SAtk
-	bigdw 75 ; SDef
-	db "HAPINASU@@@"
-
-
-	db LAPRAS
-	db GOLD_BERRY
-	db PSYCHIC_M, THUNDERBOLT, BLIZZARD, CONFUSE_RAY
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 30000
-	bigdw 40000
-	bigdw 55000
-	bigdw 30000
-	db $fe, $d7 ; DVs
-	db 10, 15, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 98 ; HP
-	bigdw 98 ; Max HP
-	bigdw 53 ; Atk
-	bigdw 52 ; Def
-	bigdw 45 ; Spd
-	bigdw 50 ; SAtk
-	bigdw 54 ; SDef
-	db "RAPURASU@@@"
-
-
-	db PIKACHU
-	db LIGHT_BALL
-	db THUNDERBOLT, THUNDER_WAVE, STRENGTH, TOXIC
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $fc, $fe ; DVs
-	db 15, 20, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 58 ; HP
-	bigdw 58 ; Max HP
-	bigdw 44 ; Atk
-	bigdw 32 ; Def
-	bigdw 58 ; Spd
-	bigdw 41 ; SAtk
-	bigdw 37 ; SDef
-	db "PIKATIyuU@@"
-
-
-	db SCIZOR
-	db FOCUS_BAND
-	db STEEL_WING, SLASH, TOXIC, SANDSTORM
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 45000
-	bigdw 40000
-	bigdw 45000
-	bigdw 50000
-	db $fd, $fe ; DVs
-	db 25, 20, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 73 ; HP
-	bigdw 73 ; Max HP
-	bigdw 73 ; Atk
-	bigdw 60 ; Def
-	bigdw 47 ; Spd
-	bigdw 43 ; SAtk
-	bigdw 53 ; SDef
-	db "HAtuSAMU@@@"
-
-
-	db HITMONCHAN
-	db GOLD_BERRY
-	db THUNDERPUNCH, ICE_PUNCH, FIRE_PUNCH, MEGA_PUNCH
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 35000
-	bigdw 50000
-	bigdw 30000
-	db $fb, $fd ; DVs
-	db 15, 15, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 67 ; HP
-	bigdw 67 ; Max HP
-	bigdw 63 ; Atk
-	bigdw 50 ; Def
-	bigdw 52 ; Spd
-	bigdw 32 ; SAtk
-	bigdw 62 ; SDef
-	db "EBIWARA-@@@"
-
-
-	db TAUROS
-	db BRIGHTPOWDER
-	db THUNDERBOLT, EARTHQUAKE, HYPER_BEAM, BLIZZARD
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 30000
-	bigdw 30000
-	db $fb, $ef ; DVs
-	db 15, 10, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 76 ; HP
-	bigdw 76 ; Max HP
-	bigdw 61 ; Atk
-	bigdw 58 ; Def
-	bigdw 63 ; Spd
-	bigdw 35 ; SAtk
-	bigdw 47 ; SDef
-	db "KENTAROSU@@"
-
-
-	db AZUMARILL
-	db MYSTIC_WATER
-	db SURF, BLIZZARD, ATTRACT, RAIN_DANCE
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	db $ed, $f7 ; DVs
-	db 15, 5, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 82 ; HP
-	bigdw 82 ; Max HP
-	bigdw 40 ; Atk
-	bigdw 52 ; Def
-	bigdw 41 ; Spd
-	bigdw 37 ; SAtk
-	bigdw 49 ; SDef
-	db "MARIRURI@@@"
-
-
-	db MILTANK
-	db KINGS_ROCK
-	db EARTHQUAKE, THUNDER, ATTRACT, SURF
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	db $df, $fe ; DVs
-	db 10, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 83 ; HP
-	bigdw 83 ; Max HP
-	bigdw 52 ; Atk
-	bigdw 63 ; Def
-	bigdw 61 ; Spd
-	bigdw 36 ; SAtk
-	bigdw 48 ; SDef
-	db "MIRUTANKU@@"
-
-
-	db WIGGLYTUFF
-	db GOLD_BERRY
-	db HYPER_BEAM, BLIZZARD, FIRE_BLAST, ATTRACT
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	db $c7, $fe ; DVs
-	db 5, 5, 5, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 98 ; HP
-	bigdw 98 ; Max HP
-	bigdw 47 ; Atk
-	bigdw 35 ; Def
-	bigdw 39 ; Spd
-	bigdw 50 ; SAtk
-	bigdw 40 ; SDef
-	db "PUKURIN@@@@"
-
-
-	db WIGGLYTUFF
-	db PINK_BOW
-	db PSYCHIC_M, SWAGGER, PSYCH_UP, HEADBUTT
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $c7, $77 ; DVs
-	db 10, 15, 10, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 97 ; HP
-	bigdw 97 ; Max HP
-	bigdw 46 ; Atk
-	bigdw 34 ; Def
-	bigdw 34 ; Spd
-	bigdw 46 ; SAtk
-	bigdw 36 ; SDef
-	db "PUKURIN@@@@"
-
-
-	db NIDOKING
-	db BERRY
-	db BLIZZARD, EARTHQUAKE, SURF, THUNDERPUNCH
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $56, $46 ; DVs
-	db 5, 10, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 74 ; HP
-	bigdw 74 ; Max HP
-	bigdw 52 ; Atk
-	bigdw 46 ; Def
-	bigdw 49 ; Spd
-	bigdw 50 ; SAtk
-	bigdw 46 ; SDef
-	db "NIDOKINGU@@"
-
-
-	db QUAGSIRE
-	db QUICK_CLAW
-	db AMNESIA, EARTHQUAKE, SURF, RAIN_DANCE
-	dw 0 ; OT ID
-	dt 8000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $55, $47 ; DVs
-	db 20, 10, 15, 5 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 20 ; Level
-	db 0, 0 ; Status
-	bigdw 81 ; HP
-	bigdw 81 ; Max HP
-	bigdw 49 ; Atk
-	bigdw 49 ; Def
-	bigdw 29 ; Spd
-	bigdw 42 ; SAtk
-	bigdw 42 ; SDef
-	db "NUO-@@@@@@@"
-
-
-
-
-BattleTowerMons3:
-
-	db JOLTEON
-	db MIRACLEBERRY
-	db THUNDERBOLT, THUNDER_WAVE, ROAR, MUD_SLAP
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	db $db, $ed ; DVs
-	db 15, 20, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 103 ; HP
-	bigdw 103 ; Max HP
-	bigdw 68 ; Atk
-	bigdw 64 ; Def
-	bigdw 107 ; Spd
-	bigdw 96 ; SAtk
-	bigdw 87 ; SDef
-	db "SANDA-SU@@@"
-
-
-	db POLIWRATH
-	db BRIGHTPOWDER
-	db DOUBLE_TEAM, SURF, FISSURE, SUBMISSION
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 55000
-	bigdw 55000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $fb ; DVs
-	db 15, 15, 5, 25 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 119 ; HP
-	bigdw 119 ; Max HP
-	bigdw 81 ; Atk
-	bigdw 87 ; Def
-	bigdw 73 ; Spd
-	bigdw 70 ; SAtk
-	bigdw 82 ; SDef
-	db "NIyoROBON@@"
-
-
-	db STARMIE
-	db LEFTOVERS
-	db THUNDER_WAVE, PSYCHIC_M, RECOVER, SURF
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ff, $ff ; DVs
-	db 20, 10, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 101 ; HP
-	bigdw 101 ; Max HP
-	bigdw 75 ; Atk
-	bigdw 81 ; Def
-	bigdw 99 ; Spd
-	bigdw 90 ; SAtk
-	bigdw 81 ; SDef
-	db "SUTA-MI-@@@"
-
-
-	db JYNX
-	db GOLD_BERRY
-	db BLIZZARD, LOVELY_KISS, DREAM_EATER, ATTRACT
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 50000
-	db $fb, $ee ; DVs
-	db 5, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 102 ; HP
-	bigdw 102 ; Max HP
-	bigdw 60 ; Atk
-	bigdw 49 ; Def
-	bigdw 83 ; Spd
-	bigdw 98 ; SAtk
-	bigdw 86 ; SDef
-	db "RU-ZIyuRA@@"
-
-
-	db DUGTRIO
-	db KINGS_ROCK
-	db EARTHQUAKE, SLUDGE_BOMB, SLASH, MUD_SLAP
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 50000
-	bigdw 50000
-	db $ef, $ff ; DVs
-	db 10, 10, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 81 ; HP
-	bigdw 81 ; Max HP
-	bigdw 77 ; Atk
-	bigdw 56 ; Def
-	bigdw 102 ; Spd
-	bigdw 60 ; SAtk
-	bigdw 72 ; SDef
-	db "DAGUTORIO@@"
-
-
-	db BELLOSSOM
-	db BRIGHTPOWDER
-	db GIGA_DRAIN, SUNNY_DAY, SOLARBEAM, DOUBLE_TEAM
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $df, $db ; DVs
-	db 5, 5, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 109 ; HP
-	bigdw 109 ; Max HP
-	bigdw 76 ; Atk
-	bigdw 81 ; Def
-	bigdw 60 ; Spd
-	bigdw 82 ; SAtk
-	bigdw 88 ; SDef
-	db "KIREIHANA@@"
-
-
-	db BLISSEY
-	db LEFTOVERS
-	db TOXIC, REFLECT, SOFTBOILED, PROTECT
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 30000
-	bigdw 45000
-	bigdw 30000
-	bigdw 45000
-	db $fb, $ed ; DVs
-	db 10, 20, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 217 ; HP
-	bigdw 217 ; Max HP
-	bigdw 32 ; Atk
-	bigdw 33 ; Def
-	bigdw 59 ; Spd
-	bigdw 73 ; SAtk
-	bigdw 109 ; SDef
-	db "HAPINASU@@@"
-
-
-	db HOUNDOOM
-	db CHARCOAL
-	db FLAMETHROWER, CRUNCH, SHADOW_BALL, DREAM_EATER
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	db $fd, $ed ; DVs
-	db 15, 15, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 108 ; HP
-	bigdw 108 ; Max HP
-	bigdw 84 ; Atk
-	bigdw 59 ; Def
-	bigdw 86 ; Spd
-	bigdw 94 ; SAtk
-	bigdw 76 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db MACHAMP
-	db MIRACLEBERRY
-	db CROSS_CHOP, ICE_PUNCH, EARTHQUAKE, FIRE_BLAST
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	db $fd, $be ; DVs
-	db 5, 15, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 118 ; HP
-	bigdw 118 ; Max HP
-	bigdw 108 ; Atk
-	bigdw 75 ; Def
-	bigdw 61 ; Spd
-	bigdw 68 ; SAtk
-	bigdw 80 ; SDef
-	db "KAIRIKI-@@@"
-
-
-	db CROBAT
-	db GOLD_BERRY
-	db ATTRACT, CONFUSE_RAY, TOXIC, WING_ATTACK
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 30000
-	bigdw 50000
-	db $ef, $dc ; DVs
-	db 15, 10, 10, 35 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 111 ; HP
-	bigdw 111 ; Max HP
-	bigdw 83 ; Atk
-	bigdw 74 ; Def
-	bigdw 103 ; Spd
-	bigdw 70 ; SAtk
-	bigdw 76 ; SDef
-	db "KUROBAtuTO@"
-
-
-	db PORYGON2
-	db BRIGHTPOWDER
-	db PSYCHIC_M, RECOVER, HYPER_BEAM, TRI_ATTACK
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 30000
-	bigdw 40000
-	bigdw 55000
-	bigdw 30000
-	db $df, $db ; DVs
-	db 10, 20, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 117 ; HP
-	bigdw 117 ; Max HP
-	bigdw 73 ; Atk
-	bigdw 83 ; Def
-	bigdw 66 ; Spd
-	bigdw 87 ; SAtk
-	bigdw 81 ; SDef
-	db "PORIGON2@@@"
-
-
-	db MAROWAK
-	db THICK_CLUB
-	db EARTHQUAKE, RETURN, HYPER_BEAM, BONEMERANG
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 30000
-	db $dd, $eb ; DVs
-	db 10, 20, 5, 10 ; PP
-	db 255 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 99 ; HP
-	bigdw 99 ; Max HP
-	bigdw 77 ; Atk
-	bigdw 94 ; Def
-	bigdw 56 ; Spd
-	bigdw 54 ; SAtk
-	bigdw 72 ; SDef
-	db "GARAGARA@@@"
-
-
-	db ELECTRODE
-	db BRIGHTPOWDER
-	db LIGHT_SCREEN, THUNDERBOLT, PROTECT, THUNDER
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 45000
-	bigdw 40000
-	bigdw 45000
-	bigdw 50000
-	db $bd, $ef ; DVs
-	db 30, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 98 ; HP
-	bigdw 98 ; Max HP
-	bigdw 57 ; Atk
-	bigdw 69 ; Def
-	bigdw 113 ; Spd
-	bigdw 78 ; SAtk
-	bigdw 78 ; SDef
-	db "MARUMAIN@@@"
-
-
-	db LAPRAS
-	db LEFTOVERS
-	db RAIN_DANCE, WATER_GUN, ICY_WIND, STRENGTH
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 35000
-	bigdw 50000
-	bigdw 30000
-	db $fd, $eb ; DVs
-	db 5, 25, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 142 ; HP
-	bigdw 142 ; Max HP
-	bigdw 80 ; Atk
-	bigdw 74 ; Def
-	bigdw 65 ; Spd
-	bigdw 75 ; SAtk
-	bigdw 81 ; SDef
-	db "RAPURASU@@@"
-
-
-	db LANTURN
-	db GOLD_BERRY
-	db RAIN_DANCE, THUNDER, SURF, FLAIL
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 30000
-	bigdw 30000
-	db $dd, $eb ; DVs
-	db 5, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 139 ; HP
-	bigdw 139 ; Max HP
-	bigdw 62 ; Atk
-	bigdw 64 ; Def
-	bigdw 66 ; Spd
-	bigdw 70 ; SAtk
-	bigdw 70 ; SDef
-	db "RANTA-N@@@@"
-
-
-	db ESPEON
-	db MIRACLEBERRY
-	db CONFUSION, SWIFT, TOXIC, PSYCH_UP
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ef, $f7 ; DVs
-	db 25, 20, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 99 ; HP
-	bigdw 99 ; Max HP
-	bigdw 68 ; Atk
-	bigdw 66 ; Def
-	bigdw 96 ; Spd
-	bigdw 103 ; SAtk
-	bigdw 82 ; SDef
-	db "E-HUi@@@@@@"
-
-
-	db TENTACRUEL
-	db KINGS_ROCK
-	db WRAP, TOXIC, SLUDGE_BOMB, BUBBLEBEAM
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 47000
-	bigdw 45000
-	db $fe, $fe ; DVs
-	db 20, 10, 10, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 110 ; HP
-	bigdw 110 ; Max HP
-	bigdw 71 ; Atk
-	bigdw 68 ; Def
-	bigdw 90 ; Spd
-	bigdw 77 ; SAtk
-	bigdw 101 ; SDef
-	db "DOKUKURAGE@"
-
-
-	db GENGAR
-	db GOLD_BERRY
-	db THIEF, LICK, NIGHT_SHADE, GIGA_DRAIN
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $f7, $f7 ; DVs
-	db 10, 30, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 101 ; HP
-	bigdw 101 ; Max HP
-	bigdw 68 ; Atk
-	bigdw 61 ; Def
-	bigdw 96 ; Spd
-	bigdw 103 ; SAtk
-	bigdw 70 ; SDef
-	db "GENGA-@@@@@"
-
-
-	db URSARING
-	db GOLD_BERRY
-	db HEADBUTT, PROTECT, ROAR, LEER
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $77, $45 ; DVs
-	db 15, 10, 20, 30 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 114 ; HP
-	bigdw 114 ; Max HP
-	bigdw 100 ; Atk
-	bigdw 67 ; Def
-	bigdw 53 ; Spd
-	bigdw 65 ; SAtk
-	bigdw 65 ; SDef
-	db "RINGUMA@@@@"
-
-
-	db FEAROW
-	db BRIGHTPOWDER
-	db MIRROR_MOVE, PURSUIT, PECK, SWIFT
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $67, $77 ; DVs
-	db 20, 20, 35, 20 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 96 ; HP
-	bigdw 96 ; Max HP
-	bigdw 75 ; Atk
-	bigdw 61 ; Def
-	bigdw 82 ; Spd
-	bigdw 58 ; SAtk
-	bigdw 58 ; SDef
-	db "ONIDORIRU@@"
-
-
-	db PRIMEAPE
-	db MIRACLEBERRY
-	db LOW_KICK, KARATE_CHOP, REVERSAL, FOCUS_ENERGY
-	dw 0 ; OT ID
-	dt 27000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $77, $67 ; DVs
-	db 20, 25, 15, 30 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 30 ; Level
-	db 0, 0 ; Status
-	bigdw 99 ; HP
-	bigdw 99 ; Max HP
-	bigdw 85 ; Atk
-	bigdw 58 ; Def
-	bigdw 78 ; Spd
-	bigdw 58 ; SAtk
-	bigdw 64 ; SDef
-	db "OKORIZARU@@"
-
-
-
-
-BattleTowerMons4:
-
-	db TAUROS
-	db GOLD_BERRY
-	db RETURN, HYPER_BEAM, EARTHQUAKE, IRON_TAIL
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $fe ; DVs
-	db 20, 5, 10, 15 ; PP
-	db 255 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 143 ; HP
-	bigdw 143 ; Max HP
-	bigdw 119 ; Atk
-	bigdw 113 ; Def
-	bigdw 127 ; Spd
-	bigdw 70 ; SAtk
-	bigdw 94 ; SDef
-	db "KENTAROSU@@"
-
-
-	db KINGDRA
-	db LEFTOVERS
-	db SURF, DRAGONBREATH, HYPER_BEAM, BLIZZARD
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $ef ; DVs
-	db 15, 20, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 142 ; HP
-	bigdw 142 ; Max HP
-	bigdw 115 ; Atk
-	bigdw 113 ; Def
-	bigdw 106 ; Spd
-	bigdw 115 ; SAtk
-	bigdw 115 ; SDef
-	db "KINGUDORA@@"
-
-
-	db SNORLAX
-	db QUICK_CLAW
-	db ATTRACT, BODY_SLAM, PSYCH_UP, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ed, $dd ; DVs
-	db 15, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 205 ; HP
-	bigdw 205 ; Max HP
-	bigdw 126 ; Atk
-	bigdw 89 ; Def
-	bigdw 61 ; Spd
-	bigdw 89 ; SAtk
-	bigdw 125 ; SDef
-	db "KABIGON@@@@"
-
-
-	db LAPRAS
-	db LEFTOVERS
-	db THUNDERBOLT, ICE_BEAM, CONFUSE_RAY, SURF
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $eb ; DVs
-	db 15, 10, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 186 ; HP
-	bigdw 186 ; Max HP
-	bigdw 107 ; Atk
-	bigdw 101 ; Def
-	bigdw 86 ; Spd
-	bigdw 103 ; SAtk
-	bigdw 111 ; SDef
-	db "RAPURASU@@@"
-
-
-	db STEELIX
-	db GOLD_BERRY
-	db SANDSTORM, IRON_TAIL, EARTHQUAKE, TOXIC
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ef, $db ; DVs
-	db 10, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 137 ; HP
-	bigdw 137 ; Max HP
-	bigdw 106 ; Atk
-	bigdw 199 ; Def
-	bigdw 61 ; Spd
-	bigdw 79 ; SAtk
-	bigdw 87 ; SDef
-	db "HAGANE-RU@@"
-
-
-	db ALAKAZAM
-	db KINGS_ROCK
-	db PSYCHIC_M, THUNDERPUNCH, RECOVER, FIRE_PUNCH
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $ef ; DVs
-	db 10, 15, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 126 ; HP
-	bigdw 126 ; Max HP
-	bigdw 76 ; Atk
-	bigdw 73 ; Def
-	bigdw 135 ; Spd
-	bigdw 147 ; SAtk
-	bigdw 107 ; SDef
-	db "HU-DEiN@@@@"
-
-
-	db STARMIE
-	db LEFTOVERS
-	db BLIZZARD, THUNDERBOLT, SURF, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	db $fd, $be ; DVs
-	db 5, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 131 ; HP
-	bigdw 131 ; Max HP
-	bigdw 99 ; Atk
-	bigdw 104 ; Def
-	bigdw 127 ; Spd
-	bigdw 117 ; SAtk
-	bigdw 105 ; SDef
-	db "SUTA-MI-@@@"
-
-
-	db WOBBUFFET
-	db GOLD_BERRY
-	db COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $bf, $e7 ; DVs
-	db 20, 20, 25, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 233 ; HP
-	bigdw 233 ; Max HP
-	bigdw 62 ; Atk
-	bigdw 85 ; Def
-	bigdw 64 ; Spd
-	bigdw 59 ; SAtk
-	bigdw 79 ; SDef
-	db "SO-NANSU@@@"
-
-
-	db GOLEM
-	db FOCUS_BAND
-	db EXPLOSION, EARTHQUAKE, MEGA_PUNCH, ROCK_SLIDE
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	db $dd, $ed ; DVs
-	db 5, 10, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 145 ; HP
-	bigdw 145 ; Max HP
-	bigdw 125 ; Atk
-	bigdw 139 ; Def
-	bigdw 74 ; Spd
-	bigdw 80 ; SAtk
-	bigdw 88 ; SDef
-	db "GORO-NIya@@"
-
-
-	db SCIZOR
-	db SCOPE_LENS
-	db SLASH, STEEL_WING, PURSUIT, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	db $bd, $fe ; DVs
-	db 20, 25, 20, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 139 ; HP
-	bigdw 139 ; Max HP
-	bigdw 139 ; Atk
-	bigdw 117 ; Def
-	bigdw 89 ; Spd
-	bigdw 82 ; SAtk
-	bigdw 102 ; SDef
-	db "HAtuSAMU@@@"
-
-
-	db DUGTRIO
-	db KINGS_ROCK
-	db EARTHQUAKE, HYPER_BEAM, SLUDGE_BOMB, MUD_SLAP
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $bb ; DVs
-	db 10, 5, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 108 ; HP
-	bigdw 108 ; Max HP
-	bigdw 103 ; Atk
-	bigdw 78 ; Def
-	bigdw 131 ; Spd
-	bigdw 75 ; SAtk
-	bigdw 91 ; SDef
-	db "DAGUTORIO@@"
-
-
-	db SLOWBRO
-	db MIRACLEBERRY
-	db SURF, PSYCHIC_M, EARTHQUAKE, BLIZZARD
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $bf, $cf ; DVs
-	db 15, 10, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 157 ; HP
-	bigdw 157 ; Max HP
-	bigdw 95 ; Atk
-	bigdw 126 ; Def
-	bigdw 60 ; Spd
-	bigdw 119 ; SAtk
-	bigdw 103 ; SDef
-	db "YADORAN@@@@"
-
-
-	db PORYGON2
-	db NO_ITEM
-	db CONVERSION2, CONVERSION, PSYBEAM, THIEF
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $bc, $ef ; DVs
-	db 30, 30, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 147 ; HP
-	bigdw 147 ; Max HP
-	bigdw 99 ; Atk
-	bigdw 108 ; Def
-	bigdw 86 ; Spd
-	bigdw 123 ; SAtk
-	bigdw 115 ; SDef
-	db "PORIGON2@@@"
-
-
-	db ARCANINE
-	db CHARCOAL
-	db FLAME_WHEEL, LEER, BODY_SLAM, ROAR
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $bb ; DVs
-	db 25, 30, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 152 ; HP
-	bigdw 152 ; Max HP
-	bigdw 127 ; Atk
-	bigdw 102 ; Def
-	bigdw 111 ; Spd
-	bigdw 115 ; SAtk
-	bigdw 99 ; SDef
-	db "UINDEi@@@@@"
-
-
-	db FORRETRESS
-	db LEFTOVERS
-	db RAPID_SPIN, PROTECT, TOXIC, SANDSTORM
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fa, $7f ; DVs
-	db 40, 10, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 140 ; HP
-	bigdw 140 ; Max HP
-	bigdw 111 ; Atk
-	bigdw 147 ; Def
-	bigdw 64 ; Spd
-	bigdw 87 ; SAtk
-	bigdw 87 ; SDef
-	db "HUoRETOSU@@"
-
-
-	db OMASTAR
-	db GOLD_BERRY
-	db CURSE, WATER_GUN, ANCIENTPOWER, ROCK_SMASH
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ef, $f7 ; DVs
-	db 10, 25, 5, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 133 ; HP
-	bigdw 133 ; Max HP
-	bigdw 86 ; Atk
-	bigdw 139 ; Def
-	bigdw 83 ; Spd
-	bigdw 124 ; SAtk
-	bigdw 88 ; SDef
-	db "OMUSUTA-@@@"
-
-
-	db CHARIZARD
-	db KINGS_ROCK
-	db FIRE_SPIN, DRAGON_RAGE, FLY, SLASH
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fe ; DVs
-	db 15, 10, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 142 ; HP
-	bigdw 142 ; Max HP
-	bigdw 106 ; Atk
-	bigdw 100 ; Def
-	bigdw 119 ; Spd
-	bigdw 125 ; SAtk
-	bigdw 106 ; SDef
-	db "RIZA-DON@@@"
-
-
-	db EXEGGUTOR
-	db BRIGHTPOWDER
-	db EGG_BOMB, STOMP, PSYCH_UP, CONFUSION
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $f7, $e7 ; DVs
-	db 10, 20, 10, 25 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 158 ; HP
-	bigdw 158 ; Max HP
-	bigdw 115 ; Atk
-	bigdw 100 ; Def
-	bigdw 82 ; Spd
-	bigdw 132 ; SAtk
-	bigdw 84 ; SDef
-	db "NAtuSI-@@@@"
-
-
-	db HYPNO
-	db BRIGHTPOWDER
-	db CONFUSION, THUNDERPUNCH, HEADBUTT, DISABLE
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $77, $7a ; DVs
-	db 25, 15, 15, 20 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 146 ; HP
-	bigdw 146 ; Max HP
-	bigdw 86 ; Atk
-	bigdw 83 ; Def
-	bigdw 81 ; Spd
-	bigdw 88 ; SAtk
-	bigdw 122 ; SDef
-	db "SURI-PA-@@@"
-
-
-	db MUK
-	db QUICK_CLAW
-	db SCREECH, TOXIC, SLUDGE, HARDEN
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $75, $6b ; DVs
-	db 40, 10, 20, 30 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 161 ; HP
-	bigdw 161 ; Max HP
-	bigdw 111 ; Atk
-	bigdw 86 ; Def
-	bigdw 67 ; Spd
-	bigdw 83 ; SAtk
-	bigdw 111 ; SDef
-	db "BETOBETON@@"
-
-
-	db ELECTABUZZ
-	db KINGS_ROCK
-	db LIGHT_SCREEN, THUNDERPUNCH, SWIFT, SNORE
-	dw 0 ; OT ID
-	dt 64000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $65, $77 ; DVs
-	db 30, 15, 20, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 40 ; Level
-	db 0, 0 ; Status
-	bigdw 124 ; HP
-	bigdw 124 ; Max HP
-	bigdw 93 ; Atk
-	bigdw 71 ; Def
-	bigdw 111 ; Spd
-	bigdw 103 ; SAtk
-	bigdw 95 ; SDef
-	db "EREBU-@@@@@"
-
-
-
-
-BattleTowerMons5:
-
-	db KINGDRA
-	db GOLD_BERRY
-	db SURF, HYPER_BEAM, BLIZZARD, DRAGONBREATH
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 55000
-	bigdw 60000
-	bigdw 50000
-	bigdw 55000
-	db $dd, $ff ; DVs
-	db 15, 5, 5, 20 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 179 ; HP
-	bigdw 179 ; Max HP
-	bigdw 142 ; Atk
-	bigdw 143 ; Def
-	bigdw 132 ; Spd
-	bigdw 144 ; SAtk
-	bigdw 144 ; SDef
-	db "KINGUDORA@@"
-
-
-	db HOUNDOOM
-	db MIRACLEBERRY
-	db REST, CRUNCH, DREAM_EATER, FLAMETHROWER
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	db $dd, $fc ; DVs
-	db 10, 15, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 178 ; HP
-	bigdw 178 ; Max HP
-	bigdw 135 ; Atk
-	bigdw 98 ; Def
-	bigdw 145 ; Spd
-	bigdw 157 ; SAtk
-	bigdw 127 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db SHUCKLE
-	db LEFTOVERS
-	db SANDSTORM, REST, TOXIC, WRAP
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 55000
-	db $fd, $cf ; DVs
-	db 10, 10, 10, 20 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 123 ; HP
-	bigdw 123 ; Max HP
-	bigdw 60 ; Atk
-	bigdw 278 ; Def
-	bigdw 52 ; Spd
-	bigdw 59 ; SAtk
-	bigdw 279 ; SDef
-	db "TUBOTUBO@@@"
-
-
-	db SNORLAX
-	db LEFTOVERS
-	db HYPER_BEAM, EARTHQUAKE, SURF, PSYCH_UP
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 55000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	db $fd, $ef ; DVs
-	db 5, 10, 15, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 263 ; HP
-	bigdw 263 ; Max HP
-	bigdw 159 ; Atk
-	bigdw 112 ; Def
-	bigdw 79 ; Spd
-	bigdw 114 ; SAtk
-	bigdw 159 ; SDef
-	db "KABIGON@@@@"
-
-
-	db LAPRAS
-	db GOLD_BERRY
-	db THUNDERBOLT, SURF, CONFUSE_RAY, BLIZZARD
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 60000
-	bigdw 60000
-	bigdw 55000
-	bigdw 60000
-	db $dd, $dd ; DVs
-	db 15, 15, 10, 5 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 234 ; HP
-	bigdw 234 ; Max HP
-	bigdw 133 ; Atk
-	bigdw 128 ; Def
-	bigdw 107 ; Spd
-	bigdw 133 ; SAtk
-	bigdw 143 ; SDef
-	db "RAPURASU@@@"
-
-
-	db JOLTEON
-	db KINGS_ROCK
-	db THUNDERBOLT, THUNDER_WAVE, SHADOW_BALL, HIDDEN_POWER
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 60000
-	bigdw 57000
-	bigdw 55000
-	bigdw 55000
-	db $ed, $ff ; DVs
-	db 15, 20, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 161 ; HP
-	bigdw 161 ; Max HP
-	bigdw 114 ; Atk
-	bigdw 107 ; Def
-	bigdw 179 ; Spd
-	bigdw 159 ; SAtk
-	bigdw 144 ; SDef
-	db "SANDA-SU@@@"
-
-
-	db SCIZOR
-	db LEFTOVERS
-	db HYPER_BEAM, SLASH, AGILITY, METAL_CLAW
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	db $df, $ed ; DVs
-	db 5, 20, 30, 35 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 169 ; HP
-	bigdw 169 ; Max HP
-	bigdw 175 ; Atk
-	bigdw 145 ; Def
-	bigdw 111 ; Spd
-	bigdw 99 ; SAtk
-	bigdw 124 ; SDef
-	db "HAtuSAMU@@@"
-
-
-	db SLOWKING
-	db MINT_BERRY
-	db REST, SURF, PSYCHIC_M, AMNESIA
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $df, $de ; DVs
-	db 10, 15, 10, 20 ; PP
-	db 15 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 196 ; HP
-	bigdw 196 ; Max HP
-	bigdw 118 ; Atk
-	bigdw 126 ; Def
-	bigdw 75 ; Spd
-	bigdw 146 ; SAtk
-	bigdw 156 ; SDef
-	db "YADOKINGU@@"
-
-
-	db MACHAMP
-	db GOLD_BERRY
-	db CROSS_CHOP, EARTHQUAKE, FIRE_BLAST, THUNDERPUNCH
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 44000
-	db $ff, $ec ; DVs
-	db 5, 10, 5, 15 ; PP
-	db 13 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 187 ; HP
-	bigdw 187 ; Max HP
-	bigdw 176 ; Atk
-	bigdw 127 ; Def
-	bigdw 99 ; Spd
-	bigdw 108 ; SAtk
-	bigdw 128 ; SDef
-	db "KAIRIKI-@@@"
-
-
-	db STARMIE
-	db SCOPE_LENS
-	db THUNDER_WAVE, RECOVER, THUNDERBOLT, SURF
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 44000
-	bigdw 40000
-	bigdw 45000
-	bigdw 40000
-	db $ff, $ff ; DVs
-	db 20, 20, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 161 ; HP
-	bigdw 161 ; Max HP
-	bigdw 121 ; Atk
-	bigdw 130 ; Def
-	bigdw 161 ; Spd
-	bigdw 145 ; SAtk
-	bigdw 130 ; SDef
-	db "SUTA-MI-@@@"
-
-
-	db DUGTRIO
-	db KINGS_ROCK
-	db EARTHQUAKE, SLASH, HYPER_BEAM, SLUDGE_BOMB
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	db $f7, $fe ; DVs
-	db 10, 20, 5, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 135 ; HP
-	bigdw 135 ; Max HP
-	bigdw 125 ; Atk
-	bigdw 89 ; Def
-	bigdw 166 ; Spd
-	bigdw 96 ; SAtk
-	bigdw 116 ; SDef
-	db "DAGUTORIO@@"
-
-
-	db ELECTRODE
-	db MIRACLEBERRY
-	db THUNDERBOLT, EXPLOSION, MIRROR_COAT, REST
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 54000
-	bigdw 40000
-	bigdw 50000
-	db $7d, $fe ; DVs
-	db 15, 5, 20, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 161 ; HP
-	bigdw 161 ; Max HP
-	bigdw 88 ; Atk
-	bigdw 117 ; Def
-	bigdw 185 ; Spd
-	bigdw 126 ; SAtk
-	bigdw 126 ; SDef
-	db "MARUMAIN@@@"
-
-
-	db AERODACTYL
-	db KINGS_ROCK
-	db HYPER_BEAM, EARTHQUAKE, FIRE_BLAST, IRON_TAIL
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	db $fd, $dd ; DVs
-	db 5, 10, 5, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 181 ; HP
-	bigdw 181 ; Max HP
-	bigdw 152 ; Atk
-	bigdw 110 ; Def
-	bigdw 174 ; Spd
-	bigdw 104 ; SAtk
-	bigdw 119 ; SDef
-	db "PUTERA@@@@@"
-
-
-	db CROBAT
-	db LEFTOVERS
-	db CONFUSE_RAY, ATTRACT, HYPER_BEAM, TOXIC
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 40000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	db $ef, $ff ; DVs
-	db 10, 15, 5, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 178 ; HP
-	bigdw 178 ; Max HP
-	bigdw 134 ; Atk
-	bigdw 127 ; Def
-	bigdw 175 ; Spd
-	bigdw 117 ; SAtk
-	bigdw 127 ; SDef
-	db "KUROBAtuTO@"
-
-
-	db ZAPDOS
-	db MIRACLEBERRY
-	db DRILL_PECK, THUNDERBOLT, THUNDER_WAVE, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 40000
-	bigdw 50000
-	db $fd, $de ; DVs
-	db 20, 15, 20, 5 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 190 ; HP
-	bigdw 190 ; Max HP
-	bigdw 137 ; Atk
-	bigdw 129 ; Def
-	bigdw 143 ; Spd
-	bigdw 171 ; SAtk
-	bigdw 136 ; SDef
-	db "SANDA-@@@@@"
-
-
-	db SKARMORY
-	db GOLD_BERRY
-	db SANDSTORM, FLY, STEEL_WING, TOXIC
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 40000
-	db $d7, $ed ; DVs
-	db 10, 15, 25, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 164 ; HP
-	bigdw 164 ; Max HP
-	bigdw 125 ; Atk
-	bigdw 179 ; Def
-	bigdw 116 ; Spd
-	bigdw 83 ; SAtk
-	bigdw 113 ; SDef
-	db "EA-MUDO@@@@"
-
-
-	db FORRETRESS
-	db LEFTOVERS
-	db SANDSTORM, TOXIC, EXPLOSION, SWAGGER
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 45000
-	bigdw 40000
-	db $cf, $dd ; DVs
-	db 10, 10, 5, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 169 ; HP
-	bigdw 169 ; Max HP
-	bigdw 134 ; Atk
-	bigdw 189 ; Def
-	bigdw 84 ; Spd
-	bigdw 103 ; SAtk
-	bigdw 103 ; SDef
-	db "HUoRETOSU@@"
-
-
-	db STEELIX
-	db MIRACLEBERRY
-	db SANDSTORM, IRON_TAIL, REST, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 40000
-	bigdw 45000
-	db $dd, $dd ; DVs
-	db 10, 15, 10, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 176 ; HP
-	bigdw 176 ; Max HP
-	bigdw 130 ; Atk
-	bigdw 245 ; Def
-	bigdw 73 ; Spd
-	bigdw 99 ; SAtk
-	bigdw 109 ; SDef
-	db "HAGANE-RU@@"
-
-
-	db GIRAFARIG
-	db SCOPE_LENS
-	db DREAM_EATER, CRUNCH, PSYCHIC_M, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	db $45, $56 ; DVs
-	db 15, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 161 ; HP
-	bigdw 161 ; Max HP
-	bigdw 114 ; Atk
-	bigdw 100 ; Def
-	bigdw 120 ; Spd
-	bigdw 126 ; SAtk
-	bigdw 101 ; SDef
-	db "KIRINRIKI@@"
-
-
-	db GYARADOS
-	db MIRACLEBERRY
-	db HYPER_BEAM, SURF, RAIN_DANCE, ZAP_CANNON
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	db $75, $65 ; DVs
-	db 5, 15, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 193 ; HP
-	bigdw 193 ; Max HP
-	bigdw 162 ; Atk
-	bigdw 114 ; Def
-	bigdw 117 ; Spd
-	bigdw 95 ; SAtk
-	bigdw 135 ; SDef
-	db "GIyaRADOSU@"
-
-
-	db ARTICUNO
-	db GOLD_BERRY
-	db BLIZZARD, HYPER_BEAM, ROAR, ICY_WIND
-	dw 0 ; OT ID
-	dt 125000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	bigdw 40000
-	db $45, $56 ; DVs
-	db 5, 5, 20, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 50 ; Level
-	db 0, 0 ; Status
-	bigdw 181 ; HP
-	bigdw 181 ; Max HP
-	bigdw 119 ; Atk
-	bigdw 135 ; Def
-	bigdw 120 ; Spd
-	bigdw 131 ; SAtk
-	bigdw 161 ; SDef
-	db "HURI-ZA-@@@"
-
-
-
-
-BattleTowerMons6:
-
-	db KINGDRA
-	db LEFTOVERS
-	db DRAGONBREATH, SURF, HYPER_BEAM, BLIZZARD
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 55000
-	bigdw 50000
-	bigdw 60000
-	bigdw 60000
-	db $dd, $fe ; DVs
-	db 20, 15, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 211 ; HP
-	bigdw 211 ; Max HP
-	bigdw 169 ; Atk
-	bigdw 167 ; Def
-	bigdw 161 ; Spd
-	bigdw 172 ; SAtk
-	bigdw 172 ; SDef
-	db "KINGUDORA@@"
-
-
-	db TYRANITAR
-	db GOLD_BERRY
-	db CRUNCH, EARTHQUAKE, ROCK_SLIDE, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	db $fd, $ed ; DVs
-	db 15, 10, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 240 ; HP
-	bigdw 240 ; Max HP
-	bigdw 220 ; Atk
-	bigdw 187 ; Def
-	bigdw 131 ; Spd
-	bigdw 169 ; SAtk
-	bigdw 175 ; SDef
-	db "BANGIRASU@@"
-
-
-	db HOUNDOOM
-	db MIRACLEBERRY
-	db FLAMETHROWER, CRUNCH, DREAM_EATER, REST
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 55000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	db $fb, $ef ; DVs
-	db 15, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 212 ; HP
-	bigdw 212 ; Max HP
-	bigdw 165 ; Atk
-	bigdw 113 ; Def
-	bigdw 172 ; Spd
-	bigdw 189 ; SAtk
-	bigdw 153 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db PORYGON2
-	db LEFTOVERS
-	db BLIZZARD, RECOVER, TOXIC, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	db $dd, $de ; DVs
-	db 5, 20, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 223 ; HP
-	bigdw 223 ; Max HP
-	bigdw 149 ; Atk
-	bigdw 161 ; Def
-	bigdw 125 ; Spd
-	bigdw 182 ; SAtk
-	bigdw 170 ; SDef
-	db "PORIGON2@@@"
-
-
-	db MACHAMP
-	db QUICK_CLAW
-	db FIRE_PUNCH, CROSS_CHOP, THUNDERPUNCH, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $ef ; DVs
-	db 15, 5, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 226 ; HP
-	bigdw 226 ; Max HP
-	bigdw 212 ; Atk
-	bigdw 148 ; Def
-	bigdw 120 ; Spd
-	bigdw 134 ; SAtk
-	bigdw 158 ; SDef
-	db "KAIRIKI-@@@"
-
-
-	db ZAPDOS
-	db MINT_BERRY
-	db REST, DRILL_PECK, THUNDERBOLT, THUNDER_WAVE
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $fd ; DVs
-	db 10, 20, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 229 ; HP
-	bigdw 229 ; Max HP
-	bigdw 160 ; Atk
-	bigdw 155 ; Def
-	bigdw 177 ; Spd
-	bigdw 203 ; SAtk
-	bigdw 161 ; SDef
-	db "SANDA-@@@@@"
-
-
-	db WOBBUFFET
-	db GOLD_BERRY
-	db COUNTER, MIRROR_COAT, DESTINY_BOND, SAFEGUARD
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	db $fd, $ed ; DVs
-	db 20, 20, 5, 25 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 346 ; HP
-	bigdw 346 ; Max HP
-	bigdw 95 ; Atk
-	bigdw 122 ; Def
-	bigdw 94 ; Spd
-	bigdw 92 ; SAtk
-	bigdw 122 ; SDef
-	db "SO-NANSU@@@"
-
-
-	db AERODACTYL
-	db LEFTOVERS
-	db HYPER_BEAM, SUPERSONIC, EARTHQUAKE, BITE
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	db $fd, $dd ; DVs
-	db 5, 20, 10, 25 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 215 ; HP
-	bigdw 215 ; Max HP
-	bigdw 182 ; Atk
-	bigdw 131 ; Def
-	bigdw 208 ; Spd
-	bigdw 124 ; SAtk
-	bigdw 142 ; SDef
-	db "PUTERA@@@@@"
-
-
-	db DRAGONITE
-	db MIRACLEBERRY
-	db HYPER_BEAM, ICY_WIND, THUNDERBOLT, SURF
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	db $dd, $fd ; DVs
-	db 5, 15, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 229 ; HP
-	bigdw 229 ; Max HP
-	bigdw 214 ; Atk
-	bigdw 164 ; Def
-	bigdw 152 ; Spd
-	bigdw 172 ; SAtk
-	bigdw 172 ; SDef
-	db "KAIRIyu-@@@"
-
-
-	db UMBREON
-	db GOLD_BERRY
-	db MUD_SLAP, MOONLIGHT, PSYCHIC_M, FAINT_ATTACK
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $ef ; DVs
-	db 10, 5, 10, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 232 ; HP
-	bigdw 232 ; Max HP
-	bigdw 134 ; Atk
-	bigdw 185 ; Def
-	bigdw 132 ; Spd
-	bigdw 128 ; SAtk
-	bigdw 212 ; SDef
-	db "BURAtuKI-@@"
-
-
-	db ARCANINE
-	db CHARCOAL
-	db FLAMETHROWER, CRUNCH, EXTREMESPEED, IRON_TAIL
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 40000
-	bigdw 55000
-	bigdw 50000
-	db $fd, $ed ; DVs
-	db 15, 15, 5, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 228 ; HP
-	bigdw 228 ; Max HP
-	bigdw 188 ; Atk
-	bigdw 146 ; Def
-	bigdw 170 ; Spd
-	bigdw 173 ; SAtk
-	bigdw 149 ; SDef
-	db "UINDEi@@@@@"
-
-
-	db SKARMORY
-	db MIRACLEBERRY
-	db STEEL_WING, FLY, TOXIC, PROTECT
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $fb, $eb ; DVs
-	db 25, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 196 ; HP
-	bigdw 196 ; Max HP
-	bigdw 152 ; Atk
-	bigdw 218 ; Def
-	bigdw 138 ; Spd
-	bigdw 99 ; SAtk
-	bigdw 135 ; SDef
-	db "EA-MUDO@@@@"
-
-
-	db BLISSEY
-	db LEFTOVERS
-	db SOFTBOILED, TOXIC, PROTECT, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	db $fb, $cd ; DVs
-	db 10, 10, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 424 ; HP
-	bigdw 424 ; Max HP
-	bigdw 66 ; Atk
-	bigdw 63 ; Def
-	bigdw 117 ; Spd
-	bigdw 143 ; SAtk
-	bigdw 215 ; SDef
-	db "HAPINASU@@@"
-
-
-	db SNORLAX
-	db PINK_BOW
-	db ROCK_SLIDE, SURF, BODY_SLAM, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fa, $fc ; DVs
-	db 10, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 307 ; HP
-	bigdw 307 ; Max HP
-	bigdw 186 ; Atk
-	bigdw 128 ; Def
-	bigdw 92 ; Spd
-	bigdw 130 ; SAtk
-	bigdw 184 ; SDef
-	db "KABIGON@@@@"
-
-
-	db HERACROSS
-	db FOCUS_BAND
-	db REVERSAL, MEGAHORN, EARTHQUAKE, COUNTER
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $df, $ed ; DVs
-	db 15, 10, 10, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 214 ; HP
-	bigdw 214 ; Max HP
-	bigdw 200 ; Atk
-	bigdw 146 ; Def
-	bigdw 156 ; Spd
-	bigdw 101 ; SAtk
-	bigdw 167 ; SDef
-	db "HERAKUROSU@"
-
-
-	db JYNX
-	db MIRACLEBERRY
-	db BLIZZARD, PSYCHIC_M, SHADOW_BALL, ICY_WIND
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ff, $eb ; DVs
-	db 5, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 196 ; HP
-	bigdw 196 ; Max HP
-	bigdw 116 ; Atk
-	bigdw 98 ; Def
-	bigdw 168 ; Spd
-	bigdw 189 ; SAtk
-	bigdw 165 ; SDef
-	db "RU-ZIyuRA@@"
-
-
-	db BLASTOISE
-	db GOLD_BERRY
-	db SURF, EARTHQUAKE, RAPID_SPIN, BLIZZARD
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fe ; DVs
-	db 15, 10, 40, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 209 ; HP
-	bigdw 209 ; Max HP
-	bigdw 155 ; Atk
-	bigdw 174 ; Def
-	bigdw 149 ; Spd
-	bigdw 156 ; SAtk
-	bigdw 180 ; SDef
-	db "KAMEtuKUSU@"
-
-
-	db RHYDON
-	db QUICK_CLAW
-	db EARTHQUAKE, SURF, IRON_TAIL, ROCK_SLIDE
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fb, $fa ; DVs
-	db 10, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 245 ; HP
-	bigdw 245 ; Max HP
-	bigdw 212 ; Atk
-	bigdw 195 ; Def
-	bigdw 104 ; Spd
-	bigdw 104 ; SAtk
-	bigdw 104 ; SDef
-	db "SAIDON@@@@@"
-
-
-	db SANDSLASH
-	db SCOPE_LENS
-	db EARTHQUAKE, SLASH, HYPER_BEAM, SNORE
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $b7, $67 ; DVs
-	db 10, 20, 5, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 201 ; HP
-	bigdw 201 ; Max HP
-	bigdw 164 ; Atk
-	bigdw 171 ; Def
-	bigdw 116 ; Spd
-	bigdw 93 ; SAtk
-	bigdw 105 ; SDef
-	db "SANDOPAN@@@"
-
-
-	db PARASECT
-	db GOLD_BERRY
-	db SPORE, GIGA_DRAIN, HYPER_BEAM, SLUDGE_BOMB
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $66, $5f ; DVs
-	db 15, 5, 5, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 171 ; HP
-	bigdw 171 ; Max HP
-	bigdw 152 ; Atk
-	bigdw 134 ; Def
-	bigdw 72 ; Spd
-	bigdw 120 ; SAtk
-	bigdw 144 ; SDef
-	db "PARASEKUTO@"
-
-
-	db GOLEM
-	db BRIGHTPOWDER
-	db EXPLOSION, EARTHQUAKE, FIRE_PUNCH, FRUSTRATION
-	dw 0 ; OT ID
-	dt 216000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $76, $57 ; DVs
-	db 5, 10, 15, 20 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 60 ; Level
-	db 0, 0 ; Status
-	bigdw 205 ; HP
-	bigdw 205 ; Max HP
-	bigdw 171 ; Atk
-	bigdw 194 ; Def
-	bigdw 90 ; Spd
-	bigdw 105 ; SAtk
-	bigdw 117 ; SDef
-	db "GORO-NIya@@"
-
-
-
-
-BattleTowerMons7:
-
-	db JOLTEON
-	db MIRACLEBERRY
-	db THUNDERBOLT, HYPER_BEAM, SHADOW_BALL, ROAR
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 56000
-	bigdw 55000
-	bigdw 50000
-	bigdw 60000
-	db $fb, $ef ; DVs
-	db 15, 5, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 231 ; HP
-	bigdw 231 ; Max HP
-	bigdw 158 ; Atk
-	bigdw 145 ; Def
-	bigdw 245 ; Spd
-	bigdw 222 ; SAtk
-	bigdw 201 ; SDef
-	db "SANDA-SU@@@"
-
-
-	db VAPOREON
-	db LEFTOVERS
-	db BLIZZARD, SHADOW_BALL, SURF, MUD_SLAP
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 60000
-	bigdw 60000
-	bigdw 50000
-	db $bf, $ef ; DVs
-	db 5, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 318 ; HP
-	bigdw 318 ; Max HP
-	bigdw 149 ; Atk
-	bigdw 152 ; Def
-	bigdw 158 ; Spd
-	bigdw 218 ; SAtk
-	bigdw 197 ; SDef
-	db "SIyaWA-ZU@@"
-
-
-	db UMBREON
-	db GOLD_BERRY
-	db FAINT_ATTACK, MOONLIGHT, PSYCH_UP, TOXIC
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 54000
-	bigdw 60000
-	bigdw 55000
-	bigdw 50000
-	bigdw 58000
-	db $dd, $dd ; DVs
-	db 20, 5, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 274 ; HP
-	bigdw 274 ; Max HP
-	bigdw 156 ; Atk
-	bigdw 217 ; Def
-	bigdw 152 ; Spd
-	bigdw 149 ; SAtk
-	bigdw 247 ; SDef
-	db "BURAtuKI-@@"
-
-
-	db BLISSEY
-	db GOLD_BERRY
-	db COUNTER, SOFTBOILED, SHADOW_BALL, THUNDERBOLT
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 55000
-	bigdw 55000
-	bigdw 58000
-	bigdw 50000
-	db $df, $ed ; DVs
-	db 20, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 495 ; HP
-	bigdw 495 ; Max HP
-	bigdw 77 ; Atk
-	bigdw 80 ; Def
-	bigdw 143 ; Spd
-	bigdw 166 ; SAtk
-	bigdw 250 ; SDef
-	db "HAPINASU@@@"
-
-
-	db SNORLAX
-	db LEFTOVERS
-	db ROCK_SLIDE, EARTHQUAKE, BLIZZARD, SHADOW_BALL
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $dd ; DVs
-	db 10, 10, 5, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 365 ; HP
-	bigdw 365 ; Max HP
-	bigdw 217 ; Atk
-	bigdw 156 ; Def
-	bigdw 105 ; Spd
-	bigdw 152 ; SAtk
-	bigdw 215 ; SDef
-	db "KABIGON@@@@"
-
-
-	db HOUNDOOM
-	db KINGS_ROCK
-	db CRUNCH, FLAMETHROWER, FAINT_ATTACK, ROAR
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 58000
-	bigdw 50000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	db $dd, $cd ; DVs
-	db 15, 15, 20, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 245 ; HP
-	bigdw 245 ; Max HP
-	bigdw 187 ; Atk
-	bigdw 133 ; Def
-	bigdw 197 ; Spd
-	bigdw 217 ; SAtk
-	bigdw 175 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db TYRANITAR
-	db LEFTOVERS
-	db EARTHQUAKE, CRUNCH, ROCK_SLIDE, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	db $db, $df ; DVs
-	db 10, 15, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 279 ; HP
-	bigdw 279 ; Max HP
-	bigdw 247 ; Atk
-	bigdw 211 ; Def
-	bigdw 147 ; Spd
-	bigdw 196 ; SAtk
-	bigdw 203 ; SDef
-	db "BANGIRASU@@"
-
-
-	db ZAPDOS
-	db GOLD_BERRY
-	db THUNDERBOLT, DRILL_PECK, THUNDER_WAVE, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	db $db, $df ; DVs
-	db 15, 20, 20, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 264 ; HP
-	bigdw 264 ; Max HP
-	bigdw 187 ; Atk
-	bigdw 177 ; Def
-	bigdw 200 ; Spd
-	bigdw 238 ; SAtk
-	bigdw 189 ; SDef
-	db "SANDA-@@@@@"
-
-
-	db EXEGGUTOR
-	db MIRACLEBERRY
-	db REST, EXPLOSION, PSYCHIC_M, GIGA_DRAIN
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 45000
-	db $dd, $ed ; DVs
-	db 10, 5, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 268 ; HP
-	bigdw 268 ; Max HP
-	bigdw 194 ; Atk
-	bigdw 177 ; Def
-	bigdw 140 ; Spd
-	bigdw 235 ; SAtk
-	bigdw 151 ; SDef
-	db "NAtuSI-@@@@"
-
-
-	db UMBREON
-	db GOLD_BERRY
-	db MOONLIGHT, FAINT_ATTACK, PSYCHIC_M, SHADOW_BALL
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	bigdw 50000
-	db $fd, $eb ; DVs
-	db 5, 20, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 269 ; HP
-	bigdw 269 ; Max HP
-	bigdw 155 ; Atk
-	bigdw 214 ; Def
-	bigdw 152 ; Spd
-	bigdw 142 ; SAtk
-	bigdw 240 ; SDef
-	db "BURAtuKI-@@"
-
-
-	db GYARADOS
-	db BRIGHTPOWDER
-	db SURF, THUNDERBOLT, HYPER_BEAM, ROAR
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $db, $ef ; DVs
-	db 15, 15, 5, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 271 ; HP
-	bigdw 271 ; Max HP
-	bigdw 235 ; Atk
-	bigdw 169 ; Def
-	bigdw 178 ; Spd
-	bigdw 148 ; SAtk
-	bigdw 204 ; SDef
-	db "GIyaRADOSU@"
-
-
-	db QUAGSIRE
-	db MIRACLEBERRY
-	db EARTHQUAKE, SURF, SLUDGE_BOMB, IRON_TAIL
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $de, $dd ; DVs
-	db 10, 15, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 266 ; HP
-	bigdw 266 ; Max HP
-	bigdw 180 ; Atk
-	bigdw 180 ; Def
-	bigdw 110 ; Spd
-	bigdw 152 ; SAtk
-	bigdw 152 ; SDef
-	db "NUO-@@@@@@@"
-
-
-	db URSARING
-	db SCOPE_LENS
-	db SLASH, EARTHQUAKE, HYPER_BEAM, THUNDERPUNCH
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	db $fd, $ed ; DVs
-	db 20, 10, 5, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 262 ; HP
-	bigdw 262 ; Max HP
-	bigdw 245 ; Atk
-	bigdw 166 ; Def
-	bigdw 138 ; Spd
-	bigdw 166 ; SAtk
-	bigdw 166 ; SDef
-	db "RINGUMA@@@@"
-
-
-	db MR__MIME
-	db KINGS_ROCK
-	db REFLECT, FIRE_PUNCH, PSYCHIC_M, ENCORE
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $bd, $fb ; DVs
-	db 20, 15, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 195 ; HP
-	bigdw 195 ; Max HP
-	bigdw 120 ; Atk
-	bigdw 151 ; Def
-	bigdw 190 ; Spd
-	bigdw 198 ; SAtk
-	bigdw 226 ; SDef
-	db "BARIYA-DO@@"
-
-
-	db PRIMEAPE
-	db QUICK_CLAW
-	db CROSS_CHOP, ICE_PUNCH, THUNDERPUNCH, ROCK_SLIDE
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $bd, $ef ; DVs
-	db 5, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 227 ; HP
-	bigdw 227 ; Max HP
-	bigdw 202 ; Atk
-	bigdw 145 ; Def
-	bigdw 196 ; Spd
-	bigdw 148 ; SAtk
-	bigdw 162 ; SDef
-	db "OKORIZARU@@"
-
-
-	db GIRAFARIG
-	db GOLD_BERRY
-	db AGILITY, BATON_PASS, CRUNCH, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fd ; DVs
-	db 30, 40, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 231 ; HP
-	bigdw 231 ; Max HP
-	bigdw 176 ; Atk
-	bigdw 154 ; Def
-	bigdw 183 ; Spd
-	bigdw 187 ; SAtk
-	bigdw 152 ; SDef
-	db "KIRINRIKI@@"
-
-
-	db HITMONLEE
-	db FOCUS_BAND
-	db REVERSAL, ENDURE, BODY_SLAM, MEGA_KICK
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fe ; DVs
-	db 15, 10, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 202 ; HP
-	bigdw 202 ; Max HP
-	bigdw 232 ; Atk
-	bigdw 137 ; Def
-	bigdw 186 ; Spd
-	bigdw 112 ; SAtk
-	bigdw 217 ; SDef
-	db "SAWAMURA-@@"
-
-
-	db HERACROSS
-	db BRIGHTPOWDER
-	db REVERSAL, ENDURE, MEGAHORN, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $f7, $f7 ; DVs
-	db 15, 10, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 251 ; HP
-	bigdw 251 ; Max HP
-	bigdw 239 ; Atk
-	bigdw 158 ; Def
-	bigdw 183 ; Spd
-	bigdw 109 ; SAtk
-	bigdw 186 ; SDef
-	db "HERAKUROSU@"
-
-
-	db VENUSAUR
-	db BRIGHTPOWDER
-	db SUNNY_DAY, SOLARBEAM, SYNTHESIS, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $76, $44 ; DVs
-	db 5, 10, 5, 5 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 233 ; HP
-	bigdw 233 ; Max HP
-	bigdw 159 ; Atk
-	bigdw 159 ; Def
-	bigdw 152 ; Spd
-	bigdw 180 ; SAtk
-	bigdw 180 ; SDef
-	db "HUSIGIBANA@"
-
-
-	db CHARIZARD
-	db SCOPE_LENS
-	db SLASH, EARTHQUAKE, HYPER_BEAM, FLAMETHROWER
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $56, $44 ; DVs
-	db 20, 10, 5, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 230 ; HP
-	bigdw 230 ; Max HP
-	bigdw 159 ; Atk
-	bigdw 152 ; Def
-	bigdw 180 ; Spd
-	bigdw 193 ; SAtk
-	bigdw 159 ; SDef
-	db "RIZA-DON@@@"
-
-
-	db BLASTOISE
-	db QUICK_CLAW
-	db HYDRO_PUMP, ICE_PUNCH, HYPER_BEAM, IRON_TAIL
-	dw 0 ; OT ID
-	dt 343000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $76, $64 ; DVs
-	db 5, 15, 5, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 70 ; Level
-	db 0, 0 ; Status
-	bigdw 231 ; HP
-	bigdw 231 ; Max HP
-	bigdw 161 ; Atk
-	bigdw 183 ; Def
-	bigdw 152 ; Spd
-	bigdw 159 ; SAtk
-	bigdw 187 ; SDef
-	db "KAMEtuKUSU@"
-
-
-
-
-BattleTowerMons8:
-
-	db JOLTEON
-	db MIRACLEBERRY
-	db THUNDER_WAVE, THUNDERBOLT, IRON_TAIL, ROAR
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	bigdw 55000
-	db $fd, $eb ; DVs
-	db 20, 15, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 263 ; HP
-	bigdw 263 ; Max HP
-	bigdw 179 ; Atk
-	bigdw 170 ; Def
-	bigdw 281 ; Spd
-	bigdw 245 ; SAtk
-	bigdw 221 ; SDef
-	db "SANDA-SU@@@"
-
-
-	db SNORLAX
-	db LEFTOVERS
-	db REST, BELLY_DRUM, SNORE, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 55000
-	bigdw 50000
-	bigdw 55500
-	bigdw 60000
-	db $db, $ed ; DVs
-	db 10, 10, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 415 ; HP
-	bigdw 415 ; Max HP
-	bigdw 248 ; Atk
-	bigdw 170 ; Def
-	bigdw 121 ; Spd
-	bigdw 178 ; SAtk
-	bigdw 250 ; SDef
-	db "KABIGON@@@@"
-
-
-	db HOUNDOOM
-	db MINT_BERRY
-	db REST, CRUNCH, FLAMETHROWER, SUNNY_DAY
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 55000
-	bigdw 55000
-	bigdw 55000
-	db $fd, $db ; DVs
-	db 10, 15, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 280 ; HP
-	bigdw 280 ; Max HP
-	bigdw 217 ; Atk
-	bigdw 152 ; Def
-	bigdw 224 ; Spd
-	bigdw 245 ; SAtk
-	bigdw 197 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db TAUROS
-	db GOLD_BERRY
-	db EARTHQUAKE, BODY_SLAM, IRON_TAIL, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 50000
-	db $fd, $de ; DVs
-	db 10, 15, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 276 ; HP
-	bigdw 276 ; Max HP
-	bigdw 233 ; Atk
-	bigdw 221 ; Def
-	bigdw 236 ; Spd
-	bigdw 135 ; SAtk
-	bigdw 183 ; SDef
-	db "KENTAROSU@@"
-
-
-	db LAPRAS
-	db MINT_BERRY
-	db REST, SURF, CONFUSE_RAY, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $df, $db ; DVs
-	db 10, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 366 ; HP
-	bigdw 366 ; Max HP
-	bigdw 205 ; Atk
-	bigdw 201 ; Def
-	bigdw 168 ; Spd
-	bigdw 202 ; SAtk
-	bigdw 218 ; SDef
-	db "RAPURASU@@@"
-
-
-	db TYRANITAR
-	db MIRACLEBERRY
-	db REST, CRUNCH, EARTHQUAKE, ROCK_SLIDE
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $df, $db ; DVs
-	db 10, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 318 ; HP
-	bigdw 318 ; Max HP
-	bigdw 286 ; Atk
-	bigdw 249 ; Def
-	bigdw 169 ; Spd
-	bigdw 218 ; SAtk
-	bigdw 226 ; SDef
-	db "BANGIRASU@@"
-
-
-	db GENGAR
-	db NO_ITEM
-	db THUNDERBOLT, SHADOW_BALL, CONFUSE_RAY, THIEF
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 55000
-	bigdw 50000
-	db $de, $dd ; DVs
-	db 15, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 247 ; HP
-	bigdw 247 ; Max HP
-	bigdw 173 ; Atk
-	bigdw 165 ; Def
-	bigdw 248 ; Spd
-	bigdw 277 ; SAtk
-	bigdw 189 ; SDef
-	db "GENGA-@@@@@"
-
-
-	db FORRETRESS
-	db LEFTOVERS
-	db EXPLOSION, TOXIC, SOLARBEAM, SWAGGER
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	db $fd, $ed ; DVs
-	db 5, 10, 10, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 273 ; HP
-	bigdw 273 ; Max HP
-	bigdw 217 ; Atk
-	bigdw 293 ; Def
-	bigdw 133 ; Spd
-	bigdw 165 ; SAtk
-	bigdw 165 ; SDef
-	db "HUoRETOSU@@"
-
-
-	db KINGDRA
-	db MINT_BERRY
-	db REST, SURF, BLIZZARD, DRAGONBREATH
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 40000
-	bigdw 55000
-	bigdw 50000
-	db $fb, $ed ; DVs
-	db 10, 15, 5, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 273 ; HP
-	bigdw 273 ; Max HP
-	bigdw 225 ; Atk
-	bigdw 214 ; Def
-	bigdw 209 ; Spd
-	bigdw 221 ; SAtk
-	bigdw 221 ; SDef
-	db "KINGUDORA@@"
-
-
-	db DRAGONITE
-	db GOLD_BERRY
-	db THUNDER_WAVE, SURF, THUNDERBOLT, OUTRAGE
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	db $dd, $dd ; DVs
-	db 20, 15, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 303 ; HP
-	bigdw 303 ; Max HP
-	bigdw 284 ; Atk
-	bigdw 221 ; Def
-	bigdw 197 ; Spd
-	bigdw 228 ; SAtk
-	bigdw 228 ; SDef
-	db "KAIRIyu-@@@"
-
-
-	db PORYGON2
-	db LEFTOVERS
-	db PSYCHIC_M, RECOVER, HYPER_BEAM, TRI_ATTACK
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 40000
-	bigdw 55000
-	bigdw 50000
-	db $df, $ed ; DVs
-	db 10, 20, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 293 ; HP
-	bigdw 293 ; Max HP
-	bigdw 197 ; Atk
-	bigdw 213 ; Def
-	bigdw 169 ; Spd
-	bigdw 237 ; SAtk
-	bigdw 221 ; SDef
-	db "PORIGON2@@@"
-
-
-	db JYNX
-	db QUICK_CLAW
-	db LOVELY_KISS, BLIZZARD, DREAM_EATER, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	db $df, $df ; DVs
-	db 10, 5, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 264 ; HP
-	bigdw 264 ; Max HP
-	bigdw 149 ; Atk
-	bigdw 127 ; Def
-	bigdw 221 ; Spd
-	bigdw 257 ; SAtk
-	bigdw 225 ; SDef
-	db "RU-ZIyuRA@@"
-
-
-	db MANTINE
-	db GOLD_BERRY
-	db SURF, CONFUSE_RAY, BLIZZARD, WING_ATTACK
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 40000
-	bigdw 45000
-	bigdw 40000
-	bigdw 45000
-	bigdw 50000
-	db $df, $dc ; DVs
-	db 15, 10, 5, 35 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 256 ; HP
-	bigdw 256 ; Max HP
-	bigdw 132 ; Atk
-	bigdw 181 ; Def
-	bigdw 180 ; Spd
-	bigdw 196 ; SAtk
-	bigdw 292 ; SDef
-	db "MANTAIN@@@@"
-
-
-	db SKARMORY
-	db QUICK_CLAW
-	db STEEL_WING, FLY, MUD_SLAP, TOXIC
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 35000
-	bigdw 50000
-	bigdw 50000
-	db $dd, $ef ; DVs
-	db 25, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 258 ; HP
-	bigdw 258 ; Max HP
-	bigdw 196 ; Atk
-	bigdw 286 ; Def
-	bigdw 183 ; Spd
-	bigdw 137 ; SAtk
-	bigdw 185 ; SDef
-	db "EA-MUDO@@@@"
-
-
-	db MOLTRES
-	db CHARCOAL
-	db FLAMETHROWER, SKY_ATTACK, STEEL_WING, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	db $dd, $fe ; DVs
-	db 15, 5, 25, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 300 ; HP
-	bigdw 300 ; Max HP
-	bigdw 225 ; Atk
-	bigdw 213 ; Def
-	bigdw 213 ; Spd
-	bigdw 271 ; SAtk
-	bigdw 207 ; SDef
-	db "HUaIYA-@@@@"
-
-
-	db AERODACTYL
-	db MIRACLEBERRY
-	db HYPER_BEAM, REST, EARTHQUAKE, ROAR
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	db $ff, $ed ; DVs
-	db 5, 10, 10, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 282 ; HP
-	bigdw 282 ; Max HP
-	bigdw 237 ; Atk
-	bigdw 177 ; Def
-	bigdw 275 ; Spd
-	bigdw 165 ; SAtk
-	bigdw 189 ; SDef
-	db "PUTERA@@@@@"
-
-
-	db ELECTRODE
-	db KINGS_ROCK
-	db THUNDERBOLT, EXPLOSION, MIRROR_COAT, TOXIC
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 40000
-	bigdw 40000
-	bigdw 50000
-	db $ff, $ef ; DVs
-	db 15, 5, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 250 ; HP
-	bigdw 250 ; Max HP
-	bigdw 153 ; Atk
-	bigdw 181 ; Def
-	bigdw 291 ; Spd
-	bigdw 201 ; SAtk
-	bigdw 201 ; SDef
-	db "MARUMAIN@@@"
-
-
-	db DUGTRIO
-	db SCOPE_LENS
-	db SLASH, EARTHQUAKE, THIEF, MUD_SLAP
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 40000
-	db $fd, $dd ; DVs
-	db 20, 10, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 214 ; HP
-	bigdw 214 ; Max HP
-	bigdw 201 ; Atk
-	bigdw 145 ; Def
-	bigdw 261 ; Spd
-	bigdw 145 ; SAtk
-	bigdw 177 ; SDef
-	db "DAGUTORIO@@"
-
-
-	db VICTREEBEL
-	db QUICK_CLAW
-	db GIGA_DRAIN, SLUDGE_BOMB, HYPER_BEAM, TOXIC
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $65, $65 ; DVs
-	db 5, 10, 5, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 260 ; HP
-	bigdw 260 ; Max HP
-	bigdw 217 ; Atk
-	bigdw 151 ; Def
-	bigdw 161 ; Spd
-	bigdw 207 ; SAtk
-	bigdw 143 ; SDef
-	db "UTUBOtuTO@@"
-
-
-	db PINSIR
-	db GOLD_BERRY
-	db HYPER_BEAM, SUBMISSION, STRENGTH, TOXIC
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $74, $64 ; DVs
-	db 5, 25, 15, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 241 ; HP
-	bigdw 241 ; Max HP
-	bigdw 250 ; Atk
-	bigdw 205 ; Def
-	bigdw 185 ; Spd
-	bigdw 133 ; SAtk
-	bigdw 157 ; SDef
-	db "KAIROSU@@@@"
-
-
-	db GRANBULL
-	db BRIGHTPOWDER
-	db ROAR, SHADOW_BALL, HYPER_BEAM, THUNDERPUNCH
-	dw 0 ; OT ID
-	dt 512000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $76, $57 ; DVs
-	db 20, 15, 5, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 80 ; Level
-	db 0, 0 ; Status
-	bigdw 286 ; HP
-	bigdw 286 ; Max HP
-	bigdw 242 ; Atk
-	bigdw 169 ; Def
-	bigdw 119 ; Spd
-	bigdw 146 ; SAtk
-	bigdw 146 ; SDef
-	db "GURANBURU@@"
-
-
-
-
-BattleTowerMons9:
-
-	db UMBREON
-	db KINGS_ROCK
-	db FAINT_ATTACK, MUD_SLAP, MOONLIGHT, CONFUSE_RAY
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 60000
-	bigdw 55000
-	bigdw 60000
-	bigdw 55000
-	db $fd, $ed ; DVs
-	db 20, 10, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 349 ; HP
-	bigdw 349 ; Max HP
-	bigdw 203 ; Atk
-	bigdw 278 ; Def
-	bigdw 202 ; Spd
-	bigdw 188 ; SAtk
-	bigdw 314 ; SDef
-	db "BURAtuKI-@@"
-
-
-	db DRAGONITE
-	db QUICK_CLAW
-	db FIRE_BLAST, HYPER_BEAM, OUTRAGE, BLIZZARD
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 65000
-	bigdw 50000
-	bigdw 56000
-	bigdw 60000
-	bigdw 60000
-	db $fd, $ed ; DVs
-	db 5, 5, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 343 ; HP
-	bigdw 343 ; Max HP
-	bigdw 322 ; Atk
-	bigdw 252 ; Def
-	bigdw 229 ; Spd
-	bigdw 263 ; SAtk
-	bigdw 263 ; SDef
-	db "KAIRIyu-@@@"
-
-
-	db STARMIE
-	db LEFTOVERS
-	db RECOVER, THUNDERBOLT, SURF, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 55000
-	bigdw 60000
-	db $df, $dd ; DVs
-	db 20, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 289 ; HP
-	bigdw 289 ; Max HP
-	bigdw 218 ; Atk
-	bigdw 239 ; Def
-	bigdw 287 ; Spd
-	bigdw 263 ; SAtk
-	bigdw 236 ; SDef
-	db "SUTA-MI-@@@"
-
-
-	db CLOYSTER
-	db LEFTOVERS
-	db EXPLOSION, BLIZZARD, SURF, ICY_WIND
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $db, $df ; DVs
-	db 5, 5, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 266 ; HP
-	bigdw 266 ; Max HP
-	bigdw 248 ; Atk
-	bigdw 398 ; Def
-	bigdw 203 ; Spd
-	bigdw 234 ; SAtk
-	bigdw 162 ; SDef
-	db "PARUSIeN@@@"
-
-
-	db CROBAT
-	db GOLD_BERRY
-	db WING_ATTACK, HAZE, HYPER_BEAM, GIGA_DRAIN
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $cf ; DVs
-	db 35, 30, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 325 ; HP
-	bigdw 325 ; Max HP
-	bigdw 243 ; Atk
-	bigdw 221 ; Def
-	bigdw 310 ; Spd
-	bigdw 207 ; SAtk
-	bigdw 225 ; SDef
-	db "KUROBAtuTO@"
-
-
-	db PORYGON2
-	db QUICK_CLAW
-	db TOXIC, PSYCHIC_M, RECOVER, PROTECT
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $fd, $ed ; DVs
-	db 10, 10, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 325 ; HP
-	bigdw 325 ; Max HP
-	bigdw 223 ; Atk
-	bigdw 239 ; Def
-	bigdw 190 ; Spd
-	bigdw 266 ; SAtk
-	bigdw 248 ; SDef
-	db "PORIGON2@@@"
-
-
-	db KINGDRA
-	db LEFTOVERS
-	db DRAGONBREATH, SURF, HYPER_BEAM, BLIZZARD
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	bigdw 45000
-	db $df, $de ; DVs
-	db 20, 15, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 309 ; HP
-	bigdw 309 ; Max HP
-	bigdw 248 ; Atk
-	bigdw 255 ; Def
-	bigdw 230 ; Spd
-	bigdw 248 ; SAtk
-	bigdw 248 ; SDef
-	db "KINGUDORA@@"
-
-
-	db TYRANITAR
-	db QUICK_CLAW
-	db HYPER_BEAM, CRUNCH, EARTHQUAKE, ROCK_SLIDE
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	db $df, $de ; DVs
-	db 5, 15, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 354 ; HP
-	bigdw 354 ; Max HP
-	bigdw 321 ; Atk
-	bigdw 279 ; Def
-	bigdw 185 ; Spd
-	bigdw 250 ; SAtk
-	bigdw 259 ; SDef
-	db "BANGIRASU@@"
-
-
-	db LAPRAS
-	db MINT_BERRY
-	db REST, SURF, THUNDERBOLT, PSYCHIC_M
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	db $bd, $ef ; DVs
-	db 10, 15, 15, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 405 ; HP
-	bigdw 405 ; Max HP
-	bigdw 227 ; Atk
-	bigdw 221 ; Def
-	bigdw 187 ; Spd
-	bigdw 237 ; SAtk
-	bigdw 255 ; SDef
-	db "RAPURASU@@@"
-
-
-	db ESPEON
-	db GOLD_BERRY
-	db PSYCHIC_M, SHADOW_BALL, SUNNY_DAY, MORNING_SUN
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $fe ; DVs
-	db 10, 15, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 294 ; HP
-	bigdw 294 ; Max HP
-	bigdw 194 ; Atk
-	bigdw 185 ; Def
-	bigdw 282 ; Spd
-	bigdw 313 ; SAtk
-	bigdw 250 ; SDef
-	db "E-HUi@@@@@@"
-
-
-	db MACHAMP
-	db QUICK_CLAW
-	db CROSS_CHOP, VITAL_THROW, FIRE_BLAST, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 55000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $ed ; DVs
-	db 5, 10, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 337 ; HP
-	bigdw 337 ; Max HP
-	bigdw 314 ; Atk
-	bigdw 221 ; Def
-	bigdw 181 ; Spd
-	bigdw 194 ; SAtk
-	bigdw 230 ; SDef
-	db "KAIRIKI-@@@"
-
-
-	db SNORLAX
-	db MIRACLEBERRY
-	db FIRE_BLAST, SURF, EARTHQUAKE, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fd ; DVs
-	db 5, 15, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 455 ; HP
-	bigdw 455 ; Max HP
-	bigdw 279 ; Atk
-	bigdw 199 ; Def
-	bigdw 135 ; Spd
-	bigdw 194 ; SAtk
-	bigdw 275 ; SDef
-	db "KABIGON@@@@"
-
-
-	db ARCANINE
-	db MINT_BERRY
-	db SUNNY_DAY, FLAMETHROWER, EXTREMESPEED, REST
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 45000
-	bigdw 55000
-	db $df, $de ; DVs
-	db 5, 15, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 336 ; HP
-	bigdw 336 ; Max HP
-	bigdw 274 ; Atk
-	bigdw 225 ; Def
-	bigdw 247 ; Spd
-	bigdw 262 ; SAtk
-	bigdw 226 ; SDef
-	db "UINDEi@@@@@"
-
-
-	db BLISSEY
-	db LEFTOVERS
-	db SOLARBEAM, SUNNY_DAY, SOFTBOILED, FIRE_BLAST
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $bd, $fe ; DVs
-	db 10, 5, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 633 ; HP
-	bigdw 633 ; Max HP
-	bigdw 90 ; Atk
-	bigdw 95 ; Def
-	bigdw 180 ; Spd
-	bigdw 214 ; SAtk
-	bigdw 322 ; SDef
-	db "HAPINASU@@@"
-
-
-	db HOUNDOOM
-	db BRIGHTPOWDER
-	db FLAMETHROWER, CRUNCH, SUNNY_DAY, SOLARBEAM
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $db, $fe ; DVs
-	db 15, 15, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 309 ; HP
-	bigdw 309 ; Max HP
-	bigdw 235 ; Atk
-	bigdw 164 ; Def
-	bigdw 252 ; Spd
-	bigdw 277 ; SAtk
-	bigdw 223 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db SKARMORY
-	db QUICK_CLAW
-	db SANDSTORM, STEEL_WING, TOXIC, RETURN
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $ef, $f7 ; DVs
-	db 10, 25, 10, 20 ; PP
-	db 255 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 279 ; HP
-	bigdw 279 ; Max HP
-	bigdw 223 ; Atk
-	bigdw 333 ; Def
-	bigdw 207 ; Spd
-	bigdw 139 ; SAtk
-	bigdw 193 ; SDef
-	db "EA-MUDO@@@@"
-
-
-	db SHUCKLE
-	db LEFTOVERS
-	db TOXIC, WRAP, PROTECT, ENCORE
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fe ; DVs
-	db 10, 20, 10, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 203 ; HP
-	bigdw 203 ; Max HP
-	bigdw 99 ; Atk
-	bigdw 493 ; Def
-	bigdw 90 ; Spd
-	bigdw 97 ; SAtk
-	bigdw 493 ; SDef
-	db "TUBOTUBO@@@"
-
-
-	db FLAREON
-	db MINT_BERRY
-	db HYPER_BEAM, FLAMETHROWER, SHADOW_BALL, ROAR
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $f7, $f7 ; DVs
-	db 5, 15, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 293 ; HP
-	bigdw 293 ; Max HP
-	bigdw 315 ; Atk
-	bigdw 175 ; Def
-	bigdw 198 ; Spd
-	bigdw 238 ; SAtk
-	bigdw 265 ; SDef
-	db "BU-SUTA-@@@"
-
-
-	db MILTANK
-	db LEFTOVERS
-	db MILK_DRINK, EARTHQUAKE, ATTRACT, BODY_SLAM
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $47, $57 ; DVs
-	db 10, 10, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 322 ; HP
-	bigdw 322 ; Max HP
-	bigdw 194 ; Atk
-	bigdw 245 ; Def
-	bigdw 232 ; Spd
-	bigdw 128 ; SAtk
-	bigdw 182 ; SDef
-	db "MIRUTANKU@@"
-
-
-	db TAUROS
-	db PINK_BOW
-	db THUNDERBOLT, HYPER_BEAM, ATTRACT, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $65, $76 ; DVs
-	db 15, 5, 15, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 284 ; HP
-	bigdw 284 ; Max HP
-	bigdw 234 ; Atk
-	bigdw 223 ; Def
-	bigdw 254 ; Spd
-	bigdw 126 ; SAtk
-	bigdw 180 ; SDef
-	db "KENTAROSU@@"
-
-
-	db MUK
-	db QUICK_CLAW
-	db TOXIC, SLUDGE_BOMB, ATTRACT, GIGA_DRAIN
-	dw 0 ; OT ID
-	dt 729000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $54, $44 ; DVs
-	db 10, 10, 15, 5 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 90 ; Level
-	db 0, 0 ; Status
-	bigdw 342 ; HP
-	bigdw 342 ; Max HP
-	bigdw 241 ; Atk
-	bigdw 185 ; Def
-	bigdw 140 ; Spd
-	bigdw 167 ; SAtk
-	bigdw 230 ; SDef
-	db "BETOBETON@@"
-
-
-
-
-BattleTowerMons10:
-
-	db HOUNDOOM
-	db MINT_BERRY
-	db CRUNCH, FLAMETHROWER, ROAR, REST
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	db $fd, $ed ; DVs
-	db 15, 15, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 347 ; HP
-	bigdw 347 ; Max HP
-	bigdw 276 ; Atk
-	bigdw 192 ; Def
-	bigdw 284 ; Spd
-	bigdw 312 ; SAtk
-	bigdw 252 ; SDef
-	db "HERUGA-@@@@"
-
-
-	db MACHAMP
-	db QUICK_CLAW
-	db CROSS_CHOP, EARTHQUAKE, HYPER_BEAM, VITAL_THROW
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	db $fd, $ef ; DVs
-	db 5, 10, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 377 ; HP
-	bigdw 377 ; Max HP
-	bigdw 356 ; Atk
-	bigdw 252 ; Def
-	bigdw 204 ; Spd
-	bigdw 226 ; SAtk
-	bigdw 266 ; SDef
-	db "KAIRIKI-@@@"
-
-
-	db KINGDRA
-	db LEFTOVERS
-	db SURF, DRAGONBREATH, REST, TOXIC
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	bigdw 60000
-	db $df, $fe ; DVs
-	db 15, 20, 10, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 349 ; HP
-	bigdw 349 ; Max HP
-	bigdw 282 ; Atk
-	bigdw 286 ; Def
-	bigdw 266 ; Spd
-	bigdw 284 ; SAtk
-	bigdw 284 ; SDef
-	db "KINGUDORA@@"
-
-
-	db JOLTEON
-	db BRIGHTPOWDER
-	db THUNDERBOLT, ROAR, THUNDER_WAVE, IRON_TAIL
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 30000
-	bigdw 50000
-	db $fd, $fe ; DVs
-	db 15, 20, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 323 ; HP
-	bigdw 323 ; Max HP
-	bigdw 220 ; Atk
-	bigdw 206 ; Def
-	bigdw 338 ; Spd
-	bigdw 308 ; SAtk
-	bigdw 278 ; SDef
-	db "SANDA-SU@@@"
-
-
-	db TAUROS
-	db KINGS_ROCK
-	db HYPER_BEAM, EARTHQUAKE, IRON_TAIL, THUNDERBOLT
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fd, $ef ; DVs
-	db 5, 10, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 341 ; HP
-	bigdw 341 ; Max HP
-	bigdw 290 ; Atk
-	bigdw 276 ; Def
-	bigdw 308 ; Spd
-	bigdw 170 ; SAtk
-	bigdw 230 ; SDef
-	db "KENTAROSU@@"
-
-
-	db ARCANINE
-	db LEFTOVERS
-	db FLAMETHROWER, EXTREMESPEED, IRON_TAIL, HYPER_BEAM
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $dd, $ef ; DVs
-	db 15, 5, 15, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 374 ; HP
-	bigdw 374 ; Max HP
-	bigdw 306 ; Atk
-	bigdw 246 ; Def
-	bigdw 281 ; Spd
-	bigdw 290 ; SAtk
-	bigdw 250 ; SDef
-	db "UINDEi@@@@@"
-
-
-	db CHARIZARD
-	db SCOPE_LENS
-	db FLAMETHROWER, EARTHQUAKE, SLASH, FLY
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 55000
-	bigdw 55000
-	db $fe, $df ; DVs
-	db 15, 10, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 343 ; HP
-	bigdw 343 ; Max HP
-	bigdw 258 ; Atk
-	bigdw 247 ; Def
-	bigdw 289 ; Spd
-	bigdw 311 ; SAtk
-	bigdw 263 ; SDef
-	db "RIZA-DON@@@"
-
-
-	db ELECTRODE
-	db BRIGHTPOWDER
-	db THUNDER_WAVE, THUNDERBOLT, EXPLOSION, MIRROR_COAT
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	bigdw 45000
-	db $fb, $ef ; DVs
-	db 20, 15, 5, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 309 ; HP
-	bigdw 309 ; Max HP
-	bigdw 190 ; Atk
-	bigdw 222 ; Def
-	bigdw 366 ; Spd
-	bigdw 248 ; SAtk
-	bigdw 248 ; SDef
-	db "MARUMAIN@@@"
-
-
-	db RHYDON
-	db MIRACLEBERRY
-	db SURF, EARTHQUAKE, HYPER_BEAM, ROCK_SLIDE
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	bigdw 45000
-	db $fd, $ef ; DVs
-	db 15, 10, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 404 ; HP
-	bigdw 404 ; Max HP
-	bigdw 350 ; Atk
-	bigdw 329 ; Def
-	bigdw 168 ; Spd
-	bigdw 178 ; SAtk
-	bigdw 178 ; SDef
-	db "SAIDON@@@@@"
-
-
-	db STEELIX
-	db LEFTOVERS
-	db EARTHQUAKE, HYPER_BEAM, SWAGGER, CRUNCH
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 60000
-	bigdw 50000
-	db $fd, $de ; DVs
-	db 10, 5, 15, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 343 ; HP
-	bigdw 343 ; Max HP
-	bigdw 260 ; Atk
-	bigdw 489 ; Def
-	bigdw 152 ; Spd
-	bigdw 198 ; SAtk
-	bigdw 218 ; SDef
-	db "HAGANE-RU@@"
-
-
-	db FEAROW
-	db KINGS_ROCK
-	db DRILL_PECK, STEEL_WING, HYPER_BEAM, MUD_SLAP
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 55000
-	bigdw 50000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	db $fd, $cf ; DVs
-	db 20, 25, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 324 ; HP
-	bigdw 324 ; Max HP
-	bigdw 270 ; Atk
-	bigdw 216 ; Def
-	bigdw 287 ; Spd
-	bigdw 212 ; SAtk
-	bigdw 212 ; SDef
-	db "ONIDORIRU@@"
-
-
-	db MISDREAVUS
-	db FOCUS_BAND
-	db PERISH_SONG, MEAN_LOOK, PAIN_SPLIT, SHADOW_BALL
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 45000
-	bigdw 50000
-	bigdw 55000
-	bigdw 50000
-	bigdw 55000
-	db $bd, $ef ; DVs
-	db 5, 5, 20, 15 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 309 ; HP
-	bigdw 309 ; Max HP
-	bigdw 202 ; Atk
-	bigdw 209 ; Def
-	bigdw 258 ; Spd
-	bigdw 263 ; SAtk
-	bigdw 263 ; SDef
-	db "MUUMA@@@@@@"
-
-
-	db SNEASEL
-	db SCOPE_LENS
-	db SLASH, BLIZZARD, DREAM_EATER, FAINT_ATTACK
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 48000
-	bigdw 45000
-	bigdw 50000
-	db $fd, $ef ; DVs
-	db 20, 5, 15, 20 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 301 ; HP
-	bigdw 301 ; Max HP
-	bigdw 280 ; Atk
-	bigdw 195 ; Def
-	bigdw 316 ; Spd
-	bigdw 160 ; SAtk
-	bigdw 240 ; SDef
-	db "NIyu-RA@@@@"
-
-
-	db SCIZOR
-	db QUICK_CLAW
-	db STEEL_WING, HYPER_BEAM, SLASH, TOXIC
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 45000
-	db $fb, $fe ; DVs
-	db 25, 5, 20, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 333 ; HP
-	bigdw 333 ; Max HP
-	bigdw 350 ; Atk
-	bigdw 282 ; Def
-	bigdw 220 ; Spd
-	bigdw 196 ; SAtk
-	bigdw 246 ; SDef
-	db "HAtuSAMU@@@"
-
-
-	db BLISSEY
-	db LEFTOVERS
-	db THUNDERBOLT, BLIZZARD, FIRE_BLAST, SOFTBOILED
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 40000
-	bigdw 50000
-	bigdw 30000
-	bigdw 30000
-	db $dd, $fe ; DVs
-	db 15, 5, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 703 ; HP
-	bigdw 703 ; Max HP
-	bigdw 101 ; Atk
-	bigdw 106 ; Def
-	bigdw 188 ; Spd
-	bigdw 226 ; SAtk
-	bigdw 346 ; SDef
-	db "HAPINASU@@@"
-
-
-	db PILOSWINE
-	db MINT_BERRY
-	db REST, BLIZZARD, HYPER_BEAM, EARTHQUAKE
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $f7 ; DVs
-	db 10, 5, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 387 ; HP
-	bigdw 387 ; Max HP
-	bigdw 290 ; Atk
-	bigdw 248 ; Def
-	bigdw 190 ; Spd
-	bigdw 194 ; SAtk
-	bigdw 194 ; SDef
-	db "INOMU-@@@@@"
-
-
-	db EXEGGUTOR
-	db QUICK_CLAW
-	db PSYCHIC_M, TOXIC, EXPLOSION, GIGA_DRAIN
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fe, $fe ; DVs
-	db 10, 10, 5, 5 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 375 ; HP
-	bigdw 375 ; Max HP
-	bigdw 280 ; Atk
-	bigdw 258 ; Def
-	bigdw 200 ; Spd
-	bigdw 338 ; SAtk
-	bigdw 218 ; SDef
-	db "NAtuSI-@@@@"
-
-
-	db OMASTAR
-	db LEFTOVERS
-	db SURF, ANCIENTPOWER, BLIZZARD, TOXIC
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	bigdw 50000
-	db $fb, $e7 ; DVs
-	db 15, 5, 5, 10 ; PP
-	db 100 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 331 ; HP
-	bigdw 331 ; Max HP
-	bigdw 210 ; Atk
-	bigdw 332 ; Def
-	bigdw 198 ; Spd
-	bigdw 304 ; SAtk
-	bigdw 214 ; SDef
-	db "OMUSUTA-@@@"
-
-
-	db GOLEM
-	db BRIGHTPOWDER
-	db EXPLOSION, EARTHQUAKE, ROCK_SLIDE, FIRE_BLAST
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $74, $46 ; DVs
-	db 5, 10, 10, 5 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 329 ; HP
-	bigdw 329 ; Max HP
-	bigdw 282 ; Atk
-	bigdw 316 ; Def
-	bigdw 146 ; Spd
-	bigdw 170 ; SAtk
-	bigdw 190 ; SDef
-	db "GORO-NIya@@"
-
-
-	db HITMONCHAN
-	db FOCUS_BAND
-	db COUNTER, FIRE_PUNCH, THUNDERPUNCH, ICE_PUNCH
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $67, $76 ; DVs
-	db 20, 15, 15, 15 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 265 ; HP
-	bigdw 265 ; Max HP
-	bigdw 270 ; Atk
-	bigdw 220 ; Def
-	bigdw 214 ; Spd
-	bigdw 130 ; SAtk
-	bigdw 280 ; SDef
-	db "EBIWARA-@@@"
-
-
-	db LANTURN
-	db QUICK_CLAW
-	db SURF, RAIN_DANCE, ZAP_CANNON, CONFUSE_RAY
-	dw 0 ; OT ID
-	dt 1000000 ; Exp
-	; Stat exp
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	bigdw 30000
-	db $76, $57 ; DVs
-	db 15, 5, 5, 10 ; PP
-	db 0 ; Happiness
-	db 0, 0, 0 ; Pokerus, Caught data
-	db 100 ; Level
-	db 0, 0 ; Status
-	bigdw 425 ; HP
-	bigdw 425 ; Max HP
-	bigdw 178 ; Atk
-	bigdw 176 ; Def
-	bigdw 192 ; Spd
-	bigdw 214 ; SAtk
-	bigdw 214 ; SDef
-	db "RANTA-N@@@@"
--- /dev/null
+++ b/data/battle_tower/classes.asm
@@ -1,0 +1,76 @@
+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.
+; See BattleTowerText in engine/events/battle_tower/trainer_text.asm.
+	db "HANSON@@@@", FISHER
+	db "SAWYER@@@@", POKEMANIAC
+	db "MASUDA@@@@", GUITARIST
+	db "NICKEL@@@@", SCIENTIST
+	db "OLSON@@@@@", POKEFANM
+	db "ZABOROWSKI", LASS
+	db "WRIGHT@@@@", YOUNGSTER
+	db "ALEXANDER@", HIKER
+	db "KAWAKAMI@@", TEACHER
+	db "BICKETT@@@", POKEFANM
+	db "SAITO@@@@@", KIMONO_GIRL
+	db "CRAWFORD@@", BOARDER
+	db "DIAZ@@@@@@", PICNICKER
+	db "ERICKSON@@", BIKER
+	db "FAIRFIELD@", JUGGLER
+	db "HUNTER@@@@", POKEFANF
+	db "HILL@@@@@@", FIREBREATHER
+	db "JAVIER@@@@", SWIMMERF
+	db "KAUFMAN@@@", SWIMMERM
+	db "LANCASTER@", SKIER
+	db "McMAHILL@@", CAMPER
+; The following can only be sampled in Crystal 1.1.
+	db "OBRIEN@@@@", GENTLEMAN
+	db "FROST@@@@@", BEAUTY
+	db "MORSE@@@@@", SUPER_NERD
+	db "YUFUNE@@@@", BLACKBELT_T
+	db "RAJAN@@@@@", COOLTRAINERF
+	db "RODRIGUEZ@", OFFICER
+	db "SANTIAGO@@", PSYCHIC_T
+	db "STOCK@@@@@", POKEFANM
+	db "THURMAN@@@", SCIENTIST
+	db "VALENTINO@", BEAUTY
+	db "WAGNER@@@@", CAMPER
+	db "YATES@@@@@", BIRD_KEEPER
+	db "ANDREWS@@@", PICNICKER
+	db "BAHN@@@@@@", POKEMANIAC
+	db "MORI@@@@@@", SCIENTIST
+	db "BUCKMAN@@@", SAGE
+	db "COBB@@@@@@", SCHOOLBOY
+	db "HUGHES@@@@", FISHER
+	db "ARITA@@@@@", KIMONO_GIRL
+	db "EASTON@@@@", PSYCHIC_T
+	db "FREEMAN@@@", CAMPER
+	db "GIESE@@@@@", LASS
+	db "HATCHER@@@", GENTLEMAN
+	db "JACKSON@@@", POKEFANF
+	db "KAHN@@@@@@", POKEMANIAC
+	db "LEONG@@@@@", YOUNGSTER
+	db "MARINO@@@@", TEACHER
+	db "NEWMAN@@@@", SAILOR
+	db "NGUYEN@@@@", BLACKBELT_T
+	db "OGDEN@@@@@", SUPER_NERD
+	db "PARK@@@@@@", COOLTRAINERF
+	db "RAINE@@@@@", SWIMMERM
+	db "SELLS@@@@@", BIRD_KEEPER
+	db "ROCKWELL@@", BOARDER
+	db "THORNTON@@", LASS
+	db "TURNER@@@@", OFFICER
+	db "VAN DYKE@@", SKIER
+	db "WALKER@@@@", SCHOOLBOY
+	db "MEYER@@@@@", SWIMMERF
+	db "JOHNSON@@@", YOUNGSTER
+	db "ADAMS@@@@@", GUITARIST
+	db "SMITH@@@@@", BUG_CATCHER
+	db "TAJIRI@@@@", BUG_CATCHER
+	db "BAKER@@@@@", POKEMANIAC
+	db "COLLINS@@@", SCIENTIST
+	db "SMART@@@@@", SUPER_NERD
+	db "DYKSTRA@@@", SWIMMERF
+	db "EATON@@@@@", BIKER
+	db "WONG@@@@@@", FIREBREATHER
+; 1f8450
--- /dev/null
+++ b/data/battle_tower/parties.asm
@@ -1,0 +1,5710 @@
+BattleTowerMons: ; 1f8450
+; 10 groups of 21 mons.
+
+
+BattleTowerMons1:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDERBOLT, HYPER_BEAM, SHADOW_BALL, ROAR
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 40000
+	bigdw 35000
+	bigdw 40000
+	db $dd, $bd ; DVs
+	db 15, 5, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 41 ; HP
+	bigdw 41 ; Max HP
+	bigdw 25 ; Atk
+	bigdw 24 ; Def
+	bigdw 37 ; Spd
+	bigdw 34 ; SAtk
+	bigdw 31 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db ESPEON
+	db LEFTOVERS
+	db MUD_SLAP, PSYCHIC_M, PSYCH_UP, TOXIC
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 50000
+	bigdw 35000
+	bigdw 40000
+	bigdw 40000
+	db $ed, $fb ; DVs
+	db 10, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 39 ; HP
+	bigdw 39 ; Max HP
+	bigdw 26 ; Atk
+	bigdw 24 ; Def
+	bigdw 35 ; Spd
+	bigdw 38 ; SAtk
+	bigdw 31 ; SDef
+	db "E-HUi@@@@@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db SHADOW_BALL, IRON_TAIL, PSYCH_UP, TOXIC
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	db $db, $ef ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 46 ; HP
+	bigdw 46 ; Max HP
+	bigdw 25 ; Atk
+	bigdw 34 ; Def
+	bigdw 26 ; Spd
+	bigdw 25 ; SAtk
+	bigdw 39 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db WOBBUFFET
+	db FOCUS_BAND
+	db COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $7f, $d7 ; DVs
+	db 20, 20, 25, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 66 ; HP
+	bigdw 66 ; Max HP
+	bigdw 18 ; Atk
+	bigdw 25 ; Def
+	bigdw 19 ; Spd
+	bigdw 18 ; SAtk
+	bigdw 23 ; SDef
+	db "SO-NANSU@@@"
+
+
+	db KANGASKHAN
+	db MIRACLEBERRY
+	db REVERSAL, HYPER_BEAM, EARTHQUAKE, ATTRACT
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 30000
+	bigdw 40000
+	bigdw 30000
+	bigdw 30000
+	db $ef, $cf ; DVs
+	db 15, 5, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 47 ; HP
+	bigdw 47 ; Max HP
+	bigdw 31 ; Atk
+	bigdw 29 ; Def
+	bigdw 29 ; Spd
+	bigdw 20 ; SAtk
+	bigdw 28 ; SDef
+	db "GARU-RA@@@@"
+
+
+	db CORSOLA
+	db SCOPE_LENS
+	db SURF, PSYCHIC_M, RECOVER, ANCIENTPOWER
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 30000
+	bigdw 33300
+	bigdw 30000
+	bigdw 30000
+	db $fe, $fd ; DVs
+	db 15, 10, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 38 ; HP
+	bigdw 38 ; Max HP
+	bigdw 23 ; Atk
+	bigdw 29 ; Def
+	bigdw 19 ; Spd
+	bigdw 24 ; SAtk
+	bigdw 28 ; SDef
+	db "SANI-GO@@@@"
+
+
+	db MILTANK
+	db GOLD_BERRY
+	db BLIZZARD, EARTHQUAKE, HYPER_BEAM, TOXIC
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 35000
+	db $bb, $df ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 46 ; HP
+	bigdw 46 ; Max HP
+	bigdw 27 ; Atk
+	bigdw 32 ; Def
+	bigdw 31 ; Spd
+	bigdw 20 ; SAtk
+	bigdw 26 ; SDef
+	db "MIRUTANKU@@"
+
+
+	db AERODACTYL
+	db LEFTOVERS
+	db HYPER_BEAM, SUPERSONIC, EARTHQUAKE, BITE
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $db, $fb ; DVs
+	db 5, 20, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 43 ; HP
+	bigdw 43 ; Max HP
+	bigdw 32 ; Atk
+	bigdw 24 ; Def
+	bigdw 38 ; Spd
+	bigdw 23 ; SAtk
+	bigdw 26 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db LAPRAS
+	db MIRACLEBERRY
+	db BLIZZARD, SURF, THUNDERBOLT, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $fd, $eb ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 52 ; HP
+	bigdw 52 ; Max HP
+	bigdw 29 ; Atk
+	bigdw 27 ; Def
+	bigdw 24 ; Spd
+	bigdw 28 ; SAtk
+	bigdw 30 ; SDef
+	db "RAPURASU@@@"
+
+
+	db SNEASEL
+	db GOLD_BERRY
+	db SLASH, FAINT_ATTACK, SURF, BLIZZARD
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 35000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $fb, $bf ; DVs
+	db 20, 20, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 38 ; HP
+	bigdw 38 ; Max HP
+	bigdw 31 ; Atk
+	bigdw 22 ; Def
+	bigdw 34 ; Spd
+	bigdw 19 ; SAtk
+	bigdw 27 ; SDef
+	db "NIyu-RA@@@@"
+
+
+	db PORYGON2
+	db BRIGHTPOWDER
+	db PSYCHIC_M, BLIZZARD, HYPER_BEAM, TRI_ATTACK
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 40000
+	bigdw 30000
+	bigdw 30000
+	db $fb, $de ; DVs
+	db 10, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 44 ; HP
+	bigdw 44 ; Max HP
+	bigdw 28 ; Atk
+	bigdw 30 ; Def
+	bigdw 23 ; Spd
+	bigdw 33 ; SAtk
+	bigdw 31 ; SDef
+	db "PORIGON2@@@"
+
+
+	db MISDREAVUS
+	db FOCUS_BAND
+	db PERISH_SONG, MEAN_LOOK, PAIN_SPLIT, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ef, $df ; DVs
+	db 5, 5, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 37 ; HP
+	bigdw 37 ; Max HP
+	bigdw 24 ; Atk
+	bigdw 24 ; Def
+	bigdw 28 ; Spd
+	bigdw 29 ; SAtk
+	bigdw 29 ; SDef
+	db "MUUMA@@@@@@"
+
+
+	db HOUNDOUR
+	db GOLD_BERRY
+	db FAINT_ATTACK, SOLARBEAM, ROAR, SUNNY_DAY
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 33000
+	bigdw 30000
+	db $fd, $fe ; DVs
+	db 20, 10, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 36 ; HP
+	bigdw 36 ; Max HP
+	bigdw 24 ; Atk
+	bigdw 17 ; Def
+	bigdw 25 ; Spd
+	bigdw 28 ; SAtk
+	bigdw 22 ; SDef
+	db "DERUBIRU@@@"
+
+
+	db GIRAFARIG
+	db KINGS_ROCK
+	db PSYBEAM, MUD_SLAP, SHADOW_BALL, AGILITY
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ed, $fd ; DVs
+	db 20, 10, 15, 30 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 39 ; HP
+	bigdw 39 ; Max HP
+	bigdw 28 ; Atk
+	bigdw 24 ; Def
+	bigdw 29 ; Spd
+	bigdw 29 ; SAtk
+	bigdw 24 ; SDef
+	db "KIRINRIKI@@"
+
+
+	db BLISSEY
+	db QUICK_CLAW
+	db HEADBUTT, SOLARBEAM, ROLLOUT, STRENGTH
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 32000
+	bigdw 40000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $df, $ce ; DVs
+	db 15, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 77 ; HP
+	bigdw 77 ; Max HP
+	bigdw 14 ; Atk
+	bigdw 14 ; Def
+	bigdw 22 ; Spd
+	bigdw 27 ; SAtk
+	bigdw 39 ; SDef
+	db "HAPINASU@@@"
+
+
+	db SNORLAX
+	db MIRACLEBERRY
+	db HEADBUTT, PROTECT, SNORE, SURF
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ef, $f7 ; DVs
+	db 15, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 57 ; HP
+	bigdw 57 ; Max HP
+	bigdw 34 ; Atk
+	bigdw 25 ; Def
+	bigdw 18 ; Spd
+	bigdw 23 ; SAtk
+	bigdw 32 ; SDef
+	db "KABIGON@@@@"
+
+
+	db EXEGGUTOR
+	db KINGS_ROCK
+	db TOXIC, GIGA_DRAIN, THIEF, CONFUSION
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $fe, $fe ; DVs
+	db 10, 5, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 45 ; HP
+	bigdw 45 ; Max HP
+	bigdw 31 ; Atk
+	bigdw 29 ; Def
+	bigdw 23 ; Spd
+	bigdw 37 ; SAtk
+	bigdw 25 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db HERACROSS
+	db GOLD_BERRY
+	db REVERSAL, ENDURE, COUNTER, ROCK_SMASH
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $f7, $f7 ; DVs
+	db 15, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 43 ; HP
+	bigdw 43 ; Max HP
+	bigdw 37 ; Atk
+	bigdw 25 ; Def
+	bigdw 29 ; Spd
+	bigdw 18 ; SAtk
+	bigdw 29 ; SDef
+	db "HERAKUROSU@"
+
+
+	db UNOWN
+	db BERRY
+	db HIDDEN_POWER, 0, 0, 0
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $ff, $ff ; DVs
+	db 15, 0, 0, 0 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 36 ; HP
+	bigdw 36 ; Max HP
+	bigdw 26 ; Atk
+	bigdw 21 ; Def
+	bigdw 21 ; Spd
+	bigdw 26 ; SAtk
+	bigdw 21 ; SDef
+	db "ANNO-N@@@@@"
+
+
+	db TAUROS
+	db KINGS_ROCK
+	db HEADBUTT, SWAGGER, TAIL_WHIP, ICY_WIND
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $57 ; DVs
+	db 15, 15, 30, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 40 ; HP
+	bigdw 40 ; Max HP
+	bigdw 30 ; Atk
+	bigdw 29 ; Def
+	bigdw 32 ; Spd
+	bigdw 18 ; SAtk
+	bigdw 24 ; SDef
+	db "KENTAROSU@@"
+
+
+	db MR__MIME
+	db QUICK_CLAW
+	db TOXIC, PSYCH_UP, FIRE_PUNCH, HEADBUTT
+	dw 0 ; OT ID
+	dt 1000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $73, $67 ; DVs
+	db 10, 10, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 10 ; Level
+	db 0, 0 ; Status
+	bigdw 34 ; HP
+	bigdw 34 ; Max HP
+	bigdw 19 ; Atk
+	bigdw 22 ; Def
+	bigdw 28 ; Spd
+	bigdw 30 ; SAtk
+	bigdw 34 ; SDef
+	db "BARIYA-DO@@"
+
+
+
+
+BattleTowerMons2:
+
+	db UMBREON
+	db LEFTOVERS
+	db PROTECT, TOXIC, MUD_SLAP, ATTRACT
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $cf, $bc ; DVs
+	db 10, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 46 ; Atk
+	bigdw 66 ; Def
+	bigdw 46 ; Spd
+	bigdw 44 ; SAtk
+	bigdw 72 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db STARMIE
+	db GOLD_BERRY
+	db RECOVER, PSYCHIC_M, SURF, PSYCH_UP
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $db, $db ; DVs
+	db 20, 10, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 71 ; HP
+	bigdw 71 ; Max HP
+	bigdw 51 ; Atk
+	bigdw 54 ; Def
+	bigdw 67 ; Spd
+	bigdw 60 ; SAtk
+	bigdw 54 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db GYARADOS
+	db MIRACLEBERRY
+	db HYPER_BEAM, DRAGON_RAGE, THUNDERBOLT, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fa, $fd ; DVs
+	db 5, 10, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 83 ; HP
+	bigdw 83 ; Max HP
+	bigdw 72 ; Atk
+	bigdw 51 ; Def
+	bigdw 54 ; Spd
+	bigdw 45 ; SAtk
+	bigdw 61 ; SDef
+	db "GIyaRADOSU@"
+
+
+	db STEELIX
+	db GOLD_BERRY
+	db ROAR, IRON_TAIL, SWAGGER, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $ff, $ff ; DVs
+	db 20, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 77 ; HP
+	bigdw 77 ; Max HP
+	bigdw 55 ; Atk
+	bigdw 102 ; Def
+	bigdw 31 ; Spd
+	bigdw 44 ; SAtk
+	bigdw 48 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db ALAKAZAM
+	db BERRY_JUICE
+	db PSYCHIC_M, PSYCH_UP, TOXIC, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	bigdw 40000
+	db $fd, $ef ; DVs
+	db 10, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 68 ; HP
+	bigdw 68 ; Max HP
+	bigdw 42 ; Atk
+	bigdw 36 ; Def
+	bigdw 69 ; Spd
+	bigdw 75 ; SAtk
+	bigdw 55 ; SDef
+	db "HU-DEiN@@@@"
+
+
+	db ARCANINE
+	db BRIGHTPOWDER
+	db FLAMETHROWER, ROAR, HYPER_BEAM, IRON_TAIL
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 35000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $db, $fb ; DVs
+	db 15, 20, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 64 ; Atk
+	bigdw 52 ; Def
+	bigdw 60 ; Spd
+	bigdw 60 ; SAtk
+	bigdw 52 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db HERACROSS
+	db FOCUS_BAND
+	db ENDURE, REVERSAL, MEGAHORN, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 30000
+	bigdw 45000
+	bigdw 30000
+	bigdw 45000
+	db $df, $de ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 78 ; HP
+	bigdw 78 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 51 ; Def
+	bigdw 52 ; Spd
+	bigdw 37 ; SAtk
+	bigdw 59 ; SDef
+	db "HERAKUROSU@"
+
+
+	db EXEGGUTOR
+	db LEFTOVERS
+	db HYPER_BEAM, PSYCHIC_M, TOXIC, DREAM_EATER
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $eb ; DVs
+	db 5, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 83 ; HP
+	bigdw 83 ; Max HP
+	bigdw 60 ; Atk
+	bigdw 55 ; Def
+	bigdw 43 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 46 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db AERODACTYL
+	db GOLD_BERRY
+	db REST, HYPER_BEAM, EARTHQUAKE, DRAGON_RAGE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $fb, $bb ; DVs
+	db 10, 5, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 78 ; HP
+	bigdw 78 ; Max HP
+	bigdw 64 ; Atk
+	bigdw 45 ; Def
+	bigdw 72 ; Spd
+	bigdw 44 ; SAtk
+	bigdw 50 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db BLISSEY
+	db BRIGHTPOWDER
+	db PSYCHIC_M, SUBMISSION, SOFTBOILED, COUNTER
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	bigdw 50000
+	db $bd, $fe ; DVs
+	db 10, 25, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 148 ; HP
+	bigdw 148 ; Max HP
+	bigdw 24 ; Atk
+	bigdw 22 ; Def
+	bigdw 41 ; Spd
+	bigdw 51 ; SAtk
+	bigdw 75 ; SDef
+	db "HAPINASU@@@"
+
+
+	db LAPRAS
+	db GOLD_BERRY
+	db PSYCHIC_M, THUNDERBOLT, BLIZZARD, CONFUSE_RAY
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 30000
+	bigdw 40000
+	bigdw 55000
+	bigdw 30000
+	db $fe, $d7 ; DVs
+	db 10, 15, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 98 ; HP
+	bigdw 98 ; Max HP
+	bigdw 53 ; Atk
+	bigdw 52 ; Def
+	bigdw 45 ; Spd
+	bigdw 50 ; SAtk
+	bigdw 54 ; SDef
+	db "RAPURASU@@@"
+
+
+	db PIKACHU
+	db LIGHT_BALL
+	db THUNDERBOLT, THUNDER_WAVE, STRENGTH, TOXIC
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $fc, $fe ; DVs
+	db 15, 20, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 58 ; HP
+	bigdw 58 ; Max HP
+	bigdw 44 ; Atk
+	bigdw 32 ; Def
+	bigdw 58 ; Spd
+	bigdw 41 ; SAtk
+	bigdw 37 ; SDef
+	db "PIKATIyuU@@"
+
+
+	db SCIZOR
+	db FOCUS_BAND
+	db STEEL_WING, SLASH, TOXIC, SANDSTORM
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $fe ; DVs
+	db 25, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 73 ; HP
+	bigdw 73 ; Max HP
+	bigdw 73 ; Atk
+	bigdw 60 ; Def
+	bigdw 47 ; Spd
+	bigdw 43 ; SAtk
+	bigdw 53 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db HITMONCHAN
+	db GOLD_BERRY
+	db THUNDERPUNCH, ICE_PUNCH, FIRE_PUNCH, MEGA_PUNCH
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 35000
+	bigdw 50000
+	bigdw 30000
+	db $fb, $fd ; DVs
+	db 15, 15, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 67 ; HP
+	bigdw 67 ; Max HP
+	bigdw 63 ; Atk
+	bigdw 50 ; Def
+	bigdw 52 ; Spd
+	bigdw 32 ; SAtk
+	bigdw 62 ; SDef
+	db "EBIWARA-@@@"
+
+
+	db TAUROS
+	db BRIGHTPOWDER
+	db THUNDERBOLT, EARTHQUAKE, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	db $fb, $ef ; DVs
+	db 15, 10, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 76 ; HP
+	bigdw 76 ; Max HP
+	bigdw 61 ; Atk
+	bigdw 58 ; Def
+	bigdw 63 ; Spd
+	bigdw 35 ; SAtk
+	bigdw 47 ; SDef
+	db "KENTAROSU@@"
+
+
+	db AZUMARILL
+	db MYSTIC_WATER
+	db SURF, BLIZZARD, ATTRACT, RAIN_DANCE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $ed, $f7 ; DVs
+	db 15, 5, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 82 ; HP
+	bigdw 82 ; Max HP
+	bigdw 40 ; Atk
+	bigdw 52 ; Def
+	bigdw 41 ; Spd
+	bigdw 37 ; SAtk
+	bigdw 49 ; SDef
+	db "MARIRURI@@@"
+
+
+	db MILTANK
+	db KINGS_ROCK
+	db EARTHQUAKE, THUNDER, ATTRACT, SURF
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $df, $fe ; DVs
+	db 10, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 83 ; HP
+	bigdw 83 ; Max HP
+	bigdw 52 ; Atk
+	bigdw 63 ; Def
+	bigdw 61 ; Spd
+	bigdw 36 ; SAtk
+	bigdw 48 ; SDef
+	db "MIRUTANKU@@"
+
+
+	db WIGGLYTUFF
+	db GOLD_BERRY
+	db HYPER_BEAM, BLIZZARD, FIRE_BLAST, ATTRACT
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $c7, $fe ; DVs
+	db 5, 5, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 98 ; HP
+	bigdw 98 ; Max HP
+	bigdw 47 ; Atk
+	bigdw 35 ; Def
+	bigdw 39 ; Spd
+	bigdw 50 ; SAtk
+	bigdw 40 ; SDef
+	db "PUKURIN@@@@"
+
+
+	db WIGGLYTUFF
+	db PINK_BOW
+	db PSYCHIC_M, SWAGGER, PSYCH_UP, HEADBUTT
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $c7, $77 ; DVs
+	db 10, 15, 10, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 97 ; HP
+	bigdw 97 ; Max HP
+	bigdw 46 ; Atk
+	bigdw 34 ; Def
+	bigdw 34 ; Spd
+	bigdw 46 ; SAtk
+	bigdw 36 ; SDef
+	db "PUKURIN@@@@"
+
+
+	db NIDOKING
+	db BERRY
+	db BLIZZARD, EARTHQUAKE, SURF, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $56, $46 ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 74 ; HP
+	bigdw 74 ; Max HP
+	bigdw 52 ; Atk
+	bigdw 46 ; Def
+	bigdw 49 ; Spd
+	bigdw 50 ; SAtk
+	bigdw 46 ; SDef
+	db "NIDOKINGU@@"
+
+
+	db QUAGSIRE
+	db QUICK_CLAW
+	db AMNESIA, EARTHQUAKE, SURF, RAIN_DANCE
+	dw 0 ; OT ID
+	dt 8000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $55, $47 ; DVs
+	db 20, 10, 15, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 20 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 49 ; Atk
+	bigdw 49 ; Def
+	bigdw 29 ; Spd
+	bigdw 42 ; SAtk
+	bigdw 42 ; SDef
+	db "NUO-@@@@@@@"
+
+
+
+
+BattleTowerMons3:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDERBOLT, THUNDER_WAVE, ROAR, MUD_SLAP
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	db $db, $ed ; DVs
+	db 15, 20, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 103 ; HP
+	bigdw 103 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 64 ; Def
+	bigdw 107 ; Spd
+	bigdw 96 ; SAtk
+	bigdw 87 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db POLIWRATH
+	db BRIGHTPOWDER
+	db DOUBLE_TEAM, SURF, FISSURE, SUBMISSION
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $fb ; DVs
+	db 15, 15, 5, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 119 ; HP
+	bigdw 119 ; Max HP
+	bigdw 81 ; Atk
+	bigdw 87 ; Def
+	bigdw 73 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 82 ; SDef
+	db "NIyoROBON@@"
+
+
+	db STARMIE
+	db LEFTOVERS
+	db THUNDER_WAVE, PSYCHIC_M, RECOVER, SURF
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ff, $ff ; DVs
+	db 20, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 101 ; HP
+	bigdw 101 ; Max HP
+	bigdw 75 ; Atk
+	bigdw 81 ; Def
+	bigdw 99 ; Spd
+	bigdw 90 ; SAtk
+	bigdw 81 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db JYNX
+	db GOLD_BERRY
+	db BLIZZARD, LOVELY_KISS, DREAM_EATER, ATTRACT
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $fb, $ee ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 102 ; HP
+	bigdw 102 ; Max HP
+	bigdw 60 ; Atk
+	bigdw 49 ; Def
+	bigdw 83 ; Spd
+	bigdw 98 ; SAtk
+	bigdw 86 ; SDef
+	db "RU-ZIyuRA@@"
+
+
+	db DUGTRIO
+	db KINGS_ROCK
+	db EARTHQUAKE, SLUDGE_BOMB, SLASH, MUD_SLAP
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $ff ; DVs
+	db 10, 10, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 81 ; HP
+	bigdw 81 ; Max HP
+	bigdw 77 ; Atk
+	bigdw 56 ; Def
+	bigdw 102 ; Spd
+	bigdw 60 ; SAtk
+	bigdw 72 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db BELLOSSOM
+	db BRIGHTPOWDER
+	db GIGA_DRAIN, SUNNY_DAY, SOLARBEAM, DOUBLE_TEAM
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $df, $db ; DVs
+	db 5, 5, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 109 ; HP
+	bigdw 109 ; Max HP
+	bigdw 76 ; Atk
+	bigdw 81 ; Def
+	bigdw 60 ; Spd
+	bigdw 82 ; SAtk
+	bigdw 88 ; SDef
+	db "KIREIHANA@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db TOXIC, REFLECT, SOFTBOILED, PROTECT
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 30000
+	bigdw 45000
+	bigdw 30000
+	bigdw 45000
+	db $fb, $ed ; DVs
+	db 10, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 217 ; HP
+	bigdw 217 ; Max HP
+	bigdw 32 ; Atk
+	bigdw 33 ; Def
+	bigdw 59 ; Spd
+	bigdw 73 ; SAtk
+	bigdw 109 ; SDef
+	db "HAPINASU@@@"
+
+
+	db HOUNDOOM
+	db CHARCOAL
+	db FLAMETHROWER, CRUNCH, SHADOW_BALL, DREAM_EATER
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $ed ; DVs
+	db 15, 15, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 108 ; HP
+	bigdw 108 ; Max HP
+	bigdw 84 ; Atk
+	bigdw 59 ; Def
+	bigdw 86 ; Spd
+	bigdw 94 ; SAtk
+	bigdw 76 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db MACHAMP
+	db MIRACLEBERRY
+	db CROSS_CHOP, ICE_PUNCH, EARTHQUAKE, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $be ; DVs
+	db 5, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 118 ; HP
+	bigdw 118 ; Max HP
+	bigdw 108 ; Atk
+	bigdw 75 ; Def
+	bigdw 61 ; Spd
+	bigdw 68 ; SAtk
+	bigdw 80 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db CROBAT
+	db GOLD_BERRY
+	db ATTRACT, CONFUSE_RAY, TOXIC, WING_ATTACK
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	bigdw 50000
+	db $ef, $dc ; DVs
+	db 15, 10, 10, 35 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 111 ; HP
+	bigdw 111 ; Max HP
+	bigdw 83 ; Atk
+	bigdw 74 ; Def
+	bigdw 103 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 76 ; SDef
+	db "KUROBAtuTO@"
+
+
+	db PORYGON2
+	db BRIGHTPOWDER
+	db PSYCHIC_M, RECOVER, HYPER_BEAM, TRI_ATTACK
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 30000
+	bigdw 40000
+	bigdw 55000
+	bigdw 30000
+	db $df, $db ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 117 ; HP
+	bigdw 117 ; Max HP
+	bigdw 73 ; Atk
+	bigdw 83 ; Def
+	bigdw 66 ; Spd
+	bigdw 87 ; SAtk
+	bigdw 81 ; SDef
+	db "PORIGON2@@@"
+
+
+	db MAROWAK
+	db THICK_CLUB
+	db EARTHQUAKE, RETURN, HYPER_BEAM, BONEMERANG
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 30000
+	db $dd, $eb ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 255 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 99 ; HP
+	bigdw 99 ; Max HP
+	bigdw 77 ; Atk
+	bigdw 94 ; Def
+	bigdw 56 ; Spd
+	bigdw 54 ; SAtk
+	bigdw 72 ; SDef
+	db "GARAGARA@@@"
+
+
+	db ELECTRODE
+	db BRIGHTPOWDER
+	db LIGHT_SCREEN, THUNDERBOLT, PROTECT, THUNDER
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	db $bd, $ef ; DVs
+	db 30, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 98 ; HP
+	bigdw 98 ; Max HP
+	bigdw 57 ; Atk
+	bigdw 69 ; Def
+	bigdw 113 ; Spd
+	bigdw 78 ; SAtk
+	bigdw 78 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db LAPRAS
+	db LEFTOVERS
+	db RAIN_DANCE, WATER_GUN, ICY_WIND, STRENGTH
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 35000
+	bigdw 50000
+	bigdw 30000
+	db $fd, $eb ; DVs
+	db 5, 25, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 142 ; HP
+	bigdw 142 ; Max HP
+	bigdw 80 ; Atk
+	bigdw 74 ; Def
+	bigdw 65 ; Spd
+	bigdw 75 ; SAtk
+	bigdw 81 ; SDef
+	db "RAPURASU@@@"
+
+
+	db LANTURN
+	db GOLD_BERRY
+	db RAIN_DANCE, THUNDER, SURF, FLAIL
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	db $dd, $eb ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 139 ; HP
+	bigdw 139 ; Max HP
+	bigdw 62 ; Atk
+	bigdw 64 ; Def
+	bigdw 66 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 70 ; SDef
+	db "RANTA-N@@@@"
+
+
+	db ESPEON
+	db MIRACLEBERRY
+	db CONFUSION, SWIFT, TOXIC, PSYCH_UP
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $f7 ; DVs
+	db 25, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 99 ; HP
+	bigdw 99 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 66 ; Def
+	bigdw 96 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 82 ; SDef
+	db "E-HUi@@@@@@"
+
+
+	db TENTACRUEL
+	db KINGS_ROCK
+	db WRAP, TOXIC, SLUDGE_BOMB, BUBBLEBEAM
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 47000
+	bigdw 45000
+	db $fe, $fe ; DVs
+	db 20, 10, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 110 ; HP
+	bigdw 110 ; Max HP
+	bigdw 71 ; Atk
+	bigdw 68 ; Def
+	bigdw 90 ; Spd
+	bigdw 77 ; SAtk
+	bigdw 101 ; SDef
+	db "DOKUKURAGE@"
+
+
+	db GENGAR
+	db GOLD_BERRY
+	db THIEF, LICK, NIGHT_SHADE, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $f7 ; DVs
+	db 10, 30, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 101 ; HP
+	bigdw 101 ; Max HP
+	bigdw 68 ; Atk
+	bigdw 61 ; Def
+	bigdw 96 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 70 ; SDef
+	db "GENGA-@@@@@"
+
+
+	db URSARING
+	db GOLD_BERRY
+	db HEADBUTT, PROTECT, ROAR, LEER
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $77, $45 ; DVs
+	db 15, 10, 20, 30 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 114 ; HP
+	bigdw 114 ; Max HP
+	bigdw 100 ; Atk
+	bigdw 67 ; Def
+	bigdw 53 ; Spd
+	bigdw 65 ; SAtk
+	bigdw 65 ; SDef
+	db "RINGUMA@@@@"
+
+
+	db FEAROW
+	db BRIGHTPOWDER
+	db MIRROR_MOVE, PURSUIT, PECK, SWIFT
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $67, $77 ; DVs
+	db 20, 20, 35, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 96 ; HP
+	bigdw 96 ; Max HP
+	bigdw 75 ; Atk
+	bigdw 61 ; Def
+	bigdw 82 ; Spd
+	bigdw 58 ; SAtk
+	bigdw 58 ; SDef
+	db "ONIDORIRU@@"
+
+
+	db PRIMEAPE
+	db MIRACLEBERRY
+	db LOW_KICK, KARATE_CHOP, REVERSAL, FOCUS_ENERGY
+	dw 0 ; OT ID
+	dt 27000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $77, $67 ; DVs
+	db 20, 25, 15, 30 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 30 ; Level
+	db 0, 0 ; Status
+	bigdw 99 ; HP
+	bigdw 99 ; Max HP
+	bigdw 85 ; Atk
+	bigdw 58 ; Def
+	bigdw 78 ; Spd
+	bigdw 58 ; SAtk
+	bigdw 64 ; SDef
+	db "OKORIZARU@@"
+
+
+
+
+BattleTowerMons4:
+
+	db TAUROS
+	db GOLD_BERRY
+	db RETURN, HYPER_BEAM, EARTHQUAKE, IRON_TAIL
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $fe ; DVs
+	db 20, 5, 10, 15 ; PP
+	db 255 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 143 ; HP
+	bigdw 143 ; Max HP
+	bigdw 119 ; Atk
+	bigdw 113 ; Def
+	bigdw 127 ; Spd
+	bigdw 70 ; SAtk
+	bigdw 94 ; SDef
+	db "KENTAROSU@@"
+
+
+	db KINGDRA
+	db LEFTOVERS
+	db SURF, DRAGONBREATH, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 15, 20, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 142 ; HP
+	bigdw 142 ; Max HP
+	bigdw 115 ; Atk
+	bigdw 113 ; Def
+	bigdw 106 ; Spd
+	bigdw 115 ; SAtk
+	bigdw 115 ; SDef
+	db "KINGUDORA@@"
+
+
+	db SNORLAX
+	db QUICK_CLAW
+	db ATTRACT, BODY_SLAM, PSYCH_UP, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ed, $dd ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 205 ; HP
+	bigdw 205 ; Max HP
+	bigdw 126 ; Atk
+	bigdw 89 ; Def
+	bigdw 61 ; Spd
+	bigdw 89 ; SAtk
+	bigdw 125 ; SDef
+	db "KABIGON@@@@"
+
+
+	db LAPRAS
+	db LEFTOVERS
+	db THUNDERBOLT, ICE_BEAM, CONFUSE_RAY, SURF
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $eb ; DVs
+	db 15, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 186 ; HP
+	bigdw 186 ; Max HP
+	bigdw 107 ; Atk
+	bigdw 101 ; Def
+	bigdw 86 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 111 ; SDef
+	db "RAPURASU@@@"
+
+
+	db STEELIX
+	db GOLD_BERRY
+	db SANDSTORM, IRON_TAIL, EARTHQUAKE, TOXIC
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $db ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 137 ; HP
+	bigdw 137 ; Max HP
+	bigdw 106 ; Atk
+	bigdw 199 ; Def
+	bigdw 61 ; Spd
+	bigdw 79 ; SAtk
+	bigdw 87 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db ALAKAZAM
+	db KINGS_ROCK
+	db PSYCHIC_M, THUNDERPUNCH, RECOVER, FIRE_PUNCH
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $ef ; DVs
+	db 10, 15, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 126 ; HP
+	bigdw 126 ; Max HP
+	bigdw 76 ; Atk
+	bigdw 73 ; Def
+	bigdw 135 ; Spd
+	bigdw 147 ; SAtk
+	bigdw 107 ; SDef
+	db "HU-DEiN@@@@"
+
+
+	db STARMIE
+	db LEFTOVERS
+	db BLIZZARD, THUNDERBOLT, SURF, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $be ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 131 ; HP
+	bigdw 131 ; Max HP
+	bigdw 99 ; Atk
+	bigdw 104 ; Def
+	bigdw 127 ; Spd
+	bigdw 117 ; SAtk
+	bigdw 105 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db WOBBUFFET
+	db GOLD_BERRY
+	db COUNTER, MIRROR_COAT, SAFEGUARD, DESTINY_BOND
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bf, $e7 ; DVs
+	db 20, 20, 25, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 233 ; HP
+	bigdw 233 ; Max HP
+	bigdw 62 ; Atk
+	bigdw 85 ; Def
+	bigdw 64 ; Spd
+	bigdw 59 ; SAtk
+	bigdw 79 ; SDef
+	db "SO-NANSU@@@"
+
+
+	db GOLEM
+	db FOCUS_BAND
+	db EXPLOSION, EARTHQUAKE, MEGA_PUNCH, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $ed ; DVs
+	db 5, 10, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 145 ; HP
+	bigdw 145 ; Max HP
+	bigdw 125 ; Atk
+	bigdw 139 ; Def
+	bigdw 74 ; Spd
+	bigdw 80 ; SAtk
+	bigdw 88 ; SDef
+	db "GORO-NIya@@"
+
+
+	db SCIZOR
+	db SCOPE_LENS
+	db SLASH, STEEL_WING, PURSUIT, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $bd, $fe ; DVs
+	db 20, 25, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 139 ; HP
+	bigdw 139 ; Max HP
+	bigdw 139 ; Atk
+	bigdw 117 ; Def
+	bigdw 89 ; Spd
+	bigdw 82 ; SAtk
+	bigdw 102 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db DUGTRIO
+	db KINGS_ROCK
+	db EARTHQUAKE, HYPER_BEAM, SLUDGE_BOMB, MUD_SLAP
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $bb ; DVs
+	db 10, 5, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 108 ; HP
+	bigdw 108 ; Max HP
+	bigdw 103 ; Atk
+	bigdw 78 ; Def
+	bigdw 131 ; Spd
+	bigdw 75 ; SAtk
+	bigdw 91 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db SLOWBRO
+	db MIRACLEBERRY
+	db SURF, PSYCHIC_M, EARTHQUAKE, BLIZZARD
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $bf, $cf ; DVs
+	db 15, 10, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 157 ; HP
+	bigdw 157 ; Max HP
+	bigdw 95 ; Atk
+	bigdw 126 ; Def
+	bigdw 60 ; Spd
+	bigdw 119 ; SAtk
+	bigdw 103 ; SDef
+	db "YADORAN@@@@"
+
+
+	db PORYGON2
+	db NO_ITEM
+	db CONVERSION2, CONVERSION, PSYBEAM, THIEF
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bc, $ef ; DVs
+	db 30, 30, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 147 ; HP
+	bigdw 147 ; Max HP
+	bigdw 99 ; Atk
+	bigdw 108 ; Def
+	bigdw 86 ; Spd
+	bigdw 123 ; SAtk
+	bigdw 115 ; SDef
+	db "PORIGON2@@@"
+
+
+	db ARCANINE
+	db CHARCOAL
+	db FLAME_WHEEL, LEER, BODY_SLAM, ROAR
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $bb ; DVs
+	db 25, 30, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 152 ; HP
+	bigdw 152 ; Max HP
+	bigdw 127 ; Atk
+	bigdw 102 ; Def
+	bigdw 111 ; Spd
+	bigdw 115 ; SAtk
+	bigdw 99 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db FORRETRESS
+	db LEFTOVERS
+	db RAPID_SPIN, PROTECT, TOXIC, SANDSTORM
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fa, $7f ; DVs
+	db 40, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 140 ; HP
+	bigdw 140 ; Max HP
+	bigdw 111 ; Atk
+	bigdw 147 ; Def
+	bigdw 64 ; Spd
+	bigdw 87 ; SAtk
+	bigdw 87 ; SDef
+	db "HUoRETOSU@@"
+
+
+	db OMASTAR
+	db GOLD_BERRY
+	db CURSE, WATER_GUN, ANCIENTPOWER, ROCK_SMASH
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $f7 ; DVs
+	db 10, 25, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 133 ; HP
+	bigdw 133 ; Max HP
+	bigdw 86 ; Atk
+	bigdw 139 ; Def
+	bigdw 83 ; Spd
+	bigdw 124 ; SAtk
+	bigdw 88 ; SDef
+	db "OMUSUTA-@@@"
+
+
+	db CHARIZARD
+	db KINGS_ROCK
+	db FIRE_SPIN, DRAGON_RAGE, FLY, SLASH
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 15, 10, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 142 ; HP
+	bigdw 142 ; Max HP
+	bigdw 106 ; Atk
+	bigdw 100 ; Def
+	bigdw 119 ; Spd
+	bigdw 125 ; SAtk
+	bigdw 106 ; SDef
+	db "RIZA-DON@@@"
+
+
+	db EXEGGUTOR
+	db BRIGHTPOWDER
+	db EGG_BOMB, STOMP, PSYCH_UP, CONFUSION
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $e7 ; DVs
+	db 10, 20, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 158 ; HP
+	bigdw 158 ; Max HP
+	bigdw 115 ; Atk
+	bigdw 100 ; Def
+	bigdw 82 ; Spd
+	bigdw 132 ; SAtk
+	bigdw 84 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db HYPNO
+	db BRIGHTPOWDER
+	db CONFUSION, THUNDERPUNCH, HEADBUTT, DISABLE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $77, $7a ; DVs
+	db 25, 15, 15, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 146 ; HP
+	bigdw 146 ; Max HP
+	bigdw 86 ; Atk
+	bigdw 83 ; Def
+	bigdw 81 ; Spd
+	bigdw 88 ; SAtk
+	bigdw 122 ; SDef
+	db "SURI-PA-@@@"
+
+
+	db MUK
+	db QUICK_CLAW
+	db SCREECH, TOXIC, SLUDGE, HARDEN
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $75, $6b ; DVs
+	db 40, 10, 20, 30 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 111 ; Atk
+	bigdw 86 ; Def
+	bigdw 67 ; Spd
+	bigdw 83 ; SAtk
+	bigdw 111 ; SDef
+	db "BETOBETON@@"
+
+
+	db ELECTABUZZ
+	db KINGS_ROCK
+	db LIGHT_SCREEN, THUNDERPUNCH, SWIFT, SNORE
+	dw 0 ; OT ID
+	dt 64000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $77 ; DVs
+	db 30, 15, 20, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 40 ; Level
+	db 0, 0 ; Status
+	bigdw 124 ; HP
+	bigdw 124 ; Max HP
+	bigdw 93 ; Atk
+	bigdw 71 ; Def
+	bigdw 111 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 95 ; SDef
+	db "EREBU-@@@@@"
+
+
+
+
+BattleTowerMons5:
+
+	db KINGDRA
+	db GOLD_BERRY
+	db SURF, HYPER_BEAM, BLIZZARD, DRAGONBREATH
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 50000
+	bigdw 55000
+	db $dd, $ff ; DVs
+	db 15, 5, 5, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 179 ; HP
+	bigdw 179 ; Max HP
+	bigdw 142 ; Atk
+	bigdw 143 ; Def
+	bigdw 132 ; Spd
+	bigdw 144 ; SAtk
+	bigdw 144 ; SDef
+	db "KINGUDORA@@"
+
+
+	db HOUNDOOM
+	db MIRACLEBERRY
+	db REST, CRUNCH, DREAM_EATER, FLAMETHROWER
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $dd, $fc ; DVs
+	db 10, 15, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 178 ; HP
+	bigdw 178 ; Max HP
+	bigdw 135 ; Atk
+	bigdw 98 ; Def
+	bigdw 145 ; Spd
+	bigdw 157 ; SAtk
+	bigdw 127 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db SHUCKLE
+	db LEFTOVERS
+	db SANDSTORM, REST, TOXIC, WRAP
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $cf ; DVs
+	db 10, 10, 10, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 123 ; HP
+	bigdw 123 ; Max HP
+	bigdw 60 ; Atk
+	bigdw 278 ; Def
+	bigdw 52 ; Spd
+	bigdw 59 ; SAtk
+	bigdw 279 ; SDef
+	db "TUBOTUBO@@@"
+
+
+	db SNORLAX
+	db LEFTOVERS
+	db HYPER_BEAM, EARTHQUAKE, SURF, PSYCH_UP
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $ef ; DVs
+	db 5, 10, 15, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 263 ; HP
+	bigdw 263 ; Max HP
+	bigdw 159 ; Atk
+	bigdw 112 ; Def
+	bigdw 79 ; Spd
+	bigdw 114 ; SAtk
+	bigdw 159 ; SDef
+	db "KABIGON@@@@"
+
+
+	db LAPRAS
+	db GOLD_BERRY
+	db THUNDERBOLT, SURF, CONFUSE_RAY, BLIZZARD
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	db $dd, $dd ; DVs
+	db 15, 15, 10, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 234 ; HP
+	bigdw 234 ; Max HP
+	bigdw 133 ; Atk
+	bigdw 128 ; Def
+	bigdw 107 ; Spd
+	bigdw 133 ; SAtk
+	bigdw 143 ; SDef
+	db "RAPURASU@@@"
+
+
+	db JOLTEON
+	db KINGS_ROCK
+	db THUNDERBOLT, THUNDER_WAVE, SHADOW_BALL, HIDDEN_POWER
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 60000
+	bigdw 57000
+	bigdw 55000
+	bigdw 55000
+	db $ed, $ff ; DVs
+	db 15, 20, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 114 ; Atk
+	bigdw 107 ; Def
+	bigdw 179 ; Spd
+	bigdw 159 ; SAtk
+	bigdw 144 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db SCIZOR
+	db LEFTOVERS
+	db HYPER_BEAM, SLASH, AGILITY, METAL_CLAW
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $df, $ed ; DVs
+	db 5, 20, 30, 35 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 169 ; HP
+	bigdw 169 ; Max HP
+	bigdw 175 ; Atk
+	bigdw 145 ; Def
+	bigdw 111 ; Spd
+	bigdw 99 ; SAtk
+	bigdw 124 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db SLOWKING
+	db MINT_BERRY
+	db REST, SURF, PSYCHIC_M, AMNESIA
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $df, $de ; DVs
+	db 10, 15, 10, 20 ; PP
+	db 15 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 196 ; HP
+	bigdw 196 ; Max HP
+	bigdw 118 ; Atk
+	bigdw 126 ; Def
+	bigdw 75 ; Spd
+	bigdw 146 ; SAtk
+	bigdw 156 ; SDef
+	db "YADOKINGU@@"
+
+
+	db MACHAMP
+	db GOLD_BERRY
+	db CROSS_CHOP, EARTHQUAKE, FIRE_BLAST, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 44000
+	db $ff, $ec ; DVs
+	db 5, 10, 5, 15 ; PP
+	db 13 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 187 ; HP
+	bigdw 187 ; Max HP
+	bigdw 176 ; Atk
+	bigdw 127 ; Def
+	bigdw 99 ; Spd
+	bigdw 108 ; SAtk
+	bigdw 128 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db STARMIE
+	db SCOPE_LENS
+	db THUNDER_WAVE, RECOVER, THUNDERBOLT, SURF
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 44000
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	db $ff, $ff ; DVs
+	db 20, 20, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 121 ; Atk
+	bigdw 130 ; Def
+	bigdw 161 ; Spd
+	bigdw 145 ; SAtk
+	bigdw 130 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db DUGTRIO
+	db KINGS_ROCK
+	db EARTHQUAKE, SLASH, HYPER_BEAM, SLUDGE_BOMB
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $f7, $fe ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 135 ; HP
+	bigdw 135 ; Max HP
+	bigdw 125 ; Atk
+	bigdw 89 ; Def
+	bigdw 166 ; Spd
+	bigdw 96 ; SAtk
+	bigdw 116 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db ELECTRODE
+	db MIRACLEBERRY
+	db THUNDERBOLT, EXPLOSION, MIRROR_COAT, REST
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 54000
+	bigdw 40000
+	bigdw 50000
+	db $7d, $fe ; DVs
+	db 15, 5, 20, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 88 ; Atk
+	bigdw 117 ; Def
+	bigdw 185 ; Spd
+	bigdw 126 ; SAtk
+	bigdw 126 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db AERODACTYL
+	db KINGS_ROCK
+	db HYPER_BEAM, EARTHQUAKE, FIRE_BLAST, IRON_TAIL
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $dd ; DVs
+	db 5, 10, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 181 ; HP
+	bigdw 181 ; Max HP
+	bigdw 152 ; Atk
+	bigdw 110 ; Def
+	bigdw 174 ; Spd
+	bigdw 104 ; SAtk
+	bigdw 119 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db CROBAT
+	db LEFTOVERS
+	db CONFUSE_RAY, ATTRACT, HYPER_BEAM, TOXIC
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $ef, $ff ; DVs
+	db 10, 15, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 178 ; HP
+	bigdw 178 ; Max HP
+	bigdw 134 ; Atk
+	bigdw 127 ; Def
+	bigdw 175 ; Spd
+	bigdw 117 ; SAtk
+	bigdw 127 ; SDef
+	db "KUROBAtuTO@"
+
+
+	db ZAPDOS
+	db MIRACLEBERRY
+	db DRILL_PECK, THUNDERBOLT, THUNDER_WAVE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 40000
+	bigdw 50000
+	db $fd, $de ; DVs
+	db 20, 15, 20, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 190 ; HP
+	bigdw 190 ; Max HP
+	bigdw 137 ; Atk
+	bigdw 129 ; Def
+	bigdw 143 ; Spd
+	bigdw 171 ; SAtk
+	bigdw 136 ; SDef
+	db "SANDA-@@@@@"
+
+
+	db SKARMORY
+	db GOLD_BERRY
+	db SANDSTORM, FLY, STEEL_WING, TOXIC
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	db $d7, $ed ; DVs
+	db 10, 15, 25, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 164 ; HP
+	bigdw 164 ; Max HP
+	bigdw 125 ; Atk
+	bigdw 179 ; Def
+	bigdw 116 ; Spd
+	bigdw 83 ; SAtk
+	bigdw 113 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db FORRETRESS
+	db LEFTOVERS
+	db SANDSTORM, TOXIC, EXPLOSION, SWAGGER
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 45000
+	bigdw 40000
+	db $cf, $dd ; DVs
+	db 10, 10, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 169 ; HP
+	bigdw 169 ; Max HP
+	bigdw 134 ; Atk
+	bigdw 189 ; Def
+	bigdw 84 ; Spd
+	bigdw 103 ; SAtk
+	bigdw 103 ; SDef
+	db "HUoRETOSU@@"
+
+
+	db STEELIX
+	db MIRACLEBERRY
+	db SANDSTORM, IRON_TAIL, REST, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 45000
+	db $dd, $dd ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 176 ; HP
+	bigdw 176 ; Max HP
+	bigdw 130 ; Atk
+	bigdw 245 ; Def
+	bigdw 73 ; Spd
+	bigdw 99 ; SAtk
+	bigdw 109 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db GIRAFARIG
+	db SCOPE_LENS
+	db DREAM_EATER, CRUNCH, PSYCHIC_M, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $45, $56 ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 161 ; HP
+	bigdw 161 ; Max HP
+	bigdw 114 ; Atk
+	bigdw 100 ; Def
+	bigdw 120 ; Spd
+	bigdw 126 ; SAtk
+	bigdw 101 ; SDef
+	db "KIRINRIKI@@"
+
+
+	db GYARADOS
+	db MIRACLEBERRY
+	db HYPER_BEAM, SURF, RAIN_DANCE, ZAP_CANNON
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $75, $65 ; DVs
+	db 5, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 193 ; HP
+	bigdw 193 ; Max HP
+	bigdw 162 ; Atk
+	bigdw 114 ; Def
+	bigdw 117 ; Spd
+	bigdw 95 ; SAtk
+	bigdw 135 ; SDef
+	db "GIyaRADOSU@"
+
+
+	db ARTICUNO
+	db GOLD_BERRY
+	db BLIZZARD, HYPER_BEAM, ROAR, ICY_WIND
+	dw 0 ; OT ID
+	dt 125000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	bigdw 40000
+	db $45, $56 ; DVs
+	db 5, 5, 20, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 50 ; Level
+	db 0, 0 ; Status
+	bigdw 181 ; HP
+	bigdw 181 ; Max HP
+	bigdw 119 ; Atk
+	bigdw 135 ; Def
+	bigdw 120 ; Spd
+	bigdw 131 ; SAtk
+	bigdw 161 ; SDef
+	db "HURI-ZA-@@@"
+
+
+
+
+BattleTowerMons6:
+
+	db KINGDRA
+	db LEFTOVERS
+	db DRAGONBREATH, SURF, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 50000
+	bigdw 60000
+	bigdw 60000
+	db $dd, $fe ; DVs
+	db 20, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 211 ; HP
+	bigdw 211 ; Max HP
+	bigdw 169 ; Atk
+	bigdw 167 ; Def
+	bigdw 161 ; Spd
+	bigdw 172 ; SAtk
+	bigdw 172 ; SDef
+	db "KINGUDORA@@"
+
+
+	db TYRANITAR
+	db GOLD_BERRY
+	db CRUNCH, EARTHQUAKE, ROCK_SLIDE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $ed ; DVs
+	db 15, 10, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 240 ; HP
+	bigdw 240 ; Max HP
+	bigdw 220 ; Atk
+	bigdw 187 ; Def
+	bigdw 131 ; Spd
+	bigdw 169 ; SAtk
+	bigdw 175 ; SDef
+	db "BANGIRASU@@"
+
+
+	db HOUNDOOM
+	db MIRACLEBERRY
+	db FLAMETHROWER, CRUNCH, DREAM_EATER, REST
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fb, $ef ; DVs
+	db 15, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 212 ; HP
+	bigdw 212 ; Max HP
+	bigdw 165 ; Atk
+	bigdw 113 ; Def
+	bigdw 172 ; Spd
+	bigdw 189 ; SAtk
+	bigdw 153 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db PORYGON2
+	db LEFTOVERS
+	db BLIZZARD, RECOVER, TOXIC, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	db $dd, $de ; DVs
+	db 5, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 223 ; HP
+	bigdw 223 ; Max HP
+	bigdw 149 ; Atk
+	bigdw 161 ; Def
+	bigdw 125 ; Spd
+	bigdw 182 ; SAtk
+	bigdw 170 ; SDef
+	db "PORIGON2@@@"
+
+
+	db MACHAMP
+	db QUICK_CLAW
+	db FIRE_PUNCH, CROSS_CHOP, THUNDERPUNCH, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 15, 5, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 226 ; HP
+	bigdw 226 ; Max HP
+	bigdw 212 ; Atk
+	bigdw 148 ; Def
+	bigdw 120 ; Spd
+	bigdw 134 ; SAtk
+	bigdw 158 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db ZAPDOS
+	db MINT_BERRY
+	db REST, DRILL_PECK, THUNDERBOLT, THUNDER_WAVE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $fd ; DVs
+	db 10, 20, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 229 ; HP
+	bigdw 229 ; Max HP
+	bigdw 160 ; Atk
+	bigdw 155 ; Def
+	bigdw 177 ; Spd
+	bigdw 203 ; SAtk
+	bigdw 161 ; SDef
+	db "SANDA-@@@@@"
+
+
+	db WOBBUFFET
+	db GOLD_BERRY
+	db COUNTER, MIRROR_COAT, DESTINY_BOND, SAFEGUARD
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $ed ; DVs
+	db 20, 20, 5, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 346 ; HP
+	bigdw 346 ; Max HP
+	bigdw 95 ; Atk
+	bigdw 122 ; Def
+	bigdw 94 ; Spd
+	bigdw 92 ; SAtk
+	bigdw 122 ; SDef
+	db "SO-NANSU@@@"
+
+
+	db AERODACTYL
+	db LEFTOVERS
+	db HYPER_BEAM, SUPERSONIC, EARTHQUAKE, BITE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fd, $dd ; DVs
+	db 5, 20, 10, 25 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 215 ; HP
+	bigdw 215 ; Max HP
+	bigdw 182 ; Atk
+	bigdw 131 ; Def
+	bigdw 208 ; Spd
+	bigdw 124 ; SAtk
+	bigdw 142 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db DRAGONITE
+	db MIRACLEBERRY
+	db HYPER_BEAM, ICY_WIND, THUNDERBOLT, SURF
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $fd ; DVs
+	db 5, 15, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 229 ; HP
+	bigdw 229 ; Max HP
+	bigdw 214 ; Atk
+	bigdw 164 ; Def
+	bigdw 152 ; Spd
+	bigdw 172 ; SAtk
+	bigdw 172 ; SDef
+	db "KAIRIyu-@@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db MUD_SLAP, MOONLIGHT, PSYCHIC_M, FAINT_ATTACK
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 10, 5, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 232 ; HP
+	bigdw 232 ; Max HP
+	bigdw 134 ; Atk
+	bigdw 185 ; Def
+	bigdw 132 ; Spd
+	bigdw 128 ; SAtk
+	bigdw 212 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db ARCANINE
+	db CHARCOAL
+	db FLAMETHROWER, CRUNCH, EXTREMESPEED, IRON_TAIL
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 40000
+	bigdw 55000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 15, 15, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 228 ; HP
+	bigdw 228 ; Max HP
+	bigdw 188 ; Atk
+	bigdw 146 ; Def
+	bigdw 170 ; Spd
+	bigdw 173 ; SAtk
+	bigdw 149 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db SKARMORY
+	db MIRACLEBERRY
+	db STEEL_WING, FLY, TOXIC, PROTECT
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $fb, $eb ; DVs
+	db 25, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 196 ; HP
+	bigdw 196 ; Max HP
+	bigdw 152 ; Atk
+	bigdw 218 ; Def
+	bigdw 138 ; Spd
+	bigdw 99 ; SAtk
+	bigdw 135 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db SOFTBOILED, TOXIC, PROTECT, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $fb, $cd ; DVs
+	db 10, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 424 ; HP
+	bigdw 424 ; Max HP
+	bigdw 66 ; Atk
+	bigdw 63 ; Def
+	bigdw 117 ; Spd
+	bigdw 143 ; SAtk
+	bigdw 215 ; SDef
+	db "HAPINASU@@@"
+
+
+	db SNORLAX
+	db PINK_BOW
+	db ROCK_SLIDE, SURF, BODY_SLAM, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fa, $fc ; DVs
+	db 10, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 307 ; HP
+	bigdw 307 ; Max HP
+	bigdw 186 ; Atk
+	bigdw 128 ; Def
+	bigdw 92 ; Spd
+	bigdw 130 ; SAtk
+	bigdw 184 ; SDef
+	db "KABIGON@@@@"
+
+
+	db HERACROSS
+	db FOCUS_BAND
+	db REVERSAL, MEGAHORN, EARTHQUAKE, COUNTER
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $df, $ed ; DVs
+	db 15, 10, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 214 ; HP
+	bigdw 214 ; Max HP
+	bigdw 200 ; Atk
+	bigdw 146 ; Def
+	bigdw 156 ; Spd
+	bigdw 101 ; SAtk
+	bigdw 167 ; SDef
+	db "HERAKUROSU@"
+
+
+	db JYNX
+	db MIRACLEBERRY
+	db BLIZZARD, PSYCHIC_M, SHADOW_BALL, ICY_WIND
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ff, $eb ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 196 ; HP
+	bigdw 196 ; Max HP
+	bigdw 116 ; Atk
+	bigdw 98 ; Def
+	bigdw 168 ; Spd
+	bigdw 189 ; SAtk
+	bigdw 165 ; SDef
+	db "RU-ZIyuRA@@"
+
+
+	db BLASTOISE
+	db GOLD_BERRY
+	db SURF, EARTHQUAKE, RAPID_SPIN, BLIZZARD
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 15, 10, 40, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 209 ; HP
+	bigdw 209 ; Max HP
+	bigdw 155 ; Atk
+	bigdw 174 ; Def
+	bigdw 149 ; Spd
+	bigdw 156 ; SAtk
+	bigdw 180 ; SDef
+	db "KAMEtuKUSU@"
+
+
+	db RHYDON
+	db QUICK_CLAW
+	db EARTHQUAKE, SURF, IRON_TAIL, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fb, $fa ; DVs
+	db 10, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 245 ; HP
+	bigdw 245 ; Max HP
+	bigdw 212 ; Atk
+	bigdw 195 ; Def
+	bigdw 104 ; Spd
+	bigdw 104 ; SAtk
+	bigdw 104 ; SDef
+	db "SAIDON@@@@@"
+
+
+	db SANDSLASH
+	db SCOPE_LENS
+	db EARTHQUAKE, SLASH, HYPER_BEAM, SNORE
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $b7, $67 ; DVs
+	db 10, 20, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 201 ; HP
+	bigdw 201 ; Max HP
+	bigdw 164 ; Atk
+	bigdw 171 ; Def
+	bigdw 116 ; Spd
+	bigdw 93 ; SAtk
+	bigdw 105 ; SDef
+	db "SANDOPAN@@@"
+
+
+	db PARASECT
+	db GOLD_BERRY
+	db SPORE, GIGA_DRAIN, HYPER_BEAM, SLUDGE_BOMB
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $66, $5f ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 171 ; HP
+	bigdw 171 ; Max HP
+	bigdw 152 ; Atk
+	bigdw 134 ; Def
+	bigdw 72 ; Spd
+	bigdw 120 ; SAtk
+	bigdw 144 ; SDef
+	db "PARASEKUTO@"
+
+
+	db GOLEM
+	db BRIGHTPOWDER
+	db EXPLOSION, EARTHQUAKE, FIRE_PUNCH, FRUSTRATION
+	dw 0 ; OT ID
+	dt 216000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $57 ; DVs
+	db 5, 10, 15, 20 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 60 ; Level
+	db 0, 0 ; Status
+	bigdw 205 ; HP
+	bigdw 205 ; Max HP
+	bigdw 171 ; Atk
+	bigdw 194 ; Def
+	bigdw 90 ; Spd
+	bigdw 105 ; SAtk
+	bigdw 117 ; SDef
+	db "GORO-NIya@@"
+
+
+
+
+BattleTowerMons7:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDERBOLT, HYPER_BEAM, SHADOW_BALL, ROAR
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 56000
+	bigdw 55000
+	bigdw 50000
+	bigdw 60000
+	db $fb, $ef ; DVs
+	db 15, 5, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 231 ; HP
+	bigdw 231 ; Max HP
+	bigdw 158 ; Atk
+	bigdw 145 ; Def
+	bigdw 245 ; Spd
+	bigdw 222 ; SAtk
+	bigdw 201 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db VAPOREON
+	db LEFTOVERS
+	db BLIZZARD, SHADOW_BALL, SURF, MUD_SLAP
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 60000
+	bigdw 60000
+	bigdw 50000
+	db $bf, $ef ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 318 ; HP
+	bigdw 318 ; Max HP
+	bigdw 149 ; Atk
+	bigdw 152 ; Def
+	bigdw 158 ; Spd
+	bigdw 218 ; SAtk
+	bigdw 197 ; SDef
+	db "SIyaWA-ZU@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db FAINT_ATTACK, MOONLIGHT, PSYCH_UP, TOXIC
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 54000
+	bigdw 60000
+	bigdw 55000
+	bigdw 50000
+	bigdw 58000
+	db $dd, $dd ; DVs
+	db 20, 5, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 274 ; HP
+	bigdw 274 ; Max HP
+	bigdw 156 ; Atk
+	bigdw 217 ; Def
+	bigdw 152 ; Spd
+	bigdw 149 ; SAtk
+	bigdw 247 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db BLISSEY
+	db GOLD_BERRY
+	db COUNTER, SOFTBOILED, SHADOW_BALL, THUNDERBOLT
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	bigdw 58000
+	bigdw 50000
+	db $df, $ed ; DVs
+	db 20, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 495 ; HP
+	bigdw 495 ; Max HP
+	bigdw 77 ; Atk
+	bigdw 80 ; Def
+	bigdw 143 ; Spd
+	bigdw 166 ; SAtk
+	bigdw 250 ; SDef
+	db "HAPINASU@@@"
+
+
+	db SNORLAX
+	db LEFTOVERS
+	db ROCK_SLIDE, EARTHQUAKE, BLIZZARD, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $dd ; DVs
+	db 10, 10, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 365 ; HP
+	bigdw 365 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 156 ; Def
+	bigdw 105 ; Spd
+	bigdw 152 ; SAtk
+	bigdw 215 ; SDef
+	db "KABIGON@@@@"
+
+
+	db HOUNDOOM
+	db KINGS_ROCK
+	db CRUNCH, FLAMETHROWER, FAINT_ATTACK, ROAR
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 58000
+	bigdw 50000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $dd, $cd ; DVs
+	db 15, 15, 20, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 245 ; HP
+	bigdw 245 ; Max HP
+	bigdw 187 ; Atk
+	bigdw 133 ; Def
+	bigdw 197 ; Spd
+	bigdw 217 ; SAtk
+	bigdw 175 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db TYRANITAR
+	db LEFTOVERS
+	db EARTHQUAKE, CRUNCH, ROCK_SLIDE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	db $db, $df ; DVs
+	db 10, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 279 ; HP
+	bigdw 279 ; Max HP
+	bigdw 247 ; Atk
+	bigdw 211 ; Def
+	bigdw 147 ; Spd
+	bigdw 196 ; SAtk
+	bigdw 203 ; SDef
+	db "BANGIRASU@@"
+
+
+	db ZAPDOS
+	db GOLD_BERRY
+	db THUNDERBOLT, DRILL_PECK, THUNDER_WAVE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $db, $df ; DVs
+	db 15, 20, 20, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 264 ; HP
+	bigdw 264 ; Max HP
+	bigdw 187 ; Atk
+	bigdw 177 ; Def
+	bigdw 200 ; Spd
+	bigdw 238 ; SAtk
+	bigdw 189 ; SDef
+	db "SANDA-@@@@@"
+
+
+	db EXEGGUTOR
+	db MIRACLEBERRY
+	db REST, EXPLOSION, PSYCHIC_M, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $ed ; DVs
+	db 10, 5, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 268 ; HP
+	bigdw 268 ; Max HP
+	bigdw 194 ; Atk
+	bigdw 177 ; Def
+	bigdw 140 ; Spd
+	bigdw 235 ; SAtk
+	bigdw 151 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db UMBREON
+	db GOLD_BERRY
+	db MOONLIGHT, FAINT_ATTACK, PSYCHIC_M, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $eb ; DVs
+	db 5, 20, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 269 ; HP
+	bigdw 269 ; Max HP
+	bigdw 155 ; Atk
+	bigdw 214 ; Def
+	bigdw 152 ; Spd
+	bigdw 142 ; SAtk
+	bigdw 240 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db GYARADOS
+	db BRIGHTPOWDER
+	db SURF, THUNDERBOLT, HYPER_BEAM, ROAR
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $db, $ef ; DVs
+	db 15, 15, 5, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 271 ; HP
+	bigdw 271 ; Max HP
+	bigdw 235 ; Atk
+	bigdw 169 ; Def
+	bigdw 178 ; Spd
+	bigdw 148 ; SAtk
+	bigdw 204 ; SDef
+	db "GIyaRADOSU@"
+
+
+	db QUAGSIRE
+	db MIRACLEBERRY
+	db EARTHQUAKE, SURF, SLUDGE_BOMB, IRON_TAIL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $de, $dd ; DVs
+	db 10, 15, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 266 ; HP
+	bigdw 266 ; Max HP
+	bigdw 180 ; Atk
+	bigdw 180 ; Def
+	bigdw 110 ; Spd
+	bigdw 152 ; SAtk
+	bigdw 152 ; SDef
+	db "NUO-@@@@@@@"
+
+
+	db URSARING
+	db SCOPE_LENS
+	db SLASH, EARTHQUAKE, HYPER_BEAM, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 20, 10, 5, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 262 ; HP
+	bigdw 262 ; Max HP
+	bigdw 245 ; Atk
+	bigdw 166 ; Def
+	bigdw 138 ; Spd
+	bigdw 166 ; SAtk
+	bigdw 166 ; SDef
+	db "RINGUMA@@@@"
+
+
+	db MR__MIME
+	db KINGS_ROCK
+	db REFLECT, FIRE_PUNCH, PSYCHIC_M, ENCORE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $bd, $fb ; DVs
+	db 20, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 195 ; HP
+	bigdw 195 ; Max HP
+	bigdw 120 ; Atk
+	bigdw 151 ; Def
+	bigdw 190 ; Spd
+	bigdw 198 ; SAtk
+	bigdw 226 ; SDef
+	db "BARIYA-DO@@"
+
+
+	db PRIMEAPE
+	db QUICK_CLAW
+	db CROSS_CHOP, ICE_PUNCH, THUNDERPUNCH, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bd, $ef ; DVs
+	db 5, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 227 ; HP
+	bigdw 227 ; Max HP
+	bigdw 202 ; Atk
+	bigdw 145 ; Def
+	bigdw 196 ; Spd
+	bigdw 148 ; SAtk
+	bigdw 162 ; SDef
+	db "OKORIZARU@@"
+
+
+	db GIRAFARIG
+	db GOLD_BERRY
+	db AGILITY, BATON_PASS, CRUNCH, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fd ; DVs
+	db 30, 40, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 231 ; HP
+	bigdw 231 ; Max HP
+	bigdw 176 ; Atk
+	bigdw 154 ; Def
+	bigdw 183 ; Spd
+	bigdw 187 ; SAtk
+	bigdw 152 ; SDef
+	db "KIRINRIKI@@"
+
+
+	db HITMONLEE
+	db FOCUS_BAND
+	db REVERSAL, ENDURE, BODY_SLAM, MEGA_KICK
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 15, 10, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 202 ; HP
+	bigdw 202 ; Max HP
+	bigdw 232 ; Atk
+	bigdw 137 ; Def
+	bigdw 186 ; Spd
+	bigdw 112 ; SAtk
+	bigdw 217 ; SDef
+	db "SAWAMURA-@@"
+
+
+	db HERACROSS
+	db BRIGHTPOWDER
+	db REVERSAL, ENDURE, MEGAHORN, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $f7 ; DVs
+	db 15, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 251 ; HP
+	bigdw 251 ; Max HP
+	bigdw 239 ; Atk
+	bigdw 158 ; Def
+	bigdw 183 ; Spd
+	bigdw 109 ; SAtk
+	bigdw 186 ; SDef
+	db "HERAKUROSU@"
+
+
+	db VENUSAUR
+	db BRIGHTPOWDER
+	db SUNNY_DAY, SOLARBEAM, SYNTHESIS, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $44 ; DVs
+	db 5, 10, 5, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 233 ; HP
+	bigdw 233 ; Max HP
+	bigdw 159 ; Atk
+	bigdw 159 ; Def
+	bigdw 152 ; Spd
+	bigdw 180 ; SAtk
+	bigdw 180 ; SDef
+	db "HUSIGIBANA@"
+
+
+	db CHARIZARD
+	db SCOPE_LENS
+	db SLASH, EARTHQUAKE, HYPER_BEAM, FLAMETHROWER
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $56, $44 ; DVs
+	db 20, 10, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 230 ; HP
+	bigdw 230 ; Max HP
+	bigdw 159 ; Atk
+	bigdw 152 ; Def
+	bigdw 180 ; Spd
+	bigdw 193 ; SAtk
+	bigdw 159 ; SDef
+	db "RIZA-DON@@@"
+
+
+	db BLASTOISE
+	db QUICK_CLAW
+	db HYDRO_PUMP, ICE_PUNCH, HYPER_BEAM, IRON_TAIL
+	dw 0 ; OT ID
+	dt 343000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $64 ; DVs
+	db 5, 15, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 70 ; Level
+	db 0, 0 ; Status
+	bigdw 231 ; HP
+	bigdw 231 ; Max HP
+	bigdw 161 ; Atk
+	bigdw 183 ; Def
+	bigdw 152 ; Spd
+	bigdw 159 ; SAtk
+	bigdw 187 ; SDef
+	db "KAMEtuKUSU@"
+
+
+
+
+BattleTowerMons8:
+
+	db JOLTEON
+	db MIRACLEBERRY
+	db THUNDER_WAVE, THUNDERBOLT, IRON_TAIL, ROAR
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	bigdw 55000
+	db $fd, $eb ; DVs
+	db 20, 15, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 263 ; HP
+	bigdw 263 ; Max HP
+	bigdw 179 ; Atk
+	bigdw 170 ; Def
+	bigdw 281 ; Spd
+	bigdw 245 ; SAtk
+	bigdw 221 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db SNORLAX
+	db LEFTOVERS
+	db REST, BELLY_DRUM, SNORE, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55500
+	bigdw 60000
+	db $db, $ed ; DVs
+	db 10, 10, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 415 ; HP
+	bigdw 415 ; Max HP
+	bigdw 248 ; Atk
+	bigdw 170 ; Def
+	bigdw 121 ; Spd
+	bigdw 178 ; SAtk
+	bigdw 250 ; SDef
+	db "KABIGON@@@@"
+
+
+	db HOUNDOOM
+	db MINT_BERRY
+	db REST, CRUNCH, FLAMETHROWER, SUNNY_DAY
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	db $fd, $db ; DVs
+	db 10, 15, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 280 ; HP
+	bigdw 280 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 152 ; Def
+	bigdw 224 ; Spd
+	bigdw 245 ; SAtk
+	bigdw 197 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db TAUROS
+	db GOLD_BERRY
+	db EARTHQUAKE, BODY_SLAM, IRON_TAIL, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $fd, $de ; DVs
+	db 10, 15, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 276 ; HP
+	bigdw 276 ; Max HP
+	bigdw 233 ; Atk
+	bigdw 221 ; Def
+	bigdw 236 ; Spd
+	bigdw 135 ; SAtk
+	bigdw 183 ; SDef
+	db "KENTAROSU@@"
+
+
+	db LAPRAS
+	db MINT_BERRY
+	db REST, SURF, CONFUSE_RAY, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $df, $db ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 366 ; HP
+	bigdw 366 ; Max HP
+	bigdw 205 ; Atk
+	bigdw 201 ; Def
+	bigdw 168 ; Spd
+	bigdw 202 ; SAtk
+	bigdw 218 ; SDef
+	db "RAPURASU@@@"
+
+
+	db TYRANITAR
+	db MIRACLEBERRY
+	db REST, CRUNCH, EARTHQUAKE, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $df, $db ; DVs
+	db 10, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 318 ; HP
+	bigdw 318 ; Max HP
+	bigdw 286 ; Atk
+	bigdw 249 ; Def
+	bigdw 169 ; Spd
+	bigdw 218 ; SAtk
+	bigdw 226 ; SDef
+	db "BANGIRASU@@"
+
+
+	db GENGAR
+	db NO_ITEM
+	db THUNDERBOLT, SHADOW_BALL, CONFUSE_RAY, THIEF
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 55000
+	bigdw 50000
+	db $de, $dd ; DVs
+	db 15, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 247 ; HP
+	bigdw 247 ; Max HP
+	bigdw 173 ; Atk
+	bigdw 165 ; Def
+	bigdw 248 ; Spd
+	bigdw 277 ; SAtk
+	bigdw 189 ; SDef
+	db "GENGA-@@@@@"
+
+
+	db FORRETRESS
+	db LEFTOVERS
+	db EXPLOSION, TOXIC, SOLARBEAM, SWAGGER
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 5, 10, 10, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 273 ; HP
+	bigdw 273 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 293 ; Def
+	bigdw 133 ; Spd
+	bigdw 165 ; SAtk
+	bigdw 165 ; SDef
+	db "HUoRETOSU@@"
+
+
+	db KINGDRA
+	db MINT_BERRY
+	db REST, SURF, BLIZZARD, DRAGONBREATH
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 40000
+	bigdw 55000
+	bigdw 50000
+	db $fb, $ed ; DVs
+	db 10, 15, 5, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 273 ; HP
+	bigdw 273 ; Max HP
+	bigdw 225 ; Atk
+	bigdw 214 ; Def
+	bigdw 209 ; Spd
+	bigdw 221 ; SAtk
+	bigdw 221 ; SDef
+	db "KINGUDORA@@"
+
+
+	db DRAGONITE
+	db GOLD_BERRY
+	db THUNDER_WAVE, SURF, THUNDERBOLT, OUTRAGE
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	db $dd, $dd ; DVs
+	db 20, 15, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 303 ; HP
+	bigdw 303 ; Max HP
+	bigdw 284 ; Atk
+	bigdw 221 ; Def
+	bigdw 197 ; Spd
+	bigdw 228 ; SAtk
+	bigdw 228 ; SDef
+	db "KAIRIyu-@@@"
+
+
+	db PORYGON2
+	db LEFTOVERS
+	db PSYCHIC_M, RECOVER, HYPER_BEAM, TRI_ATTACK
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 40000
+	bigdw 55000
+	bigdw 50000
+	db $df, $ed ; DVs
+	db 10, 20, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 293 ; HP
+	bigdw 293 ; Max HP
+	bigdw 197 ; Atk
+	bigdw 213 ; Def
+	bigdw 169 ; Spd
+	bigdw 237 ; SAtk
+	bigdw 221 ; SDef
+	db "PORIGON2@@@"
+
+
+	db JYNX
+	db QUICK_CLAW
+	db LOVELY_KISS, BLIZZARD, DREAM_EATER, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	db $df, $df ; DVs
+	db 10, 5, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 264 ; HP
+	bigdw 264 ; Max HP
+	bigdw 149 ; Atk
+	bigdw 127 ; Def
+	bigdw 221 ; Spd
+	bigdw 257 ; SAtk
+	bigdw 225 ; SDef
+	db "RU-ZIyuRA@@"
+
+
+	db MANTINE
+	db GOLD_BERRY
+	db SURF, CONFUSE_RAY, BLIZZARD, WING_ATTACK
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 40000
+	bigdw 45000
+	bigdw 40000
+	bigdw 45000
+	bigdw 50000
+	db $df, $dc ; DVs
+	db 15, 10, 5, 35 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 256 ; HP
+	bigdw 256 ; Max HP
+	bigdw 132 ; Atk
+	bigdw 181 ; Def
+	bigdw 180 ; Spd
+	bigdw 196 ; SAtk
+	bigdw 292 ; SDef
+	db "MANTAIN@@@@"
+
+
+	db SKARMORY
+	db QUICK_CLAW
+	db STEEL_WING, FLY, MUD_SLAP, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 35000
+	bigdw 50000
+	bigdw 50000
+	db $dd, $ef ; DVs
+	db 25, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 258 ; HP
+	bigdw 258 ; Max HP
+	bigdw 196 ; Atk
+	bigdw 286 ; Def
+	bigdw 183 ; Spd
+	bigdw 137 ; SAtk
+	bigdw 185 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db MOLTRES
+	db CHARCOAL
+	db FLAMETHROWER, SKY_ATTACK, STEEL_WING, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $dd, $fe ; DVs
+	db 15, 5, 25, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 300 ; HP
+	bigdw 300 ; Max HP
+	bigdw 225 ; Atk
+	bigdw 213 ; Def
+	bigdw 213 ; Spd
+	bigdw 271 ; SAtk
+	bigdw 207 ; SDef
+	db "HUaIYA-@@@@"
+
+
+	db AERODACTYL
+	db MIRACLEBERRY
+	db HYPER_BEAM, REST, EARTHQUAKE, ROAR
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	db $ff, $ed ; DVs
+	db 5, 10, 10, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 282 ; HP
+	bigdw 282 ; Max HP
+	bigdw 237 ; Atk
+	bigdw 177 ; Def
+	bigdw 275 ; Spd
+	bigdw 165 ; SAtk
+	bigdw 189 ; SDef
+	db "PUTERA@@@@@"
+
+
+	db ELECTRODE
+	db KINGS_ROCK
+	db THUNDERBOLT, EXPLOSION, MIRROR_COAT, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 40000
+	bigdw 50000
+	db $ff, $ef ; DVs
+	db 15, 5, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 250 ; HP
+	bigdw 250 ; Max HP
+	bigdw 153 ; Atk
+	bigdw 181 ; Def
+	bigdw 291 ; Spd
+	bigdw 201 ; SAtk
+	bigdw 201 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db DUGTRIO
+	db SCOPE_LENS
+	db SLASH, EARTHQUAKE, THIEF, MUD_SLAP
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 40000
+	db $fd, $dd ; DVs
+	db 20, 10, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 214 ; HP
+	bigdw 214 ; Max HP
+	bigdw 201 ; Atk
+	bigdw 145 ; Def
+	bigdw 261 ; Spd
+	bigdw 145 ; SAtk
+	bigdw 177 ; SDef
+	db "DAGUTORIO@@"
+
+
+	db VICTREEBEL
+	db QUICK_CLAW
+	db GIGA_DRAIN, SLUDGE_BOMB, HYPER_BEAM, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $65 ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 260 ; HP
+	bigdw 260 ; Max HP
+	bigdw 217 ; Atk
+	bigdw 151 ; Def
+	bigdw 161 ; Spd
+	bigdw 207 ; SAtk
+	bigdw 143 ; SDef
+	db "UTUBOtuTO@@"
+
+
+	db PINSIR
+	db GOLD_BERRY
+	db HYPER_BEAM, SUBMISSION, STRENGTH, TOXIC
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $74, $64 ; DVs
+	db 5, 25, 15, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 241 ; HP
+	bigdw 241 ; Max HP
+	bigdw 250 ; Atk
+	bigdw 205 ; Def
+	bigdw 185 ; Spd
+	bigdw 133 ; SAtk
+	bigdw 157 ; SDef
+	db "KAIROSU@@@@"
+
+
+	db GRANBULL
+	db BRIGHTPOWDER
+	db ROAR, SHADOW_BALL, HYPER_BEAM, THUNDERPUNCH
+	dw 0 ; OT ID
+	dt 512000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $57 ; DVs
+	db 20, 15, 5, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 80 ; Level
+	db 0, 0 ; Status
+	bigdw 286 ; HP
+	bigdw 286 ; Max HP
+	bigdw 242 ; Atk
+	bigdw 169 ; Def
+	bigdw 119 ; Spd
+	bigdw 146 ; SAtk
+	bigdw 146 ; SDef
+	db "GURANBURU@@"
+
+
+
+
+BattleTowerMons9:
+
+	db UMBREON
+	db KINGS_ROCK
+	db FAINT_ATTACK, MUD_SLAP, MOONLIGHT, CONFUSE_RAY
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	bigdw 55000
+	db $fd, $ed ; DVs
+	db 20, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 349 ; HP
+	bigdw 349 ; Max HP
+	bigdw 203 ; Atk
+	bigdw 278 ; Def
+	bigdw 202 ; Spd
+	bigdw 188 ; SAtk
+	bigdw 314 ; SDef
+	db "BURAtuKI-@@"
+
+
+	db DRAGONITE
+	db QUICK_CLAW
+	db FIRE_BLAST, HYPER_BEAM, OUTRAGE, BLIZZARD
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 65000
+	bigdw 50000
+	bigdw 56000
+	bigdw 60000
+	bigdw 60000
+	db $fd, $ed ; DVs
+	db 5, 5, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 343 ; HP
+	bigdw 343 ; Max HP
+	bigdw 322 ; Atk
+	bigdw 252 ; Def
+	bigdw 229 ; Spd
+	bigdw 263 ; SAtk
+	bigdw 263 ; SDef
+	db "KAIRIyu-@@@"
+
+
+	db STARMIE
+	db LEFTOVERS
+	db RECOVER, THUNDERBOLT, SURF, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 55000
+	bigdw 60000
+	db $df, $dd ; DVs
+	db 20, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 289 ; HP
+	bigdw 289 ; Max HP
+	bigdw 218 ; Atk
+	bigdw 239 ; Def
+	bigdw 287 ; Spd
+	bigdw 263 ; SAtk
+	bigdw 236 ; SDef
+	db "SUTA-MI-@@@"
+
+
+	db CLOYSTER
+	db LEFTOVERS
+	db EXPLOSION, BLIZZARD, SURF, ICY_WIND
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $db, $df ; DVs
+	db 5, 5, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 266 ; HP
+	bigdw 266 ; Max HP
+	bigdw 248 ; Atk
+	bigdw 398 ; Def
+	bigdw 203 ; Spd
+	bigdw 234 ; SAtk
+	bigdw 162 ; SDef
+	db "PARUSIeN@@@"
+
+
+	db CROBAT
+	db GOLD_BERRY
+	db WING_ATTACK, HAZE, HYPER_BEAM, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $cf ; DVs
+	db 35, 30, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 325 ; HP
+	bigdw 325 ; Max HP
+	bigdw 243 ; Atk
+	bigdw 221 ; Def
+	bigdw 310 ; Spd
+	bigdw 207 ; SAtk
+	bigdw 225 ; SDef
+	db "KUROBAtuTO@"
+
+
+	db PORYGON2
+	db QUICK_CLAW
+	db TOXIC, PSYCHIC_M, RECOVER, PROTECT
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $fd, $ed ; DVs
+	db 10, 10, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 325 ; HP
+	bigdw 325 ; Max HP
+	bigdw 223 ; Atk
+	bigdw 239 ; Def
+	bigdw 190 ; Spd
+	bigdw 266 ; SAtk
+	bigdw 248 ; SDef
+	db "PORIGON2@@@"
+
+
+	db KINGDRA
+	db LEFTOVERS
+	db DRAGONBREATH, SURF, HYPER_BEAM, BLIZZARD
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	db $df, $de ; DVs
+	db 20, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 248 ; Atk
+	bigdw 255 ; Def
+	bigdw 230 ; Spd
+	bigdw 248 ; SAtk
+	bigdw 248 ; SDef
+	db "KINGUDORA@@"
+
+
+	db TYRANITAR
+	db QUICK_CLAW
+	db HYPER_BEAM, CRUNCH, EARTHQUAKE, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	db $df, $de ; DVs
+	db 5, 15, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 354 ; HP
+	bigdw 354 ; Max HP
+	bigdw 321 ; Atk
+	bigdw 279 ; Def
+	bigdw 185 ; Spd
+	bigdw 250 ; SAtk
+	bigdw 259 ; SDef
+	db "BANGIRASU@@"
+
+
+	db LAPRAS
+	db MINT_BERRY
+	db REST, SURF, THUNDERBOLT, PSYCHIC_M
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	db $bd, $ef ; DVs
+	db 10, 15, 15, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 405 ; HP
+	bigdw 405 ; Max HP
+	bigdw 227 ; Atk
+	bigdw 221 ; Def
+	bigdw 187 ; Spd
+	bigdw 237 ; SAtk
+	bigdw 255 ; SDef
+	db "RAPURASU@@@"
+
+
+	db ESPEON
+	db GOLD_BERRY
+	db PSYCHIC_M, SHADOW_BALL, SUNNY_DAY, MORNING_SUN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $fe ; DVs
+	db 10, 15, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 294 ; HP
+	bigdw 294 ; Max HP
+	bigdw 194 ; Atk
+	bigdw 185 ; Def
+	bigdw 282 ; Spd
+	bigdw 313 ; SAtk
+	bigdw 250 ; SDef
+	db "E-HUi@@@@@@"
+
+
+	db MACHAMP
+	db QUICK_CLAW
+	db CROSS_CHOP, VITAL_THROW, FIRE_BLAST, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $ed ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 337 ; HP
+	bigdw 337 ; Max HP
+	bigdw 314 ; Atk
+	bigdw 221 ; Def
+	bigdw 181 ; Spd
+	bigdw 194 ; SAtk
+	bigdw 230 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db SNORLAX
+	db MIRACLEBERRY
+	db FIRE_BLAST, SURF, EARTHQUAKE, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fd ; DVs
+	db 5, 15, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 455 ; HP
+	bigdw 455 ; Max HP
+	bigdw 279 ; Atk
+	bigdw 199 ; Def
+	bigdw 135 ; Spd
+	bigdw 194 ; SAtk
+	bigdw 275 ; SDef
+	db "KABIGON@@@@"
+
+
+	db ARCANINE
+	db MINT_BERRY
+	db SUNNY_DAY, FLAMETHROWER, EXTREMESPEED, REST
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 45000
+	bigdw 55000
+	db $df, $de ; DVs
+	db 5, 15, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 336 ; HP
+	bigdw 336 ; Max HP
+	bigdw 274 ; Atk
+	bigdw 225 ; Def
+	bigdw 247 ; Spd
+	bigdw 262 ; SAtk
+	bigdw 226 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db SOLARBEAM, SUNNY_DAY, SOFTBOILED, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $bd, $fe ; DVs
+	db 10, 5, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 633 ; HP
+	bigdw 633 ; Max HP
+	bigdw 90 ; Atk
+	bigdw 95 ; Def
+	bigdw 180 ; Spd
+	bigdw 214 ; SAtk
+	bigdw 322 ; SDef
+	db "HAPINASU@@@"
+
+
+	db HOUNDOOM
+	db BRIGHTPOWDER
+	db FLAMETHROWER, CRUNCH, SUNNY_DAY, SOLARBEAM
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $db, $fe ; DVs
+	db 15, 15, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 235 ; Atk
+	bigdw 164 ; Def
+	bigdw 252 ; Spd
+	bigdw 277 ; SAtk
+	bigdw 223 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db SKARMORY
+	db QUICK_CLAW
+	db SANDSTORM, STEEL_WING, TOXIC, RETURN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $ef, $f7 ; DVs
+	db 10, 25, 10, 20 ; PP
+	db 255 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 279 ; HP
+	bigdw 279 ; Max HP
+	bigdw 223 ; Atk
+	bigdw 333 ; Def
+	bigdw 207 ; Spd
+	bigdw 139 ; SAtk
+	bigdw 193 ; SDef
+	db "EA-MUDO@@@@"
+
+
+	db SHUCKLE
+	db LEFTOVERS
+	db TOXIC, WRAP, PROTECT, ENCORE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 10, 20, 10, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 203 ; HP
+	bigdw 203 ; Max HP
+	bigdw 99 ; Atk
+	bigdw 493 ; Def
+	bigdw 90 ; Spd
+	bigdw 97 ; SAtk
+	bigdw 493 ; SDef
+	db "TUBOTUBO@@@"
+
+
+	db FLAREON
+	db MINT_BERRY
+	db HYPER_BEAM, FLAMETHROWER, SHADOW_BALL, ROAR
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $f7, $f7 ; DVs
+	db 5, 15, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 293 ; HP
+	bigdw 293 ; Max HP
+	bigdw 315 ; Atk
+	bigdw 175 ; Def
+	bigdw 198 ; Spd
+	bigdw 238 ; SAtk
+	bigdw 265 ; SDef
+	db "BU-SUTA-@@@"
+
+
+	db MILTANK
+	db LEFTOVERS
+	db MILK_DRINK, EARTHQUAKE, ATTRACT, BODY_SLAM
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $47, $57 ; DVs
+	db 10, 10, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 322 ; HP
+	bigdw 322 ; Max HP
+	bigdw 194 ; Atk
+	bigdw 245 ; Def
+	bigdw 232 ; Spd
+	bigdw 128 ; SAtk
+	bigdw 182 ; SDef
+	db "MIRUTANKU@@"
+
+
+	db TAUROS
+	db PINK_BOW
+	db THUNDERBOLT, HYPER_BEAM, ATTRACT, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $65, $76 ; DVs
+	db 15, 5, 15, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 284 ; HP
+	bigdw 284 ; Max HP
+	bigdw 234 ; Atk
+	bigdw 223 ; Def
+	bigdw 254 ; Spd
+	bigdw 126 ; SAtk
+	bigdw 180 ; SDef
+	db "KENTAROSU@@"
+
+
+	db MUK
+	db QUICK_CLAW
+	db TOXIC, SLUDGE_BOMB, ATTRACT, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 729000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $54, $44 ; DVs
+	db 10, 10, 15, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 90 ; Level
+	db 0, 0 ; Status
+	bigdw 342 ; HP
+	bigdw 342 ; Max HP
+	bigdw 241 ; Atk
+	bigdw 185 ; Def
+	bigdw 140 ; Spd
+	bigdw 167 ; SAtk
+	bigdw 230 ; SDef
+	db "BETOBETON@@"
+
+
+
+
+BattleTowerMons10:
+
+	db HOUNDOOM
+	db MINT_BERRY
+	db CRUNCH, FLAMETHROWER, ROAR, REST
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $fd, $ed ; DVs
+	db 15, 15, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 347 ; HP
+	bigdw 347 ; Max HP
+	bigdw 276 ; Atk
+	bigdw 192 ; Def
+	bigdw 284 ; Spd
+	bigdw 312 ; SAtk
+	bigdw 252 ; SDef
+	db "HERUGA-@@@@"
+
+
+	db MACHAMP
+	db QUICK_CLAW
+	db CROSS_CHOP, EARTHQUAKE, HYPER_BEAM, VITAL_THROW
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $fd, $ef ; DVs
+	db 5, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 377 ; HP
+	bigdw 377 ; Max HP
+	bigdw 356 ; Atk
+	bigdw 252 ; Def
+	bigdw 204 ; Spd
+	bigdw 226 ; SAtk
+	bigdw 266 ; SDef
+	db "KAIRIKI-@@@"
+
+
+	db KINGDRA
+	db LEFTOVERS
+	db SURF, DRAGONBREATH, REST, TOXIC
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	bigdw 60000
+	db $df, $fe ; DVs
+	db 15, 20, 10, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 349 ; HP
+	bigdw 349 ; Max HP
+	bigdw 282 ; Atk
+	bigdw 286 ; Def
+	bigdw 266 ; Spd
+	bigdw 284 ; SAtk
+	bigdw 284 ; SDef
+	db "KINGUDORA@@"
+
+
+	db JOLTEON
+	db BRIGHTPOWDER
+	db THUNDERBOLT, ROAR, THUNDER_WAVE, IRON_TAIL
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 30000
+	bigdw 50000
+	db $fd, $fe ; DVs
+	db 15, 20, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 323 ; HP
+	bigdw 323 ; Max HP
+	bigdw 220 ; Atk
+	bigdw 206 ; Def
+	bigdw 338 ; Spd
+	bigdw 308 ; SAtk
+	bigdw 278 ; SDef
+	db "SANDA-SU@@@"
+
+
+	db TAUROS
+	db KINGS_ROCK
+	db HYPER_BEAM, EARTHQUAKE, IRON_TAIL, THUNDERBOLT
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 5, 10, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 341 ; HP
+	bigdw 341 ; Max HP
+	bigdw 290 ; Atk
+	bigdw 276 ; Def
+	bigdw 308 ; Spd
+	bigdw 170 ; SAtk
+	bigdw 230 ; SDef
+	db "KENTAROSU@@"
+
+
+	db ARCANINE
+	db LEFTOVERS
+	db FLAMETHROWER, EXTREMESPEED, IRON_TAIL, HYPER_BEAM
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $dd, $ef ; DVs
+	db 15, 5, 15, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 374 ; HP
+	bigdw 374 ; Max HP
+	bigdw 306 ; Atk
+	bigdw 246 ; Def
+	bigdw 281 ; Spd
+	bigdw 290 ; SAtk
+	bigdw 250 ; SDef
+	db "UINDEi@@@@@"
+
+
+	db CHARIZARD
+	db SCOPE_LENS
+	db FLAMETHROWER, EARTHQUAKE, SLASH, FLY
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 55000
+	bigdw 55000
+	db $fe, $df ; DVs
+	db 15, 10, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 343 ; HP
+	bigdw 343 ; Max HP
+	bigdw 258 ; Atk
+	bigdw 247 ; Def
+	bigdw 289 ; Spd
+	bigdw 311 ; SAtk
+	bigdw 263 ; SDef
+	db "RIZA-DON@@@"
+
+
+	db ELECTRODE
+	db BRIGHTPOWDER
+	db THUNDER_WAVE, THUNDERBOLT, EXPLOSION, MIRROR_COAT
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	bigdw 45000
+	db $fb, $ef ; DVs
+	db 20, 15, 5, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 190 ; Atk
+	bigdw 222 ; Def
+	bigdw 366 ; Spd
+	bigdw 248 ; SAtk
+	bigdw 248 ; SDef
+	db "MARUMAIN@@@"
+
+
+	db RHYDON
+	db MIRACLEBERRY
+	db SURF, EARTHQUAKE, HYPER_BEAM, ROCK_SLIDE
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 45000
+	db $fd, $ef ; DVs
+	db 15, 10, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 404 ; HP
+	bigdw 404 ; Max HP
+	bigdw 350 ; Atk
+	bigdw 329 ; Def
+	bigdw 168 ; Spd
+	bigdw 178 ; SAtk
+	bigdw 178 ; SDef
+	db "SAIDON@@@@@"
+
+
+	db STEELIX
+	db LEFTOVERS
+	db EARTHQUAKE, HYPER_BEAM, SWAGGER, CRUNCH
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 60000
+	bigdw 50000
+	db $fd, $de ; DVs
+	db 10, 5, 15, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 343 ; HP
+	bigdw 343 ; Max HP
+	bigdw 260 ; Atk
+	bigdw 489 ; Def
+	bigdw 152 ; Spd
+	bigdw 198 ; SAtk
+	bigdw 218 ; SDef
+	db "HAGANE-RU@@"
+
+
+	db FEAROW
+	db KINGS_ROCK
+	db DRILL_PECK, STEEL_WING, HYPER_BEAM, MUD_SLAP
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 55000
+	bigdw 50000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	db $fd, $cf ; DVs
+	db 20, 25, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 324 ; HP
+	bigdw 324 ; Max HP
+	bigdw 270 ; Atk
+	bigdw 216 ; Def
+	bigdw 287 ; Spd
+	bigdw 212 ; SAtk
+	bigdw 212 ; SDef
+	db "ONIDORIRU@@"
+
+
+	db MISDREAVUS
+	db FOCUS_BAND
+	db PERISH_SONG, MEAN_LOOK, PAIN_SPLIT, SHADOW_BALL
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 45000
+	bigdw 50000
+	bigdw 55000
+	bigdw 50000
+	bigdw 55000
+	db $bd, $ef ; DVs
+	db 5, 5, 20, 15 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 309 ; HP
+	bigdw 309 ; Max HP
+	bigdw 202 ; Atk
+	bigdw 209 ; Def
+	bigdw 258 ; Spd
+	bigdw 263 ; SAtk
+	bigdw 263 ; SDef
+	db "MUUMA@@@@@@"
+
+
+	db SNEASEL
+	db SCOPE_LENS
+	db SLASH, BLIZZARD, DREAM_EATER, FAINT_ATTACK
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 48000
+	bigdw 45000
+	bigdw 50000
+	db $fd, $ef ; DVs
+	db 20, 5, 15, 20 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 301 ; HP
+	bigdw 301 ; Max HP
+	bigdw 280 ; Atk
+	bigdw 195 ; Def
+	bigdw 316 ; Spd
+	bigdw 160 ; SAtk
+	bigdw 240 ; SDef
+	db "NIyu-RA@@@@"
+
+
+	db SCIZOR
+	db QUICK_CLAW
+	db STEEL_WING, HYPER_BEAM, SLASH, TOXIC
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 45000
+	db $fb, $fe ; DVs
+	db 25, 5, 20, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 333 ; HP
+	bigdw 333 ; Max HP
+	bigdw 350 ; Atk
+	bigdw 282 ; Def
+	bigdw 220 ; Spd
+	bigdw 196 ; SAtk
+	bigdw 246 ; SDef
+	db "HAtuSAMU@@@"
+
+
+	db BLISSEY
+	db LEFTOVERS
+	db THUNDERBOLT, BLIZZARD, FIRE_BLAST, SOFTBOILED
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 40000
+	bigdw 50000
+	bigdw 30000
+	bigdw 30000
+	db $dd, $fe ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 703 ; HP
+	bigdw 703 ; Max HP
+	bigdw 101 ; Atk
+	bigdw 106 ; Def
+	bigdw 188 ; Spd
+	bigdw 226 ; SAtk
+	bigdw 346 ; SDef
+	db "HAPINASU@@@"
+
+
+	db PILOSWINE
+	db MINT_BERRY
+	db REST, BLIZZARD, HYPER_BEAM, EARTHQUAKE
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $f7 ; DVs
+	db 10, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 387 ; HP
+	bigdw 387 ; Max HP
+	bigdw 290 ; Atk
+	bigdw 248 ; Def
+	bigdw 190 ; Spd
+	bigdw 194 ; SAtk
+	bigdw 194 ; SDef
+	db "INOMU-@@@@@"
+
+
+	db EXEGGUTOR
+	db QUICK_CLAW
+	db PSYCHIC_M, TOXIC, EXPLOSION, GIGA_DRAIN
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fe, $fe ; DVs
+	db 10, 10, 5, 5 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 375 ; HP
+	bigdw 375 ; Max HP
+	bigdw 280 ; Atk
+	bigdw 258 ; Def
+	bigdw 200 ; Spd
+	bigdw 338 ; SAtk
+	bigdw 218 ; SDef
+	db "NAtuSI-@@@@"
+
+
+	db OMASTAR
+	db LEFTOVERS
+	db SURF, ANCIENTPOWER, BLIZZARD, TOXIC
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	bigdw 50000
+	db $fb, $e7 ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 100 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 331 ; HP
+	bigdw 331 ; Max HP
+	bigdw 210 ; Atk
+	bigdw 332 ; Def
+	bigdw 198 ; Spd
+	bigdw 304 ; SAtk
+	bigdw 214 ; SDef
+	db "OMUSUTA-@@@"
+
+
+	db GOLEM
+	db BRIGHTPOWDER
+	db EXPLOSION, EARTHQUAKE, ROCK_SLIDE, FIRE_BLAST
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $74, $46 ; DVs
+	db 5, 10, 10, 5 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 329 ; HP
+	bigdw 329 ; Max HP
+	bigdw 282 ; Atk
+	bigdw 316 ; Def
+	bigdw 146 ; Spd
+	bigdw 170 ; SAtk
+	bigdw 190 ; SDef
+	db "GORO-NIya@@"
+
+
+	db HITMONCHAN
+	db FOCUS_BAND
+	db COUNTER, FIRE_PUNCH, THUNDERPUNCH, ICE_PUNCH
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $67, $76 ; DVs
+	db 20, 15, 15, 15 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 265 ; HP
+	bigdw 265 ; Max HP
+	bigdw 270 ; Atk
+	bigdw 220 ; Def
+	bigdw 214 ; Spd
+	bigdw 130 ; SAtk
+	bigdw 280 ; SDef
+	db "EBIWARA-@@@"
+
+
+	db LANTURN
+	db QUICK_CLAW
+	db SURF, RAIN_DANCE, ZAP_CANNON, CONFUSE_RAY
+	dw 0 ; OT ID
+	dt 1000000 ; Exp
+	; Stat exp
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	bigdw 30000
+	db $76, $57 ; DVs
+	db 15, 5, 5, 10 ; PP
+	db 0 ; Happiness
+	db 0, 0, 0 ; Pokerus, Caught data
+	db 100 ; Level
+	db 0, 0 ; Status
+	bigdw 425 ; HP
+	bigdw 425 ; Max HP
+	bigdw 178 ; Atk
+	bigdw 176 ; Def
+	bigdw 192 ; Spd
+	bigdw 214 ; SAtk
+	bigdw 214 ; SDef
+	db "RANTA-N@@@@"
--- /dev/null
+++ b/data/battle_tower/trainer_text.asm
@@ -1,0 +1,743 @@
+BattleTowerText_0x1ec000: ; 0x1ec000
+	text "Hello, glad to"
+	line "meet you!"
+
+	para "I do hope we have"
+	line "a good battle."
+	done
+; 0x1ec03b
+
+BattleTowerText_0x1ec03b: ; 0x1ec03b
+	text "Thank you! A most"
+	line "enjoyable battle!"
+	done
+; 0x1ec060
+
+UnknownText_0x1ec060: ; 0x1ec060
+	text "Thank you. You are"
+	line "formidable."
+	done
+; 0x1ec080
+
+BattleTowerText_0x1ec080: ; 0x1ec080
+	text "Work, work, work…"
+	line "I'm always busy!"
+	done
+; 0x1ec0a3
+
+UnknownText_0x1ec0a3: ; 0x1ec0a3
+	text "But, I work hard"
+	line "in battle too!"
+	done
+; 0x1ec0c4
+
+UnknownText_0x1ec0c4: ; 0x1ec0c4
+	text "I'm too busy to be"
+	line "battling!"
+	done
+; 0x1ec0e1
+
+UnknownText_0x1ec0e1: ; 0x1ec0e1
+	text "Brace yourself for"
+	line "my all-out attack!"
+	done
+; 0x1ec108
+
+UnknownText_0x1ec108: ; 0x1ec108
+	text "What a cakewalk!"
+	line "You're too easy!"
+	done
+; 0x1ec12a
+
+UnknownText_0x1ec12a: ; 0x1ec12a
+	text "I won't lose next"
+	line "time, all right?"
+	done
+; 0x1ec14d
+
+UnknownText_0x1ec14d: ; 0x1ec14d
+	text "Heh, your #MON"
+	line "look pretty cool."
+	done
+; 0x1ec16f
+
+UnknownText_0x1ec16f: ; 0x1ec16f
+	text "Hey, hey, no way!"
+	line "You won't win!"
+	done
+; 0x1ec190
+
+UnknownText_0x1ec190: ; 0x1ec190
+	text "You serious?"
+	line "This is brutal!"
+	done
+; 0x1ec1ae
+
+UnknownText_0x1ec1ae: ; 0x1ec1ae
+	text "#MON every day!"
+	line "I love battling!"
+	done
+; 0x1ec1d0
+
+UnknownText_0x1ec1d0: ; 0x1ec1d0
+	text "I'm on top of my"
+	line "game, but not you!"
+	done
+; 0x1ec1f4
+
+UnknownText_0x1ec1f4: ; 0x1ec1f4
+	text "I don't care that"
+	line "I lost, really!"
+	done
+; 0x1ec216
+
+UnknownText_0x1ec216: ; 0x1ec216
+	text "Hi, there! Let's"
+	line "keep this clean!"
+	done
+; 0x1ec238
+
+UnknownText_0x1ec238: ; 0x1ec238
+	text "Whoops, sorry for"
+	line "that wipeout!"
+	done
+; 0x1ec259
+
+UnknownText_0x1ec259: ; 0x1ec259
+	text "Whoops! Come on,"
+	line "let me win one!"
+	done
+; 0x1ec27b
+
+UnknownText_0x1ec27b: ; 0x1ec27b
+	text "Do you want to see"
+	line "my battle level?"
+	done
+; 0x1ec2a0
+
+UnknownText_0x1ec2a0: ; 0x1ec2a0
+	text "Hehehe, I know"
+	line "your level now!"
+	done
+; 0x1ec2c0
+
+UnknownText_0x1ec2c0: ; 0x1ec2c0
+	text "Ouch… I'm just too"
+	line "weak…"
+	done
+; 0x1ec2d9
+
+UnknownText_0x1ec2d9: ; 0x1ec2d9
+	text "Hey, let's battle."
+	line "I'm your opponent."
+	done
+; 0x1ec2fe
+
+UnknownText_0x1ec2fe: ; 0x1ec2fe
+	text "Wow, you're not"
+	line "serious about it!"
+	done
+; 0x1ec320
+
+UnknownText_0x1ec320: ; 0x1ec320
+	text "…Urgh… Nothing"
+	line "positive here…"
+	done
+; 0x1ec33f
+
+UnknownText_0x1ec33f: ; 0x1ec33f
+	text "I'm your"
+	line "opponent."
+
+	para "Get ready to be"
+	line "hammered."
+	done
+; 0x1ec36c
+
+UnknownText_0x1ec36c: ; 0x1ec36c
+	text "Hahah! That was a"
+	line "pushover!"
+	done
+; 0x1ec389
+
+UnknownText_0x1ec389: ; 0x1ec389
+	text "No way! There has"
+	line "to be a mistake!"
+	done
+; 0x1ec3ad
+
+UnknownText_0x1ec3ad: ; 0x1ec3ad
+	text "Hah!"
+	line "Let's get rolling!"
+	done
+; 0x1ec3c5
+
+UnknownText_0x1ec3c5: ; 0x1ec3c5
+	text "Wahahaha! Didn't"
+	line "break a sweat!"
+	done
+; 0x1ec3e5
+
+UnknownText_0x1ec3e5: ; 0x1ec3e5
+	text "Tough! I'm no"
+	line "match for you!"
+	done
+; 0x1ec402
+
+UnknownText_0x1ec402: ; 0x1ec402
+	text "<……><……><……>"
+	line "<……><……>Battle?"
+	done
+; 0x1ec411
+
+UnknownText_0x1ec411: ; 0x1ec411
+	text "<……><……><……>"
+	line "<……><……>I won?"
+	done
+; 0x1ec41f
+
+UnknownText_0x1ec41f: ; 0x1ec41f
+	text "<……><……><……>"
+	line "<……><……>I lost?"
+	done
+; 0x1ec42e
+
+UnknownText_0x1ec42e: ; 0x1ec42e
+	text "You want to be a"
+	line "leader?"
+
+	para "Let me battle you,"
+	line "then!"
+	done
+; 0x1ec461
+
+UnknownText_0x1ec461: ; 0x1ec461
+	text "You need another"
+	line "ten years of"
+
+	para "training to get"
+	line "better, I'd say."
+	done
+; 0x1ec4a0
+
+UnknownText_0x1ec4a0: ; 0x1ec4a0
+	text "You're incredibly"
+	line "talented."
+
+	para "No one can touch"
+	line "you now!"
+	done
+; 0x1ec4d6
+
+UnknownText_0x1ec4d6: ; 0x1ec4d6
+	text "Today, I'm going"
+	line "to whomp you."
+	done
+; 0x1ec4f5
+
+UnknownText_0x1ec4f5: ; 0x1ec4f5
+	text "I knew I'd win."
+	line "I'm so great!"
+	done
+; 0x1ec512
+
+UnknownText_0x1ec512: ; 0x1ec512
+	text "Uh? My plans are"
+	line "out of whack…"
+	done
+; 0x1ec532
+
+UnknownText_0x1ec532: ; 0x1ec532
+	text "I bet you can't"
+	line "beat me!"
+	done
+; 0x1ec54b
+
+UnknownText_0x1ec54b: ; 0x1ec54b
+	text "Those #MON"
+	line "aren't enough!"
+	done
+; 0x1ec565
+
+UnknownText_0x1ec565: ; 0x1ec565
+	text "I want your"
+	line "#MON. Please?"
+	done
+; 0x1ec580
+
+UnknownText_0x1ec580: ; 0x1ec580
+	text "I'll show you a"
+	line "real battle!"
+	done
+; 0x1ec59d
+
+UnknownText_0x1ec59d: ; 0x1ec59d
+	text "This battle…"
+	line "I'm bored!"
+	done
+; 0x1ec5b5
+
+UnknownText_0x1ec5b5: ; 0x1ec5b5
+	text "…I won't turn tail"
+	line "in battle!"
+	done
+; 0x1ec5d3
+
+UnknownText_0x1ec5d3: ; 0x1ec5d3
+	text "Let's go!"
+	line "No holds barred!"
+	done
+; 0x1ec5ee
+
+UnknownText_0x1ec5ee: ; 0x1ec5ee
+	text "Sorry! I wanted"
+	line "the win more!"
+	done
+; 0x1ec60d
+
+UnknownText_0x1ec60d: ; 0x1ec60d
+	text "Wahah! Congrats!"
+	line "I can't do better!"
+	done
+; 0x1ec631
+
+UnknownText_0x1ec631: ; 0x1ec631
+	text "My #MON skills"
+	line "are phenomenal!"
+	done
+; 0x1ec651
+
+UnknownText_0x1ec651: ; 0x1ec651
+	text "You've got a long"
+	line "way to go."
+
+	para "Well, keep trying!"
+	line "Best of luck!"
+	done
+; 0x1ec68f
+
+UnknownText_0x1ec68f: ; 0x1ec68f
+	text "Aww… Don't lose"
+	line "after beating me."
+	done
+; 0x1ec6b1
+
+UnknownText_0x1ec6b1: ; 0x1ec6b1
+	text "Who are you?"
+	line "I don't know you…"
+	done
+; 0x1ec6d0
+
+UnknownText_0x1ec6d0: ; 0x1ec6d0
+	text "I must've imagined"
+	line "that."
+
+	para "There seems to be"
+	line "no one here…"
+	done
+; 0x1ec708
+
+UnknownText_0x1ec708: ; 0x1ec708
+	text "Who am I?"
+	line "I don't know…"
+	done
+; 0x1ec720
+
+UnknownText_0x1ec720: ; 0x1ec720
+	text "Um… Are you that…"
+	line "um…person?"
+	done
+; 0x1ec73e
+
+UnknownText_0x1ec73e: ; 0x1ec73e
+	text "It doesn't appear"
+	line "to be you…"
+	done
+; 0x1ec75b
+
+UnknownText_0x1ec75b: ; 0x1ec75b
+	text "Then you really"
+	line "are the legendary…"
+	done
+; 0x1ec77f
+
+UnknownText_0x1ec77f: ; 0x1ec77f
+	text "I heard that"
+	line "you're hot!"
+	done
+; 0x1ec798
+
+UnknownText_0x1ec798: ; 0x1ec798
+	text "Not bad. I was"
+	line "just a bit better."
+	done
+; 0x1ec7bb
+
+UnknownText_0x1ec7bb: ; 0x1ec7bb
+	text "Eh, you're not"
+	line "that special."
+	done
+; 0x1ec7d8
+
+UnknownText_0x1ec7d8: ; 0x1ec7d8
+	text "I'm scared about"
+	line "what might happen."
+
+	para "My #MON are way"
+	line "too strong."
+	done
+; 0x1ec818
+
+UnknownText_0x1ec818: ; 0x1ec818
+	text "See? My #MON"
+	line "were too strong."
+	done
+; 0x1ec837
+
+UnknownText_0x1ec837: ; 0x1ec837
+	text "Graa! My #MON"
+	line "were total wimps!"
+	done
+; 0x1ec858
+
+UnknownText_0x1ec858: ; 0x1ec858
+	text "Hey, there!"
+	line "I'll take you on!"
+	done
+; 0x1ec876
+
+UnknownText_0x1ec876: ; 0x1ec876
+	text "Don't you have a"
+	line "better strategy?"
+	done
+; 0x1ec898
+
+UnknownText_0x1ec898: ; 0x1ec898
+	text "You've got decent"
+	line "style!"
+	done
+; 0x1ec8b1
+
+UnknownText_0x1ec8b1: ; 0x1ec8b1
+	text "I wonder if I can"
+	line "battle properly…"
+	done
+; 0x1ec8d5
+
+UnknownText_0x1ec8d5: ; 0x1ec8d5
+	text "Um… Sorry…"
+	line "I think I won."
+	done
+; 0x1ec8f0
+
+UnknownText_0x1ec8f0: ; 0x1ec8f0
+	text "I guess I'm not"
+	line "good enough yet…"
+	done
+; 0x1ec911
+
+UnknownText_0x1ec911: ; 0x1ec911
+	text "Wrrooar!"
+	line "I won't lose!"
+	done
+; 0x1ec928
+
+UnknownText_0x1ec928: ; 0x1ec928
+	text "Wrrooar! I knew"
+	line "I was a genius!"
+	done
+; 0x1ec949
+
+UnknownText_0x1ec949: ; 0x1ec949
+	text "Arrooh! I hate it"
+	line "when I lose!"
+	done
+; 0x1ec969
+
+UnknownText_0x1ec969: ; 0x1ec969
+	text "Sorry, but I'm"
+	line "going to win."
+	done
+; 0x1ec986
+
+UnknownText_0x1ec986: ; 0x1ec986
+	text "Yeah! My #MON"
+	line "rule!"
+	done
+; 0x1ec99b
+
+UnknownText_0x1ec99b: ; 0x1ec99b
+	text "Oh, close! I lost"
+	line "by just a bit!"
+	done
+; 0x1ec9bd
+
+UnknownText_0x1ec9bd: ; 0x1ec9bd
+	text "OK, I'm not"
+	line "fooling around!"
+	done
+; 0x1ec9d9
+
+UnknownText_0x1ec9d9: ; 0x1ec9d9
+	text "Yay! Too easy!"
+	line "Like, no way!"
+	done
+; 0x1ec9f7
+
+UnknownText_0x1ec9f7: ; 0x1ec9f7
+	text "No!"
+	line "Like, no way!"
+	done
+; 0x1eca0a
+
+UnknownText_0x1eca0a: ; 0x1eca0a
+	text "Look! My #MON"
+	line "are really cute!"
+	done
+; 0x1eca2a
+
+UnknownText_0x1eca2a: ; 0x1eca2a
+	text "Aren't they really"
+	line "adorable?"
+	done
+; 0x1eca47
+
+UnknownText_0x1eca47: ; 0x1eca47
+	text "I'm sorry, it's"
+	line "all my fault!"
+	done
+; 0x1eca64
+
+UnknownText_0x1eca64: ; 0x1eca64
+	text "Let's get our"
+	line "battle started!"
+	done
+; 0x1eca82
+
+UnknownText_0x1eca82: ; 0x1eca82
+	text "Was I too strong"
+	line "for you?"
+	done
+; 0x1eca9d
+
+UnknownText_0x1eca9d: ; 0x1eca9d
+	text "Ooh, you're in a"
+	line "different class."
+	done
+; 0x1ecabf
+
+UnknownText_0x1ecabf: ; 0x1ecabf
+	text "Are we going to"
+	line "battle? Let's!"
+	done
+; 0x1ecade
+
+UnknownText_0x1ecade: ; 0x1ecade
+	text "Oh, you're too"
+	line "weak. Shame."
+	done
+; 0x1ecafa
+
+UnknownText_0x1ecafa: ; 0x1ecafa
+	text "Wow! Are you quite"
+	line "satisfied?"
+	done
+; 0x1ecb19
+
+UnknownText_0x1ecb19: ; 0x1ecb19
+	text "Oh, you have some"
+	line "rare #MON."
+	done
+; 0x1ecb37
+
+UnknownText_0x1ecb37: ; 0x1ecb37
+	text "May I have one of"
+	line "your #MON?"
+	done
+; 0x1ecb55
+
+UnknownText_0x1ecb55: ; 0x1ecb55
+	text "…I want one of"
+	line "your #MON."
+	done
+; 0x1ecb70
+
+UnknownText_0x1ecb70: ; 0x1ecb70
+	text "Want to hear about"
+	line "my cute #MON?"
+	done
+; 0x1ecb92
+
+UnknownText_0x1ecb92: ; 0x1ecb92
+	text "What do you think"
+	line "about my cuties?"
+	done
+; 0x1ecbb6
+
+UnknownText_0x1ecbb6: ; 0x1ecbb6
+	text "Oh! My! You're a"
+	line "dreadful trainer!"
+	done
+; 0x1ecbd9
+
+UnknownText_0x1ecbd9: ; 0x1ecbd9
+	text "Battle? Sure!"
+	line "Right now!"
+	done
+; 0x1ecbf3
+
+UnknownText_0x1ecbf3: ; 0x1ecbf3
+	text "Oh, I love it!"
+	line "Battling is wild!"
+	done
+; 0x1ecc15
+
+UnknownText_0x1ecc15: ; 0x1ecc15
+	text "Oh, how rude! Wait"
+	line "till next time!"
+	done
+; 0x1ecc39
+
+UnknownText_0x1ecc39: ; 0x1ecc39
+	text "Please let me win!"
+	line "Please?"
+	done
+; 0x1ecc55
+
+UnknownText_0x1ecc55: ; 0x1ecc55
+	text "Wow, thank you!"
+	line "You're so nice!"
+	done
+; 0x1ecc75
+
+UnknownText_0x1ecc75: ; 0x1ecc75
+	text "You're mean!"
+	line "I hate meanies!"
+	done
+; 0x1ecc92
+
+UnknownText_0x1ecc92: ; 0x1ecc92
+	text "Well, can we"
+	line "begin?"
+	done
+; 0x1ecca7
+
+UnknownText_0x1ecca7: ; 0x1ecca7
+	text "Well, I beg your"
+	line "pardon…"
+	done
+; 0x1eccc1
+
+UnknownText_0x1eccc1: ; 0x1eccc1
+	text "Sob… That's not"
+	line "fair!"
+	done
+; 0x1eccd7
+
+UnknownText_0x1eccd7: ; 0x1eccd7
+	text "I'm good!"
+	line "You can't win."
+	done
+; 0x1eccef
+
+UnknownText_0x1eccef: ; 0x1eccef
+	text "Giving up? You're"
+	line "pretty weak!"
+	done
+; 0x1ecd0e
+
+UnknownText_0x1ecd0e: ; 0x1ecd0e
+	text "I won't accept"
+	line "this… No way!"
+	done
+; 0x1ecd2b
+
+UnknownText_0x1ecd2b: ; 0x1ecd2b
+	text "Are you treating"
+	line "this seriously?"
+	done
+; 0x1ecd4d
+
+UnknownText_0x1ecd4d: ; 0x1ecd4d
+	text "Oh, sorry! Looks"
+	line "like I won!"
+	done
+; 0x1ecd6b
+
+UnknownText_0x1ecd6b: ; 0x1ecd6b
+	text "Oh, how nasty!"
+	line "You were serious!"
+	done
+; 0x1ecd8d
+
+UnknownText_0x1ecd8d: ; 0x1ecd8d
+	text "Ahahah! I'll take"
+	line "it easy on you!"
+	done
+; 0x1ecdaf
+
+UnknownText_0x1ecdaf: ; 0x1ecdaf
+	text "Oops, sorry! But"
+	line "I'm happy too!"
+	done
+; 0x1ecdcf
+
+UnknownText_0x1ecdcf: ; 0x1ecdcf
+	text "Oh, oh, I lost!"
+	line "Thanks. Bye!"
+	done
+; 0x1ecded
+
+UnknownText_0x1ecded: ; 0x1ecded
+	text "BATTLE TOWER is a"
+	line "tough place!"
+	done
+; 0x1ece0d
+
+UnknownText_0x1ece0d: ; 0x1ece0d
+	text "You might have a"
+	line "hard time."
+	done
+; 0x1ece2a
+
+UnknownText_0x1ece2a: ; 0x1ece2a
+	text "Ooh, you might"
+	line "make a run here!"
+	done
+; 0x1ece4b
+
+UnknownText_0x1ece4b: ; 0x1ece4b
+	text "I want to see your"
+	line "style in action!"
+	done
+; 0x1ece70
+
+UnknownText_0x1ece70: ; 0x1ece70
+	text "Every battle is a"
+	line "drama!"
+	done
+; 0x1ece8a
+
+UnknownText_0x1ece8a: ; 0x1ece8a
+	text "Oh… Want to trade"
+	line "something?"
+	done
+; 0x1ecea8
+
+UnknownText_0x1ecea8: ; 0x1ecea8
+	text "OK, here goes!"
+	line "I have momentum!"
+	done
+; 0x1ecec9
+
+UnknownText_0x1ecec9: ; 0x1ecec9
+	text "See, I rolled"
+	line "right over you!"
+	done
+; 0x1ecee8
+
+UnknownText_0x1ecee8: ; 0x1ecee8
+	text "No! This did not"
+	line "happen!"
+	done
+; 0x1ecf02
--- /dev/null
+++ b/data/battle_tower/unknown.asm
@@ -1,0 +1,1404 @@
+BattleTowerTrainerData:: ; What exactly it is, I don't know
+; Size is 70 (Nr of Trainers in BattleTower) * 0x24 (Nr of Bytes that are copied)
+; Second argument points to an entry in Unknown_170470, to which the first argument is compared.
+
+BattleTowerTrainer1DataTable:
+	db $37,  3
+	db $0e,  9
+	db $25, 11
+	db $1c, 13
+	db $12, 13
+	db $00,  5
+	db $0e,  9
+	db $1a, 11
+	db $30,  4
+	db $3f,  6
+	db $20,  4
+	db $21, 13
+	db $0e,  9
+	db $30,  4
+	db $20,  4
+	db $0b,  6
+	db $34,  3
+	db $06,  5
+
+BattleTowerTrainer2DataTable:
+	db $36,  3
+	db $ca,  0
+	db $22,  8
+	db $20,  4
+	db $33, 13
+	db $11, 13
+	db $37,  5
+	db $06,  5
+	db $3f,  6
+	db $ca,  0
+	db $20,  4
+	db $06, 13
+	db $ca,  0
+	db $21,  3
+	db $09,  6
+	db $12,  4
+	db $28, 11
+	db $0c, 13
+
+BattleTowerTrainer3DataTable:
+	db $32,  6
+	db $31,  4
+	db $02,  2
+	db $03,  4
+	db $22,  2
+	db $00,  5
+	db $40,  4
+	db $2d,  6
+	db $13, 13
+	db $18,  3
+	db $3f,  4
+	db $13, 13
+	db $1a, 12
+	db $33,  4
+	db $32, 13
+	db $09,  6
+	db $22,  2
+	db $13, 13
+
+BattleTowerTrainer4DataTable:
+	db $22, 12
+	db $22, 12
+	db $0a,  9
+	db $0b,  8
+	db $2f,  6
+	db $22,  7
+	db $22,  6
+	db $2c,  4
+	db $1a,  6
+	db $0d,  7
+	db $3f, 13
+	db $00,  5
+	db $0b,  8
+	db $09,  6
+	db $2c,  4
+	db $1f, 14
+	db $1c, 11
+	db $41, 11
+
+BattleTowerTrainer5DataTable:
+	db $a3,  0
+	db $41,  3
+	db $1f,  4
+	db $29,  0
+	db $1c,  4
+	db $03,  2
+	db $3d,  5
+	db $38,  6
+	db $71,  0
+	db $18,  3
+	db $30,  6
+	db $53,  0
+	db $1e,  5
+	db $b9,  0
+	db $21, 13
+	db $30,  6
+	db $d1,  0
+	db $0a,  6
+
+BattleTowerTrainer6DataTable:
+	db $13,  2
+	db $31,  6
+	db $04,  2
+	db $1c,  4
+	db $0d, 13
+	db $31, 13
+	db $39,  7
+	db $31,  6
+	db $24,  7
+	db $3d,  4
+	db $40,  4
+	db $30, 13
+	db $03,  6
+	db $08,  5
+	db $02,  5
+	db $14,  7
+	db $08,  5
+	db $1a, 13
+
+BattleTowerTrainer7DataTable:
+	db $0d,  2
+	db $07,  2
+	db $00,  5
+	db $22,  2
+	db $10, 11
+	db $0a, 13
+	db $16,  2
+	db $01,  2
+	db $08, 13
+	db $2c,  4
+	db $23,  7
+	db $23, 13
+	db $16,  2
+	db $01,  2
+	db $08, 13
+	db $02,  3
+	db $20,  4
+	db $23, 13
+
+BattleTowerTrainer8DataTable:
+	db $1e,  2
+	db $22,  2
+	db $00,  5
+	db $20,  8
+	db $2c,  4
+	db $03,  2
+	db $1d,  5
+	db $41,  8
+	db $41,  8
+	db $35,  5
+	db $40, 11
+	db $00,  5
+	db $0b,  5
+	db $0b,  2
+	db $00,  5
+	db $04,  4
+	db $14,  8
+	db $00,  5
+
+BattleTowerTrainer9DataTable:
+	db $06, 12
+	db $09,  6
+	db $00,  0
+	db $0b,  9
+	db $1e, 12
+	db $37, 13
+	db $41,  3
+	db $06,  4
+	db $34,  6
+	db $22, 12
+	db $15,  9
+	db $23, 13
+	db $02,  3
+	db $22,  8
+	db $41, 13
+	db $26,  4
+	db $31, 13
+	db $01,  5
+
+BattleTowerTrainer10DataTable:
+	db $22, 12
+	db $30,  4
+	db $01,  5
+	db $2c,  4
+	db $23,  7
+	db $01,  5
+	db $37,  3
+	db $3d,  4
+	db $3c, 13
+	db $1c,  3
+	db $29,  8
+	db $3c, 13
+	db $18,  4
+	db $30, 13
+	db $06,  5
+	db $14,  7
+	db $30, 13
+	db $06,  5
+
+BattleTowerTrainer11DataTable:
+	db $0e,  6
+	db $04,  5
+	db $2c,  4
+	db $1e, 12
+	db $38, 13
+	db $00,  5
+	db $3f,  3
+	db $3f,  6
+	db $20,  4
+	db $33, 13
+	db $04, 13
+	db $00,  0
+	db $20,  4
+	db $26, 13
+	db $04,  5
+	db $0c,  4
+	db $26, 13
+	db $04,  5
+
+BattleTowerTrainer12DataTable:
+	db $18,  2
+	db $33,  3
+	db $28,  4
+	db $2c,  4
+	db $09,  7
+	db $03,  5
+	db $30,  4
+	db $08,  9
+	db $00,  5
+	db $1a,  2
+	db $32,  3
+	db $00,  5
+	db $3f,  5
+	db $26,  7
+	db $01,  5
+	db $26,  5
+	db $0f,  2
+	db $00,  5
+
+BattleTowerTrainer13DataTable:
+	db $3a, 11
+	db $3a, 11
+	db $00,  5
+	db $42,  3
+	db $19,  8
+	db $30,  4
+	db $39,  3
+	db $13,  6
+	db $13,  6
+	db $19,  8
+	db $21, 13
+	db $00,  0
+	db $39,  3
+	db $09,  2
+	db $00,  5
+	db $40,  3
+	db $3a,  8
+	db $2a, 13
+
+BattleTowerTrainer14DataTable:
+	db $31,  5
+	db $11, 14
+	db $30,  4
+	db $1b,  8
+	db $07,  8
+	db $0c, 13
+	db $1b,  2
+	db $1b,  2
+	db $01,  5
+	db $15,  2
+	db $0a,  4
+	db $0e, 13
+	db $22,  5
+	db $31,  6
+	db $02,  5
+	db $1d,  6
+	db $3b,  7
+	db $0e, 13
+
+BattleTowerTrainer15DataTable:
+	db $1b,  2
+	db $2c,  4
+	db $0d, 13
+	db $34,  3
+	db $00,  3
+	db $11, 13
+	db $1b,  8
+	db $31,  4
+	db $0b, 13
+	db $2f,  8
+	db $01,  5
+	db $00,  0
+	db $06,  5
+	db $10,  5
+	db $0f,  6
+	db $11, 13
+	db $06,  5
+	db $00,  0
+
+BattleTowerTrainer16DataTable:
+	db $42,  3
+	db $30,  4
+	db $1f, 11
+	db $16, 14
+	db $10,  7
+	db $34, 13
+	db $17, 14
+	db $04, 13
+	db $00,  0
+	db $42,  3
+	db $19,  8
+	db $30,  4
+	db $0c,  5
+	db $35,  5
+	db $01,  5
+	db $1e,  6
+	db $36,  8
+	db $41, 13
+
+BattleTowerTrainer17DataTable:
+	db $18,  3
+	db $42,  3
+	db $43,  4
+	db $3a, 11
+	db $3b, 11
+	db $03,  5
+	db $2c,  5
+	db $06,  5
+	db $1b,  3
+	db $43,  4
+	db $39, 11
+	db $3c,  4
+	db $14, 11
+	db $0f,  5
+	db $06,  5
+	db $40,  3
+	db $3f,  4
+	db $20, 14
+
+BattleTowerTrainer18DataTable:
+	db $0c,  5
+	db $36,  7
+	db $30,  4
+	db $27, 11
+	db $10,  8
+	db $31, 13
+	db $11, 14
+	db $30,  4
+	db $41,  3
+	db $07, 13
+	db $2f,  8
+	db $03,  5
+	db $06,  5
+	db $3f,  6
+	db $11, 14
+	db $30,  4
+	db $30,  7
+	db $06,  5
+
+BattleTowerTrainer19DataTable:
+	db $36,  3
+	db $06,  6
+	db $44,  4
+	db $0b, 14
+	db $16, 13
+	db $00,  5
+	db $32, 13
+	db $08,  6
+	db $09, 14
+	db $44,  4
+	db $09,  8
+	db $22, 13
+	db $04, 14
+	db $09, 14
+	db $44,  4
+	db $29,  8
+	db $05, 13
+	db $00,  0
+
+BattleTowerTrainer20DataTable:
+	db $3f,  6
+	db $2c,  4
+	db $34, 13
+	db $14,  5
+	db $13,  2
+	db $04,  2
+	db $0c,  5
+	db $3f,  4
+	db $38, 13
+	db $02,  3
+	db $29,  8
+	db $32, 13
+	db $35,  5
+	db $15,  6
+	db $40,  5
+	db $02,  3
+	db $34,  7
+	db $04, 13
+
+BattleTowerTrainer21DataTable:
+	db $12,  3
+	db $02,  4
+	db $07,  7
+	db $28,  4
+	db $2c, 13
+	db $00,  5
+	db $2c,  3
+	db $12,  3
+	db $2b,  6
+	db $0a,  4
+	db $06, 13
+	db $31, 13
+	db $2c,  3
+	db $12,  3
+	db $06,  4
+	db $0d,  6
+	db $28, 11
+	db $02,  5
+
+BattleTowerTrainer22DataTable:
+	db $41,  4
+	db $3c, 11
+	db $34, 13
+	db $40,  3
+	db $00,  3
+	db $0d, 13
+	db $13, 12
+	db $33,  8
+	db $31, 13
+	db $1e,  9
+	db $27,  7
+	db $3b, 13
+	db $22,  8
+	db $15,  4
+	db $11, 13
+	db $2c,  3
+	db $0c,  4
+	db $3b, 13
+
+BattleTowerTrainer23DataTable:
+	db $03, 10
+	db $3a, 13
+	db $2c,  4
+	db $1c, 11
+	db $35,  7
+	db $26, 13
+	db $24,  9
+	db $43,  4
+	db $26, 13
+	db $0f,  3
+	db $1f,  7
+	db $04,  5
+	db $02,  3
+	db $24,  8
+	db $26, 13
+	db $3f,  3
+	db $13,  4
+	db $04,  5
+
+BattleTowerTrainer24DataTable:
+	db $06,  5
+	db $06,  5
+	db $06,  5
+	db $06,  5
+	db $2c,  4
+	db $03,  5
+	db $06,  5
+	db $06,  5
+	db $06,  5
+	db $06,  5
+	db $07,  4
+	db $03,  5
+	db $06,  5
+	db $06,  5
+	db $06,  5
+	db $06,  5
+	db $33,  4
+	db $03,  5
+
+BattleTowerTrainer25DataTable:
+	db $27,  5
+	db $01,  5
+	db $00,  0
+	db $18,  4
+	db $19, 13
+	db $01,  5
+	db $41,  5
+	db $00,  0
+	db $00,  0
+	db $16,  6
+	db $3d,  4
+	db $19, 13
+	db $20,  4
+	db $05,  5
+	db $00,  0
+	db $21,  3
+	db $0c,  4
+	db $19, 13
+
+BattleTowerTrainer26DataTable:
+	db $03,  2
+	db $43,  3
+	db $27,  4
+	db $28,  4
+	db $2d, 13
+	db $00,  5
+	db $30,  5
+	db $04,  5
+	db $02,  3
+	db $38,  6
+	db $3e,  4
+	db $41, 13
+	db $16, 14
+	db $04,  5
+	db $02,  3
+	db $38,  6
+	db $20,  4
+	db $41, 13
+
+BattleTowerTrainer27DataTable:
+	db $34,  3
+	db $00,  3
+	db $11, 13
+	db $03,  4
+	db $1c, 11
+	db $07, 13
+	db $29,  5
+	db $00,  5
+	db $00,  0
+	db $40,  4
+	db $11, 13
+	db $3e, 13
+	db $03,  6
+	db $11, 13
+	db $00,  5
+	db $16, 14
+	db $0d,  6
+	db $20,  6
+
+BattleTowerTrainer28DataTable:
+	db $19,  3
+	db $17, 11
+	db $20,  6
+	db $1b, 11
+	db $06, 12
+	db $1a, 11
+	db $34,  3
+	db $06,  4
+	db $20,  6
+	db $1b, 11
+	db $06, 12
+	db $1a, 11
+	db $34,  3
+	db $36,  4
+	db $20,  6
+	db $1b, 11
+	db $06, 12
+	db $1a, 11
+
+BattleTowerTrainer29DataTable:
+	db $0a,  3
+	db $0c, 12
+	db $25, 10
+	db $21, 14
+	db $2c,  4
+	db $03,  2
+	db $10,  9
+	db $03,  8
+	db $09,  6
+	db $0a,  3
+	db $31,  4
+	db $16, 13
+	db $27,  5
+	db $17,  7
+	db $04,  5
+	db $02, 12
+	db $0a,  9
+	db $2f, 13
+
+BattleTowerTrainer30DataTable:
+	db $15,  2
+	db $2c,  4
+	db $03,  2
+	db $24,  4
+	db $39,  4
+	db $0f, 13
+	db $1e,  2
+	db $11,  2
+	db $01,  5
+	db $0d,  4
+	db $39,  8
+	db $05, 13
+	db $29,  5
+	db $08,  2
+	db $00,  5
+	db $43,  3
+	db $0c,  4
+	db $3b, 13
+
+BattleTowerTrainer31DataTable:
+	db $10, 11
+	db $04,  4
+	db $00,  5
+	db $05,  8
+	db $21, 13
+	db $00,  0
+	db $1f,  5
+	db $01,  2
+	db $00,  5
+	db $18,  3
+	db $3c,  8
+	db $31, 13
+	db $02,  6
+	db $23, 11
+	db $31,  3
+	db $43,  3
+	db $13,  7
+	db $16, 13
+
+BattleTowerTrainer32DataTable:
+	db $0f, 14
+	db $19, 13
+	db $00,  5
+	db $0b, 14
+	db $2c,  4
+	db $19, 13
+	db $0e, 14
+	db $2c,  4
+	db $06,  5
+	db $1f,  7
+	db $19, 13
+	db $01,  5
+	db $06,  5
+	db $37,  3
+	db $29,  4
+	db $32, 13
+	db $19, 13
+	db $01,  5
+
+BattleTowerTrainer33DataTable:
+	db $35,  3
+	db $06,  4
+	db $0d,  6
+	db $29, 11
+	db $05, 13
+	db $00,  0
+	db $16, 14
+	db $30,  4
+	db $0b, 13
+	db $29,  8
+	db $16, 13
+	db $00,  5
+	db $11, 14
+	db $30,  4
+	db $30,  7
+	db $06,  5
+	db $29,  8
+	db $03,  5
+
+BattleTowerTrainer34DataTable:
+	db $18,  4
+	db $03,  5
+	db $0b, 13
+	db $2c,  4
+	db $1e, 12
+	db $01,  5
+	db $1f,  5
+	db $1d,  7
+	db $1d,  7
+	db $2c,  4
+	db $21,  7
+	db $01,  5
+	db $0a,  5
+	db $12,  2
+	db $32, 13
+	db $11, 12
+	db $0c,  6
+	db $1a, 13
+
+BattleTowerTrainer35DataTable:
+	db $0c, 12
+	db $37,  3
+	db $1a,  3
+	db $40,  4
+	db $23, 11
+	db $26, 10
+	db $3f,  6
+	db $09,  4
+	db $1b,  7
+	db $37,  3
+	db $22,  8
+	db $27,  6
+	db $04, 14
+	db $03,  5
+	db $00,  0
+	db $26, 10
+	db $3b,  8
+	db $1b,  7
+
+BattleTowerTrainer36DataTable:
+	db $18,  3
+	db $1b,  8
+	db $29, 11
+	db $40,  8
+	db $32, 13
+	db $00,  5
+	db $2f,  6
+	db $29, 11
+	db $0b, 13
+	db $2f,  8
+	db $23, 13
+	db $02, 13
+	db $35,  5
+	db $13, 14
+	db $2e,  6
+	db $22,  6
+	db $2f,  8
+	db $27,  6
+
+BattleTowerTrainer37DataTable:
+	db $1c,  3
+	db $02, 14
+	db $31,  3
+	db $2a, 13
+	db $24, 13
+	db $00,  0
+	db $18,  3
+	db $0b, 13
+	db $30,  8
+	db $40,  8
+	db $04,  5
+	db $00,  0
+	db $1c,  5
+	db $01,  5
+	db $03,  3
+	db $02, 14
+	db $27,  4
+	db $34, 13
+
+BattleTowerTrainer38DataTable:
+	db $33,  3
+	db $30,  4
+	db $2c,  4
+	db $1c, 11
+	db $35,  7
+	db $00,  5
+	db $30,  4
+	db $2c,  4
+	db $20,  6
+	db $1e,  9
+	db $40,  6
+	db $40,  4
+	db $30,  4
+	db $2c,  4
+	db $20,  6
+	db $1e,  9
+	db $40,  6
+	db $22,  7
+
+BattleTowerTrainer39DataTable:
+	db $22, 12
+	db $22, 12
+	db $16, 10
+	db $35, 13
+	db $1c, 11
+	db $3f, 13
+	db $13,  5
+	db $16, 10
+	db $40,  6
+	db $23,  7
+	db $06, 13
+	db $06,  5
+	db $3f,  6
+	db $16, 10
+	db $16, 13
+	db $37,  3
+	db $2c,  4
+	db $26,  7
+
+BattleTowerTrainer40DataTable:
+	db $0e,  6
+	db $05,  8
+	db $04, 13
+	db $00,  0
+	db $00,  0
+	db $00,  0
+	db $14,  5
+	db $06,  5
+	db $12,  2
+	db $00,  0
+	db $00,  0
+	db $00,  0
+	db $23,  5
+	db $01,  6
+	db $18, 13
+	db $00,  0
+	db $00,  0
+	db $00,  0
+
+BattleTowerTrainer41DataTable:
+	db $18,  3
+	db $27,  3
+	db $03,  5
+	db $20, 11
+	db $27,  6
+	db $06,  5
+	db $20, 14
+	db $12,  7
+	db $2b, 13
+	db $2c,  3
+	db $0e,  8
+	db $35,  7
+	db $37,  3
+	db $27,  3
+	db $03,  5
+	db $42,  7
+	db $2f,  8
+	db $06,  5
+
+BattleTowerTrainer42DataTable:
+	db $36,  3
+	db $30,  4
+	db $17,  4
+	db $2c,  3
+	db $0c,  4
+	db $3b, 13
+	db $18,  3
+	db $32,  7
+	db $15, 13
+	db $35,  5
+	db $0d,  7
+	db $07, 13
+	db $09,  5
+	db $06,  5
+	db $0f, 12
+	db $09,  4
+	db $07, 13
+	db $3b, 13
+
+BattleTowerTrainer43DataTable:
+	db $0b,  5
+	db $14,  6
+	db $24,  4
+	db $0a, 13
+	db $3c, 13
+	db $00,  5
+	db $14,  5
+	db $09,  2
+	db $32, 13
+	db $1e,  6
+	db $04,  7
+	db $06, 13
+	db $1a,  5
+	db $33,  4
+	db $03,  5
+	db $16,  2
+	db $00,  2
+	db $07,  5
+
+BattleTowerTrainer44DataTable:
+	db $0a,  3
+	db $32,  7
+	db $0b, 14
+	db $22,  6
+	db $2c,  4
+	db $29, 11
+	db $0a,  3
+	db $12, 13
+	db $24,  4
+	db $1a, 11
+	db $33, 13
+	db $03, 13
+	db $0a,  3
+	db $35,  4
+	db $1b,  7
+	db $06,  5
+	db $1e,  6
+	db $14,  7
+
+BattleTowerTrainer45DataTable:
+	db $0e,  6
+	db $2c,  4
+	db $00, 13
+	db $06,  3
+	db $31,  4
+	db $04, 13
+	db $0c,  5
+	db $12,  2
+	db $00,  5
+	db $40,  3
+	db $09,  4
+	db $01, 13
+	db $35,  5
+	db $36,  8
+	db $00,  5
+	db $02,  3
+	db $31,  4
+	db $21, 13
+
+BattleTowerTrainer46DataTable:
+	db $22,  5
+	db $07, 14
+	db $30,  4
+	db $c5,  0
+	db $10,  2
+	db $01,  5
+	db $0c, 12
+	db $00,  1
+	db $30,  4
+	db $82,  0
+	db $21,  4
+	db $01,  5
+	db $10,  1
+	db $11,  5
+	db $30,  4
+	db $c3,  0
+	db $3f,  4
+	db $06,  5
+
+BattleTowerTrainer47DataTable:
+	db $3a,  7
+	db $3b,  7
+	db $36,  3
+	db $30,  4
+	db $21,  4
+	db $06, 13
+	db $17, 14
+	db $03,  5
+	db $00,  0
+	db $3f,  6
+	db $21,  4
+	db $21, 13
+	db $36,  5
+	db $36,  3
+	db $30,  4
+	db $33,  6
+	db $3f,  4
+	db $0c, 13
+
+BattleTowerTrainer48DataTable:
+	db $43,  3
+	db $20,  4
+	db $41, 13
+	db $17,  6
+	db $06,  3
+	db $0a,  4
+	db $3a,  6
+	db $13,  4
+	db $04, 13
+	db $08,  6
+	db $3f,  4
+	db $31, 13
+	db $43,  3
+	db $39,  4
+	db $04,  5
+	db $17,  6
+	db $39,  4
+	db $41, 13
+
+BattleTowerTrainer49DataTable:
+	db $36,  3
+	db $16,  4
+	db $08,  6
+	db $09,  8
+	db $06, 13
+	db $00,  0
+	db $1f, 11
+	db $03,  5
+	db $12, 14
+	db $0f, 14
+	db $2c, 13
+	db $00,  5
+	db $3a,  6
+	db $16,  4
+	db $38,  6
+	db $38,  6
+	db $2c, 13
+	db $00,  5
+
+BattleTowerTrainer50DataTable:
+	db $11,  5
+	db $25,  3
+	db $33,  4
+	db $2f,  8
+	db $19, 13
+	db $00,  5
+	db $11,  5
+	db $25,  3
+	db $3f,  6
+	db $26,  4
+	db $19, 13
+	db $00,  5
+	db $11,  5
+	db $21,  3
+	db $35,  4
+	db $14,  7
+	db $19, 13
+	db $06,  5
+
+BattleTowerTrainer51DataTable:
+	db $2c,  4
+	db $0a, 13
+	db $04,  5
+	db $33,  3
+	db $29, 11
+	db $05, 13
+	db $00,  6
+	db $04,  5
+	db $09,  2
+	db $33,  3
+	db $07,  4
+	db $35,  7
+	db $33,  3
+	db $3a,  8
+	db $05, 13
+	db $3f,  6
+	db $29,  8
+	db $05, 13
+
+BattleTowerTrainer52DataTable:
+	db $05,  3
+	db $1b,  4
+	db $41,  3
+	db $39, 11
+	db $3a, 11
+	db $01,  5
+	db $2c,  4
+	db $03,  5
+	db $00,  0
+	db $40,  7
+	db $3e, 13
+	db $00,  5
+	db $00, 14
+	db $09,  5
+	db $04,  5
+	db $19,  9
+	db $1d, 11
+	db $03,  5
+
+BattleTowerTrainer53DataTable:
+	db $1c, 12
+	db $20,  6
+	db $05,  8
+	db $3e, 13
+	db $00,  5
+	db $00,  0
+	db $18,  3
+	db $1f, 14
+	db $11, 10
+	db $1c, 11
+	db $15, 11
+	db $1c,  6
+	db $03, 14
+	db $06, 12
+	db $21, 12
+	db $14, 13
+	db $06,  5
+	db $1f,  8
+
+BattleTowerTrainer54DataTable:
+	db $37,  3
+	db $0e,  1
+	db $08,  1
+	db $19,  6
+	db $27, 11
+	db $03,  2
+	db $0e,  1
+	db $08,  1
+	db $1b,  8
+	db $05,  8
+	db $21, 13
+	db $00,  0
+	db $36,  3
+	db $33,  4
+	db $04,  5
+	db $00,  4
+	db $41,  8
+	db $3b, 13
+
+BattleTowerTrainer55DataTable:
+	db $06,  2
+	db $00,  5
+	db $34,  3
+	db $00,  3
+	db $0d, 13
+	db $00,  5
+	db $3c,  6
+	db $05,  8
+	db $16,  4
+	db $2f,  8
+	db $33, 13
+	db $02, 13
+	db $1c,  5
+	db $00,  5
+	db $18,  3
+	db $05,  8
+	db $1b,  4
+	db $0c, 13
+
+BattleTowerTrainer56DataTable:
+	db $2c,  4
+	db $13,  9
+	db $20,  6
+	db $39,  3
+	db $20,  4
+	db $3c, 13
+	db $05,  3
+	db $43,  4
+	db $0b, 13
+	db $22,  4
+	db $06, 13
+	db $31, 13
+	db $24,  8
+	db $00,  5
+	db $02,  3
+	db $09,  8
+	db $06, 13
+	db $3b, 13
+
+BattleTowerTrainer57DataTable:
+	db $06,  3
+	db $20,  4
+	db $24, 13
+	db $24,  4
+	db $10, 11
+	db $00,  5
+	db $39,  7
+	db $00,  5
+	db $2a,  6
+	db $04,  4
+	db $3c,  4
+	db $00,  0
+	db $24,  4
+	db $1c, 11
+	db $07, 13
+	db $2f,  8
+	db $09,  6
+	db $06,  5
+
+BattleTowerTrainer58DataTable:
+	db $44,  7
+	db $23, 11
+	db $33, 13
+	db $2c,  4
+	db $20,  6
+	db $24,  8
+	db $24,  8
+	db $00,  5
+	db $0e, 14
+	db $12,  8
+	db $09, 11
+	db $28,  6
+	db $24,  8
+	db $00,  5
+	db $02,  3
+	db $13,  6
+	db $11,  8
+	db $41, 13
+
+BattleTowerTrainer59DataTable:
+	db $36,  3
+	db $06,  6
+	db $30,  4
+	db $0f, 11
+	db $02, 11
+	db $3b, 13
+	db $31, 13
+	db $00,  5
+	db $39,  3
+	db $20,  4
+	db $21, 13
+	db $00,  0
+	db $04, 14
+	db $02,  5
+	db $06,  6
+	db $20, 14
+	db $0b,  6
+	db $27,  6
+
+BattleTowerTrainer60DataTable:
+	db $14,  5
+	db $04,  2
+	db $09, 14
+	db $08,  8
+	db $2e,  8
+	db $41, 13
+	db $34,  5
+	db $2e,  8
+	db $21, 13
+	db $3f,  3
+	db $18,  8
+	db $00,  5
+	db $36,  5
+	db $05,  2
+	db $00,  5
+	db $17,  6
+	db $39,  4
+	db $00,  5
+
+BattleTowerTrainer61DataTable:
+	db $34,  3
+	db $00,  3
+	db $11, 13
+	db $41,  8
+	db $0b,  6
+	db $06,  4
+	db $39,  7
+	db $00,  5
+	db $00,  0
+	db $36,  3
+	db $30,  4
+	db $07,  8
+	db $10,  5
+	db $15,  8
+	db $00,  5
+	db $3a,  6
+	db $1e,  6
+	db $14, 13
+
+BattleTowerTrainer62DataTable:
+	db $37,  5
+	db $37,  5
+	db $00,  5
+	db $38,  5
+	db $38,  5
+	db $41,  5
+	db $25,  5
+	db $04,  5
+	db $32,  5
+	db $31,  5
+	db $41,  5
+	db $41,  5
+	db $0f,  5
+	db $04,  5
+	db $0f,  5
+	db $0f,  5
+	db $16,  5
+	db $01,  5
+
+BattleTowerTrainer63DataTable:
+	db $1f, 14
+	db $36,  4
+	db $40, 13
+	db $2f,  8
+	db $1a, 13
+	db $00,  5
+	db $21,  6
+	db $35,  5
+	db $24,  6
+	db $1a,  6
+	db $12, 14
+	db $00,  0
+	db $1b,  5
+	db $31,  6
+	db $02,  5
+	db $28, 13
+	db $27, 13
+	db $00,  0
+
+BattleTowerTrainer64DataTable:
+	db $41,  8
+	db $0b,  6
+	db $37,  3
+	db $08,  6
+	db $20,  4
+	db $3b, 13
+	db $15,  2
+	db $16,  6
+	db $26,  7
+	db $13, 12
+	db $33,  8
+	db $32, 13
+	db $2d,  7
+	db $00,  5
+	db $35,  3
+	db $0b,  4
+	db $28,  6
+	db $06,  5
+
+BattleTowerTrainer65DataTable:
+	db $0c,  8
+	db $2c,  4
+	db $1c, 11
+	db $06,  7
+	db $0a, 13
+	db $03,  5
+	db $30,  6
+	db $06,  7
+	db $00,  5
+	db $2c,  4
+	db $20,  6
+	db $24,  7
+	db $30,  6
+	db $0b,  7
+	db $00,  5
+	db $2c,  4
+	db $20,  6
+	db $22,  7
+
+BattleTowerTrainer66DataTable:
+	db $22, 12
+	db $22, 12
+	db $0a,  9
+	db $04, 11
+	db $02,  7
+	db $27,  6
+	db $0f, 12
+	db $0a, 10
+	db $22,  6
+	db $02,  7
+	db $27,  6
+	db $04,  5
+	db $3a,  6
+	db $0e, 10
+	db $22,  6
+	db $05,  8
+	db $02,  7
+	db $04,  5
+
+BattleTowerTrainer67DataTable:
+	db $2d, 11
+	db $02,  8
+	db $37, 13
+	db $10,  5
+	db $29,  7
+	db $03,  5
+	db $20, 14
+	db $0e, 14
+	db $0d,  6
+	db $42,  7
+	db $30,  8
+	db $28,  6
+	db $10,  5
+	db $04,  5
+	db $04,  5
+	db $10,  5
+	db $10,  5
+	db $04,  5
+
+BattleTowerTrainer68DataTable:
+	db $3f,  3
+	db $16, 14
+	db $3f,  8
+	db $0b, 13
+	db $2f,  8
+	db $41, 13
+	db $34,  5
+	db $00,  5
+	db $02,  3
+	db $3a,  6
+	db $31,  7
+	db $31, 13
+	db $21, 14
+	db $03,  5
+	db $3f,  3
+	db $16, 14
+	db $26,  7
+	db $03,  5
+
+BattleTowerTrainer69DataTable:
+	db $3a,  6
+	db $2c,  3
+	db $12,  3
+	db $17, 12
+	db $28, 11
+	db $06, 13
+	db $3a,  6
+	db $17, 12
+	db $23, 11
+	db $0d,  6
+	db $2f,  8
+	db $22, 13
+	db $14,  7
+	db $04,  5
+	db $17, 12
+	db $1c, 11
+	db $1b,  7
+	db $00,  5
+
+BattleTowerTrainer70DataTable:
+	db $1b,  2
+	db $00,  5
+	db $0c,  8
+	db $2c,  4
+	db $23, 11
+	db $32, 13
+	db $2b,  7
+	db $1f,  4
+	db $3b, 13
+	db $09,  7
+	db $09,  7
+	db $00,  5
+	db $26,  5
+	db $00,  5
+	db $3f,  3
+	db $22,  7
+	db $d1,  0
+	db $32, 13
+BattleTowerTrainerDataEnd:
--- /dev/null
+++ b/data/battle_tower/unknown_levels.asm
@@ -1,0 +1,35 @@
+Unknown_170470:
+	db $12
+	db $24
+	db $45
+	db $45
+	db $42
+	db $42
+	db $45
+	db $42
+	db $27
+	db $27
+	db $45
+	db $27
+	db $42
+	db $24
+
+Unknown_17047e:
+	db $03,  4
+	db $05,  8
+	db $03,  5
+	db $0e,  6
+	db $03,  2
+	db $00,  0
+	db $39,  7
+	db $07,  4
+	db $00,  5
+	db $04,  7
+	db $01,  5
+	db $00,  0
+	db $0f,  5
+	db $14,  7
+	db $05,  5
+	db $11, 12
+	db $0c,  6
+	db $06,  4
--- a/data/battle_tower_2.asm
+++ /dev/null
@@ -1,1404 +1,0 @@
-BattleTowerTrainerData:: ; What exactly it is, I don't know
-; Size is 70 (Nr of Trainers in BattleTower) * 0x24 (Nr of Bytes that are copied)
-; Second argument points to an entry in Unknown_170470, to which the first argument is compared.
-
-BattleTowerTrainer1DataTable:
-	db $37,  3
-	db $0e,  9
-	db $25, 11
-	db $1c, 13
-	db $12, 13
-	db $00,  5
-	db $0e,  9
-	db $1a, 11
-	db $30,  4
-	db $3f,  6
-	db $20,  4
-	db $21, 13
-	db $0e,  9
-	db $30,  4
-	db $20,  4
-	db $0b,  6
-	db $34,  3
-	db $06,  5
-
-BattleTowerTrainer2DataTable:
-	db $36,  3
-	db $ca,  0
-	db $22,  8
-	db $20,  4
-	db $33, 13
-	db $11, 13
-	db $37,  5
-	db $06,  5
-	db $3f,  6
-	db $ca,  0
-	db $20,  4
-	db $06, 13
-	db $ca,  0
-	db $21,  3
-	db $09,  6
-	db $12,  4
-	db $28, 11
-	db $0c, 13
-
-BattleTowerTrainer3DataTable:
-	db $32,  6
-	db $31,  4
-	db $02,  2
-	db $03,  4
-	db $22,  2
-	db $00,  5
-	db $40,  4
-	db $2d,  6
-	db $13, 13
-	db $18,  3
-	db $3f,  4
-	db $13, 13
-	db $1a, 12
-	db $33,  4
-	db $32, 13
-	db $09,  6
-	db $22,  2
-	db $13, 13
-
-BattleTowerTrainer4DataTable:
-	db $22, 12
-	db $22, 12
-	db $0a,  9
-	db $0b,  8
-	db $2f,  6
-	db $22,  7
-	db $22,  6
-	db $2c,  4
-	db $1a,  6
-	db $0d,  7
-	db $3f, 13
-	db $00,  5
-	db $0b,  8
-	db $09,  6
-	db $2c,  4
-	db $1f, 14
-	db $1c, 11
-	db $41, 11
-
-BattleTowerTrainer5DataTable:
-	db $a3,  0
-	db $41,  3
-	db $1f,  4
-	db $29,  0
-	db $1c,  4
-	db $03,  2
-	db $3d,  5
-	db $38,  6
-	db $71,  0
-	db $18,  3
-	db $30,  6
-	db $53,  0
-	db $1e,  5
-	db $b9,  0
-	db $21, 13
-	db $30,  6
-	db $d1,  0
-	db $0a,  6
-
-BattleTowerTrainer6DataTable:
-	db $13,  2
-	db $31,  6
-	db $04,  2
-	db $1c,  4
-	db $0d, 13
-	db $31, 13
-	db $39,  7
-	db $31,  6
-	db $24,  7
-	db $3d,  4
-	db $40,  4
-	db $30, 13
-	db $03,  6
-	db $08,  5
-	db $02,  5
-	db $14,  7
-	db $08,  5
-	db $1a, 13
-
-BattleTowerTrainer7DataTable:
-	db $0d,  2
-	db $07,  2
-	db $00,  5
-	db $22,  2
-	db $10, 11
-	db $0a, 13
-	db $16,  2
-	db $01,  2
-	db $08, 13
-	db $2c,  4
-	db $23,  7
-	db $23, 13
-	db $16,  2
-	db $01,  2
-	db $08, 13
-	db $02,  3
-	db $20,  4
-	db $23, 13
-
-BattleTowerTrainer8DataTable:
-	db $1e,  2
-	db $22,  2
-	db $00,  5
-	db $20,  8
-	db $2c,  4
-	db $03,  2
-	db $1d,  5
-	db $41,  8
-	db $41,  8
-	db $35,  5
-	db $40, 11
-	db $00,  5
-	db $0b,  5
-	db $0b,  2
-	db $00,  5
-	db $04,  4
-	db $14,  8
-	db $00,  5
-
-BattleTowerTrainer9DataTable:
-	db $06, 12
-	db $09,  6
-	db $00,  0
-	db $0b,  9
-	db $1e, 12
-	db $37, 13
-	db $41,  3
-	db $06,  4
-	db $34,  6
-	db $22, 12
-	db $15,  9
-	db $23, 13
-	db $02,  3
-	db $22,  8
-	db $41, 13
-	db $26,  4
-	db $31, 13
-	db $01,  5
-
-BattleTowerTrainer10DataTable:
-	db $22, 12
-	db $30,  4
-	db $01,  5
-	db $2c,  4
-	db $23,  7
-	db $01,  5
-	db $37,  3
-	db $3d,  4
-	db $3c, 13
-	db $1c,  3
-	db $29,  8
-	db $3c, 13
-	db $18,  4
-	db $30, 13
-	db $06,  5
-	db $14,  7
-	db $30, 13
-	db $06,  5
-
-BattleTowerTrainer11DataTable:
-	db $0e,  6
-	db $04,  5
-	db $2c,  4
-	db $1e, 12
-	db $38, 13
-	db $00,  5
-	db $3f,  3
-	db $3f,  6
-	db $20,  4
-	db $33, 13
-	db $04, 13
-	db $00,  0
-	db $20,  4
-	db $26, 13
-	db $04,  5
-	db $0c,  4
-	db $26, 13
-	db $04,  5
-
-BattleTowerTrainer12DataTable:
-	db $18,  2
-	db $33,  3
-	db $28,  4
-	db $2c,  4
-	db $09,  7
-	db $03,  5
-	db $30,  4
-	db $08,  9
-	db $00,  5
-	db $1a,  2
-	db $32,  3
-	db $00,  5
-	db $3f,  5
-	db $26,  7
-	db $01,  5
-	db $26,  5
-	db $0f,  2
-	db $00,  5
-
-BattleTowerTrainer13DataTable:
-	db $3a, 11
-	db $3a, 11
-	db $00,  5
-	db $42,  3
-	db $19,  8
-	db $30,  4
-	db $39,  3
-	db $13,  6
-	db $13,  6
-	db $19,  8
-	db $21, 13
-	db $00,  0
-	db $39,  3
-	db $09,  2
-	db $00,  5
-	db $40,  3
-	db $3a,  8
-	db $2a, 13
-
-BattleTowerTrainer14DataTable:
-	db $31,  5
-	db $11, 14
-	db $30,  4
-	db $1b,  8
-	db $07,  8
-	db $0c, 13
-	db $1b,  2
-	db $1b,  2
-	db $01,  5
-	db $15,  2
-	db $0a,  4
-	db $0e, 13
-	db $22,  5
-	db $31,  6
-	db $02,  5
-	db $1d,  6
-	db $3b,  7
-	db $0e, 13
-
-BattleTowerTrainer15DataTable:
-	db $1b,  2
-	db $2c,  4
-	db $0d, 13
-	db $34,  3
-	db $00,  3
-	db $11, 13
-	db $1b,  8
-	db $31,  4
-	db $0b, 13
-	db $2f,  8
-	db $01,  5
-	db $00,  0
-	db $06,  5
-	db $10,  5
-	db $0f,  6
-	db $11, 13
-	db $06,  5
-	db $00,  0
-
-BattleTowerTrainer16DataTable:
-	db $42,  3
-	db $30,  4
-	db $1f, 11
-	db $16, 14
-	db $10,  7
-	db $34, 13
-	db $17, 14
-	db $04, 13
-	db $00,  0
-	db $42,  3
-	db $19,  8
-	db $30,  4
-	db $0c,  5
-	db $35,  5
-	db $01,  5
-	db $1e,  6
-	db $36,  8
-	db $41, 13
-
-BattleTowerTrainer17DataTable:
-	db $18,  3
-	db $42,  3
-	db $43,  4
-	db $3a, 11
-	db $3b, 11
-	db $03,  5
-	db $2c,  5
-	db $06,  5
-	db $1b,  3
-	db $43,  4
-	db $39, 11
-	db $3c,  4
-	db $14, 11
-	db $0f,  5
-	db $06,  5
-	db $40,  3
-	db $3f,  4
-	db $20, 14
-
-BattleTowerTrainer18DataTable:
-	db $0c,  5
-	db $36,  7
-	db $30,  4
-	db $27, 11
-	db $10,  8
-	db $31, 13
-	db $11, 14
-	db $30,  4
-	db $41,  3
-	db $07, 13
-	db $2f,  8
-	db $03,  5
-	db $06,  5
-	db $3f,  6
-	db $11, 14
-	db $30,  4
-	db $30,  7
-	db $06,  5
-
-BattleTowerTrainer19DataTable:
-	db $36,  3
-	db $06,  6
-	db $44,  4
-	db $0b, 14
-	db $16, 13
-	db $00,  5
-	db $32, 13
-	db $08,  6
-	db $09, 14
-	db $44,  4
-	db $09,  8
-	db $22, 13
-	db $04, 14
-	db $09, 14
-	db $44,  4
-	db $29,  8
-	db $05, 13
-	db $00,  0
-
-BattleTowerTrainer20DataTable:
-	db $3f,  6
-	db $2c,  4
-	db $34, 13
-	db $14,  5
-	db $13,  2
-	db $04,  2
-	db $0c,  5
-	db $3f,  4
-	db $38, 13
-	db $02,  3
-	db $29,  8
-	db $32, 13
-	db $35,  5
-	db $15,  6
-	db $40,  5
-	db $02,  3
-	db $34,  7
-	db $04, 13
-
-BattleTowerTrainer21DataTable:
-	db $12,  3
-	db $02,  4
-	db $07,  7
-	db $28,  4
-	db $2c, 13
-	db $00,  5
-	db $2c,  3
-	db $12,  3
-	db $2b,  6
-	db $0a,  4
-	db $06, 13
-	db $31, 13
-	db $2c,  3
-	db $12,  3
-	db $06,  4
-	db $0d,  6
-	db $28, 11
-	db $02,  5
-
-BattleTowerTrainer22DataTable:
-	db $41,  4
-	db $3c, 11
-	db $34, 13
-	db $40,  3
-	db $00,  3
-	db $0d, 13
-	db $13, 12
-	db $33,  8
-	db $31, 13
-	db $1e,  9
-	db $27,  7
-	db $3b, 13
-	db $22,  8
-	db $15,  4
-	db $11, 13
-	db $2c,  3
-	db $0c,  4
-	db $3b, 13
-
-BattleTowerTrainer23DataTable:
-	db $03, 10
-	db $3a, 13
-	db $2c,  4
-	db $1c, 11
-	db $35,  7
-	db $26, 13
-	db $24,  9
-	db $43,  4
-	db $26, 13
-	db $0f,  3
-	db $1f,  7
-	db $04,  5
-	db $02,  3
-	db $24,  8
-	db $26, 13
-	db $3f,  3
-	db $13,  4
-	db $04,  5
-
-BattleTowerTrainer24DataTable:
-	db $06,  5
-	db $06,  5
-	db $06,  5
-	db $06,  5
-	db $2c,  4
-	db $03,  5
-	db $06,  5
-	db $06,  5
-	db $06,  5
-	db $06,  5
-	db $07,  4
-	db $03,  5
-	db $06,  5
-	db $06,  5
-	db $06,  5
-	db $06,  5
-	db $33,  4
-	db $03,  5
-
-BattleTowerTrainer25DataTable:
-	db $27,  5
-	db $01,  5
-	db $00,  0
-	db $18,  4
-	db $19, 13
-	db $01,  5
-	db $41,  5
-	db $00,  0
-	db $00,  0
-	db $16,  6
-	db $3d,  4
-	db $19, 13
-	db $20,  4
-	db $05,  5
-	db $00,  0
-	db $21,  3
-	db $0c,  4
-	db $19, 13
-
-BattleTowerTrainer26DataTable:
-	db $03,  2
-	db $43,  3
-	db $27,  4
-	db $28,  4
-	db $2d, 13
-	db $00,  5
-	db $30,  5
-	db $04,  5
-	db $02,  3
-	db $38,  6
-	db $3e,  4
-	db $41, 13
-	db $16, 14
-	db $04,  5
-	db $02,  3
-	db $38,  6
-	db $20,  4
-	db $41, 13
-
-BattleTowerTrainer27DataTable:
-	db $34,  3
-	db $00,  3
-	db $11, 13
-	db $03,  4
-	db $1c, 11
-	db $07, 13
-	db $29,  5
-	db $00,  5
-	db $00,  0
-	db $40,  4
-	db $11, 13
-	db $3e, 13
-	db $03,  6
-	db $11, 13
-	db $00,  5
-	db $16, 14
-	db $0d,  6
-	db $20,  6
-
-BattleTowerTrainer28DataTable:
-	db $19,  3
-	db $17, 11
-	db $20,  6
-	db $1b, 11
-	db $06, 12
-	db $1a, 11
-	db $34,  3
-	db $06,  4
-	db $20,  6
-	db $1b, 11
-	db $06, 12
-	db $1a, 11
-	db $34,  3
-	db $36,  4
-	db $20,  6
-	db $1b, 11
-	db $06, 12
-	db $1a, 11
-
-BattleTowerTrainer29DataTable:
-	db $0a,  3
-	db $0c, 12
-	db $25, 10
-	db $21, 14
-	db $2c,  4
-	db $03,  2
-	db $10,  9
-	db $03,  8
-	db $09,  6
-	db $0a,  3
-	db $31,  4
-	db $16, 13
-	db $27,  5
-	db $17,  7
-	db $04,  5
-	db $02, 12
-	db $0a,  9
-	db $2f, 13
-
-BattleTowerTrainer30DataTable:
-	db $15,  2
-	db $2c,  4
-	db $03,  2
-	db $24,  4
-	db $39,  4
-	db $0f, 13
-	db $1e,  2
-	db $11,  2
-	db $01,  5
-	db $0d,  4
-	db $39,  8
-	db $05, 13
-	db $29,  5
-	db $08,  2
-	db $00,  5
-	db $43,  3
-	db $0c,  4
-	db $3b, 13
-
-BattleTowerTrainer31DataTable:
-	db $10, 11
-	db $04,  4
-	db $00,  5
-	db $05,  8
-	db $21, 13
-	db $00,  0
-	db $1f,  5
-	db $01,  2
-	db $00,  5
-	db $18,  3
-	db $3c,  8
-	db $31, 13
-	db $02,  6
-	db $23, 11
-	db $31,  3
-	db $43,  3
-	db $13,  7
-	db $16, 13
-
-BattleTowerTrainer32DataTable:
-	db $0f, 14
-	db $19, 13
-	db $00,  5
-	db $0b, 14
-	db $2c,  4
-	db $19, 13
-	db $0e, 14
-	db $2c,  4
-	db $06,  5
-	db $1f,  7
-	db $19, 13
-	db $01,  5
-	db $06,  5
-	db $37,  3
-	db $29,  4
-	db $32, 13
-	db $19, 13
-	db $01,  5
-
-BattleTowerTrainer33DataTable:
-	db $35,  3
-	db $06,  4
-	db $0d,  6
-	db $29, 11
-	db $05, 13
-	db $00,  0
-	db $16, 14
-	db $30,  4
-	db $0b, 13
-	db $29,  8
-	db $16, 13
-	db $00,  5
-	db $11, 14
-	db $30,  4
-	db $30,  7
-	db $06,  5
-	db $29,  8
-	db $03,  5
-
-BattleTowerTrainer34DataTable:
-	db $18,  4
-	db $03,  5
-	db $0b, 13
-	db $2c,  4
-	db $1e, 12
-	db $01,  5
-	db $1f,  5
-	db $1d,  7
-	db $1d,  7
-	db $2c,  4
-	db $21,  7
-	db $01,  5
-	db $0a,  5
-	db $12,  2
-	db $32, 13
-	db $11, 12
-	db $0c,  6
-	db $1a, 13
-
-BattleTowerTrainer35DataTable:
-	db $0c, 12
-	db $37,  3
-	db $1a,  3
-	db $40,  4
-	db $23, 11
-	db $26, 10
-	db $3f,  6
-	db $09,  4
-	db $1b,  7
-	db $37,  3
-	db $22,  8
-	db $27,  6
-	db $04, 14
-	db $03,  5
-	db $00,  0
-	db $26, 10
-	db $3b,  8
-	db $1b,  7
-
-BattleTowerTrainer36DataTable:
-	db $18,  3
-	db $1b,  8
-	db $29, 11
-	db $40,  8
-	db $32, 13
-	db $00,  5
-	db $2f,  6
-	db $29, 11
-	db $0b, 13
-	db $2f,  8
-	db $23, 13
-	db $02, 13
-	db $35,  5
-	db $13, 14
-	db $2e,  6
-	db $22,  6
-	db $2f,  8
-	db $27,  6
-
-BattleTowerTrainer37DataTable:
-	db $1c,  3
-	db $02, 14
-	db $31,  3
-	db $2a, 13
-	db $24, 13
-	db $00,  0
-	db $18,  3
-	db $0b, 13
-	db $30,  8
-	db $40,  8
-	db $04,  5
-	db $00,  0
-	db $1c,  5
-	db $01,  5
-	db $03,  3
-	db $02, 14
-	db $27,  4
-	db $34, 13
-
-BattleTowerTrainer38DataTable:
-	db $33,  3
-	db $30,  4
-	db $2c,  4
-	db $1c, 11
-	db $35,  7
-	db $00,  5
-	db $30,  4
-	db $2c,  4
-	db $20,  6
-	db $1e,  9
-	db $40,  6
-	db $40,  4
-	db $30,  4
-	db $2c,  4
-	db $20,  6
-	db $1e,  9
-	db $40,  6
-	db $22,  7
-
-BattleTowerTrainer39DataTable:
-	db $22, 12
-	db $22, 12
-	db $16, 10
-	db $35, 13
-	db $1c, 11
-	db $3f, 13
-	db $13,  5
-	db $16, 10
-	db $40,  6
-	db $23,  7
-	db $06, 13
-	db $06,  5
-	db $3f,  6
-	db $16, 10
-	db $16, 13
-	db $37,  3
-	db $2c,  4
-	db $26,  7
-
-BattleTowerTrainer40DataTable:
-	db $0e,  6
-	db $05,  8
-	db $04, 13
-	db $00,  0
-	db $00,  0
-	db $00,  0
-	db $14,  5
-	db $06,  5
-	db $12,  2
-	db $00,  0
-	db $00,  0
-	db $00,  0
-	db $23,  5
-	db $01,  6
-	db $18, 13
-	db $00,  0
-	db $00,  0
-	db $00,  0
-
-BattleTowerTrainer41DataTable:
-	db $18,  3
-	db $27,  3
-	db $03,  5
-	db $20, 11
-	db $27,  6
-	db $06,  5
-	db $20, 14
-	db $12,  7
-	db $2b, 13
-	db $2c,  3
-	db $0e,  8
-	db $35,  7
-	db $37,  3
-	db $27,  3
-	db $03,  5
-	db $42,  7
-	db $2f,  8
-	db $06,  5
-
-BattleTowerTrainer42DataTable:
-	db $36,  3
-	db $30,  4
-	db $17,  4
-	db $2c,  3
-	db $0c,  4
-	db $3b, 13
-	db $18,  3
-	db $32,  7
-	db $15, 13
-	db $35,  5
-	db $0d,  7
-	db $07, 13
-	db $09,  5
-	db $06,  5
-	db $0f, 12
-	db $09,  4
-	db $07, 13
-	db $3b, 13
-
-BattleTowerTrainer43DataTable:
-	db $0b,  5
-	db $14,  6
-	db $24,  4
-	db $0a, 13
-	db $3c, 13
-	db $00,  5
-	db $14,  5
-	db $09,  2
-	db $32, 13
-	db $1e,  6
-	db $04,  7
-	db $06, 13
-	db $1a,  5
-	db $33,  4
-	db $03,  5
-	db $16,  2
-	db $00,  2
-	db $07,  5
-
-BattleTowerTrainer44DataTable:
-	db $0a,  3
-	db $32,  7
-	db $0b, 14
-	db $22,  6
-	db $2c,  4
-	db $29, 11
-	db $0a,  3
-	db $12, 13
-	db $24,  4
-	db $1a, 11
-	db $33, 13
-	db $03, 13
-	db $0a,  3
-	db $35,  4
-	db $1b,  7
-	db $06,  5
-	db $1e,  6
-	db $14,  7
-
-BattleTowerTrainer45DataTable:
-	db $0e,  6
-	db $2c,  4
-	db $00, 13
-	db $06,  3
-	db $31,  4
-	db $04, 13
-	db $0c,  5
-	db $12,  2
-	db $00,  5
-	db $40,  3
-	db $09,  4
-	db $01, 13
-	db $35,  5
-	db $36,  8
-	db $00,  5
-	db $02,  3
-	db $31,  4
-	db $21, 13
-
-BattleTowerTrainer46DataTable:
-	db $22,  5
-	db $07, 14
-	db $30,  4
-	db $c5,  0
-	db $10,  2
-	db $01,  5
-	db $0c, 12
-	db $00,  1
-	db $30,  4
-	db $82,  0
-	db $21,  4
-	db $01,  5
-	db $10,  1
-	db $11,  5
-	db $30,  4
-	db $c3,  0
-	db $3f,  4
-	db $06,  5
-
-BattleTowerTrainer47DataTable:
-	db $3a,  7
-	db $3b,  7
-	db $36,  3
-	db $30,  4
-	db $21,  4
-	db $06, 13
-	db $17, 14
-	db $03,  5
-	db $00,  0
-	db $3f,  6
-	db $21,  4
-	db $21, 13
-	db $36,  5
-	db $36,  3
-	db $30,  4
-	db $33,  6
-	db $3f,  4
-	db $0c, 13
-
-BattleTowerTrainer48DataTable:
-	db $43,  3
-	db $20,  4
-	db $41, 13
-	db $17,  6
-	db $06,  3
-	db $0a,  4
-	db $3a,  6
-	db $13,  4
-	db $04, 13
-	db $08,  6
-	db $3f,  4
-	db $31, 13
-	db $43,  3
-	db $39,  4
-	db $04,  5
-	db $17,  6
-	db $39,  4
-	db $41, 13
-
-BattleTowerTrainer49DataTable:
-	db $36,  3
-	db $16,  4
-	db $08,  6
-	db $09,  8
-	db $06, 13
-	db $00,  0
-	db $1f, 11
-	db $03,  5
-	db $12, 14
-	db $0f, 14
-	db $2c, 13
-	db $00,  5
-	db $3a,  6
-	db $16,  4
-	db $38,  6
-	db $38,  6
-	db $2c, 13
-	db $00,  5
-
-BattleTowerTrainer50DataTable:
-	db $11,  5
-	db $25,  3
-	db $33,  4
-	db $2f,  8
-	db $19, 13
-	db $00,  5
-	db $11,  5
-	db $25,  3
-	db $3f,  6
-	db $26,  4
-	db $19, 13
-	db $00,  5
-	db $11,  5
-	db $21,  3
-	db $35,  4
-	db $14,  7
-	db $19, 13
-	db $06,  5
-
-BattleTowerTrainer51DataTable:
-	db $2c,  4
-	db $0a, 13
-	db $04,  5
-	db $33,  3
-	db $29, 11
-	db $05, 13
-	db $00,  6
-	db $04,  5
-	db $09,  2
-	db $33,  3
-	db $07,  4
-	db $35,  7
-	db $33,  3
-	db $3a,  8
-	db $05, 13
-	db $3f,  6
-	db $29,  8
-	db $05, 13
-
-BattleTowerTrainer52DataTable:
-	db $05,  3
-	db $1b,  4
-	db $41,  3
-	db $39, 11
-	db $3a, 11
-	db $01,  5
-	db $2c,  4
-	db $03,  5
-	db $00,  0
-	db $40,  7
-	db $3e, 13
-	db $00,  5
-	db $00, 14
-	db $09,  5
-	db $04,  5
-	db $19,  9
-	db $1d, 11
-	db $03,  5
-
-BattleTowerTrainer53DataTable:
-	db $1c, 12
-	db $20,  6
-	db $05,  8
-	db $3e, 13
-	db $00,  5
-	db $00,  0
-	db $18,  3
-	db $1f, 14
-	db $11, 10
-	db $1c, 11
-	db $15, 11
-	db $1c,  6
-	db $03, 14
-	db $06, 12
-	db $21, 12
-	db $14, 13
-	db $06,  5
-	db $1f,  8
-
-BattleTowerTrainer54DataTable:
-	db $37,  3
-	db $0e,  1
-	db $08,  1
-	db $19,  6
-	db $27, 11
-	db $03,  2
-	db $0e,  1
-	db $08,  1
-	db $1b,  8
-	db $05,  8
-	db $21, 13
-	db $00,  0
-	db $36,  3
-	db $33,  4
-	db $04,  5
-	db $00,  4
-	db $41,  8
-	db $3b, 13
-
-BattleTowerTrainer55DataTable:
-	db $06,  2
-	db $00,  5
-	db $34,  3
-	db $00,  3
-	db $0d, 13
-	db $00,  5
-	db $3c,  6
-	db $05,  8
-	db $16,  4
-	db $2f,  8
-	db $33, 13
-	db $02, 13
-	db $1c,  5
-	db $00,  5
-	db $18,  3
-	db $05,  8
-	db $1b,  4
-	db $0c, 13
-
-BattleTowerTrainer56DataTable:
-	db $2c,  4
-	db $13,  9
-	db $20,  6
-	db $39,  3
-	db $20,  4
-	db $3c, 13
-	db $05,  3
-	db $43,  4
-	db $0b, 13
-	db $22,  4
-	db $06, 13
-	db $31, 13
-	db $24,  8
-	db $00,  5
-	db $02,  3
-	db $09,  8
-	db $06, 13
-	db $3b, 13
-
-BattleTowerTrainer57DataTable:
-	db $06,  3
-	db $20,  4
-	db $24, 13
-	db $24,  4
-	db $10, 11
-	db $00,  5
-	db $39,  7
-	db $00,  5
-	db $2a,  6
-	db $04,  4
-	db $3c,  4
-	db $00,  0
-	db $24,  4
-	db $1c, 11
-	db $07, 13
-	db $2f,  8
-	db $09,  6
-	db $06,  5
-
-BattleTowerTrainer58DataTable:
-	db $44,  7
-	db $23, 11
-	db $33, 13
-	db $2c,  4
-	db $20,  6
-	db $24,  8
-	db $24,  8
-	db $00,  5
-	db $0e, 14
-	db $12,  8
-	db $09, 11
-	db $28,  6
-	db $24,  8
-	db $00,  5
-	db $02,  3
-	db $13,  6
-	db $11,  8
-	db $41, 13
-
-BattleTowerTrainer59DataTable:
-	db $36,  3
-	db $06,  6
-	db $30,  4
-	db $0f, 11
-	db $02, 11
-	db $3b, 13
-	db $31, 13
-	db $00,  5
-	db $39,  3
-	db $20,  4
-	db $21, 13
-	db $00,  0
-	db $04, 14
-	db $02,  5
-	db $06,  6
-	db $20, 14
-	db $0b,  6
-	db $27,  6
-
-BattleTowerTrainer60DataTable:
-	db $14,  5
-	db $04,  2
-	db $09, 14
-	db $08,  8
-	db $2e,  8
-	db $41, 13
-	db $34,  5
-	db $2e,  8
-	db $21, 13
-	db $3f,  3
-	db $18,  8
-	db $00,  5
-	db $36,  5
-	db $05,  2
-	db $00,  5
-	db $17,  6
-	db $39,  4
-	db $00,  5
-
-BattleTowerTrainer61DataTable:
-	db $34,  3
-	db $00,  3
-	db $11, 13
-	db $41,  8
-	db $0b,  6
-	db $06,  4
-	db $39,  7
-	db $00,  5
-	db $00,  0
-	db $36,  3
-	db $30,  4
-	db $07,  8
-	db $10,  5
-	db $15,  8
-	db $00,  5
-	db $3a,  6
-	db $1e,  6
-	db $14, 13
-
-BattleTowerTrainer62DataTable:
-	db $37,  5
-	db $37,  5
-	db $00,  5
-	db $38,  5
-	db $38,  5
-	db $41,  5
-	db $25,  5
-	db $04,  5
-	db $32,  5
-	db $31,  5
-	db $41,  5
-	db $41,  5
-	db $0f,  5
-	db $04,  5
-	db $0f,  5
-	db $0f,  5
-	db $16,  5
-	db $01,  5
-
-BattleTowerTrainer63DataTable:
-	db $1f, 14
-	db $36,  4
-	db $40, 13
-	db $2f,  8
-	db $1a, 13
-	db $00,  5
-	db $21,  6
-	db $35,  5
-	db $24,  6
-	db $1a,  6
-	db $12, 14
-	db $00,  0
-	db $1b,  5
-	db $31,  6
-	db $02,  5
-	db $28, 13
-	db $27, 13
-	db $00,  0
-
-BattleTowerTrainer64DataTable:
-	db $41,  8
-	db $0b,  6
-	db $37,  3
-	db $08,  6
-	db $20,  4
-	db $3b, 13
-	db $15,  2
-	db $16,  6
-	db $26,  7
-	db $13, 12
-	db $33,  8
-	db $32, 13
-	db $2d,  7
-	db $00,  5
-	db $35,  3
-	db $0b,  4
-	db $28,  6
-	db $06,  5
-
-BattleTowerTrainer65DataTable:
-	db $0c,  8
-	db $2c,  4
-	db $1c, 11
-	db $06,  7
-	db $0a, 13
-	db $03,  5
-	db $30,  6
-	db $06,  7
-	db $00,  5
-	db $2c,  4
-	db $20,  6
-	db $24,  7
-	db $30,  6
-	db $0b,  7
-	db $00,  5
-	db $2c,  4
-	db $20,  6
-	db $22,  7
-
-BattleTowerTrainer66DataTable:
-	db $22, 12
-	db $22, 12
-	db $0a,  9
-	db $04, 11
-	db $02,  7
-	db $27,  6
-	db $0f, 12
-	db $0a, 10
-	db $22,  6
-	db $02,  7
-	db $27,  6
-	db $04,  5
-	db $3a,  6
-	db $0e, 10
-	db $22,  6
-	db $05,  8
-	db $02,  7
-	db $04,  5
-
-BattleTowerTrainer67DataTable:
-	db $2d, 11
-	db $02,  8
-	db $37, 13
-	db $10,  5
-	db $29,  7
-	db $03,  5
-	db $20, 14
-	db $0e, 14
-	db $0d,  6
-	db $42,  7
-	db $30,  8
-	db $28,  6
-	db $10,  5
-	db $04,  5
-	db $04,  5
-	db $10,  5
-	db $10,  5
-	db $04,  5
-
-BattleTowerTrainer68DataTable:
-	db $3f,  3
-	db $16, 14
-	db $3f,  8
-	db $0b, 13
-	db $2f,  8
-	db $41, 13
-	db $34,  5
-	db $00,  5
-	db $02,  3
-	db $3a,  6
-	db $31,  7
-	db $31, 13
-	db $21, 14
-	db $03,  5
-	db $3f,  3
-	db $16, 14
-	db $26,  7
-	db $03,  5
-
-BattleTowerTrainer69DataTable:
-	db $3a,  6
-	db $2c,  3
-	db $12,  3
-	db $17, 12
-	db $28, 11
-	db $06, 13
-	db $3a,  6
-	db $17, 12
-	db $23, 11
-	db $0d,  6
-	db $2f,  8
-	db $22, 13
-	db $14,  7
-	db $04,  5
-	db $17, 12
-	db $1c, 11
-	db $1b,  7
-	db $00,  5
-
-BattleTowerTrainer70DataTable:
-	db $1b,  2
-	db $00,  5
-	db $0c,  8
-	db $2c,  4
-	db $23, 11
-	db $32, 13
-	db $2b,  7
-	db $1f,  4
-	db $3b, 13
-	db $09,  7
-	db $09,  7
-	db $00,  5
-	db $26,  5
-	db $00,  5
-	db $3f,  3
-	db $22,  7
-	db $d1,  0
-	db $32, 13
-BattleTowerTrainerDataEnd:
--- /dev/null
+++ b/data/bug_contest_flags.asm
@@ -1,0 +1,13 @@
+BugCatchingContestantEventFlagTable: ; 139fe
+; there are NUM_BUG_CONTESTANTS entries
+	dw EVENT_BUG_CATCHING_CONTESTANT_1A
+	dw EVENT_BUG_CATCHING_CONTESTANT_2A
+	dw EVENT_BUG_CATCHING_CONTESTANT_3A
+	dw EVENT_BUG_CATCHING_CONTESTANT_4A
+	dw EVENT_BUG_CATCHING_CONTESTANT_5A
+	dw EVENT_BUG_CATCHING_CONTESTANT_6A
+	dw EVENT_BUG_CATCHING_CONTESTANT_7A
+	dw EVENT_BUG_CATCHING_CONTESTANT_8A
+	dw EVENT_BUG_CATCHING_CONTESTANT_9A
+	dw EVENT_BUG_CATCHING_CONTESTANT_10A
+; 13a12
--- a/data/bug_contest_winners.asm
+++ b/data/bug_contest_winners.asm
@@ -1,5 +1,6 @@
 BugContestantPointers: ; 13783
-	dw BugContestant_BugCatcherDon ; This reverts back to the player
+; there are NUM_BUG_CONTESTANTS + 1 entries
+	dw BugContestant_BugCatcherDon ; this reverts back to the player
 	dw BugContestant_BugCatcherDon
 	dw BugContestant_BugCatcherEd
 	dw BugContestant_CooltrainerMNick
@@ -11,6 +12,12 @@
 	dw BugContestant_YoungsterSamuel
 	dw BugContestant_SchoolboyKipp
 ; 13799
+
+; contestant format:
+;   db class, id
+;   dbw 1st-place mon, score
+;   dbw 2nd-place mon, score
+;   dbw 3rd-place mon, score
 
 BugContestant_BugCatcherDon:
 	db BUG_CATCHER, DON
--- /dev/null
+++ b/data/common_text/common_text.asm
@@ -1,0 +1,16 @@
+INCLUDE "constants.asm"
+
+
+SECTION "Text 1", ROMX
+
+INCLUDE "data/common_text/common_text_1.asm"
+
+
+SECTION "Text 2", ROMX
+
+INCLUDE "data/common_text/common_text_2.asm"
+
+
+SECTION "Text 3", ROMX
+
+INCLUDE "data/common_text/common_text_3.asm"
--- /dev/null
+++ b/data/common_text/common_text_1.asm
@@ -1,0 +1,1848 @@
+_FruitBearingTreeText::
+	text "It's a fruit-"
+	line "bearing tree."
+	done
+
+_HeyItsFruitText::
+	text "Hey! It's"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+_ObtainedFruitText::
+	text "Obtained"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+_FruitPackIsFullText::
+	text "But the PACK is"
+	line "full…"
+	done
+
+_NothingHereText::
+	text "There's nothing"
+	line "here…"
+	done
+
+UnknownText_0x1bc06b::
+	text "Which APRICORN"
+	line "should I use?"
+	done
+
+UnknownText_0x1bc089::
+	text "How many should I"
+	line "make?"
+	done
+
+UnknownText_0x1bc0a2::
+	text_from_ram StringBuffer1
+	text_start
+	line "recovered @"
+	deciram wd1f3, 2, 3
+	text "HP!"
+	done
+
+UnknownText_0x1bc0bb::
+	text_from_ram StringBuffer1
+	text "'s"
+	line "cured of poison."
+	done
+
+UnknownText_0x1bc0d2::
+	text_from_ram StringBuffer1
+	text "'s"
+	line "rid of paralysis."
+	done
+
+UnknownText_0x1bc0ea::
+	text_from_ram StringBuffer1
+	text "'s"
+	line "burn was healed."
+	done
+
+UnknownText_0x1bc101::
+	text_from_ram StringBuffer1
+	text_start
+	line "was defrosted."
+	done
+
+UnknownText_0x1bc115::
+	text_from_ram StringBuffer1
+	text_start
+	line "woke up."
+	done
+
+UnknownText_0x1bc123::
+	text_from_ram StringBuffer1
+	text "'s"
+	line "health returned."
+	done
+
+UnknownText_0x1bc13a::
+	text_from_ram StringBuffer1
+	text_start
+	line "is revitalized."
+	done
+
+UnknownText_0x1bc14f::
+	text_from_ram StringBuffer1
+	text " grew to"
+	line "level @"
+	deciram CurPartyLevel, 1, 3
+	text "!@"
+	sound_dex_fanfare_50_79
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1bc16e::
+	text_from_ram StringBuffer1
+	text " came"
+	line "to its senses."
+	done
+
+UnknownText_0x1bc187::
+	text "Please enter any"
+	line "four-digit number."
+	done
+
+UnknownText_0x1bc1ac::
+	text "Enter the same"
+	line "number to confirm."
+	done
+
+UnknownText_0x1bc1cf::
+	text "That's not the"
+	line "same number."
+	done
+
+UnknownText_0x1bc1eb::
+	text "Your PASSCODE has"
+	line "been set."
+
+	para "Enter this number"
+	line "next time to open"
+	cont "the CARD FOLDER."
+
+	para ""
+	done
+
+UnknownText_0x1bc23e::
+	text "0000 is invalid!"
+
+	para ""
+	done
+
+UnknownText_0x1bc251::
+	text "Enter the CARD"
+	next "FOLDER PASSCODE."
+	done
+
+UnknownText_0x1bc272::
+	text "Incorrect"
+	line "PASSCODE!"
+
+	para ""
+	done
+
+UnknownText_0x1bc288::
+	text "CARD FOLDER open.@@"
+
+UnknownText_0x1bc29c::
+	text "<……><……><……><……><……><……>"
+	line "<……><……><……><……><……><……>"
+
+	para "Zzz… Hm? Wha…?"
+	line "You woke me up!"
+
+	para "Will you check the"
+	line "clock for me?"
+	prompt
+
+UnknownText_0x1bc2eb::
+	text "What time is it?"
+	done
+
+UnknownText_0x1bc2fd::
+	text "What?@@"
+
+UnknownText_0x1bc305::
+	text "?"
+	done
+
+UnknownText_0x1bc308::
+	text "How many minutes?"
+	done
+
+UnknownText_0x1bc31b::
+	text "Whoa!@@"
+
+UnknownText_0x1bc323::
+	text "?"
+	done
+
+UnknownText_0x1bc326::
+	text "!"
+	line "I overslept!"
+	done
+
+UnknownText_0x1bc336::
+	text "!"
+	line "Yikes! I over-"
+	cont "slept!"
+	done
+
+UnknownText_0x1bc34f::
+	text "!"
+	line "No wonder it's so"
+	cont "dark!"
+	done
+
+UnknownText_0x1bc369::
+	text "What day is it?"
+	done
+
+UnknownText_0x1bc37a::
+	text ", is it?"
+	done
+
+UnknownText_0x1bc384::
+	text "There is nothing"
+	line "connected."
+	done
+
+UnknownText_0x1bc3a1::
+	text "Check cell phone"
+	line "adapter."
+	done
+
+UnknownText_0x1bc3bc::
+	text "Check CDMA"
+	line "adapter."
+	done
+
+UnknownText_0x1bc3d1::
+	text "Check DOCOMO PHS"
+	line "adapter."
+	done
+
+UnknownText_0x1bc3ec::
+	text "Check DDI PHS"
+	line "adapter."
+	done
+
+UnknownText_0x1bc404::
+	text "Check unlimited"
+	line "battle mobile"
+	cont "adapter."
+	done
+
+UnknownText_0x1bc42c::
+	text "The password is:"
+	line ""
+	done
+
+UnknownText_0x1bc43f::
+	text "Is this OK?"
+	done
+
+UnknownText_0x1bc44c::
+	text "Enter the"
+	line "ID no."
+	done
+
+UnknownText_0x1bc45e::
+	text "Enter the"
+	line "amount."
+	done
+
+UnknownText_0x1bc471::
+	text "There's nothing to"
+	line "choose."
+	prompt
+
+UnknownText_0x1bc48c::
+	text "Which side do you"
+	line "want to put it on?"
+	done
+
+UnknownText_0x1bc4b2::
+	text "Which side do you"
+	line "want to put away?"
+	done
+
+UnknownText_0x1bc4d7::
+	text "Put away the"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	prompt
+
+UnknownText_0x1bc4ec::
+	text "There's nothing to"
+	line "put away."
+	prompt
+
+UnknownText_0x1bc509::
+	text "Set up the"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	prompt
+
+UnknownText_0x1bc51c::
+	text "Put away the"
+	line "@"
+	text_from_ram StringBuffer3
+	text_start
+
+	para "and set up the"
+	line "@"
+	text_from_ram StringBuffer4
+	text "."
+	prompt
+
+UnknownText_0x1bc546::
+	text "That's already set"
+	line "up."
+	prompt
+
+UnknownText_0x1bc55d::
+	text "It's the TOWN MAP."
+	done
+
+UnknownText_0x1bc570::
+	text "It's a poster of a"
+	line "cute PIKACHU."
+	done
+
+UnknownText_0x1bc591::
+	text "It's a poster of a"
+	line "cute CLEFAIRY."
+	done
+
+UnknownText_0x1bc5b3::
+	text "It's a poster of a"
+	line "cute JIGGLYPUFF."
+	done
+
+UnknownText_0x1bc5d7::
+	text "It's an adorable"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1bc5ef::
+	text "A giant doll! It's"
+	line "fluffy and cuddly."
+	done
+
+UnknownText_0x1bc615::
+	text "Hi, <PLAYER>!"
+	line "How are you?"
+	prompt
+
+UnknownText_0x1bc62a::
+	text "I found a useful"
+	line "item shopping, so"
+	prompt
+
+UnknownText_0x1bc64e::
+	text "I bought it with"
+	line "your money. Sorry!"
+	prompt
+
+UnknownText_0x1bc673::
+	text "It's in your PC."
+	line "You'll like it!"
+	done
+
+UnknownText_0x1bc693::
+	text "While shopping"
+	line "today, I saw this"
+	cont "adorable doll, so"
+	prompt
+
+UnknownText_0x1bc6c7::
+	text "It's in your room."
+	line "You'll love it!"
+	done
+
+UnknownText_0x1bc6e9::
+	text_from_ram wPlayerTrademonSpeciesName
+	text " was"
+	line "sent to @"
+	text_from_ram wOTTrademonSenderName
+	text "."
+	done
+
+UnknownText_0x1bc701::
+	text_start
+	done
+
+UnknownText_0x1bc703::
+	text_from_ram wOTTrademonSenderName
+	text " bids"
+	line "farewell to"
+	done
+
+UnknownText_0x1bc719::
+	text_from_ram wOTTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc71f::
+	text "Take good care of"
+	line "@"
+	text_from_ram wOTTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc739::
+	text "For @"
+	text_from_ram wPlayerTrademonSenderName
+	text "'s"
+	line "@"
+	text_from_ram wPlayerTrademonSpeciesName
+	text ","
+	done
+
+UnknownText_0x1bc74c::
+	text_from_ram wOTTrademonSenderName
+	text " sends"
+	line "@"
+	text_from_ram wOTTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc75e::
+	text_from_ram wOTTrademonSenderName
+	text " will"
+	line "trade @"
+	text_from_ram wOTTrademonSpeciesName
+	db "@@"
+
+UnknownText_0x1bc774::
+	text "for @"
+	text_from_ram wPlayerTrademonSenderName
+	text "'s"
+	line "@"
+	text_from_ram wPlayerTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc787::
+	text_from_ram wPlayerTrademonSenderName
+	text " will"
+	line "trade @"
+	text_from_ram wPlayerTrademonSpeciesName
+	db "@@"
+
+UnknownText_0x1bc79d::
+	text "for @"
+	text_from_ram wOTTrademonSenderName
+	text "'s"
+	line "@"
+	text_from_ram wOTTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc7b0::
+	text_from_ram wPlayerTrademonSenderName
+	text "'s"
+	line "@"
+	text_from_ram wPlayerTrademonSpeciesName
+	text " trade…"
+	done
+
+UnknownText_0x1bc7c3::
+	text "Take good care of"
+	line "@"
+	text_from_ram wOTTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc7dd::
+	text_from_ram wPlayerTrademonSenderName
+	text "'s"
+	line "@"
+	text_from_ram wPlayerTrademonSpeciesName
+	text " trade…"
+	done
+
+UnknownText_0x1bc7f0::
+	text "Take good care of"
+	line "@"
+	text_from_ram wOTTrademonSpeciesName
+	text "."
+	done
+
+UnknownText_0x1bc80a::
+	text_from_ram wOTTrademonSpeciesName
+	text " came"
+	line "back!"
+	done
+
+; Oak's Pokémon Talk
+
+_OPT_IntroText1::
+	text_start
+	line "MARY: PROF.OAK'S"
+	done
+
+_OPT_IntroText2::
+	text_start
+	line "#MON TALK!"
+	done
+
+_OPT_IntroText3::
+	text_start
+	line "With me, MARY!"
+	done
+
+_OPT_OakText1::
+	text_start
+	line "OAK: @"
+	text_from_ram wMonOrItemNameBuffer
+	db "@@"
+
+_OPT_OakText2::
+	text_start
+	line "may be seen around"
+	done
+
+_OPT_OakText3::
+	text_start
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	done
+
+_OPT_MaryText1::
+	text_start
+	line "MARY: @"
+	text_from_ram StringBuffer1
+	text "'s"
+	done
+
+OPT_SweetAdorably::
+	text_start
+	line "sweet and adorably"
+	done
+
+OPT_WigglySlickly::
+	text_start
+	line "wiggly and slickly"
+	done
+
+OPT_AptlyNamed::
+	text_start
+	line "aptly named and"
+	done
+
+OPT_UndeniablyKindOf::
+	text_start
+	line "undeniably kind of"
+	done
+
+OPT_Unbearably::
+	text_start
+	line "so, so unbearably"
+	done
+
+OPT_WowImpressively::
+	text_start
+	line "wow, impressively"
+	done
+
+OPT_AlmostPoisonously::
+	text_start
+	line "almost poisonously"
+	done
+
+OPT_Sensually::
+	text_start
+	line "ooh, so sensually"
+	done
+
+OPT_Mischievously::
+	text_start
+	line "so mischievously"
+	done
+
+OPT_Topically::
+	text_start
+	line "so very topically"
+	done
+
+OPT_Addictively::
+	text_start
+	line "sure addictively"
+	done
+
+OPT_LooksInWater::
+	text_start
+	line "looks in water is"
+	done
+
+OPT_EvolutionMustBe::
+	text_start
+	line "evolution must be"
+	done
+
+OPT_Provocatively::
+	text_start
+	line "provocatively"
+	done
+
+OPT_FlippedOut::
+	text_start
+	line "so flipped out and"
+	done
+
+OPT_HeartMeltingly::
+	text_start
+	line "heart-meltingly"
+	done
+
+OPT_Cute::
+	text_start
+	line "cute."
+	done
+
+OPT_Weird::
+	text_start
+	line "weird."
+	done
+
+OPT_Pleasant::
+	text_start
+	line "pleasant."
+	done
+
+OPT_BoldSortOf::
+	text_start
+	line "bold, sort of."
+	done
+
+OPT_Frightening::
+	text_start
+	line "frightening."
+	done
+
+OPT_SuaveDebonair::
+	text_start
+	line "suave & debonair!"
+	done
+
+OPT_Powerful::
+	text_start
+	line "powerful."
+	done
+
+OPT_Exciting::
+	text_start
+	line "exciting."
+	done
+
+OPT_Groovy::
+	text_start
+	line "groovy!"
+	done
+
+OPT_Inspiring::
+	text_start
+	line "inspiring."
+	done
+
+OPT_Friendly::
+	text_start
+	line "friendly."
+	done
+
+OPT_HotHotHot::
+	text_start
+	line "hot, hot, hot!"
+	done
+
+OPT_Stimulating::
+	text_start
+	line "stimulating."
+	done
+
+OPT_Guarded::
+	text_start
+	line "guarded."
+	done
+
+OPT_Lovely::
+	text_start
+	line "lovely."
+	done
+
+OPT_Speedy::
+	text_start
+	line "speedy."
+	done
+
+_OPT_PokemonChannelText::
+	text "#MON"
+	done
+
+_PokedexShowText::
+	text_start
+	line "@"
+	text_from_ram StringBuffer1
+	db "@@"
+
+; Pokémon Music Channel / Pokémusic
+
+_BenIntroText1::
+	text_start
+	line "BEN: #MON MUSIC"
+	done
+
+_BenIntroText2::
+	text_start
+	line "CHANNEL!"
+	done
+
+_BenIntroText3::
+	text_start
+	line "It's me, DJ BEN!"
+	done
+
+_FernIntroText1::
+	text_start
+	line "FERN: #MUSIC!"
+	done
+
+_FernIntroText2::
+	text_start
+	line "With DJ FERN!"
+	done
+
+_BenFernText1::
+	text_start
+	line "Today's @"
+	current_day
+	text ","
+	done
+
+_BenFernText2A::
+	text_start
+	line "so let us jam to"
+	done
+
+_BenFernText2B::
+	text_start
+	line "so chill out to"
+	done
+
+_BenFernText3A::
+	text_start
+	line "#MON March!"
+	done
+
+_BenFernText3B::
+	text_start
+	line "#MON Lullaby!"
+	done
+
+; Lucky Channel
+
+_LC_Text1::
+	text_start
+	line "REED: Yeehaw! How"
+	done
+
+_LC_Text2::
+	text_start
+	line "y'all doin' now?"
+	done
+
+_LC_Text3::
+	text_start
+	line "Whether you're up"
+	done
+
+_LC_Text4::
+	text_start
+	line "or way down low,"
+	done
+
+_LC_Text5::
+	text_start
+	line "don't you miss the"
+	done
+
+_LC_Text6::
+	text_start
+	line "LUCKY NUMBER SHOW!"
+	done
+
+_LC_Text7::
+	text_start
+	line "This week's Lucky"
+	done
+
+_LC_Text8::
+	text_start
+	line "Number is @"
+	interpret_data
+	text_from_ram StringBuffer1
+	text "!"
+	done
+
+_LC_Text9::
+	text_start
+	line "I'll repeat that!"
+	done
+
+_LC_Text10::
+	text_start
+	line "Match it and go to"
+	done
+
+_LC_Text11::
+	text_start
+	line "the RADIO TOWER!"
+	done
+
+_LC_DragText1::
+	text_start
+	line "…Repeating myself"
+	done
+
+_LC_DragText2::
+	text_start
+	line "gets to be a drag…"
+	done
+
+; Places and People
+
+_PnP_Text1::
+	text_start
+	line "PLACES AND PEOPLE!"
+	done
+
+_PnP_Text2::
+	text_start
+	line "Brought to you by"
+	done
+
+_PnP_Text3::
+	text_start
+	line "me, DJ LILY!"
+	done
+
+_PnP_Text4::
+	text_start
+	line "@"
+	text_from_ram StringBuffer2
+	text " @"
+	text_from_ram StringBuffer1
+	db "@@"
+
+_PnP_cute::
+	text_start
+	line "is cute."
+	done
+
+_PnP_lazy::
+	text_start
+	line "is sort of lazy."
+	done
+
+_PnP_happy::
+	text_start
+	line "is always happy."
+	done
+
+_PnP_noisy::
+	text_start
+	line "is quite noisy."
+	done
+
+_PnP_precocious::
+	text_start
+	line "is precocious."
+	done
+
+_PnP_bold::
+	text_start
+	line "is somewhat bold."
+	done
+
+_PnP_picky::
+	text_start
+	line "is too picky!"
+	done
+
+_PnP_sortofok::
+	text_start
+	line "is sort of OK."
+	done
+
+_PnP_soso::
+	text_start
+	line "is just so-so."
+	done
+
+_PnP_great::
+	text_start
+	line "is actually great."
+	done
+
+_PnP_mytype::
+	text_start
+	line "is just my type."
+	done
+
+_PnP_cool::
+	text_start
+	line "is so cool, no?"
+	done
+
+_PnP_inspiring::
+	text_start
+	line "is inspiring!"
+	done
+
+_PnP_weird::
+	text_start
+	line "is kind of weird."
+	done
+
+_PnP_rightforme::
+	text_start
+	line "is right for me?"
+	done
+
+_PnP_odd::
+	text_start
+	line "is definitely odd!"
+	done
+
+_PnP_Text5::
+	text_start
+	line "@"
+	text_from_ram StringBuffer1
+	db "@@"
+
+_RocketRadioText1::
+	text_start
+	line "… …Ahem, we are"
+	done
+
+_RocketRadioText2::
+	text_start
+	line "TEAM ROCKET!"
+	done
+
+_RocketRadioText3::
+	text_start
+	line "After three years"
+	done
+
+_RocketRadioText4::
+	text_start
+	line "of preparation, we"
+	done
+
+_RocketRadioText5::
+	text_start
+	line "have risen again"
+	done
+
+_RocketRadioText6::
+	text_start
+	line "from the ashes!"
+	done
+
+_RocketRadioText7::
+	text_start
+	line "GIOVANNI! @"
+	interpret_data
+	text "Can you"
+	done
+
+_RocketRadioText8::
+	text_start
+	line "hear?@"
+	interpret_data
+	text " We did it!"
+	done
+
+_RocketRadioText9::
+	text_start
+	line "@"
+	interpret_data
+	text "Where is our boss?"
+	done
+
+_RocketRadioText10::
+	text_start
+	line "@"
+	interpret_data
+	text "Is he listening?"
+	done
+
+_BuenaRadioText1::
+	text_start
+	line "BUENA: BUENA here!"
+	done
+
+_BuenaRadioText2::
+	text_start
+	line "Today's password!"
+	done
+
+_BuenaRadioText3::
+	text_start
+	line "Let me think… It's"
+	done
+
+_BuenaRadioText4::
+	text_start
+	line "@"
+	text_from_ram StringBuffer1
+	text "!"
+	done
+
+_BuenaRadioText5::
+	text_start
+	line "Don't forget it!"
+	done
+
+_BuenaRadioText6::
+	text_start
+	line "I'm in GOLDENROD's"
+	done
+
+_BuenaRadioText7::
+	text_start
+	line "RADIO TOWER!"
+	done
+
+_BuenaRadioMidnightText1::
+	text_start
+	line "BUENA: Oh my…"
+	done
+
+_BuenaRadioMidnightText2::
+	text_start
+	line "It's midnight! I"
+	done
+
+_BuenaRadioMidnightText3::
+	text_start
+	line "have to shut down!"
+	done
+
+_BuenaRadioMidnightText4::
+	text_start
+	line "Thanks for tuning"
+	done
+
+_BuenaRadioMidnightText5::
+	text_start
+	line "in to the end! But"
+	done
+
+_BuenaRadioMidnightText6::
+	text_start
+	line "don't stay up too"
+	done
+
+_BuenaRadioMidnightText7::
+	text_start
+	line "late! Presented to"
+	done
+
+_BuenaRadioMidnightText8::
+	text_start
+	line "you by DJ BUENA!"
+	done
+
+_BuenaRadioMidnightText9::
+	text "I'm outta here!"
+	done
+
+_BuenaRadioMidnightText10::
+	text "…"
+	done
+
+_BuenaOffTheAirText::
+	text_start
+	line ""
+	done
+
+Text_EnemyWithdrew::
+	text "<ENEMY>"
+	line "withdrew"
+	cont "@"
+	text_from_ram EnemyMonNick
+	text "!"
+	prompt
+
+Text_EnemyUsedOn::
+	text "<ENEMY>"
+	line "used @"
+	text_from_ram wMonOrItemNameBuffer
+	text_start
+	cont "on @"
+	text_from_ram EnemyMonNick
+	text "!"
+	prompt
+
+Text_ThatCantBeUsedRightNow::
+	text "That can't be used"
+	line "right now."
+	prompt
+
+Text_ThatItemCantBePutInThePack::
+	text "That item can't be"
+	line "put in the PACK."
+	done
+
+Text_TheItemWasPutInThePack::
+	text "The @"
+	text_from_ram StringBuffer1
+	text_start
+	line "was put in the"
+	cont "PACK."
+	done
+
+Text_RemainingTime::
+	text "Remaining Time"
+	done
+
+Text_YourPkmnsHPWasHealed::
+	text "Your #MON's HP"
+	line "was healed."
+	prompt
+
+Text_Warping::
+	text "Warping…"
+	done
+
+UnknownText_0x1bd05e::
+	text "Which number"
+	line "should be changed?"
+	done
+
+UnknownText_0x1bd07f::
+	text "Will you play with"
+	line "@"
+	text_from_ram StringBuffer2
+	text "?"
+	done
+
+UnknownText_0x1bd09a::
+	text "You need two #-"
+	line "MON for breeding."
+	prompt
+
+Text_BreedingIsNotPossible::
+	text "Breeding is not"
+	line "possible."
+	prompt
+
+UnknownText_0x1bd0d8::
+	text "The compatibility"
+	line "is @"
+	deciram wd265, 1, 3
+	text "."
+	cont "Should they breed?"
+	done
+
+UnknownText_0x1bd109::
+	text "There is no EGG."
+	line ""
+	prompt
+
+UnknownText_0x1bd11c::
+	text "It's going to"
+	line "hatch!"
+	prompt
+
+UnknownText_0x1bd131::
+	text "Test event"
+	line "@"
+	deciram StringBuffer2, 1, 2
+	text "?"
+	done
+
+UnknownText_0x1bd145::
+	text "Start!"
+	done
+
+UnknownText_0x1bd14d::
+	text "End!"
+	done
+
+UnknownText_0x1bd153::
+	text "For a boy!"
+	done
+
+UnknownText_0x1bd15f::
+	text "For a girl!"
+	done
+
+UnknownText_0x1bd16c::
+	text "This doesn't"
+	line "concern a boy!"
+	done
+
+UnknownText_0x1bd188::
+	text "The BOX is full!"
+	done
+
+UnknownText_0x1bd19a::
+	text "A new CARD arrived"
+	line "from @"
+	text_from_ram StringBuffer2
+	text "."
+	done
+
+UnknownText_0x1bd1ba::
+	text "Put this CARD in"
+	line "the CARD FOLDER?"
+	done
+
+UnknownText_0x1bd1dd::
+	text_from_ram StringBuffer2
+	text "'s CARD was"
+	line "listed as no.@"
+	deciram StringBuffer1, 1, 2
+	text "."
+	prompt
+
+UnknownText_0x1bd201::
+	text "Starting link."
+	done
+
+UnknownText_0x1bd211::
+	text "Link terminated."
+	done
+
+UnknownText_0x1bd223::
+	text "Closing link."
+	done
+
+UnknownText_0x1bd232::
+	text "Clear the time"
+	line "limit?"
+	done
+
+UnknownText_0x1bd249::
+	text "The time limit was"
+	line "cleared."
+	done
+
+UnknownText_0x1bd266::
+	text "Pick which packet"
+	line "as an error?"
+	done
+
+UnknownText_0x1bd286::
+	text "Trading @"
+	text_from_ram StringBuffer2
+	text_start
+	line "for @"
+	text_from_ram StringBuffer1
+	text "…"
+	done
+
+UnknownText_0x1bd2a0::
+	text "Obtained the"
+	line "VOLTORBBADGE!"
+	done
+
+UnknownText_0x1bd2bc::
+	text "Which floor?"
+	done
+
+UnknownText_0x1bd2ca::
+	text "ANNOUNCER: BEEEP!"
+
+	para "Time's up!"
+	done
+
+UnknownText_0x1bd2e7::
+	text "ANNOUNCER: The"
+	line "Contest is over!"
+	done
+
+UnknownText_0x1bd308::
+	text "REPEL's effect"
+	line "wore off."
+	done
+
+UnknownText_0x1bd321::
+	text "<PLAYER> found"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1bd331::
+	text "But <PLAYER> has"
+	line "no space left…"
+	done
+
+UnknownText_0x1bd34b::
+	text "I just saw some"
+	line "rare @"
+	text_from_ram StringBuffer1
+	text " in"
+	cont "@"
+	text_from_ram StringBuffer2
+	text "."
+
+	para "I'll call you if I"
+	line "see another rare"
+	cont "#MON, OK?"
+	prompt
+
+UnknownText_0x1bd39e::
+	text "SAVING RECORD…"
+	line "DON'T TURN OFF!"
+	done
+
+UnknownText_0x1bd3be::
+	text_from_ram PlayerName
+	text " received"
+	line "@"
+	text_from_ram StringBuffer1
+	text "!@"
+	sound_item
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1bd3d7::
+	text "You have no coins."
+	prompt
+
+UnknownText_0x1bd3eb::
+	text "You don't have a"
+	line "COIN CASE."
+	prompt
+
+UnknownText_0x1bd407::
+	text "OK, connect the"
+	line "Game Link Cable."
+	prompt
+
+UnknownText_0x1bd429::
+	text "<PLAYER> traded"
+	line "@"
+	text_from_ram wMonOrItemNameBuffer
+	text " for"
+	cont "@"
+	text_from_ram StringBuffer2
+	text ".@@"
+
+UnknownText_0x1bd445::
+	sound_dex_fanfare_80_109
+	interpret_data
+	db "@@"
+
+UnknownText_0x1bd449::
+	text "I collect #MON."
+	line "Do you have"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "?"
+
+	para "Want to trade it"
+	line "for my @"
+	text_from_ram StringBuffer2
+	text "?"
+	done
+
+UnknownText_0x1bd48c::
+	text "You don't want to"
+	line "trade? Aww…"
+	done
+
+UnknownText_0x1bd4aa::
+	text "Huh? That's not"
+	line "@"
+	text_from_ram StringBuffer1
+	text ". "
+	cont "What a letdown…"
+	done
+
+UnknownText_0x1bd4d2::
+	text "Yay! I got myself"
+	line "@"
+	text_from_ram StringBuffer1
+	text "!"
+	cont "Thanks!"
+	done
+
+UnknownText_0x1bd4f4::
+	text "Hi, how's my old"
+	line "@"
+	text_from_ram StringBuffer2
+	text " doing?"
+	done
+
+UnknownText_0x1bd512::
+	text "Hi, I'm looking"
+	line "for this #MON."
+
+	para "If you have"
+	line "@"
+	text_from_ram StringBuffer1
+	text ", would"
+
+	para "you trade it for"
+	line "my @"
+	text_from_ram StringBuffer2
+	text "?"
+	done
+
+UnknownText_0x1bd565::
+	text "You don't have"
+	line "one either?"
+
+	para "Gee, that's really"
+	line "disappointing…"
+	done
+
+UnknownText_0x1bd5a1::
+	text "You don't have"
+	line "@"
+	text_from_ram StringBuffer1
+	text "? That's"
+	cont "too bad, then."
+	done
+
+UnknownText_0x1bd5cc::
+	text "Great! Thank you!"
+
+	para "I finally got"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	done
+
+UnknownText_0x1bd5f4::
+	text "Hi! The @"
+	text_from_ram wMonOrItemNameBuffer
+	text_start
+	line "you traded me is"
+	cont "doing great!"
+	done
+
+UnknownText_0x1bd621::
+	text_from_ram wMonOrItemNameBuffer
+	text "'s cute,"
+	line "but I don't have"
+
+	para "it. Do you have"
+	line "@"
+	text_from_ram StringBuffer1
+	text "?"
+
+	para "Want to trade it"
+	line "for my @"
+	text_from_ram StringBuffer2
+	text "?"
+	done
+
+UnknownText_0x1bd673::
+	text "You don't want to"
+	line "trade? Oh, darn…"
+	done
+
+UnknownText_0x1bd696::
+	text "That's not"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+
+	para "Please trade with"
+	line "me if you get one."
+	done
+
+UnknownText_0x1bd6cd::
+	text "Wow! Thank you!"
+	line "I always wanted"
+	cont "@"
+	text_from_ram wMonOrItemNameBuffer
+	text "!"
+	done
+
+UnknownText_0x1bd6f5::
+	text "How is that"
+	line "@"
+	text_from_ram StringBuffer2
+	text " I"
+	cont "traded you doing?"
+
+	para "Your @"
+	text_from_ram wMonOrItemNameBuffer
+	text "'s"
+	line "so cute!"
+	done
+
+UnknownText_0x1bd731::
+	text "Uh? What happened?"
+	done
+
+UnknownText_0x1bd745::
+	text "Trading is so odd…"
+
+	para "I still have a lot"
+	line "to learn about it."
+	done
+
+UnknownText_0x1bd77f::
+	text "Wow, that's a cute"
+	line "#MON."
+
+	para "Where did you get"
+	line "it?"
+
+	para "…"
+
+	para "So, you're leaving"
+	line "on an adventure…"
+
+	para "OK!"
+	line "I'll help too."
+
+	para "But what can I do"
+	line "for you?"
+
+	para "I know! I'll save"
+	line "money for you."
+
+	para "On a long journey,"
+	line "money's important."
+
+	para "Do you want me to"
+	line "save your money?"
+	done
+
+UnknownText_0x1bd868::
+	text "OK, I'll take care"
+	line "of your money."
+
+	para "<……><……><……>"
+	prompt
+
+UnknownText_0x1bd88e::
+	text "Be careful."
+
+	para "#MON are your"
+	line "friends. You need"
+	cont "to work as a team."
+
+	para "Now, go on!"
+	done
+
+UnknownText_0x1bd8da::
+	text "Hi! Welcome home!"
+	line "You're trying very"
+	cont "hard, I see."
+
+	para "I've kept your"
+	line "room tidy."
+
+	para "Or is this about"
+	line "your money?"
+	done
+
+UnknownText_0x1bd942::
+	text "What do you want"
+	line "to do?"
+	done
+
+UnknownText_0x1bd95b::
+	text "How much do you"
+	line "want to save?"
+	done
+
+UnknownText_0x1bd97a::
+	text "How much do you"
+	line "want to take?"
+	done
+
+UnknownText_0x1bd999::
+	text "Do you want to"
+	line "save some money?"
+	done
+
+UnknownText_0x1bd9ba::
+	text "You haven't saved"
+	line "that much."
+	prompt
+
+UnknownText_0x1bd9d7::
+	text "You can't take"
+	line "that much."
+	prompt
+
+UnknownText_0x1bd9f1::
+	text "You don't have"
+	line "that much."
+	prompt
+
+UnknownText_0x1bda0b::
+	text "You can't save"
+	line "that much."
+	prompt
+
+UnknownText_0x1bda25::
+	text "OK, I'll save your"
+	line "money. Trust me!"
+
+	para "<PLAYER>, stick"
+	line "with it!"
+	done
+
+UnknownText_0x1bda5b::
+	text "Your money's safe"
+	line "here! Get going!"
+	done
+
+UnknownText_0x1bda7e::
+	text "<PLAYER>, don't"
+	line "give up!"
+	done
+
+UnknownText_0x1bda90::
+	text "Just do what"
+	line "you can."
+	done
+
+UnknownText_0x1bdaa7::
+	text_start
+	done
+
+UnknownText_0x1bdaa9::
+	text "I'm the DAY-CARE"
+	line "MAN. Want me to"
+	cont "raise a #MON?"
+	done
+
+UnknownText_0x1bdad8::
+	text "I'm the DAY-CARE"
+	line "MAN. Do you know"
+	cont "about EGGS?"
+
+	para "I was raising"
+	line "#MON with my"
+	cont "wife, you see."
+
+	para "We were shocked to"
+	line "find an EGG!"
+
+	para "How incredible is"
+	line "that?"
+
+	para "So, want me to"
+	line "raise a #MON?"
+	done
+
+UnknownText_0x1bdb85::
+	text "I'm the DAY-CARE"
+	line "LADY."
+
+	para "Should I raise a"
+	line "#MON for you?"
+	done
+
+UnknownText_0x1bdbbb::
+	text "I'm the DAY-CARE"
+	line "LADY. Do you know"
+	cont "about EGGS?"
+
+	para "My husband and I"
+	line "were raising some"
+	cont "#MON, you see."
+
+	para "We were shocked to"
+	line "find an EGG!"
+
+	para "How incredible"
+	line "could that be?"
+
+	para "Should I raise a"
+	line "#MON for you?"
+	done
+
+UnknownText_0x1bdc79::
+	text "What should I"
+	line "raise for you?"
+	prompt
+
+UnknownText_0x1bdc97::
+	text "Oh? But you have"
+	line "just one #MON."
+	prompt
+
+UnknownText_0x1bdcb8::
+	text "Sorry, but I can't"
+	line "accept an EGG."
+	prompt
+
+UnknownText_0x1bdcda::
+	text "Remove MAIL before"
+	line "you come see me."
+	prompt
+
+UnknownText_0x1bdcff::
+	text "If you give me"
+	line "that, what will"
+	cont "you battle with?"
+	prompt
+
+UnknownText_0x1bdd30::
+	text "OK. I'll raise"
+	line "your @"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1bdd4b::
+	text "Come back for it"
+	line "later."
+	done
+
+UnknownText_0x1bdd64::
+	text "Are we geniuses or"
+	line "what? Want to see"
+	cont "your @"
+	text_from_ram StringBuffer1
+	text "?"
+	done
+
+UnknownText_0x1bdd96::
+	text "Your @"
+	text_from_ram StringBuffer1
+	text_start
+	line "has grown a lot."
+
+	para "By level, it's"
+	line "grown by @"
+	deciram StringBuffer2 + 1, 1, 3
+	text "."
+
+	para "If you want your"
+	line "#MON back, it"
+	cont "will cost ¥@"
+	deciram StringBuffer2 + 2, 3, 4
+	text "."
+	done
+
+UnknownText_0x1bde04::
+	text "Perfect! Here's"
+	line "your #MON."
+	prompt
+
+UnknownText_0x1bde1f::
+	text "<PLAYER> got back"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1bde32::
+	text "Huh? Back already?"
+	line "Your @"
+	text_from_ram StringBuffer1
+	text_start
+	para "needs a little"
+	line "more time with us."
+
+	para "If you want your"
+	line "#MON back, it"
+	cont "will cost ¥100."
+	done
+
+UnknownText_0x1bdea2::
+	text "You have no room"
+	line "for it."
+	prompt
+
+UnknownText_0x1bdebc::
+	text "You don't have"
+	line "enough money."
+	prompt
+
+UnknownText_0x1bded9::
+	text "Oh, fine then."
+	prompt
+
+UnknownText_0x1bdee9::
+	text "Come again."
+	done
+
+UnknownText_0x1bdef6::
+	text "Not yet…"
+	done
+
+UnknownText_0x1bdf00::
+	text "Ah, it's you!"
+
+	para "We were raising"
+	line "your #MON, and"
+
+	para "my goodness, were"
+	line "we surprised!"
+
+	para "Your #MON had"
+	line "an EGG!"
+
+	para "We don't know how"
+	line "it got there, but"
+
+	para "your #MON had"
+	line "it. You want it?"
+	done
+
+UnknownText_0x1bdfa5::
+	text "<PLAYER> received"
+	line "the EGG!"
+	done
+
+UnknownText_0x1bdfba::
+	text "Take good care of"
+	line "it."
+	done
+
+UnknownText_0x1bdfd1::
+	text "Well then, I'll"
+	line "keep it. Thanks!"
+	done
+
+UnknownText_0x1bdff2::
+	text "You have no room"
+	line "in your party."
+	cont "Come back later."
+	done
+
+UnknownText_0x1be024::
+	text "Which #MON"
+	line "should I photo-"
+	cont "graph?"
+	prompt
+
+UnknownText_0x1be047::
+	text "All righty. Hold"
+	line "still for a bit."
+	prompt
+
+UnknownText_0x1be06a::
+	text "Presto! All done."
+	line "Come again, OK?"
+	done
--- /dev/null
+++ b/data/common_text/common_text_2.asm
@@ -1,0 +1,1540 @@
+UnknownText_0x1c0000::
+	text "Oh, no picture?"
+	line "Come again, OK?"
+	done
+
+UnknownText_0x1c0021::
+	text "An EGG? My talent"
+	line "is worth more…"
+	done
+
+UnknownText_0x1c0043::
+	text "Hello, hello! I'm"
+	line "the NAME RATER."
+
+	para "I rate the names"
+	line "of #MON."
+
+	para "Would you like me"
+	line "to rate names?"
+	done
+
+UnknownText_0x1c00a0::
+	text "Which #MON's"
+	line "nickname should I"
+	cont "rate for you?"
+	prompt
+
+UnknownText_0x1c00cd::
+	text "Hm… @"
+	text_from_ram StringBuffer1
+	text "…"
+	line "That's a fairly"
+	cont "decent name."
+
+	para "But, how about a"
+	line "slightly better"
+	cont "nickname?"
+
+	para "Want me to give it"
+	line "a better name?"
+	done
+
+UnknownText_0x1c0142::
+	text "All right. What"
+	line "name should we"
+	cont "give it, then?"
+	prompt
+
+UnknownText_0x1c0171::
+	text "That's a better"
+	line "name than before!"
+
+	para "Well done!"
+	done
+
+UnknownText_0x1c019e::
+	text "OK, then. Come"
+	line "again sometime."
+	done
+
+UnknownText_0x1c01be::
+	text "Hm… @"
+	text_from_ram StringBuffer1
+	text "?"
+	line "What a great name!"
+	cont "It's perfect."
+
+	para "Treat @"
+	text_from_ram StringBuffer1
+	text_start
+	line "with loving care."
+	done
+
+UnknownText_0x1c0208::
+	text "Whoa… That's just"
+	line "an EGG."
+	done
+
+UnknownText_0x1c0222::
+	text "It might look the"
+	line "same as before,"
+
+	para "but this new name"
+	line "is much better!"
+
+	para "Well done!"
+	done
+
+UnknownText_0x1c0272::
+	text "All right. This"
+	line "#MON is now"
+	cont "named @"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+Text_Gained::
+	text_from_ram StringBuffer1
+	text " gained@@"
+
+Text_ABoostedStringBuffer2ExpPoints::
+	text_start
+	line "a boosted"
+	cont "@"
+	deciram StringBuffer2, 2, 4
+	text " EXP. Points!"
+	prompt
+
+Text_StringBuffer2ExpPoints::
+	text_start
+	line "@"
+	deciram StringBuffer2, 2, 4
+	text " EXP. Points!"
+	prompt
+
+Text_GoPkmn::
+	text "Go! @@"
+
+Text_DoItPkmn::
+	text "Do it! @@"
+
+Text_GoForItPkmn::
+	text "Go for it,"
+	line "@@"
+
+Text_YourFoesWeakGetmPkmn::
+	text "Your foe's weak!"
+	line "Get'm, @@"
+
+Text_BattleMonNick01::
+	text_from_ram BattleMonNick
+	text "!"
+	done
+
+Text_BattleMonNickComma::
+	text_from_ram BattleMonNick
+	text ",@@"
+
+Text_ThatsEnoughComeBack::
+	text " that's"
+	line "enough! Come back!@@"
+
+Text_OKComeBack::
+	text " OK!"
+	line "Come back!@@"
+
+Text_GoodComeBack::
+	text " good!"
+	line "Come back!@@"
+
+Text_ComeBack::
+	text " come"
+	line "back!"
+	done
+
+UnknownText_0x1c0373::
+	text "Booted up a TM."
+	prompt
+
+UnknownText_0x1c0384::
+	text "Booted up an HM."
+	prompt
+
+UnknownText_0x1c0396::
+	text "It contained"
+	line "@"
+	text_from_ram StringBuffer2
+	text "."
+
+	para "Teach @"
+	text_from_ram StringBuffer2
+	text_start
+	line "to a #MON?"
+	done
+
+UnknownText_0x1c03c2::
+	text_from_ram StringBuffer2
+	text " is"
+	line "not compatible"
+	cont "with @"
+	text_from_ram StringBuffer1
+	text "."
+
+	para "It can't learn"
+	line "@"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c03fa::
+	text "You have no room"
+	line "for any more"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "S."
+	prompt
+
+UnknownText_0x1c0421::
+	text "You received"
+	line "@"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+
+UnknownText_0x1c0436::
+	text "The link has been"
+	line "cancelled."
+	prompt
+
+UnknownText_0x1c0454::
+	text "Communication"
+	line "error."
+	prompt
+
+UnknownText_0x1c046a::
+	text "Must retrieve GIFT"
+	line "at #MON CENTER."
+	prompt
+
+UnknownText_0x1c048e::
+	text "Your friend isn't"
+	line "ready."
+	prompt
+
+UnknownText_0x1c04a7::
+	text "Sorry--only five"
+	line "GIFTS a day."
+	prompt
+
+UnknownText_0x1c04c6::
+	text "Sorry. One GIFT"
+	line "a day per person."
+	prompt
+
+UnknownText_0x1c04e9::
+	text_from_ram wMysteryGiftPartnerName
+	text " sent"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1c04fa::
+	text_from_ram wMysteryGiftPartnerName
+	text " sent"
+	line "@"
+	text_from_ram StringBuffer1
+	text_start
+	cont "to @"
+	text_from_ram wMysteryGiftPlayerName
+	text "'s home."
+	prompt
+
+UnknownText_0x1c051a::
+	text "Received"
+	line "@"
+	text_from_ram wc850
+	text "'s CARD."
+	prompt
+
+UnknownText_0x1c0531::
+	text_from_ram wc850
+	text "'s CARD was"
+	line "listed as no.@"
+	deciram wd265, 1, 2
+	text "."
+	prompt
+
+UnknownText_0x1c0555::
+	text "The CARD was not"
+	line "registered."
+	prompt
+
+UnknownText_0x1c0573::
+	text "The link has been"
+	line "cancelled."
+	prompt
+
+UnknownText_0x1c0591::
+	text "Communication"
+	line "error."
+	prompt
+
+_BadgeRequiredText::
+	text "Sorry! A new BADGE"
+	line "is required."
+	prompt
+
+UnknownText_0x1c05c8::
+	text "Can't use that"
+	line "here."
+	prompt
+
+UnknownText_0x1c05dd::
+	text_from_ram StringBuffer2
+	text " used"
+	line "CUT!"
+	prompt
+
+UnknownText_0x1c05ec::
+	text "There's nothing to"
+	line "CUT here."
+	prompt
+
+UnknownText_0x1c0609::
+	text "A blinding FLASH"
+	line "lights the area!@"
+	text_waitbutton
+	db "@@"
+
+_UsedSurfText::
+	text_from_ram StringBuffer2
+	text " used"
+	line "SURF!"
+	done
+
+_CantSurfText::
+	text "You can't SURF"
+	line "here."
+	prompt
+
+_AlreadySurfingText::
+	text "You're already"
+	line "SURFING."
+	prompt
+
+_AskSurfText::
+	text "The water is calm."
+	line "Want to SURF?"
+	done
+
+UnknownText_0x1c068e::
+	text_from_ram StringBuffer2
+	text " used"
+	line "WATERFALL!"
+	done
+
+UnknownText_0x1c06a3::
+	text "Wow, it's a huge"
+	line "waterfall."
+	done
+
+UnknownText_0x1c06bf::
+	text "Do you want to use"
+	line "WATERFALL?"
+	done
+
+UnknownText_0x1c06de::
+	text_from_ram StringBuffer2
+	text " used"
+	line "DIG!"
+	done
+
+UnknownText_0x1c06ed::
+	text "<PLAYER> used an"
+	line "ESCAPE ROPE."
+	done
+
+UnknownText_0x1c0705::
+	text "Can't use that"
+	line "here."
+	done
+
+UnknownText_0x1c071a::
+	text "Return to the last"
+	line "#MON CENTER."
+	done
+
+UnknownText_0x1c073b::
+	text "Can't use that"
+	line "here."
+
+	para ""
+	done
+
+UnknownText_0x1c0751::
+	text "A #MON is using"
+	line "STRENGTH already."
+	prompt
+
+UnknownText_0x1c0774::
+	text_from_ram StringBuffer2
+	text " used"
+	line "STRENGTH!"
+	done
+
+UnknownText_0x1c0788::
+	text_from_ram StringBuffer1
+	text " can"
+	line "move boulders."
+	prompt
+
+UnknownText_0x1c07a0::
+	text "A #MON may be"
+	line "able to move this."
+
+	para "Want to use"
+	line "STRENGTH?"
+	done
+
+UnknownText_0x1c07d8::
+	text "Boulders may now"
+	line "be moved!"
+	done
+
+UnknownText_0x1c07f4::
+	text "A #MON may be"
+	line "able to move this."
+	done
+
+UnknownText_0x1c0816::
+	text_from_ram StringBuffer2
+	text " used"
+	line "WHIRLPOOL!"
+	prompt
+
+UnknownText_0x1c082b::
+	text "It's a vicious"
+	line "whirlpool!"
+
+	para "A #MON may be"
+	line "able to pass it."
+	done
+
+UnknownText_0x1c0864::
+	text "A whirlpool is in"
+	line "the way."
+
+	para "Want to use"
+	line "WHIRLPOOL?"
+	done
+
+UnknownText_0x1c0897::
+	text_from_ram StringBuffer2
+	text " did a"
+	line "HEADBUTT!"
+	prompt
+
+UnknownText_0x1c08ac::
+	text "Nope. Nothing…"
+	done
+
+UnknownText_0x1c08bc::
+	text "A #MON could be"
+	line "in this tree."
+
+	para "Want to HEADBUTT"
+	line "it?"
+	done
+
+UnknownText_0x1c08f0::
+	text_from_ram StringBuffer2
+	text " used"
+	line "ROCK SMASH!"
+	prompt
+
+UnknownText_0x1c0906::
+	text "Maybe a #MON"
+	line "can break this."
+	done
+
+UnknownText_0x1c0924::
+	text "This rock looks"
+	line "breakable."
+
+	para "Want to use ROCK"
+	line "SMASH?"
+	done
+
+UnknownText_0x1c0958::
+	text "Oh!"
+	line "A bite!"
+	prompt
+
+UnknownText_0x1c0965::
+	text "Not even a nibble!"
+	prompt
+
+UnknownText_0x1c0979::
+	text "Looks like there's"
+	line "nothing here."
+	prompt
+
+UnknownText_0x1c099a::
+	text "You can't get off"
+	line "here!"
+	done
+
+UnknownText_0x1c09b2::
+	text "<PLAYER> got on the"
+	line "@"
+	text_from_ram StringBuffer2
+	text "."
+	done
+
+UnknownText_0x1c09c7::
+	text "<PLAYER> got off"
+	line "the @"
+	text_from_ram StringBuffer2
+	text "."
+	done
+
+UnknownText_0x1c09dd::
+	text "This tree can be"
+	line "CUT!"
+
+	para "Want to use CUT?"
+	done
+
+UnknownText_0x1c0a05::
+	text "This tree can be"
+	line "CUT!"
+	done
+
+UnknownText_0x1c0a1c::
+	text "<PLAYER> found"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1c0a2c::
+	text "But <PLAYER> can't"
+	line "carry any more"
+	cont "items."
+	done
+
+UnknownText_0x1c0a4e::
+	text "<PLAYER> is out of"
+	line "useable #MON!"
+
+	para "<PLAYER> whited"
+	line "out!"
+	done
+
+UnknownText_0x1c0a77::
+	text "Yes! ITEMFINDER"
+	line "indicates there's"
+	cont "an item nearby."
+	prompt
+
+UnknownText_0x1c0aa9::
+	text "Nope! ITEMFINDER"
+	line "isn't responding."
+	prompt
+
+UnknownText_0x1c0acc::
+	text_from_ram StringBuffer3
+	text_start
+	line "fainted!"
+	prompt
+
+UnknownText_0x1c0ada::
+	text "<PLAYER> is out of"
+	line "useable #MON!"
+
+	para "<PLAYER> whited"
+	line "out!"
+	prompt
+
+UnknownText_0x1c0b03::
+	text_from_ram StringBuffer3
+	text " used"
+	line "SWEET SCENT!"
+	done
+
+UnknownText_0x1c0b1a::
+	text "Looks like there's"
+	line "nothing here…"
+	done
+
+UnknownText_0x1c0b3b::
+	text "<PLAYER> sprinkled"
+	line "water."
+
+	para "But nothing"
+	line "happened…"
+	done
+
+UnknownText_0x1c0b65::
+	text "<PLAYER>'s #MON"
+	line "were all healed!"
+	done
+
+Text_AnEGGCantHoldAnItem::
+	text "An EGG can't hold"
+	line "an item."
+	prompt
+
+UnknownText_0x1c0b9a::
+	text "No items."
+	done
+
+UnknownText_0x1c0ba5::
+	text "Throw away how"
+	line "many?"
+	done
+
+UnknownText_0x1c0bbb::
+	text "Throw away @"
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text_start
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)?"
+	done
+
+UnknownText_0x1c0bd8::
+	text "Threw away"
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)."
+	prompt
+
+UnknownText_0x1c0bee::
+	text "OAK: <PLAYER>!"
+	line "This isn't the"
+	cont "time to use that!"
+	prompt
+
+Text_YouDontHaveAPkmn::
+	text "You don't have a"
+	line "#MON!"
+	prompt
+
+UnknownText_0x1c0c2e::
+	text "Registered the"
+	line "@"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c0c45::
+	text "You can't register"
+	line "that item."
+	prompt
+
+UnknownText_0x1c0c63::
+	text "Where should this"
+	line "be moved to?"
+	done
+
+UnknownText_0x1c0c83::
+	text_start
+	done
+
+Text_YouCantUseItInABattle::
+	text "You can't use it"
+	line "in a battle."
+	prompt
+
+Text_AreYouABoyOrAreYouAGirl::
+	text "Are you a boy?"
+	line "Or are you a girl?"
+	done
+
+UnknownText_0x1c0cc6::
+	text "<USER>'s"
+	line "@"
+	text_from_ram StringBuffer2
+	db "@@"
+
+UnknownText_0x1c0cd0::
+	interpret_data
+	text "<SCROLL>went way up!"
+	prompt
+
+UnknownText_0x1c0ce0::
+	text " went up!"
+	prompt
+
+UnknownText_0x1c0ceb::
+	text "<TARGET>'s"
+	line "@"
+	text_from_ram StringBuffer2
+	db "@@"
+
+UnknownText_0x1c0cf5::
+	interpret_data
+	text "<SCROLL>sharply fell!"
+	prompt
+
+UnknownText_0x1c0d06::
+	text " fell!"
+	prompt
+
+UnknownText_0x1c0d0e::
+	text "<USER>@@"
+
+UnknownText_0x1c0d12::
+	text_start
+	line "made a whirlwind!"
+	prompt
+
+UnknownText_0x1c0d26::
+	text_start
+	line "took in sunlight!"
+	prompt
+
+UnknownText_0x1c0d3a::
+	text_start
+	line "lowered its head!"
+	prompt
+
+UnknownText_0x1c0d4e::
+	text_start
+	line "is glowing!"
+	prompt
+
+UnknownText_0x1c0d5c::
+	text_start
+	line "flew up high!"
+	prompt
+
+UnknownText_0x1c0d6c::
+	text_start
+	line "dug a hole!"
+	prompt
+
+_ActorNameText::
+	text "<USER>@@"
+
+_UsedMove1Text::
+	text_start
+	line "used @@"
+
+_UsedMove2Text::
+	text_start
+	line "used @@"
+
+_UsedInsteadText::
+	text "instead,"
+	cont "@@"
+
+_MoveNameText::
+	text_from_ram StringBuffer2
+	db "@@"
+
+_EndUsedMove1Text::
+	text "!"
+	done
+
+_EndUsedMove2Text::
+	text "!"
+	done
+
+_EndUsedMove3Text::
+	text "!"
+	done
+
+_EndUsedMove4Text::
+	text "!"
+	done
+
+_EndUsedMove5Text::
+	text "!"
+	done
+
+UnknownText_0x1c0db0::
+	text "Huh?"
+
+	para "@@"
+
+UnknownText_0x1c0db8::
+	text_start
+	done
+
+UnknownText_0x1c0dba::
+	text_from_ram StringBuffer1
+	text " came"
+	line "out of its EGG!@"
+	sound_caught_mon
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1c0dd8::
+	text "Give a nickname to"
+	line "@"
+	text_from_ram StringBuffer1
+	text "?"
+	done
+
+UnknownText_0x1c0df3::
+	text "It's @"
+	text_from_ram wBreedMon2Nick
+	text_start
+	line "that was left with"
+	cont "the DAY-CARE LADY."
+	done
+
+UnknownText_0x1c0e24::
+	text "It's @"
+	text_from_ram wBreedMon1
+	text_start
+	line "that was left with"
+	cont "the DAY-CARE MAN."
+	done
+
+UnknownText_0x1c0e54::
+	text "It's brimming with"
+	line "energy."
+	prompt
+
+UnknownText_0x1c0e6f::
+	text "It has no interest"
+	line "in @"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1c0e8d::
+	text "It appears to care"
+	line "for @"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1c0eac::
+	text "It's friendly with"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1c0ec6::
+	text "It shows interest"
+	line "in @"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+_EmptyMailboxText::
+	text "There's no MAIL"
+	line "here."
+	prompt
+
+ClearedMailPutAwayText::
+	text "The cleared MAIL"
+	line "was put away."
+	prompt
+
+MailPackFullText::
+	text "The PACK is full."
+	prompt
+
+MailMessageLostText::
+	text "The MAIL's message"
+	line "will be lost. OK?"
+	done
+
+MailAlreadyHoldingItemText::
+	text "It's already hold-"
+	line "ing an item."
+	prompt
+
+MailEggText::
+	text "An EGG can't hold"
+	line "any MAIL."
+	prompt
+
+MailMovedFromBoxText::
+	text "The MAIL was moved"
+	line "from the MAILBOX."
+	prompt
+
+UnknownText_0x1c0fb3::
+	text "Yes"
+	prompt
+
+UnknownText_0x1c0fb8::
+	text "No"
+	prompt
+
+UnknownText_0x1c0fbc::
+	deciram wcf64, 1, 3
+	text " @"
+	text_from_ram StringBuffer1
+	text_start
+	line "Animation type @"
+	text_from_ram StringBuffer2
+	db "@@"
+
+UnknownText_0x1c0fdd::
+	text "#MON number?"
+	done
+
+Text_WasSentToBillsPC::
+	text_from_ram StringBuffer1
+	text " was"
+	line "sent to BILL's PC."
+	prompt
+
+UnknownText_0x1c1006::
+	text "You gotta have"
+	line "#MON to call!"
+	prompt
+
+UnknownText_0x1c1024::
+	text "What?"
+	done
+
+UnknownText_0x1c102b::
+	text "There is a #MON"
+	line "holding MAIL."
+
+	para "Please remove the"
+	line "MAIL."
+	prompt
+
+UnknownText_0x1c1062::
+	text "You don't have a"
+	line "single #MON!"
+	prompt
+
+UnknownText_0x1c1080::
+	text "You can't deposit"
+	line "your last #MON!"
+	prompt
+
+UnknownText_0x1c10a2::
+	text "You can't take any"
+	line "more #MON."
+	prompt
+
+UnknownText_0x1c10c0::
+	text "Caught @"
+	text_from_ram StringBuffer1
+	text "!"
+	prompt
+
+UnknownText_0x1c10cf::
+	text "Switch #MON?"
+	done
+
+UnknownText_0x1c10dd::
+	text "You already caught"
+	line "a @"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+ContestJudging_FirstPlaceText::
+	text "This Bug-Catching"
+	line "Contest winner is@"
+	interpret_data
+	text "…"
+
+	para "@"
+	text_from_ram wBugContestWinnerName
+	text ","
+	line "who caught a"
+	cont "@"
+	text_from_ram StringBuffer1
+	text "!@@"
+
+ContestJudging_FirstPlaceScoreText::
+	text_start
+
+	para "The winning score"
+	line "was @"
+	deciram wBugContestFirstPlaceScore, 2, 3
+	text " points!"
+	prompt
+
+ContestJudging_SecondPlaceText::
+	text "Placing second was"
+	line "@"
+	text_from_ram wBugContestWinnerName
+	text ","
+
+	para "who caught a"
+	line "@"
+	text_from_ram StringBuffer1
+	text "!@@"
+
+ContestJudging_SecondPlaceScoreText::
+	text_start
+
+	para "The score was"
+	line "@"
+	deciram wBugContestSecondPlaceScore, 2, 3
+	text " points!"
+	prompt
+
+ContestJudging_ThirdPlaceText::
+	text "Placing third was"
+	line "@"
+	text_from_ram wBugContestWinnerName
+	text ","
+
+	para "who caught a"
+	line "@"
+	text_from_ram StringBuffer1
+	text "!@@"
+
+ContestJudging_ThirdPlaceScoreText::
+	text_start
+
+	para "The score was"
+	line "@"
+	deciram wBugContestThirdPlaceScore, 2, 3
+	text " points!"
+	prompt
+
+UnknownText_0x1c1203::
+	text "Let me measure"
+	line "that MAGIKARP."
+
+	para "…Hm, it measures"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1c123a::
+	text "CURRENT RECORD"
+
+	para "@"
+	text_from_ram StringBuffer1
+	text " caught by"
+	line "@"
+	text_from_ram wMagikarpRecordHoldersName
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1c1261::
+	text "Congratulations!"
+
+	para "We have a match"
+	line "with the ID number"
+
+	para "of @"
+	text_from_ram StringBuffer1
+	text " in"
+	line "your party."
+	prompt
+
+UnknownText_0x1c12ae::
+	text "Congratulations!"
+
+	para "We have a match"
+	line "with the ID number"
+
+	para "of @"
+	text_from_ram StringBuffer1
+	text " in"
+	line "your PC BOX."
+	prompt
+
+UnknownText_0x1c12fc::
+	text "Give a nickname to"
+	line "the @"
+	text_from_ram StringBuffer1
+	text " you"
+	cont "received?"
+	done
+
+UnknownText_0x1c1328::
+	text "Bzzzzt! You must"
+	line "have a #MON to"
+	cont "use this!"
+	prompt
+
+UnknownText_0x1c1353::
+	text "<PLAYER> turned on"
+	line "the PC."
+	prompt
+
+UnknownText_0x1c1368::
+	text "What do you want"
+	line "to do?"
+	done
+
+_KrissPCHowManyWithdrawText::
+	text "How many do you"
+	line "want to withdraw?"
+	done
+
+_KrissPCWithdrewItemsText::
+	text "Withdrew @"
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text_start
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)."
+	prompt
+
+_KrissPCNoRoomWithdrawText::
+	text "There's no room"
+	line "for more items."
+	prompt
+
+UnknownText_0x1c13df::
+	text "No items here!"
+	prompt
+
+_KrissPCHowManyDepositText::
+	text "How many do you"
+	line "want to deposit?"
+	done
+
+_KrissPCDepositItemsText::
+	text "Deposited @"
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text_start
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)."
+	prompt
+
+_KrissPCNoRoomDepositText::
+	text "There's no room to"
+	line "store items."
+	prompt
+
+UnknownText_0x1c144d::
+	text "<PLAYER> turned on"
+	line "the PC."
+	prompt
+
+UnknownText_0x1c1462::
+	text "Access whose PC?"
+	done
+
+UnknownText_0x1c1474::
+	text "BILL's PC"
+	line "accessed."
+
+	para "#MON Storage"
+	line "System opened."
+	prompt
+
+UnknownText_0x1c14a4::
+	text "Accessed own PC."
+
+	para "Item Storage"
+	line "System opened."
+	prompt
+
+UnknownText_0x1c14d2::
+	text "PROF.OAK's PC"
+	line "accessed."
+
+	para "#DEX Rating"
+	line "System opened."
+	prompt
+
+UnknownText_0x1c1505::
+	text "…"
+	line "Link closed…"
+	done
+
+_OakPCText1::
+	text "Want to get your"
+	line "#DEX rated?"
+	done
+
+_OakPCText2::
+	text "Current #DEX"
+	line "completion level:"
+	prompt
+
+_OakPCText3::
+	text_from_ram StringBuffer3
+	text " #MON seen"
+	line "@"
+	text_from_ram StringBuffer4
+	text " #MON owned"
+
+	para "PROF.OAK's"
+	line "Rating:"
+	done
+
+_OakRating01::
+	text "Look for #MON"
+	line "in grassy areas!"
+	done
+
+_OakRating02::
+	text "Good. I see you"
+	line "understand how to"
+	cont "use # BALLS."
+	done
+
+_OakRating03::
+	text "You're getting"
+	line "good at this."
+
+	para "But you have a"
+	line "long way to go."
+	done
+
+_OakRating04::
+	text "You need to fill"
+	line "up the #DEX."
+
+	para "Catch different"
+	line "kinds of #MON!"
+	done
+
+_OakRating05::
+	text "You're trying--I"
+	line "can see that."
+
+	para "Your #DEX is"
+	line "coming together."
+	done
+
+_OakRating06::
+	text "To evolve, some"
+	line "#MON grow,"
+
+	para "others use the"
+	line "effects of STONES."
+	done
+
+_OakRating07::
+	text "Have you gotten a"
+	line "fishing ROD? You"
+
+	para "can catch #MON"
+	line "by fishing."
+	done
+
+_OakRating08::
+	text "Excellent! You"
+	line "seem to like col-"
+	cont "lecting things!"
+	done
+
+_OakRating09::
+	text "Some #MON only"
+	line "appear during"
+
+	para "certain times of"
+	line "the day."
+	done
+
+_OakRating10::
+	text "Your #DEX is"
+	line "filling up. Keep"
+	cont "up the good work!"
+	done
+
+_OakRating11::
+	text "I'm impressed."
+	line "You're evolving"
+
+	para "#MON, not just"
+	line "catching them."
+	done
+
+_OakRating12::
+	text "Have you met KURT?"
+	line "His custom BALLS"
+	cont "should help."
+	done
+
+_OakRating13::
+	text "Wow. You've found"
+	line "more #MON than"
+
+	para "the last #DEX"
+	line "research project."
+	done
+
+_OakRating14::
+	text "Are you trading"
+	line "your #MON?"
+
+	para "It's tough to do"
+	line "this alone!"
+	done
+
+_OakRating15::
+	text "Wow! You've hit"
+	line "200! Your #DEX"
+	cont "is looking great!"
+	done
+
+_OakRating16::
+	text "You've found so"
+	line "many #MON!"
+
+	para "You've really"
+	line "helped my studies!"
+	done
+
+_OakRating17::
+	text "Magnificent! You"
+	line "could become a"
+
+	para "#MON professor"
+	line "right now!"
+	done
+
+_OakRating18::
+	text "Your #DEX is"
+	line "amazing! You're"
+
+	para "ready to turn"
+	line "professional!"
+	done
+
+_OakRating19::
+	text "Whoa! A perfect"
+	line "#DEX! I've"
+
+	para "dreamt about this!"
+	line "Congratulations!"
+	done
+
+_OakPCText4::
+	text "The link to PROF."
+	line "OAK's PC closed."
+	done
+
+UnknownText_0x1c19cd::
+	text "Triple-theme"
+	line "trainer ranking!"
+
+	para "The SAVE file you"
+	line "just sent might"
+	cont "make the rankings!"
+
+	para ""
+	done
+
+UnknownText_0x1c1a22::
+	text "There is no"
+	line "ranking data."
+
+	para "Link to obtain"
+	line "ranking data."
+
+	para ""
+	done
+
+UnknownText_0x1c1a5b::
+	text " , yeah!"
+	done
+
+UnknownText_0x1c1a65::
+	text "Darn…"
+	done
+
+UnknownText_0x1c1a6c::
+	text "Would you like to"
+	line "end the Contest?"
+	done
+
+UnknownText_0x1c1a90::
+	text "Toss out how many"
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)?"
+	done
+
+UnknownText_0x1c1aad::
+	text "Throw away @"
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text_start
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)?"
+	done
+
+UnknownText_0x1c1aca::
+	text "Discarded"
+	line "@"
+	text_from_ram StringBuffer1
+	text "(S)."
+	prompt
+
+UnknownText_0x1c1adf::
+	text "That's too impor-"
+	line "tant to toss out!"
+	prompt
+
+UnknownText_0x1c1b03::
+	text "OAK: <PLAYER>!"
+	line "This isn't the"
+	cont "time to use that!"
+	done
+
+UnknownText_0x1c1b2c::
+	text "Took @"
+	text_from_ram wMonOrItemNameBuffer
+	text "'s"
+	line "@"
+	text_from_ram StringBuffer1
+	text " and"
+
+	para "made it hold"
+	line "@"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c1b57::
+	text "Made @"
+	text_from_ram wMonOrItemNameBuffer
+	text_start
+	line "hold @"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c1b6f::
+	text "Please remove the"
+	line "MAIL first."
+	prompt
+
+UnknownText_0x1c1b8e::
+	text_from_ram wMonOrItemNameBuffer
+	text " isn't"
+	line "holding anything."
+	prompt
+
+UnknownText_0x1c1baa::
+	text "Item storage space"
+	line "full."
+	prompt
+
+UnknownText_0x1c1bc4::
+	text "Took @"
+	text_from_ram StringBuffer1
+	text_start
+	line "from @"
+	text_from_ram wMonOrItemNameBuffer
+	text "."
+	prompt
+
+UnknownText_0x1c1bdc::
+	text_from_ram wMonOrItemNameBuffer
+	text " is"
+	line "already holding"
+
+	para "@"
+	text_from_ram StringBuffer1
+	text "."
+	line "Switch items?"
+	done
+
+UnknownText_0x1c1c09::
+	text "This item can't be"
+	line "held."
+	prompt
+
+UnknownText_0x1c1c22::
+	text "The MAIL will lose"
+	line "its message. OK?"
+	done
+
+UnknownText_0x1c1c47::
+	text "MAIL detached from"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+	prompt
+
+UnknownText_0x1c1c62::
+	text "There's no space"
+	line "for removing MAIL."
+	prompt
+
+UnknownText_0x1c1c86::
+	text "Send the removed"
+	line "MAIL to your PC?"
+	done
+
+UnknownText_0x1c1ca9::
+	text "Your PC's MAILBOX"
+	line "is full."
+	prompt
+
+UnknownText_0x1c1cc4::
+	text "The MAIL was sent"
+	line "to your PC."
+	prompt
+
+UnknownText_0x1c1ce3::
+	text "Not enough HP!"
+	prompt
+
+UnknownText_0x1c1cf3::
+	text "An item in your"
+	line "PACK may be"
+
+	para "registered for use"
+	line "on SELECT Button."
+	done
+
+_OakText1::
+	text "Hello! Sorry to"
+	line "keep you waiting!"
+
+	para "Welcome to the"
+	line "world of #MON!"
+
+	para "My name is OAK."
+
+	para "People call me the"
+	line "#MON PROF."
+	prompt
+
+_OakText2::
+	text "This world is in-"
+	line "habited by crea-"
+	cont "tures that we call"
+	cont "#MON.@@"
+
+_OakText3::
+	text_waitbutton
+	db "@@"
+
+_OakText4::
+	text "People and #MON"
+	line "live together by"
+
+	para "supporting each"
+	line "other."
+
+	para "Some people play"
+	line "with #MON, some"
+	cont "battle with them."
+	prompt
+
+_OakText5::
+	text "But we don't know"
+	line "everything about"
+	cont "#MON yet."
+
+	para "There are still"
+	line "many mysteries to"
+	cont "solve."
+
+	para "That's why I study"
+	line "#MON every day."
+	prompt
--- /dev/null
+++ b/data/common_text/common_text_3.asm
@@ -1,0 +1,1508 @@
+_OakText6::
+	text "Now, what did you"
+	line "say your name was?"
+	prompt
+
+_OakText7::
+	text "<PLAYER>, are you"
+	line "ready?"
+
+	para "Your very own"
+	line "#MON story is"
+	cont "about to unfold."
+
+	para "You'll face fun"
+	line "times and tough"
+	cont "challenges."
+
+	para "A world of dreams"
+	line "and adventures"
+
+	para "with #MON"
+	line "awaits! Let's go!"
+
+	para "I'll be seeing you"
+	line "later!"
+	done
+
+UnknownText_0x1c40e6::
+	text "The clock's time"
+	line "may be wrong."
+
+	para "Please reset the"
+	line "time."
+	prompt
+
+UnknownText_0x1c411c::
+	text "Set with the"
+	line "Control Pad."
+
+	para "Confirm: A Button"
+	line "Cancel:  B Button"
+	done
+
+UnknownText_0x1c415b::
+	text "Is this OK?"
+	done
+
+UnknownText_0x1c4168::
+	text "The clock has been"
+	line "reset."
+	done
+
+UnknownText_0x1c4183::
+	text "Too much time has"
+	line "elapsed. Please"
+	cont "try again."
+	prompt
+
+UnknownText_0x1c41b1::
+	text "If you trade that"
+	line "#MON, you won't"
+	cont "be able to battle."
+	prompt
+
+UnknownText_0x1c41e6::
+	text "Your friend's"
+	line "@"
+	text_from_ram StringBuffer1
+	text " appears"
+	cont "to be abnormal!"
+	prompt
+
+UnknownText_0x1c4212::
+	text "Trade @"
+	text_from_ram wd004
+	text_start
+	line "for @"
+	text_from_ram StringBuffer1
+	text "?"
+	done
+
+UnknownText_0x1c422a::
+	text "To enter a mobile"
+	line "battle, you must"
+
+	para "pick a team of"
+	line "three #MON."
+
+	para "Is that OK?"
+	done
+
+UnknownText_0x1c4275::
+	text "Need more info on"
+	line "mobile battles?"
+	done
+
+UnknownText_0x1c4298::
+	text "For a mobile"
+	line "battle, choose"
+	cont "three #MON."
+
+	para "The maximum daily"
+	line "play time is ten"
+
+	para "minutes for each"
+	line "linked player."
+
+	para "If a battle isn't"
+	line "finished within"
+
+	para "the time limit,"
+	line "the player with"
+
+	para "the fewest fainted"
+	line "#MON wins."
+
+	para "If tied, the team"
+	line "that lost the"
+
+	para "least amount of HP"
+	line "wins."
+	done
+
+UnknownText_0x1c439c::
+	text "Today's remaining"
+	line "time is @"
+	deciram StringBuffer2, 1, 2
+	text " min."
+
+	para "Would you like to"
+	line "battle?"
+	done
+
+UnknownText_0x1c43dc::
+	text "There are only @"
+	deciram StringBuffer2, 1, 2
+	text_start
+	line "min. left today."
+
+	para "Want a quick"
+	line "battle?"
+	done
+
+UnknownText_0x1c4419::
+	text "There is only"
+	line "1 min. left today!"
+
+	para "Want to rush"
+	line "through a battle?"
+	done
+
+UnknownText_0x1c445a::
+	text "There is less than"
+	line "1 min. left today!"
+
+	para "Please try again"
+	line "tomorrow."
+	done
+
+UnknownText_0x1c449c::
+	text "Try again using"
+	line "the same settings?"
+	done
+
+UnknownText_0x1c44c0::
+	text "There is less than"
+	line "1 min. left today!"
+	done
+
+UnknownText_0x1c44e7::
+	text "No time left for"
+	line "linking today."
+	done
+
+UnknownText_0x1c4508::
+	text "Pick three #MON"
+	line "for battle."
+	done
+
+UnknownText_0x1c4525::
+	text "Today's remaining"
+	line "time is @"
+	deciram StringBuffer2, 1, 2
+	text " min."
+	done
+
+UnknownText_0x1c454b::
+	text "Would you like to"
+	line "save the game?"
+	done
+
+UnknownText_0x1c456d::
+	text "SAVING… DON'T TURN"
+	line "OFF THE POWER."
+	done
+
+UnknownText_0x1c4590::
+	text "<PLAYER> saved"
+	line "the game."
+	done
+
+UnknownText_0x1c45a3::
+	text "There is already a"
+	line "save file. Is it"
+	cont "OK to overwrite?"
+	done
+
+UnknownText_0x1c45d9::
+	text "There is another"
+	line "save file. Is it"
+	cont "OK to overwrite?"
+	done
+
+UnknownText_0x1c460d::
+	text "The save file is"
+	line "corrupted!"
+	prompt
+
+UnknownText_0x1c462a::
+	text "When you change a"
+	line "#MON BOX, data"
+	cont "will be saved. OK?"
+	done
+
+UnknownText_0x1c465f::
+	text "Each time you move"
+	line "a #MON, data"
+	cont "will be saved. OK?"
+	done
+
+UnknownText_0x1c4693::
+	text "The window save"
+	line "area was exceeded."
+	done
+
+UnknownText_0x1c46b7::
+	text "No windows avail-"
+	line "able for popping."
+	done
+
+UnknownText_0x1c46dc::
+	text "Corrupted event!"
+	prompt
+
+_ObjectEventText::
+	text "Object event"
+	done
+
+UnknownText_0x1c46fc::
+	text "BG event"
+	done
+
+UnknownText_0x1c4706::
+	text "Coordinates event"
+	done
+
+UnknownText_0x1c4719::
+	text "<PLAYER> received"
+	line "@"
+	text_from_ram StringBuffer4
+	text "."
+	done
+
+UnknownText_0x1c472c::
+	text "<PLAYER> put the"
+	line "@"
+	text_from_ram StringBuffer1
+	text " in"
+	cont "the @"
+	text_from_ram StringBuffer3
+	text "."
+	prompt
+
+UnknownText_0x1c474b::
+	text "The @"
+	text_from_ram StringBuffer3
+	text_start
+	line "is full…"
+	prompt
+
+UnknownText_0x1c475f::
+	text "I see all."
+	line "I know all…"
+
+	para "Certainly, I know"
+	line "of your #MON!"
+	done
+
+UnknownText_0x1c4797::
+	text "Whaaaat? I can't"
+	line "tell a thing!"
+
+	para "How could I not"
+	line "know of this?"
+	done
+
+UnknownText_0x1c47d4::
+	text "Hm… I see you met"
+	line "@"
+	text_from_ram wSeerNickname
+	text " here:"
+	cont "@"
+	text_from_ram wSeerCaughtLocation
+	text "!"
+	prompt
+
+UnknownText_0x1c47fa::
+	text "The time was"
+	line "@"
+	text_from_ram wSeerTimeOfDay
+	text "!"
+
+	para "Its level was @"
+	text_from_ram wSeerCaughtLevelString
+	text "!"
+
+	para "Am I good or what?"
+	prompt
+
+UnknownText_0x1c4837::
+	text "Hm… @"
+	text_from_ram wSeerNickname
+	text_start
+	line "came from @"
+	text_from_ram wSeerOTName
+	text_start
+	cont "in a trade?"
+
+	para "@"
+	text_from_ram wSeerCaughtLocation
+	text_start
+	line "was where @"
+	text_from_ram wSeerOTName
+	text_start
+	cont "met @"
+	text_from_ram wSeerNickname
+	text "!"
+	prompt
+
+UnknownText_0x1c487f::
+	text "What!? Incredible!"
+
+	para "I don't understand"
+	line "how, but it is"
+
+	para "incredible!"
+	line "You are special."
+
+	para "I can't tell where"
+	line "you met it, but it"
+	cont "was at level @"
+	text_from_ram wSeerCaughtLevelString
+	text "."
+
+	para "Am I good or what?"
+	prompt
+
+UnknownText_0x1c491d::
+	text "Hey!"
+
+	para "That's an EGG!"
+
+	para "You can't say that"
+	line "you've met it yet…"
+	done
+
+UnknownText_0x1c4955::
+	text "Fufufu! I saw that"
+	line "you'd do nothing!"
+	done
+
+UnknownText_0x1c497a::
+	text "Incidentally…"
+
+	para "It would be wise"
+	line "to raise your"
+
+	para "#MON with a"
+	line "little more care."
+	done
+
+UnknownText_0x1c49c6::
+	text "Incidentally…"
+
+	para "It seems to have"
+	line "grown a little."
+
+	para "@"
+	text_from_ram wSeerNickname
+	text " seems"
+	line "to be becoming"
+	cont "more confident."
+	done
+
+UnknownText_0x1c4a21::
+	text "Incidentally…"
+
+	para "@"
+	text_from_ram wSeerNickname
+	text " has"
+	line "grown. It's gained"
+	cont "much strength."
+	done
+
+UnknownText_0x1c4a5b::
+	text "Incidentally…"
+
+	para "It certainly has"
+	line "grown mighty!"
+
+	para "This @"
+	text_from_ram wSeerNickname
+	text_start
+	line "must have come"
+
+	para "through numerous"
+	line "#MON battles."
+
+	para "It looks brimming"
+	line "with confidence."
+	done
+
+UnknownText_0x1c4ae5::
+	text "Incidentally…"
+
+	para "I'm impressed by"
+	line "your dedication."
+
+	para "It's been a long"
+	line "time since I've"
+
+	para "seen a #MON as"
+	line "mighty as this"
+	cont "@"
+	text_from_ram wSeerNickname
+	text "."
+
+	para "I'm sure that"
+	line "seeing @"
+	text_from_ram wSeerNickname
+	text_start
+
+	para "in battle would"
+	line "excite anyone."
+	done
+
+UnknownText_0x1c4b92::
+	text "Congratulations!"
+	line "Your @"
+	text_from_ram StringBuffer2
+	db "@@"
+
+UnknownText_0x1c4baf::
+	text_start
+
+	para "evolved into"
+	line "@"
+	text_from_ram StringBuffer1
+	text "!"
+	done
+
+UnknownText_0x1c4bc5::
+	text "Huh? @"
+	text_from_ram StringBuffer2
+	text_start
+	line "stopped evolving!"
+	prompt
+
+UnknownText_0x1c4be3::
+	text "What? @"
+	text_from_ram StringBuffer2
+	text_start
+	line "is evolving!"
+	done
+
+UnknownText_0x1c4bfd::
+	text "How many?"
+	done
+
+UnknownText_0x1c4c08::
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text " @"
+	text_from_ram StringBuffer2
+	text "(S)"
+	line "will be ¥@"
+	deciram hMoneyTemp, 3, 6
+	text "."
+	done
+
+UnknownText_0x1c4c28::
+	text "Hello, dear."
+
+	para "I sell inexpensive"
+	line "herbal medicine."
+
+	para "They're good, but"
+	line "a trifle bitter."
+
+	para "Your #MON may"
+	line "not like them."
+
+	para "Hehehehe…"
+	done
+
+UnknownText_0x1c4ca3::
+	text "How many?"
+	done
+
+UnknownText_0x1c4cae::
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text " @"
+	text_from_ram StringBuffer2
+	text "(S)"
+	line "will be ¥@"
+	deciram hMoneyTemp, 3, 6
+	text "."
+	done
+
+UnknownText_0x1c4cce::
+	text "Thank you, dear."
+	line "Hehehehe…"
+	done
+
+UnknownText_0x1c4cea::
+	text "Oh? Your PACK is"
+	line "full, dear."
+	done
+
+UnknownText_0x1c4d08::
+	text "Hehehe… You don't"
+	line "have the money."
+	done
+
+UnknownText_0x1c4d2a::
+	text "Come again, dear."
+	line "Hehehehe…"
+	done
+
+UnknownText_0x1c4d47::
+	text "Hiya! Care to see"
+	line "some bargains?"
+
+	para "I sell rare items"
+	line "that nobody else"
+
+	para "carries--but only"
+	line "one of each item."
+	done
+
+UnknownText_0x1c4db0::
+	text_from_ram StringBuffer2
+	text " costs"
+	line "¥@"
+	deciram hMoneyTemp, 3, 6
+	text ". Want it?"
+	done
+
+UnknownText_0x1c4dcd::
+	text "Thanks."
+	done
+
+UnknownText_0x1c4dd6::
+	text "Uh-oh, your PACK"
+	line "is chock-full."
+	done
+
+UnknownText_0x1c4df7::
+	text "You bought that"
+	line "already. I'm all"
+	cont "sold out of it."
+	done
+
+UnknownText_0x1c4e28::
+	text "Uh-oh, you're"
+	line "short on funds."
+	done
+
+UnknownText_0x1c4e46::
+	text "Come by again"
+	line "sometime."
+	done
+
+UnknownText_0x1c4e5f::
+	text "What's up? Need"
+	line "some medicine?"
+	done
+
+UnknownText_0x1c4e7e::
+	text "How many?"
+	done
+
+UnknownText_0x1c4e89::
+	deciram wItemQuantityChangeBuffer, 1, 2
+	text " @"
+	text_from_ram StringBuffer2
+	text "(S)"
+	line "will cost ¥@"
+	deciram hMoneyTemp, 3, 6
+	text "."
+	done
+
+UnknownText_0x1c4eab::
+	text "Thanks much!"
+	done
+
+UnknownText_0x1c4eb9::
+	text "You don't have any"
+	line "more space."
+	done
+
+UnknownText_0x1c4ed8::
+	text "Huh? That's not"
+	line "enough money."
+	done
+
+UnknownText_0x1c4ef6::
+	text "All right."
+	line "See you around."
+	done
+
+UnknownText_0x1c4f12::
+	text "You don't have"
+	line "anything to sell."
+	prompt
+
+UnknownText_0x1c4f33::
+	text "How many?"
+	done
+
+UnknownText_0x1c4f3e::
+	text "I can pay you"
+	line "¥@"
+	deciram hMoneyTemp, 3, 6
+	text "."
+
+	para "Is that OK?"
+	done
+
+UnknownText_0x1c4f62::
+	text "Welcome! How may I"
+	line "help you?"
+	done
+
+UnknownText_0x1c4f80::
+	text "Here you are."
+	line "Thank you!"
+	done
+
+UnknownText_0x1c4f9a::
+	text "You don't have"
+	line "enough money."
+	done
+
+UnknownText_0x1c4fb7::
+	text "You can't carry"
+	line "any more items."
+	done
+
+UnknownText_0x1c4fd7::
+	text "Sorry, I can't buy"
+	line "that from you."
+	prompt
+
+UnknownText_0x1c4ff9::
+	text "Please come again!"
+	done
+
+UnknownText_0x1c500d::
+	text "Can I do anything"
+	line "else for you?"
+	done
+
+UnknownText_0x1c502e::
+	text "Got ¥@"
+	deciram hMoneyTemp, 3, 6
+	text " for"
+	line "@"
+	text_from_ram StringBuffer2
+	text "(S)."
+	done
+
+UnknownText_0x1c5049::
+	text "Bet how many"
+	line "coins?"
+	done
+
+UnknownText_0x1c505e::
+	text "Start!"
+	done
+
+UnknownText_0x1c5066::
+	text "Not enough"
+	line "coins."
+	prompt
+
+UnknownText_0x1c5079::
+	text "Darn… Ran out of"
+	line "coins…"
+	done
+
+UnknownText_0x1c5092::
+	text "Play again?"
+	done
+
+UnknownText_0x1c509f::
+	text "lined up!"
+	line "Won @"
+	text_from_ram StringBuffer2
+	text " coins!"
+	done
+
+UnknownText_0x1c50bb::
+	text "Darn!"
+	done
+
+_MobileStadiumEntryText::
+	text "Data for use in"
+	line "the MOBILE STADIUM"
+
+	para "of the N64 #MON"
+	line "STADIUM 2 can be"
+	cont "read here."
+
+	para "Read the data?"
+	done
+
+_MobileStadiumSuccessText::
+	text "Data transfer is"
+	line "complete."
+
+	para "We hope you enjoy"
+	line "MOBILE STADIUM"
+
+	para "battles in the N64"
+	line "#MON STADIUM 2."
+
+	para ""
+	done
+
+UnknownText_0x1c5182::
+	text "Clock time unknown"
+	done
+
+UnknownText_0x1c5196::
+	text "Delete the saved"
+	line "LOG-IN PASSWORD?"
+	done
+
+UnknownText_0x1c51b9::
+	text "Deleted the LOG-IN"
+	line "PASSWORD."
+	done
+
+UnknownText_0x1c51d7::
+	text "Pick three #MON"
+	line "for battle."
+	prompt
+
+UnknownText_0x1c51f4::
+	text_from_ram wMobileParticipant1Nickname
+	text ","
+	line "@"
+	text_from_ram wMobileParticipant2Nickname
+	text " and"
+	cont "@"
+	text_from_ram wMobileParticipant3Nickname
+	text "."
+
+	para "Use these three?"
+	done
+
+UnknownText_0x1c521c::
+	text "Only three #MON"
+	line "may enter."
+	prompt
+
+UnknownText_0x1c5238::
+	text "The CARD FOLDER"
+	line "stores your and"
+
+	para "your friends'"
+	line "CARDS."
+
+	para "A CARD contains"
+	line "information like"
+
+	para "the person's name,"
+	line "phone number and"
+	cont "profile."
+
+	para ""
+	done
+
+UnknownText_0x1c52bc::
+	text "This is your CARD."
+
+	para "Once you've"
+	line "entered your phone"
+
+	para "number, you can"
+	line "trade CARDS with"
+	cont "your friends."
+
+	para ""
+	done
+
+UnknownText_0x1c531e::
+	text "If you have your"
+	line "friend's CARD, you"
+
+	para "can use it to make"
+	line "a call from a"
+
+	para "mobile phone on"
+	line "the 2nd floor of a"
+	cont "#MON CENTER."
+
+	para ""
+	done
+
+UnknownText_0x1c5394::
+	text "To safely store"
+	line "your collection of"
+
+	para "CARDS, you must"
+	line "set a PASSCODE for"
+	cont "your CARD FOLDER."
+
+	para ""
+	done
+
+UnknownText_0x1c53ee::
+	text "If the CARD FOLDER"
+	line "is deleted, all"
+
+	para "its CARDS and the"
+	line "PASSCODE will also"
+	cont "be deleted."
+
+	para "Beware--a deleted"
+	line "CARD FOLDER can't"
+	cont "be restored."
+
+	para "Want to delete"
+	line "your CARD FOLDER?"
+	done
+
+UnknownText_0x1c5494::
+	text "Are you sure you"
+	line "want to delete it?"
+	done
+
+UnknownText_0x1c54b9::
+	text "The CARD FOLDER"
+	line "has been deleted."
+
+	para ""
+	done
+
+UnknownText_0x1c54dd::
+	text "There is an older"
+	line "CARD FOLDER from a"
+	cont "previous journey."
+
+	para "Do you want to"
+	line "open it?"
+	done
+
+UnknownText_0x1c552d::
+	text "Delete the old"
+	line "CARD FOLDER?"
+	done
+
+UnknownText_0x1c554a::
+	text "Finish registering"
+	line "CARDS?"
+	done
+
+UnknownText_0x1c5565::
+	text "Huh? Sorry, wrong"
+	line "number!"
+	done
+
+UnknownText_0x1c5580::
+	text "Click!"
+	done
+
+UnknownText_0x1c5588::
+	text "<……>"
+	done
+
+UnknownText_0x1c558b::
+	text "That number is out"
+	line "of the area."
+	done
+
+UnknownText_0x1c55ac::
+	text "Just go talk to"
+	line "that person!"
+	done
+
+UnknownText_0x1c55ca::
+	text "Thank you!"
+	done
+
+UnknownText_0x1c55d6::
+	text "  :"
+	done
+
+UnknownText_0x1c55db::
+	text "Password OK."
+	line "Select CONTINUE &"
+	cont "reset settings."
+	prompt
+
+UnknownText_0x1c560b::
+	text "Wrong password!"
+	prompt
+
+UnknownText_0x1c561c::
+	text "Reset the clock?"
+	done
+
+UnknownText_0x1c562e::
+	text "Please enter the"
+	line "password."
+	done
+
+UnknownText_0x1c564a::
+	text "Clear all save"
+	line "data?"
+	done
+
+UnknownText_0x1c5660::
+	text_from_ram wMonOrItemNameBuffer
+	text " learned"
+	line "@"
+	text_from_ram StringBuffer2
+	text "!@"
+	sound_dex_fanfare_50_79
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1c5678::
+	text "Which move should"
+	next "be forgotten?"
+	done
+
+UnknownText_0x1c5699::
+	text "Stop learning"
+	line "@"
+	text_from_ram StringBuffer2
+	text "?"
+	done
+
+UnknownText_0x1c56af::
+	text_from_ram wMonOrItemNameBuffer
+	text_start
+	line "did not learn"
+	cont "@"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c56c9::
+	text_from_ram wMonOrItemNameBuffer
+	text " is"
+	line "trying to learn"
+	cont "@"
+	text_from_ram StringBuffer2
+	text "."
+
+	para "But @"
+	text_from_ram wMonOrItemNameBuffer
+	text_start
+	line "can't learn more"
+	cont "than four moves."
+
+	para "Delete an older"
+	line "move to make room"
+	cont "for @"
+	text_from_ram StringBuffer2
+	text "?"
+	done
+
+UnknownText_0x1c5740::
+	text "1, 2 and…@"
+	interpret_data
+	db "@@"
+
+UnknownText_0x1c574e::
+	text " Poof!@"
+	interpret_data
+	text_start
+
+	para "@"
+	text_from_ram wMonOrItemNameBuffer
+	text " forgot"
+	line "@"
+	text_from_ram StringBuffer1
+	text "."
+
+	para "And…"
+	prompt
+
+UnknownText_0x1c5772::
+	text "HM moves can't be"
+	line "forgotten now."
+	prompt
+
+UnknownText_0x1c5793::
+	text "Play with three"
+	line "coins?"
+	done
+
+UnknownText_0x1c57ab::
+	text "Not enough coins…"
+	prompt
+
+UnknownText_0x1c57be::
+	text "Choose a card."
+	done
+
+UnknownText_0x1c57ce::
+	text "Place your bet."
+	done
+
+UnknownText_0x1c57df::
+	text "Want to play"
+	line "again?"
+	done
+
+UnknownText_0x1c57f4::
+	text "The cards have"
+	line "been shuffled."
+	prompt
+
+UnknownText_0x1c5813::
+	text "Yeah!"
+	done
+
+UnknownText_0x1c581a::
+	text "Darn…"
+	done
+
+UnknownText_0x1c5821::
+	current_day
+	db "@@"
+
+UnknownText_0x1c5824::
+	text "<……>"
+	done
+
+UnknownText_0x1c5827::
+	text "You're out of the"
+	line "service area."
+	prompt
+
+UnknownText_0x1c5847::
+	text "Whom do you want"
+	line "to call?"
+	done
+
+UnknownText_0x1c5862::
+	text "Press any button"
+	line "to exit."
+	done
+
+UnknownText_0x1c587d::
+	text "Delete this stored"
+	line "phone number?"
+	done
+
+UnknownText_0x1c589f::
+	text "Which prize would"
+	line "you like?"
+	done
+
+UnknownText_0x1c58bc::
+	text_from_ram StringBuffer1
+	text "?"
+	line "Is that right?"
+	done
+
+UnknownText_0x1c58d1::
+	text "Here you go!"
+
+	para ""
+	done
+
+UnknownText_0x1c58e0::
+	text "You don't have"
+	line "enough points."
+
+	para ""
+	done
+
+UnknownText_0x1c58ff::
+	text "You have no room"
+	line "for it."
+
+	para ""
+	done
+
+UnknownText_0x1c591a::
+	text "Oh. Please come"
+	line "back again!"
+	done
+
+UnknownText_0x1c5937::
+	text "Excuse me!"
+
+	para ""
+	done
+
+Text_ExcuseMeYoureNotReady::
+	text "Excuse me."
+	line "You're not ready."
+
+	para ""
+	done
+
+UnknownText_0x1c5962::
+	text "Please return when"
+	line "you're ready."
+	done
+
+UnknownText_0x1c5983::
+	text "You need at least"
+	line "three #MON."
+
+	para ""
+	done
+
+UnknownText_0x1c59a3::
+	text "Sorry, an EGG"
+	line "doesn't qualify."
+
+	para ""
+	done
+
+Text_OnlyThreePkmnMayBeEntered::
+	text "Only three #MON"
+	line "may be entered."
+
+	para ""
+	done
+
+Text_ThePkmnMustAllBeDifferentKinds::
+	text "The @"
+	text_from_ram StringBuffer2
+	text " #MON"
+	line "must all be"
+	cont "different kinds."
+
+	para ""
+	done
+
+Text_ThePkmnMustNotHoldTheSameItems::
+	text "The @"
+	text_from_ram StringBuffer2
+	text " #MON"
+	line "must not hold the"
+	cont "same items."
+
+	para ""
+	done
+
+Text_YouCantTakeAnEgg::
+	text "You can't take an"
+	line "EGG!"
+
+	para ""
+	done
+
+UnknownText_0x1c5a5a::
+	text "It dodged the"
+	line "thrown BALL!"
+
+	para "This #MON"
+	line "can't be caught!"
+	prompt
+
+UnknownText_0x1c5a90::
+	text "You missed the"
+	line "#MON!"
+	prompt
+
+UnknownText_0x1c5aa6::
+	text "Oh no! The #MON"
+	line "broke free!"
+	prompt
+
+UnknownText_0x1c5ac3::
+	text "Aww! It appeared"
+	line "to be caught!"
+	prompt
+
+UnknownText_0x1c5ae3::
+	text "Aargh!"
+	line "Almost had it!"
+	prompt
+
+UnknownText_0x1c5afa::
+	text "Shoot! It was so"
+	line "close too!"
+	prompt
+
+UnknownText_0x1c5b17::
+	text "Gotcha! @"
+	text_from_ram EnemyMonNick
+	text_start
+	line "was caught!@"
+	sound_caught_mon
+	db "@@"
+
+Text_Waitbutton_2::
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1c5b38::
+	text_from_ram wMonOrItemNameBuffer
+	text " was"
+	line "sent to BILL's PC."
+	prompt
+
+UnknownText_0x1c5b53::
+	text_from_ram EnemyMonNick
+	text "'s data"
+	line "was newly added to"
+	cont "the #DEX.@"
+	sound_slot_machine_start
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1c5b7f::
+	text "Give a nickname to"
+	line "@"
+	text_from_ram StringBuffer1
+	text "?"
+	done
+
+UnknownText_0x1c5b9a::
+	text_from_ram StringBuffer1
+	text "'s"
+	line "@"
+	text_from_ram StringBuffer2
+	text " rose."
+	prompt
+
+UnknownText_0x1c5bac::
+	text "That can't be used"
+	line "on this #MON."
+	prompt
+
+Text_RepelUsedEarlierIsStillInEffect::
+	text "The REPEL used"
+	line "earlier is still"
+	cont "in effect."
+	prompt
+
+UnknownText_0x1c5bf9::
+	text "Played the #"
+	line "FLUTE."
+
+	para "Now, that's a"
+	line "catchy tune!"
+	prompt
+
+UnknownText_0x1c5c28::
+	text "All sleeping"
+	line "#MON woke up."
+	prompt
+
+UnknownText_0x1c5c44::
+	text "<PLAYER> played the"
+	line "# FLUTE.@"
+	text_waitbutton
+	db "@@"
+
+UnknownText_0x1c5c5e::
+	text "You now have"
+	line "@"
+	deciram wBlueCardBalance, 1, 2
+	text " points."
+	done
+
+UnknownText_0x1c5c7b::
+	text "Coins:"
+	line "@"
+	deciram Coins, 2, 4
+	db "@@"
+
+Text_RaiseThePPOfWhichMove::
+	text "Raise the PP of"
+	line "which move?"
+	done
+
+Text_RestoreThePPOfWhichMove::
+	text "Restore the PP of"
+	line "which move?"
+	done
+
+Text_PPIsMaxedOut::
+	text_from_ram StringBuffer2
+	text "'s PP"
+	line "is maxed out."
+	prompt
+
+Text_PPsIncreased::
+	text_from_ram StringBuffer2
+	text "'s PP"
+	line "increased."
+	prompt
+
+UnknownText_0x1c5cf1::
+	text "PP was restored."
+	prompt
+
+UnknownText_0x1c5d03::
+	text "There was a trophy"
+	line "inside!@"
+	sound_dex_fanfare_50_79
+	text_start
+
+	para "@"
+	text_from_ram PlayerName
+	text " sent the"
+	line "trophy home."
+	prompt
+
+UnknownText_0x1c5d3e::
+	text "It looks bitter…"
+	prompt
+
+UnknownText_0x1c5d50::
+	text "That can't be used"
+	line "on an EGG."
+	prompt
+
+UnknownText_0x1c5d6e::
+	text "OAK: <PLAYER>!"
+	line "This isn't the"
+	cont "time to use that!"
+	prompt
+
+UnknownText_0x1c5d97::
+	text "That belongs to"
+	line "someone else!"
+	prompt
+
+UnknownText_0x1c5db6::
+	text "It won't have any"
+	line "effect."
+	prompt
+
+UnknownText_0x1c5dd0::
+	text "The trainer"
+	line "blocked the BALL!"
+	prompt
+
+UnknownText_0x1c5def::
+	text "Don't be a thief!"
+	prompt
+
+UnknownText_0x1c5e01::
+	text "Cycling isn't"
+	line "allowed here."
+	prompt
+
+UnknownText_0x1c5e1d::
+	text "Can't get on your"
+	line "@"
+	text_from_ram StringBuffer1
+	text " now."
+	prompt
+
+UnknownText_0x1c5e3a::
+	text "The #MON BOX"
+	line "is full. That"
+	cont "can't be used now."
+	prompt
+
+UnknownText_0x1c5e68::
+	text "<PLAYER> used the@"
+	text_low
+	text_from_ram StringBuffer2
+	text "."
+	done
+
+UnknownText_0x1c5e7b::
+	text "<PLAYER> got on the@"
+	text_low
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c5e90::
+	text "<PLAYER> got off@"
+	text_low
+	text "the @"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c5ea8::
+	text_from_ram StringBuffer1
+	text " knows"
+	line "@"
+	text_from_ram StringBuffer2
+	text "."
+	prompt
+
+UnknownText_0x1c5eba::
+	text "That #MON knows"
+	line "only one move."
+	done
+
+UnknownText_0x1c5eda::
+	text "Oh, make it forget"
+	line "@"
+	text_from_ram StringBuffer1
+	text "?"
+	done
+
+UnknownText_0x1c5ef5::
+	text "Done! Your #MON"
+	line "forgot the move."
+	done
+
+UnknownText_0x1c5f17::
+	text "An EGG doesn't"
+	line "know any moves!"
+	done
+
+UnknownText_0x1c5f36::
+	text "No? Come visit me"
+	line "again."
+	done
+
+UnknownText_0x1c5f50::
+	text "Which move should"
+	line "it forget, then?"
+	prompt
+
+UnknownText_0x1c5f74::
+	text "Um… Oh, yes, I'm"
+	line "the MOVE DELETER."
+
+	para "I can make #MON"
+	line "forget moves."
+
+	para "Shall I make a"
+	line "#MON forget?"
+	done
+
+UnknownText_0x1c5fd1::
+	text "Which #MON?"
+	prompt
+
+Text_DSTIsThatOK::
+	text " DST,"
+	line "is that OK?"
+	done
+
+UnknownText_0x1c5ff1::
+	text ","
+	line "is that OK?"
+	done
+
+UnknownText_0x1c6000::
+	text "Do you want to"
+	line "switch to Daylight"
+	cont "Saving Time?"
+	done
+
+UnknownText_0x1c6030::
+	text "I set the clock"
+	line "forward by one"
+	cont "hour."
+	prompt
+
+UnknownText_0x1c6056::
+	text "Is Daylight Saving"
+	line "Time over?"
+	done
+
+UnknownText_0x1c6075::
+	text "I put the clock"
+	line "back one hour."
+	prompt
+
+UnknownText_0x1c6095::
+	text "Do you want to"
+	line "adjust your clock"
+
+	para "for Daylight"
+	line "Saving Time?"
+	done
+
+UnknownText_0x1c60d1::
+	text "I lost the in-"
+	line "struction booklet"
+	cont "for the #GEAR."
+
+	para "Come back again in"
+	line "a while."
+	prompt
--- a/data/credits_strings.asm
+++ b/data/credits_strings.asm
@@ -104,69 +104,69 @@
 	dw .TextTranslation
 	dw .PaadTesting
 
-.SatoshiTajiri:       db "   SATOSHI TAJIRI@"         ; "たじり さとし@"
-.JunichiMasuda:       db "   JUNICHI MASUDA@"         ; "ますだ じゅんいち@"
-.TetsuyaWatanabe:     db "  TETSUYA WATANABE@"        ; "わたなべ てつや@"
-.ShigekiMorimoto:     db "  SHIGEKI MORIMOTO@"        ; "もりもと しげき@"
-.SousukeTamada:       db "   SOUSUKE TAMADA@"         ; "たまだ そうすけ@"
-.TakenoriOota:        db "   TAKENORI OOTA@"          ; "おおた たけのり@"
-.KenSugimori:         db "    KEN SUGIMORI@"          ; "すぎもり けん@"
-.MotofumiFujiwara:    db " MOTOFUMI FUJIWARA@"        ; "ふじわら もとふみ@"
-.AtsukoNishida:       db "   ATSUKO NISHIDA@"         ; "にしだ あつこ@"
-.MuneoSaito:          db "    MUNEO SAITO@"           ; "さいとう むねお@"
-.SatoshiOota:         db "    SATOSHI OOTA@"          ; "おおた さとし@"
-.RenaYoshikawa:       db "   RENA YOSHIKAWA@"         ; "よしかわ れな@"
-.JunOkutani:          db "    JUN OKUTANI@"           ; "おくたに じゅん@"
-.HironobuYoshida:     db "  HIRONOBU YOSHIDA@"        ; "よしだ ひろのぶ@"
-.AsukaIwashita:       db "   ASUKA IWASHITA@"         ; "いわした あすか@"
-.GoIchinose:          db "    GO ICHINOSE@"           ; "いちのせ ごう@"
-.MorikazuAoki:        db "   MORIKAZU AOKI@"          ; "あおき もりかず@"
-.KohjiNishino:        db "   KOHJI NISHINO@"          ; "にしの こうじ@"
-.KenjiMatsushima:     db "  KENJI MATSUSHIMA@"        ; "まつしま けんじ@"
-.ToshinobuMatsumiya:  db "TOSHINOBU MATSUMIYA@"       ; "まつみや としのぶ@"
-.SatoruIwata:         db "    SATORU IWATA@"          ; "いわた さとる@"
-.NobuhiroSeya:        db "   NOBUHIRO SEYA@"          ; "せや のぶひろ@"
-.KazuhitoSekine:      db "  KAZUHITO SEKINE@"         ; "せきね かずひと@"
-.TetsujiOota:         db "    TETSUJI OOTA@"          ; "おおた てつじ@"
-.NclSuperMarioClub:   db "NCL SUPER MARIO CLUB@"      ; "スーパーマりォクラブ@"
+.SatoshiTajiri:       db "   SATOSHI TAJIRI@"         ; "たじり さとし@"
+.JunichiMasuda:       db "   JUNICHI MASUDA@"         ; "ますだ じゅんいち@"
+.TetsuyaWatanabe:     db "  TETSUYA WATANABE@"        ; "わたなべ てつや@"
+.ShigekiMorimoto:     db "  SHIGEKI MORIMOTO@"        ; "もりもと しげき@"
+.SousukeTamada:       db "   SOUSUKE TAMADA@"         ; "たまだ そうすけ@"
+.TakenoriOota:        db "   TAKENORI OOTA@"          ; "おおた たけのり@"
+.KenSugimori:         db "    KEN SUGIMORI@"          ; "すぎもり けん@"
+.MotofumiFujiwara:    db " MOTOFUMI FUJIWARA@"        ; "ふじわら もとふみ@"
+.AtsukoNishida:       db "   ATSUKO NISHIDA@"         ; "にしだ あつこ@"
+.MuneoSaito:          db "    MUNEO SAITO@"           ; "さいとう むねお@"
+.SatoshiOota:         db "    SATOSHI OOTA@"          ; "おおた さとし@"
+.RenaYoshikawa:       db "   RENA YOSHIKAWA@"         ; "よしかわ れな@"
+.JunOkutani:          db "    JUN OKUTANI@"           ; "おくたに じゅん@"
+.HironobuYoshida:     db "  HIRONOBU YOSHIDA@"        ; "よしだ ひろのぶ@"
+.AsukaIwashita:       db "   ASUKA IWASHITA@"         ; "いわした あすか@"
+.GoIchinose:          db "    GO ICHINOSE@"           ; "いちのせ ごう@"
+.MorikazuAoki:        db "   MORIKAZU AOKI@"          ; "あおき もりかず@"
+.KohjiNishino:        db "   KOHJI NISHINO@"          ; "にしの こうじ@"
+.KenjiMatsushima:     db "  KENJI MATSUSHIMA@"        ; "まつしま けんじ@"
+.ToshinobuMatsumiya:  db "TOSHINOBU MATSUMIYA@"       ; "まつみや としのぶ@"
+.SatoruIwata:         db "    SATORU IWATA@"          ; "いわた さとる@"
+.NobuhiroSeya:        db "   NOBUHIRO SEYA@"          ; "せや のぶひろ@"
+.KazuhitoSekine:      db "  KAZUHITO SEKINE@"         ; "せきね かずひと@"
+.TetsujiOota:         db "    TETSUJI OOTA@"          ; "おおた てつじ@"
+.NclSuperMarioClub:   db "NCL SUPER MARIO CLUB@"      ; "スーパーマりオクラブ@"
 .Sarugakucho:         db "    SARUGAKUCHO@"           ; "さるがくちょう@"
-.AkitoMori:           db "     AKITO MORI@"           ; "もり あきと@"
-.TakahiroHarada:      db "  TAKAHIRO HARADA@"         ; "はらだ たかひろ@"
-.TohruHashimoto:      db "  TOHRU HASHIMOTO@"         ; "はしもと とおる@"
-.NoboruMatsumoto:     db "  NOBORU MATSUMOTO@"        ; "まつもと のぼる@"
-.TakehiroIzushi:      db "  TAKEHIRO IZUSHI@"         ; "いずし たけひろ@"
-.TakashiKawaguchi:    db " TAKASHI KAWAGUCHI@"        ; "かわぐち たかし@"
-.TsunekazuIshihara:   db " TSUNEKAZU ISHIHARA@"       ; "いしはら つねかず@"
-.HiroshiYamauchi:     db "  HIROSHI YAMAUCHI@"        ; "やまうち ひろし@"
-.KenjiSaiki:          db "    KENJI SAIKI@"           ; "さいき けんじ@"
-.AtsushiTada:         db "    ATSUSHI TADA@"          ; "ただ あつし@"
-.NaokoKawakami:       db "   NAOKO KAWAKAMI@"         ; "かわかみ なおこ@"
-.HiroyukiZinnai:      db "  HIROYUKI ZINNAI@"         ; "じんない ひろゆき@"
-.KunimiKawamura:      db "  KUNIMI KAWAMURA@"         ; "かわむら くにみ@"
-.HisashiSogabe:       db "   HISASHI SOGABE@"         ; "そがべ ひさし@"
-.KeitaKagaya:         db "    KEITA KAGAYA@"          ; "かがや けいた@"
-.YoshinoriMatsuda:    db " YOSHINORI MATSUDA@"        ; "まつだ よしのり@"
-.HitomiSato:          db "    HITOMI SATO@"           ; "さとう ひとみ@"
-.ToruOsawa:           db "     TORU OSAWA@"           ; "おおさわ とおる@"
-.TakaoOhara:          db "    TAKAO OHARA@"           ; "おおはら たかお@"
-.YuichiroIto:         db "    YUICHIRO ITO@"          ; "いとう ゆういちろう@"
-.TakaoShimizu:        db "   TAKAO SHIMIZU@"          ; "しみず たかお@"
+.AkitoMori:           db "     AKITO MORI@"           ; "もり あきと@"
+.TakahiroHarada:      db "  TAKAHIRO HARADA@"         ; "はらだ たかひろ@"
+.TohruHashimoto:      db "  TOHRU HASHIMOTO@"         ; "はしもと とおる@"
+.NoboruMatsumoto:     db "  NOBORU MATSUMOTO@"        ; "まつもと のぼる@"
+.TakehiroIzushi:      db "  TAKEHIRO IZUSHI@"         ; "いずし たけひろ@"
+.TakashiKawaguchi:    db " TAKASHI KAWAGUCHI@"        ; "かわぐち たかし@"
+.TsunekazuIshihara:   db " TSUNEKAZU ISHIHARA@"       ; "いしはら つねかず@"
+.HiroshiYamauchi:     db "  HIROSHI YAMAUCHI@"        ; "やまうち ひろし@"
+.KenjiSaiki:          db "    KENJI SAIKI@"           ; "さいき けんじ@"
+.AtsushiTada:         db "    ATSUSHI TADA@"          ; "ただ あつし@"
+.NaokoKawakami:       db "   NAOKO KAWAKAMI@"         ; "かわかみ なおこ@"
+.HiroyukiZinnai:      db "  HIROYUKI ZINNAI@"         ; "じんない ひろゆき@"
+.KunimiKawamura:      db "  KUNIMI KAWAMURA@"         ; "かわむら くにみ@"
+.HisashiSogabe:       db "   HISASHI SOGABE@"         ; "そがべ ひさし@"
+.KeitaKagaya:         db "    KEITA KAGAYA@"          ; "かがや けいた@"
+.YoshinoriMatsuda:    db " YOSHINORI MATSUDA@"        ; "まつだ よしのり@"
+.HitomiSato:          db "    HITOMI SATO@"           ; "さとう ひとみ@"
+.ToruOsawa:           db "     TORU OSAWA@"           ; "おおさわ とおる@"
+.TakaoOhara:          db "    TAKAO OHARA@"           ; "おおはら たかお@"
+.YuichiroIto:         db "    YUICHIRO ITO@"          ; "いとう ゆういちろう@"
+.TakaoShimizu:        db "   TAKAO SHIMIZU@"          ; "しみず たかお@"
 .Planning:            db " SPECIAL PRODUCTION"
                     next "      PLANNING"             ; "きかくかいはつぶ@"
                     next " & DEVELOPMENT DEPT.@"
-.KeitaNakamura:       db "   KEITA NAKAMURA@"         ; "なかむら けいた@"
-.HirotakaUemura:      db "  HIROTAKA UEMURA@"         ; "うえむら ひろたか@"
-.HiroakiTamura:       db "   HIROAKI TAMURA@"         ; "たむら ひろあき@"
-.NoriakiSakaguchi:    db " NORIAKI SAKAGUCHI@"        ; "さかぐち のりあき@"
-.MiyukiSato:          db "    MIYUKI SATO@"           ; "さとう みゆき@"
-.GakuziNomoto:        db "   GAKUZI NOMOTO@"          ; "のもと がくじ@"
-.AiMashima:           db "     AI MASHIMA@"           ; "ましま あい@"
-.MikihiroIshikawa:    db " MIKIHIRO ISHIKAWA@"        ; "いしかわ みきひろ@"
-.HideyukiHashimoto:   db " HIDEYUKI HASHIMOTO@"       ; "はしもと ひでゆき@"
-.SatoshiYamato:       db "   SATOSHI YAMATO@"         ; "やまと さとし@"
-.ShigeruMiyamoto:     db "  SHIGERU MIYAMOTO@"        ; "みやもと しげる@"
+.KeitaNakamura:       db "   KEITA NAKAMURA@"         ; "なかむら けいた@"
+.HirotakaUemura:      db "  HIROTAKA UEMURA@"         ; "うえむら ひろたか@"
+.HiroakiTamura:       db "   HIROAKI TAMURA@"         ; "たむら ひろあき@"
+.NoriakiSakaguchi:    db " NORIAKI SAKAGUCHI@"        ; "さかぐち のりあき@"
+.MiyukiSato:          db "    MIYUKI SATO@"           ; "さとう みゆき@"
+.GakuziNomoto:        db "   GAKUZI NOMOTO@"          ; "のもと がくじ@"
+.AiMashima:           db "     AI MASHIMA@"           ; "ましま あい@"
+.MikihiroIshikawa:    db " MIKIHIRO ISHIKAWA@"        ; "いしかわ みきひろ@"
+.HideyukiHashimoto:   db " HIDEYUKI HASHIMOTO@"       ; "はしもと ひでゆき@"
+.SatoshiYamato:       db "   SATOSHI YAMATO@"         ; "やまと さとし@"
+.ShigeruMiyamoto:     db "  SHIGERU MIYAMOTO@"        ; "みやもと しげる@"
 .End:                 db "        END@"               ; "おしまい@"
-.Unknown:             db "      ????????@"            ; "????????@"
+.Unknown:             db "      ????????@"            ; "????????@"
 .GailTilden:          db "    GAIL TILDEN@"
 .NobOgasawara:        db "   NOB OGASAWARA@"
 .SethMcMahill:        db "   SETH McMAHILL@"
@@ -179,32 +179,32 @@
 .KazuyoshiOsawa:      db "  KAZUYOSHI OSAWA@"
 .KimikoNakamichi:     db "  KIMIKO NAKAMICHI@"
 .Staff:               db "      #MON"                 ; "ポケットモンスター"
-                    next "  CRYSTAL VERSION"          ; "  クりスタル バージョン"
-                    next "       STAFF@"              ; "    スタッフ@"
-.Director:            db "      DIRECTOR@"            ; "エグゼクティブ ディレクター@"
+                    next "  CRYSTAL VERSION"          ; "  クりスタル バージョン"
+                    next "       STAFF@"              ; "    スタッフ@"
+.Director:            db "      DIRECTOR@"            ; "エグゼクティブ ディレクター@"
 .CoDirector:          db "    CO-DIRECTOR@"           ; "ディレクター@"
 .Programmers:         db "    PROGRAMMERS@"           ; "プログラム@"
-.GraphicsDirector:    db " GRAPHICS DIRECTOR@"        ; "グラフィック ディレクター@"
-.MonsterDesign:       db "   MONSTER DESIGN@"         ; "# デザイン@"
-.GraphicsDesign:      db "  GRAPHICS DESIGN@"         ; "グラフィック デザイン@"
+.GraphicsDirector:    db " GRAPHICS DIRECTOR@"        ; "グラフィック ディレクター@"
+.MonsterDesign:       db "   MONSTER DESIGN@"         ; "# デザイン@"
+.GraphicsDesign:      db "  GRAPHICS DESIGN@"         ; "グラフィック デザイン@"
 .Music:               db "       MUSIC@"              ; "おんがく@"
-.SoundEffects:        db "   SOUND EFFECTS@"          ; "サウンド エフ→クト@"
+.SoundEffects:        db "   SOUND EFFECTS@"          ; "サウンド エフ→クト@"
 .GameDesign:          db "    GAME DESIGN@"           ; "ゲームデザイン@"
-.GameScenario:        db "   GAME SCENARIO@"          ; "シナりォ@"
-.ToolProgramming:     db "  TOOL PROGRAMMING@"        ; "ツール プログラム@"
-.ParametricDesign:    db " PARAMETRIC DESIGN@"        ; "パラメーター せってい@"
-.ScriptDesign:        db "   SCRIPT DESIGN@"          ; "スクりプト せってい@"
-.MapDataDesign:       db "  MAP DATA DESIGN@"         ; "マップデータ せってい@"
-.MapDesign:           db "     MAP DESIGN@"           ; "マップ デザイン@"
+.GameScenario:        db "   GAME SCENARIO@"          ; "シナりオ@"
+.ToolProgramming:     db "  TOOL PROGRAMMING@"        ; "ツール プログラム@"
+.ParametricDesign:    db " PARAMETRIC DESIGN@"        ; "パラメーター せってい@"
+.ScriptDesign:        db "   SCRIPT DESIGN@"          ; "スクりプト せってい@"
+.MapDataDesign:       db "  MAP DATA DESIGN@"         ; "マップデータ せってい@"
+.MapDesign:           db "     MAP DESIGN@"           ; "マップ デザイン@"
 .ProductTesting:      db "  PRODUCT TESTING@"         ; "デバッグプレイ@"
 .SpecialThanks:       db "   SPECIAL THANKS@"         ; "スぺシャルサンクス@"
 .Producers:           db "     PRODUCERS@"            ; "プロデューサー@"
-.ExecutiveProducer:   db " EXECUTIVE PRODUCER@"       ; "エグゼクティブ プロデューサー@"
-.PokemonAnimation:    db " #MON ANIMATION@"           ; "# アニメーション@"
-.PokedexText:         db "    #DEX TEXT@"             ; "ずかん テキスト@"
-.MobilePrjLeader:     db " MOBILE PRJ. LEADER@"       ; "モバイルプロジ→クト りーダー@"
-.MobileSystemAd:      db " MOBILE SYSTEM AD.@"        ; "モバイル システムアドバイザー@"
-.MobileStadiumDir:    db "MOBILE STADIUM DIR.@"       ; "モバイルスタジアム ディレクター@"
+.ExecutiveProducer:   db " EXECUTIVE PRODUCER@"       ; "エグゼクティブ プロデューサー@"
+.PokemonAnimation:    db " #MON ANIMATION@"           ; "# アニメーション@"
+.PokedexText:         db "    #DEX TEXT@"             ; "ずかん テキスト@"
+.MobilePrjLeader:     db " MOBILE PRJ. LEADER@"       ; "モバイルプロジ→クト りーダー@"
+.MobileSystemAd:      db " MOBILE SYSTEM AD.@"        ; "モバイル システムアドバイザー@"
+.MobileStadiumDir:    db "MOBILE STADIUM DIR.@"       ; "モバイルスタジアム ディレクター@"
 .Coordination:        db "    COORDINATION@"          ; "コーディネーター@"
 .UsVersionStaff:      db "  US VERSION STAFF@"
 .UsCoordination:      db "  US COORDINATION@"
--- /dev/null
+++ b/data/decorations/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
--- a/data/default_names.asm
+++ /dev/null
@@ -1,39 +1,0 @@
-ChrisNameMenuHeader: ; 882b5
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 11, 10 ; end coords
-	dw .MaleNames
-	db 1 ; ????
-	db 0 ; default option
-
-.MaleNames: ; 882be
-	db $91 ; flags
-	db 5 ; items
-	db "NEW NAME@"
-MalePlayerNameArray: ; 882c9
-	db "CHRIS@"
-	db "MAT@"
-	db "ALLAN@"
-	db "JON@"
-	db 2 ; displacement
-	db " NAME @" ; title
-
-KrisNameMenuHeader: ; 882e5
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 11, 10 ; end coords
-	dw .FemaleNames
-	db 1 ; ????
-	db 0 ; default option
-
-.FemaleNames: ; 882ee
-	db $91 ; flags
-	db 5 ; items
-	db "NEW NAME@"
-FemalePlayerNameArray: ; 882f9
-	db "KRIS@"
-	db "AMANDA@"
-	db "JUANA@"
-	db "JODI@"
-	db 2 ; displacement
-	db " NAME @" ; title
--- a/data/default_options.asm
+++ b/data/default_options.asm
@@ -11,8 +11,7 @@
 	db GBPRINTER_NORMAL
 ; Options2: menu account on
 	db 1 << MENU_ACCOUNT
-; $cfd2: ??
+
 	db $00
-; $cfd3: ??
 	db $00
 ; 14f84
--- /dev/null
+++ b/data/elevator_floors.asm
@@ -1,0 +1,35 @@
+ElevatorFloorNames:
+; entries correspond to FLOOR_* constants
+	dw .B4F
+	dw .B3F
+	dw .B2F
+	dw .B1F
+	dw ._1F
+	dw ._2F
+	dw ._3F
+	dw ._4F
+	dw ._5F
+	dw ._6F
+	dw ._7F
+	dw ._8F
+	dw ._9F
+	dw ._10F
+	dw ._11F
+	dw .ROOF
+
+.B4F:  db "B4F@"
+.B3F:  db "B3F@"
+.B2F:  db "B2F@"
+.B1F:  db "B1F@"
+._1F:  db "1F@"
+._2F:  db "2F@"
+._3F:  db "3F@"
+._4F:  db "4F@"
+._5F:  db "5F@"
+._6F:  db "6F@"
+._7F:  db "7F@"
+._8F:  db "8F@"
+._9F:  db "9F@"
+._10F: db "10F@"
+._11F: db "11F@"
+.ROOF: db "ROOF@"
--- a/data/emotes.asm
+++ /dev/null
@@ -1,22 +1,0 @@
-emote: MACRO
-; graphics pointer, length, starting tile
-	dw \1
-	db \2 tiles, BANK(\1)
-	dw vTiles1 tile \3
-ENDM
-
-Emotes: ; 144d
-; entries correspond to EMOTE_* constants
-	emote ShockEmote,     4, $78
-	emote QuestionEmote,  4, $78
-	emote HappyEmote,     4, $78
-	emote SadEmote,       4, $78
-	emote HeartEmote,     4, $78
-	emote BoltEmote,      4, $78
-	emote SleepEmote,     4, $78
-	emote FishEmote,      4, $78
-	emote JumpShadowGFX,  1, $7c
-	emote FishingRodGFX,  2, $7c
-	emote BoulderDustGFX, 2, $7e
-	emote GrassRustleGFX, 1, $7e
-; 14495
--- a/data/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/data/field_move_blocks.asm
+++ b/data/field_move_blocks.asm
@@ -1,53 +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
+	dbw TILESET_JOHTO,        .johto
+	dbw TILESET_JOHTO_MODERN, .johto_modern
+	dbw TILESET_KANTO,        .kanto
+	dbw TILESET_PARK,         .park
+	dbw TILESET_FOREST,       .forest
+	db -1 ; end
 
-.johto1 ; Johto OW
+.johto:
 ; 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
+	db $03, $02, 1 ; grass
+	db $5b, $3c, 0 ; tree
+	db $5f, $3d, 0 ; tree
+	db $63, $3f, 0 ; tree
+	db $67, $3e, 0 ; tree
+	db -1 ; end
 
-.johto2 ; Goldenrod area
+.johto_modern:
 ; facing block, replacement block, animation
 	db $03, $02, $01 ; grass
-	db -1
+	db -1 ; end
 
-.kanto ; Kanto OW
+.kanto:
 ; 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
+	db $0b, $0a, 1 ; grass
+	db $32, $6d, 0 ; tree
+	db $33, $6c, 0 ; tree
+	db $34, $6f, 0 ; tree
+	db $35, $4c, 0 ; tree
+	db $60, $6e, 0 ; tree
+	db -1 ; end
 
-.park ; National Park
+.park:
 ; facing block, replacement block, animation
-	db $13, $03, $01 ; grass
-	db $03, $04, $01 ; grass
-	db -1
+	db $13, $03, 1 ; grass
+	db $03, $04, 1 ; grass
+	db -1 ; end
 
-.ilex ; Ilex Forest
+.forest:
 ; facing block, replacement block, animation
-	db $0f, $17, $00
-	db -1
+	db $0f, $17, 0
+	db -1 ; end
 
 
 WhirlpoolBlockPointers: ; c8a4
-	dbw TILESET_JOHTO_1, .johto
-	db -1
+	dbw TILESET_JOHTO, .johto
+	db -1 ; end
 
-.johto ; c8a8
+.johto:
 ; facing block, replacement block, animation
-	db $07, $36, $00
-	db -1
+	db $07, $36, 0
+	db -1 ; end
--- /dev/null
+++ b/data/items/apricorn_balls.asm
@@ -1,0 +1,11 @@
+ApricornBalls: ; 24ca0
+	;  apricorn,     ball
+	db RED_APRICORN, LEVEL_BALL
+	db BLU_APRICORN, LURE_BALL
+	db YLW_APRICORN, MOON_BALL
+	db GRN_APRICORN, FRIEND_BALL
+	db WHT_APRICORN, FAST_BALL
+	db BLK_APRICORN, HEAVY_BALL
+	db PNK_APRICORN, LOVE_BALL
+	db -1
+; 24caf
--- a/data/items/attributes.asm
+++ b/data/items/attributes.asm
@@ -7,57 +7,57 @@
 
 ItemAttributes: ; 67c1
 ; entries correspond to constants/item_constants.asm
-; MASTER BALL
+; MASTER_BALL
 	item_attribute 0, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; ULTRA BALL
+; ULTRA_BALL
 	item_attribute 1200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
 ; BRIGHTPOWDER
 	item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; GREAT BALL
+; GREAT_BALL
 	item_attribute 600, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; # BALL
+; POKE_BALL
 	item_attribute 200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; TERU-SAMA
+; TOWN_MAP
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; BICYCLE
 	item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; MOON STONE
+; MOON_STONE
 	item_attribute 0, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; ANTIDOTE
 	item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; BURN HEAL
+; BURN_HEAL
 	item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; ICE HEAL
+; ICE_HEAL
 	item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; AWAKENING
 	item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; PARLYZ HEAL
+; PARLYZ_HEAL
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; FULL RESTORE
+; FULL_RESTORE
 	item_attribute 3000, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; MAX POTION
+; MAX_POTION
 	item_attribute 2500, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; HYPER POTION
+; HYPER_POTION
 	item_attribute 1200, 0, 200, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; SUPER POTION
+; SUPER_POTION
 	item_attribute 700, 0, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; POTION
 	item_attribute 300, 0, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; ESCAPE ROPE
+; ESCAPE_ROPE
 	item_attribute 550, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
 ; REPEL
 	item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
-; MAX ELIXER
+; MAX_ELIXER
 	item_attribute 4500, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; FIRE STONE
+; FIRE_STONE
 	item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; THUNDERSTONE
 	item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; WATER STONE
+; WATER_STONE
 	item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_19
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; HP UP
+; HP_UP
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; PROTEIN
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
@@ -65,159 +65,159 @@
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; CARBOS
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; LUCKY PUNCH
+; LUCKY_PUNCH
 	item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; CALCIUM
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; RARE CANDY
+; RARE_CANDY
 	item_attribute 4800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; X ACCURACY
+; X_ACCURACY
 	item_attribute 950, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; LEAF STONE
+; LEAF_STONE
 	item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; METAL POWDER
+; METAL_POWDER
 	item_attribute 10, HELD_METAL_POWDER, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; NUGGET
 	item_attribute 10000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; # DOLL
+; POKE_DOLL
 	item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; FULL HEAL
+; FULL_HEAL
 	item_attribute 600, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; REVIVE
 	item_attribute 1500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; MAX REVIVE
+; MAX_REVIVE
 	item_attribute 4000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; GUARD SPEC.
+; GUARD_SPEC
 	item_attribute 700, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; SUPER REPEL
+; SUPER_REPEL
 	item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
-; MAX REPEL
+; MAX_REPEL
 	item_attribute 700, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
-; DIRE HIT
+; DIRE_HIT
 	item_attribute 650, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; TERU-SAMA
+; ITEM_2D
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; FRESH WATER
+; FRESH_WATER
 	item_attribute 200, 0, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; SODA POP
+; SODA_POP
 	item_attribute 300, 0, 60, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; LEMONADE
 	item_attribute 350, 0, 80, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; X ATTACK
+; X_ATTACK
 	item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; TERU-SAMA
+; ITEM_32
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; X DEFEND
+; X_DEFEND
 	item_attribute 550, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; X SPEED
+; X_SPEED
 	item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; X SPECIAL
+; X_SPECIAL
 	item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; COIN CASE
+; COIN_CASE
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
 ; ITEMFINDER
 	item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; POKE_FLUTE
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; EXP.SHARE
+; EXP_SHARE
 	item_attribute 3000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; OLD ROD
+; OLD_ROD
 	item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; GOOD ROD
+; GOOD_ROD
 	item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; SILVER LEAF
+; SILVER_LEAF
 	item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SUPER ROD
+; SUPER_ROD
 	item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; PP UP
+; PP_UP
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; ETHER
 	item_attribute 1200, 0, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; MAX ETHER
+; MAX_ETHER
 	item_attribute 2000, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; ELIXER
 	item_attribute 3000, 0, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; RED SCALE
+; RED_SCALE
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; SECRETPOTION
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; S.S.TICKET
+; S_S_TICKET
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; MYSTERY EGG
+; MYSTERY_EGG
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; CLEAR BELL
+; CLEAR_BELL
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SILVER WING
+; SILVER_WING
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; MOOMOO MILK
+; MOOMOO_MILK
 	item_attribute 500, 0, 100, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; QUICK CLAW
+; QUICK_CLAW
 	item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; PSNCUREBERRY
 	item_attribute 10, HELD_HEAL_POISON, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; GOLD LEAF
+; GOLD_LEAF
 	item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SOFT SAND
+; SOFT_SAND
 	item_attribute 100, HELD_GROUND_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SHARP BEAK
+; SHARP_BEAK
 	item_attribute 100, HELD_FLYING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; PRZCUREBERRY
 	item_attribute 10, HELD_HEAL_PARALYZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; BURNT BERRY
+; BURNT_BERRY
 	item_attribute 10, HELD_HEAL_FREEZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; ICE BERRY
+; ICE_BERRY
 	item_attribute 10, HELD_HEAL_BURN, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; POISON BARB
+; POISON_BARB
 	item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; KING'S ROCK
+; KINGS_ROCK
 	item_attribute 100, HELD_FLINCH, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BITTER BERRY
+; BITTER_BERRY
 	item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_PARTY
-; MINT BERRY
+; MINT_BERRY
 	item_attribute 10, HELD_HEAL_SLEEP, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; RED APRICORN
+; RED_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; TINYMUSHROOM
 	item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BIG MUSHROOM
+; BIG_MUSHROOM
 	item_attribute 5000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; SILVERPOWDER
 	item_attribute 100, HELD_BUG_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BLU APRICORN
+; BLU_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_5A
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; AMULET COIN
+; AMULET_COIN
 	item_attribute 100, HELD_AMULET_COIN, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; YLW APRICORN
+; YLW_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; GRN APRICORN
+; GRN_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; CLEANSE TAG
+; CLEANSE_TAG
 	item_attribute 200, HELD_CLEANSE_TAG, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; MYSTIC WATER
+; MYSTIC_WATER
 	item_attribute 100, HELD_WATER_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; TWISTEDSPOON
 	item_attribute 100, HELD_PSYCHIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; WHT APRICORN
+; WHT_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; BLACKBELT
 	item_attribute 100, HELD_FIGHTING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BLK APRICORN
+; BLK_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_64
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; PNK APRICORN
+; PNK_APRICORN
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; BLACKGLASSES
 	item_attribute 100, HELD_DARK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; SLOWPOKETAIL
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; PINK BOW
+; PINK_BOW
 	item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; STICK
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SMOKE BALL
+; SMOKE_BALL
 	item_attribute 200, HELD_ESCAPE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; NEVERMELTICE
 	item_attribute 100, HELD_ICE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
@@ -227,165 +227,165 @@
 	item_attribute 10, HELD_HEAL_STATUS, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; PEARL
 	item_attribute 1400, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BIG PEARL
+; BIG_PEARL
 	item_attribute 7500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; EVERSTONE
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SPELL TAG
+; SPELL_TAG
 	item_attribute 100, HELD_GHOST_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; RAGECANDYBAR
 	item_attribute 300, 0, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; GS BALL
+; GS_BALL
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BLUE CARD
+; BLUE_CARD
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
-; MIRACLE SEED
+; MIRACLE_SEED
 	item_attribute 100, HELD_GRASS_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; THICK CLUB
+; THICK_CLUB
 	item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; FOCUS BAND
+; FOCUS_BAND
 	item_attribute 200, HELD_FOCUS_BAND, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_78
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; ENERGYPOWDER
 	item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; ENERGY ROOT
+; ENERGY_ROOT
 	item_attribute 800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; HEAL POWDER
+; HEAL_POWDER
 	item_attribute 450, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; REVIVAL HERB
+; REVIVAL_HERB
 	item_attribute 2800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; HARD STONE
+; HARD_STONE
 	item_attribute 100, HELD_ROCK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; LUCKY EGG
+; LUCKY_EGG
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; CARD KEY
+; CARD_KEY
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; MACHINE PART
+; MACHINE_PART
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; EGG TICKET
+; EGG_TICKET
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; LOST ITEM
+; LOST_ITEM
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; STARDUST
 	item_attribute 2000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; STAR PIECE
 	item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BASEMENT KEY
+; BASEMENT_KEY
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
 ; PASS
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_87
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_88
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_89
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; CHARCOAL
 	item_attribute 9800, HELD_FIRE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BERRY JUICE
+; BERRY_JUICE
 	item_attribute 100, HELD_BERRY, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; SCOPE LENS
+; SCOPE_LENS
 	item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_8D
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_8E
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; METAL COAT
+; METAL_COAT
 	item_attribute 100, HELD_STEEL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; DRAGON FANG
+; DRAGON_FANG
 	item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_91
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; LEFTOVERS
 	item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_93
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_94
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_95
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; MYSTERYBERRY
 	item_attribute 10, HELD_RESTORE_PP, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; DRAGON SCALE
+; DRAGON_SCALE
 	item_attribute 2100, HELD_DRAGON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BERSERK GENE
+; BERSERK_GENE
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_99
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_9A
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_9B
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SACRED ASH
+; SACRED_ASH
 	item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; HEAVY BALL
+; HEAVY_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; FLOWER MAIL
+; FLOWER_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; LEVEL BALL
+; LEVEL_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; LURE BALL
+; LURE_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; FAST BALL
+; FAST_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; TERU-SAMA
+; ITEM_A2
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; LIGHT BALL
+; LIGHT_BALL
 	item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; FRIEND BALL
+; FRIEND_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; MOON BALL
+; MOON_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; LOVE BALL
+; LOVE_BALL
 	item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; NORMAL BOX
+; NORMAL_BOX
 	item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
-; GORGEOUS BOX
+; GORGEOUS_BOX
 	item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE
-; SUN STONE
+; SUN_STONE
 	item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; POLKADOT BOW
+; POLKADOT_BOW
 	item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_AB
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; UP-GRADE
+; UP_GRADE
 	item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; BERRY
 	item_attribute 10, HELD_BERRY, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
-; GOLD BERRY
+; GOLD_BERRY
 	item_attribute 10, HELD_BERRY, 30, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY
 ; SQUIRTBOTTLE
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_B0
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; PARK BALL
+; PARK_BALL
 	item_attribute 0, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE
-; RAINBOW WING
+; RAINBOW_WING
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_B3
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BRICK PIECE
+; BRICK_PIECE
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; SURF MAIL
+; SURF_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; LITEBLUEMAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; PORTRAITMAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; LOVELY MAIL
+; LOVELY_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; EON MAIL
+; EON_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; MORPH MAIL
+; MORPH_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; BLUESKY MAIL
+; BLUESKY_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; MUSIC MAIL
+; MUSIC_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; MIRAGE MAIL
+; MIRAGE_MAIL
 	item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_BE
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; TM01
 	item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
@@ -395,7 +395,7 @@
 	item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; TM04
 	item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_C3
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; TM05
 	item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
@@ -445,7 +445,7 @@
 	item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; TM28
 	item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_DC
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
 ; TM29
 	item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
@@ -505,17 +505,17 @@
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
 ; HM07
 	item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE
-; TERU-SAMA
+; ITEM_FA
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; $fb
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; $fc
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; $fd
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; $fe
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; TERU-SAMA
+; $ff
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
-; ?
+; $00
 	item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
--- /dev/null
+++ b/data/items/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
--- a/data/items/descriptions.asm
+++ b/data/items/descriptions.asm
@@ -1,36 +1,3 @@
-PrintItemDescription: ; 0x1c8955
-; Print the description for item [CurSpecies] at de.
-
-	ld a, [CurSpecies]
-	cp TM01
-	jr c, .not_a_tm
-
-	ld [CurItem], a
-	push de
-	farcall GetTMHMItemMove
-	pop hl
-	ld a, [wd265]
-	ld [CurSpecies], a
-	predef PrintMoveDesc
-	ret
-
-.not_a_tm
-	push de
-	ld hl, ItemDescriptions
-	ld a, [CurSpecies]
-	dec a
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	pop hl
-	jp PlaceString
-; 0x1c8987
-
-
 ItemDescriptions:
 	dw MasterBallDesc
 	dw UltraBallDesc
--- /dev/null
+++ b/data/items/heal_hp.asm
@@ -1,0 +1,18 @@
+HealingHPAmounts: ; f3af
+	dbw FRESH_WATER,   50
+	dbw SODA_POP,      60
+	dbw LEMONADE,      80
+	dbw HYPER_POTION, 200
+	dbw SUPER_POTION,  50
+	dbw POTION,        20
+	dbw MAX_POTION,   MAX_STAT_VALUE
+	dbw FULL_RESTORE, MAX_STAT_VALUE
+	dbw MOOMOO_MILK,  100
+	dbw BERRY,         10
+	dbw GOLD_BERRY,    30
+	dbw ENERGYPOWDER,  50
+	dbw ENERGY_ROOT,  200
+	dbw RAGECANDYBAR,  20
+	dbw BERRY_JUICE,   20
+	dbw -1, 0 ; end
+; f3df
--- /dev/null
+++ b/data/items/heal_status.asm
@@ -1,0 +1,18 @@
+StatusHealingActions: ; f071
+	;  item,         party menu action text, status
+	db ANTIDOTE,     PARTYMENUTEXT_HEAL_PSN, 1 << PSN
+	db BURN_HEAL,    PARTYMENUTEXT_HEAL_BRN, 1 << BRN
+	db ICE_HEAL,     PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
+	db AWAKENING,    PARTYMENUTEXT_HEAL_SLP, SLP
+	db PARLYZ_HEAL,  PARTYMENUTEXT_HEAL_PAR, 1 << PAR
+	db FULL_HEAL,    PARTYMENUTEXT_HEAL_ALL, %11111111
+	db FULL_RESTORE, PARTYMENUTEXT_HEAL_ALL, %11111111
+	db HEAL_POWDER,  PARTYMENUTEXT_HEAL_ALL, %11111111
+	db PSNCUREBERRY, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
+	db PRZCUREBERRY, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
+	db BURNT_BERRY,  PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
+	db ICE_BERRY,    PARTYMENUTEXT_HEAL_BRN, 1 << BRN
+	db MINT_BERRY,   PARTYMENUTEXT_HEAL_SLP, SLP
+	db MIRACLEBERRY, PARTYMENUTEXT_HEAL_ALL, %11111111
+	db -1, 0, 0 ; end
+; f09e
--- a/data/items/marts.asm
+++ b/data/items/marts.asm
@@ -1,4 +1,5 @@
 Marts: ; 160a9
+; entries correspond to MART_* constants
 	dw MartCherrygrove
 	dw MartCherrygroveDex
 	dw MartViolet
@@ -43,7 +44,7 @@
 	db ANTIDOTE
 	db PARLYZ_HEAL
 	db AWAKENING
-	db $ff
+	db -1 ; end
 ; 160f3
 
 MartCherrygroveDex: ; 160f3
@@ -53,7 +54,7 @@
 	db ANTIDOTE
 	db PARLYZ_HEAL
 	db AWAKENING
-	db $ff
+	db -1 ; end
 ; 160fa
 
 MartViolet: ; 160fa
@@ -68,7 +69,7 @@
 	db X_ATTACK
 	db X_SPEED
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 16106
 
 MartAzalea: ; 16106
@@ -82,7 +83,7 @@
 	db ANTIDOTE
 	db PARLYZ_HEAL
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 16111
 
 MartCianwood: ; 16111
@@ -92,7 +93,7 @@
 	db HYPER_POTION
 	db FULL_HEAL
 	db REVIVE
-	db $ff
+	db -1 ; end
 ; 16118
 
 MartGoldenrod2F1: ; 16118
@@ -104,7 +105,7 @@
 	db AWAKENING
 	db BURN_HEAL
 	db ICE_HEAL
-	db $ff
+	db -1 ; end
 ; 16121
 
 MartGoldenrod2F2: ; 16121
@@ -117,7 +118,7 @@
 	db FULL_HEAL
 	db POKE_DOLL
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 1612b
 
 MartGoldenrod3F: ; 1612b
@@ -129,7 +130,7 @@
 	db DIRE_HIT
 	db GUARD_SPEC
 	db X_ACCURACY
-	db $ff
+	db -1 ; end
 ; 16134
 
 MartGoldenrod4F: ; 16134
@@ -139,7 +140,7 @@
 	db CARBOS
 	db CALCIUM
 	db HP_UP
-	db $ff
+	db -1 ; end
 ; 1613b
 
 MartGoldenrod5F1: ; 1613b
@@ -147,7 +148,7 @@
 	db TM_THUNDERPUNCH
 	db TM_FIRE_PUNCH
 	db TM_ICE_PUNCH
-	db $ff
+	db -1 ; end
 ; 16140
 
 MartGoldenrod5F2: ; 16140
@@ -156,7 +157,7 @@
 	db TM_FIRE_PUNCH
 	db TM_ICE_PUNCH
 	db TM_HEADBUTT
-	db $ff
+	db -1 ; end
 ; 16146
 
 MartGoldenrod5F3: ; 16146
@@ -165,7 +166,7 @@
 	db TM_FIRE_PUNCH
 	db TM_ICE_PUNCH
 	db TM_ROCK_SMASH
-	db $ff
+	db -1 ; end
 ; 1614c
 
 MartGoldenrod5F4: ; 1614c
@@ -175,7 +176,7 @@
 	db TM_ICE_PUNCH
 	db TM_HEADBUTT
 	db TM_ROCK_SMASH
-	db $ff
+	db -1 ; end
 ; 16153
 
 MartOlivine: ; 16153
@@ -189,7 +190,7 @@
 	db ICE_HEAL
 	db SUPER_REPEL
 	db SURF_MAIL
-	db $ff
+	db -1 ; end
 ; 1615e
 
 MartEcruteak: ; 1615e
@@ -204,7 +205,7 @@
 	db BURN_HEAL
 	db ICE_HEAL
 	db REVIVE
-	db $ff
+	db -1 ; end
 ; 1616a
 
 MartMahogany1: ; 1616a
@@ -213,7 +214,7 @@
 	db SLOWPOKETAIL
 	db POKE_BALL
 	db POTION
-	db $ff
+	db -1 ; end
 ; 16170
 
 MartMahogany2: ; 16170
@@ -227,7 +228,7 @@
 	db SUPER_REPEL
 	db REVIVE
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 1617b
 
 MartBlackthorn: ; 1617b
@@ -241,7 +242,7 @@
 	db MAX_REPEL
 	db X_DEFEND
 	db X_ATTACK
-	db $ff
+	db -1 ; end
 ; 16186
 
 MartViridian: ; 16186
@@ -255,7 +256,7 @@
 	db AWAKENING
 	db BURN_HEAL
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 16191
 
 MartPewter: ; 16191
@@ -267,7 +268,7 @@
 	db PARLYZ_HEAL
 	db AWAKENING
 	db BURN_HEAL
-	db $ff
+	db -1 ; end
 ; 1619a
 
 MartCerulean: ; 1619a
@@ -281,7 +282,7 @@
 	db X_ATTACK
 	db DIRE_HIT
 	db SURF_MAIL
-	db $ff
+	db -1 ; end
 ; 161a5
 
 MartLavender: ; 161a5
@@ -294,7 +295,7 @@
 	db PARLYZ_HEAL
 	db AWAKENING
 	db BURN_HEAL
-	db $ff
+	db -1 ; end
 ; 161af
 
 MartVermilion: ; 161af
@@ -307,7 +308,7 @@
 	db AWAKENING
 	db BURN_HEAL
 	db LITEBLUEMAIL
-	db $ff
+	db -1 ; end
 ; 161b9
 
 MartCeladon2F1: ; 161b9
@@ -319,7 +320,7 @@
 	db REVIVE
 	db SUPER_REPEL
 	db MAX_REPEL
-	db $ff
+	db -1 ; end
 ; 161c2
 
 MartCeladon2F2: ; 161c2
@@ -334,7 +335,7 @@
 	db ICE_HEAL
 	db AWAKENING
 	db PARLYZ_HEAL
-	db $ff
+	db -1 ; end
 ; 161ce
 
 MartCeladon3F: ; 161ce
@@ -344,7 +345,7 @@
 	db TM_PROTECT
 	db TM_RAIN_DANCE
 	db TM_SANDSTORM
-	db $ff
+	db -1 ; end
 ; 161d5
 
 MartCeladon4F: ; 161d5
@@ -352,7 +353,7 @@
 	db POKE_DOLL
 	db LOVELY_MAIL
 	db SURF_MAIL
-	db $ff
+	db -1 ; end
 ; 161da
 
 MartCeladon5F1: ; 161da
@@ -362,7 +363,7 @@
 	db IRON
 	db CARBOS
 	db CALCIUM
-	db $ff
+	db -1 ; end
 ; 161e1
 
 MartCeladon5F2: ; 161e1
@@ -374,7 +375,7 @@
 	db X_DEFEND
 	db X_SPEED
 	db X_SPECIAL
-	db $ff
+	db -1 ; end
 ; 161ea
 
 MartFuchsia: ; 161ea
@@ -386,7 +387,7 @@
 	db FULL_HEAL
 	db MAX_REPEL
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 161f3
 
 MartSaffron: ; 161f3
@@ -399,7 +400,7 @@
 	db X_ATTACK
 	db X_DEFEND
 	db FLOWER_MAIL
-	db $ff
+	db -1 ; end
 ; 161fd
 
 MartMtMoon: ; 161fd
@@ -410,7 +411,7 @@
 	db LEMONADE
 	db REPEL
 	db PORTRAITMAIL
-	db $ff
+	db -1 ; end
 ; 16205
 
 MartIndigoPlateau: ; 16205
@@ -422,7 +423,7 @@
 	db FULL_RESTORE
 	db REVIVE
 	db FULL_HEAL
-	db $ff
+	db -1 ; end
 ; 1620e
 
 MartUnderground: ; 1620e
@@ -431,7 +432,7 @@
 	db ENERGY_ROOT
 	db HEAL_POWDER
 	db REVIVAL_HERB
-	db $ff
+	db -1 ; end
 ; 16214
 
 DefaultMart: ; 16214
@@ -438,5 +439,5 @@
 	db 2 ; # items
 	db POKE_BALL
 	db POTION
-	db $ff
+	db -1 ; end
 ; 16218
--- /dev/null
+++ b/data/items/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/items/x_stats.asm
@@ -1,0 +1,7 @@
+XItemStats: ; f504
+	;  item,      stat
+	db X_ATTACK,  ATTACK
+	db X_DEFEND,  DEFENSE
+	db X_SPEED,   SPEED
+	db X_SPECIAL, SP_ATTACK
+; f50c
--- a/data/mail_input_chars.asm
+++ b/data/mail_input_chars.asm
@@ -14,6 +14,6 @@
 	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 "“ ” [ ] ' : ;      "
 	db "UPPER  DEL   END   "
 ; 122c1
--- a/data/map_objects.asm
+++ /dev/null
@@ -1,47 +1,0 @@
-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,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_00
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_ITEM_TREE
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WANDER
-	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_SLOW
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_UP_DOWN
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_LEFT_RIGHT
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_DOWN
-	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_UP
-	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_LEFT
-	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_RIGHT
-	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_FAST
-	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_PLAYER
-	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0C
-	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0D
-	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0E
-	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0F
-	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_10
-	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_11
-	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_12
-	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWING
-	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_SCRIPTED
-	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   OBJECT_ACTION_BIG_SNORLAX,  $2e,    $01,    %1100 ; SPRITEMOVEDATA_SNORLAX
-	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   OBJECT_ACTION_BOUNCE,       $2e,    $00,    %0000 ; SPRITEMOVEDATA_POKEMON
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_SUDOWOODO
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $10,    %0000 ; SPRITEMOVEDATA_SMASHABLE_ROCK
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $00,    %0100 ; SPRITEMOVEDATA_STRENGTH_BOULDER
-	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWNOTEXACT
-	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   OBJECT_ACTION_00,           $8e,    $01,    %0000 ; SPRITEMOVEDATA_SHADOW
-	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   OBJECT_ACTION_EMOTE,        $8e,    $02,    %0000 ; SPRITEMOVEDATA_EMOTE
-	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   OBJECT_ACTION_00,           $82,    $00,    %0000 ; SPRITEMOVEDATA_SCREENSHAKE
-	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
-	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCLOCKWISE
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_LAPRAS,   $2e,    $01,    %1100 ; SPRITEMOVEDATA_20
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_DOLL,     $2e,    $01,    %1100 ; SPRITEMOVEDATA_BIGDOLL
-	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   OBJECT_ACTION_BOULDER_DUST, $8e,    $01,    %0000 ; SPRITEMOVEDATA_BOULDERDUST
-	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   OBJECT_ACTION_GRASS_SHAKE,  $8e,    $02,    %0000 ; SPRITEMOVEDATA_GRASS
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0010 ; SPRITEMOVEDATA_LAPRAS
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; 25
-; 4357
--- /dev/null
+++ b/data/maps/blocks.asm
@@ -1,0 +1,1047 @@
+SECTION "Map Blocks 1", ROMX
+
+Route32_Blocks:
+	INCBIN "maps/Route32.blk"
+
+Route40_Blocks:
+	INCBIN "maps/Route40.blk"
+
+Route36_Blocks:
+	INCBIN "maps/Route36.blk"
+
+Route44_Blocks:
+	INCBIN "maps/Route44.blk"
+
+Route28_Blocks:
+	INCBIN "maps/Route28.blk"
+
+BetaHerosHouse_Blocks:
+	INCBIN "maps/unused/BetaHerosHouse.blk"
+
+CeladonCity_Blocks:
+	INCBIN "maps/CeladonCity.blk"
+
+SaffronCity_Blocks:
+	INCBIN "maps/SaffronCity.blk"
+
+Route2_Blocks:
+	INCBIN "maps/Route2.blk"
+
+ElmsHouse_Blocks:
+	INCBIN "maps/ElmsHouse.blk"
+
+BetaSproutTower1_Blocks:
+	INCBIN "maps/unused/BetaSproutTower1.blk"
+
+Route11_Blocks:
+	INCBIN "maps/Route11.blk"
+
+BetaSproutTower5_Blocks:
+	INCBIN "maps/unused/BetaSproutTower5.blk"
+
+Route15_Blocks:
+	INCBIN "maps/Route15.blk"
+
+BetaSproutTower9_Blocks:
+	INCBIN "maps/unused/BetaSproutTower9.blk"
+
+Route19_Blocks:
+	INCBIN "maps/Route19.blk"
+
+BetaBlackthornCity_Blocks:
+	INCBIN "maps/unused/BetaBlackthornCity.blk"
+
+Route10South_Blocks:
+	INCBIN "maps/Route10South.blk"
+
+Pokecenter2F_Blocks:
+CinnabarPokecenter2FBeta_Blocks:
+CeruleanPokecenter2FBeta_Blocks:
+Route10Pokecenter2FBeta_Blocks:
+VermilionPokecenter2FBeta_Blocks:
+PewterPokecenter2FBeta_Blocks:
+FuchsiaPokecenter2FBeta_Blocks:
+LavenderPokecenter2FBeta_Blocks:
+CeladonPokecenter2FBeta_Blocks:
+ViridianPokecenter2FBeta_Blocks:
+SaffronPokecenter2FBeta_Blocks:
+	INCBIN "maps/Pokecenter2F.blk"
+
+Route41_Blocks:
+	INCBIN "maps/Route41.blk"
+
+Route33_Blocks:
+	INCBIN "maps/Route33.blk"
+
+Route45_Blocks:
+	INCBIN "maps/Route45.blk"
+
+Route29_Blocks:
+	INCBIN "maps/Route29.blk"
+
+Route37_Blocks:
+	INCBIN "maps/Route37.blk"
+
+LavenderTown_Blocks:
+	INCBIN "maps/LavenderTown.blk"
+
+PalletTown_Blocks:
+	INCBIN "maps/PalletTown.blk"
+
+Route25_Blocks:
+	INCBIN "maps/Route25.blk"
+
+Route24_Blocks:
+	INCBIN "maps/Route24.blk"
+
+BetaVioletCity_Blocks:
+	INCBIN "maps/unused/BetaVioletCity.blk"
+
+Route3_Blocks:
+	INCBIN "maps/Route3.blk"
+
+PewterCity_Blocks:
+	INCBIN "maps/PewterCity.blk"
+
+BetaIlexForest_Blocks:
+	INCBIN "maps/unused/BetaIlexForest.blk"
+
+BetaSproutTower2_Blocks:
+	INCBIN "maps/unused/BetaSproutTower2.blk"
+
+Route12_Blocks:
+	INCBIN "maps/Route12.blk"
+
+BetaGoldenrodCity_Blocks:
+	INCBIN "maps/unused/BetaGoldenrodCity.blk"
+
+Route20_Blocks:
+	INCBIN "maps/Route20.blk"
+
+BetaSproutTower6_Blocks:
+	INCBIN "maps/unused/BetaSproutTower6.blk"
+
+BetaPokecenterMainHouse_Blocks:
+	INCBIN "maps/unused/BetaPokecenterMainHouse.blk"
+
+Route30_Blocks:
+	INCBIN "maps/Route30.blk"
+
+Route26_Blocks:
+	INCBIN "maps/Route26.blk"
+
+Route42_Blocks:
+	INCBIN "maps/Route42.blk"
+
+Route34_Blocks:
+	INCBIN "maps/Route34.blk"
+
+Route46_Blocks:
+	INCBIN "maps/Route46.blk"
+
+FuchsiaCity_Blocks:
+	INCBIN "maps/FuchsiaCity.blk"
+
+Route38_Blocks:
+	INCBIN "maps/Route38.blk"
+
+BetaCianwoodCity_Blocks:
+	INCBIN "maps/unused/BetaCianwoodCity.blk"
+
+OlivineTimsHouse_Blocks:
+OlivineHouseBeta_Blocks:
+OlivinePunishmentSpeechHouse_Blocks:
+OlivineGoodRodHouse_Blocks:
+Route39Farmhouse_Blocks:
+MahoganyRedGyaradosSpeechHouse_Blocks:
+BlackthornDragonSpeechHouse_Blocks:
+BlackthornEmysHouse_Blocks:
+MoveDeletersHouse_Blocks:
+CeruleanGymBadgeSpeechHouse_Blocks:
+CeruleanPoliceStation_Blocks:
+CeruleanTradeSpeechHouse_Blocks:
+BillsHouse_Blocks:
+CharcoalKiln_Blocks:
+LakeOfRageHiddenPowerHouse_Blocks:
+LakeOfRageMagikarpHouse_Blocks:
+GoldenrodHappinessRater_Blocks:
+GoldenrodBillsHouse_Blocks:
+GoldenrodPPSpeechHouse_Blocks:
+GoldenrodNameRater_Blocks:
+VermilionHouseFishingSpeechHouse_Blocks:
+VermilionMagnetTrainSpeechHouse_Blocks:
+VermilionHouseDiglettsCaveSpeechHouse_Blocks:
+BluesHouse_Blocks:
+PewterNidoranSpeechHouse_Blocks:
+PewterSnoozeSpeechHouse_Blocks:
+FuchsiaBillSpeechHouse_Blocks:
+LavenderSpeechHouse_Blocks:
+LavenderNameRater_Blocks:
+Route12SuperRodHouse_Blocks:
+Route28FamousSpeechHouse_Blocks:
+CeladonMansionRoofHouse_Blocks:
+Route16FuchsiaSpeechHouse_Blocks:
+ManiasHouse_Blocks:
+CianwoodPharmacy_Blocks:
+CianwoodPhotoStudio_Blocks:
+CianwoodLugiaSpeechHouse_Blocks:
+PokeSeersHouse_Blocks:
+ViridianNicknameSpeechHouse_Blocks:
+Route2NuggetSpeechHouse_Blocks:
+KrissNeighborsHouse_Blocks:
+Route26HealSpeechHouse_Blocks:
+Route26DayofWeekSiblingsHouse_Blocks:
+Route27SandstormHouse_Blocks:
+MrPsychicsHouse_Blocks:
+Route5CleanseTagSpeechHouse_Blocks:
+CherrygroveGymSpeechHouse_Blocks:
+GuideGentsHouse_Blocks:
+CherrygroveEvolutionSpeechHouse_Blocks:
+Route30BerrySpeechHouse_Blocks:
+	INCBIN "maps/House1.blk"
+
+SafariZoneFuchsiaGateBeta_Blocks:
+Route19FuchsiaGate_Blocks:
+Route43MahoganyGate_Blocks:
+Route43Gate_Blocks:
+Route35GoldenrodGate_Blocks:
+Route36RuinsOfAlphGate_Blocks:
+Route34IlexForestGate_Blocks:
+Route6SaffronGate_Blocks:
+Route40BattleTowerGate_Blocks:
+Route2Gate_Blocks:
+Route29Route46Gate_Blocks:
+Route5SaffronGate_Blocks:
+	INCBIN "maps/NorthSouthGate.blk"
+
+BetaEcruteakCity_Blocks:
+	INCBIN "maps/unused/BetaEcruteakCity.blk"
+
+BetaCherrygroveCity_Blocks:
+	INCBIN "maps/unused/BetaCherrygroveCity.blk"
+
+CinnabarIsland_Blocks:
+	INCBIN "maps/CinnabarIsland.blk"
+
+Route4_Blocks:
+	INCBIN "maps/Route4.blk"
+
+Route8_Blocks:
+	INCBIN "maps/Route8.blk"
+
+BetaSproutTower3_Blocks:
+	INCBIN "maps/unused/BetaSproutTower3.blk"
+
+ViridianCity_Blocks:
+	INCBIN "maps/ViridianCity.blk"
+
+Route13_Blocks:
+	INCBIN "maps/Route13.blk"
+
+Route21_Blocks:
+	INCBIN "maps/Route21.blk"
+
+BetaSproutTower7_Blocks:
+	INCBIN "maps/unused/BetaSproutTower7.blk"
+
+Route17_Blocks:
+	INCBIN "maps/Route17.blk"
+
+BetaMahoganyTown_Blocks:
+	INCBIN "maps/unused/BetaMahoganyTown.blk"
+
+Route31_Blocks:
+	INCBIN "maps/Route31.blk"
+
+Route27_Blocks:
+	INCBIN "maps/Route27.blk"
+
+Route35_Blocks:
+	INCBIN "maps/Route35.blk"
+
+Route43_Blocks:
+	INCBIN "maps/Route43.blk"
+
+Route39_Blocks:
+	INCBIN "maps/Route39.blk"
+
+KrissHouse1F_Blocks:
+	INCBIN "maps/KrissHouse1F.blk"
+
+Route38EcruteakGate_Blocks:
+Route42EcruteakGate_Blocks:
+Route32RuinsOfAlphGate_Blocks:
+IlexForestAzaleaGate_Blocks:
+Route15FuchsiaGate_Blocks:
+Route8SaffronGate_Blocks:
+Route16Gate_Blocks:
+Route7SaffronGate_Blocks:
+Route17Route18Gate_Blocks:
+Route31VioletGate_Blocks:
+	INCBIN "maps/EastWestGate.blk"
+
+BetaAzaleaTown_Blocks:
+	INCBIN "maps/unused/BetaAzaleaTown.blk"
+
+VermilionCity_Blocks:
+	INCBIN "maps/VermilionCity.blk"
+
+BetaOlivineCity_Blocks:
+	INCBIN "maps/unused/BetaOlivineCity.blk"
+
+BetaNewBarkTown_Blocks:
+	INCBIN "maps/unused/BetaNewBarkTown.blk"
+
+ElmsLab_Blocks:
+	INCBIN "maps/ElmsLab.blk"
+
+CeruleanCity_Blocks:
+	INCBIN "maps/CeruleanCity.blk"
+
+Route1_Blocks:
+	INCBIN "maps/Route1.blk"
+
+Route5_Blocks:
+	INCBIN "maps/Route5.blk"
+
+Route9_Blocks:
+	INCBIN "maps/Route9.blk"
+
+Route22_Blocks:
+	INCBIN "maps/Route22.blk"
+
+
+SECTION "Map Blocks 2", ROMX
+
+Route14_Blocks:
+	INCBIN "maps/Route14.blk"
+
+BetaSproutTower8_Blocks:
+	INCBIN "maps/unused/BetaSproutTower8.blk"
+
+OlivineMart_Blocks:
+EcruteakMart_Blocks:
+BlackthornMart_Blocks:
+CeruleanMart_Blocks:
+AzaleaMart_Blocks:
+VioletMart_Blocks:
+VermilionMart_Blocks:
+PewterMart_Blocks:
+FuchsiaMart_Blocks:
+LavenderMart_Blocks:
+ViridianMart_Blocks:
+SaffronMart_Blocks:
+CherrygroveMart_Blocks:
+	INCBIN "maps/Mart.blk"
+
+Route10North_Blocks:
+	INCBIN "maps/Route10North.blk"
+
+BetaLakeOfRage_Blocks:
+	INCBIN "maps/unused/BetaLakeOfRage.blk"
+
+OlivinePokecenter1F_Blocks:
+MahoganyPokecenter1F_Blocks:
+EcruteakPokecenter1F_Blocks:
+BlackthornPokecenter1F_Blocks:
+CinnabarPokecenter1F_Blocks:
+CeruleanPokecenter1F_Blocks:
+Route10Pokecenter1F_Blocks:
+AzaleaPokecenter1F_Blocks:
+VioletPokecenter1F_Blocks:
+Route32Pokecenter1F_Blocks:
+GoldenrodPokecenter1F_Blocks:
+VermilionPokecenter1F_Blocks:
+PewterPokecenter1F_Blocks:
+FuchsiaPokecenter1F_Blocks:
+LavenderPokecenter1F_Blocks:
+SilverCavePokecenter1F_Blocks:
+CeladonPokecenter1F_Blocks:
+CianwoodPokecenter1F_Blocks:
+ViridianPokecenter1F_Blocks:
+SaffronPokecenter1F_Blocks:
+CherrygrovePokecenter1F_Blocks:
+	INCBIN "maps/Pokecenter1F.blk"
+
+BetaPewterMuseumOfScience1F_Blocks:
+	INCBIN "maps/unused/BetaPewterMuseumOfScience1F.blk"
+
+BetaPewterMuseumOfScience2F_Blocks:
+	INCBIN "maps/unused/BetaPewterMuseumOfScience2F.blk"
+
+EarlsPokemonAcademy_Blocks:
+	INCBIN "maps/EarlsPokemonAcademy.blk"
+
+BetaCinnabarPokemonLabHallway_Blocks:
+	INCBIN "maps/unused/BetaCinnabarPokemonLabHallway.blk"
+
+BetaCinnabarPokemonLabRoom1_Blocks:
+	INCBIN "maps/unused/BetaCinnabarPokemonLabRoom1.blk"
+
+BetaCinnabarPokemonLabRoom2_Blocks:
+	INCBIN "maps/unused/BetaCinnabarPokemonLabRoom2.blk"
+
+BetaCinnabarPokemonLabRoom3_Blocks:
+	INCBIN "maps/unused/BetaCinnabarPokemonLabRoom3.blk"
+
+GoldenrodDeptStore1F_Blocks:
+CeladonDeptStore1F_Blocks:
+	INCBIN "maps/DeptStore1F.blk"
+
+GoldenrodDeptStore2F_Blocks:
+CeladonDeptStore2F_Blocks:
+	INCBIN "maps/DeptStore2F.blk"
+
+GoldenrodDeptStore3F_Blocks:
+CeladonDeptStore3F_Blocks:
+	INCBIN "maps/DeptStore3F.blk"
+
+GoldenrodDeptStore4F_Blocks:
+CeladonDeptStore4F_Blocks:
+	INCBIN "maps/DeptStore4F.blk"
+
+GoldenrodDeptStore5F_Blocks:
+CeladonDeptStore5F_Blocks:
+	INCBIN "maps/DeptStore5F.blk"
+
+GoldenrodDeptStore6F_Blocks:
+CeladonDeptStore6F_Blocks:
+	INCBIN "maps/DeptStore6F.blk"
+
+GoldenrodDeptStoreElevator_Blocks:
+CeladonDeptStoreElevator_Blocks:
+	INCBIN "maps/DeptStoreElevator.blk"
+
+CeladonMansion1F_Blocks:
+	INCBIN "maps/CeladonMansion1F.blk"
+
+CeladonMansion2F_Blocks:
+	INCBIN "maps/CeladonMansion2F.blk"
+
+CeladonMansion3F_Blocks:
+	INCBIN "maps/CeladonMansion3F.blk"
+
+CeladonMansionRoof_Blocks:
+	INCBIN "maps/CeladonMansionRoof.blk"
+
+BetaHouse_Blocks:
+	INCBIN "maps/unused/BetaHouse.blk"
+
+CeladonGameCorner_Blocks:
+	INCBIN "maps/CeladonGameCorner.blk"
+
+CeladonGameCornerPrizeRoom_Blocks:
+	INCBIN "maps/CeladonGameCornerPrizeRoom.blk"
+
+Colosseum_Blocks:
+	INCBIN "maps/Colosseum.blk"
+
+TradeCenter_Blocks:
+TimeCapsule_Blocks:
+	INCBIN "maps/TradeCenter.blk"
+
+EcruteakLugiaSpeechHouse_Blocks:
+EcruteakItemfinderHouse_Blocks:
+VioletNicknameSpeechHouse_Blocks:
+VioletKylesHouse_Blocks:
+	INCBIN "maps/House2.blk"
+
+BetaCave_Blocks:
+	INCBIN "maps/unused/BetaCave.blk"
+
+UnionCaveB1F_Blocks:
+	INCBIN "maps/UnionCaveB1F.blk"
+
+UnionCaveB2F_Blocks:
+	INCBIN "maps/UnionCaveB2F.blk"
+
+UnionCave1F_Blocks:
+	INCBIN "maps/UnionCave1F.blk"
+
+NationalPark_Blocks:
+NationalParkBugContest_Blocks:
+	INCBIN "maps/NationalPark.blk"
+
+Route5UndergroundPathEntrance_Blocks:
+Route6UndergroundPathEntrance_Blocks:
+	INCBIN "maps/UndergroundPathEntrance.blk"
+
+BetaPokecenterTradeStation_Blocks:
+	INCBIN "maps/unused/BetaPokecenterTradeStation.blk"
+
+KurtsHouse_Blocks:
+	INCBIN "maps/KurtsHouse.blk"
+
+GoldenrodMagnetTrainStation_Blocks:
+	INCBIN "maps/GoldenrodMagnetTrainStation.blk"
+
+RuinsOfAlphOutside_Blocks:
+	INCBIN "maps/RuinsOfAlphOutside.blk"
+
+BetaRuinsOfAlphUnsolvedPuzzleRoom_Blocks:
+	INCBIN "maps/unused/BetaRuinsOfAlphUnsolvedPuzzleRoom.blk"
+
+RuinsOfAlphInnerChamber_Blocks:
+	INCBIN "maps/RuinsOfAlphInnerChamber.blk"
+
+RuinsOfAlphHoOhChamber_Blocks:
+RuinsOfAlphKabutoChamber_Blocks:
+RuinsOfAlphOmanyteChamber_Blocks:
+RuinsOfAlphAerodactylChamber_Blocks:
+	INCBIN "maps/RuinsOfAlphPuzzleChamber.blk"
+
+SproutTower1F_Blocks:
+	INCBIN "maps/SproutTower1F.blk"
+
+BetaSproutTowerCutOut1_Blocks:
+	INCBIN "maps/unused/BetaSproutTowerCutOut1.blk"
+
+SproutTower2F_Blocks:
+	INCBIN "maps/SproutTower2F.blk"
+
+BetaSproutTowerCutOut2_Blocks:
+	INCBIN "maps/unused/BetaSproutTowerCutOut2.blk"
+
+SproutTower3F_Blocks:
+	INCBIN "maps/SproutTower3F.blk"
+
+BetaSproutTowerCutOut3_Blocks:
+	INCBIN "maps/unused/BetaSproutTowerCutOut3.blk"
+
+RadioTower1F_Blocks:
+	INCBIN "maps/RadioTower1F.blk"
+
+RadioTower2F_Blocks:
+	INCBIN "maps/RadioTower2F.blk"
+
+RadioTower3F_Blocks:
+	INCBIN "maps/RadioTower3F.blk"
+
+RadioTower4F_Blocks:
+	INCBIN "maps/RadioTower4F.blk"
+
+RadioTower5F_Blocks:
+	INCBIN "maps/RadioTower5F.blk"
+
+NewBarkTown_Blocks:
+	INCBIN "maps/NewBarkTown.blk"
+
+CherrygroveCity_Blocks:
+	INCBIN "maps/CherrygroveCity.blk"
+
+VioletCity_Blocks:
+	INCBIN "maps/VioletCity.blk"
+
+AzaleaTown_Blocks:
+	INCBIN "maps/AzaleaTown.blk"
+
+CianwoodCity_Blocks:
+	INCBIN "maps/CianwoodCity.blk"
+
+GoldenrodCity_Blocks:
+	INCBIN "maps/GoldenrodCity.blk"
+
+OlivineCity_Blocks:
+	INCBIN "maps/OlivineCity.blk"
+
+EcruteakCity_Blocks:
+	INCBIN "maps/EcruteakCity.blk"
+
+MahoganyTown_Blocks:
+	INCBIN "maps/MahoganyTown.blk"
+
+LakeOfRage_Blocks:
+	INCBIN "maps/LakeOfRage.blk"
+
+BlackthornCity_Blocks:
+	INCBIN "maps/BlackthornCity.blk"
+
+SilverCaveOutside_Blocks:
+	INCBIN "maps/SilverCaveOutside.blk"
+
+Route6_Blocks:
+	INCBIN "maps/Route6.blk"
+
+Route7_Blocks:
+	INCBIN "maps/Route7.blk"
+
+Route16_Blocks:
+	INCBIN "maps/Route16.blk"
+
+Route18_Blocks:
+	INCBIN "maps/Route18.blk"
+
+GoldenrodUnderground_Blocks:
+	INCBIN "maps/GoldenrodUnderground.blk"
+
+GoldenrodUndergroundSwitchRoomEntrances_Blocks:
+	INCBIN "maps/GoldenrodUndergroundSwitchRoomEntrances.blk"
+
+GoldenrodDeptStoreB1F_Blocks:
+	INCBIN "maps/GoldenrodDeptStoreB1F.blk"
+
+GoldenrodUndergroundWarehouse_Blocks:
+	INCBIN "maps/GoldenrodUndergroundWarehouse.blk"
+
+BetaElevator_Blocks:
+	INCBIN "maps/unused/BetaElevator.blk"
+
+TinTower1F_Blocks:
+	INCBIN "maps/TinTower1F.blk"
+
+TinTower2F_Blocks:
+	INCBIN "maps/TinTower2F.blk"
+
+TinTower3F_Blocks:
+	INCBIN "maps/TinTower3F.blk"
+
+TinTower4F_Blocks:
+	INCBIN "maps/TinTower4F.blk"
+
+TinTower5F_Blocks:
+	INCBIN "maps/TinTower5F.blk"
+
+TinTower6F_Blocks:
+	INCBIN "maps/TinTower6F.blk"
+
+TinTower7F_Blocks:
+	INCBIN "maps/TinTower7F.blk"
+
+TinTower8F_Blocks:
+	INCBIN "maps/TinTower8F.blk"
+
+TinTower9F_Blocks:
+	INCBIN "maps/TinTower9F.blk"
+
+TinTowerRoof_Blocks:
+	INCBIN "maps/TinTowerRoof.blk"
+
+BurnedTower1F_Blocks:
+	INCBIN "maps/BurnedTower1F.blk"
+
+BurnedTowerB1F_Blocks:
+	INCBIN "maps/BurnedTowerB1F.blk"
+
+BetaCaveTestMap_Blocks:
+	INCBIN "maps/unused/BetaCaveTestMap.blk"
+
+MountMortar1FOutside_Blocks:
+	INCBIN "maps/MountMortar1FOutside.blk"
+
+MountMortar1FInside_Blocks:
+	INCBIN "maps/MountMortar1FInside.blk"
+
+MountMortar2FInside_Blocks:
+	INCBIN "maps/MountMortar2FInside.blk"
+
+MountMortarB1F_Blocks:
+	INCBIN "maps/MountMortarB1F.blk"
+
+IcePath1F_Blocks:
+	INCBIN "maps/IcePath1F.blk"
+
+IcePathB1F_Blocks:
+	INCBIN "maps/IcePathB1F.blk"
+
+IcePathB2FMahoganySide_Blocks:
+	INCBIN "maps/IcePathB2FMahoganySide.blk"
+
+IcePathB2FBlackthornSide_Blocks:
+	INCBIN "maps/IcePathB2FBlackthornSide.blk"
+
+IcePathB3F_Blocks:
+	INCBIN "maps/IcePathB3F.blk"
+
+WhirlIslandNW_Blocks:
+	INCBIN "maps/WhirlIslandNW.blk"
+
+WhirlIslandNE_Blocks:
+	INCBIN "maps/WhirlIslandNE.blk"
+
+WhirlIslandSW_Blocks:
+	INCBIN "maps/WhirlIslandSW.blk"
+
+WhirlIslandCave_Blocks:
+	INCBIN "maps/WhirlIslandCave.blk"
+
+WhirlIslandSE_Blocks:
+	INCBIN "maps/WhirlIslandSE.blk"
+
+WhirlIslandB1F_Blocks:
+	INCBIN "maps/WhirlIslandB1F.blk"
+
+WhirlIslandB2F_Blocks:
+	INCBIN "maps/WhirlIslandB2F.blk"
+
+WhirlIslandLugiaChamber_Blocks:
+	INCBIN "maps/WhirlIslandLugiaChamber.blk"
+
+SilverCaveRoom1_Blocks:
+	INCBIN "maps/SilverCaveRoom1.blk"
+
+SilverCaveRoom2_Blocks:
+	INCBIN "maps/SilverCaveRoom2.blk"
+
+SilverCaveRoom3_Blocks:
+	INCBIN "maps/SilverCaveRoom3.blk"
+
+BetaRocketHideout1_Blocks:
+	INCBIN "maps/unused/BetaRocketHideout1.blk"
+
+BetaRocketHideout2_Blocks:
+	INCBIN "maps/unused/BetaRocketHideout2.blk"
+
+BetaEmptyHouse_Blocks:
+	INCBIN "maps/unused/BetaEmptyHouse.blk"
+
+BetaRocketHideout3_Blocks:
+	INCBIN "maps/unused/BetaRocketHideout3.blk"
+
+MahoganyMart1F_Blocks:
+MountMoonGiftShop_Blocks:
+	INCBIN "maps/GiftShop.blk"
+
+TeamRocketBaseB1F_Blocks:
+	INCBIN "maps/TeamRocketBaseB1F.blk"
+
+TeamRocketBaseB2F_Blocks:
+	INCBIN "maps/TeamRocketBaseB2F.blk"
+
+TeamRocketBaseB3F_Blocks:
+	INCBIN "maps/TeamRocketBaseB3F.blk"
+
+BetaRoute23EarlyVersion_Blocks:
+	INCBIN "maps/unused/BetaRoute23EarlyVersion.blk"
+
+IndigoPlateauPokecenter1F_Blocks:
+	INCBIN "maps/IndigoPlateauPokecenter1F.blk"
+
+WillsRoom_Blocks:
+	INCBIN "maps/WillsRoom.blk"
+
+KogasRoom_Blocks:
+	INCBIN "maps/KogasRoom.blk"
+
+BrunosRoom_Blocks:
+	INCBIN "maps/BrunosRoom.blk"
+
+KarensRoom_Blocks:
+	INCBIN "maps/KarensRoom.blk"
+
+AzaleaGym_Blocks:
+	INCBIN "maps/AzaleaGym.blk"
+
+VioletGym_Blocks:
+	INCBIN "maps/VioletGym.blk"
+
+GoldenrodGym_Blocks:
+	INCBIN "maps/GoldenrodGym.blk"
+
+EcruteakGym_Blocks:
+	INCBIN "maps/EcruteakGym.blk"
+
+MahoganyGym_Blocks:
+	INCBIN "maps/MahoganyGym.blk"
+
+OlivineGym_Blocks:
+	INCBIN "maps/OlivineGym.blk"
+
+BetaUnknown_Blocks:
+	INCBIN "maps/unused/BetaUnknown.blk"
+
+CianwoodGym_Blocks:
+	INCBIN "maps/CianwoodGym.blk"
+
+BlackthornGym1F_Blocks:
+	INCBIN "maps/BlackthornGym1F.blk"
+
+BlackthornGym2F_Blocks:
+	INCBIN "maps/BlackthornGym2F.blk"
+
+OlivineLighthouse1F_Blocks:
+	INCBIN "maps/OlivineLighthouse1F.blk"
+
+OlivineLighthouse2F_Blocks:
+	INCBIN "maps/OlivineLighthouse2F.blk"
+
+OlivineLighthouse3F_Blocks:
+	INCBIN "maps/OlivineLighthouse3F.blk"
+
+OlivineLighthouse4F_Blocks:
+	INCBIN "maps/OlivineLighthouse4F.blk"
+
+OlivineLighthouse5F_Blocks:
+	INCBIN "maps/OlivineLighthouse5F.blk"
+
+OlivineLighthouse6F_Blocks:
+	INCBIN "maps/OlivineLighthouse6F.blk"
+
+
+SECTION "Map Blocks 3", ROMX
+
+BetaCave2_Blocks:
+	INCBIN "maps/unused/BetaCave2.blk"
+
+SlowpokeWellB1F_Blocks:
+	INCBIN "maps/SlowpokeWellB1F.blk"
+
+SlowpokeWellB2F_Blocks:
+	INCBIN "maps/SlowpokeWellB2F.blk"
+
+IlexForest_Blocks:
+	INCBIN "maps/IlexForest.blk"
+
+DarkCaveVioletEntrance_Blocks:
+	INCBIN "maps/DarkCaveVioletEntrance.blk"
+
+DarkCaveBlackthornEntrance_Blocks:
+	INCBIN "maps/DarkCaveBlackthornEntrance.blk"
+
+RuinsOfAlphResearchCenter_Blocks:
+	INCBIN "maps/RuinsOfAlphResearchCenter.blk"
+
+GoldenrodBikeShop_Blocks:
+	INCBIN "maps/GoldenrodBikeShop.blk"
+
+DanceTheatre_Blocks:
+	INCBIN "maps/DanceTheatre.blk"
+
+EcruteakHouse_Blocks:
+	INCBIN "maps/EcruteakHouse.blk"
+
+GoldenrodGameCorner_Blocks:
+	INCBIN "maps/GoldenrodGameCorner.blk"
+
+Route35NationalParkGate_Blocks:
+	INCBIN "maps/Route35NationalParkGate.blk"
+
+Route36NationalParkGate_Blocks:
+	INCBIN "maps/Route36NationalParkGate.blk"
+
+FastShip1F_Blocks:
+	INCBIN "maps/FastShip1F.blk"
+
+FastShipB1F_Blocks:
+	INCBIN "maps/FastShipB1F.blk"
+
+BetaFastShipInsideCutOut_Blocks:
+	INCBIN "maps/unused/BetaFastShipInsideCutOut.blk"
+
+FastShipCabins_NNW_NNE_NE_Blocks:
+	INCBIN "maps/FastShipCabins_NNW_NNE_NE.blk"
+
+FastShipCabins_SW_SSW_NW_Blocks:
+	INCBIN "maps/FastShipCabins_SW_SSW_NW.blk"
+
+FastShipCabins_SE_SSE_CaptainsCabin_Blocks:
+	INCBIN "maps/FastShipCabins_SE_SSE_CaptainsCabin.blk"
+
+OlivinePort_Blocks:
+	INCBIN "maps/OlivinePort.blk"
+
+VermilionPort_Blocks:
+	INCBIN "maps/VermilionPort.blk"
+
+OlivineCafe_Blocks:
+SafariZoneMainOffice_Blocks:
+	INCBIN "maps/OlivineCafe.blk"
+
+KrissHouse2F_Blocks:
+	INCBIN "maps/KrissHouse2F.blk"
+
+SaffronMagnetTrainStation_Blocks:
+	INCBIN "maps/SaffronMagnetTrainStation.blk"
+
+CeruleanGym_Blocks:
+	INCBIN "maps/CeruleanGym.blk"
+
+VermilionGym_Blocks:
+	INCBIN "maps/VermilionGym.blk"
+
+SaffronGym_Blocks:
+	INCBIN "maps/SaffronGym.blk"
+
+PowerPlant_Blocks:
+	INCBIN "maps/PowerPlant.blk"
+
+PokemonFanClub_Blocks:
+SafariZoneWardensHome_Blocks:
+	INCBIN "maps/PokemonFanClub.blk"
+
+FightingDojo_Blocks:
+	INCBIN "maps/FightingDojo.blk"
+
+SilphCo1F_Blocks:
+	INCBIN "maps/SilphCo1F.blk"
+
+ViridianGym_Blocks:
+	INCBIN "maps/ViridianGym.blk"
+
+TrainerHouse1F_Blocks:
+	INCBIN "maps/TrainerHouse1F.blk"
+
+TrainerHouseB1F_Blocks:
+	INCBIN "maps/TrainerHouseB1F.blk"
+
+RedsHouse1F_Blocks:
+	INCBIN "maps/RedsHouse1F.blk"
+
+RedsHouse2F_Blocks:
+	INCBIN "maps/RedsHouse2F.blk"
+
+OaksLab_Blocks:
+	INCBIN "maps/OaksLab.blk"
+
+MrFujisHouse_Blocks:
+	INCBIN "maps/MrFujisHouse.blk"
+
+LavRadioTower1F_Blocks:
+	INCBIN "maps/LavRadioTower1F.blk"
+
+SilverCaveItemRooms_Blocks:
+	INCBIN "maps/SilverCaveItemRooms.blk"
+
+DayCare_Blocks:
+	INCBIN "maps/DayCare.blk"
+
+SoulHouse_Blocks:
+	INCBIN "maps/SoulHouse.blk"
+
+PewterGym_Blocks:
+	INCBIN "maps/PewterGym.blk"
+
+CeladonGym_Blocks:
+	INCBIN "maps/CeladonGym.blk"
+
+BetaHouse2_Blocks:
+	INCBIN "maps/unused/BetaHouse2.blk"
+
+CeladonCafe_Blocks:
+	INCBIN "maps/CeladonCafe.blk"
+
+BetaCeladonMansion_Blocks:
+	INCBIN "maps/unused/BetaCeladonMansion.blk"
+
+RockTunnel1F_Blocks:
+	INCBIN "maps/RockTunnel1F.blk"
+
+RockTunnelB1F_Blocks:
+	INCBIN "maps/RockTunnelB1F.blk"
+
+DiglettsCave_Blocks:
+	INCBIN "maps/DiglettsCave.blk"
+
+MountMoon_Blocks:
+	INCBIN "maps/MountMoon.blk"
+
+SeafoamGym_Blocks:
+	INCBIN "maps/SeafoamGym.blk"
+
+MrPokemonsHouse_Blocks:
+	INCBIN "maps/MrPokemonsHouse.blk"
+
+VictoryRoadGate_Blocks:
+	INCBIN "maps/VictoryRoadGate.blk"
+
+OlivinePortPassage_Blocks:
+VermilionPortPassage_Blocks:
+	INCBIN "maps/PortPassage.blk"
+
+FuchsiaGym_Blocks:
+	INCBIN "maps/FuchsiaGym.blk"
+
+SafariZoneBeta_Blocks:
+	INCBIN "maps/SafariZoneBeta.blk"
+
+UndergroundPath_Blocks:
+	INCBIN "maps/UndergroundPath.blk"
+
+Route39Barn_Blocks:
+	INCBIN "maps/Route39Barn.blk"
+
+VictoryRoad_Blocks:
+	INCBIN "maps/VictoryRoad.blk"
+
+Route23_Blocks:
+	INCBIN "maps/Route23.blk"
+
+LancesRoom_Blocks:
+	INCBIN "maps/LancesRoom.blk"
+
+HallOfFame_Blocks:
+	INCBIN "maps/HallOfFame.blk"
+
+CopycatsHouse1F_Blocks:
+	INCBIN "maps/CopycatsHouse1F.blk"
+
+CopycatsHouse2F_Blocks:
+	INCBIN "maps/CopycatsHouse2F.blk"
+
+GoldenrodFlowerShop_Blocks:
+	INCBIN "maps/GoldenrodFlowerShop.blk"
+
+MountMoonSquare_Blocks:
+	INCBIN "maps/MountMoonSquare.blk"
+
+WiseTriosRoom_Blocks:
+	INCBIN "maps/WiseTriosRoom.blk"
+
+DragonsDen1F_Blocks:
+	INCBIN "maps/DragonsDen1F.blk"
+
+DragonsDenB1F_Blocks:
+	INCBIN "maps/DragonsDenB1F.blk"
+
+TohjoFalls_Blocks:
+	INCBIN "maps/TohjoFalls.blk"
+
+RuinsOfAlphHoOhItemRoom_Blocks:
+RuinsOfAlphKabutoItemRoom_Blocks:
+RuinsOfAlphOmanyteItemRoom_Blocks:
+RuinsOfAlphAerodactylItemRoom_Blocks:
+	INCBIN "maps/RuinsOfAlphItemRoom.blk"
+
+RuinsOfAlphHoOhWordRoom_Blocks:
+	INCBIN "maps/RuinsOfAlphHoOhWordRoom.blk"
+
+RuinsOfAlphKabutoWordRoom_Blocks:
+	INCBIN "maps/RuinsOfAlphKabutoWordRoom.blk"
+
+RuinsOfAlphOmanyteWordRoom_Blocks:
+	INCBIN "maps/RuinsOfAlphOmanyteWordRoom.blk"
+
+RuinsOfAlphAerodactylWordRoom_Blocks:
+	INCBIN "maps/RuinsOfAlphAerodactylWordRoom.blk"
+
+DragonShrine_Blocks:
+	INCBIN "maps/DragonShrine.blk"
+
+BattleTower1F_Blocks:
+	INCBIN "maps/BattleTower1F.blk"
+
+BattleTowerBattleRoom_Blocks:
+	INCBIN "maps/BattleTowerBattleRoom.blk"
+
+GoldenrodPokeComCenter2FMobile_Blocks:
+	INCBIN "maps/GoldenrodPokeComCenter2FMobile.blk"
+
+MobileTradeRoomMobile_Blocks:
+	INCBIN "maps/MobileTradeRoomMobile.blk"
+
+MobileBattleRoom_Blocks:
+	INCBIN "maps/MobileBattleRoom.blk"
+
+BattleTowerHallway_Blocks:
+	INCBIN "maps/BattleTowerHallway.blk"
+
+BattleTowerElevator_Blocks:
+	INCBIN "maps/BattleTowerElevator.blk"
+
+BattleTowerOutside_Blocks:
+	INCBIN "maps/BattleTowerOutside.blk"
+
+BetaBlank_Blocks:
+	INCBIN "maps/unused/BetaBlank.blk"
+
+GoldenrodDeptStoreRoof_Blocks:
+	INCBIN "maps/GoldenrodDeptStoreRoof.blk"
--- /dev/null
+++ b/data/maps/data.asm
@@ -1,0 +1,685 @@
+map_data: MACRO
+;\1: map name
+;\2: map id
+;\3: border block
+;\4: connections: combo of NORTH, SOUTH, WEST, and/or EAST, or 0 for none
+\1_MapData::
+	db \3
+	db \2_HEIGHT, \2_WIDTH
+	db BANK(\1_Blocks)
+	dw \1_Blocks
+	db BANK(\1_MapScripts)
+	dw \1_MapScripts
+	dw \1_MapEvents
+	db \4
+ENDM
+
+connection: MACRO
+if "\1" == "north"
+;\2: map id
+;\3: map name (eventually will be rolled into map id)
+;\4: x
+;\5: offset?
+;\6: strip length
+;\7: this map id
+	map \2
+	dw \3_Blocks + \2_WIDTH * (\2_HEIGHT - 3) + \5
+	dw OverworldMap + \4 + 3
+	db \6
+	db \2_WIDTH
+	db \2_HEIGHT * 2 - 1
+	db (\4 - \5) * -2
+	dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1
+endc
+
+if "\1" == "south"
+;\2: map id
+;\3: map name (eventually will be rolled into map id)
+;\4: x
+;\5: offset?
+;\6: strip length
+;\7: this map id
+	map \2
+	dw \3_Blocks + \5
+	dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3
+	db \6
+	db \2_WIDTH
+	db 0
+	db (\4 - \5) * -2
+	dw OverworldMap + \2_WIDTH + 7
+endc
+
+if "\1" == "west"
+;\2: map id
+;\3: map name (eventually will be rolled into map id)
+;\4: y
+;\5: offset?
+;\6: strip length
+;\7: this map id
+	map \2
+	dw \3_Blocks + (\2_WIDTH * \5) + \2_WIDTH - 3
+	dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3)
+	db \6
+	db \2_WIDTH
+	db (\4 - \5) * -2
+	db \2_WIDTH * 2 - 1
+	dw OverworldMap + \2_WIDTH * 2 + 6
+endc
+
+if "\1" == "east"
+;\2: map id
+;\3: map name (eventually will be rolled into map id)
+;\4: y
+;\5: offset?
+;\6: strip length
+;\7: this map id
+	map \2
+	dw \3_Blocks + (\2_WIDTH * \5)
+	dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3
+	db \6
+	db \2_WIDTH
+	db (\4 - \5) * -2
+	db 0
+	dw OverworldMap + \2_WIDTH + 7
+endc
+ENDM
+
+
+	map_data NewBarkTown, NEW_BARK_TOWN, $05, WEST | EAST
+	connection west, ROUTE_29, Route29, 0, 0, 9, NEW_BARK_TOWN
+	connection east, ROUTE_27, Route27, 0, 0, 9, NEW_BARK_TOWN
+
+	map_data CherrygroveCity, CHERRYGROVE_CITY, $35, NORTH | EAST
+	connection north, ROUTE_30, Route30, 5, 0, 10, CHERRYGROVE_CITY
+	connection east, ROUTE_29, Route29, 0, 0, 9, CHERRYGROVE_CITY
+
+	map_data VioletCity, VIOLET_CITY, $05, SOUTH | WEST | EAST
+	connection south, ROUTE_32, Route32, 0, 0, 10, VIOLET_CITY
+	connection west, ROUTE_36, Route36, 0, 0, 9, VIOLET_CITY
+	connection east, ROUTE_31, Route31, 9, 0, 9, VIOLET_CITY
+
+	map_data AzaleaTown, AZALEA_TOWN, $05, WEST | EAST
+	connection west, ROUTE_34, Route34, -3, 15, 12, AZALEA_TOWN
+	connection east, ROUTE_33, Route33, 0, 0, 9, AZALEA_TOWN
+
+	map_data CianwoodCity, CIANWOOD_CITY, $35, EAST
+	connection east, ROUTE_41, Route41, 0, 0, 27, CIANWOOD_CITY
+
+	map_data GoldenrodCity, GOLDENROD_CITY, $35, NORTH | SOUTH
+	connection north, ROUTE_35, Route35, 5, 0, 10, GOLDENROD_CITY
+	connection south, ROUTE_34, Route34, 5, 0, 10, GOLDENROD_CITY
+
+	map_data OlivineCity, OLIVINE_CITY, $35, NORTH | WEST
+	connection north, ROUTE_39, Route39, 5, 0, 10, OLIVINE_CITY
+	connection west, ROUTE_40, Route40, 9, 0, 12, OLIVINE_CITY
+
+	map_data EcruteakCity, ECRUTEAK_CITY, $05, SOUTH | WEST | EAST
+	connection south, ROUTE_37, Route37, 5, 0, 10, ECRUTEAK_CITY
+	connection west, ROUTE_38, Route38, 5, 0, 9, ECRUTEAK_CITY
+	connection east, ROUTE_42, Route42, 9, 0, 9, ECRUTEAK_CITY
+
+	map_data MahoganyTown, MAHOGANY_TOWN, $71, NORTH | WEST | EAST
+	connection north, ROUTE_43, Route43, 0, 0, 10, MAHOGANY_TOWN
+	connection west, ROUTE_42, Route42, 0, 0, 9, MAHOGANY_TOWN
+	connection east, ROUTE_44, Route44, 0, 0, 9, MAHOGANY_TOWN
+
+	map_data LakeOfRage, LAKE_OF_RAGE, $05, SOUTH
+	connection south, ROUTE_43, Route43, 5, 0, 10, LAKE_OF_RAGE
+
+	map_data BlackthornCity, BLACKTHORN_CITY, $71, SOUTH | WEST
+	connection south, ROUTE_45, Route45, 0, 0, 10, BLACKTHORN_CITY
+	connection west, ROUTE_44, Route44, 9, 0, 9, BLACKTHORN_CITY
+
+	map_data SilverCaveOutside, SILVER_CAVE_OUTSIDE, $2c, EAST
+	connection east, ROUTE_28, Route28, 9, 0, 9, SILVER_CAVE_OUTSIDE
+
+	map_data Route26, ROUTE_26, $05, WEST
+	connection west, ROUTE_27, Route27, 45, 0, 9, ROUTE_26
+
+	map_data Route27, ROUTE_27, $35, WEST | EAST
+	connection west, NEW_BARK_TOWN, NewBarkTown, 0, 0, 9, ROUTE_27
+	connection east, ROUTE_26, Route26, -3, 42, 12, ROUTE_27
+
+	map_data Route28, ROUTE_28, $2c, WEST
+	connection west, SILVER_CAVE_OUTSIDE, SilverCaveOutside, -3, 6, 12, ROUTE_28
+
+	map_data Route29, ROUTE_29, $05, NORTH | WEST | EAST
+	connection north, ROUTE_46, Route46, 10, 0, 10, ROUTE_29
+	connection west, CHERRYGROVE_CITY, CherrygroveCity, 0, 0, 9, ROUTE_29
+	connection east, NEW_BARK_TOWN, NewBarkTown, 0, 0, 9, ROUTE_29
+
+	map_data Route30, ROUTE_30, $05, NORTH | SOUTH
+	connection north, ROUTE_31, Route31, -3, 7, 13, ROUTE_30
+	connection south, CHERRYGROVE_CITY, CherrygroveCity, -3, 2, 16, ROUTE_30
+
+	map_data Route31, ROUTE_31, $05, SOUTH | WEST
+	connection south, ROUTE_30, Route30, 10, 0, 10, ROUTE_31
+	connection west, VIOLET_CITY, VioletCity, -3, 6, 12, ROUTE_31
+
+	map_data Route32, ROUTE_32, $05, NORTH | SOUTH
+	connection north, VIOLET_CITY, VioletCity, 0, 0, 13, ROUTE_32
+	connection south, ROUTE_33, Route33, 0, 0, 10, ROUTE_32
+
+	map_data Route33, ROUTE_33, $05, NORTH | WEST
+	connection north, ROUTE_32, Route32, 0, 0, 10, ROUTE_33
+	connection west, AZALEA_TOWN, AzaleaTown, 0, 0, 9, ROUTE_33
+
+	map_data Route34, ROUTE_34, $05, NORTH | EAST
+	connection north, GOLDENROD_CITY, GoldenrodCity, -3, 2, 16, ROUTE_34
+	connection east, AZALEA_TOWN, AzaleaTown, 18, 0, 9, ROUTE_34
+
+	map_data Route35, ROUTE_35, $05, NORTH | SOUTH
+	connection north, ROUTE_36, Route36, 0, 0, 13, ROUTE_35
+	connection south, GOLDENROD_CITY, GoldenrodCity, -3, 2, 16, ROUTE_35
+
+	map_data Route36, ROUTE_36, $05, NORTH | SOUTH | EAST
+	connection north, ROUTE_37, Route37, 10, 0, 10, ROUTE_36
+	connection south, ROUTE_35, Route35, 0, 0, 10, ROUTE_36
+	connection east, VIOLET_CITY, VioletCity, 0, 0, 12, ROUTE_36
+
+	map_data Route37, ROUTE_37, $05, NORTH | SOUTH
+	connection north, ECRUTEAK_CITY, EcruteakCity, -3, 2, 16, ROUTE_37
+	connection south, ROUTE_36, Route36, -3, 7, 16, ROUTE_37
+
+	map_data Route38, ROUTE_38, $05, WEST | EAST
+	connection west, ROUTE_39, Route39, 0, 0, 12, ROUTE_38
+	connection east, ECRUTEAK_CITY, EcruteakCity, -3, 2, 15, ROUTE_38
+
+	map_data Route39, ROUTE_39, $05, SOUTH | EAST
+	connection south, OLIVINE_CITY, OlivineCity, -3, 2, 16, ROUTE_39
+	connection east, ROUTE_38, Route38, 0, 0, 9, ROUTE_39
+
+	map_data Route40, ROUTE_40, $35, SOUTH | EAST
+	connection south, ROUTE_41, Route41, -3, 12, 13, ROUTE_40
+	connection east, OLIVINE_CITY, OlivineCity, -3, 6, 12, ROUTE_40
+
+	map_data Route41, ROUTE_41, $35, NORTH | WEST
+	connection north, ROUTE_40, Route40, 15, 0, 10, ROUTE_41
+	connection west, CIANWOOD_CITY, CianwoodCity, 0, 0, 27, ROUTE_41
+
+	map_data Route42, ROUTE_42, $05, WEST | EAST
+	connection west, ECRUTEAK_CITY, EcruteakCity, -3, 6, 12, ROUTE_42
+	connection east, MAHOGANY_TOWN, MahoganyTown, 0, 0, 9, ROUTE_42
+
+	map_data Route43, ROUTE_43, $05, NORTH | SOUTH
+	connection north, LAKE_OF_RAGE, LakeOfRage, -3, 2, 16, ROUTE_43
+	connection south, MAHOGANY_TOWN, MahoganyTown, 0, 0, 10, ROUTE_43
+
+	map_data Route44, ROUTE_44, $71, WEST | EAST
+	connection west, MAHOGANY_TOWN, MahoganyTown, 0, 0, 9, ROUTE_44
+	connection east, BLACKTHORN_CITY, BlackthornCity, -3, 6, 12, ROUTE_44
+
+	map_data Route45, ROUTE_45, $71, NORTH | WEST
+	connection north, BLACKTHORN_CITY, BlackthornCity, 0, 0, 13, ROUTE_45
+	connection west, ROUTE_46, Route46, 36, 0, 12, ROUTE_45
+
+	map_data Route46, ROUTE_46, $05, SOUTH | EAST
+	connection south, ROUTE_29, Route29, -3, 7, 16, ROUTE_46
+	connection east, ROUTE_45, Route45, -3, 33, 12, ROUTE_46
+
+	map_data PewterCity, PEWTER_CITY, $0f, SOUTH | EAST
+	connection south, ROUTE_2, Route2, 5, 0, 10, PEWTER_CITY
+	connection east, ROUTE_3, Route3, 5, 0, 9, PEWTER_CITY
+
+	map_data Route2, ROUTE_2, $0f, NORTH | SOUTH
+	connection north, PEWTER_CITY, PewterCity, -3, 2, 16, ROUTE_2
+	connection south, VIRIDIAN_CITY, ViridianCity, -3, 2, 16, ROUTE_2
+
+	map_data ViridianCity, VIRIDIAN_CITY, $0f, NORTH | SOUTH | WEST
+	connection north, ROUTE_2, Route2, 5, 0, 10, VIRIDIAN_CITY
+	connection south, ROUTE_1, Route1, 10, 0, 10, VIRIDIAN_CITY
+	connection west, ROUTE_22, Route22, 4, 0, 9, VIRIDIAN_CITY
+
+	map_data Route22, ROUTE_22, $2c, EAST
+	connection east, VIRIDIAN_CITY, ViridianCity, -3, 1, 15, ROUTE_22
+
+	map_data Route1, ROUTE_1, $0f, NORTH | SOUTH
+	connection north, VIRIDIAN_CITY, ViridianCity, -3, 7, 13, ROUTE_1
+	connection south, PALLET_TOWN, PalletTown, 0, 0, 10, ROUTE_1
+
+	map_data PalletTown, PALLET_TOWN, $0f, NORTH | SOUTH
+	connection north, ROUTE_1, Route1, 0, 0, 10, PALLET_TOWN
+	connection south, ROUTE_21, Route21, 0, 0, 10, PALLET_TOWN
+
+	map_data Route21, ROUTE_21, $43, NORTH | SOUTH
+	connection north, PALLET_TOWN, PalletTown, 0, 0, 10, ROUTE_21
+	connection south, CINNABAR_ISLAND, CinnabarIsland, 0, 0, 10, ROUTE_21
+
+	map_data CinnabarIsland, CINNABAR_ISLAND, $43, NORTH | EAST
+	connection north, ROUTE_21, Route21, 0, 0, 10, CINNABAR_ISLAND
+	connection east, ROUTE_20, Route20, 0, 0, 9, CINNABAR_ISLAND
+
+	map_data Route20, ROUTE_20, $43, WEST | EAST
+	connection west, CINNABAR_ISLAND, CinnabarIsland, 0, 0, 9, ROUTE_20
+	connection east, ROUTE_19, Route19, -3, 6, 12, ROUTE_20
+
+	map_data Route19, ROUTE_19, $43, NORTH | WEST
+	connection north, FUCHSIA_CITY, FuchsiaCity, 0, 0, 13, ROUTE_19
+	connection west, ROUTE_20, Route20, 9, 0, 9, ROUTE_19
+
+	map_data FuchsiaCity, FUCHSIA_CITY, $0f, SOUTH | WEST | EAST
+	connection south, ROUTE_19, Route19, 0, 0, 10, FUCHSIA_CITY
+	connection west, ROUTE_18, Route18, 7, 0, 9, FUCHSIA_CITY
+	connection east, ROUTE_15, Route15, 9, 0, 9, FUCHSIA_CITY
+
+	map_data Route18, ROUTE_18, $43, WEST | EAST
+	connection west, ROUTE_17, Route17, -3, 35, 10, ROUTE_18
+	connection east, FUCHSIA_CITY, FuchsiaCity, -3, 4, 14, ROUTE_18
+
+	map_data Route17, ROUTE_17, $43, NORTH | EAST
+	connection north, ROUTE_16, Route16, 0, 0, 10, ROUTE_17
+	connection east, ROUTE_18, Route18, 38, 0, 9, ROUTE_17
+
+	map_data Route16, ROUTE_16, $0f, SOUTH | EAST
+	connection south, ROUTE_17, Route17, 0, 0, 10, ROUTE_16
+	connection east, CELADON_CITY, CeladonCity, -3, 6, 12, ROUTE_16
+
+	map_data CeladonCity, CELADON_CITY, $0f, WEST | EAST
+	connection west, ROUTE_16, Route16, 9, 0, 9, CELADON_CITY
+	connection east, ROUTE_7, Route7, 5, 0, 9, CELADON_CITY
+
+	map_data Route7, ROUTE_7, $0f, WEST | EAST
+	connection west, CELADON_CITY, CeladonCity, -3, 2, 15, ROUTE_7
+	connection east, SAFFRON_CITY, SaffronCity, -3, 6, 12, ROUTE_7
+
+	map_data Route15, ROUTE_15, $0f, WEST | EAST
+	connection west, FUCHSIA_CITY, FuchsiaCity, -3, 6, 12, ROUTE_15
+	connection east, ROUTE_14, Route14, -3, 6, 12, ROUTE_15
+
+	map_data Route14, ROUTE_14, $43, NORTH | WEST
+	connection north, ROUTE_13, Route13, 0, 0, 13, ROUTE_14
+	connection west, ROUTE_15, Route15, 9, 0, 9, ROUTE_14
+
+	map_data Route13, ROUTE_13, $43, NORTH | SOUTH
+	connection north, ROUTE_12, Route12, 20, 0, 10, ROUTE_13
+	connection south, ROUTE_14, Route14, 0, 0, 10, ROUTE_13
+
+	map_data Route12, ROUTE_12, $43, NORTH | SOUTH | WEST
+	connection north, LAVENDER_TOWN, LavenderTown, 0, 0, 10, ROUTE_12
+	connection south, ROUTE_13, Route13, -3, 17, 13, ROUTE_12
+	connection west, ROUTE_11, Route11, 9, 0, 9, ROUTE_12
+
+	map_data Route11, ROUTE_11, $0f, WEST | EAST
+	connection west, VERMILION_CITY, VermilionCity, 0, 0, 12, ROUTE_11
+	connection east, ROUTE_12, Route12, -3, 6, 15, ROUTE_11
+
+	map_data LavenderTown, LAVENDER_TOWN, $2c, NORTH | SOUTH | WEST
+	connection north, ROUTE_10_SOUTH, Route10South, 0, 0, 10, LAVENDER_TOWN
+	connection south, ROUTE_12, Route12, 0, 0, 10, LAVENDER_TOWN
+	connection west, ROUTE_8, Route8, 0, 0, 9, LAVENDER_TOWN
+
+	map_data VermilionCity, VERMILION_CITY, $43, NORTH | EAST
+	connection north, ROUTE_6, Route6, 5, 0, 10, VERMILION_CITY
+	connection east, ROUTE_11, Route11, 0, 0, 9, VERMILION_CITY
+
+	map_data Route6, ROUTE_6, $0f, NORTH | SOUTH
+	connection north, SAFFRON_CITY, SaffronCity, -3, 2, 16, ROUTE_6
+	connection south, VERMILION_CITY, VermilionCity, -3, 2, 16, ROUTE_6
+
+	map_data SaffronCity, SAFFRON_CITY, $0f, NORTH | SOUTH | WEST | EAST
+	connection north, ROUTE_5, Route5, 5, 0, 10, SAFFRON_CITY
+	connection south, ROUTE_6, Route6, 5, 0, 10, SAFFRON_CITY
+	connection west, ROUTE_7, Route7, 9, 0, 9, SAFFRON_CITY
+	connection east, ROUTE_8, Route8, 9, 0, 9, SAFFRON_CITY
+
+	map_data Route5, ROUTE_5, $0f, NORTH | SOUTH
+	connection north, CERULEAN_CITY, CeruleanCity, -3, 2, 16, ROUTE_5
+	connection south, SAFFRON_CITY, SaffronCity, -3, 2, 16, ROUTE_5
+
+	map_data CeruleanCity, CERULEAN_CITY, $0f, NORTH | SOUTH | WEST | EAST
+	connection north, ROUTE_24, Route24, 6, 0, 10, CERULEAN_CITY
+	connection south, ROUTE_5, Route5, 5, 0, 10, CERULEAN_CITY
+	connection west, ROUTE_4, Route4, 5, 0, 9, CERULEAN_CITY
+	connection east, ROUTE_9, Route9, 9, 0, 9, CERULEAN_CITY
+
+	map_data Route9, ROUTE_9, $2c, SOUTH | WEST
+	connection south, ROUTE_10_NORTH, Route10North, 20, 0, 10, ROUTE_9
+	connection west, CERULEAN_CITY, CeruleanCity, -3, 6, 12, ROUTE_9
+
+	map_data Route24, ROUTE_24, $2c, NORTH | SOUTH
+	connection north, ROUTE_25, Route25, 0, 0, 13, ROUTE_24
+	connection south, CERULEAN_CITY, CeruleanCity, -3, 3, 16, ROUTE_24
+
+	map_data Route25, ROUTE_25, $2c, SOUTH
+	connection south, ROUTE_24, Route24, 0, 0, 10, ROUTE_25
+
+	map_data Route3, ROUTE_3, $2c, WEST | EAST
+	connection west, PEWTER_CITY, PewterCity, -3, 2, 15, ROUTE_3
+	connection east, ROUTE_4, Route4, 0, 0, 9, ROUTE_3
+
+	map_data Route4, ROUTE_4, $2c, WEST | EAST
+	connection west, ROUTE_3, Route3, 0, 0, 9, ROUTE_4
+	connection east, CERULEAN_CITY, CeruleanCity, -3, 2, 15, ROUTE_4
+
+	map_data Route8, ROUTE_8, $2c, WEST | EAST
+	connection west, SAFFRON_CITY, SaffronCity, -3, 6, 12, ROUTE_8
+	connection east, LAVENDER_TOWN, LavenderTown, 0, 0, 9, ROUTE_8
+
+	map_data Route10North, ROUTE_10_NORTH, $2c, NORTH | SOUTH
+	connection north, ROUTE_9, Route9, -3, 17, 13, ROUTE_10_NORTH
+	connection south, ROUTE_10_SOUTH, Route10South, 0, 0, 10, ROUTE_10_NORTH
+
+	map_data Route10South, ROUTE_10_SOUTH, $2c, NORTH | SOUTH
+	connection north, ROUTE_10_NORTH, Route10North, 0, 0, 10, ROUTE_10_SOUTH
+	connection south, LAVENDER_TOWN, LavenderTown, 0, 0, 10, ROUTE_10_SOUTH
+
+	map_data Route23, ROUTE_23, $0f, 0
+	map_data SproutTower1F, SPROUT_TOWER_1F, $00, 0
+	map_data SproutTower2F, SPROUT_TOWER_2F, $00, 0
+	map_data SproutTower3F, SPROUT_TOWER_3F, $00, 0
+	map_data TinTower1F, TIN_TOWER_1F, $00, 0
+	map_data TinTower2F, TIN_TOWER_2F, $00, 0
+	map_data TinTower3F, TIN_TOWER_3F, $00, 0
+	map_data TinTower4F, TIN_TOWER_4F, $00, 0
+	map_data TinTower5F, TIN_TOWER_5F, $00, 0
+	map_data TinTower6F, TIN_TOWER_6F, $00, 0
+	map_data TinTower7F, TIN_TOWER_7F, $00, 0
+	map_data TinTower8F, TIN_TOWER_8F, $00, 0
+	map_data TinTower9F, TIN_TOWER_9F, $00, 0
+	map_data BurnedTower1F, BURNED_TOWER_1F, $00, 0
+	map_data BurnedTowerB1F, BURNED_TOWER_B1F, $09, 0
+	map_data NationalPark, NATIONAL_PARK, $00, 0
+	map_data NationalParkBugContest, NATIONAL_PARK_BUG_CONTEST, $00, 0
+	map_data RadioTower1F, RADIO_TOWER_1F, $00, 0
+	map_data RadioTower2F, RADIO_TOWER_2F, $00, 0
+	map_data RadioTower3F, RADIO_TOWER_3F, $00, 0
+	map_data RadioTower4F, RADIO_TOWER_4F, $00, 0
+	map_data RadioTower5F, RADIO_TOWER_5F, $00, 0
+	map_data RuinsOfAlphOutside, RUINS_OF_ALPH_OUTSIDE, $05, 0
+	map_data RuinsOfAlphHoOhChamber, RUINS_OF_ALPH_HO_OH_CHAMBER, $00, 0
+	map_data RuinsOfAlphKabutoChamber, RUINS_OF_ALPH_KABUTO_CHAMBER, $00, 0
+	map_data RuinsOfAlphOmanyteChamber, RUINS_OF_ALPH_OMANYTE_CHAMBER, $00, 0
+	map_data RuinsOfAlphAerodactylChamber, RUINS_OF_ALPH_AERODACTYL_CHAMBER, $00, 0
+	map_data RuinsOfAlphInnerChamber, RUINS_OF_ALPH_INNER_CHAMBER, $00, 0
+	map_data RuinsOfAlphResearchCenter, RUINS_OF_ALPH_RESEARCH_CENTER, $00, 0
+	map_data RuinsOfAlphHoOhItemRoom, RUINS_OF_ALPH_HO_OH_ITEM_ROOM, $00, 0
+	map_data RuinsOfAlphKabutoItemRoom, RUINS_OF_ALPH_KABUTO_ITEM_ROOM, $00, 0
+	map_data RuinsOfAlphOmanyteItemRoom, RUINS_OF_ALPH_OMANYTE_ITEM_ROOM, $00, 0
+	map_data RuinsOfAlphAerodactylItemRoom, RUINS_OF_ALPH_AERODACTYL_ITEM_ROOM, $00, 0
+	map_data RuinsOfAlphHoOhWordRoom, RUINS_OF_ALPH_HO_OH_WORD_ROOM, $00, 0
+	map_data RuinsOfAlphKabutoWordRoom, RUINS_OF_ALPH_KABUTO_WORD_ROOM, $00, 0
+	map_data RuinsOfAlphOmanyteWordRoom, RUINS_OF_ALPH_OMANYTE_WORD_ROOM, $00, 0
+	map_data RuinsOfAlphAerodactylWordRoom, RUINS_OF_ALPH_AERODACTYL_WORD_ROOM, $00, 0
+	map_data UnionCave1F, UNION_CAVE_1F, $09, 0
+	map_data UnionCaveB1F, UNION_CAVE_B1F, $09, 0
+	map_data UnionCaveB2F, UNION_CAVE_B2F, $09, 0
+	map_data SlowpokeWellB1F, SLOWPOKE_WELL_B1F, $09, 0
+	map_data SlowpokeWellB2F, SLOWPOKE_WELL_B2F, $09, 0
+	map_data OlivineLighthouse1F, OLIVINE_LIGHTHOUSE_1F, $00, 0
+	map_data OlivineLighthouse2F, OLIVINE_LIGHTHOUSE_2F, $00, 0
+	map_data OlivineLighthouse3F, OLIVINE_LIGHTHOUSE_3F, $00, 0
+	map_data OlivineLighthouse4F, OLIVINE_LIGHTHOUSE_4F, $00, 0
+	map_data OlivineLighthouse5F, OLIVINE_LIGHTHOUSE_5F, $00, 0
+	map_data OlivineLighthouse6F, OLIVINE_LIGHTHOUSE_6F, $00, 0
+	map_data MahoganyMart1F, MAHOGANY_MART_1F, $00, 0
+	map_data TeamRocketBaseB1F, TEAM_ROCKET_BASE_B1F, $00, 0
+	map_data TeamRocketBaseB2F, TEAM_ROCKET_BASE_B2F, $00, 0
+	map_data TeamRocketBaseB3F, TEAM_ROCKET_BASE_B3F, $00, 0
+	map_data IlexForest, ILEX_FOREST, $05, 0
+	map_data GoldenrodUnderground, GOLDENROD_UNDERGROUND, $00, 0
+	map_data GoldenrodUndergroundSwitchRoomEntrances, GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, $00, 0
+	map_data GoldenrodDeptStoreB1F, GOLDENROD_DEPT_STORE_B1F, $00, 0
+	map_data GoldenrodUndergroundWarehouse, GOLDENROD_UNDERGROUND_WAREHOUSE, $00, 0
+	map_data MountMortar1FOutside, MOUNT_MORTAR_1F_OUTSIDE, $09, 0
+	map_data MountMortar1FInside, MOUNT_MORTAR_1F_INSIDE, $09, 0
+	map_data MountMortar2FInside, MOUNT_MORTAR_2F_INSIDE, $09, 0
+	map_data MountMortarB1F, MOUNT_MORTAR_B1F, $09, 0
+	map_data IcePath1F, ICE_PATH_1F, $09, 0
+	map_data IcePathB1F, ICE_PATH_B1F, $19, 0
+	map_data IcePathB2FMahoganySide, ICE_PATH_B2F_MAHOGANY_SIDE, $19, 0
+	map_data IcePathB2FBlackthornSide, ICE_PATH_B2F_BLACKTHORN_SIDE, $19, 0
+	map_data IcePathB3F, ICE_PATH_B3F, $19, 0
+	map_data WhirlIslandNW, WHIRL_ISLAND_NW, $09, 0
+	map_data WhirlIslandNE, WHIRL_ISLAND_NE, $09, 0
+	map_data WhirlIslandSW, WHIRL_ISLAND_SW, $09, 0
+	map_data WhirlIslandCave, WHIRL_ISLAND_CAVE, $09, 0
+	map_data WhirlIslandSE, WHIRL_ISLAND_SE, $0f, 0
+	map_data WhirlIslandB1F, WHIRL_ISLAND_B1F, $09, 0
+	map_data WhirlIslandB2F, WHIRL_ISLAND_B2F, $2e, 0
+	map_data WhirlIslandLugiaChamber, WHIRL_ISLAND_LUGIA_CHAMBER, $0f, 0
+	map_data SilverCaveRoom1, SILVER_CAVE_ROOM_1, $09, 0
+	map_data SilverCaveRoom2, SILVER_CAVE_ROOM_2, $09, 0
+	map_data SilverCaveRoom3, SILVER_CAVE_ROOM_3, $09, 0
+	map_data SilverCaveItemRooms, SILVER_CAVE_ITEM_ROOMS, $09, 0
+	map_data DarkCaveVioletEntrance, DARK_CAVE_VIOLET_ENTRANCE, $09, 0
+	map_data DarkCaveBlackthornEntrance, DARK_CAVE_BLACKTHORN_ENTRANCE, $09, 0
+	map_data DragonsDen1F, DRAGONS_DEN_1F, $09, 0
+	map_data DragonsDenB1F, DRAGONS_DEN_B1F, $71, 0
+	map_data DragonShrine, DRAGON_SHRINE, $00, 0
+	map_data TohjoFalls, TOHJO_FALLS, $09, 0
+	map_data OlivinePokecenter1F, OLIVINE_POKECENTER_1F, $00, 0
+	map_data OlivineGym, OLIVINE_GYM, $00, 0
+	map_data OlivineTimsHouse, OLIVINE_TIMS_HOUSE, $00, 0
+	map_data OlivineHouseBeta, OLIVINE_HOUSE_BETA, $00, 0
+	map_data OlivinePunishmentSpeechHouse, OLIVINE_PUNISHMENT_SPEECH_HOUSE, $00, 0
+	map_data OlivineGoodRodHouse, OLIVINE_GOOD_ROD_HOUSE, $00, 0
+	map_data OlivineCafe, OLIVINE_CAFE, $00, 0
+	map_data OlivineMart, OLIVINE_MART, $00, 0
+	map_data Route38EcruteakGate, ROUTE_38_ECRUTEAK_GATE, $00, 0
+	map_data Route39Barn, ROUTE_39_BARN, $00, 0
+	map_data Route39Farmhouse, ROUTE_39_FARMHOUSE, $00, 0
+	map_data MahoganyRedGyaradosSpeechHouse, MAHOGANY_RED_GYARADOS_SPEECH_HOUSE, $00, 0
+	map_data MahoganyGym, MAHOGANY_GYM, $00, 0
+	map_data MahoganyPokecenter1F, MAHOGANY_POKECENTER_1F, $00, 0
+	map_data Route42EcruteakGate, ROUTE_42_ECRUTEAK_GATE, $00, 0
+	map_data DiglettsCave, DIGLETTS_CAVE, $09, 0
+	map_data MountMoon, MOUNT_MOON, $09, 0
+	map_data UndergroundPath, UNDERGROUND_PATH, $00, 0
+	map_data RockTunnel1F, ROCK_TUNNEL_1F, $09, 0
+	map_data RockTunnelB1F, ROCK_TUNNEL_B1F, $09, 0
+	map_data SafariZoneFuchsiaGateBeta, SAFARI_ZONE_FUCHSIA_GATE_BETA, $00, 0
+	map_data SafariZoneBeta, SAFARI_ZONE_BETA, $13, 0
+	map_data VictoryRoad, VICTORY_ROAD, $1d, 0
+	map_data EcruteakHouse, ECRUTEAK_HOUSE, $00, 0
+	map_data WiseTriosRoom, WISE_TRIOS_ROOM, $00, 0
+	map_data EcruteakPokecenter1F, ECRUTEAK_POKECENTER_1F, $00, 0
+	map_data EcruteakLugiaSpeechHouse, ECRUTEAK_LUGIA_SPEECH_HOUSE, $00, 0
+	map_data DanceTheatre, DANCE_THEATRE, $00, 0
+	map_data EcruteakMart, ECRUTEAK_MART, $00, 0
+	map_data EcruteakGym, ECRUTEAK_GYM, $00, 0
+	map_data EcruteakItemfinderHouse, ECRUTEAK_ITEMFINDER_HOUSE, $00, 0
+	map_data BlackthornGym1F, BLACKTHORN_GYM_1F, $00, 0
+	map_data BlackthornGym2F, BLACKTHORN_GYM_2F, $00, 0
+	map_data BlackthornDragonSpeechHouse, BLACKTHORN_DRAGON_SPEECH_HOUSE, $00, 0
+	map_data BlackthornEmysHouse, BLACKTHORN_EMYS_HOUSE, $00, 0
+	map_data BlackthornMart, BLACKTHORN_MART, $00, 0
+	map_data BlackthornPokecenter1F, BLACKTHORN_POKECENTER_1F, $00, 0
+	map_data MoveDeletersHouse, MOVE_DELETERS_HOUSE, $00, 0
+	map_data CinnabarPokecenter1F, CINNABAR_POKECENTER_1F, $00, 0
+	map_data CinnabarPokecenter2FBeta, CINNABAR_POKECENTER_2F_BETA, $00, 0
+	map_data Route19FuchsiaGate, ROUTE_19_FUCHSIA_GATE, $00, 0
+	map_data SeafoamGym, SEAFOAM_GYM, $09, 0
+	map_data CeruleanGymBadgeSpeechHouse, CERULEAN_GYM_BADGE_SPEECH_HOUSE, $00, 0
+	map_data CeruleanPoliceStation, CERULEAN_POLICE_STATION, $00, 0
+	map_data CeruleanTradeSpeechHouse, CERULEAN_TRADE_SPEECH_HOUSE, $00, 0
+	map_data CeruleanPokecenter1F, CERULEAN_POKECENTER_1F, $00, 0
+	map_data CeruleanPokecenter2FBeta, CERULEAN_POKECENTER_2F_BETA, $00, 0
+	map_data CeruleanGym, CERULEAN_GYM, $00, 0
+	map_data CeruleanMart, CERULEAN_MART, $00, 0
+	map_data Route10Pokecenter1F, ROUTE_10_POKECENTER_1F, $00, 0
+	map_data Route10Pokecenter2FBeta, ROUTE_10_POKECENTER_2F_BETA, $00, 0
+	map_data PowerPlant, POWER_PLANT, $00, 0
+	map_data BillsHouse, BILLS_HOUSE, $00, 0
+	map_data AzaleaPokecenter1F, AZALEA_POKECENTER_1F, $00, 0
+	map_data CharcoalKiln, CHARCOAL_KILN, $00, 0
+	map_data AzaleaMart, AZALEA_MART, $00, 0
+	map_data KurtsHouse, KURTS_HOUSE, $00, 0
+	map_data AzaleaGym, AZALEA_GYM, $00, 0
+	map_data LakeOfRageHiddenPowerHouse, LAKE_OF_RAGE_HIDDEN_POWER_HOUSE, $00, 0
+	map_data LakeOfRageMagikarpHouse, LAKE_OF_RAGE_MAGIKARP_HOUSE, $00, 0
+	map_data Route43MahoganyGate, ROUTE_43_MAHOGANY_GATE, $00, 0
+	map_data Route43Gate, ROUTE_43_GATE, $00, 0
+	map_data VioletMart, VIOLET_MART, $00, 0
+	map_data VioletGym, VIOLET_GYM, $00, 0
+	map_data EarlsPokemonAcademy, EARLS_POKEMON_ACADEMY, $00, 0
+	map_data VioletNicknameSpeechHouse, VIOLET_NICKNAME_SPEECH_HOUSE, $00, 0
+	map_data VioletPokecenter1F, VIOLET_POKECENTER_1F, $00, 0
+	map_data VioletKylesHouse, VIOLET_KYLES_HOUSE, $00, 0
+	map_data Route32RuinsOfAlphGate, ROUTE_32_RUINS_OF_ALPH_GATE, $00, 0
+	map_data Route32Pokecenter1F, ROUTE_32_POKECENTER_1F, $00, 0
+	map_data Route35GoldenrodGate, ROUTE_35_GOLDENROD_GATE, $00, 0
+	map_data Route35NationalParkGate, ROUTE_35_NATIONAL_PARK_GATE, $00, 0
+	map_data Route36RuinsOfAlphGate, ROUTE_36_RUINS_OF_ALPH_GATE, $00, 0
+	map_data Route36NationalParkGate, ROUTE_36_NATIONAL_PARK_GATE, $00, 0
+	map_data GoldenrodGym, GOLDENROD_GYM, $00, 0
+	map_data GoldenrodBikeShop, GOLDENROD_BIKE_SHOP, $00, 0
+	map_data GoldenrodHappinessRater, GOLDENROD_HAPPINESS_RATER, $00, 0
+	map_data GoldenrodBillsHouse, GOLDENROD_BILLS_HOUSE, $00, 0
+	map_data GoldenrodMagnetTrainStation, GOLDENROD_MAGNET_TRAIN_STATION, $00, 0
+	map_data GoldenrodFlowerShop, GOLDENROD_FLOWER_SHOP, $00, 0
+	map_data GoldenrodPPSpeechHouse, GOLDENROD_PP_SPEECH_HOUSE, $00, 0
+	map_data GoldenrodNameRater, GOLDENROD_NAME_RATER, $00, 0
+	map_data GoldenrodDeptStore1F, GOLDENROD_DEPT_STORE_1F, $00, 0
+	map_data GoldenrodDeptStore2F, GOLDENROD_DEPT_STORE_2F, $00, 0
+	map_data GoldenrodDeptStore3F, GOLDENROD_DEPT_STORE_3F, $00, 0
+	map_data GoldenrodDeptStore4F, GOLDENROD_DEPT_STORE_4F, $00, 0
+	map_data GoldenrodDeptStore5F, GOLDENROD_DEPT_STORE_5F, $00, 0
+	map_data GoldenrodDeptStore6F, GOLDENROD_DEPT_STORE_6F, $00, 0
+	map_data GoldenrodDeptStoreElevator, GOLDENROD_DEPT_STORE_ELEVATOR, $00, 0
+	map_data GoldenrodDeptStoreRoof, GOLDENROD_DEPT_STORE_ROOF, $24, 0
+	map_data GoldenrodGameCorner, GOLDENROD_GAME_CORNER, $00, 0
+	map_data GoldenrodPokecenter1F, GOLDENROD_POKECENTER_1F, $00, 0
+	map_data GoldenrodPokeComCenter2FMobile, GOLDENROD_POKECOM_CENTER_2F_MOBILE, $00, 0
+	map_data IlexForestAzaleaGate, ILEX_FOREST_AZALEA_GATE, $00, 0
+	map_data Route34IlexForestGate, ROUTE_34_ILEX_FOREST_GATE, $00, 0
+	map_data DayCare, DAY_CARE, $00, 0
+	map_data VermilionHouseFishingSpeechHouse, VERMILION_HOUSE_FISHING_SPEECH_HOUSE, $00, 0
+	map_data VermilionPokecenter1F, VERMILION_POKECENTER_1F, $00, 0
+	map_data VermilionPokecenter2FBeta, VERMILION_POKECENTER_2F_BETA, $00, 0
+	map_data PokemonFanClub, POKEMON_FAN_CLUB, $00, 0
+	map_data VermilionMagnetTrainSpeechHouse, VERMILION_MAGNET_TRAIN_SPEECH_HOUSE, $00, 0
+	map_data VermilionMart, VERMILION_MART, $00, 0
+	map_data VermilionHouseDiglettsCaveSpeechHouse, VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE, $00, 0
+	map_data VermilionGym, VERMILION_GYM, $00, 0
+	map_data Route6SaffronGate, ROUTE_6_SAFFRON_GATE, $00, 0
+	map_data Route6UndergroundPathEntrance, ROUTE_6_UNDERGROUND_PATH_ENTRANCE, $00, 0
+	map_data RedsHouse1F, REDS_HOUSE_1F, $00, 0
+	map_data RedsHouse2F, REDS_HOUSE_2F, $00, 0
+	map_data BluesHouse, BLUES_HOUSE, $00, 0
+	map_data OaksLab, OAKS_LAB, $00, 0
+	map_data PewterNidoranSpeechHouse, PEWTER_NIDORAN_SPEECH_HOUSE, $00, 0
+	map_data PewterGym, PEWTER_GYM, $00, 0
+	map_data PewterMart, PEWTER_MART, $00, 0
+	map_data PewterPokecenter1F, PEWTER_POKECENTER_1F, $00, 0
+	map_data PewterPokecenter2FBeta, PEWTER_POKECENTER_2F_BETA, $00, 0
+	map_data PewterSnoozeSpeechHouse, PEWTER_SNOOZE_SPEECH_HOUSE, $00, 0
+	map_data OlivinePort, OLIVINE_PORT, $0a, 0
+	map_data VermilionPort, VERMILION_PORT, $0a, 0
+	map_data FastShip1F, FAST_SHIP_1F, $00, 0
+	map_data FastShipCabins_NNW_NNE_NE, FAST_SHIP_CABINS_NNW_NNE_NE, $00, 0
+	map_data FastShipCabins_SW_SSW_NW, FAST_SHIP_CABINS_SW_SSW_NW, $00, 0
+	map_data FastShipCabins_SE_SSE_CaptainsCabin, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, $00, 0
+	map_data FastShipB1F, FAST_SHIP_B1F, $00, 0
+	map_data OlivinePortPassage, OLIVINE_PORT_PASSAGE, $00, 0
+	map_data VermilionPortPassage, VERMILION_PORT_PASSAGE, $00, 0
+	map_data MountMoonSquare, MOUNT_MOON_SQUARE, $2d, 0
+	map_data MountMoonGiftShop, MOUNT_MOON_GIFT_SHOP, $00, 0
+	map_data TinTowerRoof, TIN_TOWER_ROOF, $00, 0
+	map_data IndigoPlateauPokecenter1F, INDIGO_PLATEAU_POKECENTER_1F, $00, 0
+	map_data WillsRoom, WILLS_ROOM, $00, 0
+	map_data KogasRoom, KOGAS_ROOM, $00, 0
+	map_data BrunosRoom, BRUNOS_ROOM, $00, 0
+	map_data KarensRoom, KARENS_ROOM, $00, 0
+	map_data LancesRoom, LANCES_ROOM, $00, 0
+	map_data HallOfFame, HALL_OF_FAME, $00, 0
+	map_data FuchsiaMart, FUCHSIA_MART, $00, 0
+	map_data SafariZoneMainOffice, SAFARI_ZONE_MAIN_OFFICE, $00, 0
+	map_data FuchsiaGym, FUCHSIA_GYM, $00, 0
+	map_data FuchsiaBillSpeechHouse, FUCHSIA_BILL_SPEECH_HOUSE, $00, 0
+	map_data FuchsiaPokecenter1F, FUCHSIA_POKECENTER_1F, $00, 0
+	map_data FuchsiaPokecenter2FBeta, FUCHSIA_POKECENTER_2F_BETA, $00, 0
+	map_data SafariZoneWardensHome, SAFARI_ZONE_WARDENS_HOME, $00, 0
+	map_data Route15FuchsiaGate, ROUTE_15_FUCHSIA_GATE, $00, 0
+	map_data LavenderPokecenter1F, LAVENDER_POKECENTER_1F, $00, 0
+	map_data LavenderPokecenter2FBeta, LAVENDER_POKECENTER_2F_BETA, $00, 0
+	map_data MrFujisHouse, MR_FUJIS_HOUSE, $00, 0
+	map_data LavenderSpeechHouse, LAVENDER_SPEECH_HOUSE, $00, 0
+	map_data LavenderNameRater, LAVENDER_NAME_RATER, $00, 0
+	map_data LavenderMart, LAVENDER_MART, $00, 0
+	map_data SoulHouse, SOUL_HOUSE, $00, 0
+	map_data LavRadioTower1F, LAV_RADIO_TOWER_1F, $00, 0
+	map_data Route8SaffronGate, ROUTE_8_SAFFRON_GATE, $00, 0
+	map_data Route12SuperRodHouse, ROUTE_12_SUPER_ROD_HOUSE, $00, 0
+	map_data SilverCavePokecenter1F, SILVER_CAVE_POKECENTER_1F, $00, 0
+	map_data Route28FamousSpeechHouse, ROUTE_28_FAMOUS_SPEECH_HOUSE, $00, 0
+	map_data Pokecenter2F, POKECENTER_2F, $00, 0
+	map_data TradeCenter, TRADE_CENTER, $00, 0
+	map_data Colosseum, COLOSSEUM, $00, 0
+	map_data TimeCapsule, TIME_CAPSULE, $00, 0
+	map_data MobileTradeRoomMobile, MOBILE_TRADE_ROOM_MOBILE, $00, 0
+	map_data MobileBattleRoom, MOBILE_BATTLE_ROOM, $00, 0
+	map_data CeladonDeptStore1F, CELADON_DEPT_STORE_1F, $00, 0
+	map_data CeladonDeptStore2F, CELADON_DEPT_STORE_2F, $00, 0
+	map_data CeladonDeptStore3F, CELADON_DEPT_STORE_3F, $00, 0
+	map_data CeladonDeptStore4F, CELADON_DEPT_STORE_4F, $00, 0
+	map_data CeladonDeptStore5F, CELADON_DEPT_STORE_5F, $00, 0
+	map_data CeladonDeptStore6F, CELADON_DEPT_STORE_6F, $00, 0
+	map_data CeladonDeptStoreElevator, CELADON_DEPT_STORE_ELEVATOR, $00, 0
+	map_data CeladonMansion1F, CELADON_MANSION_1F, $00, 0
+	map_data CeladonMansion2F, CELADON_MANSION_2F, $00, 0
+	map_data CeladonMansion3F, CELADON_MANSION_3F, $00, 0
+	map_data CeladonMansionRoof, CELADON_MANSION_ROOF, $01, 0
+	map_data CeladonMansionRoofHouse, CELADON_MANSION_ROOF_HOUSE, $00, 0
+	map_data CeladonPokecenter1F, CELADON_POKECENTER_1F, $00, 0
+	map_data CeladonPokecenter2FBeta, CELADON_POKECENTER_2F_BETA, $00, 0
+	map_data CeladonGameCorner, CELADON_GAME_CORNER, $00, 0
+	map_data CeladonGameCornerPrizeRoom, CELADON_GAME_CORNER_PRIZE_ROOM, $00, 0
+	map_data CeladonGym, CELADON_GYM, $00, 0
+	map_data CeladonCafe, CELADON_CAFE, $00, 0
+	map_data Route16FuchsiaSpeechHouse, ROUTE_16_FUCHSIA_SPEECH_HOUSE, $00, 0
+	map_data Route16Gate, ROUTE_16_GATE, $00, 0
+	map_data Route7SaffronGate, ROUTE_7_SAFFRON_GATE, $00, 0
+	map_data Route17Route18Gate, ROUTE_17_ROUTE_18_GATE, $00, 0
+	map_data ManiasHouse, MANIAS_HOUSE, $00, 0
+	map_data CianwoodGym, CIANWOOD_GYM, $00, 0
+	map_data CianwoodPokecenter1F, CIANWOOD_POKECENTER_1F, $00, 0
+	map_data CianwoodPharmacy, CIANWOOD_PHARMACY, $00, 0
+	map_data CianwoodPhotoStudio, CIANWOOD_PHOTO_STUDIO, $00, 0
+	map_data CianwoodLugiaSpeechHouse, CIANWOOD_LUGIA_SPEECH_HOUSE, $00, 0
+	map_data PokeSeersHouse, POKE_SEERS_HOUSE, $00, 0
+	map_data BattleTower1F, BATTLE_TOWER_1F, $00, 0
+	map_data BattleTowerBattleRoom, BATTLE_TOWER_BATTLE_ROOM, $00, 0
+	map_data BattleTowerElevator, BATTLE_TOWER_ELEVATOR, $00, 0
+	map_data BattleTowerHallway, BATTLE_TOWER_HALLWAY, $00, 0
+	map_data Route40BattleTowerGate, ROUTE_40_BATTLE_TOWER_GATE, $00, 0
+	map_data BattleTowerOutside, BATTLE_TOWER_OUTSIDE, $05, 0
+	map_data ViridianGym, VIRIDIAN_GYM, $00, 0
+	map_data ViridianNicknameSpeechHouse, VIRIDIAN_NICKNAME_SPEECH_HOUSE, $00, 0
+	map_data TrainerHouse1F, TRAINER_HOUSE_1F, $00, 0
+	map_data TrainerHouseB1F, TRAINER_HOUSE_B1F, $00, 0
+	map_data ViridianMart, VIRIDIAN_MART, $00, 0
+	map_data ViridianPokecenter1F, VIRIDIAN_POKECENTER_1F, $00, 0
+	map_data ViridianPokecenter2FBeta, VIRIDIAN_POKECENTER_2F_BETA, $00, 0
+	map_data Route2NuggetSpeechHouse, ROUTE_2_NUGGET_SPEECH_HOUSE, $00, 0
+	map_data Route2Gate, ROUTE_2_GATE, $00, 0
+	map_data VictoryRoadGate, VICTORY_ROAD_GATE, $00, 0
+	map_data ElmsLab, ELMS_LAB, $00, 0
+	map_data KrissHouse1F, KRISS_HOUSE_1F, $00, 0
+	map_data KrissHouse2F, KRISS_HOUSE_2F, $00, 0
+	map_data KrissNeighborsHouse, KRISS_NEIGHBORS_HOUSE, $00, 0
+	map_data ElmsHouse, ELMS_HOUSE, $00, 0
+	map_data Route26HealSpeechHouse, ROUTE_26_HEAL_SPEECH_HOUSE, $00, 0
+	map_data Route26DayofWeekSiblingsHouse, ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, $00, 0
+	map_data Route27SandstormHouse, ROUTE_27_SANDSTORM_HOUSE, $00, 0
+	map_data Route29Route46Gate, ROUTE_29_ROUTE_46_GATE, $00, 0
+	map_data FightingDojo, FIGHTING_DOJO, $00, 0
+	map_data SaffronGym, SAFFRON_GYM, $00, 0
+	map_data SaffronMart, SAFFRON_MART, $00, 0
+	map_data SaffronPokecenter1F, SAFFRON_POKECENTER_1F, $00, 0
+	map_data SaffronPokecenter2FBeta, SAFFRON_POKECENTER_2F_BETA, $00, 0
+	map_data MrPsychicsHouse, MR_PSYCHICS_HOUSE, $00, 0
+	map_data SaffronMagnetTrainStation, SAFFRON_MAGNET_TRAIN_STATION, $00, 0
+	map_data SilphCo1F, SILPH_CO_1F, $00, 0
+	map_data CopycatsHouse1F, COPYCATS_HOUSE_1F, $00, 0
+	map_data CopycatsHouse2F, COPYCATS_HOUSE_2F, $00, 0
+	map_data Route5UndergroundPathEntrance, ROUTE_5_UNDERGROUND_PATH_ENTRANCE, $00, 0
+	map_data Route5SaffronGate, ROUTE_5_SAFFRON_GATE, $00, 0
+	map_data Route5CleanseTagSpeechHouse, ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE, $00, 0
+	map_data CherrygroveMart, CHERRYGROVE_MART, $00, 0
+	map_data CherrygrovePokecenter1F, CHERRYGROVE_POKECENTER_1F, $00, 0
+	map_data CherrygroveGymSpeechHouse, CHERRYGROVE_GYM_SPEECH_HOUSE, $00, 0
+	map_data GuideGentsHouse, GUIDE_GENTS_HOUSE, $00, 0
+	map_data CherrygroveEvolutionSpeechHouse, CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, $00, 0
+	map_data Route30BerrySpeechHouse, ROUTE_30_BERRY_SPEECH_HOUSE, $00, 0
+	map_data MrPokemonsHouse, MR_POKEMONS_HOUSE, $00, 0
+	map_data Route31VioletGate, ROUTE_31_VIOLET_GATE, $00, 0
--- /dev/null
+++ b/data/maps/definitions.asm
@@ -1,0 +1,485 @@
+map_def: MACRO
+;\1: map name: for the MapData pointer (see data/maps/data.asm)
+;\2: tileset: a TILESET_* constant
+;\3: environment: TOWN, ROUTE, INDOOR, CAVE, ENVIRONMENT_5, GATE, or DUNGEON
+;\4: location: from constants/landmark_constants.asm
+;\5: music: a MUSIC_* constant
+;\6: phone service flag: TRUE to prevent phone calls
+;\7: time of day: a PALETTE_* constant
+;\8: fishing group: a FISHGROUP_* constant
+	db BANK(\1_MapData), \2, \3
+	dw \1_MapData
+	db \4, \5
+	dn \6, \7
+	db \8
+ENDM
+
+MapGroupPointers::
+; pointers to the first map header of each map group
+	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
+
+
+MapGroup_Olivine:
+	map_def OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineGym, TILESET_CHAMPIONS_ROOM, INDOOR, OLIVINE_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineTimsHouse, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineHouseBeta, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivinePunishmentSpeechHouse, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineGoodRodHouse, TILESET_HOUSE, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineCafe, TILESET_GAME_CORNER, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineMart, TILESET_MART, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route38EcruteakGate, TILESET_GATE, GATE, ROUTE_38, MUSIC_ROUTE_37, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route39Barn, TILESET_TRADITIONAL_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route39Farmhouse, TILESET_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route38, TILESET_JOHTO, ROUTE, ROUTE_38, MUSIC_ROUTE_37, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route39, TILESET_JOHTO, ROUTE, ROUTE_39, MUSIC_ROUTE_37, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def OlivineCity, TILESET_JOHTO, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+
+MapGroup_Mahogany:
+	map_def MahoganyRedGyaradosSpeechHouse, TILESET_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MahoganyGym, TILESET_ELITE_FOUR_ROOM, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MahoganyPokecenter1F, TILESET_POKECENTER, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route42EcruteakGate, TILESET_GATE, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route42, TILESET_JOHTO, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+	map_def Route44, TILESET_JOHTO, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def MahoganyTown, TILESET_JOHTO, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+
+MapGroup_Dungeons:
+	map_def SproutTower1F, TILESET_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SproutTower2F, TILESET_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SproutTower3F, TILESET_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower1F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower2F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower3F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower4F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower5F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower6F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower7F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower8F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTower9F, TILESET_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BurnedTower1F, TILESET_TOWER, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def BurnedTowerB1F, TILESET_CAVE, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def NationalPark, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def NationalParkBugContest, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, RADIO_TOWER_MUSIC | MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphOutside, TILESET_JOHTO, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def RuinsOfAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphOmanyteChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphAerodactylChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphInnerChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphResearchCenter, TILESET_FACILITY, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphHoOhItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphKabutoItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphOmanyteItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphAerodactylItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphHoOhWordRoom, TILESET_HO_OH_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphKabutoWordRoom, TILESET_KABUTO_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphOmanyteWordRoom, TILESET_OMANYTE_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RuinsOfAlphAerodactylWordRoom, TILESET_AERODACTYL_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def UnionCave1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def UnionCaveB1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def UnionCaveB2F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def SlowpokeWellB1F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def SlowpokeWellB2F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def OlivineLighthouse1F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineLighthouse2F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineLighthouse3F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineLighthouse4F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineLighthouse5F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivineLighthouse6F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MahoganyMart1F, TILESET_TRADITIONAL_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TeamRocketBaseB1F, TILESET_UNDERGROUND, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TeamRocketBaseB2F, TILESET_FACILITY, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TeamRocketBaseB3F, TILESET_FACILITY, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def IlexForest, TILESET_FOREST, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, FALSE, PALETTE_NITE, FISHGROUP_POND
+	map_def GoldenrodUnderground, TILESET_GATE, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodUndergroundSwitchRoomEntrances, TILESET_ELITE_FOUR_ROOM, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStoreB1F, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodUndergroundWarehouse, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MountMortar1FOutside, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def MountMortar1FInside, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def MountMortar2FInside, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def MountMortarB1F, TILESET_DARK_CAVE, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def IcePath1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def IcePathB1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def IcePathB2FMahoganySide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def IcePathB2FBlackthornSide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def IcePathB3F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def WhirlIslandNW, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandNE, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandSW, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandCave, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandSE, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandB1F, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandB2F, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def WhirlIslandLugiaChamber, TILESET_DARK_CAVE, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, TRUE, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
+	map_def SilverCaveRoom1, TILESET_DARK_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+	map_def SilverCaveRoom2, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def SilverCaveRoom3, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_DAY, FISHGROUP_LAKE
+	map_def SilverCaveItemRooms, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def DarkCaveVioletEntrance, TILESET_DARK_CAVE, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+	map_def DarkCaveBlackthornEntrance, TILESET_DARK_CAVE, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, TRUE, PALETTE_DARK, FISHGROUP_LAKE
+	map_def DragonsDen1F, TILESET_CAVE, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def DragonsDenB1F, TILESET_JOHTO, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_DRATINI
+	map_def DragonShrine, TILESET_LAB, INDOOR, DRAGONS_DEN, MUSIC_DRAGONS_DEN, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def TohjoFalls, TILESET_CAVE, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, TRUE, PALETTE_NITE, FISHGROUP_LAKE
+	map_def DiglettsCave, TILESET_CAVE, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def MountMoon, TILESET_CAVE, CAVE, MT_MOON, MUSIC_MT_MOON, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def UndergroundPath, TILESET_UNDERGROUND, GATE, UNDERGROUND_PATH, MUSIC_MT_MOON, FALSE, PALETTE_NITE, FISHGROUP_SHORE
+	map_def RockTunnel1F, TILESET_DARK_CAVE, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, TRUE, PALETTE_DARK, FISHGROUP_SHORE
+	map_def RockTunnelB1F, TILESET_DARK_CAVE, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, TRUE, PALETTE_DARK, FISHGROUP_SHORE
+	map_def SafariZoneFuchsiaGateBeta, TILESET_GATE, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SafariZoneBeta, TILESET_PARK, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def VictoryRoad, TILESET_CAVE, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, TRUE, PALETTE_NITE, FISHGROUP_SHORE
+
+MapGroup_Ecruteak:
+	map_def EcruteakHouse, TILESET_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def WiseTriosRoom, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EcruteakPokecenter1F, TILESET_POKECENTER, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EcruteakLugiaSpeechHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def DanceTheatre, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EcruteakMart, TILESET_MART, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EcruteakGym, TILESET_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EcruteakItemfinderHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EcruteakCity, TILESET_JOHTO, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
+
+MapGroup_Blackthorn:
+	map_def BlackthornGym1F, TILESET_ELITE_FOUR_ROOM, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BlackthornGym2F, TILESET_ELITE_FOUR_ROOM, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BlackthornDragonSpeechHouse, TILESET_HOUSE, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BlackthornEmysHouse, TILESET_HOUSE, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BlackthornMart, TILESET_MART, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BlackthornPokecenter1F, TILESET_POKECENTER, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MoveDeletersHouse, TILESET_HOUSE, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route45, TILESET_JOHTO, ROUTE, ROUTE_45, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_DRATINI_2
+	map_def Route46, TILESET_JOHTO, ROUTE, ROUTE_46, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def BlackthornCity, TILESET_JOHTO, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_POND
+
+MapGroup_Cinnabar:
+	map_def CinnabarPokecenter1F, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CinnabarPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route19FuchsiaGate, TILESET_GATE, GATE, ROUTE_19, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SeafoamGym, TILESET_CAVE, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route19, TILESET_KANTO, ROUTE, ROUTE_19, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route20, TILESET_KANTO, ROUTE, ROUTE_20, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def Route21, TILESET_KANTO, ROUTE, ROUTE_21, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def CinnabarIsland, TILESET_KANTO, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+
+MapGroup_Cerulean:
+	map_def CeruleanGymBadgeSpeechHouse, TILESET_HOUSE, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeruleanPoliceStation, TILESET_HOUSE, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeruleanTradeSpeechHouse, TILESET_HOUSE, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeruleanPokecenter1F, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeruleanPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeruleanGym, TILESET_PORT, INDOOR, CERULEAN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_NONE
+	map_def CeruleanMart, TILESET_MART, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route10Pokecenter1F, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route10Pokecenter2FBeta, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PowerPlant, TILESET_FACILITY, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BillsHouse, TILESET_HOUSE, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route4, TILESET_KANTO, ROUTE, ROUTE_4, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_NONE
+	map_def Route9, TILESET_KANTO, ROUTE, ROUTE_9, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+	map_def Route10North, TILESET_KANTO, ROUTE, ROUTE_10, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+	map_def Route24, TILESET_KANTO, ROUTE, ROUTE_24, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+	map_def Route25, TILESET_KANTO, ROUTE, ROUTE_25, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+	map_def CeruleanCity, TILESET_KANTO, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_NONE
+
+MapGroup_Azalea:
+	map_def AzaleaPokecenter1F, TILESET_POKECENTER, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CharcoalKiln, TILESET_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def AzaleaMart, TILESET_MART, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def KurtsHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def AzaleaGym, TILESET_ELITE_FOUR_ROOM, INDOOR, AZALEA_TOWN, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route33, TILESET_JOHTO_MODERN, ROUTE, ROUTE_33, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def AzaleaTown, TILESET_JOHTO_MODERN, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+
+MapGroup_LakeOfRage:
+	map_def LakeOfRageHiddenPowerHouse, TILESET_HOUSE, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LakeOfRageMagikarpHouse, TILESET_HOUSE, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route43MahoganyGate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route43Gate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route43, TILESET_JOHTO, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def LakeOfRage, TILESET_JOHTO, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, FALSE, PALETTE_AUTO, FISHGROUP_GYARADOS
+
+MapGroup_Violet:
+	map_def Route32, TILESET_JOHTO, ROUTE, ROUTE_32, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH
+	map_def Route35, TILESET_JOHTO, ROUTE, ROUTE_35, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def Route36, TILESET_JOHTO, ROUTE, ROUTE_36, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route37, TILESET_JOHTO, ROUTE, ROUTE_37, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def VioletCity, TILESET_JOHTO, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def VioletMart, TILESET_MART, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VioletGym, TILESET_ELITE_FOUR_ROOM, INDOOR, VIOLET_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def EarlsPokemonAcademy, TILESET_LAB, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VioletNicknameSpeechHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VioletPokecenter1F, TILESET_POKECENTER, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VioletKylesHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route32RuinsOfAlphGate, TILESET_GATE, GATE, ROUTE_32, MUSIC_ROUTE_30, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route32Pokecenter1F, TILESET_POKECENTER, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route35GoldenrodGate, TILESET_GATE, GATE, ROUTE_35, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route35NationalParkGate, TILESET_GATE, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route36RuinsOfAlphGate, TILESET_GATE, GATE, ROUTE_36, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route36NationalParkGate, TILESET_GATE, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Goldenrod:
+	map_def Route34, TILESET_JOHTO_MODERN, ROUTE, ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def GoldenrodCity, TILESET_JOHTO_MODERN, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def GoldenrodGym, TILESET_ELITE_FOUR_ROOM, INDOOR, GOLDENROD_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodBikeShop, TILESET_CHAMPIONS_ROOM, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodHappinessRater, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodBillsHouse, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodFlowerShop, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodPPSpeechHouse, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodNameRater, TILESET_HOUSE, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStore1F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStore2F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStore3F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStore4F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStore5F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStore6F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStoreElevator, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodDeptStoreRoof, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodGameCorner, TILESET_GAME_CORNER, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodPokecenter1F, TILESET_POKECENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GoldenrodPokeComCenter2FMobile, TILESET_POKECOM_CENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def IlexForestAzaleaGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route34IlexForestGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def DayCare, TILESET_HOUSE, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Vermilion:
+	map_def Route6, TILESET_KANTO, ROUTE, ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def Route11, TILESET_KANTO, ROUTE, ROUTE_11, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def VermilionCity, TILESET_KANTO, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def VermilionHouseFishingSpeechHouse, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionPokecenter1F, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionPokecenter2FBeta, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PokemonFanClub, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionMagnetTrainSpeechHouse, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionMart, TILESET_MART, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionHouseDiglettsCaveSpeechHouse, TILESET_HOUSE, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionGym, TILESET_GAME_CORNER, INDOOR, VERMILION_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route6SaffronGate, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route6UndergroundPathEntrance, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Pallet:
+	map_def Route1, TILESET_KANTO, ROUTE, ROUTE_1, MUSIC_ROUTE_1, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def PalletTown, TILESET_KANTO, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def RedsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def RedsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BluesHouse, TILESET_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OaksLab, TILESET_LAB, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Pewter:
+	map_def Route3, TILESET_KANTO, ROUTE, ROUTE_3, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def PewterCity, TILESET_KANTO, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def PewterNidoranSpeechHouse, TILESET_HOUSE, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PewterGym, TILESET_TOWER, INDOOR, PEWTER_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PewterMart, TILESET_MART, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PewterPokecenter1F, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PewterPokecenter2FBeta, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PewterSnoozeSpeechHouse, TILESET_HOUSE, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_FastShip:
+	map_def OlivinePort, TILESET_PORT, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def VermilionPort, TILESET_PORT, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def FastShip1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FastShipCabins_NNW_NNE_NE, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FastShipCabins_SW_SSW_NW, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FastShipCabins_SE_SSE_CaptainsCabin, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FastShipB1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def OlivinePortPassage, TILESET_UNDERGROUND, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VermilionPortPassage, TILESET_UNDERGROUND, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MountMoonSquare, TILESET_KANTO, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def MountMoonGiftShop, TILESET_TRADITIONAL_HOUSE, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TinTowerRoof, TILESET_TOWER, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+
+MapGroup_Indigo:
+	map_def Route23, TILESET_KANTO, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def IndigoPlateauPokecenter1F, TILESET_POKECENTER, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def WillsRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def KogasRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BrunosRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def KarensRoom, TILESET_ELITE_FOUR_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LancesRoom, TILESET_CHAMPIONS_ROOM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def HallOfFame, TILESET_ICE_PATH, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Fuchsia:
+	map_def Route13, TILESET_KANTO, ROUTE, ROUTE_13, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
+	map_def Route14, TILESET_KANTO, ROUTE, ROUTE_14, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route15, TILESET_KANTO, ROUTE, ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route18, TILESET_KANTO, ROUTE, ROUTE_18, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def FuchsiaCity, TILESET_KANTO, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_AUTO, FISHGROUP_GYARADOS
+	map_def FuchsiaMart, TILESET_MART, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SafariZoneMainOffice, TILESET_GAME_CORNER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FuchsiaGym, TILESET_LAB, INDOOR, FUCHSIA_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FuchsiaBillSpeechHouse, TILESET_HOUSE, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FuchsiaPokecenter1F, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def FuchsiaPokecenter2FBeta, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SafariZoneWardensHome, TILESET_HOUSE, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route15FuchsiaGate, TILESET_GATE, GATE, ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Lavender:
+	map_def Route8, TILESET_KANTO, ROUTE, ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route12, TILESET_KANTO, ROUTE, ROUTE_12, MUSIC_ROUTE_12, FALSE, PALETTE_AUTO, FISHGROUP_QWILFISH_NO_SWARM
+	map_def Route10South, TILESET_KANTO, ROUTE, ROUTE_10, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_LAKE
+	map_def LavenderTown, TILESET_KANTO, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def LavenderPokecenter1F, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LavenderPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MrFujisHouse, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LavenderSpeechHouse, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LavenderNameRater, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LavenderMart, TILESET_MART, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SoulHouse, TILESET_HOUSE, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def LavRadioTower1F, TILESET_RADIO_TOWER, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route8SaffronGate, TILESET_GATE, GATE, ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route12SuperRodHouse, TILESET_HOUSE, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Silver:
+	map_def Route28, TILESET_KANTO, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def SilverCaveOutside, TILESET_KANTO, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def SilverCavePokecenter1F, TILESET_POKECENTER, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route28FamousSpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_CableClub:
+	map_def Pokecenter2F, TILESET_POKECENTER, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TradeCenter, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Colosseum, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TimeCapsule, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MobileTradeRoomMobile, TILESET_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MobileBattleRoom, TILESET_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Celadon:
+	map_def Route7, TILESET_KANTO, ROUTE, ROUTE_7, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route16, TILESET_KANTO, ROUTE, ROUTE_16, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route17, TILESET_KANTO, ROUTE, ROUTE_17, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_NONE
+	map_def CeladonCity, TILESET_KANTO, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_AUTO, FISHGROUP_NONE
+	map_def CeladonDeptStore1F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonDeptStore2F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonDeptStore3F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonDeptStore4F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonDeptStore5F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonDeptStore6F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonDeptStoreElevator, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonMansion1F, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonMansion2F, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonMansion3F, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonMansionRoof, TILESET_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonMansionRoofHouse, TILESET_HOUSE, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonPokecenter1F, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonPokecenter2FBeta, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonGameCorner, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonGameCornerPrizeRoom, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonGym, TILESET_TRAIN_STATION, INDOOR, CELADON_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CeladonCafe, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route16FuchsiaSpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route16Gate, TILESET_GATE, GATE, ROUTE_16, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route7SaffronGate, TILESET_GATE, GATE, ROUTE_7, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route17Route18Gate, TILESET_GATE, GATE, ROUTE_17, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Cianwood:
+	map_def Route40, TILESET_JOHTO, ROUTE, ROUTE_40, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route41, TILESET_JOHTO, ROUTE, ROUTE_41, MUSIC_ROUTE_36, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def CianwoodCity, TILESET_JOHTO, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def ManiasHouse, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CianwoodGym, TILESET_TOWER, INDOOR, CIANWOOD_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CianwoodPokecenter1F, TILESET_POKECENTER, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CianwoodPharmacy, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CianwoodPhotoStudio, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CianwoodLugiaSpeechHouse, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def PokeSeersHouse, TILESET_HOUSE, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BattleTower1F, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BattleTowerBattleRoom, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BattleTowerElevator, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_NONE, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BattleTowerHallway, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route40BattleTowerGate, TILESET_GATE, GATE, BATTLE_TOWER, MUSIC_ROUTE_36, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def BattleTowerOutside, TILESET_BATTLE_TOWER_OUTSIDE, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+
+MapGroup_Viridian:
+	map_def Route2, TILESET_KANTO, ROUTE, ROUTE_2, MUSIC_ROUTE_2, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def Route22, TILESET_KANTO, ROUTE, ROUTE_22, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def ViridianCity, TILESET_KANTO, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def ViridianGym, TILESET_TRAIN_STATION, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def ViridianNicknameSpeechHouse, TILESET_HOUSE, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TrainerHouse1F, TILESET_HOUSE, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def TrainerHouseB1F, TILESET_FACILITY, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def ViridianMart, TILESET_MART, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def ViridianPokecenter1F, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def ViridianPokecenter2FBeta, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route2NuggetSpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route2Gate, TILESET_GATE, GATE, ROUTE_2, MUSIC_ROUTE_2, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def VictoryRoadGate, TILESET_GATE, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_NewBark:
+	map_def Route26, TILESET_JOHTO, ROUTE, ROUTE_26, MUSIC_ROUTE_26, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def Route27, TILESET_JOHTO, ROUTE, ROUTE_27, MUSIC_ROUTE_26, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def Route29, TILESET_JOHTO, ROUTE, ROUTE_29, MUSIC_ROUTE_29, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def NewBarkTown, TILESET_JOHTO, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_AUTO, FISHGROUP_OCEAN
+	map_def ElmsLab, TILESET_LAB, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def KrissHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def KrissHouse2F, TILESET_PLAYERS_ROOM, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def KrissNeighborsHouse, TILESET_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def ElmsHouse, TILESET_PLAYERS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route26HealSpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route26DayofWeekSiblingsHouse, TILESET_HOUSE, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route27SandstormHouse, TILESET_HOUSE, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route29Route46Gate, TILESET_GATE, GATE, ROUTE_29, MUSIC_ROUTE_29, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Saffron:
+	map_def Route5, TILESET_KANTO, ROUTE, ROUTE_5, MUSIC_ROUTE_3, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def SaffronCity, TILESET_KANTO, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def FightingDojo, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SaffronGym, TILESET_UNDERGROUND, INDOOR, SAFFRON_CITY, MUSIC_GYM, TRUE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SaffronMart, TILESET_MART, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SaffronPokecenter1F, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SaffronPokecenter2FBeta, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MrPsychicsHouse, TILESET_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SaffronMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def SilphCo1F, TILESET_FACILITY, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CopycatsHouse1F, TILESET_PLAYERS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CopycatsHouse2F, TILESET_PLAYERS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route5UndergroundPathEntrance, TILESET_GATE, GATE, ROUTE_5, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route5SaffronGate, TILESET_GATE, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route5CleanseTagSpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+
+MapGroup_Cherrygrove:
+	map_def Route30, TILESET_JOHTO, ROUTE, ROUTE_30, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def Route31, TILESET_JOHTO, ROUTE, ROUTE_31, MUSIC_ROUTE_30, FALSE, PALETTE_AUTO, FISHGROUP_POND
+	map_def CherrygroveCity, TILESET_JOHTO, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_AUTO, FISHGROUP_SHORE
+	map_def CherrygroveMart, TILESET_MART, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CherrygrovePokecenter1F, TILESET_POKECENTER, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CherrygroveGymSpeechHouse, TILESET_HOUSE, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def GuideGentsHouse, TILESET_HOUSE, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def CherrygroveEvolutionSpeechHouse, TILESET_HOUSE, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route30BerrySpeechHouse, TILESET_HOUSE, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def MrPokemonsHouse, TILESET_FACILITY, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
+	map_def Route31VioletGate, TILESET_GATE, GATE, ROUTE_31, MUSIC_ROUTE_30, FALSE, PALETTE_DAY, FISHGROUP_SHORE
--- /dev/null
+++ b/data/maps/maps.asm
@@ -1,0 +1,12 @@
+INCLUDE "constants.asm"
+
+
+SECTION "Maps", ROMX
+
+INCLUDE "data/maps/definitions.asm"
+INCLUDE "data/maps/data.asm"
+
+
+INCLUDE "data/maps/blocks.asm"
+
+INCLUDE "data/maps/scripts.asm"
--- a/data/maps/outdoor_sprites.asm
+++ b/data/maps/outdoor_sprites.asm
@@ -2,6 +2,7 @@
 ; Maps with environment ROUTE or TOWN can only use these sprites.
 
 OutdoorSprites: ; 144b8
+; entries correspond to map groups
 	dw OlivineGroupSprites
 	dw MahoganyGroupSprites
 	dw DungeonsGroupSprites
--- a/data/maps/roofs.asm
+++ b/data/maps/roofs.asm
@@ -1,5 +1,6 @@
 MapGroupRoofs: ; 1c021i
-; entries correspond to Roofs (see below)
+; entries correspond to map groups
+; values are indexes for Roofs (see below)
 	db -1 ; group 0 (unused)
 	db  3 ; group 1 (Olivine)
 	db  2 ; group 2 (Mahogany)
--- a/data/maps/scenes.asm
+++ b/data/maps/scenes.asm
@@ -15,9 +15,9 @@
 	scene_def ROUTE_25,                                    wRoute25SceneID
 	scene_def TRAINER_HOUSE_B1F,                           wTrainerHouseB1FSceneID
 	scene_def VICTORY_ROAD_GATE,                           wVictoryRoadGateSceneID
-	scene_def SAFFRON_TRAIN_STATION,                       wSaffronTrainStationSceneID
+	scene_def SAFFRON_MAGNET_TRAIN_STATION,                wSaffronMagnetTrainStationSceneID
 	scene_def ROUTE_16_GATE,                               wRoute16GateSceneID
-	scene_def ROUTE_17_18_GATE,                            wRoute1718GateSceneID
+	scene_def ROUTE_17_ROUTE_18_GATE,                      wRoute17Route18GateSceneID
 	scene_def INDIGO_PLATEAU_POKECENTER_1F,                wIndigoPlateauPokecenter1FSceneID
 	scene_def WILLS_ROOM,                                  wWillsRoomSceneID
 	scene_def KOGAS_ROOM,                                  wKogasRoomSceneID
--- /dev/null
+++ b/data/maps/scripts.asm
@@ -1,0 +1,486 @@
+SECTION "Map Scripts 1", ROMX
+
+INCLUDE "maps/GoldenrodGym.asm"
+INCLUDE "maps/GoldenrodBikeShop.asm"
+INCLUDE "maps/GoldenrodHappinessRater.asm"
+INCLUDE "maps/GoldenrodBillsHouse.asm"
+INCLUDE "maps/GoldenrodMagnetTrainStation.asm"
+INCLUDE "maps/GoldenrodFlowerShop.asm"
+INCLUDE "maps/GoldenrodPPSpeechHouse.asm"
+INCLUDE "maps/GoldenrodNameRater.asm"
+INCLUDE "maps/GoldenrodDeptStore1F.asm"
+INCLUDE "maps/GoldenrodDeptStore2F.asm"
+INCLUDE "maps/GoldenrodDeptStore3F.asm"
+INCLUDE "maps/GoldenrodDeptStore4F.asm"
+INCLUDE "maps/GoldenrodDeptStore5F.asm"
+INCLUDE "maps/GoldenrodDeptStore6F.asm"
+INCLUDE "maps/GoldenrodDeptStoreElevator.asm"
+INCLUDE "maps/GoldenrodDeptStoreRoof.asm"
+INCLUDE "maps/GoldenrodGameCorner.asm"
+
+
+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/UnionCave1F.asm"
+INCLUDE "maps/UnionCaveB1F.asm"
+INCLUDE "maps/UnionCaveB2F.asm"
+INCLUDE "maps/SlowpokeWellB1F.asm"
+INCLUDE "maps/SlowpokeWellB2F.asm"
+INCLUDE "maps/OlivineLighthouse1F.asm"
+INCLUDE "maps/OlivineLighthouse2F.asm"
+INCLUDE "maps/OlivineLighthouse3F.asm"
+INCLUDE "maps/OlivineLighthouse4F.asm"
+
+
+SECTION "Map Scripts 3", ROMX
+
+INCLUDE "maps/NationalPark.asm"
+INCLUDE "maps/NationalParkBugContest.asm"
+INCLUDE "maps/RadioTower1F.asm"
+INCLUDE "maps/RadioTower2F.asm"
+INCLUDE "maps/RadioTower3F.asm"
+INCLUDE "maps/RadioTower4F.asm"
+
+
+SECTION "Map Scripts 4", ROMX
+
+INCLUDE "maps/RadioTower5F.asm"
+INCLUDE "maps/OlivineLighthouse5F.asm"
+INCLUDE "maps/OlivineLighthouse6F.asm"
+INCLUDE "maps/GoldenrodPokecenter1F.asm"
+INCLUDE "maps/GoldenrodPokeComCenter2FMobile.asm"
+INCLUDE "maps/IlexForestAzaleaGate.asm"
+INCLUDE "maps/Route34IlexForestGate.asm"
+INCLUDE "maps/DayCare.asm"
+
+
+SECTION "Map Scripts 5", ROMX
+
+INCLUDE "maps/Route11.asm"
+INCLUDE "maps/VioletMart.asm"
+INCLUDE "maps/VioletGym.asm"
+INCLUDE "maps/EarlsPokemonAcademy.asm"
+INCLUDE "maps/VioletNicknameSpeechHouse.asm"
+INCLUDE "maps/VioletPokecenter1F.asm"
+INCLUDE "maps/VioletKylesHouse.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
+
+INCLUDE "maps/Route8.asm"
+INCLUDE "maps/MahoganyMart1F.asm"
+INCLUDE "maps/TeamRocketBaseB1F.asm"
+INCLUDE "maps/TeamRocketBaseB2F.asm"
+INCLUDE "maps/TeamRocketBaseB3F.asm"
+INCLUDE "maps/IlexForest.asm"
+
+
+SECTION "Map Scripts 7", ROMX
+
+INCLUDE "maps/LakeOfRage.asm"
+INCLUDE "maps/CeladonDeptStore1F.asm"
+INCLUDE "maps/CeladonDeptStore2F.asm"
+INCLUDE "maps/CeladonDeptStore3F.asm"
+INCLUDE "maps/CeladonDeptStore4F.asm"
+INCLUDE "maps/CeladonDeptStore5F.asm"
+INCLUDE "maps/CeladonDeptStore6F.asm"
+INCLUDE "maps/CeladonDeptStoreElevator.asm"
+INCLUDE "maps/CeladonMansion1F.asm"
+INCLUDE "maps/CeladonMansion2F.asm"
+INCLUDE "maps/CeladonMansion3F.asm"
+INCLUDE "maps/CeladonMansionRoof.asm"
+INCLUDE "maps/CeladonMansionRoofHouse.asm"
+INCLUDE "maps/CeladonPokecenter1F.asm"
+INCLUDE "maps/CeladonPokecenter2FBeta.asm"
+INCLUDE "maps/CeladonGameCorner.asm"
+INCLUDE "maps/CeladonGameCornerPrizeRoom.asm"
+INCLUDE "maps/CeladonGym.asm"
+INCLUDE "maps/CeladonCafe.asm"
+INCLUDE "maps/Route16FuchsiaSpeechHouse.asm"
+INCLUDE "maps/Route16Gate.asm"
+INCLUDE "maps/Route7SaffronGate.asm"
+INCLUDE "maps/Route17Route18Gate.asm"
+
+
+SECTION "Map Scripts 8", ROMX
+
+INCLUDE "maps/DiglettsCave.asm"
+INCLUDE "maps/MountMoon.asm"
+INCLUDE "maps/UndergroundPath.asm"
+INCLUDE "maps/RockTunnel1F.asm"
+INCLUDE "maps/RockTunnelB1F.asm"
+INCLUDE "maps/SafariZoneFuchsiaGateBeta.asm"
+INCLUDE "maps/SafariZoneBeta.asm"
+INCLUDE "maps/VictoryRoad.asm"
+INCLUDE "maps/OlivinePort.asm"
+INCLUDE "maps/VermilionPort.asm"
+INCLUDE "maps/FastShip1F.asm"
+INCLUDE "maps/FastShipCabins_NNW_NNE_NE.asm"
+INCLUDE "maps/FastShipCabins_SW_SSW_NW.asm"
+INCLUDE "maps/FastShipCabins_SE_SSE_CaptainsCabin.asm"
+INCLUDE "maps/FastShipB1F.asm"
+INCLUDE "maps/OlivinePortPassage.asm"
+INCLUDE "maps/VermilionPortPassage.asm"
+INCLUDE "maps/MountMoonSquare.asm"
+INCLUDE "maps/MountMoonGiftShop.asm"
+INCLUDE "maps/TinTowerRoof.asm"
+
+
+SECTION "Map Scripts 9", ROMX
+
+INCLUDE "maps/Route34.asm"
+INCLUDE "maps/ElmsLab.asm"
+INCLUDE "maps/KrissHouse1F.asm"
+INCLUDE "maps/KrissHouse2F.asm"
+INCLUDE "maps/KrissNeighborsHouse.asm"
+INCLUDE "maps/ElmsHouse.asm"
+INCLUDE "maps/Route26HealSpeechHouse.asm"
+INCLUDE "maps/Route26DayofWeekSiblingsHouse.asm"
+INCLUDE "maps/Route27SandstormHouse.asm"
+INCLUDE "maps/Route29Route46Gate.asm"
+
+
+SECTION "Map Scripts 10", ROMX
+
+INCLUDE "maps/Route22.asm"
+INCLUDE "maps/GoldenrodUnderground.asm"
+INCLUDE "maps/GoldenrodUndergroundSwitchRoomEntrances.asm"
+INCLUDE "maps/GoldenrodDeptStoreB1F.asm"
+INCLUDE "maps/GoldenrodUndergroundWarehouse.asm"
+INCLUDE "maps/MountMortar1FOutside.asm"
+INCLUDE "maps/MountMortar1FInside.asm"
+INCLUDE "maps/MountMortar2FInside.asm"
+INCLUDE "maps/MountMortarB1F.asm"
+INCLUDE "maps/IcePath1F.asm"
+INCLUDE "maps/IcePathB1F.asm"
+INCLUDE "maps/IcePathB2FMahoganySide.asm"
+INCLUDE "maps/IcePathB2FBlackthornSide.asm"
+INCLUDE "maps/IcePathB3F.asm"
+INCLUDE "maps/LavenderPokecenter1F.asm"
+INCLUDE "maps/LavenderPokecenter2FBeta.asm"
+INCLUDE "maps/MrFujisHouse.asm"
+INCLUDE "maps/LavenderSpeechHouse.asm"
+INCLUDE "maps/LavenderNameRater.asm"
+INCLUDE "maps/LavenderMart.asm"
+INCLUDE "maps/SoulHouse.asm"
+INCLUDE "maps/LavRadioTower1F.asm"
+INCLUDE "maps/Route8SaffronGate.asm"
+INCLUDE "maps/Route12SuperRodHouse.asm"
+
+
+SECTION "Map Scripts 11", ROMX
+
+INCLUDE "maps/EcruteakHouse.asm"
+INCLUDE "maps/WiseTriosRoom.asm"
+INCLUDE "maps/EcruteakPokecenter1F.asm"
+INCLUDE "maps/EcruteakLugiaSpeechHouse.asm"
+INCLUDE "maps/DanceTheatre.asm"
+INCLUDE "maps/EcruteakMart.asm"
+INCLUDE "maps/EcruteakGym.asm"
+INCLUDE "maps/EcruteakItemfinderHouse.asm"
+INCLUDE "maps/ViridianGym.asm"
+INCLUDE "maps/ViridianNicknameSpeechHouse.asm"
+INCLUDE "maps/TrainerHouse1F.asm"
+INCLUDE "maps/TrainerHouseB1F.asm"
+INCLUDE "maps/ViridianMart.asm"
+INCLUDE "maps/ViridianPokecenter1F.asm"
+INCLUDE "maps/ViridianPokecenter2FBeta.asm"
+INCLUDE "maps/Route2NuggetSpeechHouse.asm"
+INCLUDE "maps/Route2Gate.asm"
+INCLUDE "maps/VictoryRoadGate.asm"
+
+
+SECTION "Map Scripts 12", ROMX
+
+INCLUDE "maps/OlivinePokecenter1F.asm"
+INCLUDE "maps/OlivineGym.asm"
+INCLUDE "maps/OlivineTimsHouse.asm"
+INCLUDE "maps/OlivineHouseBeta.asm"
+INCLUDE "maps/OlivinePunishmentSpeechHouse.asm"
+INCLUDE "maps/OlivineGoodRodHouse.asm"
+INCLUDE "maps/OlivineCafe.asm"
+INCLUDE "maps/OlivineMart.asm"
+INCLUDE "maps/Route38EcruteakGate.asm"
+INCLUDE "maps/Route39Barn.asm"
+INCLUDE "maps/Route39Farmhouse.asm"
+INCLUDE "maps/ManiasHouse.asm"
+INCLUDE "maps/CianwoodGym.asm"
+INCLUDE "maps/CianwoodPokecenter1F.asm"
+INCLUDE "maps/CianwoodPharmacy.asm"
+INCLUDE "maps/CianwoodPhotoStudio.asm"
+INCLUDE "maps/CianwoodLugiaSpeechHouse.asm"
+INCLUDE "maps/PokeSeersHouse.asm"
+INCLUDE "maps/BattleTower1F.asm"
+INCLUDE "maps/BattleTowerBattleRoom.asm"
+INCLUDE "maps/BattleTowerElevator.asm"
+INCLUDE "maps/BattleTowerHallway.asm"
+INCLUDE "maps/Route40BattleTowerGate.asm"
+INCLUDE "maps/BattleTowerOutside.asm"
+
+
+SECTION "Map Scripts 13", ROMX
+
+INCLUDE "maps/IndigoPlateauPokecenter1F.asm"
+INCLUDE "maps/WillsRoom.asm"
+INCLUDE "maps/KogasRoom.asm"
+INCLUDE "maps/BrunosRoom.asm"
+INCLUDE "maps/KarensRoom.asm"
+INCLUDE "maps/LancesRoom.asm"
+INCLUDE "maps/HallOfFame.asm"
+
+
+SECTION "Map Scripts 14", ROMX
+
+INCLUDE "maps/CeruleanCity.asm"
+INCLUDE "maps/SproutTower1F.asm"
+INCLUDE "maps/SproutTower2F.asm"
+INCLUDE "maps/SproutTower3F.asm"
+INCLUDE "maps/TinTower1F.asm"
+INCLUDE "maps/TinTower2F.asm"
+INCLUDE "maps/TinTower3F.asm"
+INCLUDE "maps/TinTower4F.asm"
+INCLUDE "maps/TinTower5F.asm"
+INCLUDE "maps/TinTower6F.asm"
+INCLUDE "maps/TinTower7F.asm"
+INCLUDE "maps/TinTower8F.asm"
+INCLUDE "maps/TinTower9F.asm"
+INCLUDE "maps/BurnedTower1F.asm"
+INCLUDE "maps/BurnedTowerB1F.asm"
+
+
+SECTION "Map Scripts 15", ROMX
+
+INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm"
+INCLUDE "maps/CeruleanPoliceStation.asm"
+INCLUDE "maps/CeruleanTradeSpeechHouse.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/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/MrPsychicsHouse.asm"
+INCLUDE "maps/SaffronMagnetTrainStation.asm"
+INCLUDE "maps/SilphCo1F.asm"
+INCLUDE "maps/CopycatsHouse1F.asm"
+INCLUDE "maps/CopycatsHouse2F.asm"
+INCLUDE "maps/Route5UndergroundPathEntrance.asm"
+INCLUDE "maps/Route5SaffronGate.asm"
+INCLUDE "maps/Route5CleanseTagSpeechHouse.asm"
+
+
+SECTION "Map Scripts 16", ROMX
+
+INCLUDE "maps/PewterCity.asm"
+INCLUDE "maps/WhirlIslandNW.asm"
+INCLUDE "maps/WhirlIslandNE.asm"
+INCLUDE "maps/WhirlIslandSW.asm"
+INCLUDE "maps/WhirlIslandCave.asm"
+INCLUDE "maps/WhirlIslandSE.asm"
+INCLUDE "maps/WhirlIslandB1F.asm"
+INCLUDE "maps/WhirlIslandB2F.asm"
+INCLUDE "maps/WhirlIslandLugiaChamber.asm"
+INCLUDE "maps/SilverCaveRoom1.asm"
+INCLUDE "maps/SilverCaveRoom2.asm"
+INCLUDE "maps/SilverCaveRoom3.asm"
+INCLUDE "maps/SilverCaveItemRooms.asm"
+INCLUDE "maps/DarkCaveVioletEntrance.asm"
+INCLUDE "maps/DarkCaveBlackthornEntrance.asm"
+INCLUDE "maps/DragonsDen1F.asm"
+INCLUDE "maps/DragonsDenB1F.asm"
+INCLUDE "maps/DragonShrine.asm"
+INCLUDE "maps/TohjoFalls.asm"
+INCLUDE "maps/AzaleaPokecenter1F.asm"
+INCLUDE "maps/CharcoalKiln.asm"
+INCLUDE "maps/AzaleaMart.asm"
+INCLUDE "maps/KurtsHouse.asm"
+INCLUDE "maps/AzaleaGym.asm"
+
+
+SECTION "Map Scripts 17", ROMX
+
+INCLUDE "maps/MahoganyTown.asm"
+INCLUDE "maps/Route32.asm"
+INCLUDE "maps/VermilionHouseFishingSpeechHouse.asm"
+INCLUDE "maps/VermilionPokecenter1F.asm"
+INCLUDE "maps/VermilionPokecenter2FBeta.asm"
+INCLUDE "maps/PokemonFanClub.asm"
+INCLUDE "maps/VermilionMagnetTrainSpeechHouse.asm"
+INCLUDE "maps/VermilionMart.asm"
+INCLUDE "maps/VermilionHouseDiglettsCaveSpeechHouse.asm"
+INCLUDE "maps/VermilionGym.asm"
+INCLUDE "maps/Route6SaffronGate.asm"
+INCLUDE "maps/Route6UndergroundPathEntrance.asm"
+INCLUDE "maps/Pokecenter2F.asm"
+INCLUDE "maps/TradeCenter.asm"
+INCLUDE "maps/Colosseum.asm"
+INCLUDE "maps/TimeCapsule.asm"
+INCLUDE "maps/MobileTradeRoomMobile.asm"
+INCLUDE "maps/MobileBattleRoom.asm"
+
+
+SECTION "Map Scripts 18", ROMX
+
+INCLUDE "maps/Route36.asm"
+INCLUDE "maps/FuchsiaCity.asm"
+INCLUDE "maps/BlackthornGym1F.asm"
+INCLUDE "maps/BlackthornGym2F.asm"
+INCLUDE "maps/BlackthornDragonSpeechHouse.asm"
+INCLUDE "maps/BlackthornEmysHouse.asm"
+INCLUDE "maps/BlackthornMart.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/SafariZoneWardensHome.asm"
+INCLUDE "maps/Route15FuchsiaGate.asm"
+INCLUDE "maps/CherrygroveMart.asm"
+INCLUDE "maps/CherrygrovePokecenter1F.asm"
+INCLUDE "maps/CherrygroveGymSpeechHouse.asm"
+INCLUDE "maps/GuideGentsHouse.asm"
+INCLUDE "maps/CherrygroveEvolutionSpeechHouse.asm"
+INCLUDE "maps/Route30BerrySpeechHouse.asm"
+INCLUDE "maps/MrPokemonsHouse.asm"
+INCLUDE "maps/Route31VioletGate.asm"
+
+
+SECTION "Map Scripts 19", ROMX
+
+INCLUDE "maps/AzaleaTown.asm"
+INCLUDE "maps/GoldenrodCity.asm"
+INCLUDE "maps/SaffronCity.asm"
+INCLUDE "maps/MahoganyRedGyaradosSpeechHouse.asm"
+INCLUDE "maps/MahoganyGym.asm"
+INCLUDE "maps/MahoganyPokecenter1F.asm"
+INCLUDE "maps/Route42EcruteakGate.asm"
+INCLUDE "maps/LakeOfRageHiddenPowerHouse.asm"
+INCLUDE "maps/LakeOfRageMagikarpHouse.asm"
+INCLUDE "maps/Route43MahoganyGate.asm"
+INCLUDE "maps/Route43Gate.asm"
+INCLUDE "maps/RedsHouse1F.asm"
+INCLUDE "maps/RedsHouse2F.asm"
+INCLUDE "maps/BluesHouse.asm"
+INCLUDE "maps/OaksLab.asm"
+
+
+SECTION "Map Scripts 20", ROMX
+
+INCLUDE "maps/CherrygroveCity.asm"
+INCLUDE "maps/Route35.asm"
+INCLUDE "maps/Route43.asm"
+INCLUDE "maps/Route44.asm"
+INCLUDE "maps/Route45.asm"
+INCLUDE "maps/Route19.asm"
+INCLUDE "maps/Route25.asm"
+
+
+SECTION "Map Scripts 21", ROMX
+
+INCLUDE "maps/CianwoodCity.asm"
+INCLUDE "maps/Route27.asm"
+INCLUDE "maps/Route29.asm"
+INCLUDE "maps/Route30.asm"
+INCLUDE "maps/Route38.asm"
+INCLUDE "maps/Route13.asm"
+INCLUDE "maps/PewterNidoranSpeechHouse.asm"
+INCLUDE "maps/PewterGym.asm"
+INCLUDE "maps/PewterMart.asm"
+INCLUDE "maps/PewterPokecenter1F.asm"
+INCLUDE "maps/PewterPokecenter2FBeta.asm"
+INCLUDE "maps/PewterSnoozeSpeechHouse.asm"
+
+
+SECTION "Map Scripts 22", ROMX
+
+INCLUDE "maps/EcruteakCity.asm"
+INCLUDE "maps/BlackthornCity.asm"
+INCLUDE "maps/Route26.asm"
+INCLUDE "maps/Route28.asm"
+INCLUDE "maps/Route31.asm"
+INCLUDE "maps/Route39.asm"
+INCLUDE "maps/Route40.asm"
+INCLUDE "maps/Route41.asm"
+INCLUDE "maps/Route12.asm"
+
+
+SECTION "Map Scripts 23", ROMX
+
+INCLUDE "maps/NewBarkTown.asm"
+INCLUDE "maps/VioletCity.asm"
+INCLUDE "maps/OlivineCity.asm"
+INCLUDE "maps/Route37.asm"
+INCLUDE "maps/Route42.asm"
+INCLUDE "maps/Route46.asm"
+INCLUDE "maps/ViridianCity.asm"
+INCLUDE "maps/CeladonCity.asm"
+INCLUDE "maps/Route15.asm"
+INCLUDE "maps/VermilionCity.asm"
+INCLUDE "maps/Route9.asm"
+INCLUDE "maps/CinnabarPokecenter1F.asm"
+INCLUDE "maps/CinnabarPokecenter2FBeta.asm"
+INCLUDE "maps/Route19FuchsiaGate.asm"
+INCLUDE "maps/SeafoamGym.asm"
+
+
+SECTION "Map Scripts 24", ROMX
+
+INCLUDE "maps/Route33.asm"
+INCLUDE "maps/Route2.asm"
+INCLUDE "maps/Route1.asm"
+INCLUDE "maps/PalletTown.asm"
+INCLUDE "maps/Route21.asm"
+INCLUDE "maps/CinnabarIsland.asm"
+INCLUDE "maps/Route20.asm"
+INCLUDE "maps/Route18.asm"
+INCLUDE "maps/Route17.asm"
+INCLUDE "maps/Route16.asm"
+INCLUDE "maps/Route7.asm"
+INCLUDE "maps/Route14.asm"
+INCLUDE "maps/LavenderTown.asm"
+INCLUDE "maps/Route6.asm"
+INCLUDE "maps/Route5.asm"
+INCLUDE "maps/Route24.asm"
+INCLUDE "maps/Route3.asm"
+INCLUDE "maps/Route4.asm"
+INCLUDE "maps/Route10South.asm"
+INCLUDE "maps/Route23.asm"
+INCLUDE "maps/SilverCavePokecenter1F.asm"
+INCLUDE "maps/Route28FamousSpeechHouse.asm"
+
+
+SECTION "Map Scripts 25", ROMX
+
+INCLUDE "maps/SilverCaveOutside.asm"
+INCLUDE "maps/Route10North.asm"
--- /dev/null
+++ b/data/maps/sgb_roof_pal_inds.asm
@@ -1,0 +1,32 @@
+; Crystal does not support SGB, so this is unused.
+
+MapGroupRoofSGBPalInds: ; 8a45
+; entries correspond to map groups
+	db PREDEFPAL_00
+	db PREDEFPAL_OLIVINE
+	db PREDEFPAL_MAHOGANY
+	db PREDEFPAL_DUNGEONS
+	db PREDEFPAL_ECRUTEAK
+	db PREDEFPAL_BLACKTHORN
+	db PREDEFPAL_CINNABAR
+	db PREDEFPAL_CERULEAN
+	db PREDEFPAL_AZALEA
+	db PREDEFPAL_LAKE_OF_RAGE
+	db PREDEFPAL_VIOLET
+	db PREDEFPAL_GOLDENROD
+	db PREDEFPAL_VERMILION
+	db PREDEFPAL_PALLET
+	db PREDEFPAL_PEWTER
+	db PREDEFPAL_VERMILION
+	db PREDEFPAL_INDIGO
+	db PREDEFPAL_FUCHSIA
+	db PREDEFPAL_LAVENDER
+	db PREDEFPAL_SILVER_CAVE
+	db PREDEFPAL_FUCHSIA
+	db PREDEFPAL_CELADON
+	db PREDEFPAL_CIANWOOD
+	db PREDEFPAL_VIRIDIAN
+	db PREDEFPAL_NEW_BARK
+	db PREDEFPAL_SAFFRON
+	db PREDEFPAL_CHERRYGROVE
+; 8a60
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -401,7 +401,7 @@
 	anim_if_var_equal $1, .Click
 	anim_if_var_equal $2, .BreakFree
 	anim_incobj  1
-	anim_sound 0, 1, SFX_BALL_WIGGLE
+	anim_sound 0, 1, SFX_BALL_WOBBLE
 	anim_jump .Loop
 ; c93bc
 
@@ -455,28 +455,28 @@
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $0
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $0
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $8
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $8
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $10
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $10
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $18
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $18
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $20
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $20
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $28
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $28
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $30
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $30
 	anim_wait 4
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_6D, 48, 96, $38
+	anim_obj ANIM_OBJ_SHINY, 48, 96, $38
 	anim_wait 32
 	anim_ret
 
@@ -512,7 +512,7 @@
 	anim_1gfx ANIM_GFX_STATUS
 	anim_sound 0, 0, SFX_TAIL_WHIP
 .loop
-	anim_obj ANIM_OBJ_54, 64, 80, $0
+	anim_obj ANIM_OBJ_ASLEEP, 64, 80, $0
 	anim_wait 40
 	anim_loop 3, .loop
 	anim_wait 32
@@ -588,11 +588,11 @@
 
 BattleAnim_InSandstorm: ; c9533
 	anim_1gfx ANIM_GFX_POWDER
-	anim_obj ANIM_OBJ_A2, 88, 0, $0
+	anim_obj ANIM_OBJ_SANDSTORM, 88, 0, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_A2, 72, 0, $1
+	anim_obj ANIM_OBJ_SANDSTORM, 72, 0, $1
 	anim_wait 8
-	anim_obj ANIM_OBJ_A2, 56, 0, $2
+	anim_obj ANIM_OBJ_SANDSTORM, 56, 0, $2
 .loop
 	anim_sound 0, 1, SFX_MENU
 	anim_wait 8
@@ -604,7 +604,7 @@
 BattleAnim_InNightmare: ; c9550
 	anim_1gfx ANIM_GFX_ANGELS
 	anim_sound 0, 0, SFX_BUBBLEBEAM
-	anim_obj ANIM_OBJ_95, 68, 80, $0
+	anim_obj ANIM_OBJ_IN_NIGHTMARE, 68, 80, $0
 	anim_wait 40
 	anim_ret
 ; c955c
@@ -884,7 +884,7 @@
 	anim_1gfx ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_1F, $20, $1, $0
 	anim_sound 0, 1, SFX_BITE
-	anim_obj ANIM_OBJ_09, 136, 56, $0
+	anim_obj ANIM_OBJ_FANG, 136, 56, $0
 	anim_wait 6
 	anim_obj ANIM_OBJ_01, 136, 56, $0
 	anim_wait 16
@@ -898,10 +898,10 @@
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $8, $3
 .loop
 	anim_sound 0, 1, SFX_BITE
-	anim_obj ANIM_OBJ_09, 136, 56, $0
+	anim_obj ANIM_OBJ_FANG, 136, 56, $0
 	anim_obj ANIM_OBJ_00, 136, 56, $0
 	anim_wait 6
-	anim_obj ANIM_OBJ_09, 136, 56, $0
+	anim_obj ANIM_OBJ_FANG, 136, 56, $0
 	anim_wait 6
 	anim_loop 3, .loop
 	anim_ret
@@ -910,21 +910,21 @@
 BattleAnim_Ember: ; c97a1
 	anim_1gfx ANIM_GFX_FIRE
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0B, 64, 96, $12
+	anim_obj ANIM_OBJ_EMBER, 64, 96, $12
 	anim_wait 4
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0B, 64, 100, $14
+	anim_obj ANIM_OBJ_EMBER, 64, 100, $14
 	anim_wait 4
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0B, 64, 84, $13
+	anim_obj ANIM_OBJ_EMBER, 64, 84, $13
 	anim_wait 16
 	anim_incobj  1
 	anim_incobj  2
 	anim_incobj  3
 	anim_sound 0, 1, SFX_EMBER
-	anim_obj ANIM_OBJ_0B, 120, 68, $30
-	anim_obj ANIM_OBJ_0B, 132, 68, $30
-	anim_obj ANIM_OBJ_0B, 144, 68, $30
+	anim_obj ANIM_OBJ_EMBER, 120, 68, $30
+	anim_obj ANIM_OBJ_EMBER, 132, 68, $30
+	anim_obj ANIM_OBJ_EMBER, 144, 68, $30
 	anim_wait 32
 	anim_ret
 ; c97d8
@@ -941,16 +941,16 @@
 	anim_1gfx ANIM_GFX_FIRE
 .loop
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0E, 64, 88, $4
+	anim_obj ANIM_OBJ_FIRE_SPIN, 64, 88, $4
 	anim_wait 2
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0E, 64, 96, $3
+	anim_obj ANIM_OBJ_FIRE_SPIN, 64, 96, $3
 	anim_wait 2
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0E, 64, 88, $3
+	anim_obj ANIM_OBJ_FIRE_SPIN, 64, 88, $3
 	anim_wait 2
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0E, 64, 96, $4
+	anim_obj ANIM_OBJ_FIRE_SPIN, 64, 96, $4
 	anim_wait 2
 	anim_loop 2, .loop
 	anim_wait 96
@@ -961,7 +961,7 @@
 	anim_1gfx ANIM_GFX_FIRE
 .loop
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0C, 64, 92, $0
+	anim_obj ANIM_OBJ_DRAGON_RAGE, 64, 92, $0
 	anim_wait 3
 	anim_loop 16, .loop
 	anim_wait 64
@@ -971,21 +971,21 @@
 BattleAnim_Flamethrower: ; c9822
 	anim_1gfx ANIM_GFX_FIRE
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0D, 64, 92, $3
+	anim_obj ANIM_OBJ_FLAMETHROWER, 64, 92, $3
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 75, 86, $5
+	anim_obj ANIM_OBJ_FLAMETHROWER, 75, 86, $5
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 85, 81, $7
+	anim_obj ANIM_OBJ_FLAMETHROWER, 85, 81, $7
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 96, 76, $9
+	anim_obj ANIM_OBJ_FLAMETHROWER, 96, 76, $9
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 106, 71, $b
+	anim_obj ANIM_OBJ_FLAMETHROWER, 106, 71, $b
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 116, 66, $c
+	anim_obj ANIM_OBJ_FLAMETHROWER, 116, 66, $c
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 126, 61, $a
+	anim_obj ANIM_OBJ_FLAMETHROWER, 126, 61, $a
 	anim_wait 2
-	anim_obj ANIM_OBJ_0D, 136, 56, $8
+	anim_obj ANIM_OBJ_FLAMETHROWER, 136, 56, $8
 	anim_wait 16
 .loop
 	anim_sound 0, 1, SFX_EMBER
@@ -999,7 +999,7 @@
 	anim_1gfx ANIM_GFX_FIRE
 .loop1
 	anim_sound 6, 2, SFX_EMBER
-	anim_obj ANIM_OBJ_0F, 64, 92, $7
+	anim_obj ANIM_OBJ_FIRE_BLAST, 64, 92, $7
 	anim_wait 6
 	anim_loop 10, .loop1
 .loop2
@@ -1019,11 +1019,11 @@
 	anim_wait 2
 .loop3
 	anim_sound 0, 1, SFX_EMBER
-	anim_obj ANIM_OBJ_0F, 136, 56, $1
-	anim_obj ANIM_OBJ_0F, 136, 56, $2
-	anim_obj ANIM_OBJ_0F, 136, 56, $3
-	anim_obj ANIM_OBJ_0F, 136, 56, $4
-	anim_obj ANIM_OBJ_0F, 136, 56, $5
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 56, $1
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 56, $2
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 56, $3
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 56, $4
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 56, $5
 	anim_wait 16
 	anim_loop 2, .loop3
 	anim_wait 32
@@ -1129,11 +1129,11 @@
 	anim_1gfx ANIM_GFX_WATER
 	anim_call BattleAnim_FollowPlayerHead_1
 	anim_sound 16, 2, SFX_WATER_GUN
-	anim_obj ANIM_OBJ_24, 64, 88, $0
+	anim_obj ANIM_OBJ_WATER_GUN, 64, 88, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_24, 64, 76, $0
+	anim_obj ANIM_OBJ_WATER_GUN, 64, 76, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_24, 64, 82, $0
+	anim_obj ANIM_OBJ_WATER_GUN, 64, 82, $0
 	anim_wait 24
 	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 8
@@ -1152,31 +1152,31 @@
 	anim_1gfx ANIM_GFX_WATER
 	anim_call BattleAnim_FollowPlayerHead_1
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 108, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 108, 72, $0
 	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 8
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 116, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 116, 72, $0
 	anim_bgeffect ANIM_BG_31, $8, $0, $0
 	anim_wait 8
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 124, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 124, 72, $0
 	anim_bgeffect ANIM_BG_31, $30, $0, $0
 	anim_wait 8
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 132, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 132, 72, $0
 	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 8
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 140, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 140, 72, $0
 	anim_bgeffect ANIM_BG_31, $8, $0, $0
 	anim_wait 8
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 148, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 148, 72, $0
 	anim_bgeffect ANIM_BG_31, $30, $0, $0
 	anim_wait 8
 	anim_sound 0, 1, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_25, 156, 72, $0
+	anim_obj ANIM_OBJ_HYDRO_PUMP, 156, 72, $0
 	anim_bgeffect ANIM_BG_31, $1c, $0, $0
 	anim_wait 32
 	anim_call BattleAnim_ShowMon_1
@@ -1188,7 +1188,7 @@
 BattleAnim_Surf: ; c9a2a
 	anim_1gfx ANIM_GFX_BUBBLE
 	anim_bgeffect ANIM_BG_SURF, $0, $0, $0
-	anim_obj ANIM_OBJ_22, 88, 104, $8
+	anim_obj ANIM_OBJ_SURF, 88, 104, $8
 .loop
 	anim_sound 0, 1, SFX_SURF
 	anim_wait 32
@@ -1340,7 +1340,7 @@
 	anim_1gfx ANIM_GFX_LIGHTNING
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
 	anim_sound 0, 1, SFX_THUNDERSHOCK
-	anim_obj ANIM_OBJ_30, 136, 56, $0
+	anim_obj ANIM_OBJ_THUNDER_WAVE, 136, 56, $0
 	anim_wait 20
 	anim_bgp $1b
 	anim_incobj  1
@@ -1393,13 +1393,13 @@
 	anim_2gfx ANIM_GFX_WHIP, ANIM_GFX_HIT
 .loop
 	anim_sound 3, 0, SFX_RAZOR_WIND
-	anim_obj ANIM_OBJ_43, 64, 80, $3
+	anim_obj ANIM_OBJ_SONICBOOM_JP, 64, 80, $3
 	anim_wait 8
 	anim_sound 3, 0, SFX_RAZOR_WIND
-	anim_obj ANIM_OBJ_43, 64, 88, $2
+	anim_obj ANIM_OBJ_SONICBOOM_JP, 64, 88, $2
 	anim_wait 8
 	anim_sound 3, 0, SFX_RAZOR_WIND
-	anim_obj ANIM_OBJ_43, 64, 96, $4
+	anim_obj ANIM_OBJ_SONICBOOM_JP, 64, 96, $4
 	anim_wait 8
 	anim_loop 2, .loop
 	anim_wait 32
@@ -1477,19 +1477,19 @@
 	anim_1gfx ANIM_GFX_ROCKS
 	anim_bgeffect ANIM_BG_1F, $60, $1, $0
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 128, 64, $40
+	anim_obj ANIM_OBJ_SMALL_ROCK, 128, 64, $40
 	anim_wait 2
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1D, 120, 68, $30
+	anim_obj ANIM_OBJ_BIG_ROCK, 120, 68, $30
 	anim_wait 2
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 152, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 152, 68, $30
 	anim_wait 2
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1D, 144, 64, $40
+	anim_obj ANIM_OBJ_BIG_ROCK, 144, 64, $40
 	anim_wait 2
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 136, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 136, 68, $30
 	anim_wait 96
 	anim_ret
 ; c9cd2
@@ -1499,19 +1499,19 @@
 	anim_bgeffect ANIM_BG_1F, $c0, $1, $0
 .loop
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 128, 64, $40
+	anim_obj ANIM_OBJ_SMALL_ROCK, 128, 64, $40
 	anim_wait 4
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1D, 120, 68, $30
+	anim_obj ANIM_OBJ_BIG_ROCK, 120, 68, $30
 	anim_wait 4
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 152, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 152, 68, $30
 	anim_wait 4
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1D, 144, 64, $40
+	anim_obj ANIM_OBJ_BIG_ROCK, 144, 64, $40
 	anim_wait 4
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 136, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 136, 68, $30
 	anim_wait 16
 	anim_loop 4, .loop
 	anim_wait 96
@@ -1522,15 +1522,15 @@
 	anim_1gfx ANIM_GFX_NOISE
 	anim_sound 16, 2, SFX_SING
 .loop
-	anim_obj ANIM_OBJ_23, 64, 92, $0
+	anim_obj ANIM_OBJ_SING, 64, 92, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_23, 64, 92, $1
+	anim_obj ANIM_OBJ_SING, 64, 92, $1
 	anim_wait 8
-	anim_obj ANIM_OBJ_23, 64, 92, $2
+	anim_obj ANIM_OBJ_SING, 64, 92, $2
 	anim_wait 8
-	anim_obj ANIM_OBJ_23, 64, 92, $0
+	anim_obj ANIM_OBJ_SING, 64, 92, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_23, 64, 92, $2
+	anim_obj ANIM_OBJ_SING, 64, 92, $2
 	anim_wait 8
 	anim_loop 4, .loop
 	anim_wait 64
@@ -1544,19 +1544,19 @@
 	anim_1gfx ANIM_GFX_POWDER
 .loop
 	anim_sound 0, 1, SFX_POWDER
-	anim_obj ANIM_OBJ_26, 104, 16, $0
+	anim_obj ANIM_OBJ_POWDER, 104, 16, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_POWDER
-	anim_obj ANIM_OBJ_26, 136, 16, $0
+	anim_obj ANIM_OBJ_POWDER, 136, 16, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_POWDER
-	anim_obj ANIM_OBJ_26, 112, 16, $0
+	anim_obj ANIM_OBJ_POWDER, 112, 16, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_POWDER
-	anim_obj ANIM_OBJ_26, 128, 16, $0
+	anim_obj ANIM_OBJ_POWDER, 128, 16, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_POWDER
-	anim_obj ANIM_OBJ_26, 120, 16, $0
+	anim_obj ANIM_OBJ_POWDER, 120, 16, $0
 	anim_wait 4
 	anim_loop 2, .loop
 	anim_wait 96
@@ -1645,8 +1645,8 @@
 
 BattleAnim_Clamp: ; c9e0d
 	anim_2gfx ANIM_GFX_CUT, ANIM_GFX_HIT
-	anim_obj ANIM_OBJ_35, 136, 56, $a0
-	anim_obj ANIM_OBJ_35, 136, 56, $20
+	anim_obj ANIM_OBJ_CLAMP, 136, 56, $a0
+	anim_obj ANIM_OBJ_CLAMP, 136, 56, $20
 	anim_wait 16
 	anim_sound 0, 1, SFX_BITE
 	anim_obj ANIM_OBJ_01, 144, 48, $18
@@ -1659,8 +1659,8 @@
 
 BattleAnim_Bite: ; c9e2e
 	anim_2gfx ANIM_GFX_CUT, ANIM_GFX_HIT
-	anim_obj ANIM_OBJ_36, 136, 56, $98
-	anim_obj ANIM_OBJ_36, 136, 56, $18
+	anim_obj ANIM_OBJ_BITE, 136, 56, $98
+	anim_obj ANIM_OBJ_BITE, 136, 56, $18
 	anim_wait 8
 	anim_sound 0, 1, SFX_BITE
 	anim_obj ANIM_OBJ_01, 144, 48, $18
@@ -1725,14 +1725,14 @@
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_sound 0, 0, SFX_FULL_HEAL
 	anim_bgeffect ANIM_BG_18, $0, $1, $40
-	anim_obj ANIM_OBJ_2C, 44, 88, $30
-	anim_obj ANIM_OBJ_2C, 44, 88, $31
-	anim_obj ANIM_OBJ_2C, 44, 88, $32
-	anim_obj ANIM_OBJ_2C, 44, 88, $33
-	anim_obj ANIM_OBJ_2C, 44, 88, $34
-	anim_obj ANIM_OBJ_2C, 44, 88, $35
-	anim_obj ANIM_OBJ_2C, 44, 88, $36
-	anim_obj ANIM_OBJ_2C, 44, 88, $37
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $30
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $31
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $32
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $33
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $34
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $35
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $36
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $37
 	anim_wait 64
 	anim_incbgeffect ANIM_BG_18
 	anim_call BattleAnim_ShowMon_0
@@ -1793,7 +1793,7 @@
 BattleAnim_EggBomb: ; c9f55
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_EXPLOSION
 	anim_sound 0, 0, SFX_SWITCH_POKEMON
-	anim_obj ANIM_OBJ_46, 44, 104, $1
+	anim_obj ANIM_OBJ_EGG, 44, 104, $1
 	anim_wait 128
 	anim_wait 96
 	anim_incobj  1
@@ -1814,15 +1814,15 @@
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_BUBBLE
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_sound 0, 0, SFX_SWITCH_POKEMON
-	anim_obj ANIM_OBJ_46, 44, 104, $6
+	anim_obj ANIM_OBJ_EGG, 44, 104, $6
 	anim_wait 128
 	anim_incobj  2
-	anim_obj ANIM_OBJ_46, 76, 104, $b
+	anim_obj ANIM_OBJ_EGG, 76, 104, $b
 	anim_wait 16
 	anim_bgeffect ANIM_BG_18, $0, $1, $40
 	anim_sound 0, 0, SFX_METRONOME
 .loop
-	anim_obj ANIM_OBJ_2C, 44, 88, $20
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $20
 	anim_wait 8
 	anim_loop 8, .loop
 	anim_wait 128
@@ -1995,7 +1995,7 @@
 	anim_1gfx ANIM_GFX_PSYCHIC
 .loop
 	anim_sound 6, 2, SFX_SUPERSONIC
-	anim_obj ANIM_OBJ_4C, 64, 88, $2
+	anim_obj ANIM_OBJ_WAVE, 64, 88, $2
 	anim_wait 4
 	anim_loop 10, .loop
 	anim_wait 64
@@ -2007,7 +2007,7 @@
 	anim_bgeffect ANIM_BG_1F, $8, $1, $20
 	anim_sound 6, 2, SFX_SCREECH
 .loop
-	anim_obj ANIM_OBJ_4C, 64, 88, $2
+	anim_obj ANIM_OBJ_WAVE, 64, 88, $2
 	anim_wait 2
 	anim_loop 2, .loop
 	anim_wait 64
@@ -2018,15 +2018,15 @@
 	anim_1gfx ANIM_GFX_SPEED
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_08, $0, $4, $0
-	anim_obj ANIM_OBJ_4D, 64, 88, $0
-	anim_obj ANIM_OBJ_4D, 64, 88, $80
-	anim_obj ANIM_OBJ_4D, 64, 88, $88
-	anim_obj ANIM_OBJ_4D, 64, 88, $90
-	anim_obj ANIM_OBJ_4D, 64, 88, $98
-	anim_obj ANIM_OBJ_4D, 64, 88, $a0
-	anim_obj ANIM_OBJ_4D, 64, 88, $a8
-	anim_obj ANIM_OBJ_4D, 64, 88, $b0
-	anim_obj ANIM_OBJ_4D, 64, 88, $b8
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $0
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $80
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $88
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $90
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $98
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $a0
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $a8
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $b0
+	anim_obj ANIM_OBJ_CONFUSE_RAY, 64, 88, $b8
 .loop
 	anim_sound 6, 2, SFX_WHIRLWIND
 	anim_wait 16
@@ -2048,11 +2048,11 @@
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_50, 72, 80, $0
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
 	anim_wait 24
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $2
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_50, 72, 80, $0
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
 	anim_wait 64
 	anim_ret
 ; ca18e
@@ -2061,24 +2061,24 @@
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_REFLECT
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_sound 0, 0, SFX_FLASH
-	anim_obj ANIM_OBJ_50, 72, 80, $0
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $0
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $0
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $8
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $8
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $10
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $10
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $18
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $18
 	anim_wait 4
-	anim_obj ANIM_OBJ_50, 72, 80, $0
-	anim_obj ANIM_OBJ_6D, 72, 80, $20
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $20
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $28
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $28
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $30
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $30
 	anim_wait 4
-	anim_obj ANIM_OBJ_6D, 72, 80, $38
+	anim_obj ANIM_OBJ_SHINY, 72, 80, $38
 	anim_wait 64
 	anim_ret
 ; ca1d5
@@ -2086,11 +2086,11 @@
 BattleAnim_Amnesia: ; ca1d5
 	anim_1gfx ANIM_GFX_STATUS
 	anim_sound 0, 0, SFX_LICK
-	anim_obj ANIM_OBJ_53, 64, 80, $2
+	anim_obj ANIM_OBJ_AMNESIA, 64, 80, $2
 	anim_wait 16
-	anim_obj ANIM_OBJ_53, 68, 80, $1
+	anim_obj ANIM_OBJ_AMNESIA, 68, 80, $1
 	anim_wait 16
-	anim_obj ANIM_OBJ_53, 72, 80, $0
+	anim_obj ANIM_OBJ_AMNESIA, 72, 80, $0
 	anim_wait 64
 	anim_ret
 ; ca1ed
@@ -2113,7 +2113,7 @@
 	anim_1gfx ANIM_GFX_STATUS
 	anim_sound 0, 0, SFX_TAIL_WHIP
 .loop
-	anim_obj ANIM_OBJ_54, 64, 80, $0
+	anim_obj ANIM_OBJ_ASLEEP, 64, 80, $0
 	anim_wait 40
 	anim_loop 3, .loop
 	anim_wait 32
@@ -2181,22 +2181,22 @@
 	anim_1gfx ANIM_GFX_WEB
 	anim_bgeffect ANIM_BG_07, $0, $2, $0
 	anim_sound 6, 2, SFX_MENU
-	anim_obj ANIM_OBJ_5A, 64, 80, $0
+	anim_obj ANIM_OBJ_STRING_SHOT, 64, 80, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_MENU
-	anim_obj ANIM_OBJ_5A, 132, 48, $1
+	anim_obj ANIM_OBJ_STRING_SHOT, 132, 48, $1
 	anim_wait 4
 	anim_sound 6, 2, SFX_MENU
-	anim_obj ANIM_OBJ_5A, 64, 88, $0
+	anim_obj ANIM_OBJ_STRING_SHOT, 64, 88, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_MENU
-	anim_obj ANIM_OBJ_5A, 132, 64, $1
+	anim_obj ANIM_OBJ_STRING_SHOT, 132, 64, $1
 	anim_wait 4
 	anim_sound 6, 2, SFX_MENU
-	anim_obj ANIM_OBJ_5A, 64, 84, $0
+	anim_obj ANIM_OBJ_STRING_SHOT, 64, 84, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_MENU
-	anim_obj ANIM_OBJ_5A, 132, 56, $2
+	anim_obj ANIM_OBJ_STRING_SHOT, 132, 56, $2
 	anim_wait 64
 	anim_ret
 ; ca2d1
@@ -2325,8 +2325,8 @@
 	anim_1gfx ANIM_GFX_PSYCHIC
 .loop
 	anim_sound 6, 2, SFX_SUPERSONIC
-	anim_obj ANIM_OBJ_4C, 64, 88, $2
-	anim_obj ANIM_OBJ_4C, 56, 80, $2
+	anim_obj ANIM_OBJ_WAVE, 64, 88, $2
+	anim_obj ANIM_OBJ_WAVE, 56, 80, $2
 	anim_wait 8
 	anim_loop 3, .loop
 	anim_wait 56
@@ -2512,7 +2512,7 @@
 	anim_sound 0, 0, SFX_MENU
 	anim_2gfx ANIM_GFX_FLOWER, ANIM_GFX_HIT
 .loop
-	anim_obj ANIM_OBJ_61, 48, 56, $0
+	anim_obj ANIM_OBJ_PETAL_DANCE, 48, 56, $0
 	anim_wait 11
 	anim_loop 8, .loop
 	anim_wait 128
@@ -2526,7 +2526,7 @@
 BattleAnim_Barrage: ; ca580
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_EXPLOSION
 	anim_sound 6, 2, SFX_THROW_BALL
-	anim_obj ANIM_OBJ_62, 64, 92, $10
+	anim_obj ANIM_OBJ_SLUDGE_BOMB, 64, 92, $10
 	anim_wait 36
 	anim_sound 0, 1, SFX_EGG_BOMB
 	anim_obj ANIM_OBJ_18, 136, 56, $0
@@ -2540,7 +2540,7 @@
 	anim_obj ANIM_OBJ_01, 128, 56, $0
 	anim_wait 16
 	anim_sound 0, 1, SFX_PAY_DAY
-	anim_obj ANIM_OBJ_63, 120, 76, $1
+	anim_obj ANIM_OBJ_PAY_DAY, 120, 76, $1
 	anim_wait 64
 	anim_ret
 ; ca5ac
@@ -2549,14 +2549,14 @@
 	anim_1gfx ANIM_GFX_SPEED
 	anim_obp0 $fc
 	anim_sound 63, 3, SFX_LICK
-	anim_obj ANIM_OBJ_65, 132, 44, $0
-	anim_obj ANIM_OBJ_65, 132, 44, $8
-	anim_obj ANIM_OBJ_65, 132, 44, $10
-	anim_obj ANIM_OBJ_65, 132, 44, $18
-	anim_obj ANIM_OBJ_65, 132, 44, $20
-	anim_obj ANIM_OBJ_65, 132, 44, $28
-	anim_obj ANIM_OBJ_65, 132, 44, $30
-	anim_obj ANIM_OBJ_65, 132, 44, $38
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $0
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $8
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $10
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $18
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $20
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $28
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $30
+	anim_obj ANIM_OBJ_MIMIC, 132, 44, $38
 	anim_wait 128
 	anim_wait 48
 	anim_ret
@@ -2565,7 +2565,7 @@
 BattleAnim_LovelyKiss: ; ca5de
 	anim_2gfx ANIM_GFX_OBJECTS, ANIM_GFX_ANGELS
 	anim_bgeffect ANIM_BG_07, $0, $2, $0
-	anim_obj ANIM_OBJ_96, 152, 40, $0
+	anim_obj ANIM_OBJ_LOVELY_KISS, 152, 40, $0
 	anim_wait 32
 	anim_sound 0, 1, SFX_LICK
 	anim_obj ANIM_OBJ_HEART, 128, 40, $0
@@ -2576,7 +2576,7 @@
 BattleAnim_Bonemerang: ; ca5f6
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_HIT
 	anim_sound 6, 2, SFX_HYDRO_PUMP
-	anim_obj ANIM_OBJ_67, 88, 56, $1c
+	anim_obj ANIM_OBJ_BONEMERANG, 88, 56, $1c
 	anim_wait 24
 	anim_sound 0, 1, SFX_MOVE_PUZZLE_PIECE
 	anim_obj ANIM_OBJ_01, 136, 56, $0
@@ -2587,11 +2587,11 @@
 BattleAnim_Swift: ; ca60c
 	anim_1gfx ANIM_GFX_OBJECTS
 	anim_sound 6, 2, SFX_METRONOME
-	anim_obj ANIM_OBJ_6A, 64, 88, $4
+	anim_obj ANIM_OBJ_SWIFT, 64, 88, $4
 	anim_wait 4
-	anim_obj ANIM_OBJ_6A, 64, 72, $4
+	anim_obj ANIM_OBJ_SWIFT, 64, 72, $4
 	anim_wait 4
-	anim_obj ANIM_OBJ_6A, 64, 76, $4
+	anim_obj ANIM_OBJ_SWIFT, 64, 76, $4
 	anim_wait 64
 	anim_ret
 ; ca624
@@ -2630,7 +2630,7 @@
 BattleAnim_Kinesis: ; ca66a
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_NOISE
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
-	anim_obj ANIM_OBJ_6B, 80, 76, $0
+	anim_obj ANIM_OBJ_KINESIS, 80, 76, $0
 	anim_wait 32
 .loop
 	anim_sound 0, 0, SFX_KINESIS
@@ -2695,21 +2695,21 @@
 	anim_sound 0, 1, SFX_FLASH
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $6, $20
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $0
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $0
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $8
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $8
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $10
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $10
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $18
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $18
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $20
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $20
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $28
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $28
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $30
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $30
 	anim_wait 4
-	anim_obj ANIM_OBJ_6C, 136, 56, $38
+	anim_obj ANIM_OBJ_FLASH, 136, 56, $38
 	anim_wait 32
 	anim_ret
 ; ca73c
@@ -2776,7 +2776,7 @@
 	anim_bgeffect ANIM_BG_27, $0, $1, $0
 	anim_wait 32
 	anim_sound 0, 0, SFX_HYPER_BEAM
-	anim_obj ANIM_OBJ_SKY_ATTACK_FEAROW, 48, 88, $40
+	anim_obj ANIM_OBJ_SKY_ATTACK, 48, 88, $40
 	anim_wait 64
 	anim_incobj  1
 	anim_wait 21
@@ -2846,7 +2846,7 @@
 	anim_bgeffect ANIM_BG_08, $0, $4, $0
 .loop
 	anim_sound 6, 2, SFX_PSYBEAM
-	anim_obj ANIM_OBJ_4C, 64, 88, $4
+	anim_obj ANIM_OBJ_WAVE, 64, 88, $4
 	anim_wait 4
 	anim_loop 10, .loop
 	anim_wait 48
@@ -2887,13 +2887,13 @@
 	anim_bgeffect ANIM_BG_PSYCHIC, $0, $0, $0
 .loop
 	anim_sound 6, 2, SFX_PSYCHIC
-	anim_obj ANIM_OBJ_4C, 64, 80, $2
+	anim_obj ANIM_OBJ_WAVE, 64, 80, $2
 	anim_wait 8
 	anim_sound 6, 2, SFX_PSYCHIC
-	anim_obj ANIM_OBJ_4C, 64, 88, $3
+	anim_obj ANIM_OBJ_WAVE, 64, 88, $3
 	anim_wait 8
 	anim_sound 6, 2, SFX_PSYCHIC
-	anim_obj ANIM_OBJ_4C, 64, 96, $4
+	anim_obj ANIM_OBJ_WAVE, 64, 96, $4
 	anim_wait 8
 	anim_loop 3, .loop
 	anim_wait 32
@@ -2932,14 +2932,14 @@
 	anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
 	anim_1gfx ANIM_GFX_CHARGE
 	anim_sound 0, 0, SFX_SWORDS_DANCE
-	anim_obj ANIM_OBJ_72, 48, 108, $0
-	anim_obj ANIM_OBJ_72, 48, 108, $8
-	anim_obj ANIM_OBJ_72, 48, 108, $10
-	anim_obj ANIM_OBJ_72, 48, 108, $18
-	anim_obj ANIM_OBJ_72, 48, 108, $20
-	anim_obj ANIM_OBJ_72, 48, 108, $28
-	anim_obj ANIM_OBJ_72, 48, 108, $30
-	anim_obj ANIM_OBJ_72, 48, 108, $38
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $0
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $8
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $10
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $18
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $20
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $28
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $30
+	anim_obj ANIM_OBJ_GROWTH, 48, 108, $38
 	anim_wait 64
 	anim_ret
 ; ca909
@@ -2947,14 +2947,14 @@
 BattleAnim_Conversion2: ; ca909
 	anim_1gfx ANIM_GFX_EXPLOSION
 	anim_sound 63, 3, SFX_SHARPEN
-	anim_obj ANIM_OBJ_73, 132, 44, $0
-	anim_obj ANIM_OBJ_73, 132, 44, $8
-	anim_obj ANIM_OBJ_73, 132, 44, $10
-	anim_obj ANIM_OBJ_73, 132, 44, $18
-	anim_obj ANIM_OBJ_73, 132, 44, $20
-	anim_obj ANIM_OBJ_73, 132, 44, $28
-	anim_obj ANIM_OBJ_73, 132, 44, $30
-	anim_obj ANIM_OBJ_73, 132, 44, $38
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $0
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $8
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $10
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $18
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $20
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $28
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $30
+	anim_obj ANIM_OBJ_CONVERSION2, 132, 44, $38
 	anim_wait 128
 	anim_wait 48
 	anim_ret
@@ -2963,7 +2963,7 @@
 BattleAnim_Smokescreen: ; ca939
 	anim_3gfx ANIM_GFX_HAZE, ANIM_GFX_EGG, ANIM_GFX_SMOKE
 	anim_sound 6, 2, SFX_THROW_BALL
-	anim_obj ANIM_OBJ_75, 64, 92, $6c
+	anim_obj ANIM_OBJ_SMOKESCREEN, 64, 92, $6c
 	anim_wait 24
 	anim_incobj  1
 	anim_sound 0, 1, SFX_BALL_POOF
@@ -2971,7 +2971,7 @@
 	anim_wait 8
 .loop
 	anim_sound 0, 1, SFX_MENU
-	anim_obj ANIM_OBJ_74, 132, 60, $20
+	anim_obj ANIM_OBJ_SMOKE, 132, 60, $20
 	anim_wait 8
 	anim_loop 5, .loop
 	anim_wait 128
@@ -2982,7 +2982,7 @@
 	anim_2gfx ANIM_GFX_ROCKS, ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_20, $10, $1, $20
 	anim_sound 0, 0, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1F, 64, 104, $1
+	anim_obj ANIM_OBJ_STRENGTH, 64, 104, $1
 	anim_wait 128
 	anim_incobj  1
 	anim_wait 20
@@ -2995,11 +2995,11 @@
 BattleAnim_SwordsDance: ; ca97e
 	anim_1gfx ANIM_GFX_WHIP
 	anim_sound 0, 0, SFX_SWORDS_DANCE
-	anim_obj ANIM_OBJ_76, 48, 108, $0
-	anim_obj ANIM_OBJ_76, 48, 108, $d
-	anim_obj ANIM_OBJ_76, 48, 108, $1a
-	anim_obj ANIM_OBJ_76, 48, 108, $27
-	anim_obj ANIM_OBJ_76, 48, 108, $34
+	anim_obj ANIM_OBJ_SWORDS_DANCE, 48, 108, $0
+	anim_obj ANIM_OBJ_SWORDS_DANCE, 48, 108, $d
+	anim_obj ANIM_OBJ_SWORDS_DANCE, 48, 108, $1a
+	anim_obj ANIM_OBJ_SWORDS_DANCE, 48, 108, $27
+	anim_obj ANIM_OBJ_SWORDS_DANCE, 48, 108, $34
 	anim_wait 56
 	anim_ret
 ; ca99e
@@ -3008,12 +3008,12 @@
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_HIT
 	anim_sound 0, 0, SFX_MENU
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
-	anim_obj ANIM_OBJ_77, 24, 88, $2
-	anim_obj ANIM_OBJ_77, 32, 88, $1
-	anim_obj ANIM_OBJ_77, 40, 88, $0
-	anim_obj ANIM_OBJ_77, 48, 88, $80
-	anim_obj ANIM_OBJ_77, 56, 88, $81
-	anim_obj ANIM_OBJ_77, 64, 88, $82
+	anim_obj ANIM_OBJ_SPEED_LINE, 24, 88, $2
+	anim_obj ANIM_OBJ_SPEED_LINE, 32, 88, $1
+	anim_obj ANIM_OBJ_SPEED_LINE, 40, 88, $0
+	anim_obj ANIM_OBJ_SPEED_LINE, 48, 88, $80
+	anim_obj ANIM_OBJ_SPEED_LINE, 56, 88, $81
+	anim_obj ANIM_OBJ_SPEED_LINE, 64, 88, $82
 	anim_wait 12
 	anim_sound 0, 1, SFX_COMET_PUNCH
 	anim_obj ANIM_OBJ_01, 136, 56, $0
@@ -3041,7 +3041,7 @@
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_sound 0, 0, SFX_SHARPEN
 	anim_bgeffect ANIM_BG_18, $0, $1, $40
-	anim_obj ANIM_OBJ_78, 48, 88, $0
+	anim_obj ANIM_OBJ_SHARPEN, 48, 88, $0
 	anim_wait 96
 	anim_incobj  2
 	anim_incbgeffect ANIM_BG_18
@@ -3055,7 +3055,7 @@
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_sound 0, 0, SFX_SHARPEN
 	anim_bgeffect ANIM_BG_18, $0, $1, $40
-	anim_obj ANIM_OBJ_79, 48, 88, $0
+	anim_obj ANIM_OBJ_DEFENSE_CURL, 48, 88, $0
 	anim_wait 96
 	anim_incobj  2
 	anim_incbgeffect ANIM_BG_18
@@ -3067,7 +3067,7 @@
 	anim_2gfx ANIM_GFX_GLOBE, ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_20, $10, $1, $20
 	anim_sound 0, 0, SFX_STRENGTH
-	anim_obj ANIM_OBJ_20, 64, 104, $1
+	anim_obj ANIM_OBJ_SEISMIC_TOSS, 64, 104, $1
 	anim_wait 128
 	anim_incobj  1
 	anim_wait 20
@@ -3102,14 +3102,14 @@
 	anim_obp0 $fc
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_18, $0, $1, $40
-	anim_obj ANIM_OBJ_7D, 8, 24, $10
-	anim_obj ANIM_OBJ_7D, 8, 48, $2
-	anim_obj ANIM_OBJ_7D, 8, 88, $8
+	anim_obj ANIM_OBJ_AGILITY, 8, 24, $10
+	anim_obj ANIM_OBJ_AGILITY, 8, 48, $2
+	anim_obj ANIM_OBJ_AGILITY, 8, 88, $8
 	anim_wait 4
-	anim_obj ANIM_OBJ_7D, 8, 32, $6
-	anim_obj ANIM_OBJ_7D, 8, 56, $c
-	anim_obj ANIM_OBJ_7D, 8, 80, $4
-	anim_obj ANIM_OBJ_7D, 8, 104, $e
+	anim_obj ANIM_OBJ_AGILITY, 8, 32, $6
+	anim_obj ANIM_OBJ_AGILITY, 8, 56, $c
+	anim_obj ANIM_OBJ_AGILITY, 8, 80, $4
+	anim_obj ANIM_OBJ_AGILITY, 8, 104, $e
 .loop
 	anim_sound 0, 0, SFX_RAZOR_WIND
 	anim_wait 4
@@ -3121,7 +3121,7 @@
 
 BattleAnim_BoneClub: ; caab2
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_MISC
-	anim_obj ANIM_OBJ_68, 64, 88, $2
+	anim_obj ANIM_OBJ_BONE_CLUB, 64, 88, $2
 	anim_wait 32
 	anim_sound 0, 1, SFX_BONE_CLUB
 	anim_obj ANIM_OBJ_01, 136, 56, $0
@@ -3135,10 +3135,10 @@
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_wait 8
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_50, 72, 80, $0
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
 	anim_wait 32
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_50, 72, 80, $0
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
 	anim_wait 32
 	anim_ret
 ; caae1
@@ -3173,7 +3173,7 @@
 	anim_bgeffect ANIM_BG_PSYCHIC, $0, $0, $0
 .loop
 	anim_sound 6, 2, SFX_PSYCHIC
-	anim_obj ANIM_OBJ_4C, 64, 88, $2
+	anim_obj ANIM_OBJ_WAVE, 64, 88, $2
 	anim_wait 8
 	anim_loop 8, .loop
 	anim_wait 96
@@ -3283,7 +3283,7 @@
 BattleAnim_Disable: ; cac24
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_STATUS
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
-	anim_obj ANIM_OBJ_7C, 132, 56, $0
+	anim_obj ANIM_OBJ_DISABLE, 132, 56, $0
 	anim_wait 16
 	anim_sound 0, 1, SFX_BIND
 	anim_obj ANIM_OBJ_PARALYZED, 104, 56, $42
@@ -3316,7 +3316,7 @@
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_1A, $0, $1, $20
 	anim_sound 0, 0, SFX_SKETCH
-	anim_obj ANIM_OBJ_98, 72, 80, $0
+	anim_obj ANIM_OBJ_SKETCH, 72, 80, $0
 	anim_wait 80
 	anim_incbgeffect ANIM_BG_1A
 	anim_call BattleAnim_ShowMon_0
@@ -3366,7 +3366,7 @@
 	anim_wait 1
 	anim_1gfx ANIM_GFX_STATUS
 	anim_sound 0, 1, SFX_THIEF_2
-	anim_obj ANIM_OBJ_8B, 120, 76, $1
+	anim_obj ANIM_OBJ_THIEF, 120, 76, $1
 	anim_wait 64
 	anim_ret
 ; cacd9
@@ -3374,13 +3374,13 @@
 BattleAnim_SpiderWeb: ; cacd9
 	anim_1gfx ANIM_GFX_WEB
 	anim_bgeffect ANIM_BG_07, $0, $2, $0
-	anim_obj ANIM_OBJ_92, 132, 48, $0
+	anim_obj ANIM_OBJ_SPIDER_WEB, 132, 48, $0
 	anim_sound 6, 2, SFX_SPIDER_WEB
-	anim_obj ANIM_OBJ_5A, 64, 80, $0
+	anim_obj ANIM_OBJ_STRING_SHOT, 64, 80, $0
 	anim_wait 4
-	anim_obj ANIM_OBJ_5A, 64, 88, $0
+	anim_obj ANIM_OBJ_STRING_SHOT, 64, 88, $0
 	anim_wait 4
-	anim_obj ANIM_OBJ_5A, 64, 84, $0
+	anim_obj ANIM_OBJ_STRING_SHOT, 64, 84, $0
 	anim_wait 64
 	anim_ret
 ; cacfb
@@ -3389,10 +3389,10 @@
 	anim_1gfx ANIM_GFX_MISC
 	anim_sound 0, 1, SFX_MIND_READER
 .loop
-	anim_obj ANIM_OBJ_88, 132, 48, $3
-	anim_obj ANIM_OBJ_88, 132, 48, $12
-	anim_obj ANIM_OBJ_88, 132, 48, $20
-	anim_obj ANIM_OBJ_88, 132, 48, $31
+	anim_obj ANIM_OBJ_MIND_READER, 132, 48, $3
+	anim_obj ANIM_OBJ_MIND_READER, 132, 48, $12
+	anim_obj ANIM_OBJ_MIND_READER, 132, 48, $20
+	anim_obj ANIM_OBJ_MIND_READER, 132, 48, $31
 	anim_wait 16
 	anim_loop 2, .loop
 	anim_wait 32
@@ -3403,8 +3403,8 @@
 	anim_1gfx ANIM_GFX_ANGELS
 	anim_bgp $1b
 	anim_obp0 $f
-	anim_obj ANIM_OBJ_94, 132, 40, $0
-	anim_obj ANIM_OBJ_94, 132, 40, $a0
+	anim_obj ANIM_OBJ_NIGHTMARE, 132, 40, $0
+	anim_obj ANIM_OBJ_NIGHTMARE, 132, 40, $a0
 	anim_sound 0, 1, SFX_NIGHTMARE
 	anim_wait 96
 	anim_ret
@@ -3414,7 +3414,7 @@
 	anim_1gfx ANIM_GFX_FIRE
 .loop
 	anim_sound 0, 0, SFX_EMBER
-	anim_obj ANIM_OBJ_7F, 48, 96, $0
+	anim_obj ANIM_OBJ_FLAME_WHEEL, 48, 96, $0
 	anim_wait 6
 	anim_loop 8, .loop
 	anim_wait 96
@@ -3423,9 +3423,9 @@
 	anim_wait 4
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
 	anim_sound 0, 1, SFX_EMBER
-	anim_obj ANIM_OBJ_0F, 136, 48, $1
-	anim_obj ANIM_OBJ_0F, 136, 48, $4
-	anim_obj ANIM_OBJ_0F, 136, 48, $5
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 48, $1
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 48, $4
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 48, $5
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 4
@@ -3436,7 +3436,7 @@
 
 BattleAnim_Snore: ; cad6b
 	anim_2gfx ANIM_GFX_STATUS, ANIM_GFX_NOISE
-	anim_obj ANIM_OBJ_54, 64, 80, $0
+	anim_obj ANIM_OBJ_ASLEEP, 64, 80, $0
 	anim_wait 32
 	anim_bgeffect ANIM_BG_1F, $60, $2, $0
 	anim_sound 0, 0, SFX_SNORE
@@ -3451,7 +3451,7 @@
 BattleAnim_Curse: ; cad86
 	anim_if_param_equal $1, .NotGhost
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_OBJECTS
-	anim_obj ANIM_OBJ_A5, 68, 72, $0
+	anim_obj ANIM_OBJ_CURSE, 68, 72, $0
 	anim_sound 0, 0, SFX_CURSE
 	anim_wait 32
 	anim_incobj  1
@@ -3515,14 +3515,14 @@
 	anim_1gfx ANIM_GFX_EXPLOSION
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_sound 63, 3, SFX_SHARPEN
-	anim_obj ANIM_OBJ_91, 48, 88, $0
-	anim_obj ANIM_OBJ_91, 48, 88, $8
-	anim_obj ANIM_OBJ_91, 48, 88, $10
-	anim_obj ANIM_OBJ_91, 48, 88, $18
-	anim_obj ANIM_OBJ_91, 48, 88, $20
-	anim_obj ANIM_OBJ_91, 48, 88, $28
-	anim_obj ANIM_OBJ_91, 48, 88, $30
-	anim_obj ANIM_OBJ_91, 48, 88, $38
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $0
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $8
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $10
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $18
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $20
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $28
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $30
+	anim_obj ANIM_OBJ_CONVERSION, 48, 88, $38
 	anim_wait 128
 	anim_ret
 ; cae4b
@@ -3533,7 +3533,7 @@
 	anim_bgeffect ANIM_BG_1F, $50, $4, $10
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_sound 0, 0, SFX_AEROBLAST
-	anim_obj ANIM_OBJ_B3, 72, 88, $0
+	anim_obj ANIM_OBJ_AEROBLAST, 72, 88, $0
 	anim_wait 32
 	anim_sound 0, 0, SFX_HYPER_BEAM
 	anim_obj ANIM_OBJ_27, 80, 84, $0
@@ -3567,19 +3567,19 @@
 	anim_obj ANIM_OBJ_04, 112, 64, $0
 	anim_wait 2
 	anim_sound 0, 1, SFX_SHINE
-	anim_obj ANIM_OBJ_A7, 120, 56, $0
+	anim_obj ANIM_OBJ_FORESIGHT, 120, 56, $0
 	anim_wait 2
 	anim_sound 0, 1, SFX_MEGA_PUNCH
 	anim_obj ANIM_OBJ_04, 128, 56, $0
 	anim_wait 2
 	anim_sound 0, 1, SFX_SHINE
-	anim_obj ANIM_OBJ_A7, 136, 48, $0
+	anim_obj ANIM_OBJ_FORESIGHT, 136, 48, $0
 	anim_wait 2
 	anim_sound 0, 1, SFX_MEGA_PUNCH
 	anim_obj ANIM_OBJ_04, 144, 48, $0
 	anim_wait 2
 	anim_sound 0, 1, SFX_SHINE
-	anim_obj ANIM_OBJ_A7, 152, 40, $0
+	anim_obj ANIM_OBJ_FORESIGHT, 152, 40, $0
 	anim_wait 24
 	anim_ret
 ; caed6
@@ -3586,7 +3586,7 @@
 
 BattleAnim_Spite: ; caed6
 	anim_1gfx ANIM_GFX_ANGELS
-	anim_obj ANIM_OBJ_A4, 132, 16, $0
+	anim_obj ANIM_OBJ_SPITE, 132, 16, $0
 	anim_sound 0, 1, SFX_SPITE
 	anim_wait 96
 	anim_ret
@@ -3596,13 +3596,13 @@
 	anim_1gfx ANIM_GFX_ICE
 .loop ; caee4
 	anim_sound 6, 2, SFX_SHINE
-	anim_obj ANIM_OBJ_8F, 64, 88, $23
+	anim_obj ANIM_OBJ_POWDER_SNOW, 64, 88, $23
 	anim_wait 2
 	anim_sound 6, 2, SFX_SHINE
-	anim_obj ANIM_OBJ_8F, 64, 80, $24
+	anim_obj ANIM_OBJ_POWDER_SNOW, 64, 80, $24
 	anim_wait 2
 	anim_sound 6, 2, SFX_SHINE
-	anim_obj ANIM_OBJ_8F, 64, 96, $23
+	anim_obj ANIM_OBJ_POWDER_SNOW, 64, 96, $23
 	anim_wait 2
 	anim_loop 2, .loop
 	anim_bgeffect ANIM_BG_WHITE_HUES, $0, $8, $0
@@ -3615,11 +3615,11 @@
 BattleAnim_Protect: ; caf0e
 	anim_1gfx ANIM_GFX_OBJECTS
 	anim_bgeffect ANIM_BG_07, $0, $2, $0
-	anim_obj ANIM_OBJ_8A, 80, 80, $0
-	anim_obj ANIM_OBJ_8A, 80, 80, $d
-	anim_obj ANIM_OBJ_8A, 80, 80, $1a
-	anim_obj ANIM_OBJ_8A, 80, 80, $27
-	anim_obj ANIM_OBJ_8A, 80, 80, $34
+	anim_obj ANIM_OBJ_PROTECT, 80, 80, $0
+	anim_obj ANIM_OBJ_PROTECT, 80, 80, $d
+	anim_obj ANIM_OBJ_PROTECT, 80, 80, $1a
+	anim_obj ANIM_OBJ_PROTECT, 80, 80, $27
+	anim_obj ANIM_OBJ_PROTECT, 80, 80, $34
 	anim_sound 0, 0, SFX_PROTECT
 	anim_wait 96
 	anim_ret
@@ -3629,12 +3629,12 @@
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_HIT
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
 	anim_sound 0, 0, SFX_MENU
-	anim_obj ANIM_OBJ_77, 24, 88, $2
-	anim_obj ANIM_OBJ_77, 32, 88, $1
-	anim_obj ANIM_OBJ_77, 40, 88, $0
-	anim_obj ANIM_OBJ_77, 48, 88, $80
-	anim_obj ANIM_OBJ_77, 56, 88, $81
-	anim_obj ANIM_OBJ_77, 64, 88, $82
+	anim_obj ANIM_OBJ_SPEED_LINE, 24, 88, $2
+	anim_obj ANIM_OBJ_SPEED_LINE, 32, 88, $1
+	anim_obj ANIM_OBJ_SPEED_LINE, 40, 88, $0
+	anim_obj ANIM_OBJ_SPEED_LINE, 48, 88, $80
+	anim_obj ANIM_OBJ_SPEED_LINE, 56, 88, $81
+	anim_obj ANIM_OBJ_SPEED_LINE, 64, 88, $82
 	anim_wait 12
 	anim_sound 0, 1, SFX_MEGA_PUNCH
 	anim_obj ANIM_OBJ_06, 136, 56, $0
@@ -3679,7 +3679,7 @@
 BattleAnim_SweetKiss: ; cafb4
 	anim_2gfx ANIM_GFX_OBJECTS, ANIM_GFX_ANGELS
 	anim_bgeffect ANIM_BG_07, $0, $2, $0
-	anim_obj ANIM_OBJ_97, 96, 40, $0
+	anim_obj ANIM_OBJ_SWEET_KISS, 96, 40, $0
 	anim_sound 0, 1, SFX_SWEET_KISS
 	anim_wait 32
 	anim_sound 0, 1, SFX_SWEET_KISS_2
@@ -3733,7 +3733,7 @@
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_POISON
 	anim_bgeffect ANIM_BG_BLACK_HUES, $0, $8, $0
 	anim_sound 6, 2, SFX_SLUDGE_BOMB
-	anim_obj ANIM_OBJ_62, 64, 92, $10
+	anim_obj ANIM_OBJ_SLUDGE_BOMB, 64, 92, $10
 	anim_wait 36
 	anim_call BattleAnim_SludgeBomb_branch_cbc15
 	anim_wait 64
@@ -3750,13 +3750,13 @@
 BattleAnim_Octazooka: ; cb06f
 	anim_3gfx ANIM_GFX_HAZE, ANIM_GFX_EGG, ANIM_GFX_SMOKE
 	anim_sound 6, 2, SFX_SLUDGE_BOMB
-	anim_obj ANIM_OBJ_8C, 64, 92, $4
+	anim_obj ANIM_OBJ_OCTAZOOKA, 64, 92, $4
 	anim_wait 16
 	anim_obj ANIM_OBJ_BALL_POOF, 132, 56, $10
 	anim_wait 8
 	anim_if_param_equal $0, .done
 .loop
-	anim_obj ANIM_OBJ_74, 132, 60, $20
+	anim_obj ANIM_OBJ_SMOKE, 132, 60, $20
 	anim_wait 8
 	anim_loop 5, .loop
 	anim_wait 128
@@ -3783,7 +3783,7 @@
 	anim_bgp $1b
 	anim_obp0 $30
 	anim_sound 6, 2, SFX_ZAP_CANNON
-	anim_obj ANIM_OBJ_A3, 64, 92, $2
+	anim_obj ANIM_OBJ_ZAP_CANNON, 64, 92, $2
 	anim_wait 40
 	anim_sound 0, 1, SFX_THUNDERSHOCK
 	anim_obj ANIM_OBJ_LIGHTNING_BOLT, 136, 56, $2
@@ -3798,7 +3798,7 @@
 	anim_call BattleAnim_FollowEnemyFeet_1
 	anim_bgeffect ANIM_BG_07, $0, $0, $0
 	anim_sound 0, 1, SFX_FORESIGHT
-	anim_obj ANIM_OBJ_A7, 132, 40, $0
+	anim_obj ANIM_OBJ_FORESIGHT, 132, 40, $0
 	anim_wait 24
 	anim_bgeffect ANIM_BG_19, $0, $0, $40
 	anim_wait 64
@@ -3814,13 +3814,13 @@
 	anim_obp0 $0
 	anim_if_param_equal $1, BattleAnim_DestinyBond_branch_cb104
 	anim_sound 6, 2, SFX_WHIRLWIND
-	anim_obj ANIM_OBJ_9B, 44, 120, $2
+	anim_obj ANIM_OBJ_DESTINY_BOND, 44, 120, $2
 	anim_wait 128
 	anim_ret
 ; cb104
 
 BattleAnim_DestinyBond_branch_cb104: ; cb104
-	anim_obj ANIM_OBJ_9B, 132, 76, $0
+	anim_obj ANIM_OBJ_DESTINY_BOND, 132, 76, $0
 	anim_sound 0, 1, SFX_KINESIS
 	anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
 	anim_wait 32
@@ -3876,7 +3876,7 @@
 	anim_1gfx ANIM_GFX_SHINE
 	anim_bgeffect ANIM_BG_07, $0, $0, $0
 	anim_sound 0, 0, SFX_FORESIGHT
-	anim_obj ANIM_OBJ_A7, 64, 88, $0
+	anim_obj ANIM_OBJ_FORESIGHT, 64, 88, $0
 	anim_wait 24
 	anim_ret
 ; cb19d
@@ -3884,7 +3884,7 @@
 BattleAnim_BoneRush: ; cb19d
 	anim_2gfx ANIM_GFX_HIT, ANIM_GFX_MISC
 	anim_sound 0, 1, SFX_BONE_CLUB
-	anim_obj ANIM_OBJ_69, 132, 56, $2
+	anim_obj ANIM_OBJ_BONE_RUSH, 132, 56, $2
 	anim_wait 16
 	anim_sound 0, 1, SFX_COMET_PUNCH
 	anim_obj ANIM_OBJ_01, 120, 48, $0
@@ -3899,10 +3899,10 @@
 	anim_1gfx ANIM_GFX_MISC
 	anim_sound 0, 1, SFX_MIND_READER
 .loop
-	anim_obj ANIM_OBJ_87, 132, 48, $3
-	anim_obj ANIM_OBJ_87, 132, 48, $12
-	anim_obj ANIM_OBJ_87, 132, 48, $20
-	anim_obj ANIM_OBJ_87, 132, 48, $31
+	anim_obj ANIM_OBJ_LOCK_ON, 132, 48, $3
+	anim_obj ANIM_OBJ_LOCK_ON, 132, 48, $12
+	anim_obj ANIM_OBJ_LOCK_ON, 132, 48, $20
+	anim_obj ANIM_OBJ_LOCK_ON, 132, 48, $31
 	anim_wait 16
 	anim_loop 2, .loop
 	anim_wait 32
@@ -3932,11 +3932,11 @@
 
 BattleAnim_Sandstorm: ; cb210
 	anim_1gfx ANIM_GFX_POWDER
-	anim_obj ANIM_OBJ_A2, 88, 0, $0
+	anim_obj ANIM_OBJ_SANDSTORM, 88, 0, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_A2, 72, 0, $1
+	anim_obj ANIM_OBJ_SANDSTORM, 72, 0, $1
 	anim_wait 8
-	anim_obj ANIM_OBJ_A2, 56, 0, $2
+	anim_obj ANIM_OBJ_SANDSTORM, 56, 0, $2
 .loop
 	anim_sound 0, 1, SFX_MENU
 	anim_wait 8
@@ -3960,15 +3960,15 @@
 	anim_bgeffect ANIM_BG_07, $0, $0, $0
 .loop
 	anim_sound 0, 0, SFX_METRONOME
-	anim_obj ANIM_OBJ_9D, 24, 64, $0
+	anim_obj ANIM_OBJ_GLIMMER, 24, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 56, 104, $0
+	anim_obj ANIM_OBJ_GLIMMER, 56, 104, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 24, 104, $0
+	anim_obj ANIM_OBJ_GLIMMER, 24, 104, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 56, 64, $0
+	anim_obj ANIM_OBJ_GLIMMER, 56, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 40, 84, $0
+	anim_obj ANIM_OBJ_GLIMMER, 40, 84, $0
 	anim_wait 5
 	anim_loop 2, .loop
 	anim_wait 32
@@ -4036,7 +4036,7 @@
 	anim_sound 0, 1, SFX_CUT
 	anim_obj ANIM_OBJ_3A, 152, 40, $0
 	anim_wait 4
-	anim_obj ANIM_OBJ_9D, 136, 40, $0
+	anim_obj ANIM_OBJ_GLIMMER, 136, 40, $0
 	anim_wait 32
 	anim_ret
 ; cb30d
@@ -4045,12 +4045,12 @@
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_WIND
 .loop
 	anim_sound 0, 0, SFX_MENU
-	anim_obj ANIM_OBJ_A9, 72, 88, $44
+	anim_obj ANIM_OBJ_SWAGGER, 72, 88, $44
 	anim_wait 32
 	anim_loop 2, .loop
 	anim_wait 32
 	anim_sound 0, 1, SFX_KINESIS_2
-	anim_obj ANIM_OBJ_83, 104, 40, $0
+	anim_obj ANIM_OBJ_ANGER, 104, 40, $0
 	anim_wait 40
 	anim_ret
 ; cb328
@@ -4058,12 +4058,12 @@
 BattleAnim_MilkDrink: ; cb328
 	anim_2gfx ANIM_GFX_MISC, ANIM_GFX_BUBBLE
 	anim_call BattleAnim_FollowEnemyFeet_0
-	anim_obj ANIM_OBJ_82, 74, 104, $0
+	anim_obj ANIM_OBJ_MILK_DRINK, 74, 104, $0
 	anim_wait 16
 	anim_bgeffect ANIM_BG_18, $0, $1, $40
 	anim_sound 0, 0, SFX_MILK_DRINK
 .loop
-	anim_obj ANIM_OBJ_2C, 44, 88, $20
+	anim_obj ANIM_OBJ_RECOVER, 44, 88, $20
 	anim_wait 8
 	anim_loop 8, .loop
 	anim_wait 128
@@ -4076,7 +4076,7 @@
 	anim_2gfx ANIM_GFX_LIGHTNING, ANIM_GFX_EXPLOSION
 	anim_sound 0, 0, SFX_ZAP_CANNON
 	anim_bgeffect ANIM_BG_FLASH_INVERTED, $0, $4, $3
-	anim_obj ANIM_OBJ_30, 48, 92, $0
+	anim_obj ANIM_OBJ_THUNDER_WAVE, 48, 92, $0
 	anim_wait 24
 	anim_setobj $1, $3
 	anim_wait 1
@@ -4139,15 +4139,15 @@
 	anim_1gfx ANIM_GFX_PSYCHIC
 	anim_obp0 $e0
 	anim_sound 0, 1, SFX_MEAN_LOOK
-	anim_obj ANIM_OBJ_AC, 148, 32, $0
+	anim_obj ANIM_OBJ_MEAN_LOOK, 148, 32, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_AC, 116, 64, $0
+	anim_obj ANIM_OBJ_MEAN_LOOK, 116, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_AC, 148, 64, $0
+	anim_obj ANIM_OBJ_MEAN_LOOK, 148, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_AC, 116, 32, $0
+	anim_obj ANIM_OBJ_MEAN_LOOK, 116, 32, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_AC, 132, 48, $0
+	anim_obj ANIM_OBJ_MEAN_LOOK, 132, 48, $0
 	anim_wait 128
 	anim_ret
 ; cb405
@@ -4156,7 +4156,7 @@
 	anim_1gfx ANIM_GFX_OBJECTS
 .loop
 	anim_sound 0, 0, SFX_ATTRACT
-	anim_obj ANIM_OBJ_66, 44, 80, $2
+	anim_obj ANIM_OBJ_ATTRACT, 44, 80, $2
 	anim_wait 8
 	anim_loop 5, .loop
 	anim_wait 128
@@ -4168,7 +4168,7 @@
 	anim_1gfx ANIM_GFX_STATUS
 .loop
 	anim_sound 0, 0, SFX_STRENGTH
-	anim_obj ANIM_OBJ_54, 64, 80, $0
+	anim_obj ANIM_OBJ_ASLEEP, 64, 80, $0
 	anim_wait 40
 	anim_loop 2, .loop
 	anim_wait 32
@@ -4220,9 +4220,9 @@
 BattleAnim_Present: ; cb488
 	anim_2gfx ANIM_GFX_STATUS, ANIM_GFX_BUBBLE
 	anim_sound 0, 1, SFX_PRESENT
-	anim_obj ANIM_OBJ_8D, 64, 88, $6c
+	anim_obj ANIM_OBJ_PRESENT, 64, 88, $6c
 	anim_wait 56
-	anim_obj ANIM_OBJ_53, 104, 48, $0
+	anim_obj ANIM_OBJ_AMNESIA, 104, 48, $0
 	anim_wait 48
 	anim_incobj  2
 	anim_if_param_equal $3, .heal
@@ -4239,7 +4239,7 @@
 .heal
 	anim_sound 0, 1, SFX_METRONOME
 .loop2
-	anim_obj ANIM_OBJ_2C, 132, 48, $24
+	anim_obj ANIM_OBJ_RECOVER, 132, 48, $24
 	anim_wait 8
 	anim_loop 8, .loop2
 	anim_wait 128
@@ -4249,7 +4249,7 @@
 BattleAnim_Frustration: ; cb4c1
 	anim_1gfx ANIM_GFX_MISC
 	anim_sound 0, 0, SFX_KINESIS_2
-	anim_obj ANIM_OBJ_83, 72, 80, $0
+	anim_obj ANIM_OBJ_ANGER, 72, 80, $0
 	anim_wait 40
 	anim_1gfx ANIM_GFX_HIT
 	anim_call BattleAnim_FollowEnemyFeet_0
@@ -4273,11 +4273,11 @@
 BattleAnim_Safeguard: ; cb4f9
 	anim_1gfx ANIM_GFX_MISC
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
-	anim_obj ANIM_OBJ_89, 80, 80, $0
-	anim_obj ANIM_OBJ_89, 80, 80, $d
-	anim_obj ANIM_OBJ_89, 80, 80, $1a
-	anim_obj ANIM_OBJ_89, 80, 80, $27
-	anim_obj ANIM_OBJ_89, 80, 80, $34
+	anim_obj ANIM_OBJ_SAFEGUARD, 80, 80, $0
+	anim_obj ANIM_OBJ_SAFEGUARD, 80, 80, $d
+	anim_obj ANIM_OBJ_SAFEGUARD, 80, 80, $1a
+	anim_obj ANIM_OBJ_SAFEGUARD, 80, 80, $27
+	anim_obj ANIM_OBJ_SAFEGUARD, 80, 80, $34
 	anim_sound 0, 0, SFX_PROTECT
 	anim_wait 96
 	anim_ret
@@ -4303,7 +4303,7 @@
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 .loop
 	anim_sound 0, 0, SFX_EMBER
-	anim_obj ANIM_OBJ_80, 48, 104, $0
+	anim_obj ANIM_OBJ_SACRED_FIRE, 48, 104, $0
 	anim_wait 8
 	anim_loop 8, .loop
 	anim_wait 96
@@ -4311,9 +4311,9 @@
 	anim_bgeffect ANIM_BG_TACKLE, $0, $1, $0
 	anim_wait 4
 	anim_sound 0, 1, SFX_EMBER
-	anim_obj ANIM_OBJ_0F, 136, 48, $1
-	anim_obj ANIM_OBJ_0F, 136, 48, $4
-	anim_obj ANIM_OBJ_0F, 136, 48, $5
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 48, $1
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 48, $4
+	anim_obj ANIM_OBJ_FIRE_BLAST, 136, 48, $5
 	anim_wait 8
 	anim_bgeffect ANIM_BG_SHOW_MON, $0, $0, $0
 	anim_wait 4
@@ -4327,15 +4327,15 @@
 .loop
 	anim_bgeffect ANIM_BG_1F, $e, $4, $0
 	anim_sound 0, 1, SFX_STRENGTH
-	anim_obj ANIM_OBJ_1E, 128, 64, $40
+	anim_obj ANIM_OBJ_SMALL_ROCK, 128, 64, $40
 	anim_wait 2
-	anim_obj ANIM_OBJ_1E, 120, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 120, 68, $30
 	anim_wait 2
-	anim_obj ANIM_OBJ_1E, 152, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 152, 68, $30
 	anim_wait 2
-	anim_obj ANIM_OBJ_1E, 144, 64, $40
+	anim_obj ANIM_OBJ_SMALL_ROCK, 144, 64, $40
 	anim_wait 2
-	anim_obj ANIM_OBJ_1E, 136, 68, $30
+	anim_obj ANIM_OBJ_SMALL_ROCK, 136, 68, $30
 	anim_wait 2
 	anim_jumpuntil .loop
 	anim_wait 96
@@ -4370,7 +4370,7 @@
 	anim_1gfx ANIM_GFX_FIRE
 	anim_sound 6, 2, SFX_EMBER
 .loop
-	anim_obj ANIM_OBJ_90, 64, 92, $4
+	anim_obj ANIM_OBJ_DRAGONBREATH, 64, 92, $4
 	anim_wait 4
 	anim_loop 10, .loop
 	anim_wait 64
@@ -4379,7 +4379,7 @@
 
 BattleAnim_BatonPass: ; cb5ef
 	anim_1gfx ANIM_GFX_MISC
-	anim_obj ANIM_OBJ_86, 44, 104, $20
+	anim_obj ANIM_OBJ_BATON_PASS, 44, 104, $20
 	anim_sound 0, 0, SFX_BATON_PASS
 	anim_call BattleAnim_BatonPass_branch_c9486
 	anim_wait 64
@@ -4434,7 +4434,7 @@
 	anim_obp0 $e4
 .loop
 	anim_sound 0, 0, SFX_MENU
-	anim_obj ANIM_OBJ_A8, 44, 112, $0
+	anim_obj ANIM_OBJ_RAPID_SPIN, 44, 112, $0
 	anim_wait 2
 	anim_loop 5, .loop
 	anim_wait 24
@@ -4532,7 +4532,7 @@
 	anim_bgeffect ANIM_BG_07, $0, $0, $0
 	anim_sound 0, 0, SFX_MORNING_SUN
 .loop
-	anim_obj ANIM_OBJ_9C, 16, 48, $88
+	anim_obj ANIM_OBJ_MORNING_SUN, 16, 48, $88
 	anim_wait 6
 	anim_loop 5, .loop
 	anim_wait 32
@@ -4570,8 +4570,8 @@
 	anim_bgp $1b
 	anim_obp0 $c0
 	anim_bgeffect ANIM_BG_1F, $20, $2, $0
-	anim_obj ANIM_OBJ_36, 136, 56, $a8
-	anim_obj ANIM_OBJ_36, 136, 56, $28
+	anim_obj ANIM_OBJ_BITE, 136, 56, $a8
+	anim_obj ANIM_OBJ_BITE, 136, 56, $28
 	anim_wait 8
 	anim_sound 0, 1, SFX_BITE
 	anim_obj ANIM_OBJ_00, 144, 48, $18
@@ -4586,11 +4586,11 @@
 	anim_1gfx ANIM_GFX_SHINE
 	anim_bgp $1b
 	anim_bgeffect ANIM_BG_07, $0, $0, $0
-	anim_obj ANIM_OBJ_9E, 0, 40, $0
-	anim_obj ANIM_OBJ_9E, 16, 56, $0
-	anim_obj ANIM_OBJ_9E, 32, 72, $0
-	anim_obj ANIM_OBJ_9E, 48, 88, $0
-	anim_obj ANIM_OBJ_9E, 64, 104, $0
+	anim_obj ANIM_OBJ_MOONLIGHT, 0, 40, $0
+	anim_obj ANIM_OBJ_MOONLIGHT, 16, 56, $0
+	anim_obj ANIM_OBJ_MOONLIGHT, 32, 72, $0
+	anim_obj ANIM_OBJ_MOONLIGHT, 48, 88, $0
+	anim_obj ANIM_OBJ_MOONLIGHT, 64, 104, $0
 	anim_wait 1
 	anim_sound 0, 0, SFX_MOONLIGHT
 	anim_wait 63
@@ -4608,14 +4608,14 @@
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_1A, $0, $1, $20
 	anim_bgeffect ANIM_BG_07, $0, $2, $0
-	anim_obj ANIM_OBJ_9F, 44, 88, $0
-	anim_obj ANIM_OBJ_9F, 44, 88, $8
-	anim_obj ANIM_OBJ_9F, 44, 88, $10
-	anim_obj ANIM_OBJ_9F, 44, 88, $18
-	anim_obj ANIM_OBJ_9F, 44, 88, $20
-	anim_obj ANIM_OBJ_9F, 44, 88, $28
-	anim_obj ANIM_OBJ_9F, 44, 88, $30
-	anim_obj ANIM_OBJ_9F, 44, 88, $38
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $0
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $8
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $10
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $18
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $20
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $28
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $30
+	anim_obj ANIM_OBJ_HIDDEN_POWER, 44, 88, $38
 .loop
 	anim_sound 0, 0, SFX_SWORDS_DANCE
 	anim_wait 8
@@ -4701,11 +4701,11 @@
 	anim_bgp $f8
 	anim_obp0 $7c
 	anim_sound 0, 1, SFX_RAIN_DANCE
-	anim_obj ANIM_OBJ_AF, 88, 0, $0
+	anim_obj ANIM_OBJ_RAIN, 88, 0, $0
 	anim_wait 8
-	anim_obj ANIM_OBJ_AF, 88, 0, $1
+	anim_obj ANIM_OBJ_RAIN, 88, 0, $1
 	anim_wait 8
-	anim_obj ANIM_OBJ_AF, 88, 0, $2
+	anim_obj ANIM_OBJ_RAIN, 88, 0, $2
 	anim_wait 128
 	anim_ret
 ; cb8cf
@@ -4714,11 +4714,11 @@
 	anim_1gfx ANIM_GFX_WATER
 	anim_bgp $90
 	anim_sound 0, 1, SFX_MORNING_SUN
-	anim_obj ANIM_OBJ_AF, 88, 0, $2
+	anim_obj ANIM_OBJ_RAIN, 88, 0, $2
 	anim_wait 8
-	anim_obj ANIM_OBJ_AF, 88, 0, $2
+	anim_obj ANIM_OBJ_RAIN, 88, 0, $2
 	anim_wait 8
-	anim_obj ANIM_OBJ_AF, 88, 0, $2
+	anim_obj ANIM_OBJ_RAIN, 88, 0, $2
 	anim_wait 128
 	anim_ret
 ; cb8e9
@@ -4728,7 +4728,7 @@
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 .loop
 	anim_sound 0, 0, SFX_SHINE
-	anim_obj ANIM_OBJ_50, 72, 80, $0
+	anim_obj ANIM_OBJ_SCREEN, 72, 80, $0
 	anim_obj ANIM_OBJ_AE, 64, 72, $4
 	anim_wait 8
 	anim_obj ANIM_OBJ_AE, 64, 88, $4
@@ -4747,10 +4747,10 @@
 	anim_call BattleAnim_FollowEnemyFeet_0
 	anim_bgeffect ANIM_BG_1A, $0, $1, $20
 	anim_sound 0, 0, SFX_PSYBEAM
-	anim_obj ANIM_OBJ_B1, 44, 88, $0
-	anim_obj ANIM_OBJ_B1, 44, 88, $10
-	anim_obj ANIM_OBJ_B1, 44, 88, $20
-	anim_obj ANIM_OBJ_B1, 44, 88, $30
+	anim_obj ANIM_OBJ_PSYCH_UP, 44, 88, $0
+	anim_obj ANIM_OBJ_PSYCH_UP, 44, 88, $10
+	anim_obj ANIM_OBJ_PSYCH_UP, 44, 88, $20
+	anim_obj ANIM_OBJ_PSYCH_UP, 44, 88, $30
 	anim_wait 64
 	anim_incbgeffect ANIM_BG_1A
 	anim_call BattleAnim_ShowMon_0
@@ -4762,12 +4762,12 @@
 	anim_2gfx ANIM_GFX_SPEED, ANIM_GFX_CUT
 	anim_bgeffect ANIM_BG_HIDE_MON, $0, $1, $0
 	anim_sound 0, 0, SFX_MENU
-	anim_obj ANIM_OBJ_77, 24, 88, $2
-	anim_obj ANIM_OBJ_77, 32, 88, $1
-	anim_obj ANIM_OBJ_77, 40, 88, $0
-	anim_obj ANIM_OBJ_77, 48, 88, $80
-	anim_obj ANIM_OBJ_77, 56, 88, $81
-	anim_obj ANIM_OBJ_77, 64, 88, $82
+	anim_obj ANIM_OBJ_SPEED_LINE, 24, 88, $2
+	anim_obj ANIM_OBJ_SPEED_LINE, 32, 88, $1
+	anim_obj ANIM_OBJ_SPEED_LINE, 40, 88, $0
+	anim_obj ANIM_OBJ_SPEED_LINE, 48, 88, $80
+	anim_obj ANIM_OBJ_SPEED_LINE, 56, 88, $81
+	anim_obj ANIM_OBJ_SPEED_LINE, 64, 88, $82
 	anim_wait 12
 	anim_sound 0, 1, SFX_CUT
 	anim_obj ANIM_OBJ_3A, 152, 40, $0
@@ -4780,25 +4780,25 @@
 BattleAnim_Ancientpower: ; cb97a
 	anim_2gfx ANIM_GFX_ROCKS, ANIM_GFX_HIT
 	anim_sound 0, 0, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 64, 108, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 64, 108, $20
 	anim_wait 8
 	anim_sound 0, 0, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 75, 102, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 75, 102, $20
 	anim_wait 8
 	anim_sound 0, 0, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 85, 97, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 85, 97, $20
 	anim_wait 8
 	anim_sound 0, 0, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 96, 92, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 96, 92, $20
 	anim_wait 8
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 106, 87, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 106, 87, $20
 	anim_wait 8
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 116, 82, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 116, 82, $20
 	anim_wait 8
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B2, 126, 77, $20
+	anim_obj ANIM_OBJ_ANCIENTPOWER, 126, 77, $20
 	anim_wait 8
 	anim_sound 0, 1, SFX_SPARK
 	anim_obj ANIM_OBJ_00, 136, 56, $0
@@ -4810,7 +4810,7 @@
 	anim_2gfx ANIM_GFX_EGG, ANIM_GFX_SMOKE
 	anim_bgp $1b
 	anim_sound 6, 2, SFX_SLUDGE_BOMB
-	anim_obj ANIM_OBJ_B4, 64, 92, $2
+	anim_obj ANIM_OBJ_SHADOW_BALL, 64, 92, $2
 	anim_wait 32
 	anim_obj ANIM_OBJ_BALL_POOF, 132, 56, $10
 	anim_wait 24
@@ -4822,14 +4822,14 @@
 	anim_bgeffect ANIM_BG_06, $0, $2, $0
 	anim_bgeffect ANIM_BG_ALTERNATE_HUES, $0, $2, $0
 	anim_bgeffect ANIM_BG_PSYCHIC, $0, $0, $0
-	anim_obj ANIM_OBJ_7D, 8, 24, $10
-	anim_obj ANIM_OBJ_7D, 8, 48, $2
-	anim_obj ANIM_OBJ_7D, 8, 88, $8
+	anim_obj ANIM_OBJ_AGILITY, 8, 24, $10
+	anim_obj ANIM_OBJ_AGILITY, 8, 48, $2
+	anim_obj ANIM_OBJ_AGILITY, 8, 88, $8
 	anim_wait 4
-	anim_obj ANIM_OBJ_7D, 8, 32, $6
-	anim_obj ANIM_OBJ_7D, 8, 56, $c
-	anim_obj ANIM_OBJ_7D, 8, 80, $4
-	anim_obj ANIM_OBJ_7D, 8, 104, $e
+	anim_obj ANIM_OBJ_AGILITY, 8, 32, $6
+	anim_obj ANIM_OBJ_AGILITY, 8, 56, $c
+	anim_obj ANIM_OBJ_AGILITY, 8, 80, $4
+	anim_obj ANIM_OBJ_AGILITY, 8, 104, $e
 .loop
 	anim_sound 0, 0, SFX_THROW_BALL
 	anim_wait 16
@@ -4843,21 +4843,21 @@
 	anim_sound 0, 1, SFX_SPARK
 	anim_obj ANIM_OBJ_01, 128, 56, $0
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B5, 128, 64, $28
-	anim_obj ANIM_OBJ_B5, 128, 64, $5c
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $28
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $5c
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B5, 128, 64, $10
-	anim_obj ANIM_OBJ_B5, 128, 64, $e8
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $10
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $e8
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B5, 128, 64, $9c
-	anim_obj ANIM_OBJ_B5, 128, 64, $d0
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $9c
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $d0
 	anim_wait 6
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B5, 128, 64, $1c
-	anim_obj ANIM_OBJ_B5, 128, 64, $50
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $1c
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $50
 	anim_sound 0, 1, SFX_SPARK
-	anim_obj ANIM_OBJ_B5, 128, 64, $dc
-	anim_obj ANIM_OBJ_B5, 128, 64, $90
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $dc
+	anim_obj ANIM_OBJ_ROCK_SMASH, 128, 64, $90
 	anim_wait 32
 	anim_ret
 ; cba6a
@@ -5077,9 +5077,9 @@
 	anim_sound 0, 0, SFX_SHINE
 	anim_bgeffect ANIM_BG_17, $0, $1, $40
 	anim_wait 8
-	anim_obj ANIM_OBJ_51, 48, 84, $0
+	anim_obj ANIM_OBJ_HARDEN, 48, 84, $0
 	anim_wait 32
-	anim_obj ANIM_OBJ_51, 48, 84, $0
+	anim_obj ANIM_OBJ_HARDEN, 48, 84, $0
 	anim_wait 64
 	anim_incbgeffect ANIM_BG_17
 	anim_ret
@@ -5100,11 +5100,11 @@
 BattleAnim_MorningSun_branch_cbc6a: ; cbc6a
 BattleAnim_Synthesis_branch_cbc6a: ; cbc6a
 	anim_sound 0, 0, SFX_METRONOME
-	anim_obj ANIM_OBJ_9D, 44, 64, $0
+	anim_obj ANIM_OBJ_GLIMMER, 44, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 24, 96, $0
+	anim_obj ANIM_OBJ_GLIMMER, 24, 96, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 56, 104, $0
+	anim_obj ANIM_OBJ_GLIMMER, 56, 104, $0
 	anim_wait 21
 	anim_ret
 ; cbc80
@@ -5114,15 +5114,15 @@
 BattleAnim_Synthesis_branch_cbc80: ; cbc80
 	anim_sound 0, 0, SFX_METRONOME
 .loop
-	anim_obj ANIM_OBJ_9D, 24, 64, $0
+	anim_obj ANIM_OBJ_GLIMMER, 24, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 56, 104, $0
+	anim_obj ANIM_OBJ_GLIMMER, 56, 104, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 24, 104, $0
+	anim_obj ANIM_OBJ_GLIMMER, 24, 104, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 56, 64, $0
+	anim_obj ANIM_OBJ_GLIMMER, 56, 64, $0
 	anim_wait 5
-	anim_obj ANIM_OBJ_9D, 40, 84, $0
+	anim_obj ANIM_OBJ_GLIMMER, 40, 84, $0
 	anim_wait 5
 	anim_loop 2, .loop
 	anim_wait 16
--- /dev/null
+++ b/data/moves/effects_priorities.asm
@@ -1,0 +1,9 @@
+MoveEffectPriorities: ; 3c5df
+	db EFFECT_PROTECT,      3
+	db EFFECT_ENDURE,       3
+	db EFFECT_PRIORITY_HIT, 2
+	db EFFECT_FORCE_SWITCH, 0
+	db EFFECT_COUNTER,      0
+	db EFFECT_MIRROR_COAT,  0
+	db -1
+; 3c5ec
--- /dev/null
+++ b/data/moves/grammar.asm
@@ -1,0 +1,102 @@
+; Used by GetMoveGrammar (see engine/battle/used_move_text.asm)
+; Each move is given an identifier for what usedmovetext to use (0-4).
+; Made redundant in English localization, where all are just "[mon]¯used [move]!"
+
+MoveGrammar: ; 105e7a
+; 0: originally "[mon]の¯[move]¯つかった!" ("[mon]¯used¯[move]!")
+	db SWORDS_DANCE
+	db GROWTH
+	db STRENGTH
+	db HARDEN
+	db MINIMIZE
+	db SMOKESCREEN
+	db WITHDRAW
+	db DEFENSE_CURL
+	db EGG_BOMB
+	db SMOG
+	db BONE_CLUB
+	db FLASH
+	db SPLASH
+	db ACID_ARMOR
+	db BONEMERANG
+	db REST
+	db SHARPEN
+	db SUBSTITUTE
+	db MIND_READER
+	db SNORE
+	db PROTECT
+	db SPIKES
+	db ENDURE
+	db ROLLOUT
+	db SWAGGER
+	db SLEEP_TALK
+	db HIDDEN_POWER
+	db PSYCH_UP
+	db EXTREMESPEED
+	db 0 ; end set
+
+; 1: originally "[mon]の¯[move]した!" ("[mon]¯did [move]!")
+	db RECOVER
+	db TELEPORT
+	db BIDE
+	db SELFDESTRUCT
+	db AMNESIA
+	db FLAIL
+	db 0 ; end set
+
+; 2: originally "[mon]の¯[move]¯した!" ("[mon]¯did¯[move]!")
+	db MEDITATE
+	db AGILITY
+	db MIMIC
+	db DOUBLE_TEAM
+	db BARRAGE
+	db TRANSFORM
+	db STRUGGLE
+	db SCARY_FACE
+	db 0 ; end set
+
+; 3: originally "[mon]の¯[move] こうげき!" ("[mon]'s¯[move] attack!")
+	db POUND
+	db SCRATCH
+	db VICEGRIP
+	db WING_ATTACK
+	db FLY
+	db BIND
+	db SLAM
+	db HORN_ATTACK
+	db WRAP
+	db THRASH
+	db TAIL_WHIP
+	db LEER
+	db BITE
+	db GROWL
+	db ROAR
+	db SING
+	db PECK
+	db ABSORB
+	db STRING_SHOT
+	db EARTHQUAKE
+	db FISSURE
+	db DIG
+	db TOXIC
+	db SCREECH
+	db METRONOME
+	db LICK
+	db CLAMP
+	db CONSTRICT
+	db POISON_GAS
+	db BUBBLE
+	db SLASH
+	db SPIDER_WEB
+	db NIGHTMARE
+	db CURSE
+	db FORESIGHT
+	db CHARM
+	db ATTRACT
+	db ROCK_SMASH
+	db 0 ; end set
+
+; 4: originally "[mon]の¯[move]!" ("[mon]'s¯[move]!")
+; Any move not listed above uses this grammar.
+	db -1 ; end
+; 105ed0
--- a/data/mystery_gift_decos.asm
+++ /dev/null
@@ -1,40 +1,0 @@
-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
--- a/data/mystery_gift_items.asm
+++ /dev/null
@@ -1,40 +1,0 @@
-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
--- a/data/npc_trades.asm
+++ b/data/npc_trades.asm
@@ -1,7 +1,3 @@
-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
@@ -12,11 +8,11 @@
 
 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
+	npctrade TRADE_DIALOG_COLLECTOR, ABRA,       MACHOP,     "MUSCLE@@@@@", $37, $66, GOLD_BERRY,   37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade TRADE_DIALOG_COLLECTOR, BELLSPROUT, ONIX,       "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
+	npctrade TRADE_DIALOG_HAPPY,     KRABBY,     VOLTORB,    "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade TRADE_DIALOG_GIRL,      DRAGONAIR,  DODRIO,     "DORIS@@@@@@", $77, $66, SMOKE_BALL,   00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
+	npctrade TRADE_DIALOG_NEWBIE,    HAUNTER,    XATU,       "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
+	npctrade TRADE_DIALOG_GIRL,      CHANSEY,    AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY,   26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
+	npctrade TRADE_DIALOG_COLLECTOR, DUGTRIO,    MAGNETON,   "MAGGIE@@@@@", $96, $66, METAL_COAT,   50082, "FOREST@@@@@", TRADE_EITHER_GENDER
 ; fcf38
--- a/data/palettes/battle_objects.pal
+++ /dev/null
@@ -1,30 +1,0 @@
-; gray
-	RGB 31, 31, 31
-	RGB 25, 25, 25
-	RGB 13, 13, 13
-	RGB 00, 00, 00
-; yellow
-	RGB 31, 31, 31
-	RGB 31, 31, 07
-	RGB 31, 16, 01
-	RGB 00, 00, 00
-; red
-	RGB 31, 31, 31
-	RGB 31, 19, 24
-	RGB 30, 10, 06
-	RGB 00, 00, 00
-; green
-	RGB 31, 31, 31
-	RGB 12, 25, 01
-	RGB 05, 14, 00
-	RGB 00, 00, 00
-; blue
-	RGB 31, 31, 31
-	RGB 08, 12, 31
-	RGB 01, 04, 31
-	RGB 00, 00, 00
-; brown
-	RGB 31, 31, 31
-	RGB 24, 18, 07
-	RGB 20, 15, 03
-	RGB 00, 00, 00
--- a/data/palettes/blk_packets.asm
+++ /dev/null
@@ -1,40 +1,0 @@
-BlkPacket_9a86:
-	db $21, $01, $03, $00, $00, $00, $13, $11, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9a96:
-	db $21, $01, $07, $05, $00, $0a, $13, $0d, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9aa6:
-	db $22, $05, $07, $0a, $00, $0c, $13, $11, $03, $05, $01, $00, $0a, $03, $03, $00
-	db $0a, $08, $13, $0a, $03, $0a, $00, $04, $08, $0b, $03, $0f, $0b, $00, $13, $07
-
-BlkPacket_9ac6:
-	db $21, $01, $07, $05, $00, $01, $07, $07, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9ad6:
-	db $21, $01, $07, $05, $0b, $01, $13, $02, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9ae6:
-	db $21, $01, $07, $05, $01, $01, $08, $08, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9af6:
-	db $21, $01, $07, $05, $07, $05, $0d, $0b, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9b06:
-	db $22, $05, $03, $05, $00, $00, $13, $0b, $03, $0a, $00, $04, $13, $09, $02, $0f
-	db $00, $06, $13, $07, $03, $00, $04, $04, $0f, $09, $03, $00, $00, $0c, $13, $11
-
-BlkPacket_9b26:
-	db $23, $07, $07, $10, $00, $00, $02, $0c, $02, $00, $0c, $00, $12, $01, $02, $00
-	db $0c, $02, $12, $03, $02, $00, $0c, $04, $12, $05, $02, $00, $0c, $06, $12, $07
-	db $02, $00, $0c, $08, $12, $09, $02, $00, $0c, $0a, $12, $0b, $00, $00, $00, $00
-
-BlkPacket_9b56:
-	db $22, $03, $07, $20, $00, $00, $13, $04, $03, $0f, $00, $06, $13, $11, $03, $05
-	db $0f, $01, $12, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9b76:
-	db $21, $01, $07, $10, $00, $00, $13, $05, $00, $00, $00, $00, $00, $00, $00, $00
-
-BlkPacket_9b86:
-	db $21, $02, $07, $0a, $00, $04, $13, $0d, $03, $05, $00, $06, $13, $0b, $00, $00
--- a/data/palettes/card_flip.pal
+++ /dev/null
@@ -1,44 +1,0 @@
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 29, 25, 00
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 13, 30
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 08, 17, 30
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 08, 31, 08
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 17, 07, 31
-	RGB 06, 19, 08
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 00, 00
-	RGB 31, 00, 00
--- a/data/palettes/credits.pal
+++ /dev/null
@@ -1,19 +1,0 @@
-; pichu
-	RGB 31,00,31, 31,25,00, 11,14,31, 07,07,07
-	RGB 31,05,05, 11,14,31, 11,14,31, 31,31,31
-	RGB 31,05,05, 00,00,00, 31,31,31, 31,31,31
-
-; smoochum
-	RGB 31,31,31, 31,27,00, 26,06,31, 07,07,07
-	RGB 03,13,31, 20,00,24, 26,06,31, 31,31,31
-	RGB 03,13,31, 00,00,00, 31,31,31, 31,31,31
-
-; ditto
-	RGB 31,31,31, 23,12,28, 31,22,00, 07,07,07
-	RGB 03,20,00, 31,22,00, 31,22,00, 31,31,31
-	RGB 03,20,00, 00,00,00, 31,31,31, 31,31,31
-
-; igglybuff
-	RGB 31,31,31, 31,10,31, 31,00,09, 07,07,07
-	RGB 31,14,00, 31,00,09, 31,00,09, 31,31,31
-	RGB 31,14,00, 31,31,31, 31,31,31, 31,31,31
--- a/data/palettes/crystal_intro/fade.pal
+++ /dev/null
@@ -1,41 +1,0 @@
-; Fade to white.
-
-	RGB 24, 12, 09
-	RGB 31, 31, 31
-	RGB 12, 00, 31
-	RGB 00, 00, 00
-
-	RGB 31, 19, 05
-	RGB 31, 31, 31
-	RGB 15, 05, 31
-	RGB 07, 07, 07
-
-	RGB 31, 21, 09
-	RGB 31, 31, 31
-	RGB 18, 09, 31
-	RGB 11, 11, 11
-
-	RGB 31, 23, 13
-	RGB 31, 31, 31
-	RGB 21, 13, 31
-	RGB 15, 15, 15
-
-	RGB 31, 25, 17
-	RGB 31, 31, 31
-	RGB 25, 17, 31
-	RGB 19, 19, 19
-
-	RGB 31, 27, 21
-	RGB 31, 31, 31
-	RGB 27, 21, 31
-	RGB 23, 23, 23
-
-	RGB 31, 29, 25
-	RGB 31, 31, 31
-	RGB 29, 26, 31
-	RGB 27, 27, 27
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
--- a/data/palettes/crystal_intro/gamefreak_logo.pal
+++ /dev/null
@@ -1,23 +1,0 @@
-; Ditto's color as it turns into the Game Freak logo.
-; Fade from pink to orange.
-; One color per step.
-
-	RGB 23, 12, 28
-	RGB 23, 12, 27
-	RGB 23, 13, 26
-	RGB 23, 13, 24
-
-	RGB 24, 14, 22
-	RGB 24, 14, 20
-	RGB 24, 15, 18
-	RGB 24, 15, 16
-
-	RGB 25, 16, 14
-	RGB 25, 16, 12
-	RGB 25, 17, 10
-	RGB 25, 17, 08
-
-	RGB 26, 18, 06
-	RGB 26, 18, 04
-	RGB 26, 19, 02
-	RGB 26, 19, 00
--- a/data/palettes/crystal_intro/intro_1.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB  0,  4,  5
-	RGB  1,  8,  5
-	RGB  4, 12,  9
-	RGB 24, 12,  9
-
-	RGB  0,  4,  5
-	RGB  9,  6,  8
-	RGB  8, 16,  5
-	RGB  5, 10,  4
-
-	RGB 31, 31, 31
-	RGB  9,  6,  8
-	RGB 18,  9,  9
-	RGB 13,  8,  9
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB  2,  5, 22
-	RGB  1,  5, 12
-
-	RGB 31, 31, 31
-	RGB 31, 10, 25
-	RGB 31, 21,  0
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 21, 31
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
--- a/data/palettes/crystal_intro/intro_2.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 10,  0, 10
-	RGB 19,  0, 19
-	RGB 31,  0, 31
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
--- a/data/palettes/crystal_intro/intro_3.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
--- a/data/palettes/crystal_intro/intro_4.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB 24, 12,  9
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 24, 12,  9
-	RGB 31, 31, 31
-	RGB  8,  9, 31
-	RGB  0,  0,  0
-
-	RGB 24, 12,  9
-	RGB 12, 20, 31
-	RGB 19,  8, 31
-	RGB  0,  0,  0
-
-	RGB 12, 20, 31
-	RGB  8,  9, 31
-	RGB 19,  8, 31
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 12, 20, 31
-	RGB  8,  9, 31
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
--- a/data/palettes/crystal_intro/intro_5.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB 24, 12,  9
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 24, 12,  9
-	RGB 31, 31, 31
-	RGB  8,  9, 31
-	RGB  0,  0,  0
-
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-	RGB 24, 12,  9
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 12,  0, 31
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 21,  9,  0
-	RGB 21,  9,  0
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
-
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 11, 11, 11
-	RGB  0,  0,  0
--- a/data/palettes/debug/bg.pal
+++ /dev/null
@@ -1,43 +1,0 @@
-	; white
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	; red
-	RGB 31, 00, 00
-	RGB 31, 00, 00
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-
-	; green
-	RGB 00, 31, 00
-	RGB 00, 31, 00
-	RGB 00, 31, 00
-	RGB 00, 00, 00
-
-	; blue
-	RGB 00, 00, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
--- a/data/palettes/debug/ob.pal
+++ /dev/null
@@ -1,42 +1,0 @@
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-	; red
-	RGB 31, 31, 31
-	RGB 31, 00, 00
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-
-	; green
-	RGB 31, 31, 31
-	RGB 00, 31, 00
-	RGB 00, 31, 00
-	RGB 00, 00, 00
-
-	; blue
-	RGB 31, 31, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 00
--- a/data/palettes/diploma.pal
+++ /dev/null
@@ -1,39 +1,0 @@
-	RGB 27, 31, 27
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 07, 06
-	RGB 20, 02, 03
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 10, 31, 09
-	RGB 04, 14, 01
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 08, 12, 31
-	RGB 01, 04, 31
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 31, 07
-	RGB 31, 16, 01
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 22, 16, 08
-	RGB 13, 07, 01
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 15, 31, 31
-	RGB 05, 17, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 11, 11, 19
-	RGB 07, 07, 12
-	RGB 00, 00, 00
--- a/data/palettes/exp_bar.pal
+++ /dev/null
@@ -1,3 +1,0 @@
-; blue
-	RGB 30, 26, 15
-	RGB 04, 17, 31
--- a/data/palettes/hp_bar.pal
+++ /dev/null
@@ -1,9 +1,0 @@
-; green
-	RGB 30, 26, 15
-	RGB 00, 23, 00
-; yellow
-	RGB 30, 26, 15
-	RGB 31, 21, 00
-; red
-	RGB 30, 26, 15
-	RGB 31, 00, 00
--- a/data/palettes/mail.pal
+++ /dev/null
@@ -1,49 +1,0 @@
-	RGB 20, 31, 11
-	RGB 31, 19, 00
-	RGB 31, 10, 09
-	RGB 00, 00, 00
-
-	RGB 15, 20, 31
-	RGB 30, 26, 00
-	RGB 31, 12, 00
-	RGB 00, 00, 00
-
-	RGB 24, 17, 31
-	RGB 30, 26, 00
-	RGB 08, 11, 31
-	RGB 00, 00, 00
-
-	RGB 31, 25, 17
-	RGB 31, 18, 04
-	RGB 28, 12, 05
-	RGB 00, 00, 00
-
-	RGB 19, 26, 31
-	RGB 31, 05, 08
-	RGB 31, 09, 31
-	RGB 00, 00, 00
-
-	RGB 31, 19, 28
-	RGB 31, 21, 00
-	RGB 12, 22, 00
-	RGB 00, 00, 00
-
-	RGB 19, 17, 23
-	RGB 30, 26, 00
-	RGB 31, 12, 00
-	RGB 00, 00, 00
-
-	RGB 07, 26, 31
-	RGB 26, 26, 27
-	RGB 31, 11, 11
-	RGB 00, 00, 00
-
-	RGB 21, 31, 21
-	RGB 30, 26, 00
-	RGB 31, 12, 00
-	RGB 00, 00, 00
-
-	RGB 07, 26, 31
-	RGB 31, 31, 00
-	RGB 00, 21, 00
-	RGB 00, 00, 00
--- a/data/palettes/mg_mobile.pal
+++ /dev/null
@@ -1,24 +1,0 @@
-	RGB 03, 07, 09
-	RGB 26, 31, 00
-	RGB 20, 16, 03
-	RGB 31, 31, 31
-
-	RGB 13, 24, 29
-	RGB 11, 16, 30
-	RGB 07, 11, 22
-	RGB 05, 06, 18
-
-	RGB 31, 31, 31
-	RGB 20, 26, 31
-	RGB 13, 24, 29
-	RGB 11, 16, 30
-
-	RGB 31, 31, 31
-	RGB 20, 26, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 20, 16, 08
-	RGB 31, 00, 00
-	RGB 00, 00, 00
--- a/data/palettes/overworld/bg_text.pal
+++ /dev/null
@@ -1,4 +1,0 @@
-	RGB 31, 31, 31
-	RGB 08, 19, 28
-	RGB 05, 05, 16
-	RGB 00, 00, 00
--- a/data/palettes/overworld/map_objects.pal
+++ /dev/null
@@ -1,39 +1,0 @@
-; morn
-	RGB 28,31,16, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 28,31,16, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 28,31,16, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 28,31,16, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 28,31,16, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
-	RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; rock
-
-; day
-	RGB 27,31,27, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 27,31,27, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 27,31,27, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 27,31,27, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 27,31,27, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
-	RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; rock
-
-; nite
-	RGB 15,14,24, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 15,14,24, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 15,14,24, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 15,14,24, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 15,14,24, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; tree
-	RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; rock
-
-; dark
-	RGB 01,01,02, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 01,01,02, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 01,01,02, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 01,01,02, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 01,01,02, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; tree
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; rock
--- a/data/palettes/overworld/roofs.pal
+++ /dev/null
@@ -1,161 +1,0 @@
-; group 0 (unused)
-	RGB 21, 21, 21
-	RGB 11, 11, 11
-	RGB 21, 21, 21
-	RGB 11, 11, 11
-
-; group 1 (Olivine)
-	RGB 14, 17, 31
-	RGB 07, 11, 15
-	RGB 09, 09, 17
-	RGB 05, 07, 13
-
-; group 2 (Mahogany)
-	RGB 12, 19, 00
-	RGB 06, 10, 00
-	RGB 06, 09, 07
-	RGB 04, 05, 06
-
-; group 3
-	RGB 21, 21, 21
-	RGB 11, 11, 11
-	RGB 21, 21, 21
-	RGB 17, 08, 07
-
-; group 4 (Ecruteak)
-	RGB 31, 19, 00
-	RGB 27, 10, 05
-	RGB 15, 07, 02
-	RGB 11, 04, 02
-
-; group 5 (Blackthorn)
-	RGB 11, 10, 16
-	RGB 05, 06, 07
-	RGB 03, 04, 08
-	RGB 00, 00, 00
-
-; group 6 (Cinnabar)
-	RGB 31, 10, 00
-	RGB 18, 06, 00
-	RGB 18, 05, 09
-	RGB 17, 08, 07
-
-; group 7 (Cerulean)
-	RGB 17, 27, 31
-	RGB 05, 15, 31
-	RGB 07, 08, 22
-	RGB 07, 07, 16
-
-; group 8 (Azalea)
-	RGB 22, 20, 10
-	RGB 17, 14, 03
-	RGB 11, 11, 05
-	RGB 10, 09, 07
-
-; group 9 (Lake of Rage)
-	RGB 31, 08, 04
-	RGB 09, 09, 08
-	RGB 18, 05, 09
-	RGB 09, 09, 08
-
-; group 10 (Violet)
-	RGB 24, 14, 31
-	RGB 13, 07, 21
-	RGB 12, 03, 18
-	RGB 09, 03, 15
-
-; group 11 (Goldenrod)
-	RGB 25, 25, 00
-	RGB 20, 17, 08
-	RGB 12, 12, 00
-	RGB 10, 09, 05
-
-; group 12 (Vermilion)
-	RGB 27, 23, 01
-	RGB 23, 11, 00
-	RGB 15, 11, 01
-	RGB 11, 10, 01
-
-; group 13 (Pallet)
-	RGB 27, 28, 31
-	RGB 17, 19, 22
-	RGB 14, 14, 18
-	RGB 10, 09, 13
-
-; group 14 (Pewter)
-	RGB 19, 19, 16
-	RGB 10, 12, 15
-	RGB 09, 09, 11
-	RGB 04, 05, 07
-
-; group 15 (Mount Moon Square)
-	RGB 14, 17, 31
-	RGB 07, 11, 15
-	RGB 09, 13, 19
-	RGB 07, 07, 16
-
-; group 16 (Route 23)
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 11, 11, 19
-	RGB 07, 07, 12
-
-; group 17 (Fuchsia)
-	RGB 31, 18, 29
-	RGB 17, 13, 20
-	RGB 14, 06, 12
-	RGB 11, 03, 10
-
-; group 18 (Lavender)
-	RGB 23, 15, 31
-	RGB 16, 05, 31
-	RGB 12, 07, 17
-	RGB 08, 06, 10
-
-; group 19 (Route 28)
-	RGB 21, 21, 25
-	RGB 16, 16, 16
-	RGB 13, 13, 13
-	RGB 07, 07, 07
-
-; group 20
-	RGB 21, 21, 21
-	RGB 11, 11, 11
-	RGB 21, 21, 21
-	RGB 11, 11, 11
-
-; group 21 (Celadon)
-	RGB 19, 31, 15
-	RGB 31, 22, 02
-	RGB 12, 13, 09
-	RGB 09, 12, 03
-
-; group 22 (Cianwood)
-	RGB 15, 10, 31
-	RGB 07, 05, 15
-	RGB 06, 05, 17
-	RGB 02, 02, 08
-
-; group 23 (Viridian)
-	RGB 21, 31, 07
-	RGB 13, 25, 04
-	RGB 09, 14, 08
-	RGB 06, 10, 04
-
-; group 24 (New Bark)
-	RGB 20, 31, 14
-	RGB 11, 23, 05
-	RGB 09, 13, 08
-	RGB 06, 09, 04
-
-; group 25 (Saffron)
-	RGB 31, 26, 00
-	RGB 31, 15, 00
-	RGB 13, 13, 01
-	RGB 08, 08, 01
-
-; group 26 (Cherrygrove)
-	RGB 31, 14, 28
-	RGB 31, 05, 21
-	RGB 14, 07, 17
-	RGB 13, 00, 08
--- a/data/palettes/overworld/tileset_bg.pal
+++ /dev/null
@@ -1,61 +1,0 @@
-; morn
-	RGB 28,31,16, 21,21,21, 13,13,13, 07,07,07 ; gray
-	RGB 28,31,16, 31,19,24, 30,10,06, 07,07,07 ; red
-	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; green
-	RGB 31,31,31, 08,12,31, 01,04,31, 07,07,07 ; water
-	RGB 28,31,16, 31,31,07, 31,16,01, 07,07,07 ; yellow
-	RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; brown
-	RGB 28,31,16, 15,31,31, 05,17,31, 07,07,07 ; roof
-	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
-
-; day
-	RGB 27,31,27, 21,21,21, 13,13,13, 07,07,07 ; gray
-	RGB 27,31,27, 31,19,24, 30,10,06, 07,07,07 ; red
-	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; green
-	RGB 31,31,31, 08,12,31, 01,04,31, 07,07,07 ; water
-	RGB 27,31,27, 31,31,07, 31,16,01, 07,07,07 ; yellow
-	RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; brown
-	RGB 27,31,27, 15,31,31, 05,17,31, 07,07,07 ; roof
-	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
-
-; nite
-	RGB 15,14,24, 11,11,19, 07,07,12, 00,00,00 ; gray
-	RGB 15,14,24, 14,07,17, 13,00,08, 00,00,00 ; red
-	RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; green
-	RGB 15,14,24, 05,05,17, 03,03,10, 00,00,00 ; water
-	RGB 30,30,11, 16,14,18, 16,14,10, 00,00,00 ; yellow
-	RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; brown
-	RGB 15,14,24, 13,12,23, 11,09,20, 00,00,00 ; roof
-	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
-
-; dark
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; gray
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; red
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; green
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; water
-	RGB 30,30,11, 00,00,00, 00,00,00, 00,00,00 ; yellow
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; brown
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; roof
-	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
-
-; indoor
-	RGB 30,28,26, 19,19,19, 13,13,13, 07,07,07 ; gray
-	RGB 30,28,26, 31,19,24, 30,10,06, 07,07,07 ; red
-	RGB 18,24,09, 15,20,01, 09,13,00, 07,07,07 ; green
-	RGB 30,28,26, 15,16,31, 09,09,31, 07,07,07 ; water
-	RGB 30,28,26, 31,31,07, 31,16,01, 07,07,07 ; yellow
-	RGB 26,24,17, 21,17,07, 16,13,03, 07,07,07 ; brown
-	RGB 30,28,26, 17,19,31, 14,16,31, 07,07,07 ; roof
-	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
-
-; 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
-	RGB 00, 00, 00
\ No newline at end of file
--- a/data/palettes/pack.pal
+++ /dev/null
@@ -1,29 +1,0 @@
-	RGB 31, 31, 31
-	RGB 15, 15, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 15, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 31, 11, 31
-	RGB 15, 15, 31
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 15, 31
-	RGB 00, 00, 31
-	RGB 31, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 15, 31
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 07, 19, 07
-	RGB 07, 19, 07
-	RGB 00, 00, 00
--- a/data/palettes/pack_f.pal
+++ /dev/null
@@ -1,29 +1,0 @@
-	RGB 31, 31, 31
-	RGB 31, 14, 31
-	RGB 31, 07, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 14, 31
-	RGB 31, 07, 31
-	RGB 00, 00, 00
-
-	RGB 15, 15, 31
-	RGB 31, 14, 31
-	RGB 31, 07, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 14, 31
-	RGB 31, 07, 31
-	RGB 31, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 14, 31
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 07, 19, 07
-	RGB 07, 19, 07
-	RGB 00, 00, 00
--- a/data/palettes/pal_packets.asm
+++ /dev/null
@@ -1,113 +1,0 @@
-PalPacket_9b96:
-	db $51, $48, $00, $49, $00, $4a, $00, $4b, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9ba6:
-	db $51, $2b, $00, $24, $00, $20, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9bb6:
-	db $51, $41, $00, $42, $00, $43, $00, $44, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9bc6:
-	db $51, $4c, $00, $4c, $00, $4c, $00, $4c, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9bd6:
-	db $51, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9be6:
-	db $51, $36, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9bf6:
-	db $51, $37, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c06:
-	db $51, $38, $00, $39, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c16:
-	db $51, $3a, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c26:
-	db $51, $3b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c36:
-	db $51, $3c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c46:
-	db $51, $39, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c56:
-	db $51, $2e, $00, $2f, $00, $30, $00, $31, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c66:
-	db $51, $1a, $00, $1a, $00, $1a, $00, $1a, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c76:
-	db $51, $32, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c86:
-	db $51, $3c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9c96:
-	db $51, $3d, $00, $3e, $00, $3f, $00, $40, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9ca6:
-	db $51, $33, $00, $34, $00, $1b, $00, $1f, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9cb6:
-	db $51, $1b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9cc6:
-	db $51, $1c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9cd6:
-	db $51, $35, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9ce6:
-	db $01, $ff, $7f, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9cf6:
-	db $09, $ff, $7f, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d06:
-	db $59, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d16:
-	db $89, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d26:
-	db $89, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d36:
-	db $99, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d46:
-	db $a1, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d56:
-	db $b9, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d66:
-	db $b9, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d76:
-	db $79, $5d, $08, $00, $0b, $8c, $d0, $f4, $60, $00, $00, $00, $00, $00, $00, $00
-
-PalPacket_9d86:
-	db $79, $52, $08, $00, $0b, $a9, $e7, $9f, $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0
-
-PalPacket_9d96:
-	db $79, $47, $08, $00, $0b, $c4, $d0, $16, $a5, $cb, $c9, $05, $d0, $10, $a2, $28
-
-PalPacket_9da6:
-	db $79, $3c, $08, $00, $0b, $f0, $12, $a5, $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9
-
-PalPacket_9db6:
-	db $79, $31, $08, $00, $0b, $0c, $a5, $ca, $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e
-
-PalPacket_9dc6:
-	db $79, $26, $08, $00, $0b, $39, $cd, $48, $0c, $d0, $34, $a5, $c9, $c9, $80, $d0
-
-PalPacket_9dd6:
-	db $79, $1b, $08, $00, $0b, $ea, $ea, $ea, $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0
-
-PalPacket_9de6:
-	db $79, $10, $08, $00, $0b, $4c, $20, $08, $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea
--- a/data/palettes/party_menu.pal
+++ /dev/null
@@ -1,69 +1,0 @@
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 10, 14, 20
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 27, 31, 27
-	RGB 31, 19, 10
-	RGB 31, 07, 04
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 07, 07, 07
-
-	RGB 31, 31, 31
-	RGB 31, 31, 07
-	RGB 31, 16, 01
-	RGB 07, 07, 07
-
-	RGB 31, 31, 31
-	RGB 31, 19, 24
-	RGB 30, 10, 06
-	RGB 07, 07, 07
-
-	RGB 31, 31, 31
-	RGB 12, 25, 01
-	RGB 05, 14, 00
-	RGB 07, 07, 07
-
-	RGB 31, 31, 31
-	RGB 08, 12, 31
-	RGB 01, 04, 31
-	RGB 07, 07, 07
-
-	RGB 31, 31, 31
-	RGB 24, 18, 07
-	RGB 20, 15, 03
-	RGB 07, 07, 07
--- a/data/palettes/pokegear.pal
+++ /dev/null
@@ -1,29 +1,0 @@
-	RGB 28, 31, 20
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 15, 07, 00
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 31, 15, 00
-	RGB 15, 07, 00
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 00, 00, 31
-	RGB 31, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 15, 07, 00
-	RGB 31, 00, 00
--- a/data/palettes/pokegear_f.pal
+++ /dev/null
@@ -1,29 +1,0 @@
-	RGB 28, 31, 20
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 00, 00, 31
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 15, 07, 00
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 10, 18, 31
-	RGB 13, 06, 31
-	RGB 00, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 00, 00, 31
-	RGB 31, 00, 00
-
-	RGB 28, 31, 20
-	RGB 00, 31, 00
-	RGB 15, 07, 00
-	RGB 31, 00, 00
--- a/data/palettes/predef.pal
+++ /dev/null
@@ -1,395 +1,0 @@
-; $00
-	RGB 31, 31, 31
-	RGB 22, 25, 19
-	RGB 16, 21, 30
-	RGB 00, 00, 00
-; $01
-	RGB 31, 31, 31
-	RGB 27, 28, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $02
-	RGB 31, 31, 31
-	RGB 24, 28, 19
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $03
-	RGB 31, 31, 31
-	RGB 24, 24, 24
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $04
-	RGB 31, 31, 31
-	RGB 21, 23, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $05
-	RGB 31, 31, 31
-	RGB 24, 21, 27
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $06
-	RGB 31, 31, 31
-	RGB 31, 24, 16
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $07
-	RGB 31, 31, 31
-	RGB 25, 30, 26
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $08
-	RGB 31, 31, 31
-	RGB 31, 25, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $09
-	RGB 31, 31, 31
-	RGB 31, 20, 19
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $0a
-	RGB 31, 31, 31
-	RGB 31, 26, 19
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $0b
-	RGB 31, 31, 31
-	RGB 27, 28, 27
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $0c
-	RGB 31, 31, 31
-	RGB 24, 30, 23
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $0d
-	RGB 31, 31, 31
-	RGB 29, 24, 29
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $0e
-	RGB 31, 31, 31
-	RGB 26, 23, 29
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $0f
-	RGB 31, 31, 31
-	RGB 25, 23, 20
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $10
-	RGB 31, 31, 31
-	RGB 29, 26, 18
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $11
-	RGB 31, 31, 31
-	RGB 31, 21, 18
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $12
-	RGB 31, 31, 31
-	RGB 26, 25, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $13
-	RGB 31, 31, 31
-	RGB 22, 21, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $14
-	RGB 31, 31, 31
-	RGB 22, 25, 21
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $15
-	RGB 31, 31, 31
-	RGB 21, 21, 22
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $16
-	RGB 31, 31, 31
-	RGB 31, 20, 20
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $17
-	RGB 31, 31, 31
-	RGB 26, 26, 26
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $18
-	RGB 31, 31, 31
-	RGB 21, 14, 09
-	RGB 15, 20, 20
-	RGB 00, 00, 00
-; $19
-	RGB 31, 31, 31
-	RGB 12, 28, 22
-	RGB 15, 20, 20
-	RGB 00, 00, 00
-; $1a
-	RGB 31, 31, 31
-	RGB 07, 07, 07
-	RGB 02, 03, 03
-	RGB 00, 00, 00
-; $1b
-	RGB 31, 31, 31
-	RGB 30, 22, 17
-	RGB 16, 14, 19
-	RGB 00, 00, 00
-; $1c
-	RGB 31, 31, 31
-	RGB 18, 20, 27
-	RGB 11, 15, 23
-	RGB 00, 00, 00
-; $1d
-	RGB 31, 31, 31
-	RGB 31, 20, 10
-	RGB 26, 10, 06
-	RGB 00, 00, 00
-; $1e
-	RGB 31, 31, 31
-	RGB 21, 25, 29
-	RGB 14, 19, 25
-	RGB 00, 00, 00
-; $1f
-	RGB 31, 31, 31
-	RGB 27, 22, 24
-	RGB 21, 15, 23
-	RGB 00, 00, 00
-; $20
-	RGB 31, 31, 31
-	RGB 28, 20, 15
-	RGB 21, 14, 09
-	RGB 00, 00, 00
-; $21
-	RGB 31, 31, 31
-	RGB 20, 26, 16
-	RGB 09, 20, 11
-	RGB 00, 00, 00
-; $22
-	RGB 31, 31, 31
-	RGB 30, 22, 24
-	RGB 28, 15, 21
-	RGB 00, 00, 00
-; $23
-	RGB 31, 31, 31
-	RGB 31, 28, 14
-	RGB 26, 20, 00
-	RGB 00, 00, 00
-; $24
-	RGB 31, 31, 31
-	RGB 26, 21, 22
-	RGB 15, 15, 18
-	RGB 00, 00, 00
-; $25
-	RGB 31, 31, 31
-	RGB 23, 19, 13
-	RGB 14, 12, 17
-	RGB 00, 00, 00
-; $26
-	RGB 31, 31, 31
-	RGB 16, 18, 21
-	RGB 10, 12, 18
-	RGB 00, 00, 00
-; $27
-	RGB 31, 31, 31
-	RGB 22, 15, 16
-	RGB 17, 02, 05
-	RGB 00, 00, 00
-; $28
-	RGB 31, 31, 31
-	RGB 15, 20, 20
-	RGB 05, 16, 16
-	RGB 00, 00, 00
-; $29
-	RGB 31, 31, 31
-	RGB 23, 15, 19
-	RGB 14, 04, 12
-	RGB 00, 00, 00
-; $2a
-	RGB 31, 31, 31
-	RGB 20, 17, 18
-	RGB 18, 13, 11
-	RGB 00, 00, 00
-; $2b
-	RGB 31, 31, 31
-	RGB 23, 21, 16
-	RGB 12, 12, 10
-	RGB 00, 00, 00
-; $2c
-	RGB 31, 31, 31
-	RGB 21, 25, 29
-	RGB 30, 22, 24
-	RGB 00, 00, 00
-; $2d
-	RGB 31, 31, 31
-	RGB 26, 23, 16
-	RGB 29, 14, 09
-	RGB 00, 00, 00
-; $2e
-	RGB 31, 31, 31
-	RGB 18, 18, 18
-	RGB 10, 10, 10
-	RGB 00, 00, 00
-; $2f
-	RGB 31, 31, 31
-	RGB 30, 26, 15
-	RGB 00, 23, 00
-	RGB 00, 00, 00
-; $30
-	RGB 31, 31, 31
-	RGB 30, 26, 15
-	RGB 31, 23, 00
-	RGB 00, 00, 00
-; $31
-	RGB 31, 31, 31
-	RGB 30, 26, 15
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-; $32
-	RGB 31, 31, 31
-	RGB 29, 26, 19
-	RGB 27, 20, 14
-	RGB 00, 00, 00
-; $33
-	RGB 31, 31, 31
-	RGB 24, 20, 10
-	RGB 21, 00, 04
-	RGB 00, 00, 00
-; $34
-	RGB 31, 31, 31
-	RGB 31, 20, 10
-	RGB 21, 00, 04
-	RGB 00, 00, 00
-; $35
-	RGB 31, 31, 31
-	RGB 30, 26, 16
-	RGB 16, 12, 09
-	RGB 00, 00, 00
-; $36
-	RGB 31, 31, 31
-	RGB 15, 28, 26
-	RGB 12, 22, 26
-	RGB 03, 16, 14
-; $37
-	RGB 31, 31, 31
-	RGB 15, 28, 26
-	RGB 23, 24, 24
-	RGB 00, 00, 00
-; $38
-	RGB 31, 31, 24
-	RGB 07, 27, 19
-	RGB 26, 20, 10
-	RGB 19, 12, 08
-; $39
-	RGB 31, 31, 31
-	RGB 31, 28, 14
-	RGB 31, 13, 31
-	RGB 00, 00, 00
-; $3a
-	RGB 31, 31, 31
-	RGB 16, 18, 21
-	RGB 10, 12, 18
-	RGB 00, 00, 00
-; $3b
-	RGB 31, 31, 31
-	RGB 23, 21, 16
-	RGB 12, 12, 10
-	RGB 00, 00, 00
-; $3c
-	RGB 31, 31, 31
-	RGB 31, 14, 00
-	RGB 07, 11, 15
-	RGB 00, 00, 00
-; $3d
-	RGB 31, 31, 31
-	RGB 26, 21, 22
-	RGB 26, 10, 06
-	RGB 00, 00, 00
-; $3e
-	RGB 31, 31, 31
-	RGB 30, 27, 04
-	RGB 24, 20, 11
-	RGB 00, 00, 00
-; $3f
-	RGB 31, 31, 31
-	RGB 31, 13, 25
-	RGB 24, 20, 11
-	RGB 00, 00, 00
-; $40
-	RGB 31, 31, 31
-	RGB 16, 19, 29
-	RGB 24, 20, 11
-	RGB 00, 00, 00
-; $41
-	RGB 31, 31, 31
-	RGB 30, 22, 24
-	RGB 18, 18, 18
-	RGB 16, 10, 07
-; $42
-	RGB 31, 31, 31
-	RGB 21, 25, 29
-	RGB 18, 18, 18
-	RGB 16, 10, 07
-; $43
-	RGB 31, 31, 31
-	RGB 20, 26, 16
-	RGB 18, 18, 18
-	RGB 16, 10, 07
-; $44
-	RGB 31, 31, 31
-	RGB 31, 28, 14
-	RGB 18, 18, 18
-	RGB 16, 10, 07
-; $45
-	RGB 31, 31, 31
-	RGB 18, 18, 18
-	RGB 26, 10, 06
-	RGB 00, 00, 00
-; $46
-	RGB 31, 31, 31
-	RGB 30, 22, 24
-	RGB 28, 15, 21
-	RGB 00, 00, 00
-; $47
-	RGB 31, 31, 31
-	RGB 26, 20, 00
-	RGB 16, 19, 29
-	RGB 00, 00, 00
-; $48
-	RGB 31, 31, 31
-	RGB 16, 02, 30
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $49
-	RGB 31, 31, 31
-	RGB 16, 13, 04
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $4a
-	RGB 31, 31, 31
-	RGB 28, 04, 02
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $4b
-	RGB 31, 31, 31
-	RGB 18, 23, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-; $4c
-	RGB 31, 31, 31
-	RGB 24, 20, 11
-	RGB 18, 13, 11
-	RGB 00, 00, 00
-; $4d
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 25, 30, 00
-	RGB 25, 30, 00
-; $4e
-	RGB 00, 00, 00
-	RGB 08, 11, 11
-	RGB 21, 21, 21
-	RGB 31, 31, 31
--- a/data/palettes/sgb_border.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB 24, 06, 06
-	RGB 24, 24, 26
-	RGB 14, 15, 20
-	RGB 04, 07, 10
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 18, 24, 18
-	RGB 31, 26, 15
-	RGB 26, 19, 10
-	RGB 12, 07, 05
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 18, 06, 31
-	RGB 31, 31, 29
-	RGB 31, 12, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 12, 31, 06
-	RGB 22, 26, 30
-	RGB 16, 17, 21
-	RGB 00, 03, 00
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
-	RGB 31, 31, 25
--- a/data/palettes/slot_machine.pal
+++ /dev/null
@@ -1,79 +1,0 @@
-	RGB 31, 31, 31
-	RGB 24, 25, 28
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 30, 10, 06
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 31, 00
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 15, 31
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 15, 21, 31
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 11
-	RGB 31, 31, 06
-	RGB 24, 24, 09
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 16, 19, 29
-	RGB 25, 22, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 30, 10, 06
-	RGB 31, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 12, 25, 01
-	RGB 05, 14, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 12, 25, 01
-	RGB 30, 10, 06
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 06
-	RGB 20, 15, 03
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 06
-	RGB 15, 21, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 06
-	RGB 20, 15, 03
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 24, 21
-	RGB 31, 13, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
--- a/data/palettes/tilesets/battle_tower.pal
+++ /dev/null
@@ -1,40 +1,0 @@
-; 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
-	RGB 00, 00, 00
--- a/data/palettes/tilesets/house_1.pal
+++ /dev/null
@@ -1,40 +1,0 @@
-; 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
-	RGB 00, 00, 00
--- a/data/palettes/tilesets/ice_path.pal
+++ /dev/null
@@ -1,40 +1,0 @@
-; 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
-	RGB 00, 00, 00
--- a/data/palettes/tilesets/pokecom_center.pal
+++ /dev/null
@@ -1,40 +1,0 @@
-; 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
-	RGB 00, 00, 00
--- a/data/palettes/tilesets/radio_tower.pal
+++ /dev/null
@@ -1,39 +1,0 @@
-	RGB 27, 31, 27
-	RGB 21, 21, 21
-	RGB 13, 13, 13
-	RGB 07, 07, 07
-
-	RGB 27, 31, 27
-	RGB 31, 19, 24
-	RGB 30, 10, 06
-	RGB 07, 07, 07
-
-	RGB 08, 12, 31
-	RGB 12, 25, 01
-	RGB 05, 14, 00
-	RGB 07, 07, 07
-
-	RGB 31, 31, 31
-	RGB 08, 12, 31
-	RGB 01, 04, 31
-	RGB 07, 07, 07
-
-	RGB 27, 31, 27
-	RGB 12, 25, 01
-	RGB 05, 14, 00
-	RGB 07, 07, 07
-
-	RGB 27, 31, 27
-	RGB 24, 18, 07
-	RGB 20, 15, 03
-	RGB 07, 07, 07
-
-	RGB 27, 31, 27
-	RGB 15, 31, 31
-	RGB 05, 17, 31
-	RGB 07, 07, 07
-
-	RGB 31, 31, 16
-	RGB 31, 31, 16
-	RGB 14, 09, 00
-	RGB 00, 00, 00
--- a/data/palettes/title.pal
+++ /dev/null
@@ -1,81 +1,0 @@
-; BG
-	RGB 00, 00, 00
-	RGB 19, 00, 00
-	RGB 15, 08, 31
-	RGB 15, 08, 31
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 15, 16, 31
-	RGB 31, 01, 13
-
-	RGB 00, 00, 00
-	RGB 07, 07, 07
-	RGB 31, 31, 31
-	RGB 02, 03, 30
-
-	RGB 00, 00, 00
-	RGB 13, 13, 13
-	RGB 31, 31, 18
-	RGB 02, 03, 30
-
-	RGB 00, 00, 00
-	RGB 19, 19, 19
-	RGB 29, 28, 12
-	RGB 02, 03, 30
-
-	RGB 00, 00, 00
-	RGB 25, 25, 25
-	RGB 28, 25, 06
-	RGB 02, 03, 30
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 26, 21, 00
-	RGB 02, 03, 30
-
-	RGB 00, 00, 00
-	RGB 11, 11, 19
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-
-; OBJ
-	RGB 00, 00, 00
-	RGB 10, 00, 15
-	RGB 17, 05, 22
-	RGB 19, 09, 31
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
--- a/data/palettes/town_map.asm
+++ /dev/null
@@ -1,34 +1,0 @@
-	const_def
-	const PAL_TOWNMAP_BORDER   ; 0
-	const PAL_TOWNMAP_EARTH    ; 1
-	const PAL_TOWNMAP_MOUNTAIN ; 2
-	const PAL_TOWNMAP_CITY     ; 3
-	const PAL_TOWNMAP_POI      ; 4
-	const PAL_TOWNMAP_POI_MTN  ; 5
-
-townmappals: MACRO
-rept _NARG / 2
-	dn PAL_TOWNMAP_\2, PAL_TOWNMAP_\1
-	shift
-	shift
-endr
-ENDM
-
-; gfx/pokegear/town_map.png
-	townmappals EARTH,    EARTH,    EARTH,    MOUNTAIN, MOUNTAIN, MOUNTAIN
-	townmappals BORDER,   BORDER,   EARTH,    EARTH,    CITY,     EARTH
-	townmappals POI,      POI_MTN,  POI,      POI_MTN,  EARTH,    EARTH
-	townmappals EARTH,    MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER,   BORDER
-	townmappals EARTH,    EARTH,    BORDER,   EARTH,    EARTH,    BORDER
-	townmappals BORDER,   BORDER,   EARTH,    EARTH,    EARTH,    MOUNTAIN
-	townmappals MOUNTAIN, MOUNTAIN, BORDER,   BORDER,   BORDER,   BORDER
-	townmappals BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER
-; gfx/pokegear/pokegear.png
-	townmappals BORDER,   BORDER,   BORDER,   BORDER,   POI,      POI
-	townmappals POI,      BORDER,   BORDER,   BORDER,   BORDER,   BORDER
-	townmappals BORDER,   BORDER,   BORDER,   BORDER,   CITY,     CITY
-	townmappals CITY,     CITY,     CITY,     CITY,     CITY,     CITY
-	townmappals CITY,     CITY,     CITY,     CITY,     CITY,     CITY
-	townmappals CITY,     BORDER,   CITY,     CITY,     CITY,     CITY
-	townmappals CITY,     CITY,     CITY,     CITY,     BORDER,   BORDER
-	townmappals BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER 
--- a/data/palettes/trade_room.pal
+++ /dev/null
@@ -1,29 +1,0 @@
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 31, 00, 00
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 15, 23, 30
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 16, 16, 16
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 25, 07, 04
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 03, 22, 08
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 07, 09, 31
-	RGB 29, 28, 09
-	RGB 31, 31, 31
--- a/data/palettes/unknown/49757.pal
+++ /dev/null
@@ -1,39 +1,0 @@
-	RGB 31, 31, 63
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 31, 31, 63
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 31, 00, 00
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 30, 16, 26
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 16, 16, 16
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 31, 12, 12
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 07, 08, 31
-	RGB 31, 31, 31
-
-	RGB 04, 02, 15
-	RGB 21, 00, 21
-	RGB 29, 28, 09
-	RGB 31, 31, 31
--- a/data/palettes/unknown/4985a.asm
+++ /dev/null
@@ -1,15 +1,0 @@
-	db $ab, $03, $57, $24, $ac, $0e, $13, $32
-
-	db $be, $30, $5b, $4c, $47, $60, $ed, $f2
-
-	db $ab, $03, $55, $26, $aa, $0a, $13, $3a
-
-	db $be, $28, $33, $24, $6e, $71, $df, $b0
-
-	db $a8, $00, $e5, $e0, $9a, $fc, $f4, $2c
-
-	db $fe, $4c, $a3, $5e, $c6, $3a, $ab, $4d
-
-	db $a8, $00, $b5, $b0, $de, $e8, $fc, $1c
-
-	db $ba, $66, $f7, $0e, $ba, $5e, $43, $bd
--- a/data/palettes/unknown/b6f1.pal
+++ /dev/null
@@ -1,24 +1,0 @@
-	RGB 31, 31, 31
-	RGB 18, 23, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 22, 00, 31
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 31, 00, 00
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 25, 22, 00
-	RGB 15, 20, 31
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 23, 26, 31
-	RGB 18, 23, 31
-	RGB 00, 00, 00
--- a/data/palettes/unknown/b719.pal
+++ /dev/null
@@ -1,9 +1,0 @@
-	RGB 31, 31, 31
-	RGB 07, 06, 03
-	RGB 07, 06, 03
-	RGB 07, 06, 03
-
-	RGB 31, 31, 31
-	RGB 31, 31, 00
-	RGB 26, 22, 00
-	RGB 00, 00, 00
--- a/data/palettes/unknown/b789.pal
+++ /dev/null
@@ -1,19 +1,0 @@
-	RGB 31, 31, 31
-	RGB 30, 22, 24
-	RGB 18, 18, 18
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 10, 11, 31
-	RGB 18, 18, 18
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 12, 31, 11
-	RGB 18, 18, 18
-	RGB 00, 00, 00
-
-	RGB 31, 31, 31
-	RGB 29, 26, 05
-	RGB 18, 18, 18
-	RGB 00, 00, 00
--- a/data/palettes/unused_title/bg.pal
+++ /dev/null
@@ -1,39 +1,0 @@
-	RGB 00, 00, 00
-	RGB 25, 15, 28
-	RGB 22, 11, 28
-	RGB 19, 08, 26
-
-	RGB 00, 00, 00
-	RGB 17, 07, 22
-	RGB 13, 07, 16
-	RGB 19, 08, 26
-
-	RGB 25, 15, 28
-	RGB 22, 11, 28
-	RGB 19, 08, 26
-	RGB 17, 07, 22
-
-	RGB 22, 11, 28
-	RGB 19, 08, 26
-	RGB 17, 07, 22
-	RGB 13, 07, 16
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 12, 12, 12
-
-	RGB 00, 00, 00
-	RGB 01, 11, 23
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 00, 00, 00
-	RGB 22, 10, 31
-	RGB 19, 08, 26
-	RGB 17, 07, 22
--- a/data/palettes/unused_title/ob.pal
+++ /dev/null
@@ -1,319 +1,0 @@
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 12, 12, 12
-
-	RGB 00, 00, 00
-	RGB 01, 11, 23
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 00, 00, 00
-	RGB 31, 22, 00
-	RGB 31, 27, 00
-	RGB 31, 31, 00
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 12, 12, 12
-
-	RGB 00, 00, 00
-	RGB 01, 11, 23
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 16, 31, 00
-	RGB 22, 31, 00
-	RGB 27, 31, 00
-	RGB 31, 31, 00
-
-	RGB 31, 00, 18
-	RGB 31, 31, 31
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-	RGB 20, 20, 20
-	RGB 12, 12, 12
-
-	RGB 00, 00, 00
-	RGB 01, 11, 23
-	RGB 16, 16, 24
-	RGB 02, 13, 21
-
-	RGB 16, 31, 00
-	RGB 22, 31, 00
-	RGB 27, 31, 00
-	RGB 31, 31, 00
-
-	RGB 24, 18, 31
-	RGB 31, 31, 00
-	RGB 31, 31, 01
-	RGB 31, 31, 03
-
-	RGB 31, 31, 05
-	RGB 31, 31, 08
-	RGB 31, 31, 10
-	RGB 31, 31, 12
-
-	RGB 31, 31, 14
-	RGB 31, 31, 16
-	RGB 31, 31, 18
-	RGB 31, 31, 20
-
-	RGB 31, 31, 22
-	RGB 31, 31, 25
-	RGB 31, 31, 27
-	RGB 31, 31, 29
-
-	RGB 24, 06, 06
-	RGB 01, 01, 01
-	RGB 03, 03, 03
-	RGB 05, 05, 05
-
-	RGB 08, 08, 08
-	RGB 10, 10, 10
-	RGB 12, 12, 12
-	RGB 14, 14, 14
-
-	RGB 16, 16, 16
-	RGB 18, 18, 18
-	RGB 20, 20, 20
-	RGB 22, 22, 22
-
-	RGB 25, 25, 25
-	RGB 27, 27, 27
-	RGB 29, 29, 29
-	RGB 31, 31, 31
-
-	RGB 18, 24, 18
-	RGB 31, 29, 01
-	RGB 31, 27, 03
-	RGB 31, 25, 05
-
-	RGB 31, 22, 08
-	RGB 31, 20, 10
-	RGB 31, 18, 12
-	RGB 31, 16, 14
-
-	RGB 31, 14, 16
-	RGB 31, 12, 18
-	RGB 31, 10, 20
-	RGB 31, 08, 22
-
-	RGB 31, 05, 25
-	RGB 31, 03, 27
-	RGB 31, 01, 29
-	RGB 31, 00, 31
-
-	RGB 18, 06, 31
-	RGB 00, 31, 31
-	RGB 00, 31, 29
-	RGB 00, 31, 27
-
-	RGB 00, 31, 25
-	RGB 00, 31, 22
-	RGB 00, 31, 20
-	RGB 00, 31, 18
-
-	RGB 00, 31, 16
-	RGB 00, 31, 14
-	RGB 00, 31, 12
-	RGB 00, 31, 10
-
-	RGB 00, 31, 08
-	RGB 00, 31, 05
-	RGB 00, 31, 03
-	RGB 00, 31, 01
-
-	RGB 12, 31, 06
-	RGB 00, 00, 31
-	RGB 00, 01, 31
-	RGB 00, 03, 31
-
-	RGB 00, 05, 31
-	RGB 00, 08, 31
-	RGB 00, 10, 31
-	RGB 00, 12, 31
-
-	RGB 00, 14, 31
-	RGB 00, 16, 31
-	RGB 00, 18, 31
-	RGB 00, 20, 31
-
-	RGB 00, 22, 31
-	RGB 00, 25, 31
-	RGB 00, 27, 31
-	RGB 00, 29, 31
-
-	RGB 00, 00, 00
-	RGB 06, 00, 04
-	RGB 19, 02, 09
-	RGB 28, 04, 11
-
-	RGB 31, 07, 16
-	RGB 31, 17, 23
-	RGB 31, 26, 30
-	RGB 07, 05, 10
-
-	RGB 14, 10, 18
-	RGB 20, 20, 25
-	RGB 25, 27, 31
-	RGB 09, 05, 06
-
-	RGB 23, 16, 13
-	RGB 30, 23, 22
-	RGB 31, 28, 28
-	RGB 31, 31, 31
-
-	RGB 06, 31, 31
-	RGB 04, 00, 04
-	RGB 11, 02, 04
-	RGB 17, 02, 04
-
-	RGB 24, 05, 04
-	RGB 28, 07, 04
-	RGB 31, 11, 04
-	RGB 02, 01, 15
-
-	RGB 04, 11, 22
-	RGB 12, 25, 25
-	RGB 20, 31, 31
-	RGB 09, 04, 03
-
-	RGB 22, 11, 08
-	RGB 27, 19, 16
-	RGB 30, 28, 26
-	RGB 31, 31, 31
-
-	RGB 06, 18, 06
-	RGB 04, 04, 02
-	RGB 07, 07, 02
-	RGB 18, 18, 04
-
-	RGB 24, 24, 06
-	RGB 27, 27, 11
-	RGB 31, 31, 20
-	RGB 02, 03, 10
-
-	RGB 04, 05, 13
-	RGB 06, 10, 25
-	RGB 08, 15, 31
-	RGB 04, 00, 06
-
-	RGB 11, 07, 14
-	RGB 21, 16, 23
-	RGB 29, 26, 31
-	RGB 31, 31, 31
-
-	RGB 06, 00, 18
-	RGB 00, 04, 03
-	RGB 02, 09, 05
-	RGB 11, 19, 07
-
-	RGB 16, 24, 08
-	RGB 22, 31, 09
-	RGB 24, 31, 18
-	RGB 03, 01, 03
-
-	RGB 10, 04, 10
-	RGB 20, 08, 20
-	RGB 31, 17, 31
-	RGB 01, 03, 06
-
-	RGB 05, 09, 10
-	RGB 15, 21, 21
-	RGB 23, 25, 25
-	RGB 31, 31, 31
-
-	RGB 00, 18, 31
-	RGB 00, 05, 07
-	RGB 00, 08, 13
-	RGB 00, 12, 17
-
-	RGB 01, 20, 24
-	RGB 04, 27, 31
-	RGB 14, 31, 31
-	RGB 04, 02, 02
-
-	RGB 15, 01, 03
-	RGB 26, 04, 07
-	RGB 31, 13, 16
-	RGB 00, 05, 02
-
-	RGB 01, 11, 03
-	RGB 06, 21, 06
-	RGB 13, 31, 16
-	RGB 31, 31, 31
-
-	RGB 00, 06, 06
-	RGB 00, 01, 08
-	RGB 00, 05, 14
-	RGB 00, 08, 19
-
-	RGB 02, 14, 26
-	RGB 04, 21, 31
-	RGB 06, 26, 31
-	RGB 13, 00, 00
-
-	RGB 27, 07, 00
-	RGB 31, 17, 05
-	RGB 31, 25, 16
-	RGB 02, 04, 00
-
-	RGB 07, 11, 03
-	RGB 17, 19, 05
-	RGB 27, 31, 16
-	RGB 31, 31, 31
-
-	RGB 02, 00, 00
-	RGB 04, 01, 06
-	RGB 11, 03, 14
-	RGB 16, 04, 19
-
-	RGB 20, 07, 22
-	RGB 26, 12, 27
-	RGB 26, 20, 31
-	RGB 04, 07, 00
-
-	RGB 16, 20, 07
-	RGB 24, 28, 15
-	RGB 29, 31, 24
-	RGB 05, 02, 02
-
-	RGB 15, 04, 02
-	RGB 24, 11, 10
-	RGB 31, 22, 20
-	RGB 31, 31, 31
-
-	RGB 00, 00, 14
-	RGB 12, 00, 00
-	RGB 27, 05, 00
-	RGB 31, 15, 05
-
-	RGB 31, 26, 13
-	RGB 31, 30, 21
-	RGB 05, 07, 16
-	RGB 04, 16, 20
-
-	RGB 04, 24, 26
-	RGB 08, 31, 31
-	RGB 23, 31, 31
-	RGB 00, 00, 00
-
-	RGB 05, 05, 05
-	RGB 17, 17, 15
-	RGB 28, 28, 24
-	RGB 31, 31, 31
--- /dev/null
+++ b/data/party_menu_qualities.asm
@@ -1,0 +1,41 @@
+; WritePartyMenuTilemap.Jumptable indexes (see engine/party_menu.asm)
+	const_def
+	const PARTYMENUQUALITY_NICKNAMES
+	const PARTYMENUQUALITY_HP_BAR
+	const PARTYMENUQUALITY_HP_DIGITS
+	const PARTYMENUQUALITY_LEVEL
+	const PARTYMENUQUALITY_STATUS
+	const PARTYMENUQUALITY_TMHM_COMPAT
+	const PARTYMENUQUALITY_EVO_STONE_COMPAT
+	const PARTYMENUQUALITY_GENDER
+	const PARTYMENUQUALITY_MOBILE_SELECTION
+
+partymenuqualities: MACRO
+rept _NARG
+	db PARTYMENUQUALITY_\1
+shift
+endr
+	db -1 ; end
+ENDM
+
+
+PartyMenuQualityPointers: ; 503b2
+; entries correspond to PARTYMENUACTION_* constants
+	dw .Default  ; PARTYMENUACTION_CHOOSE_POKEMON
+	dw .Default  ; PARTYMENUACTION_HEALING_ITEM
+	dw .Default  ; PARTYMENUACTION_SWITCH
+	dw .TMHM     ; PARTYMENUACTION_TEACH_TMHM
+	dw .Default  ; PARTYMENUACTION_MOVE
+	dw .EvoStone ; PARTYMENUACTION_EVO_STONE
+	dw .Gender   ; PARTYMENUACTION_GIVE_MON
+	dw .Gender   ; PARTYMENUACTION_GIVE_MON_FEMALE
+	dw .Default  ; PARTYMENUACTION_GIVE_ITEM
+	dw .Mobile   ; PARTYMENUACTION_MOBILE
+; 503c6
+
+.Default:  partymenuqualities NICKNAMES, HP_BAR, HP_DIGITS, LEVEL, STATUS
+.TMHM:     partymenuqualities NICKNAMES, TMHM_COMPAT,       LEVEL, STATUS
+.EvoStone: partymenuqualities NICKNAMES, EVO_STONE_COMPAT,  LEVEL, STATUS
+.Gender:   partymenuqualities NICKNAMES, GENDER,            LEVEL, STATUS
+.Mobile:   partymenuqualities NICKNAMES, MOBILE_SELECTION,  LEVEL, STATUS
+; 503e0
--- /dev/null
+++ b/data/phone/permanent_numbers.asm
@@ -1,0 +1,5 @@
+PermanentNumbers: ; 90066
+	db PHONECONTACT_MOM
+	db PHONECONTACT_ELM
+	db -1 ; end
+; 90069
--- /dev/null
+++ b/data/phone/phone_contacts.asm
@@ -1,0 +1,51 @@
+phone: MACRO
+; trainer class, trainer id, map, time 1, script 1, time 2, 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, ANYTIME, MomPhoneScript,      0,       UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB,    0,       UnusedPhoneScript,   0,       UnusedPhoneScript
+	phone TRAINER_NONE, PHONECONTACT_BILL,  N_A,            ANYTIME, BillPhoneScript1,    0,       BillPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_ELM,   ELMS_LAB,       ANYTIME, ElmPhoneScript1,     0,       ElmPhoneScript2
+	phone SCHOOLBOY,    JACK1,              NATIONAL_PARK,  ANYTIME, JackPhoneScript1,    ANYTIME, JackPhoneScript2
+	phone POKEFANF,     BEVERLY1,           NATIONAL_PARK,  ANYTIME, BeverlyPhoneScript1, ANYTIME, BeverlyPhoneScript2
+	phone SAILOR,       HUEY1,              OLIVINE_LIGHTHOUSE_2F, ANYTIME, HueyPhoneScript1, ANYTIME, 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,       ANYTIME, GavenPhoneScript1,   ANYTIME, GavenPhoneScript2
+	phone COOLTRAINERF, BETH1,              ROUTE_26,       ANYTIME, BethPhoneScript1,    ANYTIME, BethPhoneScript2
+	phone BIRD_KEEPER,  JOSE2,              ROUTE_27,       ANYTIME, JosePhoneScript1,    ANYTIME, JosePhoneScript2
+	phone COOLTRAINERF, REENA1,             ROUTE_27,       ANYTIME, ReenaPhoneScript1,   ANYTIME, ReenaPhoneScript2
+	phone YOUNGSTER,    JOEY1,              ROUTE_30,       ANYTIME, JoeyPhoneScript1,    ANYTIME, JoeyPhoneScript2
+	phone BUG_CATCHER,  WADE1,              ROUTE_31,       ANYTIME, WadePhoneScript1,    ANYTIME, WadePhoneScript2
+	phone FISHER,       RALPH1,             ROUTE_32,       ANYTIME, RalphPhoneScript1,   ANYTIME, RalphPhoneScript2
+	phone PICNICKER,    LIZ1,               ROUTE_32,       ANYTIME, LizPhoneScript1,     ANYTIME, LizPhoneScript2
+	phone HIKER,        ANTHONY2,           ROUTE_33,       ANYTIME, AnthonyPhoneScript1, ANYTIME, AnthonyPhoneScript2
+	phone CAMPER,       TODD1,              ROUTE_34,       ANYTIME, ToddPhoneScript1,    ANYTIME, ToddPhoneScript2
+	phone PICNICKER,    GINA1,              ROUTE_34,       ANYTIME, GinaPhoneScript1,    ANYTIME, GinaPhoneScript2
+	phone JUGGLER,      IRWIN1,             ROUTE_35,       ANYTIME, IrwinPhoneScript1,   ANYTIME, IrwinPhoneScript2
+	phone BUG_CATCHER,  ARNIE1,             ROUTE_35,       ANYTIME, ArniePhoneScript1,   ANYTIME, ArniePhoneScript2
+	phone SCHOOLBOY,    ALAN1,              ROUTE_36,       ANYTIME, AlanPhoneScript1,    ANYTIME, AlanPhoneScript2
+	phone TRAINER_NONE, PHONE_00,           N_A,            0,       UnusedPhoneScript,   0,       UnusedPhoneScript
+	phone LASS,         DANA1,              ROUTE_38,       ANYTIME, DanaPhoneScript1,    ANYTIME, DanaPhoneScript2
+	phone SCHOOLBOY,    CHAD1,              ROUTE_38,       ANYTIME, ChadPhoneScript1,    ANYTIME, ChadPhoneScript2
+	phone POKEFANM,     DEREK1,             ROUTE_39,       ANYTIME, DerekPhoneScript1,   ANYTIME, DerekPhoneScript2
+	phone FISHER,       TULLY1,             ROUTE_42,       ANYTIME, TullyPhoneScript1,   ANYTIME, TullyPhoneScript2
+	phone POKEMANIAC,   BRENT1,             ROUTE_43,       ANYTIME, BrentPhoneScript1,   ANYTIME, BrentPhoneScript2
+	phone PICNICKER,    TIFFANY3,           ROUTE_43,       ANYTIME, TiffanyPhoneScript1, ANYTIME, TiffanyPhoneScript2
+	phone BIRD_KEEPER,  VANCE1,             ROUTE_44,       ANYTIME, VancePhoneScript1,   ANYTIME, VancePhoneScript2
+	phone FISHER,       WILTON1,            ROUTE_44,       ANYTIME, WiltonPhoneScript1,  ANYTIME, WiltonPhoneScript2
+	phone BLACKBELT_T,  KENJI3,             ROUTE_45,       ANYTIME, KenjiPhoneScript1,   ANYTIME, KenjiPhoneScript2
+	phone HIKER,        PARRY1,             ROUTE_45,       ANYTIME, ParryPhoneScript1,   ANYTIME, ParryPhoneScript2
+	phone PICNICKER,    ERIN1,              ROUTE_46,       ANYTIME, ErinPhoneScript1,    ANYTIME, ErinPhoneScript2
+	phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, ANYTIME, BuenaPhoneScript1, ANYTIME, BuenaPhoneScript2
+; 90627
--- /dev/null
+++ b/data/phone/special_calls.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
--- /dev/null
+++ b/data/phone/text/alan_overworld.asm
@@ -1,0 +1,71 @@
+AlanAskNumber1Text:
+	text "Reading textbooks"
+	line "is worthwhile"
+	cont "every so often."
+
+	para "When I'm reading"
+	line "and walking, I"
+	cont "have to look down."
+
+	para "So I notice items"
+	line "on the ground."
+
+	para "Next time I find"
+	line "something, I'll"
+	cont "give it to you."
+
+	para "May I have your"
+	line "phone number?"
+	done
+
+AlanAskNumber2Text:
+	text "If I find some-"
+	line "thing, it's yours."
+
+	para "So may I have your"
+	line "phone number?"
+	done
+
+AlanNumberAcceptedText:
+	text "I'll call you as"
+	line "soon as I find"
+
+	para "something. You can"
+	line "count on it!"
+	done
+
+AlanNumberDeclinedText:
+	text "Oh… I thought it"
+	line "would be a good"
+
+	para "break to call you"
+	line "when I'm studying…"
+	done
+
+AlanPhoneFullText:
+	text "There's no room"
+	line "for my number."
+	done
+
+AlanRematchText:
+	text "I waited around"
+	line "for you!"
+
+	para "I'm thoroughly"
+	line "prepared today!"
+	done
+
+AlanGiftText:
+	text "This, this! This"
+	line "is yours! Ta-da!"
+	done
+
+AlanPackFullText:
+	text "Whoops!"
+
+	para "You can't carry"
+	line "any more items!"
+
+	para "I'll hold it until"
+	line "next time."
+	done
--- /dev/null
+++ b/data/phone/text/anthony_overworld.asm
@@ -1,0 +1,52 @@
+AnthonyAskNumber1Text:
+	text "By the way, I'm a"
+	line "HIKER, so I often"
+
+	para "go to mountains"
+	line "and caves."
+
+	para "I occasionally see"
+	line "rare #MON."
+
+	para "I could call you"
+	line "the next time I"
+	cont "see one."
+
+	para "Feel like swapping"
+	line "phone numbers?"
+	done
+
+AnthonyAskNumber2Text:
+	text "I could call you"
+	line "when I see some"
+	cont "rare #MON."
+
+	para "Feel like swapping"
+	line "phone numbers?"
+	done
+
+AnthonyNumberAcceptedText:
+	text "Be patient. I'll"
+	line "find some rare"
+	cont "#MON for you!"
+	done
+
+AnthonyNumberDeclinedText:
+	text "You're cold. I may"
+	line "as well head to"
+	cont "the mountains…"
+	done
+
+AnthonyPhoneFullText:
+	text "Your phone's full."
+
+	para "It can't register"
+	line "my phone number."
+	done
+
+AnthonyRematchText:
+	text "All righty, then!"
+
+	para "My #MON and I"
+	line "are raring to go!"
+	done
--- /dev/null
+++ b/data/phone/text/arnie_overworld.asm
@@ -1,0 +1,59 @@
+ArnieAskNumber1Text:
+	text "Do you get the"
+	line "feeling that there"
+
+	para "are more rare"
+	line "#MON around?"
+
+	para "I'm positive there"
+	line "are, so I look all"
+	cont "the time."
+
+	para "If I find one, I"
+	line "want to share the"
+
+	para "good news with"
+	line "everyone I know."
+
+	para "I know! Give me"
+	line "your phone number."
+	done
+
+ArnieAskNumber2Text:
+	text "I want to let"
+	line "people know if I"
+	cont "see rare #MON."
+
+	para "Please give me"
+	line "your phone number!"
+	done
+
+ArnieNumberAcceptedText:
+	text "If I spot any"
+	line "awesome #MON,"
+
+	para "I'll be sure to"
+	line "give you a call!"
+	done
+
+ArnieNumberDeclinedText:
+	text "Aww! I want to"
+	line "tell someone about"
+	cont "my discoveries!"
+	done
+
+ArniePhoneFullText:
+	text "There's no space"
+	line "for my number."
+
+	para "If you make room,"
+	line "register me!"
+	done
+
+ArnieRematchText:
+	text "It's my turn to"
+	line "win now!"
+
+	para "I've turned over a"
+	line "new leaf!"
+	done
--- /dev/null
+++ b/data/phone/text/beth_overworld.asm
@@ -1,0 +1,56 @@
+BethAskNumber1Text:
+	text "It's been a while"
+	line "since I lost…"
+
+	para "You're very good"
+	line "at battling."
+
+	para "We should battle"
+	line "again sometime."
+
+	para "By challenging a"
+	line "tough trainer like"
+
+	para "you, I think I can"
+	line "get better too."
+
+	para "So how about it?"
+
+	para "Would you give me"
+	line "your phone number?"
+	done
+
+BethAskNumber2Text:
+	text "By challenging a"
+	line "tough trainer like"
+
+	para "you, I think I can"
+	line "get better too."
+
+	para "So how about it?"
+
+	para "Would you give me"
+	line "your phone number?"
+	done
+
+BethNumberAcceptedText:
+	text "Let's battle again"
+	line "sometime!"
+	done
+
+BethNumberDeclinedText:
+	text "That's too bad…"
+
+	para "Let me know if you"
+	line "change your mind."
+	done
+
+BethPhoneFullText:
+	text "Oh no. Your phone"
+	line "is out of memory."
+	done
+
+BethRematchText:
+	text "You sure kept me"
+	line "waiting! Let's go!"
+	done
--- /dev/null
+++ b/data/phone/text/beverly_overworld.asm
@@ -1,0 +1,60 @@
+BeverlyAskNumber1Text:
+	text "Your MARILL is so"
+	line "cute and adorable!"
+
+	para "You love #MON"
+	line "just like I do!"
+
+	para "Want to trade"
+	line "phone numbers?"
+
+	para "Let's chat! It'll"
+	line "be so much fun!"
+	done
+
+BeverlyAskNumber2Text:
+	text "Your MARILL is so"
+	line "cute and adorable!"
+
+	para "We should chat, it"
+	line "will be fun."
+
+	para "Can I have your"
+	line "phone number?"
+	done
+
+BeverlyNumberAcceptedText:
+	text "To be honest, I"
+	line "want a MARILL."
+
+	para "But I make do with"
+	line "my cute SNUBBULL."
+	done
+
+BeverlyNumberDeclinedText:
+	text "Oh… That's"
+	line "disappointing…"
+
+	para "Goodbye, MARILL…"
+	done
+
+BeverlyPhoneFullText:
+	text "Oh? Your phone's"
+	line "memory is full."
+	done
+
+BeverlyGiftText:
+	text "Oh? <PLAYER>? "
+	line "I waited here for"
+
+	para "you. I brought you"
+	line "a little gift."
+	done
+
+BeverlyPackFullText:
+	text "Oh?"
+	line "You have no room."
+
+	para "Please come back"
+	line "for it later."
+	done
--- /dev/null
+++ b/data/phone/text/bill.asm
@@ -1,0 +1,101 @@
+BillPhoneMornGreetingText: ; 0x1b4427
+	text "Good morning!"
+
+	para "This is the #-"
+	line "MON STORAGE SYSTEM"
+
+	para "ADMINISTRATION"
+	line "SERVICE."
+	done
+
+BillPhoneDayGreetingText: ; 0x1b4470
+	text "Good day!"
+
+	para "This is the #-"
+	line "MON STORAGE SYSTEM"
+
+	para "ADMINISTRATION"
+	line "SERVICE."
+	done
+
+BillPhoneNiteGreetingText: ; 0x1b44b5
+	text "Good evening!"
+
+	para "This is the #-"
+	line "MON STORAGE SYSTEM"
+
+	para "ADMINISTRATION"
+	line "SERVICE."
+	done
+
+BillPhoneGeneriText: ; 0x1b44fe
+	text "Who's calling?"
+
+	para "<PLAY_G>, is it?"
+	line "Hang on a sec…"
+
+	para $56
+	line $56
+	done
+
+BillPhoneNotFullText: ; 0x1b452a
+	text "Thanks for"
+	line "waiting!"
+
+	para "<PLAY_G>, your BOX"
+	line "has room for @"
+	text_from_ram StringBuffer3
+	text_start
+	cont "more #MON."
+
+	para "Get out there and"
+	line "fill it up!"
+	done
+
+BillPhoneNearlyFullText: ; 0x1b4587
+	text "Thanks for"
+	line "waiting!"
+
+	para "<PLAY_G>, your BOX"
+	line "has room for only"
+	cont "@"
+	text_from_ram StringBuffer3
+	text " more #MON."
+
+	para "Maybe you should"
+	line "switch your BOX."
+	done
+
+BillPhoneFullText: ; 0x1b45ed
+	text "Thanks for"
+	line "waiting!"
+
+	para "<PLAY_G>, your BOX"
+	line "is full!"
+
+	para "You'll have to"
+	line "switch BOXES if"
+
+	para "you want to catch"
+	line "more #MON."
+	done
+
+BillPhoneNewlyFullText: ; 0x1b4652
+	text "Hi, <PLAY_G>?"
+	line "It's me, BILL!"
+
+	para "Thanks for using"
+	line "my STORAGE SYSTEM."
+
+	para "That last #MON"
+	line "you sent filled"
+	cont "your BOX up."
+
+	para "You'll have to"
+	line "switch BOXES if"
+
+	para "you want to catch"
+	line "more #MON."
+
+	para "Bye now!"
+	done
--- /dev/null
+++ b/data/phone/text/brent_overworld.asm
@@ -1,0 +1,62 @@
+BrentAskNumber1Text:
+	text "By the way, you're"
+	line "a #MANIAC…"
+
+	para "I can tell."
+	line "Yes, you are."
+
+	para "But your knowledge"
+	line "is shallow still!"
+
+	para "Do you know BILL?"
+	line "He's an incredible"
+
+	para "#MANIAC."
+	line "I revere him."
+
+	para "I'll teach you all"
+	line "I know about BILL,"
+
+	para "so leave me your"
+	line "phone number."
+	done
+
+BrentAskNumber2Text:
+	text "I'll teach you all"
+	line "I know about BILL,"
+
+	para "so leave me your"
+	line "phone number."
+	done
+
+BrentNumberAcceptedText:
+	text "BILL--he's more"
+	line "than amazing!"
+
+	para "To be a #MANIAC"
+	line "like him someday…"
+
+	para "That's my dream."
+	done
+
+BrentNumberDeclinedText:
+	text "You're going to"
+	line "regret it…"
+
+	para "And I won't care…"
+	done
+
+BrentPhoneFullText:
+	text "Huh? Your phone"
+	line "list's full."
+
+	para "A #MANIAC has"
+	line "to be more tidy!"
+	done
+
+BrentRematchText:
+	text "I've been waiting."
+
+	para "Look, check out my"
+	line "#MON!"
+	done
--- /dev/null
+++ b/data/phone/text/buena.asm
@@ -1,0 +1,550 @@
+UnknownText_0xa0c28: ; 0xa0c28
+	text "Hi, this is BUENA…"
+
+	para "Oh! Good morning,"
+	line "<PLAY_G>!"
+
+	para "I'm kind of foggy"
+	line "in the morning…"
+	done
+; 0xa0c72
+
+UnknownText_0xa0c72: ; 0xa0c72
+	text "Hi, this is BUENA…"
+	line "Oh! Hi, <PLAY_G>!"
+
+	para "Do you tune into"
+	line "BUENA's show?"
+	done
+; 0xa0caf
+
+UnknownText_0xa0caf: ; 0xa0caf
+	text "This is BUENA."
+	line "I can't come to"
+
+	para "the phone right"
+	line "now."
+
+	para "If you want to"
+	line "chat, tune into"
+
+	para "BUENA's PASSWORD"
+	line "on the radio and"
+
+	para "give me a call"
+	line "after midnight!"
+	done
+; 0xa0d42
+
+UnknownText_0xa0d42: ; 0xa0d42
+	text "Hi, this is BUENA…"
+	line "Oh! Hi, <PLAY_G>!"
+
+	para "I just got off"
+	line "work. "
+
+	para "Let me tell you,"
+	line "I'm exhausted!"
+	done
+; 0xa0d96
+
+UnknownText_0xa0d96: ; 0xa0d96
+	text "<PLAY_G>!"
+	line "Hi, it's BUENA!"
+
+	para "I got up early, so"
+	line "I decided to call!"
+	done
+; 0xa0dcf
+
+UnknownText_0xa0dcf: ; 0xa0dcf
+	text "<PLAY_G>!"
+	line "Hi, it's BUENA!"
+
+	para "I needed someone"
+	line "to chat with!"
+	done
+; 0xa0e01
+
+UnknownText_0xa0e01: ; 0xa0e01
+	text "<PLAY_G>!"
+	line "Hi, it's BUENA!"
+
+	para "I'm just on my"
+	line "break."
+	done
+; 0xa0e29
+
+UnknownText_0xa0e29: ; 0xa0e29
+	text "<PLAY_G>!"
+	line "Hi, it's BUENA!"
+
+	para "I couldn't sleep,"
+	line "so I called you."
+	done
+; 0xa0e5e
+
+UnknownText_0xa0e5e: ; 0xa0e5e
+	text "Oh. Hi, <PLAY_G>!"
+
+	para "You are how?"
+
+	para "Aiyee! This isn't"
+	line "the time for me to"
+
+	para "be cracking silly"
+	line "gag greetings!"
+
+	para "The RADIO TOWER is"
+	line "in deep trouble!"
+
+	para "<PLAY_G>, you'd"
+	line "better be careful!"
+	done
+; 0xa0efb
+
+UnknownText_0xa0efb: ; 0xa0efb
+	text "The other day, I"
+	line "went out to eat"
+
+	para "with DJ BEN!"
+	line "Isn't it great?"
+
+	para "Not only that, he"
+	line "said the music on"
+
+	para "my program is"
+	line "cool!"
+
+	para "Oh, wow! Like,"
+	line "what should I do?"
+
+	para "…Oops, I have to"
+	line "get ready for my"
+
+	para "show! I'll catch"
+	line "you later!"
+	done
+; 0xa0fcf
+
+UnknownText_0xa0fcf: ; 0xa0fcf
+	text "You know the"
+	line "receptionist at"
+	cont "the RADIO TOWER?"
+
+	para "'Welcome,' is all"
+	line "she ever says."
+
+	para "But she's really"
+	line "the chattiest"
+
+	para "person at the"
+	line "RADIO TOWER."
+
+	para "So she must be"
+	line "holding back."
+
+	para "Isn't that fun to"
+	line "know?"
+
+	para "Catch you later!"
+	done
+; 0xa109d
+
+UnknownText_0xa109d: ; 0xa109d
+	text "Tell me, <PLAY_G>."
+	line "Have you ever won"
+
+	para "a prize on the"
+	line "LUCKY NUMBER SHOW?"
+
+	para "REED moans that"
+	line "he's never won, so"
+
+	para "he vows to keep"
+	line "the show on the"
+	cont "air till he does."
+
+	para "Let's chat again!"
+	done
+; 0xa1143
+
+UnknownText_0xa1143: ; 0xa1143
+	text "You know, last"
+	line "night…"
+
+	para "I was so stressed"
+	line "out from work, I"
+
+	para "ate a ton of junk"
+	line "food!"
+
+	para "MARY and I have"
+	line "this deal about"
+	cont "losing weight…"
+
+	para "This won't do…"
+
+	para "Huh? What's the"
+	line "weight?"
+
+	para "This has to be a"
+	line "total secret!"
+
+	para "MARY weighs…"
+
+	para "Aiyee! M-MARY!"
+
+	para "Uh… Um… I… Sorry,"
+	line "wrong number!"
+	done
+; 0xa1244
+
+UnknownText_0xa1244: ; 0xa1244
+	text "Yesterday, PROF."
+	line "OAK was in the"
+
+	para "studio to tape his"
+	line "show."
+
+	para "So I went over and"
+	line "introduced myself."
+
+	para "Get this--he tunes"
+	line "in to my program!"
+
+	para "Oh! Here comes"
+	line "PROF.OAK again!"
+
+	para "I'm going to chat"
+	line "him up again!"
+
+	para "Catch you later!"
+	done
+; 0xa1318
+
+UnknownText_0xa1318: ; 0xa1318
+	text "…Cough, cough!"
+
+	para "Uhm sorry uh got"
+	line "uh code dite now."
+
+	para "Buh uma pro so uh"
+	line "hav to cover id ub"
+
+	para "so no un notice"
+	line "while uhm on air."
+
+	para "Uh fidz muh voice"
+	line "now."
+
+	para "I'll catch you on"
+	line "the fly. This has"
+	cont "been BUENA!"
+	done
+; 0xa13d8
+
+UnknownText_0xa13d8: ; 0xa13d8
+	text "Hey, <PLAY_G>."
+	line "You won that RADIO"
+
+	para "CARD by beating"
+	line "the quiz at the"
+
+	para "reception desk,"
+	line "didn't you?"
+
+	para "Guess what? I made"
+	line "up the questions!"
+
+	para "…Were they too"
+	line "easy for you?"
+
+	para "Well, let's chat"
+	line "again!"
+	done
+; 0xa1488
+
+UnknownText_0xa1488: ; 0xa1488
+	text "I'm elated that"
+	line "more people are"
+
+	para "taking part in my"
+	line "PASSWORD show."
+
+	para "But when PIKACHU"
+	line "was the password,"
+
+	para "it was uh… whew…"
+	line "overwhelming."
+
+	para "FAN CLUB people"
+	line "came in out in"
+
+	para "droves, shouting"
+	line "'PIKACHU!' over"
+
+	para "and over. I mean,"
+	line "they were loud."
+
+	para "Anyone tuning in"
+	line "around then must"
+
+	para "have been shocked"
+	line "by the racket!"
+
+	para "Anyway, back to"
+	line "work for me!"
+
+	para "Let's chat again!"
+	done
+; 0xa15de
+
+UnknownText_0xa15de: ; 0xa15de
+	text "Guess what?"
+	line "The RADIO TOWER's"
+
+	para "DIRECTOR is a big"
+	line "fan of TV!"
+
+	para "A while ago, a"
+	line "fashion show on TV"
+
+	para "said that black"
+	line "suits were in."
+
+	para "Now all he wears"
+	line "are black suits."
+
+	para "But it's a secret"
+	line "that our DIRECTOR"
+
+	para "is a TV fan, so if"
+	line "you see him, don't"
+
+	para "you dare mention"
+	line "it!"
+
+	para "Oh! The DIRECTOR"
+	line "will be here soon!"
+
+	para "Later! Tune into"
+	line "my show!"
+	done
+; 0xa1717
+
+UnknownText_0xa1717: ; 0xa1717
+	text "<PLAY_G>, tell me."
+
+	para "When do you relax"
+	line "the most?"
+
+	para "For me, it has to"
+	line "be in the studio"
+
+	para "right after my"
+	line "show, enjoying a"
+
+	para "nice cup of tea."
+	line "It's so pleasant"
+
+	para "that it gradually"
+	line "makes me drowsy…"
+
+	para "<……> <……> <……>"
+
+	para "<……> <……> <……>Zzz"
+
+	para "Oops, I drifted"
+	line "off just thinking"
+
+	para "about it! How, uh…"
+	line "embarrassing!"
+
+	para "Please forget this"
+	line "happened! Later!"
+	done
+; 0xa183d
+
+UnknownText_0xa183d: ; 0xa183d
+	text "<PLAY_G>, what was"
+	line "the first #MON"
+	cont "you ever caught?"
+
+	para "…Oh, really?"
+
+	para "I've seen lots of"
+	line "#MON around,"
+
+	para "but I've never"
+	line "caught one."
+
+	para "I should give it a"
+	line "try sometime."
+
+	para "Did you know that"
+	line "the first #MON"
+
+	para "MARY caught was a"
+	line "DROWZEE?"
+
+	para "Isn't that so out"
+	line "of character?"
+
+	para "But MARY's DROWZEE"
+	line "kept making her"
+
+	para "fall asleep on the"
+	line "job, so she traded"
+
+	para "with a fan for a"
+	line "MEOWTH."
+
+	para "Let's chat about"
+	line "#MON again!"
+
+	para "Bye-bye!"
+	done
+; 0xa19b1
+
+UnknownText_0xa19b1: ; 0xa19b1
+	text "Guess what? All of"
+	line "us from the RADIO"
+
+	para "TOWER are going on"
+	line "a company vacation"
+
+	para "to the RADIO TOWER"
+	line "in LAVENDER."
+
+	para "We're wasting our"
+	line "vacation on a trip"
+
+	para "to another RADIO"
+	line "TOWER?"
+
+	para "I'd much rather go"
+	line "to the beach!"
+
+	para "<PLAY_G>, I hope"
+	line "you have enough"
+
+	para "fun for both of us"
+	line "on your journey!"
+
+	para "Bye-bye!"
+	done
+; 0xa1ac0
+
+UnknownText_0xa1ac0: ; 0xa1ac0
+	text "Did you know…?"
+
+	para "BEN and FERN talk"
+	line "on the phone for"
+
+	para "hours about what"
+	line "#MON music they"
+
+	para "should play on"
+	line "different days of"
+	cont "the week."
+
+	para "One time, FERN's"
+	line "rapping style kind"
+
+	para "of rubbed off on"
+	line "BEN weirdly."
+
+	para "So we ended up"
+	line "enduring BEN's"
+
+	para "silly, chilly, a"
+	line "willy-nilly jive-"
+	cont "talking shtick for"
+	cont "a while."
+
+	para "Let's chat again!"
+	done
+; 0xa1bed
+
+UnknownText_0xa1bed: ; 0xa1bed
+	text "I'm going shopping"
+	line "with MARY and LILY"
+	cont "soon."
+
+	para "It'll be great if"
+	line "GOLDENROD DEPT."
+
+	para "STORE has a sale"
+	line "on when we go…"
+
+	para "<PLAY_G>, maybe we"
+	line "can hook up too!"
+
+	para "Catch you later!"
+	done
+; 0xa1c88
+
+UnknownText_0xa1c88: ; 0xa1c88
+	text "I'm thinking of"
+	line "going to the GAME"
+
+	para "CORNER tomorrow."
+	line "It's been a while."
+
+	para "You see, I have my"
+	line "favorite machine…"
+
+	para "It pays out a lot,"
+	line "I kid you not!"
+
+	para "Huh? Nuh-uh, it's"
+	line "my secret!"
+
+	para "You have to find"
+	line "it yourself!"
+
+	para "Catch you later!"
+	done
+; 0xa1d5f
+
+UnknownText_0xa1d5f: ; 0xa1d5f
+	text "Hey, <PLAY_G>. You"
+	line "use your #GEAR"
+
+	para "to listen to the"
+	line "radio, right?"
+
+	para "I heard that you"
+	line "can even display"
+
+	para "town maps with"
+	line "#GEAR."
+
+	para "I have a bad sense"
+	line "of direction, so"
+
+	para "#GEAR would be"
+	line "handy…"
+
+	para "Anyway, thanks for"
+	line "calling! Later!"
+	done
+; 0xa1e2f
+
+UnknownText_0xa1e2f: ; 0xa1e2f
+	text "Is it sunny"
+	line "outside today?"
+
+	para "When you're cooped"
+	line "up in the RADIO"
+
+	para "TOWER as much as I"
+	line "am, you lose touch"
+
+	para "with the outside."
+	line "It can be boring."
+
+	para "Please call again!"
+	done
+; 0xa1eca
--- /dev/null
+++ b/data/phone/text/chad_overworld.asm
@@ -1,0 +1,56 @@
+ChadAskNumber1Text:
+	text "Huh? Is that thing"
+	line "a #DEX? Have"
+	cont "you met PROF.OAK?"
+
+	para "Huh? You have? "
+	line "That's way cool!"
+
+	para "I have a dream of"
+	line "becoming a #MON"
+
+	para "researcher like"
+	line "PROF.OAK."
+
+	para "May I please have"
+	line "your phone number?"
+
+	para "We should chat"
+	line "about PROF.OAK."
+
+	para "I'm sure it will"
+	line "be loads of fun!"
+	done
+
+ChadAskNumber2Text:
+	text "May I please have"
+	line "your phone number?"
+
+	para "We should chat"
+	line "about PROF.OAK."
+
+	para "I'm sure it will"
+	line "be loads of fun!"
+	done
+
+ChadNumberAcceptedText:
+	text "You must listen to"
+	line "PROF.OAK'S #MON"
+	cont "TALK, right?"
+	done
+
+ChadNumberDeclinedText:
+	text "Oh… I wish I had a"
+	line "chance to meet"
+	cont "PROF.OAK…"
+	done
+
+ChadPhoneFullText:
+	text "Your phone list is"
+	line "completely full!"
+	done
+
+ChadRematchText:
+	text "I've been waiting!"
+	line "Let's battle now!"
+	done
--- /dev/null
+++ b/data/phone/text/dana_overworld.asm
@@ -1,0 +1,72 @@
+DanaAskNumber1Text:
+	text "You're really good"
+	line "at #MON!"
+
+	para "Boys give me items"
+	line "after battles, but"
+
+	para "sometimes they"
+	line "give me too much."
+
+	para "Next time, I can"
+	line "share some if you"
+
+	para "want. Let me get"
+	line "your phone number."
+	done
+
+DanaAskNumber2Text:
+	text "I'll share my"
+	line "gifts with you."
+
+	para "Let me get your"
+	line "phone number."
+	done
+
+DanaNumberAcceptedText:
+	text "Next time a boy"
+	line "gives me something"
+
+	para "after a battle,"
+	line "I'll share some!"
+
+	para "Does that make me"
+	line "bad?"
+	done
+
+DanaNumberDeclinedText:
+	text "Aww, you don't"
+	line "want anything?"
+
+	para "But it's all for"
+	line "free…"
+	done
+
+DanaPhoneFullText:
+	text "But your phone's"
+	line "out of memory!"
+	done
+
+DanaRematchText:
+	text "You're really"
+	line "late!"
+
+	para "I'm eager to get"
+	line "going!"
+	done
+
+DanaGiftText:
+	text "Hi! Are you here"
+	line "for your gift?"
+
+	para "This should really"
+	line "make your day!"
+	done
+
+DanaPackFullText:
+	text "Where are you"
+	line "going to put this?"
+
+	para "I'll keep it, so"
+	line "come get it later!"
+	done
--- /dev/null
+++ b/data/phone/text/derek_overworld.asm
@@ -1,0 +1,61 @@
+DerekAskNumber1Text:
+	text "Oh, wow! PIKACHU!"
+	line "It's so soft and"
+	cont "furry! How cute!"
+
+	para "Let's be friends!"
+	line "PIKACHU-lovers are"
+	cont "never bad people!"
+
+	para "Let's chat about"
+	line "PIKACHU!"
+
+	para "Can I get your"
+	line "phone number?"
+	done
+
+DerekAskNumber2Text:
+	text "Let's chat about"
+	line "PIKACHU!"
+
+	para "Can I get your"
+	line "phone number?"
+	done
+
+DerekNumberAcceptedText:
+	text "PIKACHU is the"
+	line "one! If anything"
+
+	para "comes up, I'll"
+	line "give you a jingle."
+	done
+
+DerekNumberDeclinedText:
+	text "You…"
+
+	para "I bet you don't"
+	line "even like PIKACHU…"
+	done
+
+DerekPhoneFullText:
+	text "Wait a sec! Your"
+	line "phone list's full!"
+	done
+
+DerekGiftText:
+	text "I've been looking"
+	line "for you! Here, see"
+	cont "this? This is it!"
+
+	para "I'm certain your"
+	line "PIKACHU will love"
+	cont "my gift too!"
+	done
+
+DerekPackFullText:
+	text "Uh-oh, too bad."
+	line "You don't have any"
+
+	para "room. Be sure to"
+	line "get it later."
+	done
--- /dev/null
+++ b/data/phone/text/elm.asm
@@ -1,0 +1,211 @@
+ElmPhoneStartText: ; 0x1b46fc
+	text "Hello, <PLAY_G>?"
+
+	para "Try not to overdo"
+	line "it."
+
+	para "Be sure to heal"
+	line "your #MON if"
+	cont "they are hurt."
+	done
+
+ElmPhoneSawMrPokemonText: ; 0x1b4749
+	text "Hello, <PLAY_G>?"
+
+	para "Did you meet MR."
+	line "#MON? Great!"
+	cont "Come back safely!"
+	done
+
+ElmPhonePokemonStolenText: ; 0x1b4784
+	text "<PLAY_G>? I'm very"
+	line "upset now."
+
+	para "We had a #MON"
+	line "stolen from here."
+
+	para "How could anyone"
+	line "do that?"
+	done
+
+ElmPhoneCheckingEggText: ; 0x1b47d5
+	text "Hello, <PLAY_G>?"
+
+	para "We're checking the"
+	line "EGG now. It does"
+
+	para "appear to be a"
+	line "#MON EGG."
+	done
+
+ElmPhoneAssistantText: ; 0x1b481c
+	text "Hello, <PLAY_G>?"
+
+	para "Did you see my"
+	line "assistant? He's at"
+
+	para "the #MON CENTER"
+	line "in VIOLET CITY."
+	done
+
+ElmPhoneEggUnhatchedText: ; 0x1b4868
+	text "Hello, <PLAY_G>?"
+
+	para "How's the EGG? Has"
+	line "anything changed?"
+
+	para "If anything hap-"
+	line "pens, please call."
+	done
+
+ElmPhoneEggHatchedText: ; 0x1b48bb
+	text "Hello, <PLAY_G>?"
+	line "How is the EGG?"
+
+	para "What? It hatched?"
+	line "Wow! What kind of"
+	cont "#MON is it?"
+
+	para "Please come show"
+	line "me now!"
+	done
+
+ElmPhoneDiscovery1Text: ; 0x1b491f
+	text "Hello, <PLAY_G>?"
+
+	para "I just made a new"
+	line "discovery."
+
+	para "The time it takes"
+	line "for an EGG to"
+
+	para "hatch depends on"
+	line "the #MON."
+	done
+
+ElmPhoneDiscovery2Text: ; 0x1b4982
+	text "Hello, <PLAY_G>?"
+
+	para "It's still a"
+	line "mystery what kinds"
+
+	para "of moves hatched"
+	line "#MON have."
+
+	para "We're investigat-"
+	line "ing that now."
+	done
+
+ElmPhonePokerusText: ; 0x1b49e7
+	text "Hello, <PLAY_G>?"
+
+	para "I discovered an"
+	line "odd thing."
+
+	para "Apparently there's"
+	line "something called"
+
+	para "#RUS that in-"
+	line "fects #MON."
+
+	para "Yes, it's like a"
+	line "virus, so it's"
+	cont "called #RUS."
+
+	para "It multiplies fast"
+	line "and infects other"
+
+	para "#MON too. But"
+	line "that's all."
+
+	para "It doesn't seem to"
+	line "do anything, and"
+
+	para "it goes away over"
+	line "time."
+
+	para "I guess it's"
+	line "nothing to worry"
+	cont "about. Bye!"
+	done
+
+ElmPhoneDisasterText: ; 0x1b4b17
+	text "H-hello? <PLAY_G>?"
+	line "It's a disaster!"
+
+	para "Uh, um, it's just"
+	line "terrible!"
+
+	para "What should I do?"
+	line "It… Oh, no…"
+
+	para "Please get back"
+	line "here now!"
+	done
+
+ElmPhoneEggAssistantText: ; 0x1b4b87
+	text "Hello, <PLAY_G>? We"
+	line "discovered some-"
+
+	para "thing about the"
+	line "EGG!"
+
+	para "My assistant is at"
+	line "the #MON CENTER"
+
+	para "in VIOLET CITY. "
+	line "Could you talk to"
+	cont "him?"
+	done
+
+ElmPhoneRocketText: ; 0x1b4c06
+	text "<PLAY_G>, how are"
+	line "things going?"
+
+	para "I called because"
+	line "something weird is"
+
+	para "happening with the"
+	line "radio broadcasts."
+
+	para "They were talking"
+	line "about TEAM ROCKET."
+
+	para "<PLAY_G>, do you"
+	line "know anything"
+	cont "about it?"
+
+	para "Maybe TEAM ROCKET"
+	line "has returned. No,"
+
+	para "that just can't"
+	line "be true."
+
+	para "Sorry to bug you."
+	line "Take care!"
+	done
+
+ElmPhoneGiftText: ; 0x1b4d09
+	text "Hello, <PLAY_G>?"
+
+	para "I have something"
+	line "here for you."
+
+	para "Could you swing by"
+	line "my LAB?"
+
+	para "See you later!"
+	done
+
+ElmPhoneUnusedText: ; 0x1b4d5d
+	text "Hello, <PLAY_G>?"
+	line "How's it going?"
+
+	para "I got ahold of"
+	line "something neat."
+
+	para "Swing by my LAB"
+	line "and pick it up!"
+
+	para "See you later!"
+	done
--- /dev/null
+++ b/data/phone/text/erin_overworld.asm
@@ -1,0 +1,63 @@
+ErinAskNumber1Text:
+	text "It really made me"
+	line "angry to lose."
+
+	para "I'll have to train"
+	line "much harder…"
+
+	para "Here's my number."
+	line "I'm ERIN--don't"
+
+	para "forget! Want to"
+	line "battle me again?"
+	done
+
+ErinAskNumber2Text:
+	text "I want to battle"
+	line "with you again."
+
+	para "Do you want to"
+	line "exchange numbers?"
+	done
+
+ErinNumberAcceptedText:
+	text "I'll remember to"
+	line "call when I want"
+	cont "to battle again!"
+	done
+
+ErinNumberDeclinedText:
+	text "Oh… I'm sad…"
+	line "If you do want to"
+
+	para "battle, come see"
+	line "ERIN--that's me!"
+	done
+
+ErinPhoneFullText:
+	text "Oh no. Your phone"
+	line "is all filled up."
+	done
+
+ErinRematchText:
+	text "Yay! I waited!"
+	line "Let's start now!"
+	done
+
+ErinPackFullText:
+	text "That's too bad!"
+	line "You have no room…"
+
+	para "I'll give it to"
+	line "you another time."
+	done
+
+ErinRematchGiftText:
+	text "Aww… I lost again!"
+
+	para "I wonder how many"
+	line "times that is…"
+
+	para "Thanks for coming!"
+	line "Here's a present!"
+	done
--- /dev/null
+++ b/data/phone/text/extra.asm
@@ -1,0 +1,1880 @@
+
+UnknownText_0x64000: ; 0x64000
+	text "I hate having to"
+	line "hang up on you!"
+
+	para "Call you later!"
+	done
+; 0x64032
+
+UnknownText_0x64032: ; 0x64032
+	text "<PLAY_G>, have you"
+	line "heard?"
+
+	para "GOLDENROD's RADIO"
+	line "TOWER has been"
+
+	para "taken over by TEAM"
+	line "ROCKET!"
+
+	para "…Um… What's TEAM"
+	line "ROCKET?"
+	done
+; 0x64099
+
+UnknownText_0x64099: ; 0x64099
+	text "<PLAY_G>, I heard!"
+
+	para "You defeated that"
+	line "WHITNEY?"
+
+	para "It makes me proud"
+	line "to be your friend!"
+	done
+; 0x640e6
+
+UnknownText_0x640e6: ; 0x640e6
+	text "Hey, I heard about"
+	line "you!"
+
+	para "You saved that"
+	line "#MON at the"
+
+	para "LIGHTHOUSE, didn't"
+	line "you?"
+
+	para "<PLAY_G>, I wish"
+	line "you'd come see me"
+
+	para "when I'm sick in"
+	line "bed with a cold!"
+	done
+; 0x6416d
+
+UnknownText_0x6416d: ; 0x6416d
+	text "I heard, I heard,"
+	line "I heard!"
+
+	para "You smashed TEAM"
+	line "ROCKET's hideout!"
+
+	para "You're like a"
+	line "movie hero, even!"
+
+	para "But um… What was"
+	line "TEAM ROCKET?"
+	done
+; 0x641e8
+
+UnknownText_0x641e8: ; 0x641e8
+	text "I heard, I heard,"
+	line "I heard!"
+
+	para "About your heroic"
+	line "liberation of the"
+
+	para "RADIO TOWER! You"
+	line "rock so hard!"
+	done
+; 0x64247
+
+UnknownText_0x64247: ; 0x64247
+	text "I saw, I saw!"
+
+	para "I saw you go into"
+	line "the DRAGON'S DEN!"
+
+	para "I'm certain you"
+	line "passed! Aww, no"
+
+	para "need to be modest!"
+	line "You can't fail!"
+	done
+; 0x642bb
+
+UnknownText_0x642bb: ; 0x642bb
+	text "Yesterday, I went"
+	line "out to NEW BARK"
+
+	para "TOWN.  There was a"
+	line "lady who looked a"
+
+	para "lot like you,"
+	line "<PLAY_G>."
+
+	para "What? That lady"
+	line "was your mom?"
+
+	para "Aww, I should've"
+	line "introduced myself!"
+
+	para "I bet your mom's"
+	line "really proud of"
+
+	para "all that you've"
+	line "accomplished."
+
+	para "Heh, put it this"
+	line "way. I'd be proud"
+
+	para "if I were your"
+	line "mom, believe me!"
+	done
+; 0x643d4
+
+UnknownText_0x643d4: ; 0x643d4
+	text "I saw, I saw,"
+	line "I saw!"
+
+	para "You striding onto"
+	line "a ship, <PLAY_G>!"
+
+	para "I can't get over"
+	line "how good you look"
+
+	para "with the sea as"
+	line "your backdrop!"
+	done
+; 0x64448
+
+UnknownText_0x64448: ; 0x64448
+	text "I heard, I heard!"
+
+	para "You got a MAGNET"
+	line "TRAIN PASS!"
+
+	para "When I saw you"
+	line "departing on the"
+
+	para "ship, I felt sad"
+	line "that I wouldn't be"
+
+	para "able to see you"
+	line "for a while."
+
+	para "But since you have"
+	line "that PASS, you can"
+
+	para "zip back anytime!"
+	line "That's reassuring!"
+
+	para "What? You can FLY"
+	line "back anytime?"
+
+	para "What do you mean"
+	line "by FLY?"
+	done
+; 0x6455b
+
+UnknownText_0x6455b: ; 0x6455b
+	text "I saw, I saw!"
+
+	para "You waking up"
+	line "SNORLAX!"
+
+	para "I was watching you"
+	line "from afar, so I"
+
+	para "couldn't tell what"
+	line "you did exactly."
+
+	para "Did you play a"
+	line "flute to wake it?"
+
+	para "Wow! That's like"
+	line "magic!"
+	done
+; 0x645ff
+
+UnknownText_0x645ff: ; 0x645ff
+	text "I hear rumors"
+	line "about you all over"
+	cont "the place."
+
+	para "It just makes me"
+	line "sigh, <PLAY_G>."
+
+	para "How did you get so"
+	line "strong?"
+
+	para "Go for the world"
+	line "championship now!"
+
+	para "I'll always be"
+	line "cheering you on!"
+	done
+; 0x646a3
+
+IrwinCalledRightAwayText: ; 0x646a3
+	text "Hehe, I called"
+	line "right away!"
+
+	para "I think we can be"
+	line "good friends!"
+	done
+; 0x646df
+
+UnknownText_0x646df: ; 0x646df
+	text "I saw, I heard!"
+
+	para "You beat MORTY of"
+	line "ECRUTEAK GYM!"
+
+	para "Th-that's just"
+	line "incredible!"
+
+	para "I actually went to"
+	line "the GYM's entrance"
+
+	para "to cheer you on."
+	line "Did you know that?"
+
+	para "But everyone was"
+	line "floating, and"
+
+	para "there were ghosts"
+	line "all over! So I"
+
+	para "chickened out and"
+	line "took off for home…"
+	done
+; 0x647d8
+
+UnknownText_0x647d8: ; 0x647d8
+	text "<PLAY_G>, I heard!"
+
+	para "You're kicking up"
+	line "a mighty ruckus"
+
+	para "over in KANTO!"
+	line "What a glorious"
+
+	para "rampage it must"
+	line "be!"
+
+	para "You so rock!"
+	done
+; 0x64846
+
+UnknownText_0x64846: ; 0x64846
+	text "Hearing about your"
+	line "escapades rocks my"
+
+	para "soul!"
+	line "It sure does!"
+	done
+; 0x64881
+
+UnknownText_0x64881: ; 0x64881
+	text "I'm so glad you"
+	line "called!"
+
+	para "I was just about"
+	line "to call you too!"
+
+	para "I guess we must be"
+	line "a good match!"
+	done
+; 0x648dc
+
+UnknownText_0x648dc: ; 0x648dc
+	text "How are you?"
+
+	para "What are you"
+	line "doing?"
+
+	para "Where are you?"
+
+	para "How many BADGES do"
+	line "you have now?"
+
+	para "How much money"
+	line "have you saved?"
+
+	para "How's your mom?"
+
+	para "Have you got lots"
+	line "of #MON?"
+
+	para "Is it going to be"
+	line "sunny tomorrow?"
+
+	para "Arrgh, there's so"
+	line "much I want to"
+
+	para "chat about! This"
+	line "is going nowhere!"
+	done
+; 0x649dc
+
+ArnieLovesTheCuteText: ; 0x649dc
+	text "I'm always with my"
+	line "@"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "It's so cute!"
+	line "I just love it!"
+	done
+; 0x64a13
+
+UnknownText_0x64a13: ; 0x64a13
+	text "Changing the topic"
+	line "here, I saw this"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " for the"
+	line "first time."
+
+	para "It was easy to"
+	line "beat, actually."
+	done
+; 0x64a71
+
+UnknownText_0x64a71: ; 0x64a71
+	text "I was wondering,"
+	line "do you happen to"
+	cont "have @"
+	text_from_ram StringBuffer4
+	text "?"
+
+	para "I can't seem to"
+	line "catch one. What is"
+
+	para "its weakness, I"
+	line "wonder."
+	done
+; 0x64ada
+
+UnknownText_0x64ada: ; 0x64ada
+	text "Hey, let's battle"
+	line "our #MON!"
+
+	para "I won't lose to"
+	line "you battling or in"
+
+	para "the Bug-Catching"
+	line "Contest!"
+
+	para "I'll be here on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x64b48
+
+UnknownText_0x64b48: ; 0x64b48
+	text "Let's talk again,"
+	line "huh?"
+	done
+; 0x64b5f
+
+UnknownText_0x64b5f: ; 0x64b5f
+	text "Boy, am I glad I"
+	line "caught you!"
+
+	para "A whole bunch of"
+	line "@"
+	text_from_ram StringBuffer4
+	text " have"
+
+	para "appeared around"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+
+	para "You have to see"
+	line "this!"
+	done
+; 0x64bc6
+
+UnknownText_0x64bc6: ; 0x64bc6
+	text "I haven't had any"
+	line "luck seeing rare"
+	cont "#MON lately…"
+
+	para "But I know they're"
+	line "out there!"
+	done
+; 0x64c13
+
+UnknownText_0x64c13: ; 0x64c13
+	text "Hey, where are you"
+	line "now?"
+
+	para "Let's battle. I'll"
+	line "be waiting for you"
+	cont "on @"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x64c5a
+
+UnknownText_0x64c5a: ; 0x64c5a
+	text "Hello? Are you"
+	line "coming or what?"
+
+	para "You're missing out"
+	line "on seeing YANMA!"
+
+	para "Get down to ROUTE"
+	line "35 right now!"
+	done
+; 0x64cbd
+
+AlanGettingStrongerText: ; 0x64cbd
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "getting stronger,"
+
+	para "exactly as I"
+	line "calculated!"
+	done
+; 0x64cf3
+
+UnknownText_0x64cf3: ; 0x64cf3
+	text "By the way, we"
+	line "knocked out a wild"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " just"
+	line "the other day."
+
+	para "Studying up in"
+	line "advance worked!"
+	done
+; 0x64d4f
+
+UnknownText_0x64d4f: ; 0x64d4f
+	text "By the way, a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text " escaped"
+	cont "on me yesterday."
+
+	para "A computational"
+	line "error on my part…"
+	done
+; 0x64da4
+
+UnknownText_0x64da4: ; 0x64da4
+	text "I've studied quite"
+	line "a bit since then,"
+
+	para "and I've gotten a"
+	line "lot better!"
+
+	para "I'm hanging out on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Can you come down"
+	line "for a battle?"
+	done
+; 0x64e1f
+
+UnknownText_0x64e1f: ; 0x64e1f
+	text "See you later!"
+	done
+; 0x64e2f
+
+UnknownText_0x64e2f: ; 0x64e2f
+	text "Hehehe, I picked"
+	line "up something nice!"
+
+	para "You can have it!"
+	line "Why don't you come"
+
+	para "to @"
+	text_from_ram StringBuffer5
+	text_start
+	line "and pick it up?"
+	done
+; 0x64e90
+
+UnknownText_0x64e90: ; 0x64e90
+	text "I haven't picked"
+	line "up anything yet."
+
+	para "I'll call you if I"
+	line "find something."
+	done
+; 0x64ed4
+
+UnknownText_0x64ed4: ; 0x64ed4
+	text "If we don't battle"
+	line "soon, I'll forget"
+	cont "my strategy!"
+
+	para "I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x64f1a
+
+UnknownText_0x64f1a: ; 0x64f1a
+	text "I have to do my"
+	line "homework, so can"
+
+	para "you come get your"
+	line "gift right away?"
+
+	para "I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x64f74
+
+UnknownText_0x64f74: ; 0x64f74
+	text "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "getting prettier!"
+
+	para "I've been taking"
+	line "photos galore!"
+	done
+; 0x64fb2
+
+UnknownText_0x64fb2: ; 0x64fb2
+	text "It took only an"
+	line "instant to KO a"
+	cont "wild @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "It must be because"
+	line "you gave me some"
+
+	para "battling tips last"
+	line "time."
+	done
+; 0x6501c
+
+UnknownText_0x6501c: ; 0x6501c
+	text "You know what?"
+	line "A wild @"
+	text_from_ram StringBuffer4
+	text_start
+	para "got away from me"
+	line "again."
+
+	para "It was so close!"
+	line "Really, just a"
+
+	para "little bit more,"
+	line "and I would've…"
+	done
+; 0x65091
+
+UnknownText_0x65091: ; 0x65091
+	text "Right now, I'm on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "If you're close"
+	line "by, let's battle!"
+
+	para "I'll be waiting"
+	line "for you!"
+	done
+; 0x650e2
+
+UnknownText_0x650e2: ; 0x650e2
+	text "See you!"
+	done
+; 0x650ec
+
+UnknownText_0x650ec: ; 0x650ec
+	text "You know what?"
+	line "I got a good gift!"
+
+	para "As I promised,"
+	line "it's yours!"
+
+	para "I'm sure you'd"
+	line "like it. Come get"
+
+	para "it! I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x65161
+
+UnknownText_0x65161: ; 0x65161
+	text "Oh! You wanted a"
+	line "gift, right?"
+
+	para "I got one, but I"
+	line "want to keep this."
+
+	para "Can you wait a bit"
+	line "longer?"
+	done
+; 0x651bf
+
+UnknownText_0x651bf: ; 0x651bf
+	text "Hi! You haven't"
+	line "forgotten about"
+
+	para "your promise to"
+	line "battle me?"
+
+	para "I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x6520f
+
+UnknownText_0x6520f: ; 0x6520f
+	text "Hello?"
+
+	para "If you don't come"
+	line "get your present"
+
+	para "soon, I'll give it"
+	line "to someone else."
+
+	para "I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x65271
+
+ChadObservingWildText: ; 0x65271
+	text "I recently began"
+	line "observing wild"
+	cont "@"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "I've been learning"
+	line "all sorts of new"
+
+	para "things through my"
+	line "observations."
+
+	para "I wish I could"
+	line "become a #MON"
+
+	para "researcher like"
+	line "PROF.OAK soon."
+	done
+; 0x65318
+
+UnknownText_0x65318: ; 0x65318
+	text "Oh yes, I managed"
+	line "to knock out a"
+
+	para "wild @"
+	text_from_ram StringBuffer4
+	text " a"
+	line "while back."
+
+	para "Well, considering"
+	line "all the studying I"
+
+	para "do every day, it"
+	line "was inevitable."
+	done
+; 0x65399
+
+UnknownText_0x65399: ; 0x65399
+	text "Oh yes, I came"
+	line "close to catching"
+
+	para "a wild @"
+	text_from_ram StringBuffer4
+	text ","
+	line "but it got away."
+
+	para "For the longest"
+	line "time, I've been"
+
+	para "wanting to observe"
+	line "@"
+	text_from_ram StringBuffer4
+	text ". Rats…"
+	done
+; 0x65419
+
+UnknownText_0x65419: ; 0x65419
+	text "Want to battle?"
+	line "I have to battle"
+
+	para "every so often to"
+	line "avoid rusting out."
+
+	para "I'll be on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x65471
+
+UnknownText_0x65471: ; 0x65471
+	text "See you later!"
+	done
+; 0x65481
+
+ChadBlueGossipText: ; 0x65481
+	text "Do you know BLUE?"
+
+	para "He's PROF.OAK's"
+	line "grandson and a"
+
+	para "former #MON"
+	line "LEAGUE CHAMPION!"
+
+	para "He's one super"
+	line "#MON trainer!"
+	done
+; 0x654ea
+
+ChadDaisyGossipText: ; 0x654ea
+	text "PROF.OAK has a"
+	line "granddaughter"
+	cont "named DAISY."
+
+	para "When she's around,"
+	line "even the most"
+
+	para "ferocious #MON"
+	line "calm right down."
+	done
+; 0x65555
+
+ChadProfElmGossipText: ; 0x65555
+	text "Everyone's talking"
+	line "about PROF.ELM."
+
+	para "He used to be an"
+	line "assistant to the"
+	cont "great PROF.OAK!"
+
+	para "That is so cool!"
+	line "I envy him!"
+	done
+; 0x655c7
+
+ChadDreamGossipText: ; 0x655c7
+	text "PROF.OAK's dream"
+	line "is to compile a"
+
+	para "comprehensive"
+	line "#DEX."
+
+	para "I envy you for"
+	line "taking part in"
+	cont "that project…"
+	done
+; 0x65628
+
+ChadKurtGossipText: ; 0x65628
+	text "Do you know KURT,"
+	line "the BALL creator?"
+
+	para "He and PROF.OAK go"
+	line "back a long way."
+
+	para "I guess great"
+	line "people attract one"
+	cont "another!"
+	done
+; 0x6569b
+
+ChadLeagueGossipText: ; 0x6569b
+	text "#MON LEAGUE is"
+	line "the great gather-"
+	cont "ing place for all"
+
+	para "trainers who wish"
+	line "to become CHAMP."
+
+	para "PROF.OAK acts as"
+	line "an advisor to the"
+
+	para "#MON LEAGUE's"
+	line "headquarters."
+
+	para "He really is a"
+	line "great man."
+	done
+; 0x6574a
+
+ChadRadioShowGossipText: ; 0x6574a
+	text "PROF.OAK'S #MON"
+	line "TALK is a popular"
+	cont "radio show, right?"
+
+	para "Did you know that"
+	line "he was going to"
+
+	para "turn down the show"
+	line "at first?"
+
+	para "But MARY's energy"
+	line "and persistence"
+	cont "wore him down."
+
+	para "So we have MARY to"
+	line "thank for it!"
+	done
+; 0x65810
+
+ChadBattlingGossipText: ; 0x65810
+	text "PROF.OAK used to"
+	line "be a trainer a"
+	cont "long time ago."
+
+	para "But rather than"
+	line "battling, he found"
+
+	para "#MON themselves"
+	line "to be interesting."
+
+	para "So he abandoned"
+	line "his training to"
+
+	para "focus on becoming"
+	line "a researcher."
+	done
+; 0x658c6
+
+ChadDaisyTeaGossipText: ; 0x658c6
+	text "PROF.OAK has a"
+	line "granddaughter"
+	cont "named DAISY."
+
+	para "She has tea every"
+	line "day for an hour"
+
+	para "from three in the"
+	line "afternoon."
+
+	para "I wish I could"
+	line "join her for tea"
+
+	para "and chat about"
+	line "PROF.OAK."
+	done
+; 0x65969
+
+ChadTravelGossipText: ; 0x65969
+	text "Did you know?"
+	line "PROF.OAK traveled"
+
+	para "all over the world"
+	line "when he was young."
+
+	para "While traveling,"
+	line "he must've learned"
+
+	para "about #MON"
+	line "naturally."
+
+	para "I envy him…"
+	line "I'd like to travel"
+
+	para "and learn about"
+	line "things too…"
+	done
+; 0x65a23
+
+UnknownText_0x65a23: ; 0x65a23
+	text "I'm going to study"
+	line "hard so PROF.OAK"
+
+	para "will make me his"
+	line "assistant!"
+	done
+; 0x65a63
+
+UnknownText_0x65a63: ; 0x65a63
+	text "Do you remember"
+	line "about our battle?"
+
+	para "The place is"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Hurry over--I'm"
+	line "waiting."
+	done
+; 0x65ab2
+
+DerekCheekPincherText: ; 0x65ab2
+	text "Listen to this."
+	line "My @"
+	text_from_ram StringBuffer4
+	text_start
+	para "grins happily when"
+	line "I pinch its cheek."
+
+	para "But it never grins"
+	line "for anyone else."
+
+	para "I must be special."
+	done
+; 0x65b29
+
+UnknownText_0x65b29: ; 0x65b29
+	text "Oh, and recently,"
+	line "my PIKACHU beat a"
+	cont "wild @"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "A wild @"
+	text_from_ram StringBuffer4
+	text ","
+	line "I tell you!"
+
+	para "Don't you think"
+	line "that's astounding?"
+
+	para "My PIKACHU is"
+	line "awesome!"
+
+	para "My PIKACHU is the"
+	line "greatest!"
+	done
+; 0x65bc8
+
+UnknownText_0x65bc8: ; 0x65bc8
+	text "Oh, and I saw a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text " a"
+	cont "little while ago."
+
+	para "But it wasn't very"
+	line "cute, so I left"
+
+	para "it…"
+	line "#MON have to be"
+
+	para "cute. They're no"
+	line "good otherwise."
+	done
+; 0x65c4e
+
+UnknownText_0x65c4e: ; 0x65c4e
+	text "Well, let's talk"
+	line "again!"
+	done
+; 0x65c66
+
+DerekBugCatchingContestText: ; 0x65c66
+	text "Did you remember?"
+	line "The Bug-Catching"
+	cont "Contest is today."
+
+	para "You're going to"
+	line "go, aren't you?"
+
+	para "I think I'll"
+	line "participate with"
+
+	para "PIKACHU to show"
+	line "off its cuteness."
+	done
+; 0x65cf9
+
+UnknownText_0x65cf9: ; 0x65cf9
+	text "I'd like you to"
+	line "have a NUGGET."
+
+	para "My PIKACHU just"
+	line "loves it."
+
+	para "I'm certain your"
+	line "PIKACHU will love"
+	cont "it too!"
+	done
+; 0x65d5c
+
+UnknownText_0x65d5c: ; 0x65d5c
+	text "How is your"
+	line "PIKACHU doing?"
+
+	para "Let's get together"
+	line "and brag about our"
+	cont "PIKACHU!"
+	done
+; 0x65da6
+
+UnknownText_0x65da6: ; 0x65da6
+	text "What's wrong?"
+
+	para "I'm waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Come pick this up"
+	line "anytime."
+	done
+; 0x65de4
+
+TullyGrownText: ; 0x65de4
+	text "My @"
+	text_from_ram StringBuffer4
+	text " has"
+	line "grown again."
+
+	para "It was only about"
+	line "so big when I"
+
+	para "caught it, but now"
+	line "it's way bigger."
+	done
+; 0x65e42
+
+UnknownText_0x65e42: ; 0x65e42
+	text "Oh yeah, I KO'd a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "It was huge, like"
+	line "this big even."
+
+	para "Heh, I guess you"
+	line "can't tell over"
+	cont "the phone…"
+	done
+; 0x65eac
+
+UnknownText_0x65eac: ; 0x65eac
+	text "Oh yeah, I lost a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "It was huge, like"
+	line "this big even."
+
+	para "Heh, I guess you"
+	line "can't tell over"
+	cont "the phone…"
+	done
+; 0x65f17
+
+UnknownText_0x65f17: ; 0x65f17
+	text "We should get a"
+	line "battle going!"
+
+	para "I'll be fishing on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "Swing by if you"
+	line "have the time."
+	done
+; 0x65f6e
+
+UnknownText_0x65f6e: ; 0x65f6e
+	text "Well, I'll be"
+	line "seeing you."
+	done
+; 0x65f88
+
+UnknownText_0x65f88: ; 0x65f88
+	text "I picked up a good"
+	line "little thing at"
+	cont "the water's edge."
+
+	para "Like I promised,"
+	line "it's yours."
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x65ff2
+
+UnknownText_0x65ff2: ; 0x65ff2
+	text "Have I found"
+	line "anything good?"
+
+	para "Nope, not yet."
+
+	para "It's like fishing,"
+	line "you need patience."
+	done
+; 0x66043
+
+UnknownText_0x66043: ; 0x66043
+	text "Yup, TULLY here…"
+
+	para "<PLAY_G>? What?"
+	line "You're lost?"
+
+	para "Our battle will be"
+	line "on @"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x66087
+
+UnknownText_0x66087: ; 0x66087
+	text "I've got something"
+	line "good for you."
+
+	para "Hustle over to"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x660be
+
+BrentRareTradeText: ; 0x660be
+	text "Oh yeah, I got an"
+	line "extremely rare"
+
+	para "#MON in a trade"
+	line "a while back."
+
+	para "Do you want to"
+	line "know what it is?"
+
+	para "Hehe, I'm keeping"
+	line "it a secret!"
+	done
+; 0x6613c
+
+UnknownText_0x6613c: ; 0x6613c
+	text "Oh yeah, I took"
+	line "down this wild"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text "."
+	line "It wasn't rare"
+
+	para "enough to bother"
+	line "catching."
+	done
+; 0x6618c
+
+UnknownText_0x6618c: ; 0x6618c
+	text "Oh yeah, I saw a"
+	line "rare #MON about"
+	cont "an hour ago."
+
+	para "It was my first"
+	line "sighting. But I"
+
+	para "didn't have any"
+	line "# BALLS…"
+
+	para "Would BILL laugh"
+	line "at my mistakes?"
+	done
+; 0x66214
+
+UnknownText_0x66214: ; 0x66214
+	text "You've got time"
+	line "like usual, right?"
+
+	para "Feel like having a"
+	line "battle?"
+
+	para "It'll be a chance"
+	line "to see my rare"
+
+	para "#MON. It'll be"
+	line "worth your time!"
+
+	para "You know where--"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x662a9
+
+UnknownText_0x662a9: ; 0x662a9
+	text "So that's it then."
+	done
+; 0x662bc
+
+UnknownText_0x662bc: ; 0x662bc
+	text "Did you know…?"
+	line "BILL's father is"
+
+	para "supposed to be a"
+	line "great #MANIAC."
+	done
+; 0x662fc
+
+UnknownText_0x662fc: ; 0x662fc
+	text "Did you know…?"
+	line "Apparently BILL's"
+
+	para "grandpa isn't a"
+	line "#MANIAC."
+	done
+; 0x66335
+
+UnknownText_0x66335: ; 0x66335
+	text "Did you know…?"
+	line "BILL's originally"
+	cont "from GOLDENROD."
+	done
+; 0x66366
+
+UnknownText_0x66366: ; 0x66366
+	text "Did you know…?"
+	line "BILL evidently"
+
+	para "lives on ROUTE 25"
+	line "in KANTO."
+	done
+; 0x663a1
+
+UnknownText_0x663a1: ; 0x663a1
+	text "Did you know…?"
+	line "ABRA was the first"
+
+	para "#MON that BILL"
+	line "ostensibly caught."
+	done
+; 0x663e6
+
+UnknownText_0x663e6: ; 0x663e6
+	text "Did you know…?"
+	line "BILL's younger"
+
+	para "sister apparently"
+	line "can't wink."
+	done
+; 0x66421
+
+UnknownText_0x66421: ; 0x66421
+	text "Did you know…?"
+	line "BILL supposedly"
+
+	para "hates milk and"
+	line "can't drink it."
+	done
+; 0x6645f
+
+UnknownText_0x6645f: ; 0x6645f
+	text "Did you know…?"
+	line "Evidently, BILL"
+
+	para "isn't very good at"
+	line "battling."
+	done
+; 0x6649b
+
+UnknownText_0x6649b: ; 0x6649b
+	text "Did you know…?"
+	line "BILL appears to"
+
+	para "like the lady at"
+	line "the FLOWER SHOP."
+	done
+; 0x664dd
+
+UnknownText_0x664dd: ; 0x664dd
+	text "Did you know…?"
+	line "BILL's mother is"
+
+	para "said to have been"
+	line "a KIMONO GIRL."
+	done
+; 0x6651e
+
+UnknownText_0x6651e: ; 0x6651e
+	text "You wanted to hear"
+	line "about BILL?"
+
+	para "Sorry, but I'm too"
+	line "busy for you."
+
+	para "I'll call when I"
+	line "have time."
+	done
+; 0x66579
+
+UnknownText_0x66579: ; 0x66579
+	text "You want to see my"
+	line "rare #MON."
+
+	para "Hurry over to"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x665ad
+
+UnknownText_0x665ad: ; 0x665ad
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "adorable, don't"
+
+	para "you think so?"
+	line "I always sleep"
+
+	para "with it--it's so"
+	line "fluffy and warm!"
+	done
+; 0x66605
+
+UnknownText_0x66605: ; 0x66605
+	text "Oh, and we had to"
+	line "battle a wild"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " a while"
+	line "ago…"
+
+	para "My CLEFAIRY came"
+	line "close to fainting!"
+
+	para "Isn't that awful?"
+
+	para "I hate those nasty"
+	line "@"
+	text_from_ram StringBuffer4
+	text "!"
+	done
+; 0x66688
+
+UnknownText_0x66688: ; 0x66688
+	text "Oh, and we had to"
+	line "battle a wild"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " a while"
+	line "ago…"
+
+	para "My CLEFAIRY got"
+	line "frightened, so we"
+
+	para "ran away as fast"
+	line "as we could!"
+
+	para "I just can't help"
+	line "feeling protective"
+	cont "of my CLEFAIRY."
+	done
+; 0x66730
+
+UnknownText_0x66730: ; 0x66730
+	text "I know this might"
+	line "surprise you, but"
+
+	para "would you like to"
+	line "battle?"
+
+	para "I'll be waiting"
+	line "with CLEFAIRY on"
+	cont "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x66796
+
+TiffanyItsAwfulText: ; 0x66796
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "It's awful."
+	line "My CLEFAIRY…"
+
+	para "Huh? <PLAY_G>?"
+
+	para "Oh, sorry! I was"
+	line "in a hurry, and I…"
+
+	para "I have to go!"
+	line "Bye-bye!"
+	done
+; 0x667f7
+
+UnknownText_0x667f7: ; 0x667f7
+	text "Bye-bye!"
+	done
+; 0x66801
+
+UnknownText_0x66801: ; 0x66801
+	text "I bought some PINK"
+	line "BOWS at GOLDENROD"
+
+	para "DEPT.STORE for my"
+	line "CLEFAIRY."
+
+	para "I got too many, so"
+	line "I'll give you one!"
+
+	para "Come collect it on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x66882
+
+UnknownText_0x66882: ; 0x66882
+	text "I love dressing up"
+	line "my CLEFAIRY!"
+	done
+; 0x668a3
+
+UnknownText_0x668a3: ; 0x668a3
+	text "What's wrong?"
+	line "Can't you visit?"
+
+	para "CLEFAIRY got tired"
+	line "and fell asleep."
+
+	para "I'm not sure if I"
+	line "can wake it up…"
+
+	para "Please hurry to"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x6691d
+
+UnknownText_0x6691d: ; 0x6691d
+	text "What's wrong?"
+	line "Can't you visit?"
+
+	para "I'm sure this will"
+	line "look good on your"
+	cont "CLEFAIRY."
+
+	para "Please hurry to"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x66980
+
+VanceLiftoffText: ; 0x66980
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "become tougher."
+
+	para "We've achieved"
+	line "liftoff!"
+	done
+; 0x669b2
+
+UnknownText_0x669b2: ; 0x669b2
+	text "We can easily beat"
+	line "@"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "…Huh? You too?"
+	line "Isn't that great?"
+	done
+; 0x669ed
+
+UnknownText_0x669ed: ; 0x669ed
+	text "But get this, a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text_start
+	para "just barely eluded"
+	line "us."
+
+	para "I wanted to FLY"
+	line "after it…"
+	done
+; 0x66a3a
+
+UnknownText_0x66a3a: ; 0x66a3a
+	text "Right now, I'm on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+
+	para "You know, where I"
+	line "first met you?"
+
+	para "Want to battle?"
+	line "I'll wait here."
+	done
+; 0x66a93
+
+UnknownText_0x66a93: ; 0x66a93
+	text "OK, bye for now!"
+	done
+; 0x66aa5
+
+VanceLookingForwardText: ; 0x66aa5
+	text "I'll be looking"
+	line "forward to our"
+	cont "next battle!"
+	done
+; 0x66ad1
+
+VanceHurryHurryText: ; 0x66ad1
+	text "Oh, <PLAY_G>!"
+	line "Hurry, hurry!"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "!"
+	line "FLY over now!"
+	done
+; 0x66afc
+
+WiltonGrownText: ; 0x66afc
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "grown impressive!"
+
+	para "My fishing skills"
+	line "have improved too!"
+	done
+; 0x66b3e
+
+UnknownText_0x66b3e: ; 0x66b3e
+	text "We beat a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text "…"
+
+	para "You know, I have"
+	line "more fun fishing"
+
+	para "than beating wild"
+	line "#MON."
+	done
+; 0x66b8f
+
+UnknownText_0x66b8f: ; 0x66b8f
+	text "But a while back,"
+	line "we came this close"
+
+	para "to landing a wild"
+	line "@"
+	text_from_ram StringBuffer4
+	text "."
+
+	para "I tell you, it was"
+	line "huge. Believe me."
+	done
+; 0x66bf3
+
+UnknownText_0x66bf3: ; 0x66bf3
+	text "I'm fishing on"
+	line "@"
+	text_from_ram StringBuffer5
+	text ","
+
+	para "but nothing's"
+	line "biting today."
+
+	para "Help me while my"
+	line "time away, come"
+	cont "over for a battle."
+	done
+; 0x66c58
+
+UnknownText_0x66c58: ; 0x66c58
+	text "All right, later."
+	done
+; 0x66c6b
+
+UnknownText_0x66c6b: ; 0x66c6b
+	text "I snagged an item"
+	line "while fishing."
+
+	para "Come pick it up on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "."
+	done
+; 0x66ca7
+
+WiltonHaventFoundAnythingText: ; 0x66ca7
+	text "Nah, I haven't"
+	line "found anything"
+
+	para "that's worth your"
+	line "time."
+
+	para "You have to have"
+	line "patience."
+	done
+; 0x66cf7
+
+WiltonNotBitingText: ; 0x66cf7
+	text "Sigh…"
+	line "They're not biting"
+
+	para "like before on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "…"
+
+	para "You have to come"
+	line "for a battle!"
+	done
+; 0x66d45
+
+WiltonWantThisText: ; 0x66d45
+	text "Don't you want"
+	line "this item?"
+
+	para "Hah? You don't"
+	line "know where?"
+
+	para "@"
+	text_from_ram StringBuffer5
+	text "…"
+	line "Just head from"
+
+	para "MAHOGANY toward"
+	line "BLACKTHORN!"
+	done
+; 0x66dab
+
+UnknownText_0x66dab: ; 0x66dab
+	text "Anyway, we'll chat"
+	line "again!"
+	done
+; 0x66dc5
+
+UnknownText_0x66dc5: ; 0x66dc5
+	text "Are you still on"
+	line "your journey?"
+
+	para "I remain dedicated"
+	line "to my training."
+
+	para "Oooooaaarrrgh!"
+	done
+; 0x66e17
+
+UnknownText_0x66e17: ; 0x66e17
+	text "I'm in training"
+	line "now. I apologize,"
+
+	para "but call me back"
+	line "another time."
+
+	para "Oooooaaarrrgh!"
+	done
+; 0x66e67
+
+UnknownText_0x66e67: ; 0x66e67
+	text "I apologize, but I"
+	line "don't have time to"
+
+	para "chat while I am in"
+	line "training!"
+
+	para "I'll have time to"
+	line "chat tomorrow!"
+
+	para "Yiiihah!"
+	done
+; 0x66ed3
+
+UnknownText_0x66ed3: ; 0x66ed3
+	text "I plan to take a"
+	line "lunch break, so"
+
+	para "come see me then!"
+	line "Ayiiiyah!"
+	done
+; 0x66f11
+
+KenjiBreakText: ; 0x66f11
+	text "I'm taking a break"
+	line "on ROUTE 45!"
+
+	para "Why not drop by if"
+	line "you are free?"
+	done
+; 0x66f52
+
+UnknownText_0x66f52: ; 0x66f52
+	text "I rested up over"
+	line "my lunch break."
+
+	para "Now it's time to"
+	line "resume training!"
+
+	para "Oooryaah!"
+	done
+; 0x66f9f
+
+ParryNoMatchText: ; 0x66f9f
+	text "Nothing can match"
+	line "my @"
+	text_from_ram StringBuffer4
+	text " now."
+	done
+; 0x66fc0
+
+UnknownText_0x66fc0: ; 0x66fc0
+	text "Yeah, we KO'd a"
+	line "wild @"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "That was OK, but I"
+	line "wanted to get it…"
+	done
+; 0x67001
+
+UnknownText_0x67001: ; 0x67001
+	text "And yesterday, we"
+	line "spotted a wild"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text "."
+	line "We were debating"
+
+	para "whether to catch"
+	line "it or beat it."
+
+	para "When along came"
+	line "another guy who"
+
+	para "caught it!"
+	line "How about that!"
+	done
+; 0x67096
+
+UnknownText_0x67096: ; 0x67096
+	text "You're thinking"
+	line "you'd like to"
+
+	para "battle me. Am I"
+	line "right or what?"
+
+	para "Yep! We'll meet on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x670eb
+
+UnknownText_0x670eb: ; 0x670eb
+	text "OK, give me a call"
+	line "again!"
+	done
+; 0x67106
+
+ParryBattleWithMeText: ; 0x67106
+	text "You'll battle with"
+	line "me again, right?"
+	done
+; 0x6712a
+
+ParryHaventYouGottenToText: ; 0x6712a
+	text "Haven't you gotten"
+	line "to @"
+	text_from_ram StringBuffer5
+	text "?"
+
+	para "Waiting here isn't"
+	line "bad, but I'd sure"
+	cont "like to battle!"
+	done
+; 0x6717a
+
+UnknownText_0x6717a: ; 0x6717a
+	text_from_ram StringBuffer3
+	text "'s @"
+	text_from_ram StringBuffer4
+	text_start
+	line "is much stronger"
+	cont "than before!"
+	done
+; 0x671a4
+
+UnknownText_0x671a4: ; 0x671a4
+	text "And, and…"
+	line "I just battled and"
+	cont "beat @"
+	text_from_ram StringBuffer4
+	text "!"
+
+	para "I've raised my"
+	line "#MON properly!"
+	done
+; 0x671eb
+
+UnknownText_0x671eb: ; 0x671eb
+	text "But, but…"
+
+	para "A wild @"
+	text_from_ram StringBuffer4
+	text_start
+	line "got away from me"
+
+	para "again. It's just"
+	line "not fair!"
+	done
+; 0x6722e
+
+UnknownText_0x6722e: ; 0x6722e
+	text "I'm ERIN. Want to"
+	line "battle me again?"
+
+	para "I won't lose this"
+	line "time!"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x67281
+
+UnknownText_0x67281: ; 0x67281
+	text "See you. Bye-bye!"
+	done
+; 0x67294
+
+ErinWorkingHardText: ; 0x67294
+	text "I'm working hard"
+	line "to raise my"
+	cont "#MON!"
+
+	para "Come back for"
+	line "another battle!"
+	done
+; 0x672d5
+
+ErinComeBattleText: ; 0x672d5
+	text "Oh, <PLAY_G>!"
+	line "Come battle ERIN!"
+
+	para "I'll be waiting on"
+	line "@"
+	text_from_ram StringBuffer5
+	text "!"
+	done
+; 0x67308
--- /dev/null
+++ b/data/phone/text/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
+
+JackIntelligenceText: ; 0x1740c0
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "intelligence keeps"
+
+	para "rising. It might"
+	line "be smarter than"
+	cont "yours!"
+	done
+; 0x174106
+
+JackDefeatedMonText: ; 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
+
+JackThunderTriviaText: ; 0x174261
+	text "Did you know?"
+
+	para "When it's raining,"
+	line "THUNDER is sure to"
+	cont "strike."
+	done
+; 0x17429d
+
+JackRolloutTriviaText: ; 0x17429d
+	text "Did you know…?"
+
+	para "If you use DEFENSE"
+	line "CURL, ROLLOUT's"
+
+	para "power goes way up"
+	line "past normal."
+	done
+; 0x1742ee
+
+JackSolarbeamTriviaText: ; 0x1742ee
+	text "Did you know…?"
+
+	para "If the sunlight is"
+	line "harsh, SOLARBEAM"
+
+	para "doesn't need to be"
+	line "charged up."
+	done
+; 0x174340
+
+JackStompTriviaText: ; 0x174340
+	text "Did you know…?"
+
+	para "If the opponent"
+	line "uses MINIMIZE,"
+
+	para "your STOMP becomes"
+	line "more powerful."
+	done
+; 0x174391
+
+JackGustTriviaText: ; 0x174391
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "is FLYing, your"
+
+	para "GUST becomes much"
+	line "more powerful."
+	done
+; 0x1743e3
+
+JackTwisterTriviaText: ; 0x1743e3
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "is FLYing, your"
+
+	para "TWISTER becomes"
+	line "more powerful."
+	done
+; 0x174433
+
+JackEarthquakeTriviaText: ; 0x174433
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "uses DIG, your"
+
+	para "EARTHQUAKE becomes"
+	line "more powerful."
+	done
+; 0x174485
+
+JackMagnitudeTriviaText: ; 0x174485
+	text "Did you know…?"
+
+	para "If your opponent"
+	line "uses DIG, your"
+
+	para "MAGNITUDE becomes"
+	line "more powerful."
+	done
+; 0x1744d6
+
+JackSandstormTriviaText: ; 0x1744d6
+	text "Did you know…?"
+
+	para "The rock, ground"
+	line "and steel types"
+
+	para "can't be hurt by"
+	line "SANDSTORM."
+	done
+; 0x174522
+
+JackSunnyDayTriviaText: ; 0x174522
+	text "Did you know…?"
+
+	para "If the sunlight is"
+	line "harsh, water-type"
+
+	para "moves become much"
+	line "weaker."
+	done
+; 0x174571
+
+JackRainDanceTriviaText: ; 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
+
+BeverlyFoundNuggetText: ; 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_start
+	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
+
+GavenGreaterText: ; 0x174a24
+	text "My @"
+	text_from_ram StringBuffer4
+	text_start
+	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_start
+	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
+
+BethForgetDealText: ; 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
+
+JoseAromaText: ; 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
+
+JoseFoundSomethingText: ; 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
+
+JoeySharperText: ; 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_start
+	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
+
+WadeAreYouGrowingText: ; 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_start
+	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
+
+WadeBugCatchingContestText: ; 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
+
+WadeFoundBerryText: ; 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
+
+RalphNeglectingKidsText: ; 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
+
+LizHiTaniaText: ; 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
+
+AnthonyAteBerriesText: ; 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_start
+	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_start
+	cont "yesterday, see?"
+
+	para "Well, there were"
+	line "tons of @"
+	text_from_ram StringBuffer4
+	text_start
+	para "around! You have"
+	line "to see it!"
+
+	para "I get this feeling"
+	line "that @"
+	text_from_ram StringBuffer4
+	text_start
+	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
+
+ToddLooksCuteLikeMeText: ; 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
--- /dev/null
+++ b/data/phone/text/gaven_overworld.asm
@@ -1,0 +1,63 @@
+GavenAskNumber1Text:
+	text "Wow, you're tough."
+	line "I haven't battled"
+
+	para "that seriously in"
+	line "a long time."
+
+	para "Could I get your"
+	line "phone number?"
+
+	para "I'd like to battle"
+	line "again when I heal"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " and the"
+	line "rest of my team."
+	done
+
+GavenAskNumber2Text:
+	text "Could I get your"
+	line "phone number?"
+
+	para "I'd like to battle"
+	line "again when I heal"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " and the"
+	line "rest of my team."
+	done
+
+GavenNumberAcceptedText:
+	text "How should I beat"
+	line "you? I'm tormented"
+
+	para "by those thoughts"
+	line "all the time…"
+	done
+
+GavenNumberDeclinedText:
+	text "OK… I understand…"
+	line "But if you change"
+
+	para "your mind, give me"
+	line "a shout anytime."
+	done
+
+GavenPhoneFullText:
+	text "Your phone's"
+	line "memory is full."
+
+	para "You can't register"
+	line "my number."
+	done
+
+GavenRematchText:
+	text "Hi! I've been"
+	line "waiting for you!"
+
+	para "This time, I'm"
+	line "going to win!"
+	done
--- /dev/null
+++ b/data/phone/text/gina_overworld.asm
@@ -1,0 +1,67 @@
+GinaAskNumber1Text:
+	text "Whenever I see a"
+	line "strong trainer, I"
+
+	para "want to be their"
+	line "cheerleader."
+
+	para "When I'm on my"
+	line "walk, I sometimes"
+	cont "pick up items."
+
+	para "If I get anything,"
+	line "you can have it!"
+
+	para "Want to give me"
+	line "your number?"
+
+	para "I'll call as soon"
+	line "as I get anything."
+	done
+
+GinaAskNumber2Text:
+	text "If I find an item,"
+	line "you can have it!"
+
+	para "Want to give me"
+	line "your number?"
+	done
+
+GinaNumberAcceptedText:
+	text "I'll call as soon"
+	line "as I get anything!"
+	done
+
+GinaNumberDeclinedText:
+	text "Is that so? Well,"
+	line "I'll still be"
+	cont "rooting for you!"
+	done
+
+GinaPhoneFullText:
+	text "But your phone is"
+	line "all filled up!"
+	done
+
+GinaRematchText:
+	text "I've been waiting!"
+
+	para "I've gotten a bit"
+	line "better at this!"
+	done
+
+GinaGiftText:
+	text "So you're finally"
+	line "here!"
+
+	para "I think this will"
+	line "make you happy."
+	done
+
+GinaPackFullText:
+	text "Your PACK looks"
+	line "completely full."
+
+	para "I'll have to hold"
+	line "on to this."
+	done
--- /dev/null
+++ b/data/phone/text/huey_overworld.asm
@@ -1,0 +1,80 @@
+HueyAskNumber1Text:
+	text "Cool! That's the"
+	line "first time I've"
+	cont "lost in a while!"
+
+	para "Hey, give me your"
+	line "phone number."
+
+	para "You'd be fun to"
+	line "battle, so I'll"
+
+	para "call you when I"
+	line "get stronger!"
+	done
+
+HueyAskNumber2Text:
+	text "Hey, give me your"
+	line "phone number."
+
+	para "You'd be fun to"
+	line "battle, so I'll"
+
+	para "call you when I"
+	line "get stronger!"
+	done
+
+HueyNumberAcceptedText:
+	text "Hey, let's battle"
+	line "again!"
+	done
+
+HueyNumberDeclinedText:
+	text "Looks like you're"
+	line "a wimp…"
+	done
+
+HueyPhoneFullText:
+	text "Hey! Your phone's"
+	line "already full!"
+	done
+
+HueyRematchText:
+	text "Hey! I'm tired of"
+	line "waiting for you!"
+	done
+
+HueyPackFullText:
+	text "Oh… Your PACK's"
+	line "full. I'll give it"
+	cont "to you later."
+	done
+
+HueyRematchGiftText:
+	text "Man! You're as"
+	line "tough as ever!"
+
+	para "I've battled you"
+	line "over and over, but"
+
+	para "<PLAYER>, I haven't"
+	line "won once."
+
+	para "I bought tons of"
+	line "items to toughen"
+
+	para "up my #MON, but"
+	line "to no avail…"
+
+	para "Items alone aren't"
+	line "the answer."
+
+	para "That must be what"
+	line "it is…"
+
+	para "Here, take this,"
+	line "<PLAYER>."
+
+	para "I won't be needing"
+	line "it anymore…"
+	done
--- /dev/null
+++ b/data/phone/text/irwin_overworld.asm
@@ -1,0 +1,53 @@
+IrwinAskNumber1Text:
+	text "You're the best"
+	line "I've ever battled!"
+
+	para "Huh? You're the"
+	line "one who saved all"
+	cont "the SLOWPOKE?"
+
+	para "Well, no wonder I"
+	line "couldn't beat you!"
+
+	para "Would it be OK to"
+	line "get your number?"
+
+	para "I don't want to"
+	line "miss anything you"
+	cont "do from now on!"
+	done
+
+IrwinAskNumber2Text:
+	text "You will tell me"
+	line "your phone number?"
+	done
+
+IrwinNumberAcceptedText:
+	text "Wow! Gee, thanks!"
+	line "Now I can call you"
+
+	para "anytime, whether"
+	line "anything's up or"
+
+	para "not. You know,"
+	line "just to chat!"
+	done
+
+IrwinNumberDeclinedText:
+	text "Oh, but…"
+	line "I'm not dangerous!"
+
+	para "I just want to"
+	line "call and chat"
+
+	para "about everything"
+	line "and nothing!"
+	done
+
+IrwinPhoneFullText:
+	text "Your phone list is"
+	line "already full…"
+
+	para "You must be really"
+	line "popular…"
+	done
--- /dev/null
+++ b/data/phone/text/jack_overworld.asm
@@ -1,0 +1,55 @@
+JackAskNumber1Text:
+	text "Your knowledge is"
+	line "impressive!"
+
+	para "I like that!"
+
+	para "Want to trade"
+	line "battle tips?"
+
+	para "I'll phone if I"
+	line "get good info."
+
+	para "Would you tell me"
+	line "your number?"
+	done
+
+JackAskNumber2Text:
+	text "Want to trade"
+	line "battle tips?"
+
+	para "I'll phone if I"
+	line "get good info."
+
+	para "Would you tell me"
+	line "your number?"
+	done
+
+JackNumberAcceptedText:
+	text "I'll call you if I"
+	line "hear anything!"
+	done
+
+JackNumberDeclinedText:
+	text "Oh, OK. Too bad…"
+
+	para "Well, if you ever"
+	line "want my number,"
+	cont "come see me, OK?"
+	done
+
+JackPhoneFullText:
+	text "Oh?"
+	line "Your phone's full."
+
+	para "It can't register"
+	line "my number."
+	done
+
+JackRematchText:
+	text "Hi, I was waiting"
+	line "for you to show!"
+
+	para "Let's get started"
+	line "right away!"
+	done
--- /dev/null
+++ b/data/phone/text/joey_overworld.asm
@@ -1,0 +1,71 @@
+JoeyAskNumber1Text:
+	text "Listen, can I get"
+	line "your phone number?"
+
+	para "I'll ring you for"
+	line "some battles."
+
+	para "I'm a rookie too, "
+	line "so I think it'd be"
+	cont "a good motivator."
+	done
+
+JoeyAskNumber2Text:
+	text "Can I get your"
+	line "phone number?"
+
+	para "I don't want to"
+	line "lose against you!"
+
+	para "We have to battle"
+	line "again, OK?"
+	done
+
+JoeyNumberAcceptedText:
+	text "I'll ring you"
+	line "whenever I get the"
+	cont "urge to battle!"
+	done
+
+JoeyNumberDeclinedText:
+	text "Oh, all right…"
+
+	para "But I won't lose"
+	line "to you again!"
+	done
+
+JoeyPhoneFullText:
+	text "Huh, what? Your"
+	line "phone's full."
+	done
+
+JoeyRematchText:
+	text "I've been waiting!"
+	line "Let's battle now!"
+	done
+
+JoeyPackFullText:
+	text "Hey, wait! Your"
+	line "PACK is stuffed!"
+
+	para "Well, we'll leave"
+	line "it till next time."
+	done
+
+JoeyRematchGiftText:
+	text "And yet another"
+	line "loss…"
+
+	para "No doubt about"
+	line "it--you're tough."
+
+	para "Being beaten this"
+	line "often actually"
+	cont "feels good now!"
+
+	para "Here, take this. "
+	line "Use it to get even"
+
+	para "tougher. That will"
+	line "toughen me up too!"
+	done
--- /dev/null
+++ b/data/phone/text/jose_overworld.asm
@@ -1,0 +1,73 @@
+JoseAskNumber1Text:
+	text "If my @"
+	text_from_ram StringBuffer4
+	text_start
+	line "sees anything"
+
+	para "pretty, it goes"
+	line "and gets it."
+
+	para "Do you like pretty"
+	line "things?"
+
+	para "I could share if"
+	line "it gets some more."
+
+	para "What's your phone"
+	line "number? I'll call."
+
+	para "Don't expect a"
+	line "whole lot, OK?"
+	done
+
+JoseAskNumber2Text:
+	text "Do you like pretty"
+	line "things?"
+
+	para "I could share if"
+	line "FARFETCH'D goes"
+	cont "and gets more."
+
+	para "What's your phone"
+	line "number? I'll call."
+	done
+
+JoseNumberAcceptedText:
+	text "I'll call you as"
+	line "soon as I get"
+	cont "something pretty."
+	done
+
+JoseNumberDeclinedText:
+	text "You sure? Well,"
+	line "tell me if you"
+	cont "change your mind."
+	done
+
+JosePhoneFullText:
+	text "Huh? Your phone"
+	line "list is full."
+	done
+
+JoseRematchText:
+	text "Tweet! Tweeeet!"
+
+	para "Kept me waiting!"
+	line "Go, FARFETCH'D!"
+	done
+
+JoseGiftText:
+	text "Kept me waiting!"
+	line "Look, this is it!"
+
+	para "See? Isn't it some"
+	line "kind of pretty?"
+	done
+
+JosePackFullText:
+	text "Huh? You don't"
+	line "have anywhere to"
+
+	para "put this. Better"
+	line "come back for it."
+	done
--- /dev/null
+++ b/data/phone/text/kenji_overworld.asm
@@ -1,0 +1,67 @@
+KenjiAskNumber1Text:
+	text "Our battle was"
+	line "remarkable!"
+
+	para "I wish for some-"
+	line "thing to remember"
+	cont "you by!"
+
+	para "Perhaps your phone"
+	line "number will do?"
+
+	para "My training makes"
+	line "it impossible to"
+	cont "chat much, but…"
+	done
+
+KenjiAskNumber2Text:
+	text "My training makes"
+	line "chatting tough,"
+
+	para "but will you take"
+	line "down my number?"
+	done
+
+KenjiNumberAcceptedText:
+	text "I must train"
+	line "harder to become"
+	cont "the mightiest!"
+	done
+
+KenjiNumberDeclinedText:
+	text "If you decide you"
+	line "want my number,"
+	cont "come see me."
+	done
+
+KenjiPhoneFullText:
+	text "Your phone appears"
+	line "to be full."
+
+	para "Come back later!"
+	done
+
+KenjiGiftText:
+	text "I wish to thank"
+	line "you, <PLAYER>!"
+
+	para "I've been training"
+	line "all alone…"
+
+	para "I was happy that"
+	line "you cared to call…"
+
+	para "I want you to have"
+	line "this!"
+	done
+
+KenjiPackFullText:
+	text "Your strength will"
+	line "not let you carry"
+
+	para "another thing!"
+	line "I will hold this"
+
+	para "till you lighten"
+	line "your PACK!"
+	done
--- /dev/null
+++ b/data/phone/text/liz_overworld.asm
@@ -1,0 +1,44 @@
+LizAskNumber1Text:
+	text "Oh? You're on a"
+	line "big journey to see"
+	cont "the sights? Neat!"
+
+	para "Let's be friends!"
+	line "Can I have your"
+	cont "phone number?"
+
+	para "I want to hear"
+	line "about everything"
+	cont "you've seen!"
+	done
+
+LizAskNumber2Text:
+	text "Let's be friends!"
+	line "Can I have your"
+	cont "phone number?"
+
+	para "I want to hear"
+	line "about everything"
+	cont "you've seen!"
+	done
+
+LizNumberAcceptedText:
+	text "I'll telephone you"
+	line "if I hear anything"
+	cont "interesting."
+	done
+
+LizNumberDeclinedText:
+	text "Aww… You won't be"
+	line "my friend?"
+	done
+
+LizPhoneFullText:
+	text "Wait! Your phone"
+	line "list is filled up!"
+	done
+
+LizRematchText:
+	text "You're late! Let's"
+	line "get started now!"
+	done
--- /dev/null
+++ b/data/phone/text/mom.asm
@@ -1,0 +1,165 @@
+MomPhoneGreetingText: ; 0x1b4000
+	text "Hello?"
+
+	para "Oh, hi, <PLAYER>!"
+	line "Working hard?"
+	done
+
+MomPhoneLandmarkText: ; 0x1b4021
+	text "Oh, so you're in"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Isn't that where"
+	line "@"
+	text_from_ram StringBuffer4
+	text_start
+	para "is? Did you go"
+	line "take a look?"
+	done
+
+MomPhoneGenericAreaText: ; 0x1b406b
+	text "Really, you're in"
+	line "@"
+	text_from_ram StringBuffer3
+	text "?"
+
+	para "I've never gone"
+	line "there. That's kind"
+	cont "of neat, <PLAYER>."
+	done
+
+MomPhoneNewBarkText: ; 0x1b40b1
+	text "What? You're in"
+	line "@"
+	text_from_ram StringBuffer3
+	text "?"
+
+	para "Come see your MOM"
+	line "sometime!"
+	done
+
+MomPhoneCherrygroveText: ; 0x1b40e4
+	text "You're visiting"
+	line "@"
+	text_from_ram StringBuffer3
+	text "?"
+
+	para "How about coming"
+	line "home for a bit?"
+	done
+
+MomOtherAreaText: ; 0x1b411c
+	text "Wow, you're in"
+	line "@"
+	text_from_ram StringBuffer3
+	text "?"
+
+	para "Good luck on your"
+	line "#MON quest!"
+	done
+
+MomDeterminedText: ; 0x1b4150
+	text "That sounds really"
+	line "tough."
+
+	para "But, <PLAYER>, I"
+	line "know you're really"
+
+	para "determined. You'll"
+	line "be OK, right?"
+	done
+
+MomCheckBalanceText: ; 0x1b41a7
+	text "By the way, you've"
+	line "saved up ¥@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Do you want to"
+	line "keep on saving?"
+	done
+
+MomImportantToSaveText: ; 0x1b41ea
+	text "It's important to"
+	line "save your money."
+	done
+
+MomYoureNotSavingText: ; 0x1b420d
+	text "Oh, <PLAYER>,"
+	line "you're not saving"
+
+	para "any money. Would"
+	line "you like to save?"
+	done
+
+MomYouveSavedText: ; 0x1b4249
+	text "By the way, you've"
+	line "saved up ¥@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Want to start"
+	line "saving again?"
+	done
+
+MomOKIllSaveText: ; 0x1b4289
+	text "OK. I'll save your"
+	line "money."
+	done
+
+MomPhoneWontSaveMoneyText: ; 0x1b42a3
+	text "OK. I won't save"
+	line "your money."
+	done
+
+MomPhoneHangUpText: ; 0x1b42c0
+	text "<PLAYER>, keep it"
+	line "up! I'm rooting"
+	cont "for you, baby!"
+	done
+
+MomPhoneNoPokemonText: ; 0x1b42ea
+	text "Hello?"
+
+	para "Oh, hi, <PLAYER>!"
+	line "Wasn't PROF.ELM"
+	cont "waiting for you?"
+	done
+
+MomPhoneNoPokedexText: ; 0x1b431d
+	text "Hello?"
+
+	para "Oh, hi, <PLAYER>!"
+	line "You're on a big"
+
+	para "mission for PROF."
+	line "ELM? Be good!"
+	done
+
+MomPhoneNoGymQuestText: ; 0x1b435f
+	text "Hello?"
+
+	para "Hi, <PLAYER>! If"
+	line "you're done with"
+
+	para "your errand come"
+	line "on home, dear."
+	done
+
+MomPhoneLectureText: ; 0x1b43a1
+	text "Hello?"
+
+	para "…… <PLAYER>?"
+	line "I heard from PROF."
+
+	para "ELM that you went"
+	line "on a long trip."
+
+	para "I wish you would"
+	line "have told me…"
+
+	para "What about money?"
+	line "Should I save it?"
+	done
--- /dev/null
+++ b/data/phone/text/parry_overworld.asm
@@ -1,0 +1,73 @@
+ParryAskNumber1Text:
+	text "Sheesh, the way"
+	line "you attacked! That"
+
+	para "was something! We"
+	line "should meet again!"
+
+	para "How about giving"
+	line "me your number?"
+	done
+
+ParryAskNumber2Text:
+	text "So you want to"
+	line "register my phone"
+
+	para "number for a re-"
+	line "match, huh?"
+	done
+
+ParryNumberAcceptedText:
+	text "I'll call you"
+	line "whenever I feel"
+	cont "like battling!"
+	done
+
+ParryNumberDeclinedText:
+	text "No? That's fine."
+
+	para "A definite no is"
+	line "easy to take!"
+
+	para "I'll be right here"
+	line "when you're ready"
+	cont "for a rematch."
+	done
+
+ParryPhoneFullText:
+	text "Oh? There's no"
+	line "room to register"
+	cont "my phone number."
+	done
+
+ParryRematchText:
+	text "Hey, here comes"
+	line "the kid! Let's go!"
+
+	para "Ready for my usual"
+	line "no-brainer, all-"
+	cont "out offense?"
+	done
+
+ParryPackFullText:
+	text "Your PACK looks"
+	line "stuffed full!"
+
+	para "You can't have"
+	line "this now."
+	done
+
+ParryRematchGiftText:
+	text "Well, you're"
+	line "special all right."
+
+	para "If only I'd begun"
+	line "#MON when I was"
+	cont "a tad younger…"
+
+	para "I want you to work"
+	line "and succeed for"
+
+	para "the both of us."
+	line "So take this, OK?"
+	done
--- /dev/null
+++ b/data/phone/text/ralph_overworld.asm
@@ -1,0 +1,58 @@
+RalphAskNumber1Text:
+	text "Don't young people"
+	line "fish anymore?"
+
+	para "I've seen rare"
+	line "#MON while I've"
+	cont "been fishing…"
+
+	para "You young people"
+	line "like that, right?"
+
+	para "Want to trade"
+	line "phone numbers?"
+
+	para "I'll let you know"
+	line "if I see anything."
+	done
+
+RalphAskNumber2Text:
+	text "Hm? So you do want"
+	line "me to phone if I"
+	cont "see rare #MON?"
+	done
+
+RalphNumberAcceptedText:
+	text "Yep, phone if I"
+	line "see rare #MON."
+
+	para "Don't worry, I"
+	line "won't forget!"
+	done
+
+RalphNumberDeclinedText:
+	text "Oh…"
+	line "My own kids won't"
+
+	para "even give me their"
+	line "phone numbers…"
+
+	para "Is that how young"
+	line "people are today?"
+	done
+
+RalphPhoneFullText:
+	text "Your phone's"
+	line "memory is full."
+
+	para "It seems that"
+	line "young people all"
+	cont "have #GEAR."
+	done
+
+RalphRematchText:
+	text "Hey, kid!"
+
+	para "No losing for me"
+	line "this day!"
+	done
--- /dev/null
+++ b/data/phone/text/reena_overworld.asm
@@ -1,0 +1,45 @@
+ReenaAskNumber1Text:
+	text "Not bad…"
+	line "It's something to"
+
+	para "beat me, even by"
+	line "an unlikely fluke…"
+
+	para "I like you! Give"
+	line "me your number!"
+
+	para "You can be my"
+	line "practice partner!"
+	done
+
+ReenaAskNumber2Text:
+	text "Give me your phone"
+	line "number!"
+
+	para "You are going to"
+	line "be my practice"
+	cont "partner!"
+	done
+
+ReenaNumberAcceptedText:
+	text "Don't be too proud"
+	line "about beating me!"
+
+	para "It was a fluke!"
+	done
+
+ReenaNumberDeclinedText:
+	text "I don't believe"
+	line "it! You're going"
+	cont "to regret this!"
+	done
+
+ReenaPhoneFullText:
+	text "What? Your phone"
+	line "list has no room!"
+	done
+
+ReenaRematchText:
+	text "What took you?"
+	line "Start right away!"
+	done
--- /dev/null
+++ b/data/phone/text/tiffany_overworld.asm
@@ -1,0 +1,62 @@
+TiffanyAskNumber1Text:
+	text "Hi! You like"
+	line "CLEFAIRY too?"
+
+	para "They're so very"
+	line "cute, aren't they?"
+
+	para "I think we can be"
+	line "good friends!"
+
+	para "I want to know"
+	line "your phone number!"
+
+	para "Let's talk about"
+	line "CLEFAIRY!"
+	done
+
+TiffanyAskNumber2Text:
+	text "I want to know"
+	line "your phone number!"
+
+	para "Let's talk about"
+	line "CLEFAIRY!"
+	done
+
+TiffanyNumberAcceptedText:
+	text "Isn't my CLEFAIRY"
+	line "super-adorable?"
+	done
+
+TiffanyNumberDeclinedText:
+	text "Aww… Oh well."
+	line "Look for me if you"
+
+	para "want to talk about"
+	line "CLEFAIRY."
+	done
+
+TiffanyPhoneFullText:
+	text "Oh? Your phone"
+	line "registry is full."
+	done
+
+TiffanyRematchText:
+	text "There you are!"
+
+	para "CLEFAIRY, I want"
+	line "you to try hard!"
+	done
+
+TiffanyGiftText:
+	text "You took a long"
+	line "time. See this?"
+
+	para "Isn't it cute?"
+	line "It's a PINK BOW."
+	done
+
+TiffanyPackFullText:
+	text "Uh-oh. Your PACK"
+	line "is crammed full."
+	done
--- /dev/null
+++ b/data/phone/text/todd_overworld.asm
@@ -1,0 +1,68 @@
+ToddAskNumber1Text:
+	text "From here, I can"
+	line "see GOLDENROD's"
+
+	para "DEPT.STORE. They"
+	line "have bargain sales"
+
+	para "up on the rooftop"
+	line "every so often."
+
+	para "Could I get your"
+	line "phone number?"
+
+	para "I'll call you when"
+	line "they have a sale."
+	done
+
+ToddAskNumber2Text:
+	text "If you give me"
+	line "your number, I'll"
+
+	para "call you when they"
+	line "have a sale."
+	done
+
+ToddNumberAcceptedText:
+	text "I check GOLDENROD"
+	line "DEPT.STORE every"
+
+	para "day, so I know"
+	line "when there's a"
+	cont "sale."
+	done
+
+ToddNumberDeclinedText:
+	text "Anyway…"
+
+	para "If you're short on"
+	line "money, take down"
+	cont "my number."
+
+	para "I'll call you when"
+	line "there's a sale."
+	done
+
+ToddPhoneFullText:
+	text "Your phone doesn't"
+	line "have enough memory"
+	cont "for more numbers."
+	done
+
+ToddRematchText:
+	text "I waited for you!"
+	line "I even cut back my"
+
+	para "shopping to raise"
+	line "my #MON better!"
+	done
+
+UnusedText_0xa43ca:
+; This is unused; Todd says this during the department store sale,
+; but this is a duplicate of the actual string in the Route 34 scripts.
+	text "Shopping under the"
+	line "sky!"
+
+	para "It feels so nice"
+	line "up on a rooftop."
+	done
--- /dev/null
+++ b/data/phone/text/trainers1.asm
@@ -1,0 +1,1991 @@
+UnknownText_0x1b4dc5: ; 0x1b4dc5
+	text "Hello. This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Good morning,"
+	line "<PLAY_G>!"
+	done
+
+UnknownText_0x1b4ded: ; 0x1b4ded
+	text "Hello. This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "How's it going,"
+	line "<PLAY_G>?"
+	done
+
+UnknownText_0x1b4e16: ; 0x1b4e16
+	text "Hello. This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Good evening,"
+	line "<PLAY_G>!"
+	done
+
+UnknownText_0x1b4e3e: ; 0x1b4e3e
+	text "<PLAY_G>, good"
+	line "morning!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you doing?"
+	done
+
+UnknownText_0x1b4e72: ; 0x1b4e72
+	text "<PLAY_G>, howdy!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Isn't it nice out?"
+	done
+
+UnknownText_0x1b4e9e: ; 0x1b4e9e
+	text "<PLAY_G>, good"
+	line "evening!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Got a minute?"
+	done
+
+UnknownText_0x1b4ecd: ; 0x1b4ecd
+	text "How are your"
+	line "#MON doing?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "so curious, it's a"
+
+	para "problem. Maybe"
+	line "it's like me…"
+	done
+
+UnknownText_0x1b4f21: ; 0x1b4f21
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh! Good morning,"
+	line "<PLAYER>."
+	done
+
+UnknownText_0x1b4f4d: ; 0x1b4f4d
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh! Good day,"
+	line "<PLAYER>."
+	done
+
+UnknownText_0x1b4f75: ; 0x1b4f75
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh! Good evening,"
+	line "<PLAYER>."
+	done
+
+UnknownText_0x1b4fa1: ; 0x1b4fa1
+	text "Hello, <PLAYER>."
+	line "Good morning."
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Were you asleep?"
+	done
+
+UnknownText_0x1b4fda: ; 0x1b4fda
+	text "Hi, <PLAYER>."
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "How are you doing?"
+	done
+
+UnknownText_0x1b5004: ; 0x1b5004
+	text "Hi, <PLAYER>."
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Were you awake?"
+	done
+
+UnknownText_0x1b502b: ; 0x1b502b
+	text "Keeping your"
+	line "#MON happy?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "healthy. It eats a"
+	cont "lot every day."
+	done
+
+UnknownText_0x1b5073: ; 0x1b5073
+	text "Yeah, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Huh? What's up,"
+	line "<PLAYER>?"
+	done
+
+UnknownText_0x1b509b: ; 0x1b509b
+	text "Yeah, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Huh? What's up"
+	line "<PLAYER>?"
+	done
+
+UnknownText_0x1b50c2: ; 0x1b50c2
+	text "Yeah, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Huh? What's up"
+	line "<PLAYER>?"
+	done
+
+UnknownText_0x1b50e9: ; 0x1b50e9
+	text "Yo, <PLAYER>!"
+	line "You awake?"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "How's it going?"
+	done
+
+UnknownText_0x1b511a: ; 0x1b511a
+	text "Yo, <PLAYER>! You"
+	line "free right now?"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "How's it going?"
+	done
+
+UnknownText_0x1b5154: ; 0x1b5154
+	text "Yo, <PLAYER>!"
+	line "Were you asleep?"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "How's it going?"
+	done
+
+UnknownText_0x1b518b: ; 0x1b518b
+	text "How are your"
+	line "#MON doing?"
+
+	para "My #MON are a"
+	line "bit too energetic."
+
+	para "@"
+	text_from_ram StringBuffer4
+	text ","
+	line "especially."
+
+	para "Every time it"
+	line "spots a trainer,"
+	cont "it has to battle."
+
+	para "It gets to be a"
+	line "bit much for me!"
+	done
+
+UnknownText_0x1b522b: ; 0x1b522b
+	text "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "looking tougher"
+	cont "than ever."
+
+	para "It looks even"
+	line "tougher than me!"
+	done
+
+UnknownText_0x1b5270: ; 0x1b5270
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking…"
+
+	para "Hi, <PLAY_G>!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b52a5: ; 0x1b52a5
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking…"
+
+	para "Hi, <PLAY_G>!"
+	done
+
+UnknownText_0x1b52cc: ; 0x1b52cc
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking…"
+
+	para "Hi, <PLAY_G>!"
+	line "Good evening!"
+	done
+
+UnknownText_0x1b5301: ; 0x1b5301
+	text "<PLAY_G>, good"
+	line "morning!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you doing?"
+	done
+
+UnknownText_0x1b5335: ; 0x1b5335
+	text "Hi, <PLAY_G>!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you doing?"
+	done
+
+UnknownText_0x1b535f: ; 0x1b535f
+	text "<PLAY_G>, good"
+	line "evening!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you doing?"
+	done
+
+UnknownText_0x1b5393: ; 0x1b5393
+	text "How are your"
+	line "#MON doing?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "doing as great as"
+	cont "ever."
+
+	para "Let's keep at it"
+	line "and become #MON"
+	cont "CHAMPS!"
+	done
+
+UnknownText_0x1b53f7: ; 0x1b53f7
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh, <PLAY_G>."
+	line "Good morning."
+
+	para ""
+	done
+
+UnknownText_0x1b5424: ; 0x1b5424
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh. Hi, <PLAY_G>."
+	done
+
+UnknownText_0x1b5446: ; 0x1b5446
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh, <PLAY_G>."
+	line "Good evening."
+	done
+
+UnknownText_0x1b5472: ; 0x1b5472
+	text "Good morning,"
+	line "<PLAY_G>!"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Were you sleeping?"
+	done
+
+UnknownText_0x1b54a6: ; 0x1b54a6
+	text "<PLAY_G>, hi!"
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Do you have some"
+	line "time?"
+	done
+
+UnknownText_0x1b54d4: ; 0x1b54d4
+	text "Hi, <PLAY_G>."
+	line "Good evening."
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "I hope you were"
+	line "awake."
+	done
+
+UnknownText_0x1b5510: ; 0x1b5510
+	text "Are you the kind"
+	line "of person who goes"
+
+	para "to #MON CENTERS"
+	line "often?"
+
+	para "I go every day."
+	line "Watching out for"
+
+	para "the health of your"
+	line "#MON is a basic"
+
+	para "part of being a"
+	line "#MON trainer."
+	done
+
+UnknownText_0x1b55ae: ; 0x1b55ae
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, <PLAY_G>?"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b55da: ; 0x1b55da
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, <PLAY_G>? Hi!"
+	done
+
+UnknownText_0x1b55fc: ; 0x1b55fc
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, <PLAY_G>?"
+	line "Good evening!"
+	done
+
+UnknownText_0x1b5628: ; 0x1b5628
+	text "Oh, <PLAY_G>?"
+
+	para "Tweet! Yeah, it's"
+	line "me, @"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b564c: ; 0x1b564c
+	text "Oh, <PLAY_G>?"
+
+	para "Tweet! Yeah, it's"
+	line "me, @"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b5670: ; 0x1b5670
+	text "Oh, <PLAY_G>?"
+
+	para "Tweet! Yeah, it's"
+	line "me, @"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b5694: ; 0x1b5694
+	text "Are your #MON"
+	line "still cooking?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " has"
+	line "too much energy."
+
+	para "Once it takes off,"
+	line "it won't come back"
+	cont "for a while."
+	done
+
+UnknownText_0x1b5702: ; 0x1b5702
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh. Hi, <PLAYER>."
+	line "What's up?"
+	done
+
+UnknownText_0x1b572e: ; 0x1b572e
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, hi, <PLAYER>,"
+	line "what's up?"
+	done
+
+UnknownText_0x1b575a: ; 0x1b575a
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, hi, <PLAYER>,"
+	line "what's up?"
+	done
+
+UnknownText_0x1b5786: ; 0x1b5786
+	text "You're slow! Hurry"
+	line "up and answer!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b57b7: ; 0x1b57b7
+	text "You're slow! Hurry"
+	line "up and answer!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b57e8: ; 0x1b57e8
+	text "You're slow! Hurry"
+	line "up and answer!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b5819: ; 0x1b5819
+	text "Hey, how are your"
+	line "#MON doing?"
+
+	para "What? Great?"
+	line "I see…"
+
+	para "What? My #MON?"
+
+	para "Of course they're"
+	line "doing great! What"
+
+	para "kind of a question"
+	line "is that?"
+	done
+
+UnknownText_0x1b589a: ; 0x1b589a
+	text "Hi, @"
+	text_from_ram StringBuffer3
+	text " here!"
+
+	para "Oh, <PLAYER>? You"
+	line "doing well?"
+	done
+
+UnknownText_0x1b58c2: ; 0x1b58c2
+	text "Hi, @"
+	text_from_ram StringBuffer3
+	text " here!"
+
+	para "Oh, <PLAYER>? You"
+	line "doing well?"
+	done
+
+UnknownText_0x1b58ea: ; 0x1b58ea
+	text "Hi, @"
+	text_from_ram StringBuffer3
+	text " here!"
+
+	para "Oh, <PLAYER>? You"
+	line "doing well?"
+	done
+
+UnknownText_0x1b5912: ; 0x1b5912
+	text "Yo, <PLAYER>!"
+	line "How're you doing?"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text ","
+	line "got a minute?"
+	done
+
+UnknownText_0x1b5948: ; 0x1b5948
+	text "Yo, <PLAYER>! How's"
+	line "it going?"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Got a minute?"
+	done
+
+UnknownText_0x1b597c: ; 0x1b597c
+	text "Yo, <PLAYER>!"
+	line "How're you doing?"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text ","
+	line "got a minute?"
+	done
+
+UnknownText_0x1b59b2: ; 0x1b59b2
+	text "How are your"
+	line "#MON doing?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text "'s"
+	line "raring to go, just"
+	cont "like always."
+
+	para "It's the only one"
+	line "I have. I'm going"
+
+	para "to become a great"
+	line "trainer with it!"
+	done
+
+UnknownText_0x1b5a3b: ; 0x1b5a3b
+	text "Hello? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking."
+
+	para "Oh. Hi, <PLAY_G>!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b5a74: ; 0x1b5a74
+	text "Hello? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking."
+
+	para "Oh, hi, <PLAY_G>!"
+	done
+
+UnknownText_0x1b5a9f: ; 0x1b5a9f
+	text "Hello? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking."
+
+	para "Oh, hi, <PLAY_G>!"
+	line "Good evening!"
+	done
+
+UnknownText_0x1b5ad8: ; 0x1b5ad8
+	text "<PLAY_G>, good"
+	line "morning!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Isn't it nice out?"
+	done
+
+UnknownText_0x1b5b0b: ; 0x1b5b0b
+	text "<PLAY_G>, howdy!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Isn't it nice out?"
+	done
+
+UnknownText_0x1b5b37: ; 0x1b5b37
+	text "Good evening,"
+	line "<PLAY_G>!"
+
+	para "It's me, @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Were you awake?"
+	done
+
+UnknownText_0x1b5b68: ; 0x1b5b68
+	text "How are your"
+	line "#MON doing?"
+
+	para "My #MON have"
+	line "too much energy to"
+
+	para "burn. It gets to"
+	line "be a problem."
+
+	para "Of all my #MON,"
+	line "@"
+	text_from_ram StringBuffer4
+	text " is the"
+	cont "hardest to handle."
+
+	para "Working with it is"
+	line "exhausting."
+	done
+
+UnknownText_0x1b5c10: ; 0x1b5c10
+	text "Yes? Ah, <PLAY_G>."
+
+	para "You're courteous"
+	line "enough to state"
+
+	para "your name when you"
+	line "call on the phone."
+	done
+
+UnknownText_0x1b5c63: ; 0x1b5c63
+	text "Yes? Ah, <PLAY_G>."
+
+	para "You're courteous"
+	line "enough to state"
+
+	para "your name when you"
+	line "call on the phone."
+	done
+
+UnknownText_0x1b5cb6: ; 0x1b5cb6
+	text "Yes? Ah, <PLAY_G>."
+
+	para "You're courteous"
+	line "enough to state"
+
+	para "your name when you"
+	line "call on the phone."
+	done
+
+UnknownText_0x1b5d09: ; 0x1b5d09
+	text "Hiya, it's Uncle"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b5d21: ; 0x1b5d21
+	text "Hiya, it's Uncle"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b5d39: ; 0x1b5d39
+	text "Hiya, it's Uncle"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b5d51: ; 0x1b5d51
+	text "Are you taking"
+	line "good care of your"
+
+	para "#MON? You have"
+	line "to be good to your"
+	cont "partners!"
+	done
+
+UnknownText_0x1b5d9f: ; 0x1b5d9f
+	text "Hello, @"
+	text_from_ram StringBuffer3
+	text_start
+	line "speaking."
+
+	para "Oh, <PLAY_G>."
+	line "Good morning."
+	done
+
+UnknownText_0x1b5dcc: ; 0x1b5dcc
+	text "Hello, @"
+	text_from_ram StringBuffer3
+	text_start
+	line "speaking."
+
+	para "Oh, <PLAY_G>."
+	line "How are you?"
+	done
+
+UnknownText_0x1b5df8: ; 0x1b5df8
+	text "Hello, @"
+	text_from_ram StringBuffer3
+	text_start
+	line "speaking."
+
+	para "Oh, <PLAY_G>."
+	line "Good evening."
+	done
+
+UnknownText_0x1b5e25: ; 0x1b5e25
+	text "Good morning,"
+	line "<PLAY_G>."
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Were you sleeping?"
+	done
+
+UnknownText_0x1b5e59: ; 0x1b5e59
+	text "Hi, <PLAY_G>."
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "How are things"
+	line "going for you?"
+	done
+
+UnknownText_0x1b5e8e: ; 0x1b5e8e
+	text "Good evening,"
+	line "<PLAY_G>."
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Are you awake?"
+	done
+
+UnknownText_0x1b5ebe: ; 0x1b5ebe
+	text "I had some time,"
+	line "so I called you."
+
+	para "So anyway, how are"
+	line "your #MON?"
+
+	para "Me, I take my"
+	line "@"
+	text_from_ram StringBuffer4
+	text " to the"
+
+	para "#MON CENTER in"
+	line "VIOLET every day,"
+
+	para "so it's doing just"
+	line "fantastic!"
+
+	para "I'm friends with"
+	line "the receptionist!"
+	done
+
+UnknownText_0x1b5f7a: ; 0x1b5f7a
+	text "Yeah, @"
+	text_from_ram StringBuffer3
+	text " the"
+	line "HIKER here."
+
+	para "Ah, <PLAYER>!"
+	done
+
+UnknownText_0x1b5f9e: ; 0x1b5f9e
+	text "Yeah, @"
+	text_from_ram StringBuffer3
+	text " the"
+	line "HIKER here."
+
+	para "Ah, <PLAYER>,"
+	line "right?"
+	done
+
+UnknownText_0x1b5fc9: ; 0x1b5fc9
+	text "Yeah, @"
+	text_from_ram StringBuffer3
+	text " the"
+	line "HIKER here."
+
+	para "Ah, <PLAYER>, isn't"
+	line "it?"
+	done
+
+UnknownText_0x1b5ff6: ; 0x1b5ff6
+	text "Yo, <PLAYER>?"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text_start
+	line "the HIKER!"
+	done
+
+UnknownText_0x1b6017: ; 0x1b6017
+	text "Hey, is this"
+	line "<PLAYER>?"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text_start
+	line "the HIKER!"
+	done
+
+UnknownText_0x1b6041: ; 0x1b6041
+	text "<PLAYER>, you still"
+	line "awake?"
+
+	para "This is @"
+	text_from_ram StringBuffer3
+	text_start
+	line "the HIKER!"
+	done
+
+UnknownText_0x1b606f: ; 0x1b606f
+	text "Are your #MON"
+	line "as feisty as ever?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " and"
+	line "me--we have energy"
+
+	para "to burn. We hike"
+	line "up mountains every"
+
+	para "day to work out"
+	line "all our energy."
+	done
+
+UnknownText_0x1b60f5: ; 0x1b60f5
+	text "Yes? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking."
+
+	para "Hey, <PLAY_G>!"
+	done
+
+UnknownText_0x1b611b: ; 0x1b611b
+	text "Yes? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking."
+
+	para "This must be"
+	line "<PLAY_G>."
+	done
+
+UnknownText_0x1b6149: ; 0x1b6149
+	text "Yes? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text " speaking."
+
+	para "Ah, <PLAY_G>!"
+	done
+
+UnknownText_0x1b616e: ; 0x1b616e
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "<PLAY_G>, right?"
+	done
+
+UnknownText_0x1b618f: ; 0x1b618f
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "<PLAY_G>, what are"
+	line "you doing?"
+	done
+
+UnknownText_0x1b61bd: ; 0x1b61bd
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "<PLAY_G>, sorry to"
+	line "call you so late."
+	done
+
+UnknownText_0x1b61f2: ; 0x1b61f2
+	text "How do you raise"
+	line "your #MON?"
+
+	para "I do all sorts"
+	line "of things, like"
+
+	para "leaving them in"
+	line "DAY-CARE and"
+
+	para "toughening them up"
+	line "with items."
+	done
+
+UnknownText_0x1b626a: ; 0x1b626a
+	text "Hello? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, <PLAY_G>!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b6296: ; 0x1b6296
+	text "Hello? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, <PLAY_G>!"
+	line "Hi, how are you?"
+	done
+
+UnknownText_0x1b62c5: ; 0x1b62c5
+	text "Hello? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, <PLAY_G>!"
+	line "Good evening!"
+	done
+
+UnknownText_0x1b62f1: ; 0x1b62f1
+	text "<PLAY_G>?"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Good morning!"
+	done
+
+UnknownText_0x1b630e: ; 0x1b630e
+	text "<PLAY_G>?"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text ". Is"
+	line "this a bad time?"
+	done
+
+UnknownText_0x1b6331: ; 0x1b6331
+	text "<PLAY_G>?"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "Got time to chat?"
+	done
+
+UnknownText_0x1b6352: ; 0x1b6352
+	text "Are your #MON"
+	line "still tough?"
+
+	para "I train every day"
+	line "with @"
+	text_from_ram StringBuffer4
+	text "."
+	done
+
+UnknownText_0x1b638c: ; 0x1b638c
+	text "Hello? @"
+	text_from_ram StringBuffer3
+	text_start
+	line "here…"
+
+	para "Hey, <PLAY_G>!"
+	done
+
+UnknownText_0x1b63a8: ; 0x1b63a8
+	text "Hello? @"
+	text_from_ram StringBuffer3
+	text_start
+	line "here…"
+
+	para "Wow, <PLAY_G>!"
+	done
+
+UnknownText_0x1b63c4: ; 0x1b63c4
+	text "Hello? @"
+	text_from_ram StringBuffer3
+	text_start
+	line "here…"
+
+	para "Yippee, <PLAY_G>!"
+	done
+
+UnknownText_0x1b63e3: ; 0x1b63e3
+	text "Uh, hello."
+	line "<PLAY_G>?"
+
+	para "It's your pal,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6407: ; 0x1b6407
+	text "Uh, hello,"
+	line "<PLAY_G>?"
+
+	para "It's your buddy"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b642c: ; 0x1b642c
+	text "Uh, hello,"
+	line "<PLAY_G>?"
+
+	para "It's your sidekick"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6454: ; 0x1b6454
+	text "Yeah, hello."
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "…Huh, <PLAY_G>? Yo!"
+	done
+
+UnknownText_0x1b647e: ; 0x1b647e
+	text "Yeah, hello, you"
+	line "got @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "…Huh, <PLAY_G>? Yo!"
+	done
+
+UnknownText_0x1b64a8: ; 0x1b64a8
+	text "Yeah, hello, you"
+	line "got @"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "…Huh, <PLAY_G>? Yo!"
+	done
+
+UnknownText_0x1b64d2: ; 0x1b64d2
+	text "Yeah, hello?"
+	line "@"
+	text_from_ram StringBuffer3
+	text " calling."
+
+	para "What are you up"
+	line "to, <PLAY_G>?"
+	done
+
+UnknownText_0x1b6506: ; 0x1b6506
+	text "Yeah, hello?"
+	line "@"
+	text_from_ram StringBuffer3
+	text " calling."
+
+	para "Where are you now,"
+	line "<PLAY_G>?"
+	done
+
+UnknownText_0x1b6539: ; 0x1b6539
+	text "Yeah, hello?"
+	line "@"
+	text_from_ram StringBuffer3
+	text " calling."
+
+	para "Are you awake now,"
+	line "<PLAY_G>?"
+	done
+
+UnknownText_0x1b656c: ; 0x1b656c
+	text "I bet your #MON"
+	line "are a lot stronger"
+	cont "than before."
+	done
+
+UnknownText_0x1b659d: ; 0x1b659d
+	text "Yup, it's @"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Is this <PLAY_G>?"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b65c7: ; 0x1b65c7
+	text "Yup, it's @"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Is that <PLAY_G>?"
+	done
+
+UnknownText_0x1b65e3: ; 0x1b65e3
+	text "Yup, it's @"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Is that <PLAY_G>?"
+	line "Good evening!"
+	done
+
+UnknownText_0x1b660d: ; 0x1b660d
+	text "Hello! It's me,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6624: ; 0x1b6624
+	text "Hello! It's me,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b663b: ; 0x1b663b
+	text "Hello! It's me,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6652: ; 0x1b6652
+	text "<PLAY_G>, are you"
+	line "raising your"
+	cont "#MON properly?"
+
+	para "I read in a book"
+	line "that you should"
+
+	para "raise any #MON"
+	line "you catch with"
+	cont "love and care."
+	done
+
+UnknownText_0x1b66c8: ; 0x1b66c8
+	text "Hi, @"
+	text_from_ram StringBuffer3
+	text " on the"
+	line "line."
+
+	para "Hey! It's <PLAY_G>!"
+	done
+
+UnknownText_0x1b66ec: ; 0x1b66ec
+	text "Hi, @"
+	text_from_ram StringBuffer3
+	text " on the"
+	line "line."
+
+	para "I know!"
+	line "It's <PLAY_G>!"
+	done
+
+UnknownText_0x1b6713: ; 0x1b6713
+	text "Hi, @"
+	text_from_ram StringBuffer3
+	text " on the"
+	line "line."
+
+	para "<PLAY_G>?"
+	line "What's up?"
+	done
+
+UnknownText_0x1b6738: ; 0x1b6738
+	text "Uh, <PLAY_G>?"
+
+	para "It's me!"
+	line "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6757: ; 0x1b6757
+	text "Uh, <PLAY_G>?"
+
+	para "It's me!"
+	line "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6776: ; 0x1b6776
+	text "Uh, <PLAY_G>?"
+
+	para "It's me!"
+	line "It's me, @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b6795: ; 0x1b6795
+	text "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "so full of energy,"
+
+	para "it's a little"
+	line "scary."
+
+	para "How are your"
+	line "#MON doing?"
+	done
+
+UnknownText_0x1b67e2: ; 0x1b67e2
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Hi, <PLAY_G>!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b680e: ; 0x1b680e
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Hi, <PLAY_G>, good"
+	line "day!"
+	done
+
+UnknownText_0x1b6836: ; 0x1b6836
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Hi, <PLAY_G>, good"
+	line "evening!"
+	done
+
+UnknownText_0x1b6862: ; 0x1b6862
+	text "Hi, <PLAY_G>, good"
+	line "morning!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you?"
+	done
+
+UnknownText_0x1b6890: ; 0x1b6890
+	text "Hi, <PLAY_G>, good"
+	line "day!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you?"
+	done
+
+UnknownText_0x1b68ba: ; 0x1b68ba
+	text "Hi, <PLAY_G>, good"
+	line "evening!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "."
+	line "How are you?"
+	done
+
+UnknownText_0x1b68e8: ; 0x1b68e8
+	text "How are your"
+	line "#MON doing?"
+
+	para "You know PROF.OAK,"
+	line "so of course your"
+	cont "#MON are fine!"
+
+	para "My #MON are"
+	line "doing well too."
+
+	para "But then, I am"
+	line "trying to become a"
+
+	para "#MON professor,"
+	line "so that shouldn't"
+	cont "be a big surprise."
+	done
+
+UnknownText_0x1b69a8: ; 0x1b69a8
+	text "Hi, <PLAY_G>?"
+
+	para "Good morning pika."
+	line "What's up pika?"
+	done
+
+UnknownText_0x1b69d2: ; 0x1b69d2
+	text "Hi, <PLAY_G>?"
+
+	para "Good day pika,"
+	line "what's up pika?"
+	done
+
+UnknownText_0x1b69f8: ; 0x1b69f8
+	text "Hi, <PLAY_G>?"
+
+	para "Good evening pika,"
+	line "what's up pika?"
+	done
+
+UnknownText_0x1b6a22: ; 0x1b6a22
+	text "<PLAY_G> pika, good"
+	line "morning!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text ", how"
+	line "pika are you?"
+	done
+
+UnknownText_0x1b6a56: ; 0x1b6a56
+	text "<PLAY_G> pika, good"
+	line "pika day!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text ", how"
+	line "pika are you?"
+	done
+
+UnknownText_0x1b6a8b: ; 0x1b6a8b
+	text "<PLAY_G> pika, good"
+	line "evening!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text ". Were"
+	line "you pika awake?"
+	done
+
+UnknownText_0x1b6ac2: ; 0x1b6ac2
+	text "You have to hear"
+	line "this! My lovable"
+
+	para "@"
+	text_from_ram StringBuffer4
+	text " looked"
+	line "at me and grinned!"
+
+	para "It must be because"
+	line "our hearts beat"
+	cont "together as one!"
+	done
+
+UnknownText_0x1b6b39: ; 0x1b6b39
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, Good morning,"
+	line "<PLAY_G>."
+	done
+
+UnknownText_0x1b6b65: ; 0x1b6b65
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "That voice…"
+	line "<PLAY_G>, right?"
+	done
+
+UnknownText_0x1b6b92: ; 0x1b6b92
+	text "Hello, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "This must be"
+	line "<PLAY_G>!"
+	done
+
+UnknownText_0x1b6bb9: ; 0x1b6bb9
+	text "Hello!"
+	line "@"
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "Good morning! The"
+	line "weather's great!"
+	done
+
+UnknownText_0x1b6bef: ; 0x1b6bef
+	text "Hello!"
+	line "@"
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "What a perfect day"
+	line "for fishing!"
+	done
+
+UnknownText_0x1b6c23: ; 0x1b6c23
+	text "Hello!"
+	line "@"
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "It's a great night"
+	line "for fishing!"
+	done
+
+UnknownText_0x1b6c56: ; 0x1b6c56
+	text "How's your trip"
+	line "coming along?"
+
+	para "I can't complain"
+	line "about my fishing!"
+	done
+
+UnknownText_0x1b6c96: ; 0x1b6c96
+	text "Yes? @"
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "Ah, <PLAYER>. What"
+	line "can I do for you?"
+	done
+
+UnknownText_0x1b6cc6: ; 0x1b6cc6
+	text "Yes? @"
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "Ah, <PLAYER>. What"
+	line "can I do for you?"
+	done
+
+UnknownText_0x1b6cf6: ; 0x1b6cf6
+	text "Yes? @"
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "Ah, <PLAYER>. What"
+	line "can I do for you?"
+	done
+
+UnknownText_0x1b6d26: ; 0x1b6d26
+	text "Hiya, <PLAYER>. How"
+	line "are you doing?"
+
+	para "Hey! It's me,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b6d57: ; 0x1b6d57
+	text "Hiya, <PLAYER>, how"
+	line "are you doing?"
+
+	para "Hey, it's me,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b6d88: ; 0x1b6d88
+	text "Hiya, <PLAYER>, how"
+	line "are you doing?"
+
+	para "Hey, it's me,"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b6db9: ; 0x1b6db9
+	text "Oh yeah, I saw you"
+	line "coming out of a"
+
+	para "#MON CENTER the"
+	line "other day."
+
+	para "You heal your"
+	line "#MON regularly,"
+
+	para "don't you?"
+	line "I'm impressed."
+
+	para "Heh, my @"
+	text_from_ram StringBuffer4
+	text_start
+	line "is so tough, it"
+
+	para "doesn't need to go"
+	line "to #MON CENTERS"
+	cont "often. Heheh!"
+	done
+
+UnknownText_0x1b6e7c: ; 0x1b6e7c
+	text "Yes? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh, <PLAY_G>."
+	line "Good morning."
+	done
+
+UnknownText_0x1b6ea6: ; 0x1b6ea6
+	text "Yes? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh, <PLAY_G>."
+	line "Hello."
+	done
+
+UnknownText_0x1b6ec9: ; 0x1b6ec9
+	text "Yes? This is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "."
+
+	para "Oh, <PLAY_G>, good"
+	line "evening."
+	done
+
+UnknownText_0x1b6ef3: ; 0x1b6ef3
+	text "Is this <PLAY_G>?"
+
+	para "Good morning. This"
+	line "is @"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b6f1c: ; 0x1b6f1c
+	text "Is this <PLAY_G>?"
+
+	para "Hi, it's @"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b6f37: ; 0x1b6f37
+	text "Is this <PLAY_G>?"
+
+	para "Good evening. This"
+	line "is @"
+	text_from_ram StringBuffer3
+	text "."
+	done
+
+UnknownText_0x1b6f60: ; 0x1b6f60
+	text "Are your #MON"
+	line "doing well?"
+
+	para "I hope you take"
+	line "them to a #MON"
+	cont "CENTER every day."
+
+	para "Don't push them"
+	line "too hard."
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " is"
+	line "cute and lively"
+
+	para "precisely because"
+	line "I take it to a"
+
+	para "#MON CENTER"
+	line "every day."
+	done
+
+UnknownText_0x1b7019: ; 0x1b7019
+	text "Yes, hello?"
+	line "@"
+	text_from_ram StringBuffer3
+	text " here!"
+
+	para "Morning, <PLAY_G>!"
+
+	para "Are you using bird"
+	line "#MON?"
+	done
+
+UnknownText_0x1b7057: ; 0x1b7057
+	text "Yes, hello?"
+	line "@"
+	text_from_ram StringBuffer3
+	text " here!"
+
+	para "Hi, <PLAY_G>!"
+
+	para "Are your bird"
+	line "#MON flying?"
+	done
+
+UnknownText_0x1b7092: ; 0x1b7092
+	text "Yes, hello?"
+	line "@"
+	text_from_ram StringBuffer3
+	text " here!"
+
+	para "Evening, <PLAY_G>!"
+	line "Are you letting"
+
+	para "your bird #MON"
+	line "see some action?"
+	done
+
+UnknownText_0x1b70e7: ; 0x1b70e7
+	text "Good morning,"
+	line "<PLAY_G>!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b7112: ; 0x1b7112
+	text "Hi, <PLAY_G>!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "Remember me?"
+	done
+
+UnknownText_0x1b7132: ; 0x1b7132
+	text "Good evening,"
+	line "<PLAY_G>!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "Are you free now?"
+	done
+
+UnknownText_0x1b7161: ; 0x1b7161
+	text "Are you and your"
+	line "#MON fine?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text_start
+	line "looks like it will"
+
+	para "get tough enough"
+	line "to face and beat"
+
+	para "the legendary bird"
+	line "#MON!"
+	done
+
+UnknownText_0x1b71d5: ; 0x1b71d5
+	text "Hello, you have"
+	line "reached @"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Ah, <PLAY_G>."
+	done
+
+UnknownText_0x1b71fc: ; 0x1b71fc
+	text "Hello, you have"
+	line "reached @"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Ah, <PLAY_G>, is"
+	line "it?"
+	done
+
+UnknownText_0x1b722a: ; 0x1b722a
+	text "Hello, you have"
+	line "reached @"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Ah, if it isn't"
+	line "<PLAY_G>."
+	done
+
+UnknownText_0x1b725c: ; 0x1b725c
+	text "Ah, it's @"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Have you got a"
+	line "moment?"
+	done
+
+UnknownText_0x1b7283: ; 0x1b7283
+	text "Ah, it's @"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Can you talk now?"
+	done
+
+UnknownText_0x1b72a5: ; 0x1b72a5
+	text "Ah, it's @"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Sorry for calling"
+	line "so late."
+	done
+
+UnknownText_0x1b72d0: ; 0x1b72d0
+	text "Have your #MON"
+	line "grown any?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " has"
+	line "grown quite a bit."
+	done
+
+UnknownText_0x1b730b: ; 0x1b730b
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "<PLAYER>! Beautiful"
+	line "morning, hey?"
+	done
+
+UnknownText_0x1b7331: ; 0x1b7331
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "<PLAYER>! Beautiful"
+	line "weather, hey?"
+	done
+
+UnknownText_0x1b7357: ; 0x1b7357
+	text_from_ram StringBuffer3
+	text " here…"
+
+	para "<PLAYER>! Beautiful"
+	line "moonlight, hey?"
+	done
+
+UnknownText_0x1b737f: ; 0x1b737f
+	text "Hey, <PLAYER>!"
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b7397: ; 0x1b7397
+	text "Hey, <PLAYER>!"
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b73af: ; 0x1b73af
+	text "Hey, <PLAYER>!"
+	line "This is @"
+	text_from_ram StringBuffer3
+	text "!"
+	done
+
+UnknownText_0x1b73c7: ; 0x1b73c7
+	text "Yup, yup!"
+	line "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Hah, and here's"
+	line "<PLAY_G>!"
+	done
+
+UnknownText_0x1b73ef: ; 0x1b73ef
+	text "Yup, yup!"
+	line "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Hah, and here's"
+	line "<PLAY_G>!"
+	done
+
+UnknownText_0x1b7417: ; 0x1b7417
+	text "Yup, yup!"
+	line "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Hah, and here's"
+	line "<PLAY_G>!"
+	done
+
+UnknownText_0x1b743f: ; 0x1b743f
+	text "<PLAY_G>, it's"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Have you had a"
+	line "proper breakfast?"
+	done
+
+UnknownText_0x1b746f: ; 0x1b746f
+	text "<PLAY_G>, it's"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Have you had a"
+	line "proper lunch?"
+	done
+
+UnknownText_0x1b749b: ; 0x1b749b
+	text "<PLAY_G>, it's"
+	line "@"
+	text_from_ram StringBuffer3
+	text "!"
+
+	para "Have you had a"
+	line "proper dinner?"
+	done
+
+UnknownText_0x1b74c8: ; 0x1b74c8
+	text "Are your #MON"
+	line "looking good?"
+
+	para "My @"
+	text_from_ram StringBuffer4
+	text " and"
+	line "me--we're looking"
+
+	para "mighty dandy!"
+	line "Hahahah!"
+	done
+
+UnknownText_0x1b751a: ; 0x1b751a
+	text "Yes, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh. Hi, <PLAY_G>!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b7548: ; 0x1b7548
+	text "Yes, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, hi, <PLAY_G>!"
+	line "Yahoo!"
+	done
+
+UnknownText_0x1b756f: ; 0x1b756f
+	text "Yes, this is"
+	line "@"
+	text_from_ram StringBuffer3
+	text "…"
+
+	para "Oh, hi, <PLAY_G>!"
+	done
+
+UnknownText_0x1b758f: ; 0x1b758f
+	text "<PLAY_G>!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "Good morning!"
+	done
+
+UnknownText_0x1b75ac: ; 0x1b75ac
+	text "<PLAY_G>!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "Working hard?"
+	done
+
+UnknownText_0x1b75c9: ; 0x1b75c9
+	text "<PLAY_G>!"
+
+	para "It's @"
+	text_from_ram StringBuffer3
+	text "!"
+	line "Were you up?"
+	done
+
+UnknownText_0x1b75e5: ; 0x1b75e5
+	text "Are you raising"
+	line "your #MON?"
+
+	para "Hey, @"
+	text_from_ram StringBuffer3
+	text "'s"
+	line "@"
+	text_from_ram StringBuffer4
+	text " is"
+	cont "looking good!"
+	done
+
+UnusedPhoneText: ; 0x1b7624
+	text "Good morning."
+	done
--- /dev/null
+++ b/data/phone/text/tully_overworld.asm
@@ -1,0 +1,73 @@
+TullyAskNumber1Text:
+	text "Hey, you're trying"
+	line "to be the ultimate"
+
+	para "trainer too? Then"
+	line "we're comrades!"
+
+	para "If I find any more"
+	line "items by the"
+
+	para "water, I'll give"
+	line "you some."
+
+	para "Just give me your"
+	line "phone number."
+	done
+
+TullyAskNumber2Text:
+	text "If I find any more"
+	line "items by the"
+
+	para "water, I'll give"
+	line "you some."
+
+	para "Just give me your"
+	line "phone number."
+	done
+
+TullyNumberAcceptedText:
+	text "You'll be hearing"
+	line "from me if I find"
+	cont "something good."
+	done
+
+TullyNumberDeclinedText:
+	text "Is that so? Then"
+	line "I'll just have to"
+	cont "use them myself."
+	done
+
+TullyPhoneFullText:
+	text "Your phone list is"
+	line "all filled up."
+
+	para "Come back if you"
+	line "make room for me."
+	done
+
+TullyRematchText:
+	text "I've been doing"
+	line "more than just"
+
+	para "fishing since we"
+	line "last met."
+
+	para "You're in for a"
+	line "big surprise!"
+	done
+
+TullyGiftText:
+	text "Hey, there you"
+	line "are!"
+
+	para "Here's a gift, as"
+	line "promised!"
+	done
+
+TullyPackFullText:
+	text "Your PACK's full?"
+
+	para "Come back later--"
+	line "that'll do it."
+	done
--- /dev/null
+++ b/data/phone/text/vance_overworld.asm
@@ -1,0 +1,73 @@
+VanceAskNumber1Text:
+	text "You know, you are"
+	line "really strong."
+
+	para "But I don't want"
+	line "to just slink off…"
+
+	para "I know! Could I"
+	line "get your number?"
+
+	para "Let's meet up for"
+	line "more battles!"
+	done
+
+VanceAskNumber2Text:
+	text "I want to battle"
+	line "tough trainers as"
+	cont "often as I can!"
+
+	para "Could I get your"
+	line "number?"
+
+	para "Let's meet up for"
+	line "more battles!"
+	done
+
+VanceNumberAcceptedText:
+	text "Don't forget to"
+	line "come see me when I"
+	cont "challenge you!"
+	done
+
+VanceNumberDeclinedText:
+	text "A bird-user friend"
+	line "isn't a bad thing"
+	cont "to have, I think…"
+
+	para "Won't you"
+	line "reconsider?"
+	done
+
+VancePhoneFullText:
+	text "Your phone's out"
+	line "of memory. Delete"
+	cont "a number for me!"
+	done
+
+VanceRematchText:
+	text "Am I happy to see"
+	line "you! I won't lose!"
+	done
+
+VancePackFullText:
+	text "Oh, too bad. You"
+	line "don't have room."
+
+	para "I'll give it to"
+	line "you next time!"
+	done
+
+VanceRematchGiftText:
+	text "You are really,"
+	line "really strong!"
+
+	para "Thanks for taking"
+	line "me on so often--I"
+
+	para "learned a whole"
+	line "lot from you."
+
+	para "I know! This will"
+	line "do as my thanks!"
+	done
--- /dev/null
+++ b/data/phone/text/wade_overworld.asm
@@ -1,0 +1,70 @@
+WadeAskNumber1Text:
+	text "You're awesome!"
+	line "I like you!"
+
+	para "I look for #MON"
+	line "here every day."
+
+	para "When I'm in the"
+	line "grass, I find all"
+	cont "kinds of BERRIES."
+
+	para "If you'd like,"
+	line "I'll share some."
+
+	para "Could I get your"
+	line "phone number?"
+	done
+
+WadeAskNumber2Text:
+	text "When I'm in the"
+	line "grass, I find all"
+	cont "kinds of BERRIES."
+
+	para "If you'd like,"
+	line "I'll share some."
+
+	para "Could I get your"
+	line "phone number?"
+	done
+
+WadeNumberAcceptedText:
+	text "You'll hear from"
+	line "me as soon as I"
+
+	para "find anything that"
+	line "you might like."
+	done
+
+WadeNumberDeclinedText:
+	text "Oh well. Don't be"
+	line "shy if you want to"
+	cont "get my number."
+	done
+
+WadePhoneFullText:
+	text "Your phone list"
+	line "has no room for my"
+	cont "number."
+	done
+
+WadeRematchText:
+	text "I was waiting for"
+	line "you. Let's battle!"
+	done
+
+WadeGiftText:
+	text "Good to see you!"
+	line "See? This is what"
+
+	para "I found."
+	line "It's for you!"
+	done
+
+WadePackFullText:
+	text "Oops, your PACK's"
+	line "full. Too bad."
+
+	para "You should come"
+	line "back for it later."
+	done
--- /dev/null
+++ b/data/phone/text/wilton_overworld.asm
@@ -1,0 +1,61 @@
+WiltonAskNumber1Text:
+	text "Eh, our battle was"
+	line "fun, I'd say…"
+
+	para "When I'm fishing,"
+	line "I sometimes snag"
+
+	para "items that people"
+	line "have dropped."
+
+	para "Do you want them?"
+	line "What's the number?"
+	done
+
+WiltonAskNumber2Text:
+	text "If I snag an item"
+	line "while I'm fishing,"
+
+	para "it's yours. What's"
+	line "your number?"
+	done
+
+WiltonNumberAcceptedText:
+	text "If I snag anything"
+	line "good, I'll be sure"
+	cont "to let you know."
+	done
+
+WiltonNumberDeclinedText:
+	text "All right… Come"
+	line "back if you have a"
+	cont "change of heart."
+	done
+
+WiltonPhoneFullText:
+	text "You can't register"
+	line "another number."
+	done
+
+WiltonRematchText:
+	text "Argh! You startled"
+	line "POLIWAG into"
+	cont "fleeing again!"
+	done
+
+WiltonGiftText:
+	text "So here you are."
+
+	para "See this?"
+	line "I snagged it just"
+
+	para "a little while"
+	line "ago. It's yours."
+	done
+
+WiltonPackFullText:
+	text "Your PACK's full?"
+
+	para "I'll give it to"
+	line "you later."
+	done
--- a/data/phone_contacts.asm
+++ /dev/null
@@ -1,51 +1,0 @@
-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
--- a/data/phone_special.asm
+++ /dev/null
@@ -1,18 +1,0 @@
-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
--- /dev/null
+++ b/data/player_names.asm
@@ -1,0 +1,37 @@
+ChrisNameMenuDataHeader: ; 882b5
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 10, TEXTBOX_Y - 1
+	dw .MaleNames
+	db 1 ; ????
+	db 0 ; default option
+
+.MaleNames: ; 882be
+	db STATICMENU_CURSOR | STATICMENU_PLACE_TITLE | STATICMENU_DISABLE_B ; flags
+	db 5 ; items
+	db "NEW NAME@"
+MalePlayerNameArray: ; 882c9
+	db "CHRIS@"
+	db "MAT@"
+	db "ALLAN@"
+	db "JON@"
+	db 2 ; displacement
+	db " NAME @" ; title
+
+KrisNameMenuDataHeader: ; 882e5
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 10, TEXTBOX_Y - 1
+	dw .FemaleNames
+	db 1 ; ????
+	db 0 ; default option
+
+.FemaleNames: ; 882ee
+	db STATICMENU_CURSOR | STATICMENU_PLACE_TITLE | STATICMENU_DISABLE_B ; flags
+	db 5 ; items
+	db "NEW NAME@"
+FemalePlayerNameArray: ; 882f9
+	db "KRIS@"
+	db "AMANDA@"
+	db "JUANA@"
+	db "JODI@"
+	db 2 ; displacement
+	db " NAME @" ; title
--- a/data/pokemon/base_stats.asm
+++ b/data/pokemon/base_stats.asm
@@ -1,3 +1,36 @@
+tmhm: MACRO
+; used in data/pokemon/base_stats/*.asm
+tms1 = 0 ; TM01-TM24 (24)
+tms2 = 0 ; TM25-TM48 (24)
+tms3 = 0 ; TM49-TM50 + HM01-HM07 + MT01-MT03 (12/24)
+rept _NARG
+	if DEF(\1_TMNUM)
+	if \1_TMNUM < 24 + 1
+tms1 = tms1 | (1 << ((\1_TMNUM) - 1))
+	elif \1_TMNUM < 48 + 1
+tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24))
+	else
+tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48))
+	endc
+	else
+		fail "\1 is not a TM, HM, or move tutor move"
+	endc
+	shift
+endr
+rept 3 ; TM01-TM24 (24/24)
+	db tms1 & $ff
+tms1 = tms1 >> 8
+endr
+rept 3 ; TM25-TM48 (24/24)
+	db tms2 & $ff
+tms2 = tms2 >> 8
+endr
+rept 2 ; TM49-TM50 + HM01-HM07 + MT01-MT03 (12/16)
+	db tms3 & $ff
+tms3 = tms3 >> 8
+endr
+ENDM
+
 BaseData::
 INCLUDE "data/pokemon/base_stats/bulbasaur.asm"
 INCLUDE "data/pokemon/base_stats/ivysaur.asm"
--- a/data/pokemon/dex_entries.asm
+++ b/data/pokemon/dex_entries.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "Pokedex Entries 001-064", ROMX
--- a/data/pokemon/egg_moves.asm
+++ b/data/pokemon/egg_moves.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "Egg Moves", ROMX
@@ -26,7 +26,7 @@
 endc
 	db RAZOR_WIND
 	db PETAL_DANCE
-	db $ff
+	db -1 ; end
 
 CharmanderEggMoves:
 	db BELLY_DRUM
@@ -35,7 +35,7 @@
 	db BITE
 	db OUTRAGE
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 SquirtleEggMoves:
 	db MIRROR_COAT
@@ -44,7 +44,7 @@
 	db CONFUSION
 	db FORESIGHT
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 PidgeyEggMoves:
 	db PURSUIT
@@ -53,7 +53,7 @@
 if !_CRYSTAL
 	db STEEL_WING
 endc
-	db $ff
+	db -1 ; end
 
 RattataEggMoves:
 	db SCREECH
@@ -62,7 +62,7 @@
 	db BITE
 	db COUNTER
 	db REVERSAL
-	db $ff
+	db -1 ; end
 
 SpearowEggMoves:
 	db FAINT_ATTACK
@@ -70,7 +70,7 @@
 	db SCARY_FACE
 	db QUICK_ATTACK
 	db TRI_ATTACK
-	db $ff
+	db -1 ; end
 
 EkansEggMoves:
 	db PURSUIT
@@ -80,7 +80,7 @@
 if _CRYSTAL
 	db CRUNCH
 endc
-	db $ff
+	db -1 ; end
 
 SandshrewEggMoves:
 	db FLAIL
@@ -90,7 +90,7 @@
 if _CRYSTAL
 	db METAL_CLAW
 endc
-	db $ff
+	db -1 ; end
 
 NidoranFEggMoves:
 	db SUPERSONIC
@@ -100,7 +100,7 @@
 	db CHARM
 	db COUNTER
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 NidoranMEggMoves:
 	db SUPERSONIC
@@ -110,7 +110,7 @@
 	db AMNESIA
 	db COUNTER
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 VulpixEggMoves:
 	db FAINT_ATTACK
@@ -118,7 +118,7 @@
 	db FLAIL
 	db SPITE
 	db DISABLE
-	db $ff
+	db -1 ; end
 
 ZubatEggMoves:
 	db QUICK_ATTACK
@@ -126,7 +126,7 @@
 	db FAINT_ATTACK
 	db GUST
 	db WHIRLWIND
-	db $ff
+	db -1 ; end
 
 OddishEggMoves:
 	db SWORDS_DANCE
@@ -136,7 +136,7 @@
 if !_CRYSTAL
 	db CHARM
 endc
-	db $ff
+	db -1 ; end
 
 ParasEggMoves:
 	db FALSE_SWIPE
@@ -149,13 +149,13 @@
 endc
 	db LIGHT_SCREEN
 	db PURSUIT
-	db $ff
+	db -1 ; end
 
 VenonatEggMoves:
 	db BATON_PASS
 	db SCREECH
 	db GIGA_DRAIN
-	db $ff
+	db -1 ; end
 
 DiglettEggMoves:
 	db FAINT_ATTACK
@@ -163,7 +163,7 @@
 	db ANCIENTPOWER
 	db PURSUIT
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 MeowthEggMoves:
 	db SPITE
@@ -170,7 +170,7 @@
 	db CHARM
 	db HYPNOSIS
 	db AMNESIA
-	db $ff
+	db -1 ; end
 
 PsyduckEggMoves:
 	db ICE_BEAM
@@ -183,7 +183,7 @@
 if _CRYSTAL
 	db CROSS_CHOP
 endc
-	db $ff
+	db -1 ; end
 
 MankeyEggMoves:
 	db ROCK_SLIDE
@@ -192,7 +192,7 @@
 	db COUNTER
 	db REVERSAL
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 GrowlitheEggMoves:
 	db BODY_SLAM
@@ -200,7 +200,7 @@
 	db CRUNCH
 	db THRASH
 	db FIRE_SPIN
-	db $ff
+	db -1 ; end
 
 PoliwagEggMoves:
 	db MIST
@@ -208,13 +208,13 @@
 	db BUBBLEBEAM
 	db HAZE
 	db MIND_READER
-	db $ff
+	db -1 ; end
 
 AbraEggMoves:
 	db LIGHT_SCREEN
 	db ENCORE
 	db BARRIER
-	db $ff
+	db -1 ; end
 
 MachopEggMoves:
 	db LIGHT_SCREEN
@@ -221,7 +221,7 @@
 	db MEDITATE
 	db ROLLING_KICK
 	db ENCORE
-	db $ff
+	db -1 ; end
 
 BellsproutEggMoves:
 	db SWORDS_DANCE
@@ -229,7 +229,7 @@
 	db REFLECT
 	db SYNTHESIS
 	db LEECH_LIFE
-	db $ff
+	db -1 ; end
 
 TentacoolEggMoves:
 	db AURORA_BEAM
@@ -237,12 +237,12 @@
 	db RAPID_SPIN
 	db HAZE
 	db SAFEGUARD
-	db $ff
+	db -1 ; end
 
 GeodudeEggMoves:
 	db MEGA_PUNCH
 	db ROCK_SLIDE
-	db $ff
+	db -1 ; end
 
 PonytaEggMoves:
 	db FLAME_WHEEL
@@ -251,7 +251,7 @@
 	db HYPNOSIS
 	db CHARM
 	db QUICK_ATTACK
-	db $ff
+	db -1 ; end
 
 SlowpokeEggMoves:
 	db SAFEGUARD
@@ -258,7 +258,7 @@
 	db BELLY_DRUM
 	db FUTURE_SIGHT
 	db STOMP
-	db $ff
+	db -1 ; end
 
 FarfetchDEggMoves:
 if !_CRYSTAL
@@ -269,7 +269,7 @@
 	db GUST
 	db QUICK_ATTACK
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 DoduoEggMoves:
 	db QUICK_ATTACK
@@ -277,7 +277,7 @@
 	db HAZE
 	db FAINT_ATTACK
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 SeelEggMoves:
 	db LICK
@@ -286,13 +286,13 @@
 	db PECK
 	db SLAM
 	db ENCORE
-	db $ff
+	db -1 ; end
 
 GrimerEggMoves:
 	db HAZE
 	db MEAN_LOOK
 	db LICK
-	db $ff
+	db -1 ; end
 
 ShellderEggMoves:
 	db BUBBLEBEAM
@@ -300,23 +300,23 @@
 	db BARRIER
 	db RAPID_SPIN
 	db SCREECH
-	db $ff
+	db -1 ; end
 
 GastlyEggMoves:
 	db PSYWAVE
 	db PERISH_SONG
 	db HAZE
-	db $ff
+	db -1 ; end
 
 OnixEggMoves:
 	db ROCK_SLIDE
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 DrowzeeEggMoves:
 	db LIGHT_SCREEN
 	db BARRIER
-	db $ff
+	db -1 ; end
 
 KrabbyEggMoves:
 	db DIG
@@ -324,7 +324,7 @@
 	db AMNESIA
 	db FLAIL
 	db SLAM
-	db $ff
+	db -1 ; end
 
 ExeggcuteEggMoves:
 	db SYNTHESIS
@@ -332,7 +332,7 @@
 	db REFLECT
 	db MEGA_DRAIN
 	db ANCIENTPOWER
-	db $ff
+	db -1 ; end
 
 CuboneEggMoves:
 	db ROCK_SLIDE
@@ -344,13 +344,13 @@
 if _CRYSTAL
 	db SWORDS_DANCE
 endc
-	db $ff
+	db -1 ; end
 
 LickitungEggMoves:
 	db BELLY_DRUM
 	db MAGNITUDE
 	db BODY_SLAM
-	db $ff
+	db -1 ; end
 
 KoffingEggMoves:
 	db SCREECH
@@ -358,7 +358,7 @@
 	db PSYBEAM
 	db DESTINY_BOND
 	db PAIN_SPLIT
-	db $ff
+	db -1 ; end
 
 RhyhornEggMoves:
 	db CRUNCH
@@ -368,13 +368,13 @@
 	db PURSUIT
 	db COUNTER
 	db MAGNITUDE
-	db $ff
+	db -1 ; end
 
 ChanseyEggMoves:
 	db PRESENT
 	db METRONOME
 	db HEAL_BELL
-	db $ff
+	db -1 ; end
 
 TangelaEggMoves:
 	db FLAIL
@@ -382,7 +382,7 @@
 	db MEGA_DRAIN
 	db REFLECT
 	db AMNESIA
-	db $ff
+	db -1 ; end
 
 KangaskhanEggMoves:
 	db STOMP
@@ -390,7 +390,7 @@
 	db FOCUS_ENERGY
 	db SAFEGUARD
 	db DISABLE
-	db $ff
+	db -1 ; end
 
 HorseaEggMoves:
 	db FLAIL
@@ -399,13 +399,13 @@
 	db DISABLE
 	db SPLASH
 	db DRAGON_RAGE
-	db $ff
+	db -1 ; end
 
 GoldeenEggMoves:
 	db PSYBEAM
 	db HAZE
 	db HYDRO_PUMP
-	db $ff
+	db -1 ; end
 
 if !_CRYSTAL
 StaryuEggMoves:
@@ -412,7 +412,7 @@
 	db AURORA_BEAM
 	db BARRIER
 	db SUPERSONIC
-	db $ff
+	db -1 ; end
 endc
 
 MrMimeEggMoves:
@@ -419,7 +419,7 @@
 	db FUTURE_SIGHT
 	db HYPNOSIS
 	db MIMIC
-	db $ff
+	db -1 ; end
 
 ScytherEggMoves:
 	db COUNTER
@@ -428,22 +428,22 @@
 	db RAZOR_WIND
 	db REVERSAL
 	db LIGHT_SCREEN
-	db $ff
+	db -1 ; end
 
 PinsirEggMoves:
 	db FURY_ATTACK
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 LaprasEggMoves:
 	db AURORA_BEAM
 	db FORESIGHT
-	db $ff
+	db -1 ; end
 
 EeveeEggMoves:
 	db FLAIL
 	db CHARM
-	db $ff
+	db -1 ; end
 
 OmanyteEggMoves:
 	db BUBBLEBEAM
@@ -451,7 +451,7 @@
 	db SLAM
 	db SUPERSONIC
 	db HAZE
-	db $ff
+	db -1 ; end
 
 KabutoEggMoves:
 	db BUBBLEBEAM
@@ -459,7 +459,7 @@
 	db RAPID_SPIN
 	db DIG
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 AerodactylEggMoves:
 	db WHIRLWIND
@@ -468,7 +468,7 @@
 if !_CRYSTAL
 	db STEEL_WING
 endc
-	db $ff
+	db -1 ; end
 
 SnorlaxEggMoves:
 	db LICK
@@ -475,7 +475,7 @@
 if !_CRYSTAL
 	db CHARM
 endc
-	db $ff
+	db -1 ; end
 
 DratiniEggMoves:
 	db LIGHT_SCREEN
@@ -482,7 +482,7 @@
 	db MIST
 	db HAZE
 	db SUPERSONIC
-	db $ff
+	db -1 ; end
 
 ChikoritaEggMoves:
 	db VINE_WHIP
@@ -491,7 +491,7 @@
 	db ANCIENTPOWER
 	db FLAIL
 	db SWORDS_DANCE
-	db $ff
+	db -1 ; end
 
 CyndaquilEggMoves:
 	db FURY_SWIPES
@@ -502,7 +502,7 @@
 if _CRYSTAL
 	db SUBMISSION
 endc
-	db $ff
+	db -1 ; end
 
 TotodileEggMoves:
 	db CRUNCH
@@ -511,7 +511,7 @@
 	db ANCIENTPOWER
 	db RAZOR_WIND
 	db ROCK_SLIDE
-	db $ff
+	db -1 ; end
 
 SentretEggMoves:
 	db DOUBLE_EDGE
@@ -519,7 +519,7 @@
 	db SLASH
 	db FOCUS_ENERGY
 	db REVERSAL
-	db $ff
+	db -1 ; end
 
 HoothootEggMoves:
 	db MIRROR_MOVE
@@ -530,13 +530,13 @@
 if _CRYSTAL
 	db SKY_ATTACK
 endc
-	db $ff
+	db -1 ; end
 
 LedybaEggMoves:
 	db PSYBEAM
 	db BIDE
 	db LIGHT_SCREEN
-	db $ff
+	db -1 ; end
 
 SpinarakEggMoves:
 	db PSYBEAM
@@ -544,13 +544,13 @@
 	db SONICBOOM
 	db BATON_PASS
 	db PURSUIT
-	db $ff
+	db -1 ; end
 
 ChinchouEggMoves:
 	db FLAIL
 	db SUPERSONIC
 	db SCREECH
-	db $ff
+	db -1 ; end
 
 PichuEggMoves:
 	db REVERSAL
@@ -558,7 +558,7 @@
 	db PRESENT
 	db ENCORE
 	db DOUBLESLAP
-	db $ff
+	db -1 ; end
 
 CleffaEggMoves:
 	db PRESENT
@@ -567,13 +567,13 @@
 	db BELLY_DRUM
 	db SPLASH
 	db MIMIC
-	db $ff
+	db -1 ; end
 
 IgglybuffEggMoves:
 	db PERISH_SONG
 	db PRESENT
 	db FAINT_ATTACK
-	db $ff
+	db -1 ; end
 
 TogepiEggMoves:
 	db PRESENT
@@ -581,7 +581,7 @@
 	db PECK
 	db FORESIGHT
 	db FUTURE_SIGHT
-	db $ff
+	db -1 ; end
 
 NatuEggMoves:
 	db HAZE
@@ -589,7 +589,7 @@
 	db QUICK_ATTACK
 	db FAINT_ATTACK
 	db STEEL_WING
-	db $ff
+	db -1 ; end
 
 MareepEggMoves:
 	db THUNDERBOLT
@@ -598,7 +598,7 @@
 	db SAFEGUARD
 	db SCREECH
 	db REFLECT
-	db $ff
+	db -1 ; end
 
 MarillEggMoves:
 	db LIGHT_SCREEN
@@ -609,11 +609,11 @@
 	db PERISH_SONG
 	db SUPERSONIC
 	db FORESIGHT
-	db $ff
+	db -1 ; end
 
 SudowoodoEggMoves:
 	db SELFDESTRUCT
-	db $ff
+	db -1 ; end
 
 HoppipEggMoves:
 	db CONFUSION
@@ -623,7 +623,7 @@
 	db REFLECT
 	db AMNESIA
 	db PAY_DAY
-	db $ff
+	db -1 ; end
 
 AipomEggMoves:
 	db COUNTER
@@ -634,19 +634,19 @@
 	db SLAM
 	db DOUBLESLAP
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 YanmaEggMoves:
 	db WHIRLWIND
 	db REVERSAL
 	db LEECH_LIFE
-	db $ff
+	db -1 ; end
 
 WooperEggMoves:
 	db BODY_SLAM
 	db ANCIENTPOWER
 	db SAFEGUARD
-	db $ff
+	db -1 ; end
 
 MurkrowEggMoves:
 	db WHIRLWIND
@@ -657,12 +657,12 @@
 if _CRYSTAL
 	db SKY_ATTACK
 endc
-	db $ff
+	db -1 ; end
 
 MisdreavusEggMoves:
 	db SCREECH
 	db DESTINY_BOND
-	db $ff
+	db -1 ; end
 
 GirafarigEggMoves:
 	db TAKE_DOWN
@@ -670,7 +670,7 @@
 	db FORESIGHT
 	db FUTURE_SIGHT
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 PinecoEggMoves:
 	db REFLECT
@@ -677,7 +677,7 @@
 	db PIN_MISSILE
 	db FLAIL
 	db SWIFT
-	db $ff
+	db -1 ; end
 
 DunsparceEggMoves:
 	db BIDE
@@ -685,7 +685,7 @@
 	db ROCK_SLIDE
 	db BITE
 	db RAGE
-	db $ff
+	db -1 ; end
 
 GligarEggMoves:
 	db METAL_CLAW
@@ -692,7 +692,7 @@
 	db WING_ATTACK
 	db RAZOR_WIND
 	db COUNTER
-	db $ff
+	db -1 ; end
 
 SnubbullEggMoves:
 	db METRONOME
@@ -703,7 +703,7 @@
 	db HEAL_BELL
 	db LICK
 	db LEER
-	db $ff
+	db -1 ; end
 
 QwilfishEggMoves:
 	db FLAIL
@@ -710,17 +710,17 @@
 	db HAZE
 	db BUBBLEBEAM
 	db SUPERSONIC
-	db $ff
+	db -1 ; end
 
 ShuckleEggMoves:
 	db SWEET_SCENT
-	db $ff
+	db -1 ; end
 
 HeracrossEggMoves:
 	db HARDEN
 	db BIDE
 	db FLAIL
-	db $ff
+	db -1 ; end
 
 SneaselEggMoves:
 	db COUNTER
@@ -728,7 +728,7 @@
 	db FORESIGHT
 	db REFLECT
 	db BITE
-	db $ff
+	db -1 ; end
 
 TeddiursaEggMoves:
 	db CRUNCH
@@ -739,11 +739,11 @@
 if _CRYSTAL
 	db METAL_CLAW
 endc
-	db $ff
+	db -1 ; end
 
 SlugmaEggMoves:
 	db ACID_ARMOR
-	db $ff
+	db -1 ; end
 
 SwinubEggMoves:
 	db TAKE_DOWN
@@ -751,7 +751,7 @@
 	db BODY_SLAM
 	db ROCK_SLIDE
 	db ANCIENTPOWER
-	db $ff
+	db -1 ; end
 
 CorsolaEggMoves:
 	db ROCK_SLIDE
@@ -759,7 +759,7 @@
 	db SCREECH
 	db MIST
 	db AMNESIA
-	db $ff
+	db -1 ; end
 
 RemoraidEggMoves:
 	db AURORA_BEAM
@@ -767,7 +767,7 @@
 	db SUPERSONIC
 	db HAZE
 	db SCREECH
-	db $ff
+	db -1 ; end
 
 DelibirdEggMoves:
 	db AURORA_BEAM
@@ -775,7 +775,7 @@
 	db FUTURE_SIGHT
 	db SPLASH
 	db RAPID_SPIN
-	db $ff
+	db -1 ; end
 
 MantineEggMoves:
 	db TWISTER
@@ -782,7 +782,7 @@
 	db HYDRO_PUMP
 	db HAZE
 	db SLAM
-	db $ff
+	db -1 ; end
 
 SkarmoryEggMoves:
 	db DRILL_PECK
@@ -791,7 +791,7 @@
 if _CRYSTAL
 	db SKY_ATTACK
 endc
-	db $ff
+	db -1 ; end
 
 HoundourEggMoves:
 	db FIRE_SPIN
@@ -801,7 +801,7 @@
 	db SPITE
 	db REVERSAL
 	db BEAT_UP
-	db $ff
+	db -1 ; end
 
 PhanpyEggMoves:
 	db FOCUS_ENERGY
@@ -810,7 +810,7 @@
 if _CRYSTAL
 	db WATER_GUN
 endc
-	db $ff
+	db -1 ; end
 
 StantlerEggMoves:
 	db REFLECT
@@ -818,7 +818,7 @@
 	db DISABLE
 	db LIGHT_SCREEN
 	db BITE
-	db $ff
+	db -1 ; end
 
 TyrogueEggMoves:
 	db RAPID_SPIN
@@ -825,7 +825,7 @@
 	db HI_JUMP_KICK
 	db MACH_PUNCH
 	db MIND_READER
-	db $ff
+	db -1 ; end
 
 SmoochumEggMoves:
 if !_CRYSTAL
@@ -832,7 +832,7 @@
 	db LOVELY_KISS
 endc
 	db MEDITATE
-	db $ff
+	db -1 ; end
 
 ElekidEggMoves:
 	db KARATE_CHOP
@@ -842,7 +842,7 @@
 if _CRYSTAL
 	db CROSS_CHOP
 endc
-	db $ff
+	db -1 ; end
 
 MagbyEggMoves:
 	db KARATE_CHOP
@@ -852,13 +852,13 @@
 if _CRYSTAL
 	db CROSS_CHOP
 endc
-	db $ff
+	db -1 ; end
 
 MiltankEggMoves:
 	db PRESENT
 	db REVERSAL
 	db SEISMIC_TOSS
-	db $ff
+	db -1 ; end
 
 LarvitarEggMoves:
 	db PURSUIT
@@ -866,7 +866,7 @@
 	db OUTRAGE
 	db FOCUS_ENERGY
 	db ANCIENTPOWER
-	db $ff
+	db -1 ; end
 
 NoEggMoves:
-	db $ff
+	db -1 ; end
--- a/data/pokemon/evos_attacks.asm
+++ b/data/pokemon/evos_attacks.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "Evolutions and Attacks", ROMX
--- /dev/null
+++ b/data/pokemon/ezchat_order.asm
@@ -1,0 +1,96 @@
+; Every Pokémon sorted by their Japanese names in gojūon order.
+; Notably, Rhydon is missing (it should be before Rhyhorn).
+
+EZChat_SortedPokemon:
+	dw .a
+	dw .i
+	dw .u
+	dw .e
+	dw .o
+	dw .ka_ga
+	dw .ki_gi
+	dw .ku_gu
+	dw .ke_ge
+	dw .ko_go
+	dw .sa_za
+	dw .shi_ji
+	dw .su_zu
+	dw .se_ze
+	dw .so_zo
+	dw .ta_da
+	dw .chi_dhi
+	dw .tsu_du
+	dw .te_de
+	dw .to_do
+	dw .na
+	dw .ni
+	dw .nu
+	dw .ne
+	dw .no
+	dw .ha_ba_pa
+	dw .hi_bi_pi
+	dw .fu_bu_pu
+	dw .he_be_pe
+	dw .ho_bo_po
+	dw .ma
+	dw .mi
+	dw .mu
+	dw .me
+	dw .mo
+	dw .ya
+	dw .yu
+	dw .yo
+	dw .ra
+	dw .ri
+	dw .ru
+	dw .re
+	dw .ro
+	dw .wa
+	dw .end
+
+.a:        db EKANS, ARBOK, SEAKING, ARIADOS, CROCONAW, UNOWN, -1
+.i:        db EEVEE, GEODUDE, SPINARAK, PILOSWINE, ONIX, -1
+.u:        db ARCANINE, SUDOWOODO, WEEPINBELL, VICTREEBEL, WOOPER, SWINUB, -1
+.e:        db SKARMORY, AIPOM, ESPEON, HITMONCHAN, ELEKID, ELECTABUZZ, ENTEI, -1
+.o:        db FERALIGATR, FURRET, OCTILLERY, PRIMEAPE, SENTRET, STANTLER, SPEAROW, FEAROW, OMASTAR, OMANYTE, -1
+.ka_ga:    db GROWLITHE, MACHAMP, DRAGONITE, PINSIR, SNORLAX, KABUTO, KABUTOPS, HITMONTOP, WARTORTLE, BLASTOISE, FARFETCH_D, CUBONE, MAROWAK, KANGASKHAN, -1
+.ki_gi:    db SUNFLORA, CATERPIE, GYARADOS, RAPIDASH, NINETALES, GIRAFARIG, BELLOSSOM, KINGDRA, KINGLER, -1
+.ku_gu:    db GLOOM, PINECO, GLIGAR, KRABBY, GRANBULL, CROBAT, -1
+.ke_ge:    db ABRA, GENGAR, TAUROS, -1
+.ko_go:    db MAGIKARP, MAGNEMITE, GASTLY, HAUNTER, MACHOKE, KAKUNA, PSYDUCK, PHANPY, RATTATA, GOLDUCK, GOLBAT, GOLEM, GRAVELER, VENONAT, -1
+.sa_za:    db RHYHORN, PUPITAR, CORSOLA, HITMONLEE, ZAPDOS, JOLTEON, SANDSHREW, SANDSLASH, -1 ; RHYDON should lead this list
+.shi_ji:   db SEADRA, SHELLDER, VAPOREON, DEWGONG, -1
+.su_zu:    db SUICUNE, STARMIE, SCYTHER, ZUBAT, BEEDRILL, HYPNO, DROWZEE, -1
+.se_ze:    db SQUIRTLE, CELEBI, -1
+.so_zo:    db WOBBUFFET, -1
+.ta_da:    db DUGTRIO, HORSEA, EXEGGCUTE, -1
+.chi_dhi:  db CHIKORITA, CHINCHOU, -1
+.tsu_du:   db SHUCKLE, -1
+.te_de:    db DIGLETT, REMORAID, DELIBIRD, HOUNDOUR, AMPHAROS, -1
+.to_do:    db DODUO, DODRIO, SMEARGLE, KOFFING, TENTACRUEL, TOGETIC, TOGEPI, GOLDEEN, METAPOD, DONPHAN, -1
+.na:       db ODDISH, EXEGGUTOR, -1
+.ni:       db NIDOKING, NIDOQUEEN, NIDORAN_M, NIDORAN_F, NIDORINA, NIDORINO, MEOWTH, SNEASEL, POLIWHIRL, POLITOED, POLIWRATH, POLIWAG, -1
+.nu:       db QUAGSIRE, -1
+.ne:       db NATU, XATU, -1
+.no:       db DUNSPARCE, -1
+.ha_ba_pa: db SEEL, STEELIX, TYPHLOSION, DRAGONAIR, BUTTERFREE, SCIZOR, HOPPIP, BLISSEY, PARAS, PARASECT, QWILFISH, MR__MIME, TYROGUE, CLOYSTER, TYRANITAR, -1
+.hi_bi_pi: db CLEFFA, WEEDLE, PIKACHU, CLEFABLE, PIDGEOT, PIDGEOTTO, PICHU, CLEFAIRY, CHARMANDER, STARYU, CYNDAQUIL, SUNKERN, TEDDIURSA, VOLTORB, -1
+.fu_bu_pu: db MOLTRES, FLAREON, ALAKAZAM, MAGMAR, FORRETRESS, WIGGLYTUFF, IVYSAUR, BULBASAUR, VENUSAUR, AERODACTYL, MAGBY, IGGLYBUFF, UMBREON, ARTICUNO, JIGGLYPUFF, SNUBBULL, -1
+.he_be_pe: db BAYLEEF, GRIMER, MUK, HERACROSS, HOUNDOOM, PERSIAN, LICKITUNG, -1
+.ho_bo_po: db HO_OH, HOOTHOOT, PIDGEY, PONYTA, SKIPLOOM, PORYGON, PORYGON2, -1
+.ma:       db MAGCARGO, SLUGMA, QUILAVA, BELLSPROUT, WEEZING, MARILL, AZUMARILL, ELECTRODE, MANKEY, MANTINE, -1
+.mi:       db DRATINI, MEW, MEWTWO, MILTANK, -1
+.mu:       db MISDREAVUS, SMOOCHUM, -1
+.me:       db MEGANIUM, DITTO, TENTACOOL, MAREEP, -1
+.mo:       db FLAAFFY, VENOMOTH, TANGELA, -1
+.ya:       db SLOWKING, SLOWBRO, SLOWPOKE, MURKROW, YANMA, -1
+.yu:       db KADABRA, -1
+.yo:       db LARVITAR, NOCTOWL, -1
+.ra:       db RAIKOU, RAICHU, CHANSEY, RATICATE, LAPRAS, VILEPLUME, LANTURN, -1
+.ri:       db CHARMELEON, CHARIZARD, URSARING, -1
+.ru:       db JYNX, LUGIA, -1
+.re:       db MAGNETON, LEDIAN, LEDYBA, -1
+.ro:       db VULPIX, -1
+.wa:       db JUMPLUFF, TOTODILE, MACHOP ;, -1
+.end:      db -1
+; 11d67e
--- a/data/pokemon/palettes.asm
+++ b/data/pokemon/palettes.asm
@@ -518,12 +518,8 @@
 	RGB 30, 26, 11
 	RGB 23, 16, 00
 
-; Egg
-	RGB 30, 26, 11
-	RGB 23, 16, 00
-; Egg shiny
-	RGB 30, 26, 11
-	RGB 23, 16, 00
+INCLUDE "gfx/pokemon/egg/normal.pal"
+INCLUDE "gfx/pokemon/egg/shiny.pal"
 
 ; 254
 	RGB 30, 26, 11
--- a/data/pokemon/pic_pointers.asm
+++ b/data/pokemon/pic_pointers.asm
@@ -1,3 +1,5 @@
+; Pics are defined in gfx/pics.asm
+
 PokemonPicPointers::
 ; entries correspond to Pokémon species, two apiece
 	dba_pic BulbasaurFrontpic
--- /dev/null
+++ b/data/pokemon/rby_base_special.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/pokemon/rby_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/predef_pointers.asm
@@ -1,0 +1,85 @@
+; Predef routines can be used with the "predef" and "predef_jump" macros.
+; This preserves registers bc, de, hl and f.
+
+add_predef: MACRO
+\1Predef::
+	dab \1
+ENDM
+
+PredefPointers:: ; 856b
+	add_predef LearnMove ; $0
+	add_predef DummyPredef1
+	add_predef HealParty ; this is both a special and a predef
+	add_predef SmallFarFlagAction
+	add_predef ComputeHPBarPixels
+	add_predef FillPP
+	add_predef TryAddMonToParty
+	add_predef AddTempmonToParty
+	add_predef SendGetPkmnIntoFromBox
+	add_predef SendPkmnIntoBox
+	add_predef GiveEgg
+	add_predef AnimateHPBar
+	add_predef CalcPkmnStats
+	add_predef CalcPkmnStatC
+	add_predef CanLearnTMHMMove
+	add_predef GetTMHMMove
+	add_predef LinkTextboxAtHL ; $ 10
+	add_predef PrintMoveDesc
+	add_predef UpdatePlayerHUD
+	add_predef PlaceGraphic
+	add_predef CheckPlayerPartyForFitPkmn
+	add_predef UpdateEnemyHUD
+	add_predef StartBattle
+	add_predef FillInExpBar
+	add_predef GetBattleMonBackpic ; $18
+	add_predef GetEnemyMonFrontpic
+	add_predef LearnLevelMoves
+	add_predef FillMoves
+	add_predef EvolveAfterBattle
+	add_predef TradeAnimationPlayer2
+	add_predef TradeAnimation
+	add_predef CopyPkmnToTempMon
+	add_predef ListMoves ; $20
+	add_predef PlaceNonFaintStatus
+	add_predef Unused_PlaceEnemyHPLevel
+	add_predef ListMovePP
+	add_predef GetGender
+	add_predef StatsScreenInit
+	add_predef DrawPlayerHP
+	add_predef DrawEnemyHP
+	add_predef PrintTempMonStats ; $28
+	add_predef GetTypeName
+	add_predef PrintMoveType
+	add_predef PrintType
+	add_predef PrintMonTypes
+	add_predef GetUnownLetter
+	add_predef LoadPoisonBGPals
+	add_predef DummyPredef2F
+	add_predef InitSGBBorder ; $30
+	add_predef LoadSGBLayout
+	add_predef Pokedex_GetArea
+	add_predef Unused_CheckContestMon
+	add_predef DoBattleTransition
+	add_predef DummyPredef35
+	add_predef DummyPredef36
+	add_predef PlayBattleAnim
+	add_predef DummyPredef38 ; $38
+	add_predef DummyPredef39
+	add_predef DummyPredef3A
+	add_predef PartyMonItemName
+	add_predef GetMonFrontpic
+	add_predef GetMonBackpic
+	add_predef GetAnimatedFrontpic
+	add_predef GetTrainerPic
+	add_predef DecompressGet2bpp ; $40
+	add_predef CheckTypeMatchup
+	add_predef ConvertMon_1to2
+	add_predef NewPokedexEntry
+	add_predef Unused_AnimateMon_Slow_Normal
+	add_predef PlaceStatusString
+	add_predef LoadMonAnimation
+	add_predef AnimateFrontpic
+	add_predef Unused_HOF_AnimateAlignedFrontpic ; $48
+	add_predef HOF_AnimateFrontpic
+	dbw -1, InexplicablyEmptyFunction ; ???
+; 864c
--- /dev/null
+++ b/data/radio/buenas_passwords.asm
@@ -1,0 +1,26 @@
+BuenasPasswordTable:
+; there are NUM_PASSWORD_CATEGORIES entries
+	dw .JohtoStarters
+	dw .Beverages
+	dw .HealingItems
+	dw .Balls
+	dw .Pokemon1
+	dw .Pokemon2
+	dw .JohtoTowns
+	dw .Types
+	dw .Moves
+	dw .XItems
+	dw .RadioStations
+
+               ; string type, points, option 1, option 2, option 3
+.JohtoStarters: db BUENA_MON,    10, CYNDAQUIL, TOTODILE, CHIKORITA
+.Beverages:     db BUENA_ITEM,   12, FRESH_WATER, SODA_POP, LEMONADE
+.HealingItems:  db BUENA_ITEM,   12, POTION, ANTIDOTE, PARLYZ_HEAL
+.Balls:         db BUENA_ITEM,   12, POKE_BALL, GREAT_BALL, ULTRA_BALL
+.Pokemon1:      db BUENA_MON,    10, PIKACHU, RATTATA, GEODUDE
+.Pokemon2:      db BUENA_MON,    10, HOOTHOOT, SPINARAK, DROWZEE
+.JohtoTowns:    db BUENA_STRING, 16, "NEW BARK TOWN@", "CHERRYGROVE CITY@", "AZALEA TOWN@"
+.Types:         db BUENA_STRING,  6, "FLYING@", "BUG@", "GRASS@"
+.Moves:         db BUENA_MOVE,   12, TACKLE, GROWL, MUD_SLAP
+.XItems:        db BUENA_ITEM,   12, X_ATTACK, X_DEFEND, X_SPEED
+.RadioStations: db BUENA_STRING, 13, "#MON Talk@", "#MON Music@", "Lucky Channel@"
--- /dev/null
+++ b/data/radio/channel_music.asm
@@ -1,0 +1,13 @@
+RadioChannelSongs:
+; entries correspond to radio channel ids
+	dw MUSIC_POKEMON_TALK
+	dw MUSIC_POKEMON_CENTER
+	dw MUSIC_TITLE
+	dw MUSIC_GAME_CORNER
+	dw MUSIC_BUENAS_PASSWORD
+	dw MUSIC_VIRIDIAN_CITY
+	dw MUSIC_BICYCLE
+	dw MUSIC_ROCKET_OVERTURE
+	dw MUSIC_POKE_FLUTE_CHANNEL
+	dw MUSIC_RUINS_OF_ALPH_RADIO
+	dw MUSIC_LAKE_OF_RAGE_ROCKET_RADIO
--- /dev/null
+++ b/data/radio/oaks_pkmn_talk_routes.asm
@@ -1,0 +1,19 @@
+; Oak's Pokémon Talk will list wild Pokémon on these maps.
+
+OaksPkmnTalkRoutes:
+	map ROUTE_29
+	map ROUTE_46
+	map ROUTE_30
+	map ROUTE_32
+	map ROUTE_34
+	map ROUTE_35
+	map ROUTE_37
+	map ROUTE_38
+	map ROUTE_39
+	map ROUTE_42
+	map ROUTE_43
+	map ROUTE_44
+	map ROUTE_45
+	map ROUTE_36
+	map ROUTE_31
+OaksPkmnTalkRoutesEnd
--- /dev/null
+++ b/data/radio/pnp_hidden_people.asm
@@ -1,0 +1,26 @@
+; Places and People will not describe these trainers.
+
+PnP_HiddenPeople:
+	db WILL
+	db BRUNO
+	db KAREN
+	db KOGA
+	db CHAMPION
+	; fallthrough
+PnP_HiddenPeople_BeatE4:
+	db BROCK
+	db MISTY
+	db LT_SURGE
+	db ERIKA
+	db JANINE
+	db SABRINA
+	db BLAINE
+	db BLUE
+	; fallthrough
+PnP_HiddenPeople_BeatKanto:
+	db RIVAL1
+	db POKEMON_PROF
+	db CAL
+	db RIVAL2
+	db RED
+	db -1
--- /dev/null
+++ b/data/radio/pnp_hidden_places.asm
@@ -1,0 +1,13 @@
+; Places and People will not describe these maps.
+
+PnP_HiddenPlaces:
+	map PALLET_TOWN
+	map ROUTE_22
+	map PEWTER_CITY
+	map CERULEAN_POLICE_STATION
+	map ROUTE_12
+	map ROUTE_11
+	map ROUTE_16
+	map ROUTE_14
+	map CINNABAR_POKECENTER_2F_BETA
+PnP_HiddenPlacesEnd
--- a/data/sgb_border_map.asm
+++ /dev/null
@@ -1,29 +1,0 @@
-SGBBorderMap:
-	db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
-	db $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $54, $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54
-	db $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54
-	db $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54, $20, $54, $07, $14, $08, $14, $09, $14, $0a, $14, $0b, $14, $0c, $14, $0d, $14, $07, $14, $07, $14, $18, $14, $09, $14, $1a, $14, $1b, $14, $0d, $14, $0c, $14, $1c, $14, $29, $14, $07, $14, $20, $14, $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54
-	db $31, $14, $32, $14, $07, $14, $07, $14, $32, $54, $36, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $27, $10, $32, $14, $07, $54, $07, $54, $32, $54, $31, $54
-	db $05, $14, $06, $14, $07, $14, $07, $54, $06, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $06, $14, $07, $14, $07, $54, $06, $54, $05, $54
-	db $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54
-	db $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54
-	db $33, $14, $34, $14, $35, $14, $35, $54, $34, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54
-	db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
-	db $02, $54, $01, $54, $07, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $07, $14, $01, $14, $02, $14
-	db $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14
-	db $22, $54, $21, $54, $20, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $20, $14, $21, $14, $22, $14
-	db $32, $54, $31, $54, $30, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $30, $14, $31, $14, $32, $14
-	db $06, $54, $05, $54, $04, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $04, $14, $05, $14, $06, $14
-	db $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14
-	db $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14
-	db $34, $54, $33, $54, $07, $54, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $07, $14, $33, $14, $34, $14
-	db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $1f, $10,                                                                                                                                                                                     $37, $10, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
-	db $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54
-	db $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54
-	db $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54
-	db $31, $14, $32, $14, $07, $14, $07, $14, $32, $54, $1f, $10,                                                                                                                                                                                     $37, $10, $32, $14, $07, $54, $07, $54, $32, $54, $31, $54
-	db $05, $14, $06, $14, $07, $14, $07, $54, $06, $54, $2e, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2d, $10, $06, $14, $07, $14, $07, $54, $06, $54, $05, $54
-	db $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $39, $14, $0e, $14, $09, $14, $0f, $14, $28, $14, $07, $14, $19, $14, $0c, $14, $1c, $14, $29, $14, $2a, $14, $2b, $14, $2c, $14, $39, $14, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54
-	db $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54
-	db $33, $14, $34, $14, $35, $14, $35, $54, $34, $54, $24, $54, $07, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54
-	db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $20, $14, $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54, $20, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
--- /dev/null
+++ b/data/sgb_ctrl_packets.asm
@@ -1,0 +1,135 @@
+; macros taken from pokered's data/sgb_packets.asm
+; names taken from pandocs
+; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_Palette_Commands
+
+sgb_pal_trn: MACRO
+	db (SGB_PAL_TRN << 3) + 1
+	ds 15
+ENDM
+
+sgb_mlt_req: MACRO
+	db (SGB_MLT_REG << 3) + 1
+	db \1 - 1
+	ds 14
+ENDM
+
+sgb_chr_trn: MACRO
+	db (SGB_CHR_TRN << 3) + 1
+	db \1 + (\2 << 1)
+	ds 14
+ENDM
+
+sgb_pct_trn: MACRO
+	db (SGB_PCT_TRN << 3) + 1
+	ds 15
+ENDM
+
+sgb_mask_en: MACRO
+	db (SGB_MASK_EN << 3) + 1
+	db \1
+	ds 14
+ENDM
+
+sgb_data_snd: MACRO
+	db (SGB_DATA_SND << 3) + 1
+	dw \1 ; address
+	db \2 ; bank
+	db \3 ; length (1-11)
+ENDM
+
+
+; Crystal does not support SGB, so this is unused.
+
+PalTrnPacket:  sgb_pal_trn
+MltReq1Packet: sgb_mlt_req 1
+MltReq2Packet: sgb_mlt_req 2
+ChrTrnPacket:  sgb_chr_trn 0, 0
+PctTrnPacket:  sgb_pct_trn
+
+MaskEnFreezePacket: sgb_mask_en 1
+MaskEnCancelPacket: sgb_mask_en 0
+
+
+; These are packets containing SNES code.
+; This set of packets is found in several Japanese SGB-compatible titles.
+; It appears to be part of NCL's SGB devkit.
+
+DataSndPacket1:
+	sgb_data_snd $085d, $0, 11
+	db  $8c                 ; cpx #$8c (2)
+	db  $d0, $f4            ; bne -$0c
+	db  $60                 ; rts
+	ds  7
+
+DataSndPacket2:
+	sgb_data_snd $0852, $0, 11
+	db  $a9, $e7            ; lda #$e7
+	db  $9f, $01, $c0, $7e  ; sta $7ec001, x
+	db  $e8                 ; inx
+	db  $e8                 ; inx
+	db  $e8                 ; inx
+	db  $e8                 ; inx
+	db  $e0                 ; cpx #$8c (1)
+
+DataSndPacket3:
+	sgb_data_snd $0847, $0, 11
+	db  $c4                 ; cmp #$c4 (2)
+	db  $d0, $16            ; bne +$16
+	db  $a5                 ; lda dp
+	db  $cb                 ; wai
+	db  $c9, $05            ; cmp #$05
+	db  $d0, $10            ; bne +$10
+	db  $a2, $28            ; ldx #$28
+
+DataSndPacket4:
+	sgb_data_snd $083c, $0, 11
+	db  $f0, $12            ; beq +$12
+	db  $a5                 ; lda dp
+	db  $c9, $c9            ; cmp #$c9
+	db  $c8                 ; iny
+	db  $d0, $1c            ; bne +$1c
+	db  $a5                 ; lda dp
+	db  $ca                 ; dex
+	db  $c9                 ; cmp #$c4 (1)
+
+DataSndPacket5:
+	sgb_data_snd $0831, $0, 11
+	dbw $0c, $caa5          ; tsb $caa5
+	db  $c9, $7e            ; cmp #$7e
+	db  $d0, $06            ; bne +$06
+	db  $a5                 ; lda dp
+	db  $cb                 ; wai
+	db  $c9, $7e            ; cmp #$7e
+
+DataSndPacket6:
+	sgb_data_snd $0826, $0, 11
+	db  $39                 ; bne +$39 (2)
+	dbw $cd, $0c48          ; cmp $0c48
+	db  $d0, $34            ; bne +$34
+	db  $a5                 ; lda dp
+	db  $c9, $c9            ; cmp #$c9
+	db  $80, $d0            ; bra -$30
+
+DataSndPacket7:
+	sgb_data_snd $081b, $0, 11
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	                        ; $0820:
+	db  $a9, $01            ; lda #01
+	dbw $cd, $0c4f          ; cmp $c4f
+	db  $d0                 ; bne +$39 (1)
+
+DataSndPacket8:
+	sgb_data_snd $0810, $0, 11
+	dbw $4c, $0820          ; jmp $0820
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $ea                 ; nop
+	db  $60                 ; rts
+	db  $ea                 ; nop
+	db  $ea                 ; nop
--- /dev/null
+++ b/data/special_pointers.asm
@@ -1,0 +1,185 @@
+; Special routines can be used with the "special" map script command.
+; They often use ScriptVar for arguments and return values.
+
+add_special: MACRO
+\1Special::
+	dba \1
+ENDM
+
+SpecialsPointers:: ; c029
+	add_special Special_WarpToSpawnPoint
+
+; Communications
+	add_special Special_SetBitsForLinkTradeRequest
+	add_special Special_WaitForLinkedFriend
+	add_special Special_CheckLinkTimeout
+	add_special Special_TryQuickSave
+	add_special Special_CheckBothSelectedSameRoom
+	add_special Special_FailedLinkToPast
+	add_special Special_CloseLink
+	add_special Special_WaitForOtherPlayerToExit
+	add_special Special_SetBitsForBattleRequest
+	add_special Special_SetBitsForTimeCapsuleRequest
+	add_special Special_CheckTimeCapsuleCompatibility
+	add_special Special_EnterTimeCapsule
+	add_special Special_TradeCenter
+	add_special Special_Colosseum
+	add_special Special_TimeCapsule
+	add_special Special_CableClubCheckWhichChris
+	add_special Special_CheckMysteryGift
+	add_special Special_GetMysteryGiftItem
+	add_special Special_UnlockMysteryGift
+
+; Map Events
+	add_special Special_BugContestJudging
+	add_special Special_CheckPartyFullAfterContest
+	add_special Special_ContestDropOffMons
+	add_special Special_ContestReturnMons
+	add_special Special_GiveParkBalls
+	add_special Special_CheckMagikarpLength
+	add_special Special_MagikarpHouseSign
+	add_special HealParty ; this is both a special and a predef
+	add_special Special_PokemonCenterPC
+	add_special Special_KrissHousePC
+	add_special Special_DayCareMan
+	add_special Special_DayCareLady
+	add_special Special_DayCareManOutside
+	add_special Special_MoveDeletion
+	add_special Special_BankOfMom
+	add_special Special_MagnetTrain
+	add_special Special_NameRival
+	add_special Special_SetDayOfWeek
+	add_special Special_TownMap
+	add_special Special_UnownPrinter
+	add_special Special_MapRadio
+	add_special Special_UnownPuzzle
+	add_special Special_SlotMachine
+	add_special Special_CardFlip
+	add_special Special_DummyNonfunctionalGameCornerGame
+	add_special Special_ClearBGPalettesBufferScreen
+	add_special Special_FadeOutPalettes
+	add_special Special_BattleTowerFade
+	add_special Special_FadeBlackQuickly
+	add_special Special_FadeInPalettes
+	add_special Special_FadeInQuickly
+	add_special ReloadSpritesNoPalettes ; bank 0
+	add_special ClearBGPalettes ; bank 0
+	add_special UpdateTimePals ; bank 0
+	add_special ClearTileMap ; bank 0
+	add_special UpdateSprites ; bank 0
+	add_special ReplaceKrisSprite ; bank 0
+	add_special Special_GameCornerPrizeMonCheckDex
+	add_special UnusedSpecial_SeenMon
+	add_special WaitSFX ; bank 0
+	add_special PlayMapMusic ; bank 0
+	add_special RestartMapMusic ; bank 0
+	add_special Special_HealMachineAnim
+	add_special Special_SurfStartStep
+	add_special Special_FindGreaterThanThatLevel
+	add_special Special_FindAtLeastThatHappy
+	add_special Special_FindThatSpecies
+	add_special Special_FindThatSpeciesYourTrainerID
+	add_special UnusedSpecial_CheckUnusedTwoDayTimer
+	add_special Special_DayCareMon1
+	add_special Special_DayCareMon2
+	add_special Special_SelectRandomBugContestContestants
+	add_special Special_ActivateFishingSwarm
+	add_special Special_ToggleMaptileDecorations
+	add_special Special_ToggleDecorationsVisibility
+	add_special Special_GiveShuckle
+	add_special Special_ReturnShuckle
+	add_special Special_BillsGrandfather
+	add_special Special_CheckPokerus
+	add_special Special_DisplayCoinCaseBalance
+	add_special Special_DisplayMoneyAndCoinBalance
+	add_special Special_PlaceMoneyTopRight
+	add_special Special_CheckForLuckyNumberWinners
+	add_special Special_CheckLuckyNumberShowFlag
+	add_special Special_ResetLuckyNumberShowFlag
+	add_special Special_PrintTodaysLuckyNumber
+	add_special Special_SelectApricornForKurt
+	add_special Special_NameRater
+	add_special Special_DisplayLinkRecord
+	add_special Special_GetFirstPokemonHappiness
+	add_special Special_CheckFirstMonIsEgg
+	add_special Special_RandomUnseenWildMon
+	add_special Special_RandomPhoneWildMon
+	add_special Special_RandomPhoneMon
+	add_special Special_LoadUsedSpritesGFX
+	add_special Special_PlaySlowCry
+	add_special Special_SnorlaxAwake
+	add_special Special_YoungerHaircutBrother
+	add_special Special_OlderHaircutBrother
+	add_special Special_DaisyMassage
+	add_special Special_PlayCurMonCry
+	add_special Special_ProfOaksPCBoot
+	add_special Special_GameboyCheck
+	add_special Special_TrainerHouse
+	add_special Special_PhotoStudio
+	add_special Special_InitRoamMons
+	add_special Special_FadeOutMusic
+	add_special Special_Diploma
+	add_special Special_PrintDiploma
+
+	; Crystal
+	add_special Special_Function11ac3e
+	add_special Special_Function11b444
+	add_special Special_Function11b5e8
+	add_special Special_Function11b7e5
+	add_special Special_Function11b879
+	add_special Special_Function11b920
+	add_special Special_Function11b93b
+	add_special Special_BattleTowerRoomMenu
+	add_special Special_Function1700ba
+	add_special Special_Function170114
+	add_special Special_BattleTowerBattle
+	add_special UnusedSpecial_Function1704e1
+	add_special DummySpecial_17021d
+	add_special Special_LoadOpponentTrainerAndPokemonWithOTSprite
+	add_special Special_Function11ba38
+	add_special Special_CheckForBattleTowerRules
+	add_special Special_GiveOddEgg
+	add_special Reset ; bank 0
+	add_special Special_Function1011f1
+	add_special Special_Function101220
+	add_special Special_Function101225
+	add_special Special_Function101231
+	add_special Special_MoveTutor
+	add_special Special_OmanyteChamber
+	add_special Special_Function11c1ab
+	add_special Special_BattleTowerAction
+	add_special Special_DisplayUnownWords
+	add_special Special_Menu_ChallengeExplanationCancel
+	add_special Special_Function17d2b6
+	add_special Special_Function17d2ce
+	add_special Special_BattleTowerMobileError
+	add_special Special_AskMobileOrCable
+	add_special Special_HoOhChamber
+	add_special Special_Function102142
+	add_special Special_CelebiShrineEvent
+	add_special Special_CheckCaughtCelebi
+	add_special Special_PokeSeer
+	add_special Special_BuenasPassword
+	add_special Special_BuenaPrize
+	add_special Special_Dratini
+	add_special Special_SampleKenjiBreakCountdown
+	add_special Special_BeastsCheck
+	add_special Special_MonCheck
+	add_special Special_SetPlayerPalette
+	add_special DummySpecial_170bd2
+	add_special Special_Mobile_SelectThreeMons
+	add_special Special_Function1037eb
+	add_special Special_Function10383c
+	add_special Special_StubbedTrainerRankings_Healings
+	add_special Special_RefreshSprites
+	add_special Special_Function1037c2
+	add_special Special_Mobile_DummyReturnFalse
+	add_special Special_Function103780
+	add_special Special_Function10387b
+	add_special Special_AskRememberPassword
+	add_special Special_LoadMapPalettes
+	add_special UnusedSpecial_FindItemInPCOrBag
+	add_special Special_InitialSetDSTFlag
+	add_special Special_InitialClearDSTFlag
+	add_special DummySpecial_c224
+; c224
--- a/data/sprite_anims/framesets.asm
+++ b/data/sprite_anims/framesets.asm
@@ -9,7 +9,7 @@
 	dw .Frameset_PartyMonWithItemFast
 	dw .Frameset_GSTitleTrail
 	dw .Frameset_TextEntryCursor
-	dw .Frameset_09
+	dw .Frameset_TextEntryCursorBig
 	dw .Frameset_GameFreakLogo
 	dw .Frameset_GSIntroStar
 	dw .Frameset_GSIntroSparkle
@@ -20,7 +20,7 @@
 	dw .Frameset_RedWalk
 	dw .Frameset_StillCursor
 	dw .Frameset_TradePokeBall
-	dw .Frameset_TradePokeBall0
+	dw .Frameset_TradePokeBallWobble
 	dw .Frameset_TradePoof
 	dw .Frameset_TradeTubeBulge
 	dw .Frameset_TrademonIcon
@@ -28,31 +28,31 @@
 	dw .Frameset_EvolutionBallOfLight
 	dw .Frameset_RadioTuningKnob
 	dw .Frameset_MagnetTrainRed
-	dw .Frameset_1c
+	dw .Frameset_Unused1C
 	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_EggHatch1
+	dw .Frameset_EggHatch2
+	dw .Frameset_EggHatch3
+	dw .Frameset_EggHatch4
+	dw .Frameset_GSIntroHoOh
 	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_EZChatCursor1
+	dw .Frameset_EZChatCursor2
+	dw .Frameset_EZChatCursor3
+	dw .Frameset_EZChatCursor4
+	dw .Frameset_EZChatCursor5
+	dw .Frameset_EZChatCursor6
+	dw .Frameset_EZChatCursor7
 	dw .Frameset_BlueWalk
 	dw .Frameset_MagnetTrainBlue
 	dw .Frameset_MobileTradeSentBall
 	dw .Frameset_MobileTradeOTBall
-	dw .Frameset_ForMobile22
-	dw .Frameset_ForMobile23
-	dw .Frameset_ForMobile24
-	dw .Frameset_ForMobile25
+	dw .Frameset_MobileTradeCableBulge
+	dw .Frameset_MobileTradeSentPulse
+	dw .Frameset_MobileTradeOTPulse
+	dw .Frameset_MobileTradePing
 	dw .Frameset_IntroSuicune
 	dw .Frameset_IntroSuicune2
 	dw .Frameset_IntroPichu
@@ -133,8 +133,8 @@
 	dorepeat  1
 	dorestart
 
-.Frameset_09:
-	frame SPRITE_ANIM_OAMSET_FOR_FRAMESET_09,  1
+.Frameset_TextEntryCursorBig:
+	frame SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR_BIG,  1
 	dorepeat  1
 	dorestart
 
@@ -202,7 +202,7 @@
 	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 32
 	endanim
 
-.Frameset_TradePokeBall0:
+.Frameset_TradePokeBallWobble:
 	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
 	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2,  3
 	frame SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1,  3
@@ -216,8 +216,8 @@
 	delanim
 
 .Frameset_TradeTubeBulge:
-	frame SPRITE_ANIM_OAMSET_35,  3
-	frame SPRITE_ANIM_OAMSET_36,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_1,  3
+	frame SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_2,  3
 	dorestart
 
 .Frameset_TrademonIcon:
@@ -246,50 +246,50 @@
 	frame SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2,  8, OAM_X_FLIP
 	dorestart
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_43,  8
-	frame SPRITE_ANIM_OAMSET_44,  8
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_43,  8
+	frame SPRITE_ANIM_OAMSET_UNUSED_44,  8
 	dorestart
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_45,  8
-	frame SPRITE_ANIM_OAMSET_46,  8
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_45,  8
+	frame SPRITE_ANIM_OAMSET_UNUSED_46,  8
 	dorestart
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_47,  8
-	frame SPRITE_ANIM_OAMSET_48,  8
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_47,  8
+	frame SPRITE_ANIM_OAMSET_UNUSED_48,  8
 	dorestart
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_49,  1
-	frame SPRITE_ANIM_OAMSET_49,  1, OAM_X_FLIP
-	frame SPRITE_ANIM_OAMSET_49,  1, OAM_X_FLIP, OAM_Y_FLIP
-	frame SPRITE_ANIM_OAMSET_49,  1, OAM_Y_FLIP
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_49,  1
+	frame SPRITE_ANIM_OAMSET_UNUSED_49,  1, OAM_X_FLIP
+	frame SPRITE_ANIM_OAMSET_UNUSED_49,  1, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_OAMSET_UNUSED_49,  1, OAM_Y_FLIP
 	dorestart
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_4A, 32
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_4A, 32
 	endanim
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_4B, 32
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_4B, 32
 	endanim
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_4C, 32
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_4C, 32
 	endanim
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_4D, 32
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_4D, 32
 	endanim
 
-; XXX
-	frame SPRITE_ANIM_OAMSET_4E,  3
+; unused
+	frame SPRITE_ANIM_OAMSET_UNUSED_4E,  3
 	dorepeat  3
 	dorestart
 
-.Frameset_1c:
+.Frameset_Unused1C:
 	dorepeat 32
 	endanim
 
@@ -310,29 +310,29 @@
 	frame SPRITE_ANIM_OAMSET_EGG_CRACK, 32
 	endanim
 
-.Frameset_EggHatch:
-	frame SPRITE_ANIM_OAMSET_55, 32
+.Frameset_EggHatch1:
+	frame SPRITE_ANIM_OAMSET_EGG_HATCH, 32
 	endanim
 
-.Frameset_21:
-	frame SPRITE_ANIM_OAMSET_55, 32, OAM_X_FLIP
+.Frameset_EggHatch2:
+	frame SPRITE_ANIM_OAMSET_EGG_HATCH, 32, OAM_X_FLIP
 	endanim
 
-.Frameset_22:
-	frame SPRITE_ANIM_OAMSET_55, 32, OAM_Y_FLIP
+.Frameset_EggHatch3:
+	frame SPRITE_ANIM_OAMSET_EGG_HATCH, 32, OAM_Y_FLIP
 	endanim
 
-.Frameset_23:
-	frame SPRITE_ANIM_OAMSET_55, 32, OAM_X_FLIP, OAM_Y_FLIP
+.Frameset_EggHatch4:
+	frame SPRITE_ANIM_OAMSET_EGG_HATCH, 32, OAM_X_FLIP, OAM_Y_FLIP
 	endanim
 
-.Frameset_24:
-	frame SPRITE_ANIM_OAMSET_56, 10
-	frame SPRITE_ANIM_OAMSET_57,  9
-	frame SPRITE_ANIM_OAMSET_58, 10
-	frame SPRITE_ANIM_OAMSET_59, 10
-	frame SPRITE_ANIM_OAMSET_58,  9
-	frame SPRITE_ANIM_OAMSET_5A, 10
+.Frameset_GSIntroHoOh:
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_1, 10
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_2,  9
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_3, 10
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_4, 10
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_3,  9
+	frame SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_5, 10
 	dorestart
 
 .Frameset_HeadbuttTree:
@@ -342,32 +342,32 @@
 	frame SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2,  2, OAM_X_FLIP
 	dorestart
 
-.Frameset_26:
-	frame SPRITE_ANIM_OAMSET_5C,  2
+.Frameset_EZChatCursor1:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_1,  2
 	endanim
 
-.Frameset_27:
-	frame SPRITE_ANIM_OAMSET_5D,  2
+.Frameset_EZChatCursor2:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_2,  2
 	endanim
 
-.Frameset_28:
-	frame SPRITE_ANIM_OAMSET_5E,  2
+.Frameset_EZChatCursor3:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_3,  2
 	endanim
 
-.Frameset_29:
-	frame SPRITE_ANIM_OAMSET_5F,  2
+.Frameset_EZChatCursor4:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_4,  2
 	endanim
 
-.Frameset_2a:
-	frame SPRITE_ANIM_OAMSET_60,  2
+.Frameset_EZChatCursor5:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_5,  2
 	endanim
 
-.Frameset_2b:
-	frame SPRITE_ANIM_OAMSET_61,  2
+.Frameset_EZChatCursor6:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_6,  2
 	endanim
 
-.Frameset_2c:
-	frame SPRITE_ANIM_OAMSET_62,  2
+.Frameset_EZChatCursor7:
+	frame SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_7,  2
 	endanim
 
 .Frameset_MobileTradeSentBall:
@@ -406,23 +406,23 @@
 	frame SPRITE_ANIM_OAMSET_TRADE_POOF_3,  3
 	delanim
 
-.Frameset_ForMobile22:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1,  3
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2,  3
+.Frameset_MobileTradeCableBulge:
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_CABLE_BULGE_1,  3
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_CABLE_BULGE_2,  3
 	dorestart
 
-.Frameset_ForMobile23:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_23,  3
+.Frameset_MobileTradeSentPulse:
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_SENT_PULSE,  3
 	endanim
 
-.Frameset_ForMobile24:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_24,  3
+.Frameset_MobileTradeOTPulse:
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_OT_PULSE,  3
 	endanim
 
-.Frameset_ForMobile25:
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1,  2
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2,  2
-	frame SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3,  2
+.Frameset_MobileTradePing:
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_1,  2
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_2,  2
+	frame SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_3,  2
 	delanim
 
 .Frameset_IntroSuicune:
--- a/data/sprite_anims/oam.asm
+++ b/data/sprite_anims/oam.asm
@@ -1,157 +1,157 @@
 SpriteAnimOAMData: ; 8d94d
 ; entries correspond to SPRITE_ANIM_OAMSET_* constants
 	; vtile offset, pointer
-	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_1
-	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_RED_WALK_2
-	dbw $4c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_02
-	dbw $5c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_03
-	dbw $6c, .OAMData_04 ; SPRITE_ANIM_OAMSET_04
-	dbw $6e, .OAMData_04 ; SPRITE_ANIM_OAMSET_05
-	dbw $2d, .OAMData_06 ; SPRITE_ANIM_OAMSET_06
-	dbw $4d, .OAMData_06 ; SPRITE_ANIM_OAMSET_07
-	dbw $60, .OAMData_08 ; SPRITE_ANIM_OAMSET_08
-	dbw $00, .OAMData_08 ; SPRITE_ANIM_OAMSET_09
-	dbw $00, .OAMData_08 ; SPRITE_ANIM_OAMSET_0A
-	dbw $06, .OAMData_08 ; SPRITE_ANIM_OAMSET_0B
-	dbw $0c, .OAMData_0c ; SPRITE_ANIM_OAMSET_0C
-	dbw $0d, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_0D
-	dbw $00, .OAMData_0e ; SPRITE_ANIM_OAMSET_0E
-	dbw $04, .OAMData_0e ; SPRITE_ANIM_OAMSET_0F
-	dbw $08, .OAMData_0e ; SPRITE_ANIM_OAMSET_10
-	dbw $40, .OAMData_0e ; SPRITE_ANIM_OAMSET_11
-	dbw $44, .OAMData_0e ; SPRITE_ANIM_OAMSET_12
-	dbw $48, .OAMData_0e ; SPRITE_ANIM_OAMSET_13
-	dbw $4c, .OAMData_0e ; SPRITE_ANIM_OAMSET_14
-	dbw $80, .OAMData_15 ; SPRITE_ANIM_OAMSET_15
-	dbw $85, .OAMData_15 ; SPRITE_ANIM_OAMSET_16
-	dbw $8a, .OAMData_15 ; SPRITE_ANIM_OAMSET_17
-	dbw $00, .OAMData_18 ; SPRITE_ANIM_OAMSET_18
-	dbw $01, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_19
-	dbw $09, .OAMData_1a ; SPRITE_ANIM_OAMSET_1A
-	dbw $10, .OAMData_1b ; SPRITE_ANIM_OAMSET_1B
-	dbw $29, .OAMData_1b ; SPRITE_ANIM_OAMSET_1C
-	dbw $42, .OAMData_1b ; SPRITE_ANIM_OAMSET_1D
-	dbw $f8, .OAMData_GSTitleTrail ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1
-	dbw $fa, .OAMData_GSTitleTrail ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2
-	dbw $00, .OAMData_TextEntryCursor ; SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR
-	dbw $00, .OAMData_ForFrameset09 ; SPRITE_ANIM_OAMSET_FOR_FRAMESET_09
-	dbw $00, .OAMData_22 ; SPRITE_ANIM_OAMSET_22
-	dbw $0f, .OAMData_GSIntroStar ; SPRITE_ANIM_OAMSET_GS_INTRO_STAR
-	dbw $11, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1
-	dbw $12, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2
-	dbw $13, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3
-	dbw $00, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1
-	dbw $08, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2
-	dbw $10, .OAMData_SlotsChansey1 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1
-	dbw $10, .OAMData_SlotsChansey2 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2
-	dbw $10, .OAMData_SlotsChansey3 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3
-	dbw $10, .OAMData_SlotsChansey4 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4
-	dbw $10, .OAMData_SlotsChansey5 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5
-	dbw $3a, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_SLOTS_EGG
-	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_STILL_CURSOR
-	dbw $00, .OAMData_TradePokeBall1 ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1
-	dbw $02, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2
-	dbw $06, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_1
-	dbw $0a, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_2
-	dbw $0e, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_3
-	dbw $12, .OAMData_35 ; SPRITE_ANIM_OAMSET_35
-	dbw $13, .OAMData_35 ; SPRITE_ANIM_OAMSET_36
-	dbw $00, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_1
-	dbw $04, .OAMData_RedWalk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_2
-	dbw $10, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE
-	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1
-	dbw $04, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2
-	dbw $00, .OAMData_RadioTuningKnob ; SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB
-	dbw $00, .OAMData_PartyMonWithMail1 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1
-	dbw $00, .OAMData_PartyMonWithMail2 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2
-	dbw $00, .OAMData_PartyMonWithItem1 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1
-	dbw $00, .OAMData_PartyMonWithItem2 ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2
-	dbw $00, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1
-	dbw $04, .OAMData_MagnetTrainRed ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2
-	dbw $00, .OAMData_43 ; SPRITE_ANIM_OAMSET_43
-	dbw $30, .OAMData_43 ; SPRITE_ANIM_OAMSET_44
-	dbw $03, .OAMData_43 ; SPRITE_ANIM_OAMSET_45
-	dbw $33, .OAMData_43 ; SPRITE_ANIM_OAMSET_46
-	dbw $06, .OAMData_43 ; SPRITE_ANIM_OAMSET_47
-	dbw $36, .OAMData_43 ; SPRITE_ANIM_OAMSET_48
-	dbw $09, .OAMData_43 ; SPRITE_ANIM_OAMSET_49
-	dbw $39, .OAMData_43 ; SPRITE_ANIM_OAMSET_4A
-	dbw $0c, .OAMData_4b ; SPRITE_ANIM_OAMSET_4B
-	dbw $0c, .OAMData_4c ; SPRITE_ANIM_OAMSET_4C
-	dbw $3c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_4D
-	dbw $3e, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_4E
-	dbw $00, .OAMData_Leaf ; SPRITE_ANIM_OAMSET_LEAF
-	dbw $00, .OAMData_Tree ; SPRITE_ANIM_OAMSET_TREE_1
-	dbw $00, .OAMData_CutTree2 ; SPRITE_ANIM_OAMSET_CUT_TREE_2
-	dbw $00, .OAMData_CutTree3 ; SPRITE_ANIM_OAMSET_CUT_TREE_3
-	dbw $00, .OAMData_CutTree4 ; SPRITE_ANIM_OAMSET_CUT_TREE_4
-	dbw $00, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_EGG_CRACK
-	dbw $01, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_55
-	dbw $00, .OAMData_56 ; SPRITE_ANIM_OAMSET_56
-	dbw $00, .OAMData_57 ; SPRITE_ANIM_OAMSET_57
-	dbw $00, .OAMData_58 ; SPRITE_ANIM_OAMSET_58
-	dbw $00, .OAMData_59 ; SPRITE_ANIM_OAMSET_59
-	dbw $00, .OAMData_5a ; SPRITE_ANIM_OAMSET_5A
-	dbw $04, .OAMData_Tree ; SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2
-	dbw $00, .OAMData_5c ; SPRITE_ANIM_OAMSET_5C
-	dbw $00, .OAMData_5d ; SPRITE_ANIM_OAMSET_5D
-	dbw $00, .OAMData_5e ; SPRITE_ANIM_OAMSET_5E
-	dbw $00, .OAMData_5f ; SPRITE_ANIM_OAMSET_5F
-	dbw $00, .OAMData_60 ; SPRITE_ANIM_OAMSET_60
-	dbw $00, .OAMData_61 ; SPRITE_ANIM_OAMSET_61
-	dbw $00, .OAMData_62 ; SPRITE_ANIM_OAMSET_62
-	dbw $00, .OAMData_BlueWalk ; SPRITE_ANIM_OAMSET_BLUE_WALK_1
-	dbw $04, .OAMData_BlueWalk ; SPRITE_ANIM_OAMSET_BLUE_WALK_2
-	dbw $00, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1
-	dbw $04, .OAMData_MagnetTrainBlue ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2
-	dbw $20, .OAMData_ForMobile22 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_22_1
-	dbw $21, .OAMData_ForMobile22 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_22_2
-	dbw $22, .OAMData_ForMobile25_1 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_1
-	dbw $23, .OAMData_ForMobile25_2 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_2
-	dbw $27, .OAMData_ForMobile25_3 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_25_3
-	dbw $2a, .OAMData_ForMobile23 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_23
-	dbw $2a, .OAMData_ForMobile24 ; SPRITE_ANIM_OAMSET_FOR_MOBILE_24
-	dbw $00, .OAMData_IntroSuicune1 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1
-	dbw $08, .OAMData_IntroSuicune2 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2
-	dbw $60, .OAMData_IntroSuicune3 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3
-	dbw $68, .OAMData_IntroSuicune4 ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4
-	dbw $00, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_1
-	dbw $05, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_2
-	dbw $0a, .OAMData_IntroPichu ; SPRITE_ANIM_OAMSET_INTRO_PICHU_3
-	dbw $50, .OAMData_IntroWooper ; SPRITE_ANIM_OAMSET_INTRO_WOOPER
-	dbw $00, .OAMData_IntroUnown1 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_1
-	dbw $01, .OAMData_IntroUnown2 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_2
-	dbw $04, .OAMData_IntroUnown3 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_3
-	dbw $00, .OAMData_18 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1
-	dbw $01, .OAMData_IntroUnownF2_2 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2
-	dbw $03, .OAMData_IntroUnownF2_3 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3
-	dbw $08, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4
-	dbw $1c, .OAMData_IntroUnownF2_4_5 ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5
-	dbw $80, .OAMData_IntroSuicuneAway ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY
-	dbw $00, .OAMData_Celebi ; SPRITE_ANIM_OAMSET_CELEBI_1
-	dbw $04, .OAMData_Celebi ; SPRITE_ANIM_OAMSET_CELEBI_2
-	dbw $d0, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1
-	dbw $d3, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2
-	dbw $d6, .OAMData_GameFreakLogo1_3 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3
-	dbw $6c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4
-	dbw $68, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5
-	dbw $64, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6
-	dbw $60, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7
-	dbw $0c, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8
-	dbw $08, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9
-	dbw $04, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10
-	dbw $00, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11
+	dbw $00, .OAMData_RedWalk                  ; SPRITE_ANIM_OAMSET_RED_WALK_1
+	dbw $04, .OAMData_RedWalk                  ; SPRITE_ANIM_OAMSET_RED_WALK_2
+	dbw $4c, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_1
+	dbw $5c, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_2
+	dbw $6c, .OAMData_GSIntroShellder          ; SPRITE_ANIM_OAMSET_GS_INTRO_SHELLDER_1
+	dbw $6e, .OAMData_GSIntroShellder          ; SPRITE_ANIM_OAMSET_GS_INTRO_SHELLDER_2
+	dbw $2d, .OAMData_GSIntroMagikarp          ; SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1
+	dbw $4d, .OAMData_GSIntroMagikarp          ; SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2
+	dbw $60, .OAMData_GSIntroLapras            ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_1
+	dbw $00, .OAMData_GSIntroLapras            ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_2
+	dbw $00, .OAMData_GSIntroLapras            ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_3
+	dbw $06, .OAMData_GSIntroLapras            ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_4
+	dbw $0c, .OAMData_GSIntroNote              ; SPRITE_ANIM_OAMSET_GS_INTRO_NOTE
+	dbw $0d, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_GS_INTRO_INVISIBLE_NOTE
+	dbw $00, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1
+	dbw $04, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2
+	dbw $08, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3
+	dbw $40, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_1
+	dbw $44, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2
+	dbw $48, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_3
+	dbw $4c, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_4
+	dbw $80, .OAMData_GSIntroPikachuTail       ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_1
+	dbw $85, .OAMData_GSIntroPikachuTail       ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_2
+	dbw $8a, .OAMData_GSIntroPikachuTail       ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_3
+	dbw $00, .OAMData_IntroUnownF2_1           ; SPRITE_ANIM_OAMSET_GS_INTRO_SMALL_FIREBALL
+	dbw $01, .OAMData_TradePoofBubble          ; SPRITE_ANIM_OAMSET_GS_INTRO_MED_FIREBALL
+	dbw $09, .OAMData_GSIntroBigFireball       ; SPRITE_ANIM_OAMSET_GS_INTRO_BIG_FIREBALL
+	dbw $10, .OAMData_GSIntroStarter           ; SPRITE_ANIM_OAMSET_GS_INTRO_CHIKORITA
+	dbw $29, .OAMData_GSIntroStarter           ; SPRITE_ANIM_OAMSET_GS_INTRO_CYNDAQUIL
+	dbw $42, .OAMData_GSIntroStarter           ; SPRITE_ANIM_OAMSET_GS_INTRO_TOTODILE
+	dbw $f8, .OAMData_GSTitleTrail             ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_1
+	dbw $fa, .OAMData_GSTitleTrail             ; SPRITE_ANIM_OAMSET_GS_TITLE_TRAIL_2
+	dbw $00, .OAMData_TextEntryCursor          ; SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR
+	dbw $00, .OAMData_TextEntryCursorBig       ; SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR_BIG
+	dbw $00, .OAMData_GSIntroGameFreakLogo     ; SPRITE_ANIM_OAMSET_GS_INTRO_GAMEFREAK_LOGO
+	dbw $0f, .OAMData_GSIntroStar              ; SPRITE_ANIM_OAMSET_GS_INTRO_STAR
+	dbw $11, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_1
+	dbw $12, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_2
+	dbw $13, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_GS_INTRO_SPARKLE_3
+	dbw $00, .OAMData_SlotsGolem               ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1
+	dbw $08, .OAMData_SlotsGolem               ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2
+	dbw $10, .OAMData_SlotsChansey1            ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1
+	dbw $10, .OAMData_SlotsChansey2            ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2
+	dbw $10, .OAMData_SlotsChansey3            ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3
+	dbw $10, .OAMData_SlotsChansey4            ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4
+	dbw $10, .OAMData_SlotsChansey5            ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5
+	dbw $3a, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_SLOTS_EGG
+	dbw $00, .OAMData_RedWalk                  ; SPRITE_ANIM_OAMSET_STILL_CURSOR
+	dbw $00, .OAMData_TradePokeBall1           ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1
+	dbw $02, .OAMData_MagnetTrainRed           ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2
+	dbw $06, .OAMData_TradePoofBubble          ; SPRITE_ANIM_OAMSET_TRADE_POOF_1
+	dbw $0a, .OAMData_TradePoofBubble          ; SPRITE_ANIM_OAMSET_TRADE_POOF_2
+	dbw $0e, .OAMData_TradePoofBubble          ; SPRITE_ANIM_OAMSET_TRADE_POOF_3
+	dbw $12, .OAMData_TradeTubeBulge           ; SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_1
+	dbw $13, .OAMData_TradeTubeBulge           ; SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_2
+	dbw $00, .OAMData_RedWalk                  ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_1
+	dbw $04, .OAMData_RedWalk                  ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_2
+	dbw $10, .OAMData_TradePoofBubble          ; SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE
+	dbw $00, .OAMData_MagnetTrainRed           ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_1
+	dbw $04, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_EVOLUTION_BALL_OF_LIGHT_2
+	dbw $00, .OAMData_RadioTuningKnob          ; SPRITE_ANIM_OAMSET_RADIO_TUNING_KNOB
+	dbw $00, .OAMData_PartyMonWithMail1        ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_1
+	dbw $00, .OAMData_PartyMonWithMail2        ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_MAIL_2
+	dbw $00, .OAMData_PartyMonWithItem1        ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_1
+	dbw $00, .OAMData_PartyMonWithItem2        ; SPRITE_ANIM_OAMSET_PARTY_MON_WITH_ITEM_2
+	dbw $00, .OAMData_MagnetTrainRed           ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1
+	dbw $04, .OAMData_MagnetTrainRed           ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2
+	dbw $00, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_43
+	dbw $30, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_44
+	dbw $03, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_45
+	dbw $33, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_46
+	dbw $06, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_47
+	dbw $36, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_48
+	dbw $09, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_49
+	dbw $39, .OAMData_Unused43_4A              ; SPRITE_ANIM_OAMSET_UNUSED_4A
+	dbw $0c, .OAMData_Unused4B                 ; SPRITE_ANIM_OAMSET_UNUSED_4B
+	dbw $0c, .OAMData_Unused4C                 ; SPRITE_ANIM_OAMSET_UNUSED_4C
+	dbw $3c, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_UNUSED_4D
+	dbw $3e, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_UNUSED_4E
+	dbw $00, .OAMData_Leaf                     ; SPRITE_ANIM_OAMSET_LEAF
+	dbw $00, .OAMData_Tree                     ; SPRITE_ANIM_OAMSET_TREE_1
+	dbw $00, .OAMData_CutTree2                 ; SPRITE_ANIM_OAMSET_CUT_TREE_2
+	dbw $00, .OAMData_CutTree3                 ; SPRITE_ANIM_OAMSET_CUT_TREE_3
+	dbw $00, .OAMData_CutTree4                 ; SPRITE_ANIM_OAMSET_CUT_TREE_4
+	dbw $00, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_EGG_CRACK
+	dbw $01, .OAMData_1x1_Palette0             ; SPRITE_ANIM_OAMSET_EGG_HATCH
+	dbw $00, .OAMData_GSIntroHoOh1             ; SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_1
+	dbw $00, .OAMData_GSIntroHoOh2             ; SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_2
+	dbw $00, .OAMData_GSIntroHoOh3             ; SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_3
+	dbw $00, .OAMData_GSIntroHoOh4             ; SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_4
+	dbw $00, .OAMData_GSIntroHoOh5             ; SPRITE_ANIM_OAMSET_GS_INTRO_HO_OH_5
+	dbw $04, .OAMData_Tree                     ; SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2
+	dbw $00, .OAMData_EZChatCursor1            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_1
+	dbw $00, .OAMData_EZChatCursor2            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_2
+	dbw $00, .OAMData_EZChatCursor3            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_3
+	dbw $00, .OAMData_EZChatCursor4            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_4
+	dbw $00, .OAMData_EZChatCursor5            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_5
+	dbw $00, .OAMData_EZChatCursor6            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_6
+	dbw $00, .OAMData_EZChatCursor7            ; SPRITE_ANIM_OAMSET_EZCHAT_CURSOR_7
+	dbw $00, .OAMData_BlueWalk                 ; SPRITE_ANIM_OAMSET_BLUE_WALK_1
+	dbw $04, .OAMData_BlueWalk                 ; SPRITE_ANIM_OAMSET_BLUE_WALK_2
+	dbw $00, .OAMData_MagnetTrainBlue          ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_1
+	dbw $04, .OAMData_MagnetTrainBlue          ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_BLUE_2
+	dbw $20, .OAMData_MobileTradeCableBulge    ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_CABLE_BULGE_1
+	dbw $21, .OAMData_MobileTradeCableBulge    ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_CABLE_BULGE_2
+	dbw $22, .OAMData_MobileTradePing1         ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_1
+	dbw $23, .OAMData_MobileTradePing2         ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_2
+	dbw $27, .OAMData_MobileTradePing3         ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_PING_3
+	dbw $2a, .OAMData_MobileTradeSentPulse     ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_SENT_PULSE
+	dbw $2a, .OAMData_MobileTradeOTPulse       ; SPRITE_ANIM_OAMSET_MOBILE_TRADE_OT_PULSE
+	dbw $00, .OAMData_IntroSuicune1            ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_1
+	dbw $08, .OAMData_IntroSuicune2            ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_2
+	dbw $60, .OAMData_IntroSuicune3            ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_3
+	dbw $68, .OAMData_IntroSuicune4            ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_4
+	dbw $00, .OAMData_IntroPichu               ; SPRITE_ANIM_OAMSET_INTRO_PICHU_1
+	dbw $05, .OAMData_IntroPichu               ; SPRITE_ANIM_OAMSET_INTRO_PICHU_2
+	dbw $0a, .OAMData_IntroPichu               ; SPRITE_ANIM_OAMSET_INTRO_PICHU_3
+	dbw $50, .OAMData_IntroWooper              ; SPRITE_ANIM_OAMSET_INTRO_WOOPER
+	dbw $00, .OAMData_IntroUnown1              ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_1
+	dbw $01, .OAMData_IntroUnown2              ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_2
+	dbw $04, .OAMData_IntroUnown3              ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_3
+	dbw $00, .OAMData_IntroUnownF2_1           ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_1
+	dbw $01, .OAMData_IntroUnownF2_2           ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_2
+	dbw $03, .OAMData_IntroUnownF2_3           ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_3
+	dbw $08, .OAMData_IntroUnownF2_4_5         ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_4
+	dbw $1c, .OAMData_IntroUnownF2_4_5         ; SPRITE_ANIM_OAMSET_INTRO_UNOWN_F_2_5
+	dbw $80, .OAMData_IntroSuicuneAway         ; SPRITE_ANIM_OAMSET_INTRO_SUICUNE_AWAY
+	dbw $00, .OAMData_Celebi                   ; SPRITE_ANIM_OAMSET_CELEBI_1
+	dbw $04, .OAMData_Celebi                   ; SPRITE_ANIM_OAMSET_CELEBI_2
+	dbw $d0, .OAMData_GameFreakLogo1_3         ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_1
+	dbw $d3, .OAMData_GameFreakLogo1_3         ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_2
+	dbw $d6, .OAMData_GameFreakLogo1_3         ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_3
+	dbw $6c, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_4
+	dbw $68, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_5
+	dbw $64, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_6
+	dbw $60, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_7
+	dbw $0c, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_8
+	dbw $08, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9
+	dbw $04, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10
+	dbw $00, .OAMData_GameFreakLogo4_11        ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11
 
 .OAMData_1x1_Palette0:
 	db 1
-	dsprite -1,  4, -1,  4, $00, $00
+	dsprite -1,  4, -1,  4, $00, 0
 
-.OAMData_04:
+.OAMData_GSIntroShellder:
 	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
+	dsprite -1,  0, -1,  0, $00, 0
+	dsprite -1,  0,  0,  0, $01, 0
+	dsprite  0,  0, -1,  0, $10, 0
+	dsprite  0,  0,  0,  0, $11, 0
 
 .OAMData_GSIntroStar:
 	db 4
@@ -162,32 +162,31 @@
 
 .OAMData_TradePokeBall1:
 	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
+	dsprite -1,  0, -1,  0, $00, 0 | PRIORITY
+	dsprite -1,  0,  0,  0, $00, 0 | X_FLIP | PRIORITY
+	dsprite  0,  0, -1,  0, $01, 0 | PRIORITY
+	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP | PRIORITY
 
-.OAMData_18:
+.OAMData_IntroUnownF2_1:
 	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
+	dsprite -1,  0, -1,  0, $00, 0
+	dsprite -1,  0,  0,  0, $00, 0 | X_FLIP
+	dsprite  0,  0, -1,  0, $00, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_35:
+.OAMData_TradeTubeBulge:
 	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
+	dsprite -1,  0, -1,  0, $00, 7
+	dsprite -1,  0,  0,  0, $00, 7 | X_FLIP
+	dsprite  0,  0, -1,  0, $00, 7 | Y_FLIP
+	dsprite  0,  0,  0,  0, $00, 7 | X_FLIP | Y_FLIP
 
-; 8db4b
+; unused
 	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
+	dsprite -1,  0, -1,  0, $00, 0 | PRIORITY
+	dsprite -1,  0,  0,  0, $00, 0 | X_FLIP | PRIORITY
+	dsprite  0,  0, -1,  0, $00, 0 | Y_FLIP | PRIORITY
+	dsprite  0,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP | PRIORITY
 
 .OAMData_TradePoofBubble:
 	db 16
@@ -208,143 +207,142 @@
 	dsprite  1,  0,  0,  0, $01, 0 | X_FLIP | Y_FLIP
 	dsprite  1,  0,  1,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_1a:
+.OAMData_GSIntroBigFireball:
 	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
+	dsprite -3,  0, -3,  0, $00, 0
+	dsprite -3,  0, -2,  0, $01, 0
+	dsprite -3,  0, -1,  0, $02, 0
+	dsprite -2,  0, -3,  0, $03, 0
+	dsprite -2,  0, -2,  0, $04, 0
+	dsprite -2,  0, -1,  0, $05, 0
+	dsprite -1,  0, -3,  0, $06, 0
+	dsprite -1,  0, -2,  0, $05, 0
+	dsprite -1,  0, -1,  0, $05, 0
+	dsprite -3,  0,  0,  0, $02, 0 | X_FLIP
+	dsprite -3,  0,  1,  0, $01, 0 | X_FLIP
+	dsprite -3,  0,  2,  0, $00, 0 | X_FLIP
+	dsprite -2,  0,  0,  0, $05, 0 | X_FLIP
+	dsprite -2,  0,  1,  0, $04, 0 | X_FLIP
+	dsprite -2,  0,  2,  0, $03, 0 | X_FLIP
+	dsprite -1,  0,  0,  0, $05, 0 | X_FLIP
+	dsprite -1,  0,  1,  0, $05, 0 | X_FLIP
+	dsprite -1,  0,  2,  0, $06, 0 | X_FLIP
+	dsprite  0,  0, -3,  0, $06, 0 | Y_FLIP
+	dsprite  0,  0, -2,  0, $05, 0 | Y_FLIP
+	dsprite  0,  0, -1,  0, $05, 0 | Y_FLIP
+	dsprite  1,  0, -3,  0, $03, 0 | Y_FLIP
+	dsprite  1,  0, -2,  0, $04, 0 | Y_FLIP
+	dsprite  1,  0, -1,  0, $05, 0 | Y_FLIP
+	dsprite  2,  0, -3,  0, $00, 0 | Y_FLIP
+	dsprite  2,  0, -2,  0, $01, 0 | Y_FLIP
+	dsprite  2,  0, -1,  0, $02, 0 | Y_FLIP
+	dsprite  0,  0,  0,  0, $05, 0 | X_FLIP | Y_FLIP
+	dsprite  0,  0,  1,  0, $05, 0 | X_FLIP | Y_FLIP
+	dsprite  0,  0,  2,  0, $06, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  0,  0, $05, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  1,  0, $04, 0 | X_FLIP | Y_FLIP
+	dsprite  1,  0,  2,  0, $03, 0 | X_FLIP | Y_FLIP
+	dsprite  2,  0,  0,  0, $02, 0 | X_FLIP | Y_FLIP
+	dsprite  2,  0,  1,  0, $01, 0 | X_FLIP | Y_FLIP
+	dsprite  2,  0,  2,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_43:
+.OAMData_Unused43_4A:
 	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
+	dsprite -2,  4, -2,  4, $00, 0
+	dsprite -2,  4, -1,  4, $01, 0
+	dsprite -2,  4,  0,  4, $02, 0
+	dsprite -1,  4, -2,  4, $10, 0
+	dsprite -1,  4, -1,  4, $11, 0
+	dsprite -1,  4,  0,  4, $12, 0
+	dsprite  0,  4, -2,  4, $20, 0
+	dsprite  0,  4, -1,  4, $21, 0
+	dsprite  0,  4,  0,  4, $22, 0
 
-.OAMData_0e:
+.OAMData_GSIntroJigglypuffPikachu:
 	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
+	dsprite -2,  0, -2,  0, $00, 0
+	dsprite -2,  0, -1,  0, $01, 0
+	dsprite -2,  0,  0,  0, $02, 0
+	dsprite -2,  0,  1,  0, $03, 0
+	dsprite -1,  0, -2,  0, $10, 0
+	dsprite -1,  0, -1,  0, $11, 0
+	dsprite -1,  0,  0,  0, $12, 0
+	dsprite -1,  0,  1,  0, $13, 0
+	dsprite  0,  0, -2,  0, $20, 0
+	dsprite  0,  0, -1,  0, $21, 0
+	dsprite  0,  0,  0,  0, $22, 0
+	dsprite  0,  0,  1,  0, $23, 0
+	dsprite  1,  0, -2,  0, $30, 0
+	dsprite  1,  0, -1,  0, $31, 0
+	dsprite  1,  0,  0,  0, $32, 0
+	dsprite  1,  0,  1,  0, $33, 0
 
-.OAMData_1b:
+.OAMData_GSIntroStarter:
 	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
+	dsprite -3,  4, -3,  4, $00, 0
+	dsprite -2,  4, -3,  4, $01, 0
+	dsprite -1,  4, -3,  4, $02, 0
+	dsprite  0,  4, -3,  4, $03, 0
+	dsprite  1,  4, -3,  4, $04, 0
+	dsprite -3,  4, -2,  4, $05, 0
+	dsprite -2,  4, -2,  4, $06, 0
+	dsprite -1,  4, -2,  4, $07, 0
+	dsprite  0,  4, -2,  4, $08, 0
+	dsprite  1,  4, -2,  4, $09, 0
+	dsprite -3,  4, -1,  4, $0a, 0
+	dsprite -2,  4, -1,  4, $0b, 0
+	dsprite -1,  4, -1,  4, $0c, 0
+	dsprite  0,  4, -1,  4, $0d, 0
+	dsprite  1,  4, -1,  4, $0e, 0
+	dsprite -3,  4,  0,  4, $0f, 0
+	dsprite -2,  4,  0,  4, $10, 0
+	dsprite -1,  4,  0,  4, $11, 0
+	dsprite  0,  4,  0,  4, $12, 0
+	dsprite  1,  4,  0,  4, $13, 0
+	dsprite -3,  4,  1,  4, $14, 0
+	dsprite -2,  4,  1,  4, $15, 0
+	dsprite -1,  4,  1,  4, $16, 0
+	dsprite  0,  4,  1,  4, $17, 0
+	dsprite  1,  4,  1,  4, $18, 0
 
-; 8dcf9
+; unused
 	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
+	dsprite -3,  0, -3,  0, $00, 0
+	dsprite -3,  0, -2,  0, $01, 0
+	dsprite -3,  0, -1,  0, $02, 0
+	dsprite -3,  0,  0,  0, $03, 0
+	dsprite -3,  0,  1,  0, $04, 0
+	dsprite -3,  0,  2,  0, $05, 0
+	dsprite -2,  0, -3,  0, $06, 0
+	dsprite -2,  0, -2,  0, $07, 0
+	dsprite -2,  0, -1,  0, $08, 0
+	dsprite -2,  0,  0,  0, $09, 0
+	dsprite -2,  0,  1,  0, $0a, 0
+	dsprite -2,  0,  2,  0, $0b, 0
+	dsprite -1,  0, -3,  0, $0c, 0
+	dsprite -1,  0, -2,  0, $0d, 0
+	dsprite -1,  0, -1,  0, $0e, 0
+	dsprite -1,  0,  0,  0, $0f, 0
+	dsprite -1,  0,  1,  0, $10, 0
+	dsprite -1,  0,  2,  0, $11, 0
+	dsprite  0,  0, -3,  0, $12, 0
+	dsprite  0,  0, -2,  0, $13, 0
+	dsprite  0,  0, -1,  0, $14, 0
+	dsprite  0,  0,  0,  0, $15, 0
+	dsprite  0,  0,  1,  0, $16, 0
+	dsprite  0,  0,  2,  0, $17, 0
+	dsprite  1,  0, -3,  0, $18, 0
+	dsprite  1,  0, -2,  0, $19, 0
+	dsprite  1,  0, -1,  0, $1a, 0
+	dsprite  1,  0,  0,  0, $1b, 0
+	dsprite  1,  0,  1,  0, $1c, 0
+	dsprite  1,  0,  2,  0, $1d, 0
+	dsprite  2,  0, -3,  0, $1e, 0
+	dsprite  2,  0, -2,  0, $1f, 0
+	dsprite  2,  0, -1,  0, $20, 0
+	dsprite  2,  0,  0,  0, $21, 0
+	dsprite  2,  0,  1,  0, $22, 0
+	dsprite  2,  0,  2,  0, $23, 0
 
 .OAMData_RedWalk:
 	db 4
@@ -355,10 +353,10 @@
 
 .OAMData_MagnetTrainRed:
 	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_RED | BEHIND_BG
-	dsprite -1,  0,  0,  0, $01, PAL_OW_RED | BEHIND_BG
-	dsprite  0,  0, -1,  0, $02, PAL_OW_RED | BEHIND_BG
-	dsprite  0,  0,  0,  0, $03, PAL_OW_RED | BEHIND_BG
+	dsprite -1,  0, -1,  0, $00, PAL_OW_RED | PRIORITY
+	dsprite -1,  0,  0,  0, $01, PAL_OW_RED | PRIORITY
+	dsprite  0,  0, -1,  0, $02, PAL_OW_RED | PRIORITY
+	dsprite  0,  0,  0,  0, $03, PAL_OW_RED | PRIORITY
 
 .OAMData_PartyMonWithMail1:
 	db 4
@@ -388,59 +386,59 @@
 	dsprite  0,  0, -1,  0, $09, PAL_OW_RED
 	dsprite  0,  0,  0,  0, $07, PAL_OW_RED
 
-.OAMData_06:
+.OAMData_GSIntroMagikarp:
 	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
+	dsprite -1,  0, -2,  4, $00, 1
+	dsprite -1,  0, -1,  4, $01, 1
+	dsprite -1,  0,  0,  4, $02, 1
+	dsprite  0,  0, -2,  4, $10, 1
+	dsprite  0,  0, -1,  4, $11, 1
+	dsprite  0,  0,  0,  4, $12, 1
 
-.OAMData_08:
+.OAMData_GSIntroLapras:
 	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
+	dsprite -3,  0, -3,  0, $00, 0
+	dsprite -3,  0, -2,  0, $01, 0
+	dsprite -3,  0, -1,  0, $02, 0
+	dsprite -3,  0,  0,  0, $03, 0
+	dsprite -2,  0, -3,  0, $10, 0
+	dsprite -2,  0, -2,  0, $11, 0
+	dsprite -2,  0, -1,  0, $12, 0
+	dsprite -2,  0,  0,  0, $13, 0
+	dsprite -1,  0, -3,  0, $20, 0
+	dsprite -1,  0, -2,  0, $21, 0
+	dsprite -1,  0, -1,  0, $22, 0
+	dsprite -1,  0,  0,  0, $23, 0
+	dsprite -1,  0,  1,  0, $24, 0
+	dsprite  0,  0, -3,  0, $30, 0 | PRIORITY
+	dsprite  0,  0, -2,  0, $31, 0 | PRIORITY
+	dsprite  0,  0, -1,  0, $32, 0 | PRIORITY
+	dsprite  0,  0,  0,  0, $33, 0 | PRIORITY
+	dsprite  0,  0,  1,  0, $34, 0 | PRIORITY
+	dsprite  1,  0, -3,  0, $40, 0 | PRIORITY
+	dsprite  1,  0, -2,  0, $41, 0 | PRIORITY
+	dsprite  1,  0, -1,  0, $42, 0 | PRIORITY
+	dsprite  1,  0,  0,  0, $43, 0 | PRIORITY
+	dsprite  1,  0,  1,  0, $44, 0 | PRIORITY
+	dsprite  1,  0,  2,  0, $45, 0 | PRIORITY
+	dsprite  2,  0, -2,  0, $51, 0 | PRIORITY
+	dsprite  2,  0, -1,  0, $52, 0 | PRIORITY
+	dsprite  2,  0,  0,  0, $53, 0 | PRIORITY
+	dsprite  2,  0,  1,  0, $54, 0 | PRIORITY
+	dsprite  2,  0,  2,  0, $55, 0 | PRIORITY
 
-.OAMData_0c:
+.OAMData_GSIntroNote:
 	db 2
-	dsprite -1,  0, -1,  4, $00, $00
-	dsprite  0,  0, -1,  4, $10, $00
+	dsprite -1,  0, -1,  4, $00, 0
+	dsprite  0,  0, -1,  4, $10, 0
 
-.OAMData_15:
+.OAMData_GSIntroPikachuTail:
 	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
+	dsprite -2,  0,  3,  0, $00, 0
+	dsprite -2,  0,  4,  0, $01, 0
+	dsprite -1,  0,  2,  0, $02, 0
+	dsprite -1,  0,  3,  0, $03, 0
+	dsprite  0,  0,  2,  0, $04, 0
 
 .OAMData_Leaf:
 	db 1
@@ -460,7 +458,7 @@
 	dsprite  0,  0, -1,  7, $00, 0 | Y_FLIP
 	dsprite  0,  0,  0,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_ForFrameset09:
+.OAMData_TextEntryCursorBig:
 	db 10
 	dsprite -1,  7,  0,  0, $00, 0
 	dsprite -1,  7,  1,  0, $01, 0
@@ -473,23 +471,23 @@
 	dsprite  0,  0,  3,  0, $01, 0 | Y_FLIP
 	dsprite  0,  0,  4,  0, $00, 0 | X_FLIP | Y_FLIP
 
-.OAMData_22:
+.OAMData_GSIntroGameFreakLogo:
 	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
+	dsprite -3,  4, -2,  4, $00, 1 | OBP_NUM
+	dsprite -3,  4, -1,  4, $01, 1 | OBP_NUM
+	dsprite -3,  4,  0,  4, $02, 1 | OBP_NUM
+	dsprite -2,  4, -2,  4, $03, 1 | OBP_NUM
+	dsprite -2,  4, -1,  4, $04, 1 | OBP_NUM
+	dsprite -2,  4,  0,  4, $05, 1 | OBP_NUM
+	dsprite -1,  4, -2,  4, $06, 1 | OBP_NUM
+	dsprite -1,  4, -1,  4, $07, 1 | OBP_NUM
+	dsprite -1,  4,  0,  4, $08, 1 | OBP_NUM
+	dsprite  0,  4, -2,  4, $09, 1 | OBP_NUM
+	dsprite  0,  4, -1,  4, $0a, 1 | OBP_NUM
+	dsprite  0,  4,  0,  4, $0b, 1 | OBP_NUM
+	dsprite  1,  4, -2,  4, $0c, 1 | OBP_NUM
+	dsprite  1,  4, -1,  4, $0d, 1 | OBP_NUM
+	dsprite  1,  4,  0,  4, $0e, 1 | OBP_NUM
 
 .OAMData_SlotsGolem:
 	db 6
@@ -551,21 +549,21 @@
 	dsprite -1,  4, -1,  4, $00, 0 | OBP_NUM
 	dsprite  0,  4, -1,  4, $00, 0 | OBP_NUM
 
-.OAMData_4b:
+.OAMData_Unused4B:
 	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
+	dsprite  0,  0,  0,  0, $00, 0
+	dsprite  0,  0,  1,  0, $01, 0
+	dsprite  0,  0,  2,  0, $01, 0
+	dsprite  0,  0,  3,  0, $01, 0
+	dsprite  0,  0,  4,  0, $02, 0
+	dsprite  0,  0,  5,  0, $03, 0
 
-.OAMData_4c:
+.OAMData_Unused4C:
 	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
+	dsprite  0,  0,  0,  0, $00, 0
+	dsprite  0,  0,  1,  0, $01, 0
+	dsprite  0,  0,  2,  0, $02, 0
+	dsprite  0,  0,  3,  0, $03, 0
 
 .OAMData_CutTree2:
 	db 4
@@ -588,159 +586,159 @@
 	dsprite  0,  0, -2,  0, $02, PAL_OW_TREE
 	dsprite  0,  0,  1,  0, $03, PAL_OW_TREE
 
-.OAMData_56:
+.OAMData_GSIntroHoOh1:
 	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
+	dsprite -1,  0, -4,  0, $00, 0
+	dsprite -2,  0, -3,  0, $02, 0
+	dsprite  0,  0, -3,  0, $04, 0
+	dsprite -3,  0, -2,  0, $06, 0
+	dsprite -1,  0, -2,  0, $08, 0
+	dsprite  1,  0, -2,  0, $0a, 0
+	dsprite -3,  0, -1,  0, $0c, 0
+	dsprite -1,  0, -1,  0, $0e, 0
+	dsprite  1,  0, -1,  0, $10, 0
+	dsprite -3,  0,  0,  0, $12, 0
+	dsprite -1,  0,  0,  0, $14, 0
+	dsprite  1,  0,  0,  0, $16, 0
+	dsprite -3,  0,  1,  0, $18, 0
+	dsprite -1,  0,  1,  0, $1a, 0
+	dsprite  1,  0,  1,  0, $1c, 0
+	dsprite -1,  0,  2,  0, $1e, 0
+	dsprite  1,  0,  2,  0, $20, 0
+	dsprite -2,  0,  3,  0, $22, 0
+	dsprite  0,  0,  3,  0, $24, 0
 
-.OAMData_57:
+.OAMData_GSIntroHoOh2:
 	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
+	dsprite -1,  0, -4,  0, $00, 0
+	dsprite -2,  0, -3,  0, $02, 0
+	dsprite  0,  0, -3,  0, $04, 0
+	dsprite -1,  0, -2,  0, $26, 0
+	dsprite  1,  0, -2,  0, $0a, 0
+	dsprite -3,  0, -1,  0, $28, 0
+	dsprite -1,  0, -1,  0, $2a, 0
+	dsprite  1,  0, -1,  0, $10, 0
+	dsprite -1,  0,  0,  0, $2c, 0
+	dsprite  1,  0,  0,  0, $16, 0
+	dsprite -1,  0,  1,  0, $30, 0
+	dsprite  1,  0,  1,  0, $1c, 0
+	dsprite -1,  0,  2,  0, $1e, 0
+	dsprite  1,  0,  2,  0, $20, 0
+	dsprite -2,  0,  3,  0, $22, 0
+	dsprite  0,  0,  3,  0, $24, 0
 
-.OAMData_58:
+.OAMData_GSIntroHoOh3:
 	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
+	dsprite -1,  0, -4,  0, $00, 0
+	dsprite -2,  0, -3,  0, $02, 0
+	dsprite  0,  0, -3,  0, $32, 0
+	dsprite -1,  0, -2,  0, $34, 0
+	dsprite  1,  0, -2,  0, $36, 0
+	dsprite -1,  0, -1,  0, $38, 0
+	dsprite  1,  0, -1,  0, $3a, 0
+	dsprite -1,  0,  0,  0, $3c, 0
+	dsprite  1,  0,  0,  0, $3e, 0
+	dsprite -1,  0,  1,  0, $30, 0
+	dsprite  1,  0,  1,  0, $1c, 0
+	dsprite -1,  0,  2,  0, $1e, 0
+	dsprite  1,  0,  2,  0, $20, 0
+	dsprite -2,  0,  3,  0, $22, 0
+	dsprite  0,  0,  3,  0, $24, 0
 
-.OAMData_59:
+.OAMData_GSIntroHoOh4:
 	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
+	dsprite -1,  0, -4,  0, $00, 0
+	dsprite -2,  0, -3,  0, $02, 0
+	dsprite  0,  0, -3,  0, $04, 0
+	dsprite -1,  0, -2,  0, $40, 0
+	dsprite  1,  0, -2,  0, $42, 0
+	dsprite  3,  0, -2,  0, $44, 0
+	dsprite -1,  0, -1,  0, $46, 0
+	dsprite  1,  0, -1,  0, $48, 0
+	dsprite  3,  0, -1,  0, $4a, 0
+	dsprite -1,  0,  0,  0, $4c, 0
+	dsprite  1,  0,  0,  0, $4e, 0
+	dsprite -1,  0,  1,  0, $30, 0
+	dsprite  1,  0,  1,  0, $1c, 0
+	dsprite -1,  0,  2,  0, $1e, 0
+	dsprite  1,  0,  2,  0, $20, 0
+	dsprite -2,  0,  3,  0, $22, 0
+	dsprite  0,  0,  3,  0, $24, 0
 
-.OAMData_5a:
+.OAMData_GSIntroHoOh5:
 	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
+	dsprite -1,  0, -4,  0, $00, 0
+	dsprite -2,  0, -3,  0, $02, 0
+	dsprite  0,  0, -3,  0, $04, 0
+	dsprite -1,  0, -2,  0, $50, 0
+	dsprite  1,  0, -2,  0, $0a, 0
+	dsprite -3,  0, -1,  0, $52, 0
+	dsprite -1,  0, -1,  0, $54, 0
+	dsprite  1,  0, -1,  0, $10, 0
+	dsprite -3,  0,  0,  0, $56, 0
+	dsprite -1,  0,  0,  0, $2e, 0
+	dsprite  1,  0,  0,  0, $16, 0
+	dsprite -1,  0,  1,  0, $30, 0
+	dsprite  1,  0,  1,  0, $1c, 0
+	dsprite -1,  0,  2,  0, $1e, 0
+	dsprite  1,  0,  2,  0, $20, 0
+	dsprite -2,  0,  3,  0, $22, 0
+	dsprite  0,  0,  3,  0, $24, 0
 
 .OAMData_GSTitleTrail:
 	db 1
 	dsprite -1,  4, -1,  4, $00, 1 | OBP_NUM
 
-.OAMData_5c:
+.OAMData_EZChatCursor1:
 	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
+	dsprite  0,  0,  0,  0, $30, 0
+	dsprite  0,  0,  1,  0, $31, 0
+	dsprite  0,  0,  2,  0, $31, 0
+	dsprite  0,  0,  3,  0, $31, 0
+	dsprite  0,  0,  4,  0, $31, 0
+	dsprite  0,  0,  5,  0, $32, 0
+	dsprite  1,  0,  0,  0, $33, 0
+	dsprite  1,  0,  1,  0, $34, 0
+	dsprite  1,  0,  2,  0, $34, 0
+	dsprite  1,  0,  3,  0, $34, 0
+	dsprite  1,  0,  4,  0, $34, 0
+	dsprite  1,  0,  5,  0, $35, 0
 
-.OAMData_5d:
+.OAMData_EZChatCursor2:
 	db 1
-	dsprite  0,  0,  0,  0, $ed, $00
+	dsprite  0,  0,  0,  0, $ed, 0
 
-.OAMData_5e:
+.OAMData_EZChatCursor3:
 	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
+	dsprite -1,  7, -1,  7, $30, 0
+	dsprite -1,  7,  0,  1, $32, 0
+	dsprite  0,  1, -1,  7, $33, 0
+	dsprite  0,  1,  0,  1, $35, 0
 
-.OAMData_5f:
+.OAMData_EZChatCursor4:
 	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
+	dsprite -1,  7, -1,  7, $30, 0
+	dsprite -1,  7,  0,  4, $31, 0
+	dsprite -1,  7,  1,  4, $31, 0
+	dsprite -1,  7,  2,  1, $32, 0
+	dsprite  0,  1, -1,  7, $33, 0
+	dsprite  0,  1,  0,  4, $34, 0
+	dsprite  0,  1,  1,  4, $34, 0
+	dsprite  0,  1,  2,  1, $35, 0
 
-.OAMData_60:
+.OAMData_EZChatCursor5:
 	db 1
-	dsprite  0,  0,  0,  0, $34, $00
+	dsprite  0,  0,  0,  0, $34, 0
 
-.OAMData_61:
+.OAMData_EZChatCursor6:
 	db 2
-	dsprite  0,  0,  0,  0, $30, $00
-	dsprite  1,  0,  0,  0, $33, $00
+	dsprite  0,  0,  0,  0, $30, 0
+	dsprite  1,  0,  0,  0, $33, 0
 
-.OAMData_62:
+.OAMData_EZChatCursor7:
 	db 2
-	dsprite  0,  0,  0,  0, $32, $00
-	dsprite  1,  0,  0,  0, $35, $00
+	dsprite  0,  0,  0,  0, $32, 0
+	dsprite  1,  0,  0,  0, $35, 0
 
 .OAMData_BlueWalk:
 	db 4
@@ -751,16 +749,16 @@
 
 .OAMData_MagnetTrainBlue:
 	db 4
-	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE | BEHIND_BG
-	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE | BEHIND_BG
-	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE | BEHIND_BG
-	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE | BEHIND_BG
+	dsprite -1,  0, -1,  0, $00, PAL_OW_BLUE | PRIORITY
+	dsprite -1,  0,  0,  0, $01, PAL_OW_BLUE | PRIORITY
+	dsprite  0,  0, -1,  0, $02, PAL_OW_BLUE | PRIORITY
+	dsprite  0,  0,  0,  0, $03, PAL_OW_BLUE | PRIORITY
 
-.OAMData_ForMobile22:
+.OAMData_MobileTradeCableBulge:
 	db 1
 	dsprite -1,  4, -1,  4, $00, 2
 
-.OAMData_ForMobile23:
+.OAMData_MobileTradeSentPulse:
 	db 4
 	dsprite -2,  0, -1,  4, $00, 3
 	dsprite -1,  0, -1,  4, $01, 3
@@ -767,7 +765,7 @@
 	dsprite  0,  0, -1,  4, $02, 3
 	dsprite  1,  0, -1,  4, $03, 3
 
-.OAMData_ForMobile24:
+.OAMData_MobileTradeOTPulse:
 	db 4
 	dsprite -2,  0, -1,  4, $03, 4 | Y_FLIP
 	dsprite -1,  0, -1,  4, $02, 4 | Y_FLIP
@@ -774,7 +772,7 @@
 	dsprite  0,  0, -1,  4, $01, 4 | Y_FLIP
 	dsprite  1,  0, -1,  4, $00, 4 | Y_FLIP
 
-.OAMData_ForMobile25_1:
+.OAMData_MobileTradePing1:
 	db 4
 	dsprite -1,  0, -1,  0, $00, 1
 	dsprite -1,  0,  0,  0, $00, 1 | X_FLIP
@@ -781,7 +779,7 @@
 	dsprite  0,  0, -1,  0, $00, 1 | Y_FLIP
 	dsprite  0,  0,  0,  0, $00, 1 | X_FLIP | Y_FLIP
 
-.OAMData_ForMobile25_2:
+.OAMData_MobileTradePing2:
 	db 8
 	dsprite -2,  4, -2,  4, $00, 1
 	dsprite -2,  4, -1,  4, $01, 1
@@ -792,7 +790,7 @@
 	dsprite  0,  4, -1,  4, $01, 1 | Y_FLIP
 	dsprite  0,  4,  0,  4, $00, 1 | X_FLIP | Y_FLIP
 
-.OAMData_ForMobile25_3:
+.OAMData_MobileTradePing3:
 	db 12
 	dsprite -2,  0, -2,  0, $00, 1
 	dsprite -2,  0, -1,  0, $01, 1
@@ -993,23 +991,23 @@
 
 .OAMData_IntroUnown1:
 	db 1
-	dsprite -1,  4, -1,  4, $00, $00
+	dsprite -1,  4, -1,  4, $00, 0
 
 .OAMData_IntroUnown2:
 	db 3
-	dsprite  0,  0, -1,  0, $00, $00
-	dsprite -1,  0, -1,  0, $01, $00
-	dsprite -1,  0,  0,  0, $02, $00
+	dsprite  0,  0, -1,  0, $00, 0
+	dsprite -1,  0, -1,  0, $01, 0
+	dsprite -1,  0,  0,  0, $02, 0
 
 .OAMData_IntroUnown3:
 	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
+	dsprite  1,  0, -2,  0, $00, 0
+	dsprite  0,  0, -2,  0, $01, 0
+	dsprite -1,  0, -2,  0, $02, 0
+	dsprite -1,  0, -1,  0, $03, 0
+	dsprite -2,  0, -1,  0, $04, 0
+	dsprite -2,  0,  0,  0, $05, 0
+	dsprite -2,  0,  1,  0, $06, 0
 
 .OAMData_IntroUnownF2_2:
 	db 8
@@ -1062,26 +1060,26 @@
 
 .OAMData_IntroSuicuneAway:
 	db 20
-	dsprite  0,  0,   1,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,   2,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,   3,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,   4,  0, $00, 1 | BEHIND_BG
-	dsprite  4,  0,   5,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,   6,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,   7,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,   8,  0, $00, 1 | BEHIND_BG
-	dsprite  0,  0,   9,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,  10,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,  11,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,  12,  0, $00, 1 | BEHIND_BG
-	dsprite  4,  0,  13,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0,  14,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0,  15,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0,  16,  0, $00, 1 | BEHIND_BG
-	dsprite  0,  0, -15,  0, $00, 1 | BEHIND_BG
-	dsprite  1,  0, -14,  0, $00, 1 | BEHIND_BG
-	dsprite  2,  0, -13,  0, $00, 1 | BEHIND_BG
-	dsprite  3,  0, -12,  0, $00, 1 | BEHIND_BG
+	dsprite  0,  0,   1,  0, $00, 1 | PRIORITY
+	dsprite  1,  0,   2,  0, $00, 1 | PRIORITY
+	dsprite  2,  0,   3,  0, $00, 1 | PRIORITY
+	dsprite  3,  0,   4,  0, $00, 1 | PRIORITY
+	dsprite  4,  0,   5,  0, $00, 1 | PRIORITY
+	dsprite  3,  0,   6,  0, $00, 1 | PRIORITY
+	dsprite  2,  0,   7,  0, $00, 1 | PRIORITY
+	dsprite  1,  0,   8,  0, $00, 1 | PRIORITY
+	dsprite  0,  0,   9,  0, $00, 1 | PRIORITY
+	dsprite  1,  0,  10,  0, $00, 1 | PRIORITY
+	dsprite  2,  0,  11,  0, $00, 1 | PRIORITY
+	dsprite  3,  0,  12,  0, $00, 1 | PRIORITY
+	dsprite  4,  0,  13,  0, $00, 1 | PRIORITY
+	dsprite  3,  0,  14,  0, $00, 1 | PRIORITY
+	dsprite  2,  0,  15,  0, $00, 1 | PRIORITY
+	dsprite  1,  0,  16,  0, $00, 1 | PRIORITY
+	dsprite  0,  0, -15,  0, $00, 1 | PRIORITY
+	dsprite  1,  0, -14,  0, $00, 1 | PRIORITY
+	dsprite  2,  0, -13,  0, $00, 1 | PRIORITY
+	dsprite  3,  0, -12,  0, $00, 1 | PRIORITY
 
 .OAMData_Celebi:
 	db 4
--- a/data/sprite_anims/sequences.asm
+++ b/data/sprite_anims/sequences.asm
@@ -1,49 +1,49 @@
 SpriteAnimSeqData: ; 8d1c4
 ; entries correspond to SPRITE_ANIM_INDEX_* constants
 	; frameset sequence, tile
-	db SPRITE_ANIM_FRAMESET_PARTY_MON,               SPRITE_ANIM_SEQ_PARTY_MON,            $00 ; SPRITE_ANIM_INDEX_PARTY_MON
-	db SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL,          SPRITE_ANIM_SEQ_GS_TITLE_TRAIL,       $00 ; SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,       SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR, $05 ; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
-	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO,          SPRITE_ANIM_SEQ_GAMEFREAK_LOGO,       $00 ; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
-	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR,           SPRITE_ANIM_SEQ_GS_INTRO_STAR,        $06 ; SPRITE_ANIM_INDEX_GS_INTRO_STAR
-	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE,        SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE,     $06 ; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
-	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM,             SPRITE_ANIM_SEQ_SLOTS_GOLEM,          $07 ; SPRITE_ANIM_INDEX_SLOTS_GOLEM
-	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY,           SPRITE_ANIM_SEQ_SLOTS_CHANSEY,        $07 ; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
-	db SPRITE_ANIM_FRAMESET_SLOTS_EGG,               SPRITE_ANIM_SEQ_SLOTS_EGG,            $07 ; SPRITE_ANIM_INDEX_SLOTS_EGG
-	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,       SPRITE_ANIM_SEQ_MAIL_CURSOR,          $05 ; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
-	db SPRITE_ANIM_FRAMESET_RED_WALK,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_RED_WALK
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_FOR_UNUSED_CURSOR,    $08 ; SPRITE_ANIM_INDEX_UNUSED_CURSOR
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR,    $08 ; SPRITE_ANIM_INDEX_DUMMY_GAME
-	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,            SPRITE_ANIM_SEQ_POKEGEAR_ARROW,       $08 ; SPRITE_ANIM_INDEX_POKEGEAR_ARROW
-	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL,         SPRITE_ANIM_SEQ_TRADE_POKE_BALL,      $00 ; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
-	db SPRITE_ANIM_FRAMESET_TRADE_POOF,              SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_TRADE_POOF
-	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE,        SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE,     $00 ; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
-	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON,           SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,     $00 ; SPRITE_ANIM_INDEX_TRADEMON_ICON
-	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE,         SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,     $00 ; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
-	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT, SPRITE_ANIM_SEQ_REVEAL_NEW_MON,       $00 ; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
-	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB,       SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB,    $00 ; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED,        SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
-	db SPRITE_ANIM_FRAMESET_LEAF,                    SPRITE_ANIM_SEQ_CUT_LEAVES,           $00 ; SPRITE_ANIM_INDEX_LEAF
-	db SPRITE_ANIM_FRAMESET_CUT_TREE,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_CUT_TREE
-	db SPRITE_ANIM_FRAMESET_LEAF,                    SPRITE_ANIM_SEQ_FLY_LEAF,             $00 ; SPRITE_ANIM_INDEX_FLY_LEAF
-	db SPRITE_ANIM_FRAMESET_EGG_CRACK,               SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_EGG_CRACK
-	db SPRITE_ANIM_FRAMESET_24,                      SPRITE_ANIM_SEQ_19,                   $00 ; SPRITE_ANIM_INDEX_1A
-	db SPRITE_ANIM_FRAMESET_HEADBUTT,                SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_HEADBUTT
-	db SPRITE_ANIM_FRAMESET_EGG_HATCH,               SPRITE_ANIM_SEQ_REVEAL_NEW_MON,       $00 ; SPRITE_ANIM_INDEX_EGG_HATCH
-	db SPRITE_ANIM_FRAMESET_26,                      SPRITE_ANIM_SEQ_1A,                   $00 ; SPRITE_ANIM_INDEX_1D
-	db SPRITE_ANIM_FRAMESET_BLUE_WALK,               SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_BLUE_WALK
-	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE,       SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
-	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL,  SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
-	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL,    SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_22,           SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_22
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_23,           SPRITE_ANIM_SEQ_FOR_MOBILE_23,        $00 ; SPRITE_ANIM_INDEX_MOBILE_23
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_24,           SPRITE_ANIM_SEQ_FOR_MOBILE_24,        $00 ; SPRITE_ANIM_INDEX_MOBILE_24
-	db SPRITE_ANIM_FRAMESET_FOR_MOBILE_25,           SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_MOBILE_25
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE,           SPRITE_ANIM_SEQ_INTRO_SUICUNE,        $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE
-	db SPRITE_ANIM_FRAMESET_INTRO_PICHU,             SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,   $00 ; SPRITE_ANIM_INDEX_INTRO_PICHU
-	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER,            SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,   $00 ; SPRITE_ANIM_INDEX_INTRO_WOOPER
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1,           SPRITE_ANIM_SEQ_INTRO_UNOWN,          $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN
-	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F,           SPRITE_ANIM_SEQ_INTRO_UNOWN_F,        $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
-	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY,      SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY,   $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
-	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT,             SPRITE_ANIM_SEQ_NULL,                 $00 ; SPRITE_ANIM_INDEX_CELEBI
+	db SPRITE_ANIM_FRAMESET_PARTY_MON,                SPRITE_ANIM_SEQ_PARTY_MON,               $00 ; SPRITE_ANIM_INDEX_PARTY_MON
+	db SPRITE_ANIM_FRAMESET_GS_TITLE_TRAIL,           SPRITE_ANIM_SEQ_GS_TITLE_TRAIL,          $00 ; SPRITE_ANIM_INDEX_GS_TITLE_TRAIL
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,        SPRITE_ANIM_SEQ_NAMING_SCREEN_CURSOR,    $05 ; SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
+	db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO,           SPRITE_ANIM_SEQ_GAMEFREAK_LOGO,          $00 ; SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_STAR,            SPRITE_ANIM_SEQ_GS_INTRO_STAR,           $06 ; SPRITE_ANIM_INDEX_GS_INTRO_STAR
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_SPARKLE,         SPRITE_ANIM_SEQ_GS_INTRO_SPARKLE,        $06 ; SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
+	db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM,              SPRITE_ANIM_SEQ_SLOTS_GOLEM,             $07 ; SPRITE_ANIM_INDEX_SLOTS_GOLEM
+	db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY,            SPRITE_ANIM_SEQ_SLOTS_CHANSEY,           $07 ; SPRITE_ANIM_INDEX_SLOTS_CHANSEY
+	db SPRITE_ANIM_FRAMESET_SLOTS_EGG,                SPRITE_ANIM_SEQ_SLOTS_EGG,               $07 ; SPRITE_ANIM_INDEX_SLOTS_EGG
+	db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR,        SPRITE_ANIM_SEQ_MAIL_CURSOR,             $05 ; SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	db SPRITE_ANIM_FRAMESET_RED_WALK,                 SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_RED_WALK
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,             SPRITE_ANIM_SEQ_UNUSED_CURSOR,           $08 ; SPRITE_ANIM_INDEX_UNUSED_CURSOR
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,             SPRITE_ANIM_SEQ_DUMMY_GAME_CURSOR,       $08 ; SPRITE_ANIM_INDEX_DUMMY_GAME
+	db SPRITE_ANIM_FRAMESET_STILL_CURSOR,             SPRITE_ANIM_SEQ_POKEGEAR_ARROW,          $08 ; SPRITE_ANIM_INDEX_POKEGEAR_ARROW
+	db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL,          SPRITE_ANIM_SEQ_TRADE_POKE_BALL,         $00 ; SPRITE_ANIM_INDEX_TRADE_POKE_BALL
+	db SPRITE_ANIM_FRAMESET_TRADE_POOF,               SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_TRADE_POOF
+	db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE,         SPRITE_ANIM_SEQ_TRADE_TUBE_BULGE,        $00 ; SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
+	db SPRITE_ANIM_FRAMESET_TRADEMON_ICON,            SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,        $00 ; SPRITE_ANIM_INDEX_TRADEMON_ICON
+	db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE,          SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE,        $00 ; SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
+	db SPRITE_ANIM_FRAMESET_EVOLUTION_BALL_OF_LIGHT,  SPRITE_ANIM_SEQ_REVEAL_NEW_MON,          $00 ; SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
+	db SPRITE_ANIM_FRAMESET_RADIO_TUNING_KNOB,        SPRITE_ANIM_SEQ_RADIO_TUNING_KNOB,       $00 ; SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_RED,         SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
+	db SPRITE_ANIM_FRAMESET_LEAF,                     SPRITE_ANIM_SEQ_CUT_LEAVES,              $00 ; SPRITE_ANIM_INDEX_LEAF
+	db SPRITE_ANIM_FRAMESET_CUT_TREE,                 SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_CUT_TREE
+	db SPRITE_ANIM_FRAMESET_LEAF,                     SPRITE_ANIM_SEQ_FLY_LEAF,                $00 ; SPRITE_ANIM_INDEX_FLY_LEAF
+	db SPRITE_ANIM_FRAMESET_EGG_CRACK,                SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_EGG_CRACK
+	db SPRITE_ANIM_FRAMESET_GS_INTRO_HO_OH,           SPRITE_ANIM_SEQ_GS_INTRO_HO_OH,          $00 ; SPRITE_ANIM_INDEX_GS_INTRO_HO_OH
+	db SPRITE_ANIM_FRAMESET_HEADBUTT,                 SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_HEADBUTT
+	db SPRITE_ANIM_FRAMESET_EGG_HATCH_1,              SPRITE_ANIM_SEQ_REVEAL_NEW_MON,          $00 ; SPRITE_ANIM_INDEX_EGG_HATCH
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1,          SPRITE_ANIM_SEQ_EZCHAT_CURSOR,           $00 ; SPRITE_ANIM_INDEX_EZCHAT_CURSOR
+	db SPRITE_ANIM_FRAMESET_BLUE_WALK,                SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_BLUE_WALK
+	db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_BLUE,        SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_BALL,   SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_BALL,     SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_CABLE_BULGE, SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_SENT_PULSE,  SPRITE_ANIM_SEQ_MOBILE_TRADE_SENT_PULSE, $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_PULSE
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_OT_PULSE,    SPRITE_ANIM_SEQ_MOBILE_TRADE_OT_PULSE,   $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_PULSE
+	db SPRITE_ANIM_FRAMESET_MOBILE_TRADE_PING,        SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_MOBILE_TRADE_PING
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE,            SPRITE_ANIM_SEQ_INTRO_SUICUNE,           $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE
+	db SPRITE_ANIM_FRAMESET_INTRO_PICHU,              SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,      $00 ; SPRITE_ANIM_INDEX_INTRO_PICHU
+	db SPRITE_ANIM_FRAMESET_INTRO_WOOPER,             SPRITE_ANIM_SEQ_INTRO_PICHU_WOOPER,      $00 ; SPRITE_ANIM_INDEX_INTRO_WOOPER
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1,            SPRITE_ANIM_SEQ_INTRO_UNOWN,             $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN
+	db SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F,            SPRITE_ANIM_SEQ_INTRO_UNOWN_F,           $00 ; SPRITE_ANIM_INDEX_INTRO_UNOWN_F
+	db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY,       SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY,      $00 ; SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
+	db SPRITE_ANIM_FRAMESET_CELEBI_LEFT,              SPRITE_ANIM_SEQ_NULL,                    $00 ; SPRITE_ANIM_INDEX_CELEBI
 ; 8d24b
--- a/data/sprite_mons.asm
+++ /dev/null
@@ -1,38 +1,0 @@
-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
--- a/data/sprites.asm
+++ /dev/null
@@ -1,111 +1,0 @@
-overworld_sprite: MACRO
-; pointer, length, type, palette
-	dw \1
-	db \2 * 4 tiles, BANK(\1)
-	db \3, \4
-ENDM
-
-OverworldSprites: ; 14736
-; entries correspond to SPRITE_* constants
-	overworld_sprite ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
-	overworld_sprite SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-	overworld_sprite GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
-	overworld_sprite N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-	overworld_sprite SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
-	overworld_sprite SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-	overworld_sprite PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-	overworld_sprite VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
-	overworld_sprite BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
-	overworld_sprite SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-	overworld_sprite FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
-	overworld_sprite GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-	overworld_sprite SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
-	overworld_sprite KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-	overworld_sprite EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
--- /dev/null
+++ b/data/sprites/emotes.asm
@@ -1,0 +1,22 @@
+emote: MACRO
+; graphics pointer, length, starting tile
+	dw \1
+	db \2 tiles, BANK(\1)
+	dw vTiles1 tile \3
+ENDM
+
+Emotes: ; 144d
+; entries correspond to EMOTE_* constants
+	emote ShockEmote,     4, $78
+	emote QuestionEmote,  4, $78
+	emote HappyEmote,     4, $78
+	emote SadEmote,       4, $78
+	emote HeartEmote,     4, $78
+	emote BoltEmote,      4, $78
+	emote SleepEmote,     4, $78
+	emote FishEmote,      4, $78
+	emote JumpShadowGFX,  1, $7c
+	emote FishingRodGFX,  2, $7c
+	emote BoulderDustGFX, 2, $7e
+	emote GrassRustleGFX, 1, $7e
+; 14495
--- /dev/null
+++ b/data/sprites/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/sprites/map_objects.asm
@@ -1,0 +1,47 @@
+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,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_00
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_ITEM_TREE
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WANDER
+	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_SLOW
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_UP_DOWN
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_LEFT_RIGHT
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_DOWN
+	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_UP
+	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_LEFT
+	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_RIGHT
+	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_FAST
+	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_PLAYER
+	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0C
+	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0D
+	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0E
+	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0F
+	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_10
+	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_11
+	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_12
+	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWING
+	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_SCRIPTED
+	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   OBJECT_ACTION_BIG_SNORLAX,  $2e,    $01,    %1100 ; SPRITEMOVEDATA_SNORLAX
+	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   OBJECT_ACTION_BOUNCE,       $2e,    $00,    %0000 ; SPRITEMOVEDATA_POKEMON
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_SUDOWOODO
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $10,    %0000 ; SPRITEMOVEDATA_SMASHABLE_ROCK
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $00,    %0100 ; SPRITEMOVEDATA_STRENGTH_BOULDER
+	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWNOTEXACT
+	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   OBJECT_ACTION_00,           $8e,    $01,    %0000 ; SPRITEMOVEDATA_SHADOW
+	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   OBJECT_ACTION_EMOTE,        $8e,    $02,    %0000 ; SPRITEMOVEDATA_EMOTE
+	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   OBJECT_ACTION_00,           $82,    $00,    %0000 ; SPRITEMOVEDATA_SCREENSHAKE
+	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
+	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCLOCKWISE
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_LAPRAS,   $2e,    $01,    %1100 ; SPRITEMOVEDATA_20
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_DOLL,     $2e,    $01,    %1100 ; SPRITEMOVEDATA_BIGDOLL
+	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   OBJECT_ACTION_BOULDER_DUST, $8e,    $01,    %0000 ; SPRITEMOVEDATA_BOULDERDUST
+	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   OBJECT_ACTION_GRASS_SHAKE,  $8e,    $02,    %0000 ; SPRITEMOVEDATA_GRASS
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0010 ; SPRITEMOVEDATA_LAPRAS
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; 25
+; 4357
--- /dev/null
+++ b/data/sprites/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/sprites/sprites.asm
@@ -1,0 +1,111 @@
+overworld_sprite: MACRO
+; pointer, length, type, palette
+	dw \1
+	db \2 * 4 tiles, BANK(\1)
+	db \3, \4
+ENDM
+
+OverworldSprites: ; 14736
+; entries correspond to SPRITE_* constants
+	overworld_sprite ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
+	overworld_sprite SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
+	overworld_sprite GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
+	overworld_sprite N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
+	overworld_sprite SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
+	overworld_sprite SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
+	overworld_sprite PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
+	overworld_sprite VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
+	overworld_sprite BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
+	overworld_sprite SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
+	overworld_sprite FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
+	overworld_sprite GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
+	overworld_sprite SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
+	overworld_sprite KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
+	overworld_sprite EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
--- /dev/null
+++ b/data/std_text.asm
@@ -1,0 +1,388 @@
+NurseMornText:
+	text "Good morning!"
+	line "Welcome to our"
+	cont "#MON CENTER."
+	done
+
+NurseDayText:
+	text "Hello!"
+	line "Welcome to our"
+	cont "#MON CENTER."
+	done
+
+NurseNiteText:
+	text "Good evening!"
+	line "You're out late."
+
+	para "Welcome to our"
+	line "#MON CENTER."
+	done
+
+PokeComNurseMornText:
+	text "Good morning!"
+
+	para "This is the #-"
+	line "MON COMMUNICATION"
+
+	para "CENTER--or the"
+	line "#COM CENTER."
+	done
+
+PokeComNurseDayText:
+	text "Hello!"
+
+	para "This is the #-"
+	line "MON COMMUNICATION"
+
+	para "CENTER--or the"
+	line "#COM CENTER."
+	done
+
+PokeComNurseNiteText:
+	text "Good to see you"
+	line "working so late."
+
+	para "This is the #-"
+	line "MON COMMUNICATION"
+
+	para "CENTER--or the"
+	line "#COM CENTER."
+	done
+
+NurseAskHealText:
+	text "We can heal your"
+	line "#MON to perfect"
+	cont "health."
+
+	para "Shall we heal your"
+	line "#MON?"
+	done
+
+NurseTakePokemonText:
+	text "OK, may I see your"
+	line "#MON?"
+	done
+
+NurseReturnPokemonText:
+	text "Thank you for"
+	line "waiting."
+
+	para "Your #MON are"
+	line "fully healed."
+	done
+
+NurseGoodbyeText:
+	text "We hope to see you"
+	line "again."
+	done
+
+; not used
+	text "We hope to see you"
+	line "again."
+	done
+
+NursePokerusText:
+	text "Your #MON"
+	line "appear to be"
+
+	para "infected by tiny"
+	line "life forms."
+
+	para "Your #MON are"
+	line "healthy and seem"
+	cont "to be fine."
+
+	para "But we can't tell"
+	line "you anything more"
+
+	para "at a #MON"
+	line "CENTER."
+	done
+
+PokeComNursePokerusText:
+	text "Your #MON"
+	line "appear to be"
+
+	para "infected by tiny"
+	line "life forms."
+
+	para "Your #MON are"
+	line "healthy and seem"
+	cont "to be fine."
+
+	para "But we can't tell"
+	line "you anything more."
+	done
+
+DifficultBookshelfText:
+	text "It's full of"
+	line "difficult books."
+	done
+
+PictureBookshelfText:
+	text "A whole collection"
+	line "of #MON picture"
+	cont "books!"
+	done
+
+MagazineBookshelfText:
+	text "#MON magazines…"
+	line "#MON PAL,"
+
+	para "#MON HANDBOOK,"
+	line "#MON GRAPH…"
+	done
+
+TeamRocketOathText:
+	text "TEAM ROCKET OATH"
+
+	para "Steal #MON for"
+	line "profit!"
+
+	para "Exploit #MON"
+	line "for profit!"
+
+	para "All #MON exist"
+	line "for the glory of"
+	cont "TEAM ROCKET!"
+	done
+
+IncenseBurnerText:
+	text "What is this?"
+
+	para "Oh, it's an"
+	line "incense burner!"
+	done
+
+MerchandiseShelfText:
+	text "Lots of #MON"
+	line "merchandise!"
+	done
+
+TownMapText:
+	text "It's the TOWN MAP."
+	done
+
+WindowText:
+	text "My reflection!"
+	line "Lookin' good!"
+	done
+
+TVText:
+	text "It's a TV."
+	done
+
+HomepageText:
+	text "#MON JOURNAL"
+	line "HOME PAGE…"
+
+	para "It hasn't been"
+	line "updated…"
+	done
+
+; not used
+	text "#MON RADIO!"
+
+	para "Call in with your"
+	line "requests now!"
+	done
+
+TrashCanText:
+	text "There's nothing in"
+	line "here…"
+	done
+
+; not used
+	text "A #MON may be"
+	line "able to move this."
+	done
+
+; not used
+	text "Maybe a #MON"
+	line "can break this."
+	done
+
+PokecenterSignText:
+	text "Heal Your #MON!"
+	line "#MON CENTER"
+	done
+
+MartSignText:
+	text "For All Your"
+	line "#MON Needs"
+
+	para "#MON MART"
+	done
+
+ContestResults_ReadyToJudgeText:
+	text "We will now judge"
+	line "the #MON you've"
+	cont "caught."
+
+	para $56
+	line $56
+
+	para "We have chosen the"
+	line "winners!"
+
+	para "Are you ready for"
+	line "this?"
+	done
+
+ContestResults_PlayerWonAPrizeText:
+	text "<PLAYER>, the No.@"
+	text_from_ram StringBuffer3
+	text_start
+	line "finisher, wins"
+	cont "@"
+	text_from_ram StringBuffer4
+	text "!"
+	done
+
+ReceivedItemText:
+	text "<PLAYER> received"
+	line "@"
+	text_from_ram StringBuffer4
+	text "."
+	done
+
+ContestResults_JoinUsNextTimeText:
+	text "Please join us for"
+	line "the next Contest!"
+	done
+
+ContestResults_ConsolationPrizeText:
+	text "Everyone else gets"
+	line "a BERRY as a con-"
+	cont "solation prize!"
+	done
+
+ContestResults_DidNotWinText:
+	text "We hope you do"
+	line "better next time."
+	done
+
+ContestResults_ReturnPartyText:
+	text "We'll return the"
+	line "#MON we kept"
+
+	para "for you."
+	line "Here you go!"
+	done
+
+ContestResults_PartyFullText:
+	text "Your party's full,"
+	line "so the #MON was"
+
+	para "sent to your BOX"
+	line "in BILL's PC."
+	done
+
+GymStatue_CityGymText:
+	text_from_ram StringBuffer3
+	text_start
+	line "#MON GYM"
+	done
+
+GymStatue_WinningTrainersText:
+	text "LEADER: @"
+	text_from_ram StringBuffer4
+	text_start
+	para "WINNING TRAINERS:"
+	line "<PLAYER>"
+	done
+
+CoinVendor_WelcomeText:
+	text "Welcome to the"
+	line "GAME CORNER."
+	done
+
+CoinVendor_NoCoinCaseText:
+	text "Do you need game"
+	line "coins?"
+
+	para "Oh, you don't have"
+	line "a COIN CASE for"
+	cont "your coins."
+	done
+
+CoinVendor_IntroText:
+	text "Do you need some"
+	line "game coins?"
+
+	para "It costs ¥1000 for"
+	line "50 coins. Do you"
+	cont "want some?"
+	done
+
+CoinVendor_Buy50CoinsText:
+	text "Thank you!"
+	line "Here are 50 coins."
+	done
+
+CoinVendor_Buy500CoinsText:
+	text "Thank you! Here"
+	line "are 500 coins."
+	done
+
+CoinVendor_NotEnoughMoneyText:
+	text "You don't have"
+	line "enough money."
+	done
+
+CoinVendor_CoinCaseFullText:
+	text "Whoops! Your COIN"
+	line "CASE is full."
+	done
+
+CoinVendor_CancelText:
+	text "No coins for you?"
+	line "Come again!"
+	done
+
+BugContestPrizeNoRoomText:
+	text "Oh? Your PACK is"
+	line "full."
+
+	para "We'll keep this"
+	line "for you today, so"
+
+	para "come back when you"
+	line "make room for it."
+	done
+
+HappinessText3:
+	text "Wow! You and your"
+	line "#MON are really"
+	cont "close!"
+	done
+
+HappinessText2:
+	text "#MON get more"
+	line "friendly if you"
+
+	para "spend time with"
+	line "them."
+	done
+
+HappinessText1:
+	text "You haven't tamed"
+	line "your #MON."
+
+	para "If you aren't"
+	line "nice, it'll pout."
+	done
+
+RegisteredNumber1Text:
+	text "<PLAYER> registered"
+	line "@"
+	text_from_ram StringBuffer3
+	text "'s number."
+	done
+
+RegisteredNumber2Text:
+	text "<PLAYER> registered"
+	line "@"
+	text_from_ram StringBuffer3
+	text "'s number."
+	done
--- /dev/null
+++ b/data/tilesets.asm
@@ -1,0 +1,52 @@
+tileset: MACRO
+	dba \1GFX, \1Meta, \1Coll
+	dw \1Anim
+	dw NULL
+	dw \1PalMap
+ENDM
+
+; Associated data:
+; - The *GFX, *Meta, and *Coll are defined in gfx/tilesets.asm
+; - The *Anim are defined in engine/tileset_anims.asm
+; - The *PalMap are defined in gfx/tilesets/palette_maps.asm
+
+Tilesets:: ; 4d596
+; entries correspond to TILESET_* constants
+	tileset Tileset0
+	tileset TilesetJohto
+	tileset TilesetJohtoModern
+	tileset TilesetKanto
+	tileset TilesetBattleTowerOutside
+	tileset TilesetHouse
+	tileset TilesetPlayersHouse
+	tileset TilesetPokecenter
+	tileset TilesetGate
+	tileset TilesetPort
+	tileset TilesetLab
+	tileset TilesetFacility
+	tileset TilesetMart
+	tileset TilesetMansion
+	tileset TilesetGameCorner
+	tileset TilesetEliteFourRoom
+	tileset TilesetTraditionalHouse
+	tileset TilesetTrainStation
+	tileset TilesetChampionsRoom
+	tileset TilesetLighthouse
+	tileset TilesetPlayersRoom
+	tileset TilesetPokeComCenter
+	tileset TilesetBattleTower
+	tileset TilesetTower
+	tileset TilesetCave
+	tileset TilesetPark
+	tileset TilesetRuinsOfAlph
+	tileset TilesetRadioTower
+	tileset TilesetUnderground
+	tileset TilesetIcePath
+	tileset TilesetDarkCave
+	tileset TilesetForest
+	tileset TilesetBetaWordRoom
+	tileset TilesetHoOhWordRoom
+	tileset TilesetKabutoWordRoom
+	tileset TilesetOmanyteWordRoom
+	tileset TilesetAerodactylWordRoom
+; 4d7c1
--- /dev/null
+++ b/data/tilesets/aerodactyl_word_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, WALL, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, WALL ; 1a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/battle_tower_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
+	tilecoll WALL, DOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 07
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 09
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll DOOR, WALL, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 12
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 15
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 16
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 18
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 19
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1a
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1f
+	tilecoll WALL, WALL, FLOOR, WALL ; 20
+	tilecoll WALL, WALL, WALL, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 22
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 25
+	tilecoll WALL, FLOOR, FLOOR, DOOR ; 26
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 28
+	tilecoll WALL, PC, FLOOR, FLOOR ; 29
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
+	tilecoll WALL, WALL, WALL, FLOOR ; 2b
+	tilecoll WALL, WALL, FLOOR, WALL ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, DOOR ; 2d
+	tilecoll FLOOR, FLOOR, DOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll WALL, WALL, FLOOR, WALL ; 37
+	tilecoll WALL, WALL, WALL, FLOOR ; 38
+	tilecoll WALL, WALL, FLOOR, WALL ; 39
+	tilecoll WALL, WALL, WALL, WALL ; 3a
+	tilecoll WALL, WALL, WALL, FLOOR ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, WALL, FLOOR, WALL ; 3d
+	tilecoll WALL, WALL, FLOOR, WALL ; 3e
+	tilecoll WALL, WALL, WALL, FLOOR ; 3f
+	tilecoll WALL, WALL, FLOOR, WALL ; 40
binary files /dev/null b/data/tilesets/battle_tower_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/battle_tower_outside_collision.asm
@@ -1,0 +1,128 @@
+	tilecoll 01, 01, 01, 01 ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, WALL, WALL ; 09
+	tilecoll WALL, WALL, WALL, WALL ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0d
+	tilecoll FLOOR, WALL, WALL, WALL ; 0e
+	tilecoll WALL, WALL, WALL, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 11
+	tilecoll WALL, WALL, FLOOR, WALL ; 12
+	tilecoll WALL, WALL, DOOR, DOOR ; 13
+	tilecoll WALL, WALL, WALL, FLOOR ; 14
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll WALL, WALL, DOOR, WALL ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, WALL ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 1d
+	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 20
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 21
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll WALL, WALL, WALL, WALL ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, FLOOR, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll WALL, FLOOR, WALL, WALL ; 30
+	tilecoll WALL, WALL, WALL, WALL ; 31
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 32
+	tilecoll WALL, HEADBUTT_TREE, WALL, HEADBUTT_TREE ; 33
+	tilecoll WALL, WALL, WALL, WALL ; 34
+	tilecoll WHIRLPOOL, FLOOR, WHIRLPOOL, FLOOR ; 35
+	tilecoll WHIRLPOOL, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll 5B, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll 5B, 01, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 41
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 42
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 43
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 44
+	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 45
+	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 46
+	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 47
+	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 48
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 49
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 50
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 51
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 52
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 53
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 54
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 55
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 56
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 57
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 58
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 59
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 60
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 61
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 62
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 63
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 64
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 65
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 66
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 67
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 68
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 69
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 70
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 71
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 73
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 74
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 75
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 76
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 77
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 78
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 79
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 80
binary files /dev/null b/data/tilesets/battle_tower_outside_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/beta_word_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, WALL, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, WALL ; 1a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/cave_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 05
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 06
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 08
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 0c
+	tilecoll WALL, FLOOR, WALL, WALL ; 0d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, WALL, WALL ; 0f
+	tilecoll WATER, WATER, WATER, WATER ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, WALL, CAVE ; 14
+	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 15
+	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 16
+	tilecoll WALL, FLOOR, WALL, WARP_CARPET_DOWN ; 17
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, WALL, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1a
+	tilecoll WALL, WALL, FLOOR, WALL ; 1b
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 1c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 20
+	tilecoll WALL, FLOOR, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 22
+	tilecoll FLOOR, WALL, WALL, WALL ; 23
+	tilecoll UP_WALL, WALL, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 25
+	tilecoll WATER, WATER, WATER, WATER ; 26
+	tilecoll WATER, WATER, WATER, WATER ; 27
+	tilecoll WATER, WATER, WATER, WATER ; 28
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2a
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2c
+	tilecoll WATERFALL, WATERFALL, WATERFALL, WATERFALL ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WATER, WATER, WATER, WATER ; 33
+	tilecoll WATER, WATER, WATER, WATER ; 34
+	tilecoll WALL, WALL, WALL, WALL ; 35
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 36
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
+	tilecoll WALL, WALL, WALL, CAVE ; 38
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 39
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 3a
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 3b
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 3c
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 3d
+	tilecoll WATER, WATER, WATER, WATER ; 3e
+	tilecoll WATER, WATER, WATER, WATER ; 3f
+	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/champions_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, FLOOR, WALL ; 02
+	tilecoll WALL, WALL, WALL, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 04
+	tilecoll WALL, WALL, WALL, WALL ; 05
+	tilecoll WALL, WALL, COUNTER, FLOOR ; 06
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 07
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 09
+	tilecoll WALL, FLOOR, FLOOR, WALL ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll WALL, WALL, LADDER, LADDER ; 0c
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0d
+	tilecoll WALL, WALL, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll WALL, WALL, WALL, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll WALL, WALL, FLOOR, WALL ; 14
+	tilecoll WALL, FLOOR, WALL, WALL ; 15
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 16
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 19
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 1d
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 1e
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
+	tilecoll WALL, FLOOR, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, WALL, WALL, WALL ; 23
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 24
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 30
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 35
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 36
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
+	tilecoll FLOOR, WALL, WALL, WALL ; 38
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 39
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 3a
+	tilecoll WALL, WALL, WALL, WALL ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll WALL, FLOOR, WALL, WALL ; 3f
+	tilecoll FLOOR, WALL, WALL, WALL ; 40
--- /dev/null
+++ b/data/tilesets/champions_room_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/data/tilesets/dark_cave_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 05
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 06
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 08
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 0c
+	tilecoll WALL, FLOOR, WALL, WALL ; 0d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, WALL, WALL ; 0f
+	tilecoll WATER, WATER, WATER, WATER ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, WALL, CAVE ; 14
+	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 15
+	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 16
+	tilecoll WALL, FLOOR, WALL, WARP_CARPET_DOWN ; 17
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, WALL, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1a
+	tilecoll WALL, WALL, FLOOR, WALL ; 1b
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 1c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 20
+	tilecoll WALL, FLOOR, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 22
+	tilecoll FLOOR, WALL, WALL, WALL ; 23
+	tilecoll UP_WALL, WALL, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 25
+	tilecoll WATER, WATER, WATER, WATER ; 26
+	tilecoll WATER, WATER, WATER, WATER ; 27
+	tilecoll WATER, WATER, WATER, WATER ; 28
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2a
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2c
+	tilecoll WATERFALL, WATERFALL, WATERFALL, WATERFALL ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WATER, WATER, WATER, WATER ; 33
+	tilecoll WATER, WATER, WATER, WATER ; 34
+	tilecoll WALL, WALL, WALL, WALL ; 35
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 36
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
+	tilecoll WALL, WALL, WALL, CAVE ; 38
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 39
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 3a
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 3b
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 3c
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 3d
+	tilecoll WATER, WATER, WATER, WATER ; 3e
+	tilecoll WATER, WATER, WATER, WATER ; 3f
+	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 40
--- /dev/null
+++ b/data/tilesets/dark_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/data/tilesets/elite_four_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 04
+	tilecoll WALL, WALL, WALL, FLOOR ; 05
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
+	tilecoll WALL, WALL, FLOOR, WALL ; 07
+	tilecoll WALL, WALL, WALL, WALL ; 08
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 0a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 0c
+	tilecoll WALL, FLOOR, WALL, WALL ; 0d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, WALL, WALL ; 0f
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 11
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 14
+	tilecoll WALL, WALL, WALL, WALL ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll LADDER, LADDER, FLOOR, FLOOR ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 19
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
+	tilecoll WALL, FLOOR, WALL, WALL ; 1c
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 1d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 21
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 22
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 23
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 26
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll WALL, WALL, WALL, WALL ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll ICE, ICE, ICE, FLOOR ; 2f
+	tilecoll ICE, ICE, FLOOR, ICE ; 30
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, ICE, ICE, ICE ; 32
+	tilecoll ICE, FLOOR, ICE, ICE ; 33
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 34
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 35
+	tilecoll ICE, WALL, ICE, WALL ; 36
+	tilecoll WALL, ICE, WALL, ICE ; 37
+	tilecoll WALL, WALL, WALL, WALL ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll ICE, ICE, ICE, ICE ; 3a
+	tilecoll WALL, FLOOR, FLOOR, WALL ; 3b
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll DOOR, DOOR, FLOOR, FLOOR ; 3d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3e
+	tilecoll WALL, WALL, WALL, WALL ; 3f
+	tilecoll WALL, WALL, WALL, WALL ; 40
binary files /dev/null b/data/tilesets/elite_four_room_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/facility_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, WALL, WALL ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 06
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
+	tilecoll WALL, WALL, WALL, FLOOR ; 0a
+	tilecoll WALL, WALL, FLOOR, WALL ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 0e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, WALL, WALL ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, FLOOR ; 1b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 1f
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 20
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 21
+	tilecoll WALL, WALL, WALL, FLOOR ; 22
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 23
+	tilecoll WALL, FLOOR, WALL, WALL ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 25
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2f
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 32
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 34
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 35
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 36
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 39
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, WALL, WALL, WALL ; 3b
+	tilecoll WALL, WALL, FLOOR, WALL ; 3c
+	tilecoll WALL, WALL, WALL, FLOOR ; 3d
+	tilecoll WALL, WALL, FLOOR, WALL ; 3e
+	tilecoll WALL, FLOOR, WALL, WALL ; 3f
+	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 40
--- /dev/null
+++ b/data/tilesets/facility_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/data/tilesets/forest_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll WATER, WATER, WATER, WATER ; 03
+	tilecoll WATER, WATER, WATER, WATER ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 07
+	tilecoll WATER, WATER, WATER, WATER ; 08
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, FLOOR ; 09
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 0a
+	tilecoll WATER, WATER, WATER, WATER ; 0b
+	tilecoll WATER, WATER, WATER, WATER ; 0c
+	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, FLOOR ; 0d
+	tilecoll WATER, WATER, WATER, WATER ; 0e
+	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, HEADBUTT_TREE ; 0f
+	tilecoll FLOOR, FLOOR, CUT_TREE, HEADBUTT_TREE ; 10
+	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 11
+	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 12
+	tilecoll FLOOR, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 14
+	tilecoll HEADBUTT_TREE, FLOOR, FLOOR, FLOOR ; 15
+	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, FLOOR ; 16
+	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, HEADBUTT_TREE ; 18
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 19
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 1a
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 1b
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 1c
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, DOOR ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 29
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2f
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 30
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 32
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 33
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 34
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 35
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 36
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 37
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 38
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 39
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3f
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 40
--- /dev/null
+++ b/data/tilesets/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/data/tilesets/game_corner_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll COUNTER, COUNTER, COUNTER, COUNTER ; 08
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 09
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 0a
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0e
+	tilecoll WALL, WALL, WALL, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, COUNTER, COUNTER ; 11
+	tilecoll WALL, WALL, COUNTER, COUNTER ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, COUNTER, FLOOR ; 14
+	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 17
+	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 18
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 19
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1b
+	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 1c
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 1d
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 28
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
+	tilecoll WALL, WALL, FLOOR, WALL ; 2a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
+	tilecoll WALL, WALL, FLOOR, WALL ; 2c
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll WALL, WALL, FLOOR, WALL ; 30
+	tilecoll WALL, WALL, WALL, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/game_corner_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/gate_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
+	tilecoll WALL, WALL, WALL, WALL ; 04
+	tilecoll DOOR, DOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 07
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
+	tilecoll COUNTER, COUNTER, COUNTER, FLOOR ; 09
+	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 0a
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0b
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 0c
+	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 0d
+	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 0e
+	tilecoll WALL, WALL, COUNTER, FLOOR ; 0f
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 10
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 11
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 12
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 13
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 14
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 19
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1b
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 21
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 24
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 26
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 29
+	tilecoll WALL, DOOR, FLOOR, FLOOR ; 2a
+	tilecoll DOOR, WALL, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 2c
+	tilecoll WALL, WALL, FLOOR, PC ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll DOOR, WALL, FLOOR, FLOOR ; 2f
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, COUNTER ; 31
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 32
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 33
+	tilecoll COUNTER, FLOOR, FLOOR, WALL ; 34
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 39
+	tilecoll WALL, WALL, WALL, WALL ; 3a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 3b
+	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, COUNTER, FLOOR ; 3d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 3e
+	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 3f
+	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 40
binary files /dev/null b/data/tilesets/gate_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/ho_oh_word_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, WALL, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, WALL ; 1a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/house_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 02
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 03
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 05
+	tilecoll WALL, WINDOW, FLOOR, FLOOR ; 06
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 07
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 08
+	tilecoll WALL, WINDOW, FLOOR, FLOOR ; 09
+	tilecoll WALL, WALL, FLOOR, BOOKSHELF ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0c
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0d
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll WALL, TOWN_MAP, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll WALL, WALL, PC, WALL ; 11
+	tilecoll WALL, WALL, WALL, FLOOR ; 12
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 13
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 15
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 16
+	tilecoll WINDOW, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, WARP_CARPET_LEFT, FLOOR ; 18
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 1a
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 1b
+	tilecoll WARP_CARPET_LEFT, FLOOR, FLOOR, FLOOR ; 1c
+	tilecoll WALL, WALL, FLOOR, PC ; 1d
+	tilecoll WALL, WALL, FLOOR, RADIO ; 1e
+	tilecoll WALL, TOWN_MAP, TV, FLOOR ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 22
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 23
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 24
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 25
+	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 27
+	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 28
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll WALL, WALL, FLOOR, WALL ; 30
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 32
+	tilecoll WALL, WINDOW, WALL, WALL ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/house_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/ice_path_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 04
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 05
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 06
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 08
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll WALL, FLOOR, WALL, WALL ; 0d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, WALL, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, WALL, CAVE ; 14
+	tilecoll WALL, WALL, WALL, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, WALL ; 17
+	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 18
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
+	tilecoll FLOOR, PIT, FLOOR, FLOOR ; 1c
+	tilecoll WALL, FLOOR, WALL, WALL ; 1d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1e
+	tilecoll FLOOR, WALL, WALL, WALL ; 1f
+	tilecoll ICE, ICE, ICE, ICE ; 20
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 22
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 24
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 25
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 26
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 27
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 28
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 29
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll WALL, ICE, ICE, ICE ; 2d
+	tilecoll ICE, ICE, WALL, ICE ; 2e
+	tilecoll ICE, WALL, ICE, ICE ; 2f
+	tilecoll ICE, ICE, ICE, WALL ; 30
+	tilecoll WALL, WALL, FLOOR, WALL ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WALL, WALL, WALL, FLOOR ; 33
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 39
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 3e
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 3f
+	tilecoll ICE, ICE, ICE, LADDER ; 40
--- /dev/null
+++ b/data/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/data/tilesets/johto_collision.asm
@@ -1,0 +1,128 @@
+	tilecoll 01, 01, 01, 01 ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll LADDER, LADDER, LADDER, LADDER ; 07
+	tilecoll WHIRLPOOL, BUOY, WATER, BUOY ; 08
+	tilecoll WALL, WALL, WALL, WALL ; 09
+	tilecoll WALL, WALL, WALL, WALL ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 0d
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 0e
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, WALL, WALL ; 11
+	tilecoll WALL, WALL, WALL, WALL ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WALL, WALL, DOOR ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll WALL, WALL, WALL, DOOR ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, DOOR ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, DOOR, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, DOOR, WALL ; 28
+	tilecoll WALL, WALL, WALL, DOOR ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 2b
+	tilecoll WALL, WALL, WALL, WALL ; 2c
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 2d
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, DOOR ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll BUOY, BUOY, BUOY, WATER ; 31
+	tilecoll BUOY, BUOY, WATER, WATER ; 32
+	tilecoll BUOY, BUOY, WATER, BUOY ; 33
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 34
+	tilecoll BUOY, WATER, BUOY, WATER ; 35
+	tilecoll WATER, WATER, WATER, WATER ; 36
+	tilecoll WATER, BUOY, WATER, BUOY ; 37
+	tilecoll WALL, WALL, WALL, DOOR ; 38
+	tilecoll BUOY, WATER, BUOY, BUOY ; 39
+	tilecoll WATER, WATER, BUOY, BUOY ; 3a
+	tilecoll WATER, BUOY, BUOY, BUOY ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll HEADBUTT_TREE, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, HEADBUTT_TREE ; 40
+	tilecoll WALL, WALL, WALL, FLOOR ; 41
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 42
+	tilecoll WALL, WALL, FLOOR, WALL ; 43
+	tilecoll WATER, WATER, WATER, WATER ; 44
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 45
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 46
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 47
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 48
+	tilecoll WALL, FLOOR, WALL, WALL ; 49
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 4a
+	tilecoll FLOOR, WALL, WALL, WALL ; 4b
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 4c
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4d
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 4e
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4f
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 50
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 51
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 52
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 53
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 54
+	tilecoll WATER, WATER, WATER, WATER ; 55
+	tilecoll WATER, WATER, WATER, WATER ; 56
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 57
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 58
+	tilecoll WATER, WATER, WATER, WATER ; 59
+	tilecoll WATER, WATER, WATER, WATER ; 5a
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 5b
+	tilecoll HEADBUTT_TREE, CUT_TREE, FLOOR, FLOOR ; 5c
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, FLOOR ; 5d
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 5e
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, HEADBUTT_TREE ; 5f
+	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, CUT_TREE ; 60
+	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, FLOOR ; 61
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 62
+	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, HEADBUTT_TREE ; 63
+	tilecoll FLOOR, FLOOR, CUT_TREE, HEADBUTT_TREE ; 64
+	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 65
+	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 66
+	tilecoll FLOOR, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 67
+	tilecoll CUT_TREE, FLOOR, HEADBUTT_TREE, FLOOR ; 68
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 69
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 6a
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 6b
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 6c
+	tilecoll WALL, FLOOR, WALL, WALL ; 6d
+	tilecoll FLOOR, WALL, WALL, WALL ; 6e
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 71
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 73
+	tilecoll FLOOR, FLOOR, CAVE, WALL ; 74
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 75
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 76
+	tilecoll WATER, WATER, WATER, WATER ; 77
+	tilecoll WALL, WALL, DOOR, WALL ; 78
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 79
+	tilecoll WATER, WATER, WATER, WATER ; 7a
+	tilecoll WATER, WATER, WATER, WATER ; 7b
+	tilecoll WALL, WALL, WALL, WALL ; 7c
+	tilecoll WALL, WALL, WALL, WALL ; 7d
+	tilecoll WALL, WALL, WALL, WALL ; 7e
+	tilecoll WALL, WALL, WALL, WALL ; 7f
+	tilecoll WALL, WALL, WALL, WALL ; 80
binary files /dev/null b/data/tilesets/johto_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/johto_modern_collision.asm
@@ -1,0 +1,128 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, WALL, WALL ; 09
+	tilecoll WALL, WALL, WALL, WALL ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 0d
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 0e
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, WALL, WALL ; 11
+	tilecoll WALL, WALL, WALL, WALL ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WALL, WALL, DOOR ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll WALL, WALL, WALL, DOOR ; 17
+	tilecoll WALL, WALL, DOOR, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, DOOR ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, DOOR, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, DOOR, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll WALL, WALL, WALL, WALL ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, WALL, DOOR ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 30
+	tilecoll BUOY, BUOY, BUOY, WATER ; 31
+	tilecoll BUOY, BUOY, WATER, WATER ; 32
+	tilecoll BUOY, BUOY, WATER, BUOY ; 33
+	tilecoll WALL, WALL, WALL, WALL ; 34
+	tilecoll BUOY, WATER, BUOY, WATER ; 35
+	tilecoll WATER, WATER, WATER, WATER ; 36
+	tilecoll WATER, BUOY, WATER, BUOY ; 37
+	tilecoll HEADBUTT_TREE, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll BUOY, WATER, BUOY, BUOY ; 39
+	tilecoll WATER, WATER, BUOY, BUOY ; 3a
+	tilecoll WATER, BUOY, BUOY, BUOY ; 3b
+	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 3c
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 3d
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 3e
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3f
+	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 40
+	tilecoll WALL, WALL, WALL, FLOOR ; 41
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 42
+	tilecoll WALL, WALL, FLOOR, WALL ; 43
+	tilecoll WATER, WATER, WATER, WATER ; 44
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 45
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 46
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 47
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 48
+	tilecoll WALL, FLOOR, WALL, WALL ; 49
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 4a
+	tilecoll FLOOR, WALL, WALL, WALL ; 4b
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 4c
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4d
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 4e
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4f
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 50
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 51
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 52
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 53
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 54
+	tilecoll WATER, WATER, WATER, WATER ; 55
+	tilecoll WATER, WATER, WATER, WATER ; 56
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 57
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 58
+	tilecoll WATER, WATER, WATER, WATER ; 59
+	tilecoll WATER, WATER, WATER, WATER ; 5a
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 5b
+	tilecoll WALL, WALL, WALL, CAVE ; 5c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 5d
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 5e
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 5f
+	tilecoll WALL, WALL, WALL, WALL ; 60
+	tilecoll WATER, WATER, WALL, WALL ; 61
+	tilecoll WATER, WATER, WALL, WALL ; 62
+	tilecoll WATER, WATER, WALL, WALL ; 63
+	tilecoll WATER, WATER, WATER, WATER ; 64
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 65
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 66
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 67
+	tilecoll WALL, WALL, WALL, WALL ; 68
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 69
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 6a
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 6b
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 6c
+	tilecoll WALL, FLOOR, WALL, WALL ; 6d
+	tilecoll FLOOR, WALL, WALL, WALL ; 6e
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 71
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 73
+	tilecoll FLOOR, FLOOR, WALL, CAVE ; 74
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 75
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 76
+	tilecoll WATER, WATER, WATER, WATER ; 77
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 78
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 79
+	tilecoll WATER, WATER, WATER, WATER ; 7a
+	tilecoll WATER, WATER, WATER, WATER ; 7b
+	tilecoll WALL, WALL, WALL, WALL ; 7c
+	tilecoll WALL, WALL, WALL, WALL ; 7d
+	tilecoll WALL, WALL, WALL, WALL ; 7e
+	tilecoll WALL, WALL, WALL, WALL ; 7f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 80
binary files /dev/null b/data/tilesets/johto_modern_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/kabuto_word_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, WALL, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, WALL ; 1a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/kanto_collision.asm
@@ -1,0 +1,128 @@
+	tilecoll CUT_TREE, CUT_TREE, CUT_TREE, CUT_TREE ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, WALL, DOOR ; 03
+	tilecoll WALL, WALL, WALL, WALL ; 04
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 05
+	tilecoll LADDER, LADDER, LADDER, LADDER ; 06
+	tilecoll FLOOR, FLOOR, CAVE, WALL ; 07
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 09
+	tilecoll WALL, WALL, WALL, WALL ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 0c
+	tilecoll WALL, WALL, WALL, WALL ; 0d
+	tilecoll WALL, WALL, WALL, WALL ; 0e
+	tilecoll WALL, WALL, WALL, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, WALL, WALL ; 11
+	tilecoll WALL, WALL, WALL, WALL ; 12
+	tilecoll WALL, WALL, DOOR, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WATER, WALL, WALL ; 15
+	tilecoll WATER, WALL, WALL, WALL ; 16
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 17
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 18
+	tilecoll WALL, WATER, WALL, WATER ; 19
+	tilecoll WATER, WALL, WATER, WALL ; 1a
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 1b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1d
+	tilecoll WATER, WATER, WATER, WATER ; 1e
+	tilecoll WATER, WATER, WATER, WATER ; 1f
+	tilecoll WATER, WATER, WATER, WATER ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll WALL, FLOOR, WALL, WALL ; 25
+	tilecoll FLOOR, WALL, WALL, WALL ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 29
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 2a
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll WATER, WATER, WATER, WATER ; 2e
+	tilecoll WATER, WATER, WATER, WATER ; 2f
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 30
+	tilecoll WALL, WALL, WALL, WALL ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll WALL, CUT_TREE, WALL, FLOOR ; 33
+	tilecoll WALL, WALL, FLOOR, CUT_TREE ; 34
+	tilecoll CUT_TREE, FLOOR, WALL, WALL ; 35
+	tilecoll FLOOR, CUT_TREE, WALL, FLOOR ; 36
+	tilecoll WALL, WALL, FLOOR, WALL ; 37
+	tilecoll WALL, WALL, WALL, WALL ; 38
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 39
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 3a
+	tilecoll WALL, WALL, DOOR, WALL ; 3b
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 3c
+	tilecoll WALL, WALL, WALL, DOOR ; 3d
+	tilecoll WALL, WALL, WALL, WALL ; 3e
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 3f
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 40
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 41
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 42
+	tilecoll HOP_DOWN, WALL, WALL, WALL ; 43
+	tilecoll WATER, WATER, WATER, WATER ; 44
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 45
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 46
+	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 47
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 48
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 49
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4a
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 4b
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 4c
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 4d
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 4e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 4f
+	tilecoll FLOOR, WALL, WALL, WALL ; 50
+	tilecoll WALL, FLOOR, WALL, WALL ; 51
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 52
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 53
+	tilecoll WALL, WALL, WALL, DOOR ; 54
+	tilecoll WALL, WALL, WALL, WALL ; 55
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 56
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 57
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 58
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 59
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 5a
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 5b
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 5c
+	tilecoll FLOOR, HOP_DOWN, FLOOR, WALL ; 5d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5f
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 60
+	tilecoll FLOOR, WALL, CUT_TREE, WALL ; 61
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 62
+	tilecoll WALL, WALL, WALL, FLOOR ; 63
+	tilecoll WALL, WALL, FLOOR, WALL ; 64
+	tilecoll WATER, WATER, WATER, WATER ; 65
+	tilecoll WATER, WATER, WATER, WATER ; 66
+	tilecoll WALL, WALL, WALL, WALL ; 67
+	tilecoll WALL, WATER, WALL, WATER ; 68
+	tilecoll WALL, WALL, WALL, WALL ; 69
+	tilecoll WALL, WALL, WALL, WALL ; 6a
+	tilecoll WATER, WALL, WATER, WALL ; 6b
+	tilecoll WATER, WATER, WALL, WALL ; 6c
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 6d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 6e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 6f
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 70
+	tilecoll FLOOR, WALL, CAVE, WALL ; 71
+	tilecoll WALL, WALL, WALL, WALL ; 72
+	tilecoll WALL, WALL, WALL, WALL ; 73
+	tilecoll WALL, WALL, WALL, WALL ; 74
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 75
+	tilecoll WALL, WALL, WALL, WALL ; 76
+	tilecoll WALL, WALL, WALL, WALL ; 77
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 78
+	tilecoll WATER, WATER, WATER, WATER ; 79
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 7a
+	tilecoll WALL, WALL, WALL, WALL ; 7b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7c
+	tilecoll WALL, WALL, WALL, DOOR ; 7d
+	tilecoll WALL, WALL, WALL, WALL ; 7e
+	tilecoll WALL, WALL, WALL, WALL ; 7f
+	tilecoll WALL, WALL, WALL, WALL ; 80
binary files /dev/null b/data/tilesets/kanto_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/lab_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 03
+	tilecoll WALL, WALL, WALL, WALL ; 04
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 05
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 07
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 08
+	tilecoll WALL, WALL, WALL, WALL ; 09
+	tilecoll WINDOW, WALL, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 0f
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 13
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 15
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 1a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 20
+	tilecoll WINDOW, WINDOW, FLOOR, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/lab_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/lighthouse_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll WALL, WALL, WALL, WALL ; 03
+	tilecoll WALL, WALL, WALL, WALL ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 0a
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll WALL, WALL, WALL, WALL ; 0d
+	tilecoll WALL, WALL, WALL, WALL ; 0e
+	tilecoll WALL, WALL, WALL, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll 9C, FLOOR, COUNTER, FLOOR ; 11
+	tilecoll WALL, WALL, WALL, WALL ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WARP_CARPET_DOWN, WALL, WALL ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll 9C, FLOOR, COUNTER, FLOOR ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 19
+	tilecoll WALL, WALL, WALL, STAIRCASE ; 1a
+	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 1b
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 21
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 22
+	tilecoll WALL, FLOOR, WALL, WALL ; 23
+	tilecoll FLOOR, WALL, WALL, WALL ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, PIT, PIT ; 29
+	tilecoll WALL, WALL, WINDOW, WINDOW ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2f
+	tilecoll WALL, WALL, WALL, BOOKSHELF ; 30
+	tilecoll WALL, WALL, FLOOR, WALL ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 34
+	tilecoll WALL, WALL, PC, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 36
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
+	tilecoll WALL, WALL, WALL, WALL ; 38
+	tilecoll WALL, WALL, FLOOR, WALL ; 39
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, WALL, WALL, WALL ; 3d
+	tilecoll WALL, WALL, WINDOW, WALL ; 3e
+	tilecoll WALL, WALL, WALL, WALL ; 3f
+	tilecoll WALL, WALL, WALL, WALL ; 40
binary files /dev/null b/data/tilesets/lighthouse_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/mansion_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 06
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 07
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0a
+	tilecoll WALL, WALL, FLOOR, WALL ; 0b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0c
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0d
+	tilecoll WALL, WALL, FLOOR, WALL ; 0e
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0f
+	tilecoll WALL, WALL, BOOKSHELF, INCENSE_BURNER ; 10
+	tilecoll WALL, WALL, WALL, WALL ; 11
+	tilecoll WALL, WALL, BOOKSHELF, WALL ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 15
+	tilecoll STAIRCASE, STAIRCASE, FLOOR, FLOOR ; 16
+	tilecoll STAIRCASE, STAIRCASE, FLOOR, FLOOR ; 17
+	tilecoll WALL, DOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, BOOKSHELF, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1c
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1e
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1f
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 20
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 21
+	tilecoll RIGHT_WALL, LEFT_WALL, WALL, FLOOR ; 22
+	tilecoll WALL, WALL, FLOOR, WALL ; 23
+	tilecoll WALL, WALL, STAIRCASE, LEFT_WALL ; 24
+	tilecoll WALL, WALL, WALL, STAIRCASE ; 25
+	tilecoll WALL, WALL, LEFT_WALL, FLOOR ; 26
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 27
+	tilecoll WALL, WALL, DOOR, WALL ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 29
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 2a
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll RIGHT_WALL, LEFT_WALL, RIGHT_WALL, LEFT_WALL ; 2d
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll WALL, WALL, WALL, FLOOR ; 30
+	tilecoll WALL, WALL, FLOOR, WALL ; 31
+	tilecoll WALL, WALL, FLOOR, WALL ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll WALL, WALL, WALL, FLOOR ; 34
+	tilecoll WALL, WALL, WALL, WALL ; 35
+	tilecoll FLOOR, WALL, WALL, WALL ; 36
+	tilecoll WALL, WALL, FLOOR, WALL ; 37
+	tilecoll WALL, FLOOR, WALL, WALL ; 38
+	tilecoll WALL, WALL, FLOOR, WALL ; 39
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll WALL, FLOOR, WALL, WALL ; 3e
+	tilecoll FLOOR, WALL, WALL, WALL ; 3f
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 40
binary files /dev/null b/data/tilesets/mansion_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/mart_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 02
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 03
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 07
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 09
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0a
+	tilecoll WALL, WALL, COUNTER, FLOOR ; 0b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 0c
+	tilecoll FLOOR, COUNTER, FLOOR, FLOOR ; 0d
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 0e
+	tilecoll COUNTER, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, WALL, WALL, WALL ; 10
+	tilecoll COUNTER, COUNTER, COUNTER, FLOOR ; 11
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, MART_SHELF, FLOOR, MART_SHELF ; 13
+	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 14
+	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 15
+	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 18
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 1a
+	tilecoll COUNTER, COUNTER, COUNTER, FLOOR ; 1b
+	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 1f
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 20
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 23
+	tilecoll FLOOR, MART_SHELF, FLOOR, MART_SHELF ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 26
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
+	tilecoll WALL, WALL, COUNTER, MART_SHELF ; 28
+	tilecoll FLOOR, MART_SHELF, FLOOR, MART_SHELF ; 29
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll COUNTER, COUNTER, FLOOR, MART_SHELF ; 2d
+	tilecoll FLOOR, MART_SHELF, COUNTER, COUNTER ; 2e
+	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 2f
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 30
+	tilecoll WALL, WALL, WALL, WALL ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll WALL, FLOOR, WALL, WALL ; 34
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 35
+	tilecoll FLOOR, WALL, WALL, WALL ; 36
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, STAIRCASE ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, WALL, WALL, WALL ; 3d
+	tilecoll WALL, WALL, WALL, WALL ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll WALL, WALL, WALL, WALL ; 40
--- /dev/null
+++ b/data/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/data/tilesets/omanyte_word_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, WALL, FLOOR ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, WALL ; 1a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/park_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll WALL, WALL, WALL, WALL ; 07
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 08
+	tilecoll WALL, WALL, WALL, WALL ; 09
+	tilecoll WALL, WALL, WALL, WALL ; 0a
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0b
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0c
+	tilecoll WALL, WALL, WALL, WALL ; 0d
+	tilecoll WALL, WALL, WALL, WALL ; 0e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0f
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll WALL, WALL, WALL, FLOOR ; 11
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
+	tilecoll WALL, WALL, FLOOR, WALL ; 13
+	tilecoll LONG_GRASS, LONG_GRASS, LONG_GRASS, LONG_GRASS ; 14
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 15
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 16
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 17
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 18
+	tilecoll WALL, FLOOR, WALL, WALL ; 19
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 1a
+	tilecoll FLOOR, WALL, WALL, WALL ; 1b
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1c
+	tilecoll WALL, WALL, WALL, FLOOR ; 1d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, FLOOR, WALL ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll WALL, FLOOR, WALL, WALL ; 25
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 26
+	tilecoll FLOOR, WALL, WALL, WALL ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 30
+	tilecoll WALL, WALL, WALL, WALL ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll LONG_GRASS, LONG_GRASS, LONG_GRASS, LONG_GRASS ; 34
+	tilecoll WALL, WALL, WALL, WALL ; 35
+	tilecoll WALL, WALL, WALL, WALL ; 36
+	tilecoll WALL, WALL, WALL, WALL ; 37
+	tilecoll WALL, WALL, WALL, WALL ; 38
+	tilecoll WALL, WALL, WALL, WALL ; 39
+	tilecoll WALL, WALL, WALL, WALL ; 3a
+	tilecoll WALL, WALL, WALL, WALL ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, WALL, WALL, WALL ; 3d
+	tilecoll WALL, WALL, WALL, WALL ; 3e
+	tilecoll WALL, WALL, WALL, WALL ; 3f
+	tilecoll LONG_GRASS, LONG_GRASS, LONG_GRASS, LONG_GRASS ; 40
binary files /dev/null b/data/tilesets/park_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/players_house_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WINDOW, WALL, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, FLOOR, TV ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, WALL, WALL ; 05
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 07
+	tilecoll WALL, WALL, WALL, WALL ; 08
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 09
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 0a
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 0b
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0d
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, PC, FLOOR ; 11
+	tilecoll WALL, WALL, TV, WALL ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, TV, FLOOR, WALL ; 14
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 15
+	tilecoll WALL, WALL, FLOOR, WALL ; 16
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 17
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 18
+	tilecoll WALL, WALL, RADIO, PC ; 19
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
+	tilecoll WALL, WALL, RADIO, FLOOR ; 1b
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 1c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, VIRTUAL_BOY, FLOOR ; 1f
+	tilecoll WALL, WALL, PC, RADIO ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, TV, BOOKSHELF ; 22
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 23
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 24
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 25
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 26
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/players_house_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/players_room_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 03
+	tilecoll WALL, WALL, TV, BOOKSHELF ; 04
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 15
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 16
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 17
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 18
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 19
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1f
+	tilecoll TOWN_MAP, STAIRCASE, FLOOR, FLOOR ; 20
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 21
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 23
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 24
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 25
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 26
+	tilecoll FF, FF, FF, FF ; 27
+	tilecoll FF, FF, FF, FF ; 28
+	tilecoll FF, FF, FF, FF ; 29
+	tilecoll FF, FF, FF, FF ; 2a
+	tilecoll FF, FF, FF, FF ; 2b
+	tilecoll FF, FF, FF, FF ; 2c
+	tilecoll FF, FF, FF, FF ; 2d
+	tilecoll FF, FF, FF, FF ; 2e
+	tilecoll FF, FF, FF, FF ; 2f
+	tilecoll FF, FF, FF, FF ; 30
+	tilecoll FF, FF, FF, FF ; 31
+	tilecoll FF, FF, FF, FF ; 32
+	tilecoll FF, FF, FF, FF ; 33
+	tilecoll FF, FF, FF, FF ; 34
+	tilecoll FF, FF, FF, FF ; 35
+	tilecoll FF, FF, FF, FF ; 36
+	tilecoll FF, FF, FF, FF ; 37
+	tilecoll FF, FF, FF, FF ; 38
+	tilecoll FF, FF, FF, FF ; 39
+	tilecoll FF, FF, FF, FF ; 3a
+	tilecoll FF, FF, FF, FF ; 3b
+	tilecoll FF, FF, FF, FF ; 3c
+	tilecoll FF, FF, FF, FF ; 3d
+	tilecoll FF, FF, FF, FF ; 3e
+	tilecoll FF, FF, FF, FF ; 3f
+	tilecoll FF, FF, FF, FF ; 40
binary files /dev/null b/data/tilesets/players_room_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/pokecenter_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll WALL, WALL, WALL, FLOOR ; 03
+	tilecoll WALL, WALL, FLOOR, WALL ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 06
+	tilecoll WALL, COUNTER, FLOOR, FLOOR ; 07
+	tilecoll COUNTER, WALL, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, PC ; 09
+	tilecoll WALL, WALL, FLOOR, WALL ; 0a
+	tilecoll WALL, DOOR, FLOOR, FLOOR ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0e
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll WALL, WALL, FLOOR, WALL ; 10
+	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 12
+	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 13
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 15
+	tilecoll WALL, DOOR, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, FLOOR, WALL ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, WALL ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1f
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, FLOOR, PC ; 22
+	tilecoll WALL, WALL, WALL, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 25
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 26
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 28
+	tilecoll WALL, WALL, FLOOR, WALL ; 29
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll WALL, WALL, WALL, FLOOR ; 2b
+	tilecoll WALL, DOOR, FLOOR, FLOOR ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2f
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 30
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 31
+	tilecoll WALL, WALL, FLOOR, WALL ; 32
+	tilecoll PC, WALL, FLOOR, WALL ; 33
+	tilecoll FLOOR, WARP_PANEL, FLOOR, FLOOR ; 34
+	tilecoll DOOR, WALL, FLOOR, FLOOR ; 35
+	tilecoll DOOR, WALL, FLOOR, WALL ; 36
+	tilecoll DOOR, WALL, FLOOR, FLOOR ; 37
+	tilecoll DOOR, WALL, FLOOR, WALL ; 38
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 39
+	tilecoll WALL, WALL, FLOOR, WALL ; 3a
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll WALL, WALL, FLOOR, WALL ; 3c
+	tilecoll WARP_PANEL, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll WARP_PANEL, FLOOR, FLOOR, FLOOR ; 3e
+	tilecoll WARP_PANEL, WARP_PANEL, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, WARP_PANEL, FLOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/pokecenter_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/pokecom_center_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 03
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, WALL, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll WALL, WALL, WALL, FLOOR ; 07
+	tilecoll WALL, WALL, FLOOR, PC ; 08
+	tilecoll WALL, WALL, WALL, FLOOR ; 09
+	tilecoll WALL, COUNTER, FLOOR, FLOOR ; 0a
+	tilecoll WALL, COUNTER, FLOOR, FLOOR ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll WALL, WALL, FLOOR, WALL ; 0d
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0f
+	tilecoll WALL, WALL, FLOOR, WALL ; 10
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 11
+	tilecoll WALL, WALL, WALL, FLOOR ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WALL, WALL, WALL ; 15
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
+	tilecoll WALL, WALL, WALL, WALL ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, FLOOR, WALL ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, WALL, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 2d
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll WALL, WALL, WALL, WALL ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 34
+	tilecoll WALL, WALL, WALL, WALL ; 35
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 36
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 38
+	tilecoll WALL, WALL, WALL, WALL ; 39
+	tilecoll WALL, WALL, WALL, WALL ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 3c
+	tilecoll WALL, WALL, WALL, WALL ; 3d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 3e
+	tilecoll WALL, WALL, WALL, WALL ; 3f
+	tilecoll WALL, WALL, WALL, WALL ; 40
--- /dev/null
+++ b/data/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/data/tilesets/port_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll BUOY, WATER, BUOY, WATER ; 03
+	tilecoll WATER, BUOY, WATER, BUOY ; 04
+	tilecoll LADDER, LADDER, LADDER, LADDER ; 05
+	tilecoll WALL, WALL, WALL, WATER ; 06
+	tilecoll WALL, WALL, WATER, WATER ; 07
+	tilecoll WALL, WALL, WATER, WALL ; 08
+	tilecoll WATER, WATER, WATER, WATER ; 09
+	tilecoll WALL, WATER, WALL, WATER ; 0a
+	tilecoll WATER, WATER, WATER, WATER ; 0b
+	tilecoll WATER, WALL, WATER, WALL ; 0c
+	tilecoll WATER, WATER, FLOOR, FLOOR ; 0d
+	tilecoll WALL, WATER, WALL, WALL ; 0e
+	tilecoll WATER, WATER, WALL, WALL ; 0f
+	tilecoll WATER, WALL, WALL, WALL ; 10
+	tilecoll WATER, WATER, WATER, WATER ; 11
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll WATER, WATER, WATER, WATER ; 13
+	tilecoll WATER, FLOOR, WATER, FLOOR ; 14
+	tilecoll WATER, FLOOR, WATER, FLOOR ; 15
+	tilecoll WATER, WATER, WATER, WATER ; 16
+	tilecoll WATER, WATER, WATER, WATER ; 17
+	tilecoll WATER, FLOOR, WALL, WARP_CARPET_DOWN ; 18
+	tilecoll WATER, WATER, WALL, WALL ; 19
+	tilecoll WATER, FLOOR, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, WALL ; 1b
+	tilecoll WALL, WATER, WALL, WALL ; 1c
+	tilecoll WATER_21, WATER_21, WALL, WALL ; 1d
+	tilecoll WATER_21, WATER_21, WALL, WALL ; 1e
+	tilecoll WATER_21, WATER_21, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WATER ; 20
+	tilecoll WALL, FLOOR, WATER, WARP_CARPET_DOWN ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
+	tilecoll BUOY, BUOY, BUOY, WATER ; 23
+	tilecoll BUOY, BUOY, WATER, BUOY ; 24
+	tilecoll BUOY, BUOY, WATER, WATER ; 25
+	tilecoll BUOY, BUOY, WATER, WATER ; 26
+	tilecoll LADDER, LADDER, LADDER, LADDER ; 27
+	tilecoll FLOOR, FLOOR, WATER, WATER ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, WATER ; 29
+	tilecoll FLOOR, FLOOR, WATER, FLOOR ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, WATER, FLOOR, FLOOR ; 2d
+	tilecoll WATER, FLOOR, FLOOR, FLOOR ; 2e
+	tilecoll FLOOR, WATER, FLOOR, WATER ; 2f
+	tilecoll WATER, FLOOR, WATER, FLOOR ; 30
+	tilecoll FLOOR, FLOOR, WATER, WATER ; 31
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 34
+	tilecoll FLOOR, WATER, FLOOR, WATER ; 35
+	tilecoll WALL, WALL, FLOOR, LADDER ; 36
+	tilecoll WATER, WATER, WATER, WATER ; 37
+	tilecoll FLOOR, WATER, FLOOR, WATER ; 38
+	tilecoll WATER, FLOOR, WATER, FLOOR ; 39
+	tilecoll WATER, WATER, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3b
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3c
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 40
--- /dev/null
+++ b/data/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/data/tilesets/radio_tower_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, WALL, COUNTER ; 06
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 07
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 08
+	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 09
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 0a
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 0d
+	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, COUNTER ; 0f
+	tilecoll FLOOR, FLOOR, COUNTER, FLOOR ; 10
+	tilecoll FLOOR, COUNTER, FLOOR, FLOOR ; 11
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
+	tilecoll WALL, WALL, PC, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 15
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 16
+	tilecoll WALL, WALL, WALL, WALL ; 17
+	tilecoll FLOOR, FLOOR, COUNTER, FLOOR ; 18
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, WALL, FLOOR, COUNTER ; 1a
+	tilecoll WALL, COUNTER, FLOOR, COUNTER ; 1b
+	tilecoll COUNTER, FLOOR, FLOOR, FLOOR ; 1c
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1d
+	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 1e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1f
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 20
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 21
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 22
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, FLOOR, BOOKSHELF ; 25
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 27
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll WALL, WALL, FLOOR, WALL ; 29
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 2a
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 2c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
+	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 2e
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
+	tilecoll WALL, WALL, FLOOR, WALL ; 32
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 33
+	tilecoll WALL, WALL, WALL, FLOOR ; 34
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 35
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
+	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 39
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 3d
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/radio_tower_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/ruins_of_alph_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, FLOOR ; 02
+	tilecoll WALL, WALL, FLOOR, WALL ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, FLOOR ; 06
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 07
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, WALL ; 09
+	tilecoll WALL, FLOOR, WALL, WALL ; 0a
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0b
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0c
+	tilecoll FLOOR, WALL, WALL, WALL ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 0f
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 10
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 12
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 14
+	tilecoll WALL, FLOOR, WALL, WALL ; 15
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 16
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 17
+	tilecoll FLOOR, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, WALL, PIT ; 19
+	tilecoll WALL, WALL, PIT, WALL ; 1a
+	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 1b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1d
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1e
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 1f
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 20
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 21
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 22
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 23
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, WALL, WALL, WALL ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 2c
+	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 30
+	tilecoll CAVE, WALL, FLOOR, FLOOR ; 31
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 32
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 33
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll WALL, WALL, WALL, PIT ; 35
+	tilecoll WALL, WALL, PIT, WALL ; 36
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, FLOOR, GRASS_4A, FLOOR ; 39
+	tilecoll FLOOR, FLOOR, GRASS_4B, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, CUT_28, FLOOR ; 3b
+	tilecoll FLOOR, FLOOR, WATER, FLOOR ; 3c
+	tilecoll 64, FLOOR, WATERFALL_UP, FLOOR ; 3d
+	tilecoll 65, FLOOR, WATERFALL, FLOOR ; 3e
+	tilecoll WATERFALL_UP, FLOOR, WARP_CARPET_DOWN, FLOOR ; 3f
+	tilecoll WATERFALL, FLOOR, DOOR, FLOOR ; 40
binary files /dev/null b/data/tilesets/ruins_of_alph_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/tower_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 04
+	tilecoll WALL, WALL, WALL, FLOOR ; 05
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
+	tilecoll WALL, WALL, FLOOR, WALL ; 07
+	tilecoll WALL, WALL, WALL, WALL ; 08
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll WALL, FLOOR, WALL, WALL ; 0d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, WALL, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 11
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 12
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 13
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 14
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 15
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 16
+	tilecoll WALL, FLOOR, WALL, WALL ; 17
+	tilecoll FLOOR, WALL, WALL, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 1e
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 1f
+	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 20
+	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 21
+	tilecoll WALL, WALL, WALL, FLOOR ; 22
+	tilecoll WALL, WALL, FLOOR, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll FLOOR, FLOOR, WARP_PANEL, FLOOR ; 25
+	tilecoll WALL, WALL, PIT, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 27
+	tilecoll WARP_CARPET_UP, WARP_CARPET_UP, FLOOR, FLOOR ; 28
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
+	tilecoll WALL, WALL, WALL, WALL ; 2b
+	tilecoll WALL, HOP_LEFT, WALL, WALL ; 2c
+	tilecoll HOP_RIGHT, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll WALL, WALL, WALL, FLOOR ; 2f
+	tilecoll WALL, WALL, FLOOR, WALL ; 30
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 32
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 33
+	tilecoll WALL, WALL, WALL, FLOOR ; 34
+	tilecoll WALL, WALL, FLOOR, WALL ; 35
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 36
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
+	tilecoll PIT, PIT, FLOOR, FLOOR ; 38
+	tilecoll FLOOR, PIT, FLOOR, PIT ; 39
+	tilecoll PIT, FLOOR, PIT, FLOOR ; 3a
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 3b
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 3c
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 3d
+	tilecoll WALL, HOP_DOWN, WALL, WALL ; 3e
+	tilecoll HOP_DOWN, WALL, WALL, WALL ; 3f
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 40
--- /dev/null
+++ b/data/tilesets/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/data/tilesets/traditional_house_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, RADIO, FLOOR ; 02
+	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 03
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 07
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 08
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
+	tilecoll WALL, WALL, WALL, WALL ; 0a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 0c
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 12
+	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 13
+	tilecoll WALL, WALL, INCENSE_BURNER, BOOKSHELF ; 14
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 15
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 16
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 19
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 1a
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 1b
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 1c
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1e
+	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 1f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 22
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 23
+	tilecoll WALL, WALL, RADIO, FLOOR ; 24
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 25
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 26
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 27
+	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 28
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
+	tilecoll FLOOR, FLOOR, HOP_DOWN, HOP_DOWN ; 2d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 2f
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 30
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll WALL, WALL, WALL, FLOOR ; 34
+	tilecoll WALL, WALL, WALL, FLOOR ; 35
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 36
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 37
+	tilecoll WALL, WALL, FLOOR, WALL ; 38
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 39
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 3a
+	tilecoll 04, 03, 03, 03 ; 3b
+	tilecoll 03, 03, 03, 03 ; 3c
+	tilecoll 03, 03, 04, 04 ; 3d
+	tilecoll 04, 04, 04, 04 ; 3e
+	tilecoll 03, 03, 03, 03 ; 3f
+	tilecoll WARP_CARPET_DOWN, 04, 03, 03 ; 40
binary files /dev/null b/data/tilesets/traditional_house_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/train_station_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll FF, FF, FF, FF ; 01
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 02
+	tilecoll UP_WALL, FLOOR, UP_WALL, FLOOR ; 03
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 07
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 08
+	tilecoll WALL, FLOOR, WALL, WALL ; 09
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 0d
+	tilecoll WALL, WALL, WALL, WALL ; 0e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, WALL, WALL ; 11
+	tilecoll WALL, WALL, DOOR, WALL ; 12
+	tilecoll WALL, WALL, WALL, DOOR ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WALL, WALL, WALL ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll WALL, WALL, WALL, WALL ; 17
+	tilecoll WALL, WALL, WALL, WALL ; 18
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 19
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
+	tilecoll WALL, WALL, WALL, WALL ; 1b
+	tilecoll WALL, WALL, WALL, WALL ; 1c
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1d
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 22
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 23
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 24
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 25
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 26
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 27
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 28
+	tilecoll WALL, WALL, WALL, FLOOR ; 29
+	tilecoll WALL, WALL, FLOOR, WALL ; 2a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 2c
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 2d
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 2e
+	tilecoll WALL, WALL, WALL, WALL ; 2f
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 30
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 31
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 32
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 33
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 34
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 35
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 36
+	tilecoll WALL, WALL, WALL, FLOOR ; 37
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 38
+	tilecoll WALL, WALL, FLOOR, WALL ; 39
+	tilecoll WALL, FLOOR, WALL, WALL ; 3a
+	tilecoll WALL, WALL, WALL, WALL ; 3b
+	tilecoll FLOOR, WALL, WALL, WALL ; 3c
+	tilecoll WALL, WALL, WALL, WALL ; 3d
+	tilecoll WALL, WALL, WALL, WALL ; 3e
+	tilecoll WALL, WALL, WALL, WALL ; 3f
+	tilecoll WALL, WALL, WALL, WALL ; 40
binary files /dev/null b/data/tilesets/train_station_metatiles.bin differ
--- /dev/null
+++ b/data/tilesets/underground_collision.asm
@@ -1,0 +1,64 @@
+	tilecoll WALL, WALL, WALL, WALL ; 01
+	tilecoll WALL, WALL, WALL, WALL ; 02
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 03
+	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 04
+	tilecoll WALL, WALL, WALL, FLOOR ; 05
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, PIT, PIT ; 08
+	tilecoll WALL, WALL, WALL, FLOOR ; 09
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 0a
+	tilecoll WALL, WALL, FLOOR, WALL ; 0b
+	tilecoll WALL, WALL, WALL, WALL ; 0c
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 0f
+	tilecoll FLOOR, FLOOR, FLOOR, WARP_PANEL ; 10
+	tilecoll WALL, FLOOR, WALL, WALL ; 11
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 12
+	tilecoll FLOOR, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 15
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 16
+	tilecoll WALL, FLOOR, WALL, WALL ; 17
+	tilecoll FLOOR, WALL, WALL, WALL ; 18
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 19
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1a
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 1d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 1f
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 20
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 21
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 22
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 23
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 24
+	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 25
+	tilecoll WALL, WARP_CARPET_UP, FLOOR, FLOOR ; 26
+	tilecoll WARP_CARPET_UP, WALL, FLOOR, FLOOR ; 27
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 28
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 29
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 2a
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
+	tilecoll WALL, WALL, WALL, WALL ; 2c
+	tilecoll WALL, WALL, WALL, WALL ; 2d
+	tilecoll WALL, WALL, WALL, WALL ; 2e
+	tilecoll WARP_CARPET_DOWN, WARP_CARPET_DOWN, WALL, WALL ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll WALL, WALL, WALL, WALL ; 31
+	tilecoll WALL, WALL, WALL, WALL ; 32
+	tilecoll WALL, WALL, WALL, WALL ; 33
+	tilecoll WALL, WALL, WALL, WALL ; 34
+	tilecoll WALL, WALL, WALL, WALL ; 35
+	tilecoll WALL, WALL, WALL, WALL ; 36
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 37
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
+	tilecoll WALL, WALL, WALL, WALL ; 39
+	tilecoll WALL, WALL, WALL, WALL ; 3a
+	tilecoll WALL, WALL, WALL, WALL ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, WALL, WALL, WALL ; 3d
+	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 3e
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- /dev/null
+++ b/data/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/data/tilesets/unused_dark_cave_collision.asm
@@ -1,0 +1,128 @@
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
+	tilecoll TALL_GRASS_10, TALL_GRASS_10, TALL_GRASS_10, TALL_GRASS_10 ; 04
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
+	tilecoll WALL, WALL, WALL, WALL ; 06
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
+	tilecoll WALL, WALL, WALL, WALL ; 09
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
+	tilecoll WALL, WALL, WALL, WALL ; 0b
+	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 0c
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 0d
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
+	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0f
+	tilecoll WALL, WALL, WALL, WALL ; 10
+	tilecoll WALL, WALL, WALL, WALL ; 11
+	tilecoll WALL, WALL, WALL, WALL ; 12
+	tilecoll WALL, WALL, WALL, WALL ; 13
+	tilecoll WALL, WALL, WALL, WALL ; 14
+	tilecoll WALL, WALL, WALL, DOOR ; 15
+	tilecoll WALL, WALL, WALL, WALL ; 16
+	tilecoll WALL, WALL, WALL, DOOR ; 17
+	tilecoll WALL, WALL, TOWN_MAP, WALL ; 18
+	tilecoll WALL, WALL, WALL, WALL ; 19
+	tilecoll WALL, WALL, WALL, WALL ; 1a
+	tilecoll WALL, WALL, WALL, DOOR ; 1b
+	tilecoll WALL, WALL, TOWN_MAP, WALL ; 1c
+	tilecoll WALL, WALL, WALL, WALL ; 1d
+	tilecoll WALL, WALL, DOOR, WALL ; 1e
+	tilecoll WALL, WALL, WALL, WALL ; 1f
+	tilecoll WALL, WALL, WALL, WALL ; 20
+	tilecoll WALL, WALL, WALL, WALL ; 21
+	tilecoll WALL, WALL, WALL, WALL ; 22
+	tilecoll WALL, WALL, WALL, WALL ; 23
+	tilecoll WALL, WALL, WALL, WALL ; 24
+	tilecoll WALL, WALL, WALL, WALL ; 25
+	tilecoll WALL, WALL, WALL, WALL ; 26
+	tilecoll WALL, WALL, WALL, WALL ; 27
+	tilecoll WALL, WALL, WALL, WALL ; 28
+	tilecoll WALL, WALL, WALL, DOOR ; 29
+	tilecoll WALL, WALL, WALL, WALL ; 2a
+	tilecoll WALL, WALL, WALL, DOOR ; 2b
+	tilecoll WALL, WALL, WALL, WALL ; 2c
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 2d
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 2e
+	tilecoll WALL, WALL, WALL, DOOR ; 2f
+	tilecoll WALL, WALL, WALL, WALL ; 30
+	tilecoll BUOY, BUOY, BUOY, WATER_21 ; 31
+	tilecoll BUOY, BUOY, WATER_21, WATER_21 ; 32
+	tilecoll BUOY, BUOY, WATER_21, BUOY ; 33
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 34
+	tilecoll BUOY, WATER_21, BUOY, WATER_21 ; 35
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 36
+	tilecoll WATER_21, BUOY, WATER_21, BUOY ; 37
+	tilecoll WALL, WALL, WALL, WALL ; 38
+	tilecoll BUOY, WATER_21, BUOY, BUOY ; 39
+	tilecoll WATER_21, WATER_21, BUOY, BUOY ; 3a
+	tilecoll WATER_21, BUOY, BUOY, BUOY ; 3b
+	tilecoll WALL, WALL, WALL, WALL ; 3c
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3d
+	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3e
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 3f
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 40
+	tilecoll WALL, WALL, WALL, FLOOR ; 41
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 42
+	tilecoll WALL, WALL, FLOOR, WALL ; 43
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 44
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 45
+	tilecoll TOWN_MAP, FLOOR, FLOOR, FLOOR ; 46
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 47
+	tilecoll FLOOR, FLOOR, FLOOR, TOWN_MAP ; 48
+	tilecoll WALL, FLOOR, WALL, WALL ; 49
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 4a
+	tilecoll FLOOR, WALL, WALL, WALL ; 4b
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 4c
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4d
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 4e
+	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4f
+	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 50
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 51
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 52
+	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 53
+	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 54
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 55
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 56
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 57
+	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 58
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 59
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 5a
+	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 5b
+	tilecoll WALL, CUT_TREE, FLOOR, FLOOR ; 5c
+	tilecoll WALL, WALL, WALL, FLOOR ; 5d
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 5e
+	tilecoll WALL, WALL, FLOOR, WALL ; 5f
+	tilecoll FLOOR, WALL, FLOOR, CUT_TREE ; 60
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 61
+	tilecoll WALL, WALL, WALL, WALL ; 62
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 63
+	tilecoll FLOOR, FLOOR, CUT_TREE, WALL ; 64
+	tilecoll WALL, FLOOR, WALL, WALL ; 65
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 66
+	tilecoll FLOOR, WALL, WALL, WALL ; 67
+	tilecoll CUT_TREE, FLOOR, WALL, FLOOR ; 68
+	tilecoll WALL, FLOOR, WALL, FLOOR ; 69
+	tilecoll FLOOR, WALL, FLOOR, WALL ; 6a
+	tilecoll WALL, UP_WALL, WALL, FLOOR ; 6b
+	tilecoll UP_WALL, WALL, FLOOR, WALL ; 6c
+	tilecoll WALL, FLOOR, WALL, WALL ; 6d
+	tilecoll FLOOR, WALL, WALL, WALL ; 6e
+	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f
+	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70
+	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 71
+	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
+	tilecoll FLOOR, FLOOR, WALL, WALL ; 73
+	tilecoll FLOOR, FLOOR, DOOR, WALL ; 74
+	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 75
+	tilecoll WALL, WALL, FLOOR, FLOOR ; 76
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 77
+	tilecoll WALL, WALL, WALL, WALL ; 78
+	tilecoll WALL, WALL, WALL, WALL ; 79
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 7a
+	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 7b
+	tilecoll WALL, WALL, WALL, WALL ; 7c
+	tilecoll WALL, WALL, WALL, WALL ; 7d
+	tilecoll WALL, WALL, WALL, WALL ; 7e
+	tilecoll WALL, WALL, WALL, WALL ; 7f
+	tilecoll WALL, WALL, WALL, WALL ; 80
binary files /dev/null b/data/tilesets/unused_dark_cave_metatiles.bin differ
--- a/data/time_capsule/catch_rate_items.asm
+++ /dev/null
@@ -1,19 +1,0 @@
-; 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
--- a/data/time_capsule/mon_order.asm
+++ /dev/null
@@ -1,255 +1,0 @@
-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
--- a/data/time_capsule/special_stats.asm
+++ /dev/null
@@ -1,155 +1,0 @@
-; 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
--- a/data/trainers/encounter_music.asm
+++ b/data/trainers/encounter_music.asm
@@ -2,74 +2,74 @@
 
 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
+	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
--- a/data/trainers/gendered_trainers.asm
+++ b/data/trainers/gendered_trainers.asm
@@ -1,3 +1,5 @@
+; Used by GetMobileOTTrainerClass
+
 MaleTrainers: ; 4e95d
 	db BURGLAR
 	db YOUNGSTER
--- /dev/null
+++ b/data/trainers/genders.asm
@@ -1,0 +1,71 @@
+; Used by BattleTowerText
+
+BTTrainerClassGenders: ; 11f2f0
+; entries correspond to trainer classes
+	db MALE   ; FALKNER
+	db FEMALE ; WHITNEY
+	db FEMALE ; BUGSY
+	db MALE   ; MORTY
+	db MALE   ; PRYCE
+	db FEMALE ; JASMINE
+	db MALE   ; CHUCK
+	db FEMALE ; CLAIR
+	db MALE   ; RIVAL1
+	db MALE   ; POKEMON_PROF
+	db FEMALE ; WILL
+	db MALE   ; CAL
+	db MALE   ; BRUNO
+	db FEMALE ; KAREN
+	db MALE   ; KOGA
+	db MALE   ; CHAMPION
+	db MALE   ; BROCK
+	db FEMALE ; MISTY
+	db MALE   ; LT_SURGE
+	db MALE   ; SCIENTIST
+	db FEMALE ; ERIKA
+	db MALE   ; YOUNGSTER
+	db MALE   ; SCHOOLBOY
+	db MALE   ; BIRD_KEEPER
+	db FEMALE ; LASS
+	db FEMALE ; JANINE
+	db MALE   ; COOLTRAINERM
+	db FEMALE ; COOLTRAINERF
+	db FEMALE ; BEAUTY
+	db MALE   ; POKEMANIAC
+	db MALE   ; GRUNTM
+	db MALE   ; GENTLEMAN
+	db FEMALE ; SKIER
+	db FEMALE ; TEACHER
+	db FEMALE ; SABRINA
+	db MALE   ; BUG_CATCHER
+	db MALE   ; FISHER
+	db MALE   ; SWIMMERM
+	db FEMALE ; SWIMMERF
+	db MALE   ; SAILOR
+	db MALE   ; SUPER_NERD
+	db MALE   ; RIVAL2
+	db MALE   ; GUITARIST
+	db MALE   ; HIKER
+	db MALE   ; BIKER
+	db MALE   ; BLAINE
+	db MALE   ; BURGLAR
+	db MALE   ; FIREBREATHER
+	db MALE   ; JUGGLER
+	db MALE   ; BLACKBELT_T
+	db MALE   ; EXECUTIVEM
+	db MALE   ; PSYCHIC_T
+	db FEMALE ; PICNICKER
+	db MALE   ; CAMPER
+	db FEMALE ; EXECUTIVEF
+	db MALE   ; SAGE
+	db FEMALE ; MEDIUM
+	db MALE   ; BOARDER
+	db MALE   ; POKEFANM
+	db FEMALE ; KIMONO_GIRL
+	db FEMALE ; TWINS
+	db FEMALE ; POKEFANF
+	db MALE   ; RED
+	db MALE   ; BLUE
+	db MALE   ; OFFICER
+	db FEMALE ; GRUNTF
+; 11f332
--- /dev/null
+++ b/data/trainers/leaders.asm
@@ -1,0 +1,32 @@
+; These lists determine the battle music and victory music, and whether to
+; award HAPPINESS_GYMBATTLE for winning.
+
+; Note: CHAMPION and RED are unused for battle music checks, since they are
+; accounted for prior to the list check.
+
+GymLeaders:
+	db FALKNER
+	db WHITNEY
+	db BUGSY
+	db MORTY
+	db PRYCE
+	db JASMINE
+	db CHUCK
+	db CLAIR
+	db WILL
+	db BRUNO
+	db KAREN
+	db KOGA
+	db CHAMPION
+	db RED
+; fallthrough
+KantoGymLeaders:
+	db BROCK
+	db MISTY
+	db LT_SURGE
+	db ERIKA
+	db JANINE
+	db SABRINA
+	db BLAINE
+	db BLUE
+	db -1
--- a/data/trainers/palettes.asm
+++ b/data/trainers/palettes.asm
@@ -1,11 +1,9 @@
 TrainerPalettes: ; b0ce
 ; entries correspond to trainer classes
 
-PlayerPalette: ; b0ce
-; Chris uses the same colors as Cal
+PlayerPalette: ; Chris uses the same colors as Cal
 INCLUDE "gfx/trainers/cal.pal"
-KrisPalette: ; b0d0
-; Kris shares Falkner's palette
+KrisPalette: ; Kris shares Falkner's palette
 INCLUDE "gfx/trainers/falkner.pal"
 INCLUDE "gfx/trainers/whitney.pal"
 INCLUDE "gfx/trainers/bugsy.pal"
--- a/data/trainers/parties.asm
+++ b/data/trainers/parties.asm
@@ -35,7 +35,7 @@
 		db GUST
 		db 0
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -63,7 +63,7 @@
 		db STOMP
 		db MILK_DRINK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -97,7 +97,7 @@
 		db FURY_CUTTER
 		db 0
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -137,7 +137,7 @@
 		db MIMIC
 		db NIGHT_SHADE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -171,7 +171,7 @@
 		db MIST
 		db BLIZZARD
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -205,7 +205,7 @@
 		db ROCK_THROW
 		db IRON_TAIL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -233,7 +233,7 @@
 		db SURF
 		db DYNAMICPUNCH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -273,7 +273,7 @@
 		db HYPER_BEAM
 		db DRAGONBREATH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -290,7 +290,7 @@
 	; party
 	db 5, CHIKORITA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -301,7 +301,7 @@
 	; party
 	db 5, CYNDAQUIL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -312,7 +312,7 @@
 	; party
 	db 5, TOTODILE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -325,7 +325,7 @@
 	db 14, ZUBAT
 	db 16, BAYLEEF
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -338,7 +338,7 @@
 	db 14, ZUBAT
 	db 16, QUILAVA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -351,7 +351,7 @@
 	db 14, ZUBAT
 	db 16, CROCONAW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -385,7 +385,7 @@
 		db RAZOR_LEAF
 		db POISONPOWDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -419,7 +419,7 @@
 		db EMBER
 		db QUICK_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -453,7 +453,7 @@
 		db WATER_GUN
 		db BITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -493,7 +493,7 @@
 		db POISONPOWDER
 		db BODY_SLAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -533,7 +533,7 @@
 		db QUICK_ATTACK
 		db FLAME_WHEEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -573,7 +573,7 @@
 		db BITE
 		db SCARY_FACE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -619,7 +619,7 @@
 		db POISONPOWDER
 		db BODY_SLAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -665,7 +665,7 @@
 		db QUICK_ATTACK
 		db FLAME_WHEEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -711,7 +711,7 @@
 		db SCARY_FACE
 		db SLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -763,7 +763,7 @@
 		db CONFUSE_RAY
 		db PSYCHIC_M
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -782,7 +782,7 @@
 	db 10, CYNDAQUIL
 	db 10, TOTODILE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -795,7 +795,7 @@
 	db 30, QUILAVA
 	db 30, CROCONAW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -808,7 +808,7 @@
 	db 50, TYPHLOSION
 	db 50, FERALIGATR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -854,7 +854,7 @@
 		db VITAL_THROW
 		db CROSS_CHOP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -900,7 +900,7 @@
 		db FLAMETHROWER
 		db CRUNCH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -946,7 +946,7 @@
 		db WING_ATTACK
 		db TOXIC
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -998,7 +998,7 @@
 		db OUTRAGE
 		db HYPER_BEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1044,7 +1044,7 @@
 		db ENDURE
 		db GIGA_DRAIN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1084,7 +1084,7 @@
 		db RECOVER
 		db ICE_BEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1130,7 +1130,7 @@
 		db LIGHT_SCREEN
 		db THUNDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1148,7 +1148,7 @@
 	db 22, KOFFING
 	db 22, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1159,7 +1159,7 @@
 	; party
 	db 24, DITTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1172,7 +1172,7 @@
 	db 20, MAGNEMITE
 	db 20, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1185,7 +1185,7 @@
 	db 27, MAGNEMITE
 	db 27, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1201,7 +1201,7 @@
 		db RECOVER
 		db TRI_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1241,7 +1241,7 @@
 		db PETAL_DANCE
 		db SOLARBEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1258,7 +1258,7 @@
 	; party
 	db 4, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1270,7 +1270,7 @@
 	db 2, PIDGEY
 	db 4, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1282,7 +1282,7 @@
 	db 6, RATTATA
 	db 8, ZUBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1293,7 +1293,7 @@
 	; party
 	db 10, WOOPER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1307,7 +1307,7 @@
 	db 8, SPEAROW
 	db 8, SPEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1319,7 +1319,7 @@
 	db 10, MANKEY
 	db 12, DIGLETT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1330,7 +1330,7 @@
 	; party
 	db 15, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1346,7 +1346,7 @@
 		db HYPER_FANG
 		db SCARY_FACE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1357,7 +1357,7 @@
 	; party
 	db 35, FEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1369,7 +1369,7 @@
 	db 33, RATICATE
 	db 33, ARBOK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1380,7 +1380,7 @@
 	; party
 	db 35, GROWLITHE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1392,7 +1392,7 @@
 	db 33, SANDSLASH
 	db 33, CROBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1408,7 +1408,7 @@
 		db HYPER_FANG
 		db PURSUIT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1424,7 +1424,7 @@
 		db HYPER_FANG
 		db PURSUIT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1442,7 +1442,7 @@
 	db 12, ODDISH
 	db 15, VOLTORB
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1456,7 +1456,7 @@
 	db 31, VOLTORB
 	db 31, MAGNETON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1467,7 +1467,7 @@
 	; party
 	db 16, TANGELA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1480,7 +1480,7 @@
 	db 31, WEEPINBELL
 	db 33, VICTREEBEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1493,7 +1493,7 @@
 	db 31, ELECTABUZZ
 	db 31, MAGMAR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1505,7 +1505,7 @@
 	db 32, XATU
 	db 34, ALAKAZAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1516,7 +1516,7 @@
 	; party
 	db 35, ODDISH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1528,7 +1528,7 @@
 	db 33, TANGELA
 	db 33, VAPOREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1542,7 +1542,7 @@
 	db 27, POLIWHIRL
 	db 35, DITTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1553,7 +1553,7 @@
 	; party
 	db 19, MR__MIME
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1565,7 +1565,7 @@
 	db 32, LEDIAN
 	db 32, EXEGGUTOR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1577,7 +1577,7 @@
 	db 32, AIPOM
 	db 32, DITTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1589,7 +1589,7 @@
 	db 14, ODDISH
 	db 17, VOLTORB
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1601,7 +1601,7 @@
 	db 28, GLOOM
 	db 31, ELECTRODE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1613,7 +1613,7 @@
 	db 17, TANGELA
 	db 17, YANMA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1627,7 +1627,7 @@
 	db 20, QUAGSIRE
 	db 25, YANMA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1639,7 +1639,7 @@
 	db 19, MR__MIME
 	db 19, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1651,7 +1651,7 @@
 	db 27, MR__MIME
 	db 31, MAGNETON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1664,7 +1664,7 @@
 	db 33, GROWLITHE
 	db 33, ELECTRODE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1692,7 +1692,7 @@
 		db ACID
 		db MOONLIGHT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1706,7 +1706,7 @@
 	db 30, QUAGSIRE
 	db 30, YANMA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1740,7 +1740,7 @@
 		db AMNESIA
 		db EARTHQUAKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1752,7 +1752,7 @@
 	db 30, MR__MIME
 	db 34, MAGNETON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1774,7 +1774,7 @@
 		db LOCK_ON
 		db SWIFT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -1792,7 +1792,7 @@
 	db 7, PIDGEY
 	db 7, PIDGEY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1803,7 +1803,7 @@
 	; party
 	db 9, SPEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1815,7 +1815,7 @@
 	db 12, PIDGEY
 	db 14, PIDGEOTTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1830,7 +1830,7 @@
 	db 15, PIDGEY
 	db 15, PIDGEY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1843,7 +1843,7 @@
 	db 16, DODUO
 	db 17, DODUO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1856,7 +1856,7 @@
 	db 20, FEAROW
 	db 18, SPEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1868,7 +1868,7 @@
 	db 25, PIDGEOTTO
 	db 25, PIDGEOTTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1880,7 +1880,7 @@
 	db 12, PIDGEY
 	db 34, PIDGEOT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1892,7 +1892,7 @@
 	db 29, FEAROW
 	db 35, FEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1905,7 +1905,7 @@
 	db 28, DODUO
 	db 32, DODRIO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1916,7 +1916,7 @@
 	; party
 	db 34, NOCTOWL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1927,7 +1927,7 @@
 	; party
 	db 36, FARFETCH_D
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1940,7 +1940,7 @@
 	db 6, PIDGEY
 	db 8, SPEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1951,7 +1951,7 @@
 	; party
 	db 34, FARFETCH_D
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1962,7 +1962,7 @@
 	; party
 	db 34, FARFETCH_D
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1974,7 +1974,7 @@
 	db 32, PIDGEOTTO
 	db 32, FEAROW
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -1990,7 +1990,7 @@
 		db FLY
 		db SLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2002,7 +2002,7 @@
 	db 32, PIDGEOTTO
 	db 32, PIDGEOTTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2024,7 +2024,7 @@
 		db STEEL_WING
 		db FLY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -2046,7 +2046,7 @@
 		db BITE
 		db LICK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2059,7 +2059,7 @@
 	db 15, JIGGLYPUFF
 	db 15, JIGGLYPUFF
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2072,7 +2072,7 @@
 	db 34, ARBOK
 	db 30, GLOOM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2084,7 +2084,7 @@
 	db 12, ODDISH
 	db 15, CUBONE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2095,7 +2095,7 @@
 	; party
 	db 21, MARILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2108,7 +2108,7 @@
 	db 32, IVYSAUR
 	db 34, VENUSAUR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2121,7 +2121,7 @@
 	db 31, PIDGEOTTO
 	db 31, BELLOSSOM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2134,7 +2134,7 @@
 	db 29, PARAS
 	db 32, PARASECT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2147,7 +2147,7 @@
 	db 33, HOPPIP
 	db 34, JUMPLUFF
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2169,7 +2169,7 @@
 		db DISABLE
 		db CONFUSION
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2181,7 +2181,7 @@
 	db 30, WIGGLYTUFF
 	db 34, GRANBULL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2192,7 +2192,7 @@
 	; party
 	db 21, MARILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2203,7 +2203,7 @@
 	; party
 	db 21, MARILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2225,7 +2225,7 @@
 		db DISABLE
 		db CONFUSION
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2247,7 +2247,7 @@
 		db THUNDER_WAVE
 		db COTTON_SPORE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2269,7 +2269,7 @@
 		db THUNDER_WAVE
 		db COTTON_SPORE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2291,7 +2291,7 @@
 		db PSYCHIC_M
 		db SCREECH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -2337,7 +2337,7 @@
 		db GUST
 		db PSYCHIC_M
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -2371,7 +2371,7 @@
 		db SLEEP_POWDER
 		db RAZOR_LEAF
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2384,7 +2384,7 @@
 	db 24, CHARMELEON
 	db 24, WARTORTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2397,7 +2397,7 @@
 	db 34, DRATINI
 	db 34, DRATINI
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2409,7 +2409,7 @@
 	db 34, HORSEA
 	db 36, SEADRA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2420,7 +2420,7 @@
 	; party
 	db 37, DRAGONAIR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2448,7 +2448,7 @@
 		db BITE
 		db FIRE_SPIN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2476,7 +2476,7 @@
 		db BITE
 		db FIRE_SPIN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2498,7 +2498,7 @@
 		db SWIFT
 		db SCREECH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2520,7 +2520,7 @@
 		db PSYCH_UP
 		db FURY_SWIPES
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2548,7 +2548,7 @@
 		db BITE
 		db FIRE_SPIN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2576,7 +2576,7 @@
 		db SLEEP_POWDER
 		db SOLARBEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2592,7 +2592,7 @@
 		db SLASH
 		db SWIFT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2605,7 +2605,7 @@
 	db 10, CHARMANDER
 	db 10, SQUIRTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2618,7 +2618,7 @@
 	db 10, CHARMANDER
 	db 10, SQUIRTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2631,7 +2631,7 @@
 	db 10, CHARMANDER
 	db 10, SQUIRTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2644,7 +2644,7 @@
 	db 35, TANGELA
 	db 35, TAUROS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2657,7 +2657,7 @@
 	db 35, CHARMELEON
 	db 35, WARTORTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2670,7 +2670,7 @@
 	db 14, CHARMANDER
 	db 14, SQUIRTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2686,7 +2686,7 @@
 		db RAGE
 		db SCARY_FACE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2702,7 +2702,7 @@
 		db DRAGON_RAGE
 		db SLAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -2722,7 +2722,7 @@
 	db 22, VAPOREON
 	db 22, JOLTEON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2744,7 +2744,7 @@
 		db CONFUSE_RAY
 		db SAFEGUARD
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2755,7 +2755,7 @@
 	; party
 	db 37, SEADRA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2767,7 +2767,7 @@
 	db 34, DRATINI
 	db 36, DRAGONAIR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2779,7 +2779,7 @@
 	db 26, SHELLDER
 	db 28, CLOYSTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2791,7 +2791,7 @@
 	db 22, GOLDEEN
 	db 24, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2804,7 +2804,7 @@
 	db 24, WARTORTLE
 	db 24, WARTORTLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2826,7 +2826,7 @@
 		db SURF
 		db RAIN_DANCE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2842,7 +2842,7 @@
 		db FURY_ATTACK
 		db AGILITY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2855,7 +2855,7 @@
 	db 33, NIDOQUEEN
 	db 31, STARMIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2883,7 +2883,7 @@
 		db RAZOR_LEAF
 		db SWEET_SCENT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2899,7 +2899,7 @@
 		db FURY_ATTACK
 		db AGILITY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2912,7 +2912,7 @@
 	db 35, STARMIE
 	db 35, NINETALES
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2924,7 +2924,7 @@
 	db 38, IVYSAUR
 	db 38, STARMIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2935,7 +2935,7 @@
 	; party
 	db 28, POLIWHIRL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2957,7 +2957,7 @@
 		db ACID
 		db SOLARBEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2969,7 +2969,7 @@
 	db 24, STARYU
 	db 26, STARMIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2985,7 +2985,7 @@
 		db FURY_ATTACK
 		db FIRE_BLAST
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -2998,7 +2998,7 @@
 	db 36, NIDOQUEEN
 	db 34, STARMIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3026,7 +3026,7 @@
 		db WATERFALL
 		db RECOVER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3054,7 +3054,7 @@
 		db WATERFALL
 		db TWISTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -3073,7 +3073,7 @@
 	db 13, SENTRET
 	db 17, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3095,7 +3095,7 @@
 		db BITE
 		db SLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3106,7 +3106,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3117,7 +3117,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3128,7 +3128,7 @@
 	; party
 	db 16, FURRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3140,7 +3140,7 @@
 	db 28, VILEPLUME
 	db 34, BUTTERFREE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3153,7 +3153,7 @@
 	db 32, SEEL
 	db 30, MARILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3164,7 +3164,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3175,7 +3175,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3186,7 +3186,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3197,7 +3197,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3208,7 +3208,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3219,7 +3219,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3232,7 +3232,7 @@
 	db 32, EXEGGCUTE
 	db 35, PARASECT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3243,7 +3243,7 @@
 	; party
 	db 15, SENTRET
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3265,7 +3265,7 @@
 		db TACKLE
 		db STUN_SPORE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3276,7 +3276,7 @@
 	; party
 	db 19, CORSOLA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -3293,7 +3293,7 @@
 	; party
 	db 10, SLOWPOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3305,7 +3305,7 @@
 	db 24, MAROWAK
 	db 24, MAROWAK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3316,7 +3316,7 @@
 	; party
 	db 26, KANGASKHAN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3328,7 +3328,7 @@
 	db 16, NIDORINA
 	db 16, NIDORINO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3339,7 +3339,7 @@
 	; party
 	db 19, SLOWBRO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3350,7 +3350,7 @@
 	; party
 	db 19, LICKITUNG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3361,7 +3361,7 @@
 	; party
 	db 19, NIDOKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3373,7 +3373,7 @@
 	db 31, RHYHORN
 	db 31, RHYDON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3384,7 +3384,7 @@
 	; party
 	db 25, KANGASKHAN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3400,7 +3400,7 @@
 		db CONVERSION2
 		db TRI_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3416,7 +3416,7 @@
 		db CUT
 		db 0
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3428,7 +3428,7 @@
 	db 10, SLOWPOKE
 	db 10, SLOWPOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3439,7 +3439,7 @@
 	; party
 	db 27, RHYHORN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3455,7 +3455,7 @@
 		db EGG_BOMB
 		db SOFTBOILED
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3467,7 +3467,7 @@
 	db 17, NIDOKING
 	db 17, NIDOQUEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -3484,7 +3484,7 @@
 	; party
 	db 14, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3497,7 +3497,7 @@
 	db 9, ZUBAT
 	db 9, ZUBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3509,7 +3509,7 @@
 	db 24, RATICATE
 	db 24, RATICATE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3522,7 +3522,7 @@
 	db 23, GRIMER
 	db 25, MUK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3537,7 +3537,7 @@
 	db 23, RATTATA
 	db 23, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3549,7 +3549,7 @@
 	db 26, ZUBAT
 	db 26, ZUBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3563,7 +3563,7 @@
 	db 23, ZUBAT
 	db 23, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3574,7 +3574,7 @@
 	; party
 	db 26, WEEZING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3586,7 +3586,7 @@
 	db 24, RATICATE
 	db 26, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3599,7 +3599,7 @@
 	db 24, GOLBAT
 	db 22, GRIMER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3612,7 +3612,7 @@
 	db 23, KOFFING
 	db 25, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3623,7 +3623,7 @@
 	; party
 	db 33, HOUNDOUR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3634,7 +3634,7 @@
 	; party
 	db 27, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3646,7 +3646,7 @@
 	db 24, RATICATE
 	db 24, GOLBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3658,7 +3658,7 @@
 	db 26, GRIMER
 	db 23, WEEZING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3672,7 +3672,7 @@
 	db 16, RATTATA
 	db 16, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3683,7 +3683,7 @@
 	; party
 	db 18, GOLBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3696,7 +3696,7 @@
 	db 17, ZUBAT
 	db 17, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3708,7 +3708,7 @@
 	db 18, VENONAT
 	db 18, VENONAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3720,7 +3720,7 @@
 	db 17, DROWZEE
 	db 19, ZUBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3733,7 +3733,7 @@
 	db 17, GRIMER
 	db 18, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3744,7 +3744,7 @@
 	; party
 	db 36, GOLBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3755,7 +3755,7 @@
 	; party
 	db 30, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3767,7 +3767,7 @@
 	db 25, KOFFING
 	db 25, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3779,7 +3779,7 @@
 	db 24, KOFFING
 	db 24, MUK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3791,7 +3791,7 @@
 	db 15, RATTATA
 	db 15, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3802,7 +3802,7 @@
 	; party
 	db 22, ZUBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3813,7 +3813,7 @@
 	; party
 	db 19, RATICATE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3825,7 +3825,7 @@
 	db 9, RATTATA
 	db 9, RATTATA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3838,7 +3838,7 @@
 	db 25, GOLBAT
 	db 30, ARBOK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3849,7 +3849,7 @@
 	; party
 	db 30, GOLBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -3867,7 +3867,7 @@
 	db 18, GROWLITHE
 	db 18, GROWLITHE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3878,7 +3878,7 @@
 	; party
 	db 33, PERSIAN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3890,7 +3890,7 @@
 	db 37, PIKACHU
 	db 33, FLAAFFY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3901,7 +3901,7 @@
 	; party
 	db 20, PONYTA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3912,7 +3912,7 @@
 	; party
 	db 20, NOCTOWL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -3929,7 +3929,7 @@
 	; party
 	db 28, JYNX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3940,7 +3940,7 @@
 	; party
 	db 28, DEWGONG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -3957,7 +3957,7 @@
 	; party
 	db 36, CLEFAIRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3969,7 +3969,7 @@
 	db 32, AIPOM
 	db 36, CUBONE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -3980,7 +3980,7 @@
 	; party
 	db 35, JIGGLYPUFF
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -4014,7 +4014,7 @@
 		db PSYCHIC_M
 		db REFLECT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -4032,7 +4032,7 @@
 	db 3, CATERPIE
 	db 3, CATERPIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4044,7 +4044,7 @@
 	db 32, BEEDRILL
 	db 32, BUTTERFREE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4057,7 +4057,7 @@
 	db 30, BEEDRILL
 	db 30, BEEDRILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4071,7 +4071,7 @@
 	db 3, WEEDLE
 	db 2, CATERPIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4084,7 +4084,7 @@
 	db 9, KAKUNA
 	db 12, BEEDRILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4096,7 +4096,7 @@
 	db 12, CATERPIE
 	db 12, WEEDLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4107,7 +4107,7 @@
 	; party
 	db 13, PARAS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4118,7 +4118,7 @@
 	; party
 	db 15, VENONAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4130,7 +4130,7 @@
 	db 30, ARIADOS
 	db 32, PINSIR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4144,7 +4144,7 @@
 	db 10, KAKUNA
 	db 9, METAPOD
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4158,7 +4158,7 @@
 	db 15, BEEDRILL
 	db 14, BUTTERFREE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4169,7 +4169,7 @@
 	; party
 	db 34, ARIADOS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4180,7 +4180,7 @@
 	; party
 	db 19, VENONAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4196,7 +4196,7 @@
 		db CONFUSION
 		db LEECH_LIFE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4230,7 +4230,7 @@
 		db SUPERSONIC
 		db WHIRLWIND
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4264,7 +4264,7 @@
 		db GUST
 		db WHIRLWIND
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4280,7 +4280,7 @@
 		db PSYBEAM
 		db LEECH_LIFE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4296,7 +4296,7 @@
 		db PSYCHIC_M
 		db TOXIC
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4308,7 +4308,7 @@
 	db 8, LEDYBA
 	db 10, PARAS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -4328,7 +4328,7 @@
 	db 15, MAGIKARP
 	db 5, MAGIKARP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4339,7 +4339,7 @@
 	; party
 	db 10, GOLDEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4350,7 +4350,7 @@
 	; party
 	db 34, TENTACRUEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4363,7 +4363,7 @@
 	db 31, POLIWHIRL
 	db 31, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4375,7 +4375,7 @@
 	db 8, POLIWAG
 	db 8, POLIWAG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4389,7 +4389,7 @@
 	db 15, MAGIKARP
 	db 15, GYARADOS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4400,7 +4400,7 @@
 	; party
 	db 18, QWILFISH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4411,7 +4411,7 @@
 	; party
 	db 27, GYARADOS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4425,7 +4425,7 @@
 	db 22, MAGIKARP
 	db 22, MAGIKARP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4438,7 +4438,7 @@
 	db 23, GOLDEEN
 	db 25, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4460,7 +4460,7 @@
 		db AURORA_BEAM
 		db BUBBLEBEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4474,7 +4474,7 @@
 	db 25, REMORAID
 	db 29, CLOYSTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4486,7 +4486,7 @@
 	db 32, REMORAID
 	db 32, REMORAID
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4500,7 +4500,7 @@
 	db 31, QWILFISH
 	db 31, TENTACRUEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4513,7 +4513,7 @@
 	db 30, GYARADOS
 	db 30, GYARADOS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4524,7 +4524,7 @@
 	; party
 	db 17, GOLDEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4536,7 +4536,7 @@
 	db 17, QWILFISH
 	db 19, GOLDEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4547,7 +4547,7 @@
 	; party
 	db 23, QWILFISH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4560,7 +4560,7 @@
 	db 32, GOLDEEN
 	db 32, QWILFISH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4573,7 +4573,7 @@
 	db 29, GOLDEEN
 	db 32, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4586,7 +4586,7 @@
 	db 30, QWILFISH
 	db 34, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4614,7 +4614,7 @@
 		db BUBBLEBEAM
 		db HYPER_BEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4626,7 +4626,7 @@
 	db 30, QWILFISH
 	db 32, GOLDEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4648,7 +4648,7 @@
 		db FURY_ATTACK
 		db WATERFALL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4676,7 +4676,7 @@
 		db PIN_MISSILE
 		db TAKE_DOWN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -4694,7 +4694,7 @@
 	db 32, REMORAID
 	db 30, SEADRA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4706,7 +4706,7 @@
 	db 20, TENTACOOL
 	db 20, TENTACOOL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4719,7 +4719,7 @@
 	db 20, WARTORTLE
 	db 18, SHELLDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4732,7 +4732,7 @@
 	db 19, TENTACOOL
 	db 19, TENTACRUEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4748,7 +4748,7 @@
 	db 17, TENTACOOL
 	db 19, REMORAID
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4759,7 +4759,7 @@
 	; party
 	db 23, QWILFISH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4771,7 +4771,7 @@
 	db 20, GYARADOS
 	db 20, GYARADOS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4782,7 +4782,7 @@
 	; party
 	db 23, KRABBY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4795,7 +4795,7 @@
 	db 25, DEWGONG
 	db 24, SEEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4807,7 +4807,7 @@
 	db 26, PILOSWINE
 	db 26, PILOSWINE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4820,7 +4820,7 @@
 	db 25, CLOYSTER
 	db 24, SHELLDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4833,7 +4833,7 @@
 	db 15, HORSEA
 	db 20, SEADRA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4846,7 +4846,7 @@
 	db 18, STARMIE
 	db 16, HORSEA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4860,7 +4860,7 @@
 	db 30, TENTACRUEL
 	db 28, GOLDEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4872,7 +4872,7 @@
 	db 30, SHELLDER
 	db 34, CLOYSTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4885,7 +4885,7 @@
 	db 18, STARMIE
 	db 16, HORSEA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4896,7 +4896,7 @@
 	; party
 	db 34, MARILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4909,7 +4909,7 @@
 	db 29, OCTILLERY
 	db 32, QUAGSIRE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4922,7 +4922,7 @@
 	db 18, STARMIE
 	db 16, HORSEA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4935,7 +4935,7 @@
 	db 18, STARMIE
 	db 16, HORSEA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4948,7 +4948,7 @@
 	db 32, HORSEA
 	db 35, SEADRA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -4965,7 +4965,7 @@
 	; party
 	db 21, STARYU
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4977,7 +4977,7 @@
 	db 19, STARYU
 	db 19, SHELLDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -4990,7 +4990,7 @@
 	db 20, GOLDEEN
 	db 20, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5012,7 +5012,7 @@
 		db SUPERSONIC
 		db HORN_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5023,7 +5023,7 @@
 	; party
 	db 22, SEEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5035,7 +5035,7 @@
 	db 20, STARYU
 	db 20, STARMIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5057,7 +5057,7 @@
 		db LEER
 		db WATER_GUN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5068,7 +5068,7 @@
 	; party
 	db 28, JYNX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5079,7 +5079,7 @@
 	; party
 	db 28, DEWGONG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5090,7 +5090,7 @@
 	; party
 	db 20, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5101,7 +5101,7 @@
 	; party
 	db 33, DEWGONG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5112,7 +5112,7 @@
 	; party
 	db 34, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5123,7 +5123,7 @@
 	; party
 	db 20, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5136,7 +5136,7 @@
 	db 29, MARILL
 	db 32, LAPRAS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5148,7 +5148,7 @@
 	db 32, STARMIE
 	db 32, STARMIE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5159,7 +5159,7 @@
 	; party
 	db 20, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5173,7 +5173,7 @@
 	db 28, SEEL
 	db 28, DEWGONG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5184,7 +5184,7 @@
 	; party
 	db 37, GOLDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5196,7 +5196,7 @@
 	db 35, SEAKING
 	db 35, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -5215,7 +5215,7 @@
 	db 17, RATICATE
 	db 19, KRABBY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5227,7 +5227,7 @@
 	db 18, POLIWAG
 	db 18, POLIWHIRL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5238,7 +5238,7 @@
 	; party
 	db 20, POLIWHIRL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5260,7 +5260,7 @@
 		db VICEGRIP
 		db HARDEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5273,7 +5273,7 @@
 	db 18, MACHOP
 	db 18, POLIWHIRL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5285,7 +5285,7 @@
 	db 32, RATICATE
 	db 32, RATICATE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5296,7 +5296,7 @@
 	; party
 	db 34, KINGLER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5310,7 +5310,7 @@
 	db 28, POLIWRATH
 	db 28, MACHOP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5323,7 +5323,7 @@
 	db 33, MACHOKE
 	db 26, PSYDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5334,7 +5334,7 @@
 	; party
 	db 19, WOOPER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5346,7 +5346,7 @@
 	db 28, POLIWHIRL
 	db 28, POLIWHIRL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5358,7 +5358,7 @@
 	db 34, POLIWHIRL
 	db 34, POLIWRATH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5380,7 +5380,7 @@
 		db ICE_PUNCH
 		db SUBMISSION
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -5397,7 +5397,7 @@
 	; party
 	db 20, GRIMER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5409,7 +5409,7 @@
 	db 11, GRIMER
 	db 11, GRIMER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5422,7 +5422,7 @@
 	db 20, MAGNEMITE
 	db 20, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5434,7 +5434,7 @@
 	db 22, KOFFING
 	db 22, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5445,7 +5445,7 @@
 	; party
 	db 24, DITTO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5457,7 +5457,7 @@
 	db 34, GRIMER
 	db 34, MUK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5470,7 +5470,7 @@
 	db 32, MAGNEMITE
 	db 32, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5481,7 +5481,7 @@
 	; party
 	db 36, PORYGON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5494,7 +5494,7 @@
 	db 33, MUK
 	db 31, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5508,7 +5508,7 @@
 	db 7, MAGNEMITE
 	db 9, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5521,7 +5521,7 @@
 	db 27, MAGNEMITE
 	db 27, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5537,7 +5537,7 @@
 		db RECOVER
 		db TRI_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5553,7 +5553,7 @@
 		db SURF
 		db WATERFALL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5569,7 +5569,7 @@
 		db GROWL
 		db STRENGTH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -5621,7 +5621,7 @@
 		db BODY_SLAM
 		db LIGHT_SCREEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5667,7 +5667,7 @@
 		db FLAME_WHEEL
 		db SWIFT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5713,7 +5713,7 @@
 		db SCARY_FACE
 		db SLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5759,7 +5759,7 @@
 		db LIGHT_SCREEN
 		db SAFEGUARD
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5805,7 +5805,7 @@
 		db FIRE_BLAST
 		db SWIFT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5851,7 +5851,7 @@
 		db SLASH
 		db SCREECH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -5868,7 +5868,7 @@
 	; party
 	db 34, ELECTABUZZ
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5882,7 +5882,7 @@
 	db 32, MAGNEMITE
 	db 32, MAGNEMITE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -5900,7 +5900,7 @@
 	db 16, GEODUDE
 	db 18, MACHAMP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5913,7 +5913,7 @@
 	db 6, GEODUDE
 	db 8, GEODUDE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5926,7 +5926,7 @@
 	db 23, GEODUDE
 	db 23, GRAVELER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5938,7 +5938,7 @@
 	db 23, GEODUDE
 	db 25, MACHOP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5950,7 +5950,7 @@
 	db 11, GEODUDE
 	db 11, MACHOP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5963,7 +5963,7 @@
 	db 14, GEODUDE
 	db 16, DUGTRIO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5976,7 +5976,7 @@
 	db 27, GRAVELER
 	db 27, MACHOP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -5989,7 +5989,7 @@
 	db 25, GRAVELER
 	db 25, GOLEM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6001,7 +6001,7 @@
 	db 35, ONIX
 	db 33, SWINUB
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6023,7 +6023,7 @@
 		db SAND_ATTACK
 		db SLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6038,7 +6038,7 @@
 	db 13, GEODUDE
 	db 13, GEODUDE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6051,7 +6051,7 @@
 	db 27, GRAVELER
 	db 29, MACHOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6064,7 +6064,7 @@
 	db 31, GRAVELER
 	db 31, GRAVELER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6076,7 +6076,7 @@
 	db 31, SANDSLASH
 	db 33, GOLEM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6088,7 +6088,7 @@
 	db 34, DUGTRIO
 	db 32, ONIX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6102,7 +6102,7 @@
 	db 31, GOLEM
 	db 29, GRAVELER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6113,7 +6113,7 @@
 	; party
 	db 35, MACHAMP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6124,7 +6124,7 @@
 	; party
 	db 11, ONIX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6152,7 +6152,7 @@
 		db SANDSTORM
 		db SLAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6163,7 +6163,7 @@
 	; party
 	db 29, ONIX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6176,7 +6176,7 @@
 	db 30, GRAVELER
 	db 32, MACHOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6204,7 +6204,7 @@
 		db HEADBUTT
 		db DIG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6223,7 +6223,7 @@
 	db 20, KOFFING
 	db 20, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6236,7 +6236,7 @@
 	db 20, KOFFING
 	db 20, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6250,7 +6250,7 @@
 	db 29, KOFFING
 	db 30, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6261,7 +6261,7 @@
 	; party
 	db 34, FLAREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6273,7 +6273,7 @@
 	db 32, KOFFING
 	db 32, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6286,7 +6286,7 @@
 	db 30, CHARMELEON
 	db 30, WEEZING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6297,7 +6297,7 @@
 	; party
 	db 34, WEEZING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6309,7 +6309,7 @@
 	db 32, MAGMAR
 	db 32, MAGMAR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6322,7 +6322,7 @@
 	db 30, MAGMAR
 	db 32, WEEZING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6356,7 +6356,7 @@
 		db FURY_ATTACK
 		db FIRE_BLAST
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6375,7 +6375,7 @@
 	db 25, MAGMAR
 	db 23, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6397,7 +6397,7 @@
 		db SLUDGE
 		db SMOKESCREEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6411,7 +6411,7 @@
 	db 25, KOFFING
 	db 30, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6430,7 +6430,7 @@
 	db 32, WEEZING
 	db 29, MAGMAR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6441,7 +6441,7 @@
 	; party
 	db 17, CHARMELEON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6454,7 +6454,7 @@
 	db 16, GROWLITHE
 	db 15, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6466,7 +6466,7 @@
 	db 32, KOFFING
 	db 32, SLUGMA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6478,7 +6478,7 @@
 	db 6, KOFFING
 	db 6, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6490,7 +6490,7 @@
 	db 11, MAGMAR
 	db 13, MAGMAR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6501,7 +6501,7 @@
 	; party
 	db 9, VULPIX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6514,7 +6514,7 @@
 	db 31, FLAREON
 	db 28, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6534,7 +6534,7 @@
 	db 10, VOLTORB
 	db 14, VOLTORB
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6547,7 +6547,7 @@
 	db 29, MAGMAR
 	db 29, MACHOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6561,7 +6561,7 @@
 	db 33, ELECTRODE
 	db 33, ELECTRODE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6575,7 +6575,7 @@
 	db 14, VOLTORB
 	db 18, VOLTORB
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6589,7 +6589,7 @@
 	db 26, VOLTORB
 	db 30, ELECTRODE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6603,7 +6603,7 @@
 	db 26, VOLTORB
 	db 30, ELECTRODE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6623,7 +6623,7 @@
 	db 27, ONIX
 	db 32, MACHOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6639,7 +6639,7 @@
 		db JUMP_KICK
 		db FOCUS_ENERGY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6673,7 +6673,7 @@
 		db MUD_SLAP
 		db SWIFT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6689,7 +6689,7 @@
 		db ICE_PUNCH
 		db FIRE_PUNCH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6711,7 +6711,7 @@
 		db SEISMIC_TOSS
 		db ROCK_SLIDE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6723,7 +6723,7 @@
 	db 34, HITMONLEE
 	db 34, HITMONCHAN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6736,7 +6736,7 @@
 	db 23, MANKEY
 	db 25, PRIMEAPE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6747,7 +6747,7 @@
 	; party
 	db 28, MACHOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6760,7 +6760,7 @@
 	db 32, MACHOKE
 	db 34, MACHOKE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6794,7 +6794,7 @@
 		db BITE
 		db FAINT_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6810,7 +6810,7 @@
 		db CONFUSE_RAY
 		db WING_ATTACK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6856,7 +6856,7 @@
 		db SLUDGE
 		db SMOKESCREEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6869,7 +6869,7 @@
 	db 24, RATICATE
 	db 22, KOFFING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -6886,7 +6886,7 @@
 	; party
 	db 26, GIRAFARIG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6897,7 +6897,7 @@
 	; party
 	db 37, KADABRA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6910,7 +6910,7 @@
 	db 30, EXEGGCUTE
 	db 30, EXEGGUTOR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6921,7 +6921,7 @@
 	; party
 	db 34, XATU
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6937,7 +6937,7 @@
 		db DREAM_EATER
 		db 0
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6959,7 +6959,7 @@
 		db WATER_GUN
 		db CONFUSION
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -6987,7 +6987,7 @@
 		db CONFUSION
 		db 0
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7009,7 +7009,7 @@
 		db RECOVER
 		db FUTURE_SIGHT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7020,7 +7020,7 @@
 	; party
 	db 36, ESPEON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7033,7 +7033,7 @@
 	db 30, EXEGGCUTE
 	db 34, GIRAFARIG
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7046,7 +7046,7 @@
 	db 32, EXEGGCUTE
 	db 35, EXEGGCUTE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7058,7 +7058,7 @@
 	db 29, DROWZEE
 	db 33, HYPNO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -7075,7 +7075,7 @@
 	; party
 	db 9, NIDORAN_F
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7088,7 +7088,7 @@
 	db 9, HOPPIP
 	db 12, BULBASAUR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7104,7 +7104,7 @@
 		db QUICK_ATTACK
 		db DOUBLE_TEAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7115,7 +7115,7 @@
 	; party
 	db 15, VULPIX
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7126,7 +7126,7 @@
 	; party
 	db 36, NIDOQUEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7137,7 +7137,7 @@
 	; party
 	db 34, FLAAFFY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7149,7 +7149,7 @@
 	db 31, FURRET
 	db 33, RAPIDASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7160,7 +7160,7 @@
 	; party
 	db 33, SEAKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7173,7 +7173,7 @@
 	db 14, HOPPIP
 	db 17, IVYSAUR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7185,7 +7185,7 @@
 	db 16, PONYTA
 	db 16, PONYTA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7197,7 +7197,7 @@
 	db 15, WEEPINBELL
 	db 15, NIDORINA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7210,7 +7210,7 @@
 	db 19, NIDORINO
 	db 21, NIDOQUEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7222,7 +7222,7 @@
 	db 32, SKIPLOOM
 	db 32, SKIPLOOM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7234,7 +7234,7 @@
 	db 30, NIDORINA
 	db 34, RAICHU
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7247,7 +7247,7 @@
 	db 26, SKIPLOOM
 	db 29, IVYSAUR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7263,7 +7263,7 @@
 		db DOUBLESLAP
 		db MINIMIZE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7279,7 +7279,7 @@
 		db MINIMIZE
 		db METRONOME
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7291,7 +7291,7 @@
 	db 32, PONYTA
 	db 32, PONYTA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7302,7 +7302,7 @@
 	; party
 	db 37, EXEGGUTOR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7318,7 +7318,7 @@
 		db DOUBLESLAP
 		db MINIMIZE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7346,7 +7346,7 @@
 		db FIRE_SPIN
 		db SUNNY_DAY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7359,7 +7359,7 @@
 	db 26, NIDORINO
 	db 26, NIDOQUEEN
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7387,7 +7387,7 @@
 		db TAIL_WHIP
 		db BODY_SLAM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7400,7 +7400,7 @@
 	db 30, SKIPLOOM
 	db 32, IVYSAUR
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7428,7 +7428,7 @@
 		db HEADBUTT
 		db MUD_SLAP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7444,7 +7444,7 @@
 		db MOONLIGHT
 		db MINIMIZE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -7461,7 +7461,7 @@
 	; party
 	db 9, NIDORAN_M
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7472,7 +7472,7 @@
 	; party
 	db 14, PSYDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7485,7 +7485,7 @@
 	db 10, ZUBAT
 	db 14, DIGLETT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7497,7 +7497,7 @@
 	db 13, SANDSHREW
 	db 15, MARILL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7508,7 +7508,7 @@
 	; party
 	db 36, NIDOKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7519,7 +7519,7 @@
 	; party
 	db 34, NIDOKING
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7531,7 +7531,7 @@
 	db 33, GOLDUCK
 	db 31, SANDSLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7544,7 +7544,7 @@
 	db 29, PRIMEAPE
 	db 29, POLIWRATH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7555,7 +7555,7 @@
 	; party
 	db 15, NIDORINO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7566,7 +7566,7 @@
 	; party
 	db 15, NIDORINO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7577,7 +7577,7 @@
 	; party
 	db 17, MANKEY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7590,7 +7590,7 @@
 	db 17, GEODUDE
 	db 23, PSYDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7603,7 +7603,7 @@
 	db 23, GEODUDE
 	db 26, PSYDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7617,7 +7617,7 @@
 	db 40, GOLBAT
 	db 42, GOLDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7631,7 +7631,7 @@
 	db 40, GOLBAT
 	db 42, GOLDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7645,7 +7645,7 @@
 	db 40, GOLBAT
 	db 42, GOLDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7659,7 +7659,7 @@
 	db 40, GOLBAT
 	db 42, GOLDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7670,7 +7670,7 @@
 	; party
 	db 37, SANDSLASH
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7683,7 +7683,7 @@
 	db 17, SANDSLASH
 	db 19, ZUBAT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7697,7 +7697,7 @@
 	db 30, SLUGMA
 	db 32, PSYDUCK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7731,7 +7731,7 @@
 		db SURF
 		db PSYCH_UP
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7744,7 +7744,7 @@
 	db 30, PRIMEAPE
 	db 30, TAUROS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -7778,7 +7778,7 @@
 		db HAZE
 		db NIGHT_SHADE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7806,7 +7806,7 @@
 		db HAZE
 		db 0
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -7825,7 +7825,7 @@
 	db 3, BELLSPROUT
 	db 3, BELLSPROUT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7838,7 +7838,7 @@
 	db 3, BELLSPROUT
 	db 3, BELLSPROUT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7849,7 +7849,7 @@
 	; party
 	db 6, BELLSPROUT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7861,7 +7861,7 @@
 	db 7, BELLSPROUT
 	db 7, HOOTHOOT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7872,7 +7872,7 @@
 	; party
 	db 22, HAUNTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7887,7 +7887,7 @@
 	db 16, GASTLY
 	db 16, GASTLY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7900,7 +7900,7 @@
 	db 3, BELLSPROUT
 	db 3, BELLSPROUT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7911,7 +7911,7 @@
 	; party
 	db 6, BELLSPROUT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7924,7 +7924,7 @@
 	db 7, BELLSPROUT
 	db 10, HOOTHOOT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7936,7 +7936,7 @@
 	db 32, NOCTOWL
 	db 32, FLAREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7948,7 +7948,7 @@
 	db 32, NOCTOWL
 	db 32, JOLTEON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7960,7 +7960,7 @@
 	db 32, NOCTOWL
 	db 32, VAPOREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -7979,7 +7979,7 @@
 	db 20, HAUNTER
 	db 20, GASTLY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -7991,7 +7991,7 @@
 	db 20, HAUNTER
 	db 20, HAUNTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8002,7 +8002,7 @@
 	; party
 	db 25, HAUNTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8013,7 +8013,7 @@
 	; party
 	db 25, HAUNTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8024,7 +8024,7 @@
 	; party
 	db 25, HAUNTER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8036,7 +8036,7 @@
 	db 35, DROWZEE
 	db 35, HYPNO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8048,7 +8048,7 @@
 	db 34, SLOWPOKE
 	db 36, SLOWBRO
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8067,7 +8067,7 @@
 	db 25, DEWGONG
 	db 24, SEEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8079,7 +8079,7 @@
 	db 26, SWINUB
 	db 26, SWINUB
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8092,7 +8092,7 @@
 	db 25, CLOYSTER
 	db 24, SHELLDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8109,7 +8109,7 @@
 	; party
 	db 14, RAICHU, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8120,7 +8120,7 @@
 	; party
 	db 17, PIKACHU, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8131,7 +8131,7 @@
 	; party
 	db 33, QUAGSIRE, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8147,7 +8147,7 @@
 	db 23, PIKACHU, BERRY
 	db 23, PIKACHU, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8160,7 +8160,7 @@
 	db 29, CHARMANDER, BERRY
 	db 29, SQUIRTLE, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8171,7 +8171,7 @@
 	; party
 	db 33, PSYDUCK, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8182,7 +8182,7 @@
 	; party
 	db 13, SNUBBULL, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8195,7 +8195,7 @@
 	db 28, MEOWTH, BERRY
 	db 28, MEOWTH, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8206,7 +8206,7 @@
 	; party
 	db 32, DELIBIRD, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8217,7 +8217,7 @@
 	; party
 	db 19, PIKACHU, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8228,7 +8228,7 @@
 	; party
 	db 36, PIKACHU, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8241,7 +8241,7 @@
 	db 29, SLOWKING, BERRY
 	db 29, SEAKING, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8252,7 +8252,7 @@
 	; party
 	db 35, PHANPY, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8263,7 +8263,7 @@
 	; party
 	db 35, TEDDIURSA, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8282,7 +8282,7 @@
 	db 20, VULPIX
 	db 18, SKIPLOOM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8293,7 +8293,7 @@
 	; party
 	db 17, FLAREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8304,7 +8304,7 @@
 	; party
 	db 17, ESPEON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8315,7 +8315,7 @@
 	; party
 	db 17, UMBREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8326,7 +8326,7 @@
 	; party
 	db 17, VAPOREON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8337,7 +8337,7 @@
 	; party
 	db 17, JOLTEON
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8355,7 +8355,7 @@
 	db 10, SPINARAK
 	db 10, LEDYBA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8377,7 +8377,7 @@
 		db POUND
 		db DISABLE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8399,7 +8399,7 @@
 		db DOUBLESLAP
 		db METRONOME
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8411,7 +8411,7 @@
 	db 10, LEDYBA
 	db 10, SPINARAK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8423,7 +8423,7 @@
 	db 35, VICTREEBEL
 	db 35, VILEPLUME
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8435,7 +8435,7 @@
 	db 35, VILEPLUME
 	db 35, VICTREEBEL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8447,7 +8447,7 @@
 	db 31, TEDDIURSA
 	db 31, PHANPY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8459,7 +8459,7 @@
 	db 31, PHANPY
 	db 31, TEDDIURSA
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8481,7 +8481,7 @@
 		db ICE_BEAM
 		db HEADBUTT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8503,7 +8503,7 @@
 		db FLAMETHROWER
 		db HEADBUTT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8520,7 +8520,7 @@
 	; party
 	db 14, SNUBBULL, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8531,7 +8531,7 @@
 	; party
 	db 17, PIKACHU, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8542,7 +8542,7 @@
 	; party
 	db 18, SNUBBULL, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8553,7 +8553,7 @@
 	; party
 	db 30, GRANBULL, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8568,7 +8568,7 @@
 	db 28, FURRET, BERRY
 	db 23, SENTRET, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8579,7 +8579,7 @@
 	; party
 	db 16, MEOWTH, BERRY
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8631,7 +8631,7 @@
 		db BLIZZARD
 		db WHIRLPOOL
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8683,7 +8683,7 @@
 		db FLAMETHROWER
 		db EXTREMESPEED
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8700,7 +8700,7 @@
 	; party
 	db 17, GROWLITHE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8712,7 +8712,7 @@
 	db 14, GROWLITHE
 	db 14, GROWLITHE
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8730,7 +8730,7 @@
 	db 9, ZUBAT
 	db 11, EKANS
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8741,7 +8741,7 @@
 	; party
 	db 26, ARBOK
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8753,7 +8753,7 @@
 	db 25, GLOOM
 	db 25, GLOOM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8767,7 +8767,7 @@
 	db 21, EKANS
 	db 24, GLOOM
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 
@@ -8789,7 +8789,7 @@
 		db STUN_SPORE
 		db SLEEP_POWDER
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
@@ -8823,7 +8823,7 @@
 		db THUNDER
 		db ROLLOUT
 
-	db $ff ; end
+	db -1 ; end
 
 ; ================
 ; ================================
--- a/data/trainers/party_pointers.asm
+++ b/data/trainers/party_pointers.asm
@@ -1,6 +1,7 @@
-; Each trainer class has its own group. See trainers.asm.
+; Groups are defined in data/trainers/parties.asm.
 
 TrainerGroups: ; 0x39999
+; entries correspond to trainer classes (see constants/trainer_constants.asm)
 	dw FalknerGroup
 	dw WhitneyGroup
 	dw BugsyGroup
--- a/data/trainers/pic_pointers.asm
+++ b/data/trainers/pic_pointers.asm
@@ -1,3 +1,5 @@
+; Pics are defined in gfx/pics.asm
+
 TrainerPicPointers::
 ; entries correspond to trainer classes (see constants/trainer_constants.asm)
 	dba_pic FalknerPic
--- /dev/null
+++ b/data/trainers/sprites.asm
@@ -1,0 +1,68 @@
+BTTrainerClassSprites:
+; entries correspond to trainer classes
+	db SPRITE_FALKNER
+	db SPRITE_WHITNEY
+	db SPRITE_BUGSY
+	db SPRITE_MORTY
+	db SPRITE_PRYCE
+	db SPRITE_JASMINE
+	db SPRITE_CHUCK
+	db SPRITE_CLAIR
+	db SPRITE_SILVER
+	db SPRITE_OAK
+	db SPRITE_WILL
+	db SPRITE_CHRIS
+	db SPRITE_BRUNO
+	db SPRITE_KAREN
+	db SPRITE_KOGA
+	db SPRITE_LANCE
+	db SPRITE_BROCK
+	db SPRITE_MISTY
+	db SPRITE_SURGE
+	db SPRITE_SCIENTIST
+	db SPRITE_ERIKA
+	db SPRITE_YOUNGSTER
+	db SPRITE_YOUNGSTER
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_JANINE
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_BUENA
+	db SPRITE_SUPER_NERD
+	db SPRITE_ROCKET
+	db SPRITE_GENTLEMAN
+	db SPRITE_BUENA
+	db SPRITE_TEACHER
+	db SPRITE_SABRINA
+	db SPRITE_BUG_CATCHER
+	db SPRITE_FISHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SAILOR
+	db SPRITE_SUPER_NERD
+	db SPRITE_BLUE
+	db SPRITE_ROCKER
+	db SPRITE_POKEFAN_M
+	db SPRITE_BIKER
+	db SPRITE_BLAINE
+	db SPRITE_PHARMACIST
+	db SPRITE_FISHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BLACK_BELT
+	db SPRITE_ROCKET
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_YOUNGSTER
+	db SPRITE_ROCKET_GIRL
+	db SPRITE_SAGE
+	db SPRITE_GRANNY
+	db SPRITE_ROCKER
+	db SPRITE_POKEFAN_M
+	db SPRITE_KIMONO_GIRL
+	db SPRITE_TWIN
+	db SPRITE_POKEFAN_F
+	db SPRITE_RED
+	db SPRITE_BLUE
+	db SPRITE_OFFICER
+	db SPRITE_ROCKET_GIRL
--- a/data/type_matchups.asm
+++ /dev/null
@@ -1,125 +1,0 @@
-; The multiplier is divided by 10, so we can use values like 0.5.
-; All other cases are neutral (1x).
-SUPER_EFFECTIVE    EQU 20
-NOT_VERY_EFFECTIVE EQU 05
-NO_EFFECT          EQU 00
-
-TypeMatchups: ; 34bb1
-	;  attacker,  defender,  *=
-	db NORMAL,    ROCK,      NOT_VERY_EFFECTIVE
-	db NORMAL,    STEEL,     NOT_VERY_EFFECTIVE
-	db FIRE,      FIRE,      NOT_VERY_EFFECTIVE
-	db FIRE,      WATER,     NOT_VERY_EFFECTIVE
-	db FIRE,      GRASS,     SUPER_EFFECTIVE
-	db FIRE,      ICE,       SUPER_EFFECTIVE
-	db FIRE,      BUG,       SUPER_EFFECTIVE
-	db FIRE,      ROCK,      NOT_VERY_EFFECTIVE
-	db FIRE,      DRAGON,    NOT_VERY_EFFECTIVE
-	db FIRE,      STEEL,     SUPER_EFFECTIVE
-	db WATER,     FIRE,      SUPER_EFFECTIVE
-	db WATER,     WATER,     NOT_VERY_EFFECTIVE
-	db WATER,     GRASS,     NOT_VERY_EFFECTIVE
-	db WATER,     GROUND,    SUPER_EFFECTIVE
-	db WATER,     ROCK,      SUPER_EFFECTIVE
-	db WATER,     DRAGON,    NOT_VERY_EFFECTIVE
-	db ELECTRIC,  WATER,     SUPER_EFFECTIVE
-	db ELECTRIC,  ELECTRIC,  NOT_VERY_EFFECTIVE
-	db ELECTRIC,  GRASS,     NOT_VERY_EFFECTIVE
-	db ELECTRIC,  GROUND,    NO_EFFECT
-	db ELECTRIC,  FLYING,    SUPER_EFFECTIVE
-	db ELECTRIC,  DRAGON,    NOT_VERY_EFFECTIVE
-	db GRASS,     FIRE,      NOT_VERY_EFFECTIVE
-	db GRASS,     WATER,     SUPER_EFFECTIVE
-	db GRASS,     GRASS,     NOT_VERY_EFFECTIVE
-	db GRASS,     POISON,    NOT_VERY_EFFECTIVE
-	db GRASS,     GROUND,    SUPER_EFFECTIVE
-	db GRASS,     FLYING,    NOT_VERY_EFFECTIVE
-	db GRASS,     BUG,       NOT_VERY_EFFECTIVE
-	db GRASS,     ROCK,      SUPER_EFFECTIVE
-	db GRASS,     DRAGON,    NOT_VERY_EFFECTIVE
-	db GRASS,     STEEL,     NOT_VERY_EFFECTIVE
-	db ICE,       WATER,     NOT_VERY_EFFECTIVE
-	db ICE,       GRASS,     SUPER_EFFECTIVE
-	db ICE,       ICE,       NOT_VERY_EFFECTIVE
-	db ICE,       GROUND,    SUPER_EFFECTIVE
-	db ICE,       FLYING,    SUPER_EFFECTIVE
-	db ICE,       DRAGON,    SUPER_EFFECTIVE
-	db ICE,       STEEL,     NOT_VERY_EFFECTIVE
-	db ICE,       FIRE,      NOT_VERY_EFFECTIVE
-	db FIGHTING,  NORMAL,    SUPER_EFFECTIVE
-	db FIGHTING,  ICE,       SUPER_EFFECTIVE
-	db FIGHTING,  POISON,    NOT_VERY_EFFECTIVE
-	db FIGHTING,  FLYING,    NOT_VERY_EFFECTIVE
-	db FIGHTING,  PSYCHIC,   NOT_VERY_EFFECTIVE
-	db FIGHTING,  BUG,       NOT_VERY_EFFECTIVE
-	db FIGHTING,  ROCK,      SUPER_EFFECTIVE
-	db FIGHTING,  DARK,      SUPER_EFFECTIVE
-	db FIGHTING,  STEEL,     SUPER_EFFECTIVE
-	db POISON,    GRASS,     SUPER_EFFECTIVE
-	db POISON,    POISON,    NOT_VERY_EFFECTIVE
-	db POISON,    GROUND,    NOT_VERY_EFFECTIVE
-	db POISON,    ROCK,      NOT_VERY_EFFECTIVE
-	db POISON,    GHOST,     NOT_VERY_EFFECTIVE
-	db POISON,    STEEL,     NO_EFFECT
-	db GROUND,    FIRE,      SUPER_EFFECTIVE
-	db GROUND,    ELECTRIC,  SUPER_EFFECTIVE
-	db GROUND,    GRASS,     NOT_VERY_EFFECTIVE
-	db GROUND,    POISON,    SUPER_EFFECTIVE
-	db GROUND,    FLYING,    NO_EFFECT
-	db GROUND,    BUG,       NOT_VERY_EFFECTIVE
-	db GROUND,    ROCK,      SUPER_EFFECTIVE
-	db GROUND,    STEEL,     SUPER_EFFECTIVE
-	db FLYING,    ELECTRIC,  NOT_VERY_EFFECTIVE
-	db FLYING,    GRASS,     SUPER_EFFECTIVE
-	db FLYING,    FIGHTING,  SUPER_EFFECTIVE
-	db FLYING,    BUG,       SUPER_EFFECTIVE
-	db FLYING,    ROCK,      NOT_VERY_EFFECTIVE
-	db FLYING,    STEEL,     NOT_VERY_EFFECTIVE
-	db PSYCHIC,   FIGHTING,  SUPER_EFFECTIVE
-	db PSYCHIC,   POISON,    SUPER_EFFECTIVE
-	db PSYCHIC,   PSYCHIC,   NOT_VERY_EFFECTIVE
-	db PSYCHIC,   DARK,      NO_EFFECT
-	db PSYCHIC,   STEEL,     NOT_VERY_EFFECTIVE
-	db BUG,       FIRE,      NOT_VERY_EFFECTIVE
-	db BUG,       GRASS,     SUPER_EFFECTIVE
-	db BUG,       FIGHTING,  NOT_VERY_EFFECTIVE
-	db BUG,       POISON,    NOT_VERY_EFFECTIVE
-	db BUG,       FLYING,    NOT_VERY_EFFECTIVE
-	db BUG,       PSYCHIC,   SUPER_EFFECTIVE
-	db BUG,       GHOST,     NOT_VERY_EFFECTIVE
-	db BUG,       DARK,      SUPER_EFFECTIVE
-	db BUG,       STEEL,     NOT_VERY_EFFECTIVE
-	db ROCK,      FIRE,      SUPER_EFFECTIVE
-	db ROCK,      ICE,       SUPER_EFFECTIVE
-	db ROCK,      FIGHTING,  NOT_VERY_EFFECTIVE
-	db ROCK,      GROUND,    NOT_VERY_EFFECTIVE
-	db ROCK,      FLYING,    SUPER_EFFECTIVE
-	db ROCK,      BUG,       SUPER_EFFECTIVE
-	db ROCK,      STEEL,     NOT_VERY_EFFECTIVE
-	db GHOST,     NORMAL,    NO_EFFECT
-	db GHOST,     PSYCHIC,   SUPER_EFFECTIVE
-	db GHOST,     DARK,      NOT_VERY_EFFECTIVE
-	db GHOST,     STEEL,     NOT_VERY_EFFECTIVE
-	db GHOST,     GHOST,     SUPER_EFFECTIVE
-	db DRAGON,    DRAGON,    SUPER_EFFECTIVE
-	db DRAGON,    STEEL,     NOT_VERY_EFFECTIVE
-	db DARK,      FIGHTING,  NOT_VERY_EFFECTIVE
-	db DARK,      PSYCHIC,   SUPER_EFFECTIVE
-	db DARK,      GHOST,     SUPER_EFFECTIVE
-	db DARK,      DARK,      NOT_VERY_EFFECTIVE
-	db DARK,      STEEL,     NOT_VERY_EFFECTIVE
-	db STEEL,     FIRE,      NOT_VERY_EFFECTIVE
-	db STEEL,     WATER,     NOT_VERY_EFFECTIVE
-	db STEEL,     ELECTRIC,  NOT_VERY_EFFECTIVE
-	db STEEL,     ICE,       SUPER_EFFECTIVE
-	db STEEL,     ROCK,      SUPER_EFFECTIVE
-	db STEEL,     STEEL,     NOT_VERY_EFFECTIVE
-
-	db $fe ; end
-
-; Foresight removes Ghost's immunities.
-	db NORMAL,    GHOST,     NO_EFFECT
-	db FIGHTING,  GHOST,     NO_EFFECT
-
-	db $ff ; end (with Foresight)
-; 34cfd
--- a/data/type_names.asm
+++ /dev/null
@@ -1,50 +1,0 @@
-TypeNames: ; 5097b
-; entries correspond to types (see constants/type_constants.asm)
-	dw Normal
-	dw Fighting
-	dw Flying
-	dw Poison
-	dw Ground
-	dw Rock
-	dw Bird
-	dw Bug
-	dw Ghost
-	dw Steel
-	dw Normal
-	dw Normal
-	dw Normal
-	dw Normal
-	dw Normal
-	dw Normal
-	dw Normal
-	dw Normal
-	dw Normal
-	dw CurseType
-	dw Fire
-	dw Water
-	dw Grass
-	dw Electric
-	dw Psychic
-	dw Ice
-	dw Dragon
-	dw Dark
-
-Normal:    db "NORMAL@"
-Fighting:  db "FIGHTING@"
-Flying:    db "FLYING@"
-Poison:    db "POISON@"
-CurseType: db "???@"
-Fire:      db "FIRE@"
-Water:     db "WATER@"
-Grass:     db "GRASS@"
-Electric:  db "ELECTRIC@"
-Psychic:   db "PSYCHIC@"
-Ice:       db "ICE@"
-Ground:    db "GROUND@"
-Rock:      db "ROCK@"
-Bird:      db "BIRD@"
-Bug:       db "BUG@"
-Ghost:     db "GHOST@"
-Steel:     db "STEEL@"
-Dragon:    db "DRAGON@"
-Dark:      db "DARK@"
--- /dev/null
+++ b/data/types/names.asm
@@ -1,0 +1,52 @@
+TypeNames: ; 5097b
+; entries correspond to types (see constants/type_constants.asm)
+	dw Normal
+	dw Fighting
+	dw Flying
+	dw Poison
+	dw Ground
+	dw Rock
+	dw Bird
+	dw Bug
+	dw Ghost
+	dw Steel
+	dw Normal
+	dw Normal
+	dw Normal
+	dw Normal
+	dw Normal
+	dw Normal
+	dw Normal
+	dw Normal
+	dw Normal
+	dw CurseType
+	dw Fire
+	dw Water
+	dw Grass
+	dw Electric
+	dw Psychic
+	dw Ice
+	dw Dragon
+	dw Dark
+
+Normal:    db "NORMAL@"
+Fighting:  db "FIGHTING@"
+Flying:    db "FLYING@"
+Poison:    db "POISON@"
+CurseType: db "???@"
+Fire:      db "FIRE@"
+Water:     db "WATER@"
+Grass:     db "GRASS@"
+Electric:  db "ELECTRIC@"
+Psychic:   db "PSYCHIC@"
+Ice:       db "ICE@"
+Ground:    db "GROUND@"
+Rock:      db "ROCK@"
+Bird:      db "BIRD@"
+Bug:       db "BUG@"
+Ghost:     db "GHOST@"
+Steel:     db "STEEL@"
+Dragon:    db "DRAGON@"
+Dark:      db "DARK@"
+
+; 50a28
--- /dev/null
+++ b/data/types/search_strings.asm
@@ -1,0 +1,21 @@
+PokedexTypeSearchStrings: ; 40fe4
+; entries correspond with PokedexTypeSearchConversionTable (see data/types/search_types.asm)
+	db "  ----  @"
+	db " NORMAL @"
+	db "  FIRE  @"
+	db " WATER  @"
+	db " GRASS  @"
+	db "ELECTRIC@"
+	db "  ICE   @"
+	db "FIGHTING@"
+	db " POISON @"
+	db " GROUND @"
+	db " FLYING @"
+	db "PSYCHIC @"
+	db "  BUG   @"
+	db "  ROCK  @"
+	db " GHOST  @"
+	db " DRAGON @"
+	db "  DARK  @"
+	db " STEEL  @"
+; 41086
--- /dev/null
+++ b/data/types/search_types.asm
@@ -1,0 +1,20 @@
+PokedexTypeSearchConversionTable: ; 410f6
+; entries correspond with PokedexTypeSearchStrings (see data/types/search_strings.asm)
+	db NORMAL
+	db FIRE
+	db WATER
+	db GRASS
+	db ELECTRIC
+	db ICE
+	db FIGHTING
+	db POISON
+	db GROUND
+	db FLYING
+	db PSYCHIC
+	db BUG
+	db ROCK
+	db GHOST
+	db DRAGON
+	db DARK
+	db STEEL
+; 41107
--- /dev/null
+++ b/data/unown_walls.asm
@@ -1,0 +1,54 @@
+unownwall: MACRO
+rept _NARG
+if \1 == "-"
+x = $64
+else
+if \1 >= "Y"
+x = 2 * (\1 - "Y") + $60
+else
+if \1 >= "Q"
+x = 2 * (\1 - "Q") + $40
+else
+if \1 >= "I"
+x = 2 * (\1 - "I") + $20
+else
+x = 2 * (\1 - "A")
+endc
+endc
+endc
+endc
+	db x
+shift
+endr
+	db -1 ; end
+ENDM
+
+UnownWalls: ; 8aebc
+; UNOWNWORDS_ESCAPE
+	; db      $08, $44, $04, $00, $2e, $08, $ff
+	unownwall "E", "S", "C", "A", "P", "E"
+; UNOWNWORDS_LIGHT
+	; db      $26, $20, $0c, $0e, $46, $ff
+	unownwall "L", "I", "G", "H", "T"
+; UNOWNWORDS_WATER
+	; db      $4c, $00, $46, $08, $42, $ff
+	unownwall "W", "A", "T", "E", "R"
+; UNOWNWORDS_HO_OH
+	; db      $0e, $2c, $64, $2c, $0e, $ff
+	unownwall "H", "O", "-", "O", "H"
+; 8aed5
+
+MenuDataHeaders_UnownWalls: ; 0x8aed5
+; UNOWNWORDS_ESCAPE
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 3, 4, 16, 9
+; UNOWNWORDS_LIGHT
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 4, 4, 15, 9
+; UNOWNWORDS_WATER
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 4, 4, 15, 9
+; UNOWNWORDS_HO_OH
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 4, 4, 15, 9
+; 8aee9
--- /dev/null
+++ b/data/unused/dakutens.asm
@@ -1,0 +1,15 @@
+UnreferencedDakutens:
+	db "かが", "きぎ", "くぐ", "けげ", "こご"
+	db "さざ", "しじ", "すず", "せぜ", "そぞ"
+	db "ただ", "ちぢ", "つづ", "てで", "とど"
+	db "はば", "ひび", "ふぶ", "へべ", "ほぼ"
+	db "カガ", "キギ", "クグ", "ケゲ", "コゴ"
+	db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
+	db "タダ", "チヂ", "ツヅ", "テデ", "トド"
+	db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
+	db -1 ; end
+
+UnreferencedHandakutens:
+	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
+	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
+	db -1 ; end
--- /dev/null
+++ b/data/unused/gen_1_trainer_names.asm
@@ -1,0 +1,71 @@
+Gen1TrainerClassNames: ; 50a42
+; Untranslated trainer class names from Red.
+	dw .Youngster
+	dw .BugCatcher
+	dw .Lass
+	dw OTClassName ; sailor
+	dw .JrTrainerM
+	dw .JrTrainerF
+	dw .Pokemaniac
+	dw .SuperNerd
+	dw OTClassName ; hiker
+	dw OTClassName ; biker
+	dw .Burglar
+	dw .Engineer
+	dw .Jack
+	dw OTClassName ; fisher
+	dw .Swimmer
+	dw OTClassName ; cue ball
+	dw OTClassName ; gambler
+	dw .Beauty
+	dw OTClassName ; psychic
+	dw .Rocker
+	dw .Juggler
+	dw OTClassName ; tamer
+	dw OTClassName ; bird keeper
+	dw .Blackbelt
+	dw OTClassName ; rival1
+	dw .ProfOak
+	dw .Chief
+	dw .Scientist
+	dw OTClassName ; giovanni
+	dw .Rocket
+	dw .CooltrainerM
+	dw .CooltrainerF
+	dw OTClassName ; bruno
+	dw OTClassName ; brock
+	dw OTClassName ; misty
+	dw OTClassName ; lt.surge
+	dw OTClassName ; erika
+	dw OTClassName ; koga
+	dw OTClassName ; blaine
+	dw OTClassName ; sabrina
+	dw OTClassName ; gentleman
+	dw OTClassName ; rival2
+	dw OTClassName ; rival3
+	dw OTClassName ; lorelei
+	dw OTClassName ; channeler
+	dw OTClassName ; agatha
+	dw OTClassName ; lance
+
+.Youngster:    db "たんパン@"
+.BugCatcher:   db "むしとり@"
+.Lass:         db "ミニスカ@"
+.JrTrainerM:   db "ボーイ@"
+.JrTrainerF:   db "ガール@"
+.Pokemaniac:   db "マニア@"
+.SuperNerd:    db "りかけい@"
+.Burglar:      db "どろぼう@"
+.Engineer:     db "オヤジ@"
+.Jack:         db "ジャック@"
+.Swimmer:      db "かいパン@"
+.Beauty:       db "おねえさん@"
+.Rocker:       db "グループ@"
+.Juggler:      db "ジャグラー@"
+.Blackbelt:    db "からて@"
+.ProfOak:      db "オーキド@"
+.Chief:        db "チーフ@"
+.Scientist:    db "けんきゅういん@"
+.Rocket:       db "だんいん@"
+.CooltrainerM: db "エりート♂@"
+.CooltrainerF: db "エりート♀@"
--- /dev/null
+++ b/data/unused/sweet_honey_text.asm
@@ -1,0 +1,68 @@
+; Sweet Honey is a feature that was scrapped before development.
+; It was later implemented in Pokémon Diamond and Pearl.
+;
+; Sweet Honey was probably reworked into Sweet Scent.
+; A map in the final game has a Butterfree and a woman who gives
+; the Sweet Scent TM.
+
+; Most of these texts seem to be associated with a single NPC.
+; The last text is associated with a second NPC, probably a Butterfree.
+
+UnusedSweetHoneyText: ; 0x5578a
+	text "My #MON is an"
+	line "expert at collect-"
+	cont "ing SWEET HONEY."
+
+	para "I'll share some"
+	line "with you."
+	done
+
+UnusedSweetHoneyBagFullText: ; 0x557d6
+	text "I want to give you"
+	line "some SWEET HONEY,"
+
+	para "but you have no"
+	line "room for it."
+	done
+
+UnusedSweetHoneyGiveText: ; 0x55819
+	text "Here you go! Have"
+	line "some SWEET HONEY!"
+	done
+
+UnusedGotSweetHoneyText: ; 0x5583e
+	text "<PLAYER> received"
+	line "SWEET HONEY."
+	done
+
+UnusedSweetHoneyAfterText1: ; 0x55856
+	text "My little brother"
+	line "takes SWEET HONEY"
+
+	para "and goes somewhere"
+	line "with it."
+
+	para "I wonder what he's"
+	line "up to?"
+	done
+
+UnusedSweetHoneyAfterText2: ; 0x558b1
+	text "Did you put SWEET"
+	line "HONEY on a tree?"
+
+	para "What happened to"
+	line "it?"
+	done
+
+UnusedSweetHoneyAfterText3: ; 0x558ea
+	text "Did you put SWEET"
+	line "HONEY on a tree?"
+
+	para "It takes about a"
+	line "day for #MON to"
+	cont "be drawn to it."
+	done
+
+UnusedSweetHoneyButterfreeText: ; 0x5593f
+	text "BUTTERFREE: Freeh!"
+	done
--- /dev/null
+++ b/data/unused/unknown_53d84.asm
@@ -1,0 +1,13 @@
+Unreferenced_53d84:
+	db $1a, $15
+	db $33, $16
+	db $4b, $17
+	db $62, $18
+	db $79, $19
+	db $90, $1a
+	db $a8, $1b
+	db $c4, $1c
+	db $e0, $1d
+	db $f6, $1e
+	db $ff, $1f
+	db $ff, $20
--- a/data/wild/fish.asm
+++ b/data/wild/fish.asm
@@ -1,3 +1,5 @@
+time_group EQUS "0," ; use the nth TimeFishGroups entry
+
 FishGroups: ; 92488
 	dbwww 50 percent + 1, .Shore_Old,            .Shore_Good,            .Shore_Super
 	dbwww 50 percent + 1, .Ocean_Old,            .Ocean_Good,            .Ocean_Super
@@ -21,10 +23,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     KRABBY,     20
 	db  90 percent + 1, KRABBY,     20
-	db 100 percent,     0, 0
+	db 100 percent,     time_group 0
 .Shore_Super: ; 924f8
 	db  40 percent,     KRABBY,     40
-	db  70 percent,     0, 1
+	db  70 percent,     time_group 1
 	db  90 percent + 1, KRABBY,     40
 	db 100 percent,     KINGLER,    40
 
@@ -36,10 +38,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     TENTACOOL,  20
 	db  90 percent + 1, CHINCHOU,   20
-	db 100 percent,     0, 2
+	db 100 percent,     time_group 2
 .Ocean_Super: ; 92519
 	db  40 percent,     CHINCHOU,   40
-	db  70 percent,     0, 3
+	db  70 percent,     time_group 3
 	db  90 percent + 1, TENTACRUEL, 40
 	db 100 percent,     LANTURN,    40
 
@@ -51,10 +53,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     GOLDEEN,    20
 	db  90 percent + 1, GOLDEEN,    20
-	db 100 percent,     0, 4
+	db 100 percent,     time_group 4
 .Lake_Super: ; 9253a
 	db  40 percent,     GOLDEEN,    40
-	db  70 percent,     0, 5
+	db  70 percent,     time_group 5
 	db  90 percent + 1, MAGIKARP,   40
 	db 100 percent,     SEAKING,    40
 
@@ -66,10 +68,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     POLIWAG,    20
 	db  90 percent + 1, POLIWAG,    20
-	db 100 percent,     0, 6
+	db 100 percent,     time_group 6
 .Pond_Super: ; 9255b
 	db  40 percent,     POLIWAG,    40
-	db  70 percent,     0, 7
+	db  70 percent,     time_group 7
 	db  90 percent + 1, MAGIKARP,   40
 	db 100 percent,     POLIWAG,    40
 
@@ -81,10 +83,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     MAGIKARP,   20
 	db  90 percent + 1, MAGIKARP,   20
-	db 100 percent,     0, 8
+	db 100 percent,     time_group 8
 .Dratini_Super: ; 9257c
 	db  40 percent,     MAGIKARP,   40
-	db  70 percent,     0, 9
+	db  70 percent,     time_group 9
 	db  90 percent + 1, MAGIKARP,   40
 	db 100 percent,     DRAGONAIR,  40
 
@@ -96,10 +98,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     QWILFISH,   20
 	db  90 percent + 1, QWILFISH,   20
-	db 100 percent,     0, 10
+	db 100 percent,     time_group 10
 .Qwilfish_Swarm_Super: ; 9259d
 	db  40 percent,     QWILFISH,   40
-	db  70 percent,     0, 11
+	db  70 percent,     time_group 11
 	db  90 percent + 1, QWILFISH,   40
 	db 100 percent,     QWILFISH,   40
 
@@ -111,10 +113,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     REMORAID,   20
 	db  90 percent + 1, REMORAID,   20
-	db 100 percent,     0, 12
+	db 100 percent,     time_group 12
 .Remoraid_Swarm_Super: ; 925be
 	db  40 percent,     REMORAID,   40
-	db  70 percent,     0, 13
+	db  70 percent,     time_group 13
 	db  90 percent + 1, REMORAID,   40
 	db 100 percent,     REMORAID,   40
 
@@ -126,10 +128,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     MAGIKARP,   20
 	db  90 percent + 1, MAGIKARP,   20
-	db 100 percent,     0, 14
+	db 100 percent,     time_group 14
 .Gyarados_Super: ; 925df
 	db  40 percent,     MAGIKARP,   40
-	db  70 percent,     0, 15
+	db  70 percent,     time_group 15
 	db  90 percent + 1, MAGIKARP,   40
 	db 100 percent,     MAGIKARP,   40
 
@@ -141,10 +143,10 @@
 	db  35 percent,     MAGIKARP,   10
 	db  70 percent,     MAGIKARP,   10
 	db  90 percent + 1, MAGIKARP,   10
-	db 100 percent,     0, 16
+	db 100 percent,     time_group 16
 .Dratini_2_Super: ; 92600
 	db  40 percent,     MAGIKARP,   10
-	db  70 percent,     0, 17
+	db  70 percent,     time_group 17
 	db  90 percent + 1, MAGIKARP,   10
 	db 100 percent,     DRAGONAIR,  10
 
@@ -156,10 +158,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     KRABBY,     20
 	db  90 percent + 1, KRABBY,     20
-	db 100 percent,     0, 18
+	db 100 percent,     time_group 18
 .WhirlIslands_Super: ; 92621
 	db  40 percent,     KRABBY,     40
-	db  70 percent,     0, 19
+	db  70 percent,     time_group 19
 	db  90 percent + 1, KINGLER,    40
 	db 100 percent,     SEADRA,     40
 
@@ -173,11 +175,11 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     TENTACOOL,  20
 	db  90 percent + 1, TENTACOOL,  20
-	db 100 percent,     0, 20
+	db 100 percent,     time_group 20
 .Qwilfish_NoSwarm_Super:
 .Qwilfish_Super: ; 92642
 	db  40 percent,     TENTACOOL,  40
-	db  70 percent,     0, 21
+	db  70 percent,     time_group 21
 	db  90 percent + 1, MAGIKARP,   40
 	db 100 percent,     QWILFISH,   40
 
@@ -189,10 +191,10 @@
 	db  35 percent,     MAGIKARP,   20
 	db  70 percent,     POLIWAG,    20
 	db  90 percent + 1, POLIWAG,    20
-	db 100 percent,     0, 6
+	db 100 percent,     time_group 6
 .Remoraid_Super: ; 92663
 	db  40 percent,     POLIWAG,    40
-	db  70 percent,     0, 7
+	db  70 percent,     time_group 7
 	db  90 percent + 1, MAGIKARP,   40
 	db 100 percent,     REMORAID,   40
 ; 9266f
--- a/data/wild/probabilities.asm
+++ b/data/wild/probabilities.asm
@@ -1,15 +1,20 @@
+mon_prob: MACRO
+; percent, index
+	db \1, \2 * 2
+ENDM
+
 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
+	mon_prob 30,  0 ; 30% chance
+	mon_prob 60,  1 ; 30% chance
+	mon_prob 80,  2 ; 20% chance
+	mon_prob 90,  3 ; 10% chance
+	mon_prob 95,  4 ;  5% chance
+	mon_prob 99,  5 ;  4% chance
+	mon_prob 100, 6 ;  1% chance
 ; 2a1d9
 
 WaterMonProbTable: ; 2a1d9
-	db 60,  $0 ; 60% chance
-	db 90,  $2 ; 30% chance
-	db 100, $4 ; 10% chance
+	mon_prob 60,  0 ; 60% chance
+	mon_prob 90,  1 ; 30% chance
+	mon_prob 100, 2 ; 10% chance
 ; 2a1df
--- a/data/wild/roammon_maps.asm
+++ b/data/wild/roammon_maps.asm
@@ -13,6 +13,7 @@
 ENDM
 
 RoamMaps: ; 2a40f
+; there are NUM_ROAMMON_MAPS entries
 	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
--- a/data/wild/treemon_maps.asm
+++ b/data/wild/treemon_maps.asm
@@ -4,47 +4,47 @@
 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
+	treemon_map ROUTE_26,                  TREEMON_SET_KANTO
+	treemon_map ROUTE_27,                  TREEMON_SET_KANTO
+	treemon_map ROUTE_28,                  TREEMON_SET_CITY
+	treemon_map ROUTE_29,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_30,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_31,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_32,                  TREEMON_SET_KANTO
+	treemon_map ROUTE_33,                  TREEMON_SET_AZALEA
+	treemon_map ROUTE_34,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_35,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_36,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_37,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_38,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_39,                  TREEMON_SET_ROUTE
+	treemon_map ROUTE_40,                  TREEMON_SET_CITY
+	treemon_map ROUTE_41,                  TREEMON_SET_CITY
+	treemon_map ROUTE_42,                  TREEMON_SET_AZALEA
+	treemon_map ROUTE_43,                  TREEMON_SET_LAKE
+	treemon_map ROUTE_44,                  TREEMON_SET_CANYON
+	treemon_map ROUTE_45,                  TREEMON_SET_CANYON
+	treemon_map ROUTE_46,                  TREEMON_SET_CANYON
+	treemon_map NEW_BARK_TOWN,             TREEMON_SET_CITY
+	treemon_map CHERRYGROVE_CITY,          TREEMON_SET_CITY
+	treemon_map VIOLET_CITY,               TREEMON_SET_CITY
+	treemon_map AZALEA_TOWN,               TREEMON_SET_AZALEA
+	treemon_map CIANWOOD_CITY,             TREEMON_SET_CITY
+	treemon_map GOLDENROD_CITY,            TREEMON_SET_CITY
+	treemon_map OLIVINE_CITY,              TREEMON_SET_CITY
+	treemon_map ECRUTEAK_CITY,             TREEMON_SET_CITY
+	treemon_map MAHOGANY_TOWN,             TREEMON_SET_CITY
+	treemon_map LAKE_OF_RAGE,              TREEMON_SET_LAKE
+	treemon_map BLACKTHORN_CITY,           TREEMON_SET_CITY
+	treemon_map SILVER_CAVE_OUTSIDE,       TREEMON_SET_CITY
+	treemon_map ILEX_FOREST,               TREEMON_SET_FOREST
 	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
+	treemon_map CIANWOOD_CITY,             TREEMON_SET_ROCK
+	treemon_map ROUTE_40,                  TREEMON_SET_ROCK
+	treemon_map DARK_CAVE_VIOLET_ENTRANCE, TREEMON_SET_ROCK
+	treemon_map SLOWPOKE_WELL_B1F,         TREEMON_SET_ROCK
 	db -1
 ; b82d2
--- a/data/wild/treemons.asm
+++ b/data/wild/treemons.asm
@@ -1,19 +1,21 @@
 TreeMons: ; b82e8
-	dw TreeMons1
-	dw TreeMons1
-	dw TreeMons2
-	dw TreeMons3
-	dw TreeMons4
-	dw TreeMons5
-	dw TreeMons6
-	dw RockMons
-	dw TreeMons1
+; entries correspond to TREEMON_SET_* constants
+	dw TreeMonSet_City
+	dw TreeMonSet_Canyon
+	dw TreeMonSet_Azalea
+	dw TreeMonSet_Route
+	dw TreeMonSet_Kanto
+	dw TreeMonSet_Lake
+	dw TreeMonSet_Forest
+	dw TreeMonSet_Rock
+	dw TreeMonSet_City
 
 ; Two tables each (common, rare).
 ; Structure:
 ;	db  %, species, level
 
-TreeMons1: ; b82fa
+TreeMonSet_City:
+TreeMonSet_Canyon: ; b82fa
 ; common
 	db 50, SPEAROW,    10
 	db 15, SPEAROW,    10
@@ -31,7 +33,7 @@
 	db  5, AIPOM,      10
 	db -1
 
-TreeMons2: ; b8320
+TreeMonSet_Azalea: ; b8320
 ; common
 	db 50, SPEAROW,    10
 	db 15, EKANS,      10
@@ -49,7 +51,7 @@
 	db  5, AIPOM,      10
 	db -1
 
-TreeMons3: ; b8346
+TreeMonSet_Route: ; b8346
 ; common
 	db 50, HOOTHOOT,   10
 	db 15, SPINARAK,   10
@@ -67,7 +69,7 @@
 	db  5, EXEGGCUTE,  10
 	db -1
 
-TreeMons4: ; b836c
+TreeMonSet_Kanto: ; b836c
 ; common
 	db 50, HOOTHOOT,   10
 	db 15, EKANS,      10
@@ -85,7 +87,7 @@
 	db  5, EXEGGCUTE,  10
 	db -1
 
-TreeMons5: ; b8392
+TreeMonSet_Lake: ; b8392
 ; common
 	db 50, HOOTHOOT,   10
 	db 15, VENONAT,    10
@@ -103,7 +105,7 @@
 	db  5, EXEGGCUTE,  10
 	db -1
 
-TreeMons6: ; b83b8
+TreeMonSet_Forest: ; b83b8
 ; common
 	db 50, HOOTHOOT,   10
 	db 15, PINECO,     10
@@ -121,7 +123,7 @@
 	db  5, KAKUNA,     10
 	db -1
 
-RockMons: ; b83de
+TreeMonSet_Rock: ; b83de
 	db 90, KRABBY,     15
 	db 10, SHUCKLE,    15
 	db -1
--- /dev/null
+++ b/data/wild/treemons_asleep.asm
@@ -1,0 +1,31 @@
+; Used by CheckSleepingTreeMon
+
+AsleepTreeMonsNite:
+	db CATERPIE
+	db METAPOD
+	db BUTTERFREE
+	db WEEDLE
+	db KAKUNA
+	db BEEDRILL
+	db SPEAROW
+	db EKANS
+	db EXEGGCUTE
+	db LEDYBA
+	db AIPOM
+	db -1 ; end
+
+AsleepTreeMonsDay:
+	db VENONAT
+	db HOOTHOOT
+	db NOCTOWL
+	db SPINARAK
+	db HERACROSS
+	db -1 ; end
+
+AsleepTreeMonsMorn:
+	db VENONAT
+	db HOOTHOOT
+	db NOCTOWL
+	db SPINARAK
+	db HERACROSS
+	db -1 ; end
--- a/docs/battle_anim_commands.md
+++ b/docs/battle_anim_commands.md
@@ -3,14 +3,15 @@
 Defined in [macros/scripts/battle_anims.asm](/macros/scripts/battle_anims.asm) and [engine/battle_anims/anim_commands.asm:BattleAnimCommands](/engine/battle_anims/anim_commands.asm).
 
 
-## `$00`−`$CF`: `anim_wait` *length*
+## `$00`−`$CF`: <code>anim_wait <i>length</i></code>
 
 - *length*: duration in frames
 
 
-## `$D0`: `anim_obj` *object*, *x*, *y*, *param*
-*Alternate*: `anim_obj` *object*, *x_tile*, *x*, *y_tile*, *y*, *param*
+## `$D0`: <code>anim_obj <i>object</i>, <i>x</i>, <i>y</i>, <i>param</i></code>
 
+***Alternate*: <code>anim_obj <i>object</i>, <i>x_tile</i>, <i>x</i>, <i>y_tile</i>, <i>y</i>, <i>param</i></code>**
+
 Spawns an *object* at coordinate (*x*, *y*).
 
 - *object*: `ANIM_OBJ` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm))
@@ -28,22 +29,26 @@
 - *TODO: document each object*
 
 
-## `$D1`: `anim_1gfx` *gfx*
+## `$D1`: <code>anim_1gfx <i>gfx</i></code>
 
-## `$D2`: `anim_2gfx` *gfx1*, *gfx2*
 
-## `$D3`: `anim_3gfx` *gfx1*, *gfx2*, *gfx3*
+## `$D2`: <code>anim_2gfx <i>gfx1</i>, <i>gfx2</i></code>
 
-## `$D4`: `anim_4gfx` *gfx1*, *gfx2*, *gfx3*, *gfx4*
 
-## `$D5`: `anim_5gfx` *gfx1*, *gfx2*, *gfx3*, *gfx4*, *gfx5*
+## `$D3`: <code>anim_3gfx <i>gfx1</i>, <i>gfx2</i>, <i>gfx3</i></code>
 
+
+## `$D4`: <code>anim_4gfx <i>gfx1</i>, <i>gfx2</i>, <i>gfx3</i>, <i>gfx4</i></code>
+
+
+## `$D5`: <code>anim_5gfx <i>gfx1</i>, <i>gfx2</i>, <i>gfx3</i>, <i>gfx4</i>, <i>gfx5</i></code>
+
 Loads 1-5 sets of graphics. Will overwrite any previously loaded sets.
 
 - *gfx*: `ANIM_GFX` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm))
 
 
-## `$D6`: `anim_incobj` *object_id*
+## `$D6`: <code>anim_incobj <i>object_id</i></code>
 
 Increments an object's state.
 
@@ -51,8 +56,9 @@
 
 Objects are state machines. `anim_incobj` progresses the state of an object.
 
-## `$D7`: `anim_setobj` *object_id*, *state*
 
+## `$D7`: <code>anim_setobj <i>object_id</i>, <i>state</i></code>
+
 Sets an object's state to a specific value.
 
 - *object_id*: the nth object in order of creation
@@ -60,8 +66,9 @@
 
 Objects are state machines. `anim_setobj` changes the state of an object.
 
-## `$D8`: `anim_incbgeffect` *bg_effect*
 
+## `$D8`: <code>anim_incbgeffect <i>bg_effect</i></code>
+
 Increments a bg effect's state.
 
 - *bg_effect*: `ANIM_BG` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm))
@@ -73,6 +80,7 @@
 
 Temporarily creates sprites from the bottom row of the enemy frontpic, so that the player backpic can be moved around without corrupting the enemy frontpic.
 
+
 ## `$DA`: `anim_playerheadobj`
 
 Temporarily creates sprites from the top row of the player backpic, so that the enemy frontpic can be moved around without corrupting the player backpic.
@@ -85,8 +93,10 @@
 
 ## `$DC`: `anim_transform`
 
+
 ## `$DD`: `anim_raisesub`
 
+
 ## `$DE`: `anim_dropsub`
 
 
@@ -95,12 +105,13 @@
 Resets rOBP0 to the default (`q0123` or `%00011011`).
 
 
-## `$E0`: `anim_sound` *duration*, *tracks*, *sound_id*
+## `$E0`: <code>anim_sound <i>duration</i>, <i>tracks</i>, <i>sound_id</i></code>
 
 Plays a sound.
 
-## `$E1`: `anim_cry` *pitch*
 
+## `$E1`: <code>anim_cry <i>pitch</i></code>
+
 Plays the user's cry.
 
 
@@ -109,6 +120,7 @@
 
 ## `$E3`: `anim_oamon`
 
+
 ## `$E4`: `anim_oamoff`
 
 
@@ -127,6 +139,7 @@
 
 ## `$E8`: `anim_updateactorpic`
 
+
 ## `$E9`: `anim_minimize`
 
 
@@ -134,41 +147,47 @@
 
 Does nothing. Unused.
 
+
 ## `$EB`: `anim_0xeb`
 
 Does nothing. Unused.
 
+
 ## `$EC`: `anim_0xec`
 
 Does nothing. Unused.
 
+
 ## `$ED`: `anim_0xed`
 
 Does nothing. Unused.
 
 
-## `$EE`: `anim_if_param_and` *value*, *address*
+## `$EE`: <code>anim_if_param_and <i>value</i>, <i>address</i></code>
 
-## `$EF`: `anim_jumpuntil` *address*
 
+## `$EF`: <code>anim_jumpuntil <i>address</i></code>
+
 Jumps to another script and decrements `param` until it reaches 0. Similar to `anim_loop`.
 
 
-## `$F0`: `anim_bgeffect` *bg_effect*, *unknown1*, *unknown2*, *unknown3*
+## `$F0`: <code>anim_bgeffect <i>bg_effect</i>, <i>unknown1</i>, <i>unknown2</i>, <i>unknown3</i></code>
 
 - *bg_effect*: `ANIM_BG` constants (see [constants/battle_anim_constants.asm](/constants/battle_anim_constants.asm))
 
 
-## `$F1`: `anim_bgp` *colors*
+## `$F1`: <code>anim_bgp <i>colors</i></code>
 
 Sets `rBGP` to *colors*.
 
-## `$F2`: `anim_obp0` *colors*
 
+## `$F2`: <code>anim_obp0 <i>colors</i></code>
+
 Sets `rOBP0` to *colors*.
 
-## `$F3`: `anim_obp1` *colors*
 
+## `$F3`: <code>anim_obp1 <i>colors</i></code>
+
 Sets `rOBP1` to *colors*.
 
 
@@ -179,44 +198,53 @@
 
 Does nothing. Unused.
 
+
 ## `$F6`: `anim_0xf6`
 
 Does nothing. Unused.
 
+
 ## `$F7`: `anim_0xf7`
 
 Does nothing. Unused.
 
 
-## `$F8`: `anim_if_param_equal` *value*, *address*
+## `$F8`: <code>anim_if_param_equal <i>value</i>, <i>address</i></code>
 
 Jumps to another script if `wBattleAnimParam` (aka `wKickCounter` or `wPresentPower`) is equal to *value*.
 
-## `$F9`: `anim_setvar` *value*
 
+## `$F9`: <code>anim_setvar <i>value</i></code>
+
 Sets `BattleAnimVar` to *value*.
 
+
 ## `$FA`: `anim_incvar`
 
 Increments `BattleAnimVar` by 1.
 
-## `$FB`: `anim_if_var_equal` *value*, *address*
 
+## `$FB`: <code>anim_if_var_equal <i>value</i>, <i>address</i></code>
+
 Jumps to another script if `BattleAnimVar` is equal to *value*.
 
-## `$FC`: `anim_jump` *address*
 
+## `$FC`: <code>anim_jump <i>address</i></code>
+
 Jumps to another script.
 
-## `$FD`: `anim_loop` *count*, *address*
 
+## `$FD`: <code>anim_loop <i>count</i>, <i>address</i></code>
+
 Jumps to another script up to *count* times. Then does nothing, allowing execution to continue.
 
-## `$FE`: `anim_call` *address*
 
+## `$FE`: <code>anim_call <i>address</i></code>
+
 Calls a script.
 
 There is no call stack. The return address is overwritten, so the maximum call depth is 1.
+
 
 ## `$FF`: `anim_ret`
 
--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -567,7 +567,7 @@
 
 ```asm
 Text_ABoostedStringBuffer2ExpPoints::
-	text ""
+	text_start
 	line "a boosted"
 	cont "@"
 	deciram StringBuffer2, 2, 4
@@ -575,7 +575,7 @@
 	prompt
 
 Text_StringBuffer2ExpPoints::
-	text ""
+	text_start
 	line "@"
 	deciram StringBuffer2, 2, 4
 	text " EXP. Points!"
@@ -746,7 +746,7 @@
 CopyPokemonName_Buffer1_Buffer3: ; 746e
 	ld hl, StringBuffer1
 	ld de, StringBuffer3
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	jp CopyBytes
 ```
 
@@ -993,7 +993,7 @@
 
 ([Video](https://www.youtube.com/watch?v=z305e4sIO24))
 
-The exact cause is unknown, but a workaround exists for `DexEntryScreen_MenuActionJumptable.Cry` in [engine/pokedex.asm](/engine/pokedex.asm):
+The exact cause is unknown, but a workaround exists for `DexEntryScreen_MenuActionJumptable.Cry` in [engine/pokedex/pokedex.asm](/engine/pokedex/pokedex.asm):
 
 ```asm
 .Cry: ; 40340
@@ -1002,7 +1002,7 @@
 	call GetCryIndex
 	ld e, c
 	ld d, b
-	call PlayCryHeader
+	call PlayCry
 	ret
 ```
 
@@ -1011,7 +1011,7 @@
 ```asm
 .Cry: ; 40340
 	ld a, [CurPartySpecies]
-	call PlayCry
+	call PlayMonCry
 	ret
 ```
 
--- a/docs/design_flaws.md
+++ b/docs/design_flaws.md
@@ -24,7 +24,7 @@
 ENDM
 ```
 
-The offset is translated into a correct bank by `FixPicBank` in [gfx/load_pics.asm](/gfx/load_pics.asm):
+The offset is translated into a correct bank by `FixPicBank` in [engine/load_pics.asm](/engine/load_pics.asm):
 
 ```asm
 FixPicBank: ; 511c5
@@ -106,7 +106,7 @@
 	"Pics 2"
 ```
 
-Two routines in [gfx/load_pics.asm](/gfx/load_pics.asm) make this assumption; `GetFrontpicPointer`:
+Two routines in [engine/load_pics.asm](/engine/load_pics.asm) make this assumption; `GetFrontpicPointer`:
 
 ```asm
 	ld a, [CurPartySpecies]
@@ -228,7 +228,7 @@
 ...
 ```
 
-`Pokedex_LoadAnyFootprint` in [engine/pokedex.asm](/engine/pokedex.asm):
+`Pokedex_LoadAnyFootprint` in [engine/pokedex/pokedex.asm](/engine/pokedex/pokedex.asm):
 
 ```asm
 	push hl
@@ -282,7 +282,7 @@
 
 `PokedexDataPointerTable` in [data/pokemon/dex_entry_pointers.asm](/data/pokemon/dex_entry_pointers.asm) is a table of `dw`, not `dba`, yet there are four banks used for Pokédex entries. The correct bank is derived from the species ID at the beginning of each Pokémon's base stats. (This is the only use the base stat species ID has.)
 
-Three separate routines do the same derivation; `GetDexEntryPointer` in [engine/pokedex_2.asm](/engine/pokedex_2.asm):
+Three separate routines do the same derivation; `GetDexEntryPointer` in [engine/pokedex/pokedex_2.asm](/engine/pokedex/pokedex_2.asm):
 
 ```asm
 GetDexEntryPointer: ; 44333
@@ -471,7 +471,7 @@
 
 ## `GetForestTreeFrame` works, but it's still bad
 
-In [tilesets/animations.asm](/tilesets/animations.asm):
+In [engine/tileset_anims.asm](/engine/tileset_anims.asm):
 
 ```asm
 GetForestTreeFrame: ; fc54c
--- a/docs/event_commands.md
+++ b/docs/event_commands.md
@@ -3,147 +3,147 @@
 Defined in [macros/scripts/events.asm](/macros/scripts/events.asm) and [engine/scripting.asm:ScriptCommandTable](/engine/scripting.asm).
 
 
-## `$00`: `scall` *script*
+## `$00`: <code>scall <i>script</i></code>
 
-## `$01`: `farscall` *script*
+## `$01`: <code>farscall <i>script</i></code>
 
-## `$02`: `ptcall` *script*
+## `$02`: <code>ptcall <i>script</i></code>
 
-## `$03`: `jump` *script*
+## `$03`: <code>jump <i>script</i></code>
 
-## `$04`: `farjump` *script*
+## `$04`: <code>farjump <i>script</i></code>
 
-## `$05`: `ptjump` *script*
+## `$05`: <code>ptjump <i>script</i></code>
 
-## `$06`: `if_equal` *byte*, *script*
+## `$06`: <code>if_equal <i>byte</i>, <i>script</i></code>
 
-## `$07`: `if_not_equal` *byte*, *script*
+## `$07`: <code>if_not_equal <i>byte</i>, <i>script</i></code>
 
-## `$08`: `iffalse` *script*
+## `$08`: <code>iffalse <i>script</i></code>
 
-## `$09`: `iftrue` *script*
+## `$09`: <code>iftrue <i>script</i></code>
 
-## `$0A`: `if_greater_than` *byte*, *script*
+## `$0A`: <code>if_greater_than <i>byte</i>, <i>script</i></code>
 
-## `$0B`: `if_less_than` *byte*, *script*
+## `$0B`: <code>if_less_than <i>byte</i>, <i>script</i></code>
 
-## `$0C`: `jumpstd` *std_script*
+## `$0C`: <code>jumpstd <i>std_script</i></code>
 
-## `$0D`: `callstd` *std_script*
+## `$0D`: <code>callstd <i>std_script</i></code>
 
-## `$0E`: `callasm` *asm*
+## `$0E`: <code>callasm <i>asm</i></code>
 
-## `$0F`: `special` *special_pointer*
+## `$0F`: <code>special <i>special_pointer</i></code>
 
-## `$10`: `ptcallasm` *asm*
+## `$10`: <code>ptcallasm <i>asm</i></code>
 
-## `$11`: `checkmapscene` *map*
+## `$11`: <code>checkmapscene <i>map</i></code>
 
-## `$12`: `setmapscene` *map*, *scene_id*
+## `$12`: <code>setmapscene <i>map</i>, <i>scene_id</i></code>
 
 ## `$13`: `checkscene`
 
-## `$14`: `setscene` *scene_id*
+## `$14`: <code>setscene <i>scene_id</i></code>
 
-## `$15`: `writebyte` *value*
+## `$15`: <code>writebyte <i>value</i></code>
 
-## `$16`: `addvar` *value*
+## `$16`: <code>addvar <i>value</i></code>
 
-## `$17`: `random` *value*
+## `$17`: <code>random <i>value</i></code>
 
 ## `$18`: `checkver`
 
-## `$19`: `copybytetovar` *address*
+## `$19`: <code>copybytetovar <i>address</i></code>
 
-## `$1A`: `copyvartobyte` *address*
+## `$1A`: <code>copyvartobyte <i>address</i></code>
 
-## `$1B`: `loadvar` *address*, *value*
+## `$1B`: <code>loadvar <i>address</i>, <i>value</i></code>
 
-## `$1C`: `checkcode` *variable*
+## `$1C`: <code>checkcode <i>variable</i></code>
 
-## `$1D`: `writevarcode` *variable*
+## `$1D`: <code>writevarcode <i>variable</i></code>
 
-## `$1E`: `writecode` *variable*, *value*
+## `$1E`: <code>writecode <i>variable</i>, <i>value</i></code>
 
-## `$1F`: `giveitem` *item_id*[, *quantity*=1]
+## `$1F`: <code>giveitem <i>item_id</i>[, <i>quantity</i>=1]</code>
 
-## `$20`: `takeitem` *item_id*[, *quantity*=1]
+## `$20`: <code>takeitem <i>item_id</i>[, <i>quantity</i>=1]</code>
 
-## `$21`: `checkitem` *item_id*
+## `$21`: <code>checkitem <i>item_id</i></code>
 
-## `$22`: `givemoney` *account*, *value*
+## `$22`: <code>givemoney <i>account</i>, <i>value</i></code>
 
-## `$23`: `takemoney` *account*, *value*
+## `$23`: <code>takemoney <i>account</i>, <i>value</i></code>
 
-## `$24`: `checkmoney` *account*, *value*
+## `$24`: <code>checkmoney <i>account</i>, <i>value</i></code>
 
-## `$25`: `givecoins` *value*
+## `$25`: <code>givecoins <i>value</i></code>
 
-## `$26`: `takecoins` *value*
+## `$26`: <code>takecoins <i>value</i></code>
 
-## `$27`: `checkcoins` *value*
+## `$27`: <code>checkcoins <i>value</i></code>
 
-## `$28`: `addcellnum` *contact_id*
+## `$28`: <code>addcellnum <i>contact_id</i></code>
 
-## `$29`: `delcellnum` *contact_id*
+## `$29`: <code>delcellnum <i>contact_id</i></code>
 
-## `$2A`: `checkcellnum` *contact_id*
+## `$2A`: <code>checkcellnum <i>contact_id</i></code>
 
-## `$2B`: `checktime` *time*
+## `$2B`: <code>checktime <i>time</i></code>
 
 - **`checkmorn`:** `checktime MORN`
 - **`checkday`:** `checktime DAY`
 - **`checknite`:** `checktime NITE`
 
-## `$2C`: `checkpoke` *mon_id*
+## `$2C`: <code>checkpoke <i>mon_id</i></code>
 
-## `$2D`: `givepoke` *mon_id*, *level*[, *item*=0[, *trainer*=0, *ot_name*, *nickname*]]
+## `$2D`: <code>givepoke <i>mon_id</i>, <i>level</i>[, <i>item</i>=0[, <i>trainer</i>=0, <i>ot_name</i>, <i>nickname</i>]]</code>
 
-## `$2E`: `giveegg` *mon_id*, *level*
+## `$2E`: <code>giveegg <i>mon_id</i>, <i>level</i></code>
 
-## `$2F`: `givepokeitem` *pointer*
+## `$2F`: <code>givepokeitem <i>pointer</i></code>
 
-## `$30`: `checkpokeitem` *pointer*
+## `$30`: <code>checkpokeitem <i>pointer</i></code>
 
-## `$31`: `checkevent` *event_flag*
+## `$31`: <code>checkevent <i>event_flag</i></code>
 
-## `$32`: `clearevent` *event_flag*
+## `$32`: <code>clearevent <i>event_flag</i></code>
 
-## `$33`: `setevent` *event_flag*
+## `$33`: <code>setevent <i>event_flag</i></code>
 
-## `$34`: `checkflag` *engine_flag*
+## `$34`: <code>checkflag <i>engine_flag</i></code>
 
-## `$35`: `clearflag` *engine_flag*
+## `$35`: <code>clearflag <i>engine_flag</i></code>
 
-## `$36`: `setflag` *engine_flag*
+## `$36`: <code>setflag <i>engine_flag</i></code>
 
 ## `$37`: `wildon`
 
 ## `$38`: `wildoff`
 
-## `$39`: `xycompare` *pointer*
+## `$39`: <code>xycompare <i>pointer</i></code>
 
-## `$3A`: `warpmod` *warp_id*, *map*
+## `$3A`: <code>warpmod <i>warp_id</i>, <i>map</i></code>
 
-## `$3B`: `blackoutmod` *map*
+## `$3B`: <code>blackoutmod <i>map</i></code>
 
-## `$3C`: `warp` *map*, *x*, *y*
+## `$3C`: <code>warp <i>map</i>, <i>x</i>, <i>y</i></code>
 
-## `$3D`: `readmoney` *account*, *memory*
+## `$3D`: <code>readmoney <i>account</i>, <i>memory</i></code>
 
-## `$3E`: `readcoins` *memory*
+## `$3E`: <code>readcoins <i>memory</i></code>
 
-## `$3F`: `RAM2MEM` *memory*
+## `$3F`: <code>vartomem <i>memory</i></code>
 
-## `$40`: `pokenamemem` *mon_id*, *memory*
+## `$40`: <code>pokenamemem <i>mon_id</i>, <i>memory</i></code>
 
-## `$41`: `itemtotext` *item_id*, *memory*
+## `$41`: <code>itemtotext <i>item_id</i>, <i>memory</i></code>
 
-## `$42`: `mapnametotext` *memory*
+## `$42`: <code>mapnametotext <i>memory</i></code>
 
-## `$43`: `trainertotext` *trainer_id*, *trainer_group*, *memory*
+## `$43`: <code>trainertotext <i>trainer_id</i>, <i>trainer_group</i>, <i>memory</i></code>
 
-## `$44`: `stringtotext` *text_pointer*, *memory*
+## `$44`: <code>stringtotext <i>text_pointer</i>, <i>memory</i></code>
 
 ## `$45`: `itemnotify`
 
@@ -151,35 +151,35 @@
 
 ## `$47`: `opentext`
 
-## `$48`: `refreshscreen` *dummy*
+## `$48`: <code>refreshscreen [<i>dummy</i>=0]</code>
 
 ## `$49`: `closetext`
 
-## `$4A`: `loadbytec2cf` *byte*
+## `$4A`: <code>loadbytec2cf <i>byte</i></code>
 
-## `$4B`: `farwritetext` *text_pointer*
+## `$4B`: <code>farwritetext <i>text_pointer</i></code>
 
-## `$4C`: `writetext` *text_pointer*
+## `$4C`: <code>writetext <i>text_pointer</i></code>
 
-## `$4D`: `repeattext` *byte1*, *byte2*
+## `$4D`: <code>repeattext <i>byte1</i>, <i>byte2</i></code>
 
 ## `$4E`: `yesorno`
 
-## `$4F`: `loadmenudata` *data_pointer*
+## `$4F`: <code>loadmenudata <i>data_pointer</i></code>
 
 ## `$50`: `closewindow`
 
-## `$51`: `jumptextfaceplayer` *text_pointer*
+## `$51`: <code>jumptextfaceplayer <i>text_pointer</i></code>
 
-## `$52`: `farjumptext` *text_pointer*
+## `$52`: <code>farjumptext <i>text_pointer</i></code>
 
-## `$53`: `jumptext` *text_pointer*
+## `$53`: <code>jumptext <i>text_pointer</i></code>
 
 ## `$54`: `waitbutton`
 
 ## `$55`: `buttonsound`
 
-## `$56`: `pokepic` *mon_id*
+## `$56`: <code>pokepic <i>mon_id</i></code>
 
 ## `$57`: `closepokepic`
 
@@ -193,21 +193,21 @@
 
 ## `$5C`: `loadmemtrainer`
 
-## `$5D`: `loadwildmon` *mon_id*, *level*
+## `$5D`: <code>loadwildmon <i>mon_id</i>, <i>level</i></code>
 
-## `$5E`: `loadtrainer` *trainer_group*, *trainer_id*
+## `$5E`: <code>loadtrainer <i>trainer_group</i>, <i>trainer_id</i></code>
 
 ## `$5F`: `startbattle`
 
 ## `$60`: `reloadmapafterbattle`
 
-## `$61`: `catchtutorial` *byte*
+## `$61`: <code>catchtutorial <i>byte</i></code>
 
-## `$62`: `trainertext` *which_text*
+## `$62`: <code>trainertext <i>which_text</i></code>
 
-## `$63`: `trainerflagaction` *action*
+## `$63`: <code>trainerflagaction <i>action</i></code>
 
-## `$64`: `winlosstext` *win_text_pointer*, *loss_text_pointer*
+## `$64`: <code>winlosstext <i>win_text_pointer</i>, <i>loss_text_pointer</i></code>
 
 ## `$65`: `scripttalkafter`
 
@@ -215,65 +215,65 @@
 
 ## `$67`: `check_just_battled`
 
-## `$68`: `setlasttalked` *object_id*
+## `$68`: <code>setlasttalked <i>object_id</i></code>
 
-## `$69`: `applymovement` *object_id*, *data_pointer*
+## `$69`: <code>applymovement <i>object_id</i>, <i>data_pointer</i></code>
 
-## `$6A`: `applymovement2` *data_pointer*
+## `$6A`: <code>applymovement2 <i>data_pointer</i></code>
 
 ## `$6B`: `faceplayer`
 
-## `$6C`: `faceobject` *object1*, *object2*
+## `$6C`: <code>faceobject <i>object1</i>, <i>object2</i></code>
 
-## `$6D`: `variablesprite` *variable_sprite_id*, *sprite_id*
+## `$6D`: <code>variablesprite <i>variable_sprite_id</i>, <i>sprite_id</i></code>
 
-## `$6E`: `disappear` *object_id*
+## `$6E`: <code>disappear <i>object_id</i></code>
 
-## `$6F`: `appear` *object_id*
+## `$6F`: <code>appear <i>object_id</i></code>
 
-## `$70`: `follow` *object2*, *object1*
+## `$70`: <code>follow <i>object2</i>, <i>object1</i></code>
 
 ## `$71`: `stopfollow`
 
-## `$72`: `moveobject` *object_id*, *x*, *y*
+## `$72`: <code>moveobject <i>object_id</i>, <i>x</i>, <i>y</i></code>
 
-## `$73`: `writeobjectxy` *object_id*
+## `$73`: <code>writeobjectxy <i>object_id</i></code>
 
-## `$74`: `loademote` *emote_id*
+## `$74`: <code>loademote <i>emote_id</i></code>
 
-## `$75`: `showemote` *emote_id*, *object_id*, *length*
+## `$75`: <code>showemote <i>emote_id</i>, <i>object_id</i>, <i>length</i></code>
 
-## `$76`: `spriteface` *object_id*, *facing*
+## `$76`: <code>spriteface <i>object_id</i>, <i>facing</i></code>
 
-## `$77`: `follownotexact` *object2*, *object1*
+## `$77`: <code>follownotexact <i>object2</i>, <i>object1</i></code>
 
-## `$78`: `earthquake` *param*
+## `$78`: <code>earthquake <i>param</i></code>
 
-## `$79`: `changemap` *bank*, *blockdata_pointer*
+## `$79`: <code>changemap <i>bank</i>, <i>blockdata_pointer</i></code>
 
-## `$7A`: `changeblock` *x*, *y*, *block*
+## `$7A`: <code>changeblock <i>x</i>, <i>y</i>, <i>block</i></code>
 
 ## `$7B`: `reloadmap`
 
 ## `$7C`: `reloadmappart`
 
-## `$7D`: `writecmdqueue` *queue_pointer*
+## `$7D`: <code>writecmdqueue <i>queue_pointer</i></code>
 
-## `$7E`: `delcmdqueue` *byte*
+## `$7E`: <code>delcmdqueue <i>byte</i></code>
 
-## `$7F`: `playmusic` *music_id*
+## `$7F`: <code>playmusic <i>music_id</i></code>
 
 ## `$80`: `encountermusic`
 
-## `$81`: `musicfadeout` *music_id*, *length*
+## `$81`: <code>musicfadeout <i>music_id</i>, <i>length</i></code>
 
 ## `$82`: `playmapmusic`
 
 ## `$83`: `dontrestartmapmusic`
 
-## `$84`: `cry` *mon_id*
+## `$84`: <code>cry <i>mon_id</i></code>
 
-## `$85`: `playsound` *sfx_id*
+## `$85`: <code>playsound <i>sfx_id</i></code>
 
 ## `$86`: `waitsfx`
 
@@ -281,68 +281,68 @@
 
 ## `$88`: `specialsound`
 
-## `$89`: `passtoengine` *data_pointer*
+## `$89`: <code>passtoengine <i>data_pointer</i></code>
 
-## `$8A`: `newloadmap` *which_method*
+## `$8A`: <code>newloadmap <i>which_method</i></code>
 
-## `$8B`: `pause` *length*
+## `$8B`: <code>pause <i>length</i></code>
 
-## `$8C`: `deactivatefacing` *length*
+## `$8C`: <code>deactivatefacing <i>length</i></code>
 
-## `$8D`: `priorityjump` *script*
+## `$8D`: <code>priorityjump <i>script</i></code>
 
 ## `$8E`: `warpcheck`
 
-## `$8F`: `ptpriorityjump` *script*
+## `$8F`: <code>ptpriorityjump <i>script</i></code>
 
 ## `$90`: `return`
 
 ## `$91`: `end`
 
-## `$92`: `reloadandreturn` *which_method*
+## `$92`: <code>reloadandreturn <i>which_method</i></code>
 
 ## `$93`: `end_all`
 
-## `$94`: `pokemart` *dialog_id*, *mart_id*
+## `$94`: <code>pokemart <i>dialog_id</i>, <i>mart_id</i></code>
 
-## `$95`: `elevator` *floor_list*
+## `$95`: <code>elevator <i>floor_list</i></code>
 
-## `$96`: `trade` *trade_id*
+## `$96`: <code>trade <i>trade_id</i></code>
 
-## `$97`: `askforphonenumber` *contact_id*
+## `$97`: <code>askforphonenumber <i>contact_id</i></code>
 
-## `$98`: `phonecall` *call_id*
+## `$98`: <code>phonecall <i>call_id</i></code>
 
 ## `$99`: `hangup`
 
-## `$9A`: `describedecoration` *byte*
+## `$9A`: <code>describedecoration <i>byte</i></code>
 
-## `$9B`: `fruittree` *tree_id*
+## `$9B`: <code>fruittree <i>tree_id</i></code>
 
-## `$9C`: `specialphonecall` *call_id*
+## `$9C`: <code>specialphonecall <i>call_id</i></code>
 
 ## `$9D`: `checkphonecall`
 
-## `$9E`: `verbosegiveitem` *item_id*[, *quantity*=1]
+## `$9E`: <code>verbosegiveitem <i>item_id</i>[, <i>quantity</i>=1]</code>
 
-## `$9F`: `verbosegiveitem2` *item_id*, *variable*
+## `$9F`: <code>verbosegiveitem2 <i>item_id</i>, <i>variable</i></code>
 
-## `$A0`: `swarm` *swarm_id*, *map*
+## `$A0`: <code>swarm <i>swarm_id</i>, <i>map</i></code>
 
 ## `$A1`: `halloffame`
 
 ## `$A2`: `credits`
 
-## `$A3`: `warpfacing` *facing*, *map*, *x*, *y*
+## `$A3`: <code>warpfacing <i>facing</i>, <i>map</i>, <i>x</i>, <i>y</i></code>
 
-## `$A4`: `battletowertext` *memory*
+## `$A4`: <code>battletowertext <i>memory</i></code>
 
-## `$A5`: `landmarktotext` *landmark_id*, *memory*
+## `$A5`: <code>landmarktotext <i>landmark_id</i>, <i>memory</i></code>
 
-## `$A6`: `trainerclassname` *trainer_group*, *memory*
+## `$A6`: <code>trainerclassname <i>trainer_group</i>, <i>memory</i></code>
 
-## `$A7`: `name` *type*, *id*, *memory*
+## `$A7`: <code>name <i>type</i>, <i>id</i>, <i>memory</i></code>
 
-## `$A8`: `wait` *duration*
+## `$A8`: <code>wait <i>duration</i></code>
 
 ## `$A9`: `check_save`
binary files a/docs/images/hp_exp_bar_border.png b/docs/images/hp_exp_bar_border.png differ
binary files a/docs/images/hp_exp_bar_border_fix.png b/docs/images/hp_exp_bar_border_fix.png differ
binary files a/docs/images/port.png b/docs/images/port.png differ
binary files a/docs/images/port_fix.png b/docs/images/port_fix.png differ
--- a/docs/map_scripts.md
+++ b/docs/map_scripts.md
@@ -1,42 +1,57 @@
 # Map Scripts
 
 
-## `const_value set 2`
+## <code>const_value set 2</code>
 
-- **`const` *`MAPNAME_OBJECTNAME`***
+<pre>
+	const <i>MAPNAME</i>_<i>OBJECTNAME</i>
+</pre>
 
 
-## `MapName_MapScriptHeader:`
+## <code>MapName_MapScripts:</code>
 
 
-## `.SceneScripts: db` *N*
+### <code>.SceneScripts: db <i>N</i></code>
 
-- **`scene_script` *script***
+<pre>
+	scene_script <i>script</i>
+</pre>
 
 
-## `.MapCallbacks: db` *N*
+### <code>.MapCallbacks: db <i>N</i></code>
 
-- **`dbw` *type*, *script***
+<pre>
+	callback <i>type</i>, <i>script</i>
+</pre>
 
 Callback types:
 
-- **`MAPCALLBACK_NEWMAP`**
+- `MAPCALLBACK_NEWMAP`
 
-- **`MAPCALLBACK_TILES`**
+- `MAPCALLBACK_TILES`
 
-- **`MAPCALLBACK_OBJECTS`**
+- `MAPCALLBACK_OBJECTS`
 
-- **`MAPCALLBACK_SPRITES`**
+- `MAPCALLBACK_SPRITES`
 
-- **`MAPCALLBACK_CMDQUEUE`**
+- `MAPCALLBACK_CMDQUEUE`
 
-  **`dbw CMDQUEUE_STONETABLE,` *table_pointer***
-  
-  **`stonetable` *warp_id*, *person*, *script***
-  
-  **`db -1 ; end`**
+<pre>
+	callback MAPCALLBACK_CMDQUEUE, .Boulders
 
+.Boulders:
+	writecmdqueue .BoulderCmdQueue
+	return
 
+.BoulderCmdQueue:
+	cmdqueue CMDQUEUE_STONETABLE, .BoulderTable
+
+.BoulderTable:
+	stonetable <i>warp_id</i>, <i>person</i>, <i>script</i>
+	db -1 ; end
+</pre>
+
+
 ## Event scripts
 
 [Event commands](event_commands.md)
@@ -52,88 +67,106 @@
 [Movement commands](movement_commands.md)
 
 
-## `MapName_MapEventHeader:`
+## <code>MapName_MapEvents:</code>
 
+```asm
 	; filler
 	db 0, 0
+```
 
 
-## `.Warps: db` *N*
+### <code>.Warps: db <i>N</i></code>
 
-- **`warp_def` *x*, *y*, *warp_id*, *map***
+<pre>
+	warp_def <i>x</i>, <i>y</i>, <i>warp_id</i>, <i>map</i>
+</pre>
 
 
-## `.CoordEvents: db` *N*
+### <code>.CoordEvents: db <i>N</i></code>
 
-- **`coord_event` *x*, *y*, *scene_id*, *script***
+<pre>
+	coord_event <i>x</i>, <i>y</i>, <i>scene_id</i>, <i>script</i>
+</pre>
 
 
-## `.BGEvents: db` *N*
+### <code>.BGEvents: db <i>N</i></code>
 
-- **`bg_event` *x*, *y*, *type*, *script***
+<pre>
+	bg_event <i>x</i>, <i>y</i>, <i>type</i>, <i>script</i>
+</pre>
 
 BG event types:
 
-- **`BGEVENT_READ`**
+- `BGEVENT_READ`
 
-- **`BGEVENT_UP/DOWN/LEFT/RIGHT`**
+- `BGEVENT_UP/DOWN/LEFT/RIGHT`
 
-- **`BGEVENT_IFSET/IFNOTSET`**
+- `BGEVENT_IFSET/IFNOTSET`
 
-  **`dw` *event_flag*, *script***
+<pre>
+	conditional_event <i>event_flag</i>, <i>script</i>
+</pre>
 
-- **`BGEVENT_ITEM`**
+- `BGEVENT_ITEM`
 
-  **`dwb` *event_flag*, *item_id***
+<pre>
+	hiddenitem <i>event_flag</i>, <i>item_id</i>
+</pre>
 
-- **`BGEVENT_COPY`**
+- `BGEVENT_COPY`
 
-## `.ObjectEvents: db` *N*
+### <code>.ObjectEvents: db <i>N</i></code>
 
-- **`object_event` *x*, *y*, *sprite*, *movement*, *rx*, *ry*, *h1*, *h2*, *palette*, *type*, *range*, *script*, *event_flag***
+<pre>
+	object_event <i>x</i>, <i>y</i>, <i>sprite</i>, <i>movement</i>, <i>rx</i>, <i>ry</i>, <i>h1</i>, <i>h2</i>, <i>palette</i>, <i>type</i>, <i>range</i>, <i>script</i>, <i>event_flag</i>
+</pre>
 
 Movement types:
 
-- **`SPRITEMOVEDATA_ITEM_TREE`**
+- `SPRITEMOVEDATA_ITEM_TREE`
 
-- **`SPRITEMOVEDATA_WANDER`**
+- `SPRITEMOVEDATA_WANDER`
 
-- **`SPRITEMOVEDATA_SPINRANDOM_SLOW`**
+- `SPRITEMOVEDATA_SPINRANDOM_SLOW`
 
-- **`SPRITEMOVEDATA_WALK_UP_DOWN`**
+- `SPRITEMOVEDATA_WALK_UP_DOWN`
 
-- **`SPRITEMOVEDATA_WALK_LEFT_RIGHT`**
+- `SPRITEMOVEDATA_WALK_LEFT_RIGHT`
 
-- **`SPRITEMOVEDATA_STANDING_UP/DOWN/LEFT/RIGHT`**
+- `SPRITEMOVEDATA_STANDING_UP/DOWN/LEFT/RIGHT`
 
-- **`SPRITEMOVEDATA_SPINRANDOM_FAST`**
+- `SPRITEMOVEDATA_SPINRANDOM_FAST`
 
-- **`SPRITEMOVEDATA_SNORLAX`**
+- `SPRITEMOVEDATA_SNORLAX`
 
-- **`SPRITEMOVEDATA_POKEMON`**
+- `SPRITEMOVEDATA_POKEMON`
 
-- **`SPRITEMOVEDATA_SUDOWOODO`**
+- `SPRITEMOVEDATA_SUDOWOODO`
 
-- **`SPRITEMOVEDATA_SMASHABLE_ROCK`**
+- `SPRITEMOVEDATA_SMASHABLE_ROCK`
 
-- **`SPRITEMOVEDATA_STRENGTH_BOULDER`**
+- `SPRITEMOVEDATA_STRENGTH_BOULDER`
 
-- **`SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE`**
+- `SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE`
 
-- **`SPRITEMOVEDATA_SPINCLOCKWISE`**
+- `SPRITEMOVEDATA_SPINCLOCKWISE`
 
-- **`SPRITEMOVEDATA_BIGDOLL`**
+- `SPRITEMOVEDATA_BIGDOLL`
 
-- **`SPRITEMOVEDATA_LAPRAS`**
+- `SPRITEMOVEDATA_LAPRAS`
 
 Object types:
 
-- **`OBJECTTYPE_SCRIPT`**
+- `OBJECTTYPE_SCRIPT`
 
-- **`OBJECTTYPE_ITEMBALL`**
+- `OBJECTTYPE_ITEMBALL`
 
-  **`itemball` *item_id***
+<pre>
+	itemball <i>item_id</i>
+</pre>
 
-- **`OBJECTTYPE_TRAINER`**
+- `OBJECTTYPE_TRAINER`
 
-  **`trainer` *event_flag*, *group_id*, *trainer_id*, *seen_text*, *beaten_text*, *loss_text*, *script***
+<pre>
+	trainer <i>event_flag</i>, <i>group_id</i>, <i>trainer_id</i>, <i>seen_text</i>, <i>beaten_text</i>, <i>loss_text</i>, <i>script</i>
+</pre>
--- /dev/null
+++ b/docs/menu.md
@@ -1,0 +1,299 @@
+# Everything you've ever wanted to know about menus*
+
+**\* but were afraid to ask**
+
+
+## Contents
+
+- [ScrollingMenu](#scrollingmenu)
+- [\_2DMenu](#_2dmenu)
+- [DoNthMenu/SetUpMenu](#donthmenusetupmenu)
+- [VerticalMenu](#verticalmenu)
+- [Misc/Generic](#miscgeneric)
+
+
+## `ScrollingMenu`
+
+This is the only menu that does scrolling. It doesn't draw any `TextBox` around the menu.
+
+Structure:
+
+```asm
+.MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 2, 4, SCREEN_WIDTH - 1, 13
+	dw .MenuData2
+	db 1 ; default option
+
+.MenuData2:
+	db 0 ; flags
+	db 5, 0 ; rows, columns
+	db 1 ; horizontal spacing
+	dba Items
+	dba Function1
+	dba Function2
+	dba Function3
+```
+
+`wMenuData2Flags`:
+
+```
+7: Select is functional
+6: Start is functional
+5: Call Function3
+4: Show arrows on the right-hand side
+3: D-Left is functional
+2: D-Right is functional
+1: Call Function3 only if [wSwitchItem] is 0
+0: Call Function1 to display the cancel entry
+```
+
+If the columns entry in `MenuDataHeader2` of a scrolling menu is 0, `Function2` isn't called either. It doesn't affect the position of the arrows.
+
+Call state for functions in `MenuDataHeader2` of `ScrollingMenu`:
+
+```
+All of them:
+[MenuSelection] = Current item. -1 is the CANCEL item.
+[MenuSelectionQuantity] = Quantity of the current item.
+
+Function1: Called to display a menu entry.
+de = Cursor position in TileMap
+
+Function2: Called to display the quantity of a menu entry.
+de = Cursor position in TileMap + columns
+
+Function3: Called to display anything else, whenever the cursor is moved.
+```
+
+There is no register of importance that should be preserved in any of these functions.
+
+The `; horizontal spacing` item in each `MenuData2` is a misnomer. It changes how the `Items` struct looks.
+
+If it's 1:
+
+```
+db entries not including cancel
+db entry1
+db entry2
+db -1 ; cancel
+...
+```
+
+If it's 2:
+
+```
+db entries not including cancel
+db entry1, quantity1
+db entry2, quantity2
+db -1 ; cancel
+...
+```
+
+In case it's 1, `[MenuSelectionQuantity]` will simply contain the next entry.
+
+## `_2DMenu`
+
+This, like is implied by the name, is a 2-dimensional menu, where you can move your cursor in all 4 directions. It's only used for the battle menus as well as Earl's academy.
+
+Structure:
+
+```asm
+.MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	db 12, 08 ; start coords
+	db 17, 19 ; end coords
+	dw .MenuData2
+	db 1 ; default option
+
+.MenuData2:
+	db STATICMENU_CURSOR ; flags
+	dn 2, 2 ; rows, columns
+	db 6 ; spacing
+	dba Strings
+	dba Function
+```
+
+`wMenuData2Flags`:
+
+```
+7: Leave one tile of spacing between the left textbox border and the text, enabling the cursor.
+6: Don't leave one tile of spacing between the top textbox border and the text
+5: Set bits 4 and 5 in w2DMenuFlags1 (Wrap around horizontally and vertically)
+4: Unused
+3: Unused
+2: Unused
+1: Select is functional
+0: Disable B button
+```
+
+The bank for the `Strings` is generated when you call `_2DMenu`, and as such it doesn't really matter what bank you specify there (unless you callba `_2DMenu_` directly, of course).
+
+`; spacing` is not a misnomer here, it's used to define how much space there is between columns.
+
+`Function` is called after printing all the strings. `hl` will be pointed at the row below the last in the menu in `TileMap`. We don't know of its purpose, since it's never actually used anywhere. Only the bank number is always set to the same bank as the menu, but not used otherwise, since the address is 0.
+
+
+## `DoNthMenu`/`SetUpMenu`
+
+These are like the regular `VerticalMenu`, except they allow for creating slightly more "dynamic" menus, where the options aren't predefined, much like the `ScrollingMenu`.
+
+Structure:
+
+```
+.MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 10, 7
+	dw .MenuData2
+	db 1 ; default option
+
+.MenuData2:
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
+	db 0 ; items
+	dw Items
+	dw DisplayFunction
+	dw StringPointers
+```
+
+`wMenuData2Flags`:
+
+```
+7: Unused
+6: Unused
+5: Set bit 5 in w2DMenuFlags1 (Wrap around vertically)
+4: Unused
+3: Start is functional
+2: D-left and D-right are functional
+1: Unused
+0: Unused
+```
+
+The `; items` entry should be left empty, as it's autogenerated with the `Items` array in `GetMenuIndexSet`.
+
+The bottom coord (`07` in the example) is autogenerated regardless of what you specify when building the MenuBox in `AutomaticGetMenuBottomCoord`, which also calculates the `bc` passed to MenuBox, which is useless because it's calculated again by MenuBox in `GetMenuBoxDims`.
+
+`[wWhichIndexSet]` decides which menu is used through `GetMenuIndexSet`. You can define multiple menus at the Items pointer as such:
+
+```
+Items:
+db entries not including cancel
+db entry1, entry2, entry3
+db -1 ; cancel
+db entries not including cancel for 2nd menu
+db entry1, entry2, entry3, entry4
+db -1 ; cancel
+```
+
+This is actively used in `MainMenu`.
+
+`StringPointers` isn't handled by `DoNthMenu` internally. It's handled by different `DisplayFunction`s. A custom one could choose to completely ignore it.
+
+`StringPointers` struct handled through `PlaceNthMenuStrings` as `DisplayFunction` and `MenuJumptable`:
+
+```asm
+StringPointers:
+	dw FunctionToCall, PointerToString ; index 1
+	dw FunctionToCall, PointerToString ; index 2
+...
+```
+
+`StringPointers` struct handled through `PlaceMenuStrings`:
+
+```asm
+StringPointers:
+	db "STRING1@"
+	db "STRING2@"
+...
+```
+
+Call state for `DisplayFunction`:
+```
+[MenuSelection] = Current item. -1 is the CANCEL item.
+de = Cursor position in TileMap
+```
+
+## `VerticalMenu`
+
+This is the simplest menu. Like, the most boring. Nothing special. Just normal. …nooooooormal…
+
+Structure:
+
+```asm
+.MenuDataHeader:
+	db MENU_SPRITE_ANIMS | MENU_BACKUP_TILES ; flags
+	menu_coords 12, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
+	dw .MenuData2
+	db 1 ; default option
+
+.MenuData2:
+	db STATICMENU_CURSOR ; flags
+	db 2 ; # items
+	db "GIVE@"
+	db "TAKE@"
+```
+
+`wMenuData2Flags`:
+
+```
+7: Leave one tile of spacing between the left textbox border and the text
+6: Don't leave one tile of spacing between the top textbox border and the text
+5: Set bit 5 in w2DMenuFlags1 (Wrap around vertically)
+4: Place menubox "title". See notes.
+3: Unused
+2: Unused
+1: Select is functional
+0: Disable B button
+```
+
+If bit 4 is set, a string at the end of the items array will be put at an offset from the start coord of the menu box. This string is defined like this:
+
+```asm
+	db 2 ; # items
+	db "GIVE@"
+	db "TAKE@"
+	db 2 ; x offset
+	db "TEST@"
+```
+
+This is used in the menu for selecting the character's name.
+
+## Misc/Generic
+
+`MenuDataHeader` flags (`wMenuFlags`):
+
+```
+7: Save a backup of the tiles
+6: Save a backup of the tiles
+5: Unused
+4: Set bit 6 in w2DMenuFlags1 (Enable sprite animations)
+3: Disable click sound
+2: Unused
+1: Unused
+0: Call RestoreTileBackup when exiting the menu. This bit depends on whether bit 6 or 7 are set.
+```
+
+`w2DMenuFlags1`:
+
+```
+7: Disable checking of wMenuJoypadFilter
+6: Enable sprite animations
+5: Wrap around vertically
+4: Wrap around horizontally
+3: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far down
+2: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far up
+1: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far left
+0: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far right
+```
+
+`w2DMenuFlags2`:
+
+```
+7: ?????
+6: ?????
+5: ?????
+4: ?????
+3: ?????
+2: ?????
+1: ?????
+0: ?????
+```
--- a/docs/move_effect_commands.md
+++ b/docs/move_effect_commands.md
@@ -1,6 +1,6 @@
 # Move Effect Commands
 
-Defined in [macros/scripts/battle_commands.asm](/macros/scripts/battle_commands.asm) and [data/battle_command_pointers.asm:BattleCommandPointers](/data/battle_command_pointers.asm).
+Defined in [macros/scripts/battle_commands.asm](/macros/scripts/battle_commands.asm) and [data/battle/effect_command_pointers.asm:BattleCommandPointers](/data/battle/effect_command_pointers.asm).
 
 
 ## `$01`: `checkturn`
--- a/docs/movement_commands.md
+++ b/docs/movement_commands.md
@@ -3,33 +3,33 @@
 Defined in [macros/scripts/movement.asm](/macros/scripts/movement.asm) and [engine/movement.asm:MovementPointers](/engine/movement.asm).
 
 
-## `$00`−`$03`: `turn_head` *direction*
+## `$00`−`$03`: <code>turn_head <i>direction</i></code>
 
-## `$04`−`$07`: `turn_step` *direction*
+## `$04`−`$07`: <code>turn_step <i>direction</i></code>
 
-## `$08`−`$0B`: `slow_step` *direction*
+## `$08`−`$0B`: <code>slow_step <i>direction</i></code>
 
-## `$0C`−`$0F`: `step` *direction*
+## `$0C`−`$0F`: <code>step <i>direction</i></code>
 
-## `$10`−`$13`: `big_step` *direction*
+## `$10`−`$13`: <code>big_step <i>direction</i></code>
 
-## `$14`−`$17`: `slow_slide_step` *direction*
+## `$14`−`$17`: <code>slow_slide_step <i>direction</i></code>
 
-## `$18`−`$1B`: `slide_step` *direction*
+## `$18`−`$1B`: <code>slide_step <i>direction</i></code>
 
-## `$1C`−`$1F`: `fast_slide_step` *direction*
+## `$1C`−`$1F`: <code>fast_slide_step <i>direction</i></code>
 
-## `$20`−`$23`: `turn_away` *direction*
+## `$20`−`$23`: <code>turn_away <i>direction</i></code>
 
-## `$24`−`$27`: `turn_in` *direction*
+## `$24`−`$27`: <code>turn_in <i>direction</i></code>
 
-## `$28`−`$2B`: `turn_waterfall` *direction*
+## `$28`−`$2B`: <code>turn_waterfall <i>direction</i></code>
 
-## `$2C`−`$2F`: `slow_jump_step` *direction*
+## `$2C`−`$2F`: <code>slow_jump_step <i>direction</i></code>
 
-## `$30`−`$33`: `jump_step` *direction*
+## `$30`−`$33`: <code>jump_step <i>direction</i></code>
 
-## `$34`−`$37`: `fast_jump_step` *direction*
+## `$34`−`$37`: <code>fast_jump_step <i>direction</i></code>
 
 ## `$38`: `remove_sliding`
 
@@ -43,11 +43,11 @@
 
 ## `$3D`: `hide_object`
 
-## `$3E`−`$46`: `step_sleep` *length*
+## `$3E`−`$46`: <code>step_sleep <i>length</i></code>
 
 ## `$47`: `step_end`
 
-## `$48`: `step_48` *param*
+## `$48`: <code>step_48 <i>param</i></code>
 
 ## `$49`: `remove_object`
 
@@ -61,7 +61,7 @@
 
 ## `$4E`: `skyfall`
 
-## `$4F`: `step_dig` *length*
+## `$4F`: <code>step_dig <i>length</i></code>
 
 ## `$50`: `step_bump`
 
@@ -73,12 +73,12 @@
 
 ## `$54`: `show_emote`
 
-## `$55`: `step_shake` *displacement*
+## `$55`: <code>step_shake <i>displacement</i></code>
 
 ## `$56`: `tree_shake`
 
-## `$57`: `rock_smash` *length*
+## `$57`: <code>rock_smash <i>length</i></code>
 
-## `$58`: `return_dig` *length*
+## `$58`: <code>return_dig <i>length</i></code>
 
 ## `$59`: `skyfall_top`
--- a/docs/music_commands.md
+++ b/docs/music_commands.md
@@ -5,28 +5,33 @@
 *See also: [Sound Engine Commands](https://github.com/pret/pokecrystal/wiki/Sound-Engine-Commands)*
 
 
-## `musicheader` *n*, *index*, *address*
+## <code>musicheader <i>n</i>, <i>index</i>, <i>address</i></code>
 
-## `note` *pitch*, *length*
 
+## <code>note <i>pitch</i>, <i>length</i></code>
+
 (Used on all channels)
 
 The high nibble is the note to play. 0 is rest, 1 is `C_`, 2 is `C#`, etc; `$C` is `B_`.
 The low nibble is the length of the note. 1 gets added to this, so 0 still has a length.
 
-## `sound` *pitch*, *octave*, *intensity*, *frequency*
 
-## `noise` *pitch*, *duration*, *intensity*, *frequency*
+## <code>sound <i>pitch</i>, <i>octave</i>, <i>intensity</i>, <i>frequency</i></code>
 
-## `$D0`−`$D7`: `octave` *n*
 
+## <code>noise <i>pitch</i>, <i>duration</i>, <i>intensity</i>, <i>frequency</i></code>
+
+
+## `$D0`−`$D7`: <code>octave <i>n</i></code>
+
 (Used in channels 1-3)
 
 Sets the octave for the notes played on the channel.
 `$D7` is the lowest octave, whereas `$D0` is the highest.
 
-## `$D8`: `notetype` *length*[, *intensity*]
 
+## `$D8`: <code>notetype <i>length</i>[, <i>intensity</i>]</code>
+
 (Used in channels 1-4) (When using in channel 4, the *intensity* byte is not needed)
 
 Sets the length multiplier of notes on the channel, and the envelope for channels 1-3 (see `intensity`).
@@ -34,8 +39,9 @@
 
 The second byte is identical to the first byte in the `intensity` command.
 
-## `$D9`: `pitchoffset` *octave*, *key*
 
+## `$D9`: <code>pitchoffset <i>octave</i>, <i>key</i></code>
+
 (Used in channels 1-3)
 
 Transposes all notes played on the channel by a value.
@@ -42,8 +48,9 @@
 The high nibble determins how many octaves to subtract, while the low nibble is how many note values to add.
 Ex: Setting a value of `$13` would make a `C_`4 play as a `D#`3.
 
-## `$DA`: `tempo` *tempo*
 
+## `$DA`: <code>tempo <i>tempo</i></code>
+
 (Used in channel 1)
 
 Sets the tempo for all playing channels. This should only be called on channel 1.
@@ -53,8 +60,9 @@
 
 Only set or change this value when all playing channels are triggering a note or rest at the same time, otherwise desyncs may happen.
 
-## `$DB`: `dutycycle` *duty_cycle*
 
+## `$DB`: <code>dutycycle <i>duty_cycle</i></code>
+
 (Used on channels 1&2)
 
 Sets the square duty (sound) for the current channel. To change the sound for channel 3, use intensity. The only accepted values are 0-3.
@@ -64,8 +72,9 @@
 - 2 = 50% waveform: `____¯¯¯¯`
 - 3 = 75% waveform: `__¯¯¯¯¯¯` (sounds the same as 25%)
 
-## `$DC`: `intensity` *intensity*
 
+## `$DC`: <code>intensity <i>intensity</i></code>
+
 (Used on channels 1-3) (Used to set instrument on channel 3)
 
 For channels 1&2:
@@ -74,10 +83,12 @@
 For channel 3:
 The high nibble sets the volume of channel 3. Only 4 values are accepted (0=Mute, 1=100% volume, 2=50% volume, 3=25% volume). The low nibble sets the instrument/waveform for channel 3 to play. Crystal natively has 10 instruments, values 0-9.
 
-## `$DD`: `soundinput` *input*
 
-## `$DE`: `sound_duty` *a*, *b*, *c*, *d*
+## `$DD`: <code>soundinput <i>input</i></code>
 
+
+## `$DE`: <code>sound_duty <i>a</i>, <i>b</i>, <i>c</i>, <i>d</i></code>
+
 (Used on channels 1&2)
 
 This cycles the channel through 4 duty definitions, one per frame.
@@ -84,10 +95,12 @@
 Each pair of bits defines a duty, same as the `dutycycle` command.
 This is mostly only used in cries, SFX, and Jigglypuff's song in RBY.
 
+
 ## `$DF`: `togglesfx`
 
-## `$E0`: `slidepitchto` *duration*, *octave*, *pitch*
 
+## `$E0`: <code>slidepitchto <i>duration</i>, <i>octave</i>, <i>pitch</i></code>
+
 (Used on channel 1)
 
 This bends the pitch of the note played next, and only that note.
@@ -95,8 +108,9 @@
 The high nibble of the second byte is the octave of the destination note.
 The low nibble of the second byte is the destination note. If rest is used as the destination note, then the whole destination pitch becomes `$0000` (the lowest pitch).
 
-## `$E1`: `vibrato` *delay*, *extent*
 
+## `$E1`: <code>vibrato <i>delay</i>, <i>extent</i></code>
+
 (Used on channels 1-3)
 
 Modifies pitch after the timer runs out, making notes sound less "flat".
@@ -105,21 +119,24 @@
 Second byte, low nibble is the pitch depth. Half of this value will alternate between adding to the pitch, and subtracting from the pitch each time speed timer resets. When this is an odd number, the value added to the pitch will be greater than the value subtracted from the pitch.
 Ex: normal pitch of 405, if pitch depth = 3, it will alternate between 407 and 404. Speed timer does NOT reset when a new note is played. only when the song stops or changes. (Also, because a timer counts 0, a timer of 5 will take 6 frames to change.)
 
-## `$E2`: `unknownmusic0xe2` *unknown*
 
-## `$E3`: `togglenoise` *id*
+## `$E2`: <code>unknownmusic0xe2 <i>unknown</i></code>
 
+
+## `$E3`: <code>togglenoise <i>id</i></code>
+
 (Used on channel 4)
 
 Sets the "drum kit" to be used. This needs to be called before channel 4 can make any noise.
 Calling it more than once in a song will mute the channel. (Keep it out of loops!)
 
-## `$E4`: `panning` *tracks*
 
-## `$E5`: `volume` *volume*
+## `$E4`: <code>panning <i>tracks</i></code>
 
-## `$E6`: `tone` *tone*
+## `$E5`: <code>volume <i>volume</i></code>
 
+## `$E6`: <code>tone <i>tone</i></code>
+
 (Used on channel 1-3)
 
 This modifies the pitch of the notes (fine tuning).
@@ -126,52 +143,77 @@
 It makes notes sound better if multiple channels play the same note simultaneously.
 A lot of GSC songs set the main melody channel with a value of 1, and the secondary channel (not bass) as 2.
 
-## `$E7`: `unknownmusic0xe7` *unknown*
 
-## `$E8`: `unknownmusic0xe8` *unknown*
+## `$E7`: <code>unknownmusic0xe7 <i>unknown</i></code>
 
-## `$E9`: `tempo_relative` *value*
 
-## `$EA`: `restartchannel` *address*
+## `$E8`: <code>unknownmusic0xe8 <i>unknown</i></code>
 
-## `$EB`: `newsong` *id*
 
-## `$EC`: `sfxpriorityon`
+## `$E9`: <code>tempo_relative <i>value</i></code>
 
-## `$ED`: `sfxpriorityoff`
 
-## `$EE`: `unknownmusic0xee` *address*
+## `$EA`: <code>restartchannel <i>address</i></code>
 
-## `$EF`: `stereopanning` *tracks*
 
-## `$F0`: `sfxtogglenoise` *id*
+## `$EB`: <code>newsong <i>id</i></code>
 
+
+## `$EC`: <code>sfxpriorityon</i></code>
+
+
+## `$ED`: <code>sfxpriorityoff</i></code>
+
+
+## `$EE`: <code>unknownmusic0xee <i>address</i></code>
+
+
+## `$EF`: <code>stereopanning <i>tracks</i></code>
+
+
+## `$F0`: <code>sfxtogglenoise <i>id</i></code>
+
+
 ## `$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*
+## `$FA`: <code>setcondition <i>condition</i></code>
 
-## `$FC`: `jumpchannel` *address*
 
-## `$FD`: `loopchannel` *count*, *address*
+## `$FB`: <code>jumpif <i>condition</i>, <i>address</i></code>
 
-## `$FE`: `callchannel` *address*
+
+## `$FC`: <code>jumpchannel <i>address</i></code>
+
+
+## `$FD`: <code>loopchannel <i>count</i>, <i>address</i></code>
+
+
+## `$FE`: <code>callchannel <i>address</i></code>
+
 
 ## `$FF`: `endchannel`
--- a/docs/pic_animations.md
+++ b/docs/pic_animations.md
@@ -5,9 +5,9 @@
 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)
+   - <code>frame <i>N</i>, <i>duration</i></code>: Frame #0 is the original pic (no change)
+   - <code>setrepeat <i>N</i></code>: Sets the number of times to repeat
+   - <code>dorepeat <i>I</i></code>: Repeats from command #<i>I</i> (starting from 0)
    - `end`
 
 - Bitmasks:
--- a/docs/text_commands.md
+++ b/docs/text_commands.md
@@ -3,32 +3,32 @@
 Defined in [macros/scripts/text.asm](/macros/scripts/text.asm) and [home/text.asm:TextCommands](/home/text.asm).
 
 
-## `$00`: `text` *text*
+## `$00`: <code>text <i>text</i></code>
 
 Start writing text until `"@"`.
 
 
-## `$4E`: `next` *text*
+## `$4E`: <code>next <i>text</i></code>
 
 Move a line down.
 
 
-## `$4F`: `line` *text*
+## `$4F`: <code>line <i>text</i></code>
 
 Start writing at the bottom line.
 
 
-## `$50`: `page` *text*
+## `$50`: <code>page <i>text</i></code>
 
 Start a new Pokédex page.
 
 
-## `$51`: `para` *text*
+## `$51`: <code>para <i>text</i></code>
 
 Start a new paragraph.
 
 
-## `$55`: `cont` *text*
+## `$55`: <code>cont <i>text</i></code>
 
 Scroll to the next line.
 
@@ -43,12 +43,12 @@
 Prompt the player to end a text box (initiating some other event).
 
 
-## `$01`: `text_from_ram` *address*
+## `$01`: <code>text_from_ram <i>address</i></code>
 
 Write text from a RAM address.
 
 
-## `$02`: `text_bcd` *address*, *flags*
+## `$02`: <code>text_bcd <i>address</i>, <i>flags</i></code>
 
 Write [BCD][bcd] from an address, typically RAM.
 
@@ -55,12 +55,12 @@
 [bcd]: https://en.wikipedia.org/wiki/Binary-coded_decimal
 
 
-## `$03`: `text_move` *address*
+## `$03`: <code>text_move <i>address</i></code>
 
 Move to a new tile.
 
 
-## `$04`: `text_box` *address*, *height*, *width*
+## `$04`: <code>text_box <i>address</i>, <i>height</i>, <i>width</i></code>
 
 Draw a box.
 
@@ -86,7 +86,7 @@
 Start interpreting assembly code.
 
 
-## `$09`: `deciram` *address*, *bytes*, *digits*
+## `$09`: <code>deciram <i>address</i>, <i>bytes</i>, <i>digits</i></code>
 
 Read *bytes* bytes from *address* and print them as a *digits*-digit number.
 
@@ -101,9 +101,9 @@
 Play `SFX_DEX_FANFARE_50_79`.
 
 
-## `$0C`: `limited_interpret_data` *number*
+## `$0C`: <code>limited_interpret_data <i>n</i></code>
 
-Print *number* `"…"`s.
+Print *n* `"…"`s.
 
 
 ## `$0D`: `link_wait_button`
@@ -141,9 +141,9 @@
 Play `SFX_SLOT_MACHINE_START`.
 
 
-## `$14`: `text_buffer` *id*
+## `$14`: <code>text_buffer <i>id</i></code>
 
-Write text from one of the following addresses (listed in `StringBufferPointers`):
+Write text from one of the following addresses (listed in [data/text_buffers.asm](/data/text_buffers.asm)):
 
 0. `StringBuffer3`
 1. `StringBuffer4`
@@ -159,6 +159,11 @@
 Print the weekday.
 
 
-## `$16`: `text_jump` *address*
+## `$16`: <code>text_jump <i>address</i></code>
 
 Write text from a different bank.
+
+
+## `$00`: `text_start`
+
+Start writing regular text again after a special command.
--- a/engine/battle/ai/items.asm
+++ b/engine/battle/ai/items.asm
@@ -291,7 +291,7 @@
 	dbw X_DEFEND,     .XDefend
 	dbw X_SPEED,      .XSpeed
 	dbw X_SPECIAL,    .XSpecial
-	db $ff
+	db -1 ; end
 ; 381be
 
 .FullHeal: ; 381be
--- a/engine/battle/ai/move.asm
+++ b/engine/battle/ai/move.asm
@@ -56,7 +56,7 @@
 	inc hl
 	ld a, [de]
 	inc de
-	and $3f
+	and PP_MASK
 	jr nz, .CheckMovePP
 	ld [hl], 80
 	jr .CheckMovePP
@@ -92,7 +92,7 @@
 
 	push bc
 	ld d, BANK(TrainerClassAttributes)
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld d, c
 	pop bc
 
@@ -186,7 +186,7 @@
 .ChooseMove:
 	ld hl, Buffer1
 	call Random
-	and 3
+	maskbits NUM_MOVES
 	ld c, a
 	ld b, 0
 	add hl, bc
--- a/engine/battle/ai/scoring.asm
+++ b/engine/battle/ai/scoring.asm
@@ -68,7 +68,7 @@
 	db EFFECT_TOXIC
 	db EFFECT_POISON
 	db EFFECT_PARALYZE
-	db $ff
+	db -1 ; end
 ; 385e0
 
 
@@ -400,7 +400,7 @@
 	dbw EFFECT_SOLARBEAM,        AI_Smart_Solarbeam
 	dbw EFFECT_THUNDER,          AI_Smart_Thunder
 	dbw EFFECT_FLY,              AI_Smart_Fly
-	db $ff
+	db -1 ; end
 ; 387e3
 
 
@@ -1553,7 +1553,7 @@
 	db AEROBLAST
 	db COTTON_SPORE
 	db POWDER_SNOW
-	db $ff
+	db -1 ; end
 ; 38ca4
 
 
@@ -2214,7 +2214,7 @@
 	db ROCK
 	db GROUND
 	db STEEL
-	db $ff
+	db -1 ; end
 ; 38fac
 
 
@@ -2533,7 +2533,7 @@
 	db CRABHAMMER
 	db OCTAZOOKA
 	db WHIRLPOOL
-	db $ff
+	db -1 ; end
 ; 390f3
 
 
@@ -2622,7 +2622,7 @@
 	db SACRED_FIRE
 	db MORNING_SUN
 	db SYNTHESIS
-	db $ff
+	db -1 ; end
 ; 3913d
 
 
@@ -3125,7 +3125,7 @@
 	db FIRE_BLAST
 	db SOFTBOILED
 	db SUPER_FANG
-	db $ff
+	db -1 ; end
 ; 39315
 
 
@@ -3209,7 +3209,7 @@
 	db CONVERSION
 	db SUBSTITUTE
 	db FLAME_WHEEL
-	db $ff
+	db -1 ; end
 ; 39369
 
 
@@ -3324,7 +3324,7 @@
 	db EFFECT_RAMPAGE
 	db EFFECT_MULTI_HIT
 	db EFFECT_DOUBLE_HIT
-	db $ff
+	db -1 ; end
 ; 393e7
 
 
@@ -3350,7 +3350,7 @@
 	db EFFECT_STATIC_DAMAGE
 	db EFFECT_LEVEL_DAMAGE
 	db EFFECT_PSYWAVE
-	db $ff
+	db -1 ; end
 ; 39418
 
 
@@ -3406,7 +3406,7 @@
 	db CONVERSION
 	db SUBSTITUTE
 	db SPIKES
-	db $ff
+	db -1 ; end
 ; 39453
 
 
@@ -3544,7 +3544,7 @@
 .RiskyMoves:
 	db EFFECT_SELFDESTRUCT
 	db EFFECT_OHKO
-	db $ff
+	db -1 ; end
 ; 39502
 
 
--- a/engine/battle/battle_transition.asm
+++ b/engine/battle/battle_transition.asm
@@ -1,4 +1,4 @@
-Predef_StartBattle: ; 8c20f
+DoBattleTransition: ; 8c20f
 	call .InitGFX
 	ld a, [rBGP]
 	ld [wBGP], a
@@ -16,7 +16,7 @@
 	ld a, [wJumptableIndex]
 	bit 7, a
 	jr nz, .done
-	call FlashyTransitionToBattle
+	call BattleTransitionJumptable
 	call DelayFrame
 	jr .loop
 
@@ -23,7 +23,7 @@
 .done
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	ld hl, wBGPals1
@@ -44,7 +44,7 @@
 	ld [hLYOverrideEnd], a
 	ld [hSCY], a
 
-	ld a, $1
+	ld a, 1 ; unnecessary bankswitch?
 	ld [rSVBK], a
 	pop af
 	ld [hVBlank], a
@@ -116,7 +116,7 @@
 ConvertTrainerBattlePokeballTilesTo2bpp: ; 8c2cf
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 	push hl
 	ld hl, wDecompressScratch
@@ -144,7 +144,7 @@
 INCBIN "gfx/overworld/trainer_battle_pokeball_tiles.2bpp"
 
 
-FlashyTransitionToBattle: ; 8c314
+BattleTransitionJumptable: ; 8c314
 	jumptable .dw, wJumptableIndex
 ; 8c323
 
@@ -298,7 +298,7 @@
 
 StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8)
 	farcall Function5602
-	ld a, $5 ; BANK(LYOverrides)
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 
 	call StartTrainerBattle_NextScene
@@ -356,7 +356,7 @@
 
 StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d)
 	farcall Function5602
-	ld a, $5 ; BANK(LYOverrides)
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	xor a
@@ -498,7 +498,7 @@
 
 StartTrainerBattle_SetUpForRandomScatterOutro: ; 8c578 (23:4578)
 	farcall Function5602
-	ld a, $5 ; BANK(LYOverrides)
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	ld a, $10
@@ -589,7 +589,7 @@
 	dec b
 	jr nz, .loop
 
-	call .loadpokeballgfx ; ld a, [OtherTrainerClass] \ ld de, PokeBallTransition \ ret
+	call .loadpokeballgfx
 	hlcoord 2, 1
 
 	ld b, SCREEN_WIDTH - 4
@@ -640,14 +640,14 @@
 .cgb
 	ld hl, .daypals
 	ld a, [TimeOfDayPal]
-	and (1 << 2) - 1
-	cp 3
+	maskbits NUM_DAYTIMES
+	cp DARKNESS_F
 	jr nz, .daytime
 	ld hl, .nightpals
 .daytime
 	ld a, [rSVBK]
 	push af
-	ld a, $5 ; WRAM5 = palettes
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	call .copypals
 	push hl
@@ -691,17 +691,12 @@
 ; 8c6a1 (23:46a1)
 
 .daypals ; 8c6a1
-	RGB 31, 18, 29
-	RGB 31, 11, 15
-	RGB 31, 05, 05
-	RGB 07, 07, 07
+INCLUDE "gfx/overworld/trainer_battle_day.pal"
 ; 8c6a9
 
 .nightpals ; 8c6a9
-	RGB 31, 18, 29
-	RGB 31, 05, 05
-	RGB 31, 05, 05
-	RGB 31, 05, 05
+INCLUDE "gfx/overworld/trainer_battle_nite.pal"
+; 8c6b1
 
 .loadpokeballgfx
 	ld a, [OtherTrainerClass]
@@ -729,7 +724,7 @@
 WipeLYOverrides: ; 8c6d8
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 
 	ld hl, LYOverrides
@@ -754,22 +749,23 @@
 
 
 StartTrainerBattle_DrawSineWave: ; 8c6f7 (23:46f7)
-	and (1 << 6) - 1
-	cp 1 << 5
-	jr nc, .okay
-	call .DoSineWave
+; a = d * sin(a * pi/32)
+	and %111111
+	cp %100000
+	jr nc, .negative
+	call .ApplySineWave
 	ld a, h
 	ret
 
-.okay
-	and (1 << 5) - 1
-	call .DoSineWave
+.negative
+	and %011111
+	call .ApplySineWave
 	ld a, h
-	xor -1 ; cpl
+	xor $ff
 	inc a
 	ret
 
-.DoSineWave: ; 8c70c (23:470c)
+.ApplySineWave: ; 8c70c (23:470c)
 	ld e, a
 	ld a, d
 	ld d, 0
@@ -780,15 +776,15 @@
 	inc hl
 	ld d, [hl]
 	ld hl, 0
-.loop
+.multiply
 	srl a
-	jr nc, .skip
+	jr nc, .even
 	add hl, de
-.skip
+.even
 	sla e
 	rl d
 	and a
-	jr nz, .loop
+	jr nz, .multiply
 	ret
 ; 8c728 (23:4728)
 
@@ -863,8 +859,7 @@
 	ret
 ; 8c7c9 (23:47c9)
 
-Function8c7c9:
-; XXX
+Unreferenced_Function8c7c9:
 	ld a, $1
 	ld [hBGMapMode], a
 	call WaitBGMap
--- a/engine/battle/checkbattlescene.asm
+++ b/engine/battle/checkbattlescene.asm
@@ -1,7 +1,7 @@
 CheckBattleScene: ; 4ea44
 ; Return carry if battle scene is turned off.
 
-	ld a, 0
+	ld a, BANK(wLinkMode)
 	ld hl, wLinkMode
 	call GetFarWRAMByte
 	cp LINK_MOBILE
@@ -19,9 +19,9 @@
 	and a
 	jr nz, .from_wram
 
-	ld a, $4
+	ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
-	ld a, [$a60c]
+	ld a, [$a60c] ; address of MBC30 bank
 	ld c, a
 	call CloseSRAM
 
@@ -33,7 +33,7 @@
 	ret
 
 .from_wram
-	ld a, $5
+	ld a, BANK(w5_dc00)
 	ld hl, w5_dc00
 	call GetFarWRAMByte
 	bit 0, a
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -26,8 +26,8 @@
 	and a
 	jr z, .not_linked
 
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr z, .player_2
 
 .not_linked
@@ -97,8 +97,8 @@
 	ld a, [wLinkMode]
 	and a
 	jr z, .not_linked_2
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr nz, .not_linked_2
 	xor a
 	ld [wEnemySwitchMonIndex], a
@@ -160,7 +160,7 @@
 
 BattleTurn: ; 3c12f
 .loop
-	call MobileFn_3c1bf
+	call Stubbed_Function3c1bf
 	call CheckContestBattleOver
 	jp c, .quit
 
@@ -231,10 +231,11 @@
 	ret
 ; 3c1bf
 
-MobileFn_3c1bf: mobile
-	ld a, $5
+Stubbed_Function3c1bf:
+	ret
+	ld a, 5 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
-	ld hl, $a89b ; s5_a89b
+	ld hl, $a89b ; address of MBC30 bank
 	inc [hl]
 	jr nz, .finish
 	dec hl
@@ -250,8 +251,8 @@
 ; 3c1d6
 
 HandleBetweenTurnEffects: ; 3c1d6
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .CheckEnemyFirst
 	call CheckFaint_PlayerThenEnemy
 	ret c
@@ -349,8 +350,8 @@
 ; 3c27c
 
 HandleBerserkGene: ; 3c27c
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .reverse
 
 	call .player
@@ -457,8 +458,8 @@
 	ld a, [wPlayerAction]
 	cp $2
 	jr nz, .switch
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr z, .player_2
 
 	call BattleRandom
@@ -514,8 +515,8 @@
 	jp .enemy_first
 
 .both_have_quick_claw
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr z, .player_2b
 	call BattleRandom
 	cp c
@@ -544,8 +545,8 @@
 	jp .enemy_first
 
 .speed_tie
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr z, .player_2c
 	call BattleRandom
 	cp 1 + (50 percent)
@@ -708,8 +709,8 @@
 ; 3c4df
 
 HandleEncore: ; 3c4df
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player_1
 	call .do_player
 	jr .do_enemy
@@ -730,7 +731,7 @@
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	ret nz
 
 .end_player_encore
@@ -754,7 +755,7 @@
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	ret nz
 
 .end_enemy_encore
@@ -857,7 +858,7 @@
 	cp -1
 	jr nz, .loop
 
-	ld a, 1
+	ld a, BASE_PRIORITY
 	ret
 
 .done
@@ -865,15 +866,7 @@
 	ret
 ; 3c5df
 
-MoveEffectPriorities: ; 3c5df
-	db EFFECT_PROTECT,      3
-	db EFFECT_ENDURE,       3
-	db EFFECT_PRIORITY_HIT, 2
-	db EFFECT_FORCE_SWITCH, 0
-	db EFFECT_COUNTER,      0
-	db EFFECT_MIRROR_COAT,  0
-	db -1
-; 3c5ec
+INCLUDE "data/moves/effects_priorities.asm"
 
 GetMoveEffect: ; 3c5ec
 	ld a, b
@@ -1168,8 +1161,8 @@
 ; 3c801
 
 HandlePerishSong: ; 3c801
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .EnemyFirst
 	call SetPlayerTurn
 	call .do_it
@@ -1237,8 +1230,8 @@
 ; 3c874
 
 HandleWrap: ; 3c874
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .EnemyFirst
 	call SetPlayerTurn
 	call .do_it
@@ -1309,8 +1302,8 @@
 ; 3c8eb
 
 HandleLeftovers: ; 3c8eb
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .DoEnemyFirst
 	call SetPlayerTurn
 	call .do_it
@@ -1359,8 +1352,8 @@
 ; 3c93c
 
 HandleMysteryberry: ; 3c93c
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .DoEnemyFirst
 	call SetPlayerTurn
 	call .do_it
@@ -1409,7 +1402,7 @@
 	and a
 	jr z, .quit
 	ld a, [de]
-	and $3f
+	and PP_MASK
 	jr z, .restore
 	inc hl
 	inc de
@@ -1498,8 +1491,8 @@
 ; 3ca26
 
 HandleFutureSight: ; 3ca26
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .enemy_first
 	call SetPlayerTurn
 	call .do_it
@@ -1557,8 +1550,8 @@
 ; 3ca8f
 
 HanleDefrost: ; 3ca8f
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .enemy_first
 	call .do_player_turn
 	jr .do_enemy_turn
@@ -1617,8 +1610,8 @@
 ; 3cafb
 
 HandleSafeguard: ; 3cafb
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player1
 	call .CheckPlayer
 	jr .CheckEnemy
@@ -1654,8 +1647,8 @@
 	jp StdBattleTextBox
 
 HandleScreens: ; 3cb36
-	ld a, [hLinkPlayerNumber]
-	cp 1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .Both
 	call .CheckPlayer
 	jr .CheckEnemy
@@ -1738,8 +1731,8 @@
 	cp WEATHER_SANDSTORM
 	ret nz
 
-	ld a, [hLinkPlayerNumber]
-	cp 1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .enemy_first
 
 .player_first
@@ -1951,8 +1944,7 @@
 	ret
 ; 3ccc2
 
-GetHalfHP: ; 3ccc2
-; unreferenced
+Unreferenced_GetHalfHP: ; 3ccc2
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
@@ -2123,8 +2115,8 @@
 ; 3cdca
 
 DoubleSwitch: ; 3cdca
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player_1
 	call ClearSprites
 	hlcoord 1, 0
@@ -2460,7 +2452,7 @@
 	ld c, 40
 	call DelayFrames
 	call EmptyBattleTextBox
-	ld c, $3
+	ld c, BATTLETOWERTEXT_LOSS_TEXT
 	farcall BattleTowerText
 	call WaitPressAorB_BlinkCursor
 	ld hl, wPayDayMoney
@@ -2589,7 +2581,7 @@
 	push bc
 	ld b, h
 	ld c, l
-	farcall TrainerRankings_AddToBattlePayouts
+	farcall StubbedTrainerRankings_AddToBattlePayouts
 	pop bc
 	pop hl
 .loop
@@ -2640,7 +2632,7 @@
 
 .trainer_victory
 	ld de, MUSIC_GYM_VICTORY
-	call IsJohtoGymLeader
+	call IsGymLeader
 	jr c, .play_music
 	ld de, MUSIC_TRAINER_VICTORY
 
@@ -2652,58 +2644,22 @@
 	ret
 ; 3d123
 
-; These functions check if the current opponent is a gym leader or one of a
-; few other special trainers.
-
-; Note: KantoGymLeaders is a subset of JohtoGymLeaders. If you wish to
-; differentiate between the two, call IsKantoGymLeader first.
-
-; The Lance and Red entries are unused for music checks; those trainers are
-; accounted for elsewhere.
-
 IsKantoGymLeader: ; 0x3d123
 	ld hl, KantoGymLeaders
 	jr IsGymLeaderCommon
 
-IsJohtoGymLeader: ; 0x3d128
-	ld hl, JohtoGymLeaders
+IsGymLeader: ; 0x3d128
+	ld hl, GymLeaders
 IsGymLeaderCommon:
 	push de
 	ld a, [OtherTrainerClass]
-	ld de, $0001
+	ld de, $1
 	call IsInArray
 	pop de
 	ret
 ; 0x3d137
 
-JohtoGymLeaders:
-	db FALKNER
-	db WHITNEY
-	db BUGSY
-	db MORTY
-	db PRYCE
-	db JASMINE
-	db CHUCK
-	db CLAIR
-	db WILL
-	db BRUNO
-	db KAREN
-	db KOGA
-; fallthrough
-; these two entries are unused
-	db CHAMPION
-	db RED
-; fallthrough
-KantoGymLeaders:
-	db BROCK
-	db MISTY
-	db LT_SURGE
-	db ERIKA
-	db JANINE
-	db SABRINA
-	db BLAINE
-	db BLUE
-	db -1
+INCLUDE "data/trainers/leaders.asm"
 
 HandlePlayerMonFaint: ; 3d14e
 	call FaintYourPokemon
@@ -2760,7 +2716,7 @@
 	ld c, a
 	ld hl, wBattleParticipantsNotFainted
 	ld b, RESET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld hl, EnemySubStatus3
 	res SUBSTATUS_IN_LOOP, [hl]
 	xor a
@@ -3066,7 +3022,7 @@
 	call DelayFrames
 
 	call EmptyBattleTextBox
-	ld c, 2
+	ld c, BATTLETOWERTEXT_WIN_TEXT
 	farcall BattleTowerText
 	call WaitPressAorB_BlinkCursor
 	call ClearTileMap
@@ -3357,10 +3313,10 @@
 	ld hl, wBattleParticipantsNotFainted
 	ld b, SET_FLAG
 	push bc
-	predef FlagPredef
+	predef SmallFarFlagAction
 	pop bc
 	ld hl, wBattleParticipantsIncludingFainted
-	predef_jump FlagPredef
+	predef_jump SmallFarFlagAction
 ; 3d599
 
 FindPkmnInOTPartyToSwitchIntoBattle: ; 3d599
@@ -4033,7 +3989,7 @@
 	ld a, [CurBattleMon]
 	call SkipNames
 	ld de, BattleMonNick
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ld hl, BattleMonAttack
 	ld de, PlayerStats
@@ -4118,7 +4074,7 @@
 	ld a, [CurPartyMon]
 	call SkipNames
 	ld de, EnemyMonNick
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ld hl, EnemyMonAttack
 	ld de, EnemyStats
@@ -4350,7 +4306,7 @@
 	ld c, a
 	ld hl, wBattleParticipantsNotFainted
 	ld b, RESET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 	call PlayerMonFaintedAnimation
 	ld hl, BattleText_PkmnFainted
 	jr .done_fainted
@@ -4394,8 +4350,8 @@
 ; 3dcf9
 
 HandleHealingItems: ; 3dcf9
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player_1
 	call SetPlayerTurn
 	call HandleHPHealingItem
@@ -4586,13 +4542,13 @@
 ; 3de44
 
 .Statuses: ; 3de44
-	db HELD_HEAL_POISON, 1 << PSN
-	db HELD_HEAL_FREEZE, 1 << FRZ
-	db HELD_HEAL_BURN, 1 << BRN
-	db HELD_HEAL_SLEEP, SLP
+	db HELD_HEAL_POISON,   1 << PSN
+	db HELD_HEAL_FREEZE,   1 << FRZ
+	db HELD_HEAL_BURN,     1 << BRN
+	db HELD_HEAL_SLEEP,    SLP
 	db HELD_HEAL_PARALYZE, 1 << PAR
-	db HELD_HEAL_STATUS, ALL_STATUS
-	db $ff
+	db HELD_HEAL_STATUS,   ALL_STATUS
+	db -1 ; end
 ; 3de51
 
 UseConfusionHealingItem: ; 3de51
@@ -4639,8 +4595,8 @@
 
 HandleStatBoostingHeldItems: ; 3de97
 ; The effects handled here are not used in-game.
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player_1
 	call .DoPlayer
 	jp .DoEnemy
@@ -4716,7 +4672,7 @@
 	dbw HELD_SP_DEFENSE_UP, BattleCommand_SpecialDefenseUp
 	dbw HELD_ACCURACY_UP,   BattleCommand_AccuracyUp
 	dbw HELD_EVASION_UP,    BattleCommand_EvasionUp
-	db $ff
+	db -1 ; end
 ; 3df12
 
 GetPartymonItem: ; 3df12
@@ -4852,7 +4808,7 @@
 	ld [de], a
 	ld hl, BattleMonLevel
 	ld de, TempMonLevel
-	ld bc, $0011
+	ld bc, $11
 	call CopyBytes
 	ld a, [CurBattleMon]
 	ld hl, PartyMon1Species
@@ -5418,8 +5374,8 @@
 	ret
 
 .dont_run
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player_1
 	call BattleMonEntrance
 	call EnemyMonEntrance
@@ -5694,7 +5650,7 @@
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	jr z, .no_pp_left
 	ld a, [PlayerDisableCount]
 	swap a
@@ -5893,7 +5849,7 @@
 	ld hl, BattleMonPP
 	add hl, bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	ld [StringBuffer1], a
 	call .PrintPP
 
@@ -5956,7 +5912,7 @@
 	or [hl]
 	inc hl
 	or [hl]
-	and $3f
+	and PP_MASK
 	ret nz
 	jr .force_struggle
 
@@ -5978,8 +5934,7 @@
 
 .done
 	; Bug: this will result in a move with PP Up confusing the game.
-	; Replace with "and $3f" to fix.
-	and a
+	and a ; should be "and PP_MASK"
 	ret nz
 
 .force_struggle
@@ -6058,7 +6013,7 @@
 	cp [hl]
 	jr z, .disabled
 	ld a, [de]
-	and $3f
+	and PP_MASK
 	jr nz, .enough_pp
 
 .disabled
@@ -6076,7 +6031,7 @@
 .loop2
 	ld hl, EnemyMonMoves
 	call BattleRandom
-	and 3 ; TODO factor in NUM_MOVES
+	maskbits NUM_MOVES
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -6093,7 +6048,7 @@
 	add hl, bc
 	ld b, a
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	jr z, .loop2
 	ld a, c
 	ld [CurEnemyMoveNum], a
@@ -6376,9 +6331,9 @@
 ; but the value is in feet and inches (one byte each).
 
 ; The first filter is supposed to make very large Magikarp even rarer,
-; by targeting those 1600 mm or larger.
+; by targeting those 1600 mm (= 5'3") or larger.
 ; After the conversion to feet, it is unable to target any,
-; as the largest possible Magikarp is 5'3'', which reads as 1283.
+; since the largest possible Magikarp is 5'3", and $0503 = 1283 mm.
 	ld a, [TempEnemyMonSpecies]
 	cp MAGIKARP
 	jr nz, .Happiness
@@ -6388,9 +6343,9 @@
 	ld bc, PlayerID
 	callfar CalcMagikarpLength
 
-; No reason to keep going if length > 1536 (i.e. if length / 256 != 6)
+; No reason to keep going if length > 1536 mm (i.e. if HIGH(length) > 6 feet)
 	ld a, [wMagikarpLength]
-	cp HIGH(1536) ; this compares to 6'0'', should be cp 5
+	cp HIGH(1536) ; should be "cp 5", since 1536 mm = 5'0", but HIGH(1536) = 6
 	jr nz, .CheckMagikarpArea
 
 ; 5% chance of skipping both size checks
@@ -6397,9 +6352,9 @@
 	call Random
 	cp 5 percent
 	jr c, .CheckMagikarpArea
-; Try again if length > 1615
+; Try again if length >= 1616 mm (i.e. if LOW(length) >= 3 inches)
 	ld a, [wMagikarpLength + 1]
-	cp LOW(1616) ; this compares to 6'80'', should be cp 3
+	cp LOW(1616) ; should be "cp 3", since 1616 mm = 5'3", but LOW(1616) = 80
 	jr nc, .GenerateDVs
 
 ; 20% chance of skipping this check
@@ -6406,24 +6361,25 @@
 	call Random
 	cp 20 percent - 1
 	jr c, .CheckMagikarpArea
-; Try again if length > 1599
+; Try again if length >= 1600 mm (i.e. if LOW(length) >= 2 inches)
 	ld a, [wMagikarpLength + 1]
-	cp LOW(1600) ; this compares to 6'64'', should be cp 2
+	cp LOW(1600) ; should be "cp 2", since 1600 mm = 5'2", but LOW(1600) = 64
 	jr nc, .GenerateDVs
 
 .CheckMagikarpArea:
-; The z checks are supposed to be nz
-; Instead, all maps in GROUP_LAKE_OF_RAGE (mahogany area)
-; and routes 20 and 44 are treated as Lake of Rage
+; The "jr z" checks are supposed to be "jr nz".
 
+; Instead, all maps in GROUP_LAKE_OF_RAGE (Mahogany area)
+; and Routes 20 and 44 are treated as Lake of Rage.
+
 ; This also means Lake of Rage Magikarp can be smaller than ones
-; caught elsewhere rather than the other way around
+; caught elsewhere rather than the other way around.
 
-; Intended behavior enforces a minimum size at Lake of Rage
-; The real behavior prevents size flooring in the Lake of Rage area
+; Intended behavior enforces a minimum size at Lake of Rage.
+; The real behavior prevents a minimum size in the Lake of Rage area.
 
-; Moreover, due to the check not being translated to feet, all Magikarp
-; smaller than 4'0'' may be caught by the filter, a lot more than intended
+; Moreover, due to the check not being translated to feet+inches, all Magikarp
+; smaller than 4'0" may be caught by the filter, a lot more than intended.
 	ld a, [MapGroup]
 	cp GROUP_LAKE_OF_RAGE
 	jr z, .Happiness
@@ -6434,9 +6390,9 @@
 	call Random
 	cp 40 percent - 2
 	jr c, .Happiness
-; Floor at length 1024
+; Try again if length < 1024 mm (i.e. if HIGH(length) < 3 feet)
 	ld a, [wMagikarpLength]
-	cp HIGH(1024) ; compares to 4'0'', cp 3 would be closer to intended value
+	cp HIGH(1024) ; should be "cp 3", since 1024 mm = 3'4", but HIGH(1024) = 4
 	jr c, .GenerateDVs ; try again
 
 ; Finally done with DVs
@@ -6622,7 +6578,7 @@
 ; Update enemy nick
 	ld hl, StringBuffer1
 	ld de, EnemyMonNick
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 ; Saw this mon
@@ -6631,7 +6587,7 @@
 	ld c, a
 	ld b, SET_FLAG
 	ld hl, PokedexSeen
-	predef FlagPredef
+	predef SmallFarFlagAction
 
 	ld hl, EnemyMonStats
 	ld de, EnemyStats
@@ -6651,13 +6607,13 @@
 	jr nz, .NotSleeping
 
 ; Get list for the time of day
-	ld hl, .Morn
+	ld hl, AsleepTreeMonsMorn
 	ld a, [TimeOfDay]
 	cp DAY_F
 	jr c, .Check
-	ld hl, .Day
+	ld hl, AsleepTreeMonsDay
 	jr z, .Check
-	ld hl, .Nite
+	ld hl, AsleepTreeMonsNite
 
 .Check:
 	ld a, [TempEnemyMonSpecies]
@@ -6670,37 +6626,8 @@
 	and a
 	ret
 
-.Nite:
-	db CATERPIE
-	db METAPOD
-	db BUTTERFREE
-	db WEEDLE
-	db KAKUNA
-	db BEEDRILL
-	db SPEAROW
-	db EKANS
-	db EXEGGCUTE
-	db LEDYBA
-	db AIPOM
-	db -1 ; end
+INCLUDE "data/wild/treemons_asleep.asm"
 
-.Day:
-	db VENONAT
-	db HOOTHOOT
-	db NOCTOWL
-	db SPINARAK
-	db HERACROSS
-	db -1 ; end
-
-.Morn:
-	db VENONAT
-	db HOOTHOOT
-	db NOCTOWL
-	db SPINARAK
-	db HERACROSS
-	db -1 ; end
-; 3eb75
-
 CheckUnownLetter: ; 3eb75
 ; Return carry if the Unown letter hasn't been unlocked yet
 
@@ -6769,8 +6696,7 @@
 
 ; 3ebc7
 
-SwapBattlerLevels: ; 3ebc7
-; unreferenced
+Unreferenced_SwapBattlerLevels: ; 3ebc7
 	push bc
 	ld a, [BattleMonLevel]
 	ld b, a
@@ -7162,7 +7088,7 @@
 	ret
 ; 3edad
 
-LoadHPExpBarGFX: ; unreferenced
+Unreferenced_LoadHPExpBarGFX:
 	ld de, EnemyHPBarBorderGFX
 	ld hl, vTiles2 tile $6c
 	lb bc, BANK(EnemyHPBarBorderGFX), 4
@@ -7314,7 +7240,7 @@
 	ld c, a
 	ld b, CHECK_FLAG
 	ld d, $0
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld a, c
 	and a
 	pop bc
@@ -7643,7 +7569,7 @@
 	ld a, [CurPartyMon]
 	ld c, a
 	ld b, SET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 	pop af
 	ld [CurPartyLevel], a
 
@@ -7840,7 +7766,7 @@
 	call PrintPlayerHUD
 	ld hl, BattleMonNick
 	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call TerminateExpBarSound
 	ld de, SFX_HIT_END_OF_EXP_BAR
@@ -8093,7 +8019,7 @@
 	db "@"
 ; 3f357
 
-UnusedFunction_TextJump_ComeBack: ; 3f357
+Unreferenced_TextJump_ComeBack: ; 3f357
 ; this function doesn't seem to be used
 	ld hl, TextJump_ComeBack
 	ret
@@ -8104,7 +8030,7 @@
 	db "@"
 ; 3f360
 
-HandleSafariAngerEatingStatus: ; unreferenced
+Unreferenced_HandleSafariAngerEatingStatus:
 	ld hl, wSafariMonEating
 	ld a, [hl]
 	and a
@@ -8335,7 +8261,7 @@
 	ld hl, EnemyMonDVs
 	predef GetUnownLetter
 	ld de, vTiles2
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	pop af
 	ld [CurPartySpecies], a
 	ret
@@ -8371,14 +8297,13 @@
 	ret
 ; 3f4d9
 
-_DoBattle: ; 3f4d9
-; unreferenced
+Unreferenced_DoBattle: ; 3f4d9
 	call DoBattle
 	ret
 ; 3f4dd
 
 BattleIntro: ; 3f4dd
-	farcall TrainerRankings_Battles ; mobile
+	farcall StubbedTrainerRankings_Battles ; mobile
 	call LoadTrainerOrWildMonPic
 	xor a
 	ld [TempBattleMonSpecies], a
@@ -8440,7 +8365,7 @@
 BackUpBGMap2: ; 3f568
 	ld a, [rSVBK]
 	push af
-	ld a, $6 ; BANK(wDecompressScratch)
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 	ld hl, wDecompressScratch
 	ld bc, $40 tiles ; vBGMap3 - vBGMap2
@@ -8463,12 +8388,13 @@
 
 InitEnemyTrainer: ; 3f594
 	ld [TrainerClass], a
-	farcall TrainerRankings_TrainerBattles
+	farcall StubbedTrainerRankings_TrainerBattles
 	xor a
 	ld [TempEnemyMonSpecies], a
 	callfar GetTrainerAttributes
 	callfar ReadTrainerParty
 
+	; RIVAL1's first mon has no held item
 	ld a, [TrainerClass]
 	cp RIVAL1
 	jr nz, .ok
@@ -8490,7 +8416,7 @@
 	ld a, TRAINER_BATTLE
 	ld [wBattleMode], a
 
-	call IsJohtoGymLeader
+	call IsGymLeader
 	jr nc, .done
 	xor a
 	ld [CurPartyMon], a
@@ -8519,7 +8445,7 @@
 InitEnemyWildmon: ; 3f607
 	ld a, WILD_BATTLE
 	ld [wBattleMode], a
-	farcall TrainerRankings_WildBattles
+	farcall StubbedTrainerRankings_WildBattles
 	call LoadEnemyMon
 	ld hl, EnemyMonMoves
 	ld de, wWildMonMoves
@@ -8541,7 +8467,7 @@
 	ld [wFirstUnownSeen], a
 .skip_unown
 	ld de, vTiles2
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	xor a
 	ld [TrainerClass], a
 	ld [hGraphicStartTile], a
@@ -8551,8 +8477,7 @@
 	ret
 ; 3f662
 
-Function3f662: ; 3f662
-; XXX
+Unreferenced_Function3f662: ; 3f662
 	ld hl, EnemyMonMoves
 	ld de, wListMoves_MoveIndicesBuffer
 	ld b, NUM_MOVES
@@ -8702,7 +8627,7 @@
 ; 3f759
 
 ShowLinkBattleParticipantsAfterEnd: ; 3f759
-	farcall TrainerRankings_LinkBattles
+	farcall StubbedTrainerRankings_LinkBattles
 	farcall BackupMobileEventIndex
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
@@ -8732,17 +8657,17 @@
 	cp $1
 	jr c, .victory
 	jr z, .loss
-	farcall TrainerRankings_ColosseumDraws
+	farcall StubbedTrainerRankings_ColosseumDraws
 	ld de, .Draw
 	jr .store_result
 
 .victory
-	farcall TrainerRankings_ColosseumWins
+	farcall StubbedTrainerRankings_ColosseumWins
 	ld de, .Win
 	jr .store_result
 
 .loss
-	farcall TrainerRankings_ColosseumLosses
+	farcall StubbedTrainerRankings_ColosseumLosses
 	ld de, .Lose
 	jr .store_result
 
@@ -9320,7 +9245,7 @@
 .BlankBGMap: ; 3fbd6
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	ld hl, wDecompressScratch
@@ -9373,8 +9298,8 @@
 
 .Decompress:
 	ld de, vTiles2 tile $31
-	ld c, $31
-	predef DecompressPredef
+	ld c, 7 * 7
+	predef DecompressGet2bpp
 	ret
 ; 3fc30
 
@@ -9381,7 +9306,7 @@
 CopyBackpic: ; 3fc30
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 	ld hl, vTiles0
 	ld de, vTiles2 tile $31
@@ -9401,27 +9326,27 @@
 ; 3fc5b
 
 .LoadTrainerBackpicAsOAM: ; 3fc5b
-	ld hl, Sprites
+	ld hl, Sprite01
 	xor a
 	ld [hMapObjectIndexBuffer], a
-	ld b, $6
-	ld e, 21 * 8
+	ld b, 6
+	ld e, (SCREEN_WIDTH + 1) * TILE_WIDTH
 .outer_loop
-	ld c, $3
-	ld d, 8 * 8
+	ld c, 3
+	ld d, 8 * TILE_WIDTH
 .inner_loop
-	ld [hl], d
+	ld [hl], d ; y
 	inc hl
-	ld [hl], e
+	ld [hl], e ; x
 	inc hl
 	ld a, [hMapObjectIndexBuffer]
-	ld [hli], a
+	ld [hli], a ; tile id
 	inc a
 	ld [hMapObjectIndexBuffer], a
-	ld a, $1
-	ld [hli], a
+	ld a, PAL_BATTLE_OB_PLAYER
+	ld [hli], a ; attributes
 	ld a, d
-	add $8
+	add 1 * TILE_WIDTH
 	ld d, a
 	dec c
 	jr nz, .inner_loop
@@ -9429,7 +9354,7 @@
 	add $3
 	ld [hMapObjectIndexBuffer], a
 	ld a, e
-	add $8
+	add 1 * TILE_WIDTH
 	ld e, a
 	dec b
 	jr nz, .outer_loop
@@ -9490,7 +9415,7 @@
 	cp BATTLETYPE_FISH
 	jr nz, .NotFishing
 
-	farcall TrainerRankings_HookedEncounters
+	farcall StubbedTrainerRankings_HookedEncounters
 
 	ld hl, HookedPokemonAttackedText
 	jr .PlaceBattleStartText
--- a/engine/battle/effect_commands.asm
+++ b/engine/battle/effect_commands.asm
@@ -64,7 +64,7 @@
 	inc hl
 	ld [de], a
 	inc de
-	cp $ff
+	cp -1
 	jr nz, .GetMoveEffect
 
 ; Start at the first command.
@@ -138,7 +138,7 @@
 	ld [AlreadyFailed], a
 	ld [wSomeoneIsRampaging], a
 
-	ld a, 10 ; 1.0
+	ld a, EFFECTIVE
 	ld [TypeModifier], a
 
 	ld a, [hBattleTurn]
@@ -282,7 +282,7 @@
 
 	; 50% chance of hitting itself
 	call BattleRandom
-	cp $80
+	cp 50 percent + 1
 	jr nc, .not_confused
 
 	; clear confusion-dependent substatus
@@ -311,7 +311,7 @@
 
 	; 50% chance of infatuation
 	call BattleRandom
-	cp $80
+	cp 50 percent + 1
 	jr c, .not_infatuated
 
 	ld hl, InfatuationText
@@ -345,7 +345,7 @@
 
 	; 25% chance to be fully paralyzed
 	call BattleRandom
-	cp $3f
+	cp 25 percent
 	ret nc
 
 	ld hl, FullyParalyzedText
@@ -457,6 +457,8 @@
 	ld hl, EnemyMonStatus
 	bit FRZ, [hl]
 	jr z, .not_frozen
+
+	; Flame Wheel and Sacred Fire thaw the user.
 	ld a, [CurEnemyMove]
 	cp FLAME_WHEEL
 	jr z, .not_frozen
@@ -611,7 +613,7 @@
 
 	; 25% chance to be fully paralyzed
 	call BattleRandom
-	cp $3f
+	cp 25 percent
 	ret nc
 
 	ld hl, FullyParalyzedText
@@ -844,19 +846,20 @@
 
 
 .DoNothing:
+	; 4 random choices
 	call BattleRandom
-	and 3
+	and %11
 
 	ld hl, LoafingAroundText
-	and a
+	and a ; 0
 	jr z, .Print
 
 	ld hl, WontObeyText
-	dec a
+	dec a ; 1
 	jr z, .Print
 
 	ld hl, TurnedAwayText
-	dec a
+	dec a ; 2
 	jr z, .Print
 
 	ld hl, IgnoredOrdersText
@@ -886,7 +889,7 @@
 
 .GetTotalPP:
 	ld a, [hli]
-	and $3f ; exclude pp up
+	and PP_MASK
 	add b
 	ld b, a
 
@@ -909,7 +912,7 @@
 
 ; Can't use another move if only one move has PP.
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	cp b
 	jr z, .DoNothing
 
@@ -929,7 +932,7 @@
 
 .RandomMove:
 	call BattleRandom
-	and 3 ; TODO NUM_MOVES
+	maskbits NUM_MOVES
 
 	cp b
 	jr nc, .RandomMove
@@ -945,7 +948,7 @@
 	ld d, 0
 	add hl, de
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	jr z, .RandomMove
 
 
@@ -989,6 +992,7 @@
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 
+	; Snore and Sleep Talk bypass sleep.
 	cp SNORE
 	jr z, .CheckSleep
 	cp SLEEP_TALK
@@ -1115,7 +1119,7 @@
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	jr z, .out_of_pp
 	dec [hl]
 	ld b, 0
@@ -1172,7 +1176,7 @@
 	db EFFECT_ROLLOUT
 	db EFFECT_BIDE
 	db EFFECT_RAMPAGE
-	db $ff
+	db -1
 ; 3460b
 
 CheckMimicUsed: ; 3460b
@@ -1266,7 +1270,7 @@
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	ld de, 1
-	ld hl, .Criticals
+	ld hl, CriticalHitMoves
 	push bc
 	call IsInArray
 	pop bc
@@ -1288,7 +1292,7 @@
 	inc c
 
 .Tally:
-	ld hl, .Chances
+	ld hl, CriticalHitChances
 	ld b, 0
 	add hl, bc
 	call BattleRandom
@@ -1298,12 +1302,7 @@
 	ld [CriticalHit], a
 	ret
 
-.Criticals:
-	db KARATE_CHOP, RAZOR_WIND, RAZOR_LEAF, CRABHAMMER, SLASH, AEROBLAST, CROSS_CHOP, $ff
-.Chances:
-	; 6.25% 12.1% 24.6% 33.2% 49.6% 49.6% 49.6%
-	db $11,  $20,  $40,  $55,  $80,  $80,  $80
-	;   0     1     2     3     4     5     6
+INCLUDE "data/battle/critical_hits.asm"
 ; 346b2
 
 
@@ -1433,11 +1432,11 @@
 .TypesLoop:
 	ld a, [hli]
 
-	cp $ff
+	cp -1
 	jr z, .end
 
 	; foresight
-	cp $fe
+	cp -2
 	jr nz, .SkipForesightCheck
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
@@ -1543,8 +1542,8 @@
 	ld hl, BattleMonType1
 CheckTypeMatchup: ; 347d3
 ; There is an incorrect assumption about this function made in the AI related code: when
-; the AI calls CheckTypeMatchup (not BattleCheckTypeMatchup), it assumes that placing the
-; offensive type in a will make this function do the right thing. Since a is overwritten,
+; the AI calls CheckTypeMatchup (not BattleCheckTypeMatchup), it assumes that placing
+; the offensive type in a will make this function do the right thing. Since a is overwritten,
 ; this assumption is incorrect. A simple fix would be to load the move type for the
 ; current move into a in BattleCheckTypeMatchup, before falling through, which is
 ; consistent with how the rest of the code assumes this code works like.
@@ -1562,9 +1561,9 @@
 	ld hl, TypeMatchups
 .TypesLoop:
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .End
-	cp $fe
+	cp -2
 	jr nz, .Next
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
@@ -1640,7 +1639,7 @@
 
 INCLUDE "engine/battle/ai/switch.asm"
 
-INCLUDE "data/type_matchups.asm"
+INCLUDE "data/battle/type_matchups.asm"
 
 BattleCommand_DamageVariation: ; 34cfd
 ; damagevariation
@@ -1675,7 +1674,7 @@
 .loop
 	call BattleRandom
 	rrca
-	cp $d9 ; 85%
+	cp 85 percent + 1
 	jr c, .loop
 
 	ld [hMultiplier], a
@@ -1756,7 +1755,7 @@
 
 .skip_brightpowder
 	ld a, b
-	cp $ff
+	cp -1
 	jr z, .Hit
 
 	call BattleRandom
@@ -1954,7 +1953,7 @@
 
 .skip_foresight_check
 	; subtract evasion from 14
-	ld a, 14
+	ld a, MAX_STAT_LEVEL + 1
 	sub c
 	ld c, a
 	; store the base move accuracy for math ops
@@ -1969,7 +1968,7 @@
 .accuracy_loop
 	; look up the multiplier from the table
 	push bc
-	ld hl, .AccProb
+	ld hl, AccuracyLevelMultipliers
 	dec b
 	sla b
 	ld c, b
@@ -2013,21 +2012,7 @@
 	ld [hl], a
 	ret
 
-.AccProb:
-	db  33, 100 ;  33% -6
-	db  36, 100 ;  36% -5
-	db  43, 100 ;  43% -4
-	db  50, 100 ;  50% -3
-	db  60, 100 ;  60% -2
-	db  75, 100 ;  75% -1
-	db   1,   1 ; 100%  0
-	db 133, 100 ; 133% +1
-	db 166, 100 ; 166% +2
-	db   2,   1 ; 200% +3
-	db 233, 100 ; 233% +4
-	db 133,  50 ; 266% +5
-	db   3,   1 ; 300% +6
-
+INCLUDE "data/battle/accuracy_multipliers.asm"
 ; 34ecc
 
 
@@ -2199,7 +2184,7 @@
 	xor 1
 	ld [wKickCounter], a
 	ld a, [de]
-	cp $1
+	cp 1
 	push af
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -2438,7 +2423,7 @@
 	ld hl, AttackMissedText
 	ld de, AttackMissed2Text
 	ld a, [CriticalHit]
-	cp $ff
+	cp -1
 	jr nz, .got_text
 	ld hl, UnaffectedText
 .got_text
@@ -3519,7 +3504,7 @@
 
 .NextItem:
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .DoneItem
 
 ; Item effect
@@ -3657,26 +3642,7 @@
 ; 35703
 
 
-TypeBoostItems: ; 35703
-	db HELD_NORMAL_BOOST,   NORMAL   ; Pink/Polkadot Bow
-	db HELD_FIGHTING_BOOST, FIGHTING ; Blackbelt
-	db HELD_FLYING_BOOST,   FLYING   ; Sharp Beak
-	db HELD_POISON_BOOST,   POISON   ; Poison Barb
-	db HELD_GROUND_BOOST,   GROUND   ; Soft Sand
-	db HELD_ROCK_BOOST,     ROCK     ; Hard Stone
-	db HELD_BUG_BOOST,      BUG      ; Silverpowder
-	db HELD_GHOST_BOOST,    GHOST    ; Spell Tag
-	db HELD_FIRE_BOOST,     FIRE     ; Charcoal
-	db HELD_WATER_BOOST,    WATER    ; Mystic Water
-	db HELD_GRASS_BOOST,    GRASS    ; Miracle Seed
-	db HELD_ELECTRIC_BOOST, ELECTRIC ; Magnet
-	db HELD_PSYCHIC_BOOST,  PSYCHIC  ; Twistedspoon
-	db HELD_ICE_BOOST,      ICE      ; Nevermeltice
-	db HELD_DRAGON_BOOST,   DRAGON   ; Dragon Scale
-	db HELD_DARK_BOOST,     DARK     ; Blackglasses
-	db HELD_STEEL_BOOST,    STEEL    ; Metal Coat
-	db $ff
-; 35726
+INCLUDE "data/battle/type_boost_items.asm"
 
 
 BattleCommand_ConstantDamage: ; 35726
@@ -3941,7 +3907,7 @@
 	ld bc, BattleMonPP - BattleMonMoves - 1
 	add hl, bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	jp z, .failed
 	ld a, [AttackMissed]
 	and a
@@ -4421,7 +4387,7 @@
 .sample_move
 	push hl
 	call BattleRandom
-	and 3 ; TODO factor in NUM_MOVES
+	maskbits NUM_MOVES
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -4585,17 +4551,18 @@
 	add hl, bc
 	pop bc
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	jr z, .failed
 	push bc
 	call GetMoveName
+	; lose 2-5 PP
 	call BattleRandom
-	and 3
+	and %11
 	inc a
 	inc a
 	ld b, a
 	ld a, [hl]
-	and $3f
+	and PP_MASK
 	cp b
 	jr nc, .deplete_pp
 	ld b, a
@@ -4671,7 +4638,7 @@
 	ld [de], a
 .okay
 	ld a, [CriticalHit]
-	cp $2
+	cp 2
 	jr nz, .carry
 	xor a
 	ld [CriticalHit], a
@@ -5049,7 +5016,7 @@
 	jr nz, .dont_fail
 
 	call BattleRandom
-	cp $40 ; 25%
+	cp 25 percent + 1 ; 25% chance AI fails
 	ret c
 
 .dont_fail
@@ -5149,7 +5116,7 @@
 	jr nz, .mimic_random
 
 	call BattleRandom
-	cp $40 ; 25% chance AI fails
+	cp 25 percent + 1 ; 25% chance AI fails
 	jr c, .failed
 
 .mimic_random
@@ -5827,7 +5794,7 @@
 	inc b
 
 .ComputerMiss:
-; Computer opponents have a 1/4 chance of failing.
+; Computer opponents have a 25% chance of failing.
 	ld a, [hBattleTurn]
 	and a
 	jr z, .DidntMiss
@@ -5852,7 +5819,7 @@
 	jr z, .DidntMiss
 
 	call BattleRandom
-	cp $40
+	cp 25 percent + 1 ; 25% chance AI fails
 	jr c, .Failed
 
 .DidntMiss:
@@ -6104,7 +6071,7 @@
 
 
 GetStatName: ; 3648f
-	ld hl, .names
+	ld hl, StatNames
 	ld c, "@"
 .CheckName:
 	dec b
@@ -6120,33 +6087,10 @@
 	ld bc, StringBuffer3 - StringBuffer2
 	jp CopyBytes
 
-.names
-	db "ATTACK@"
-	db "DEFENSE@"
-	db "SPEED@"
-	db "SPCL.ATK@"
-	db "SPCL.DEF@"
-	db "ACCURACY@"
-	db "EVASION@"
-	db "ABILITY@"
-; 364e6
+INCLUDE "data/battle/stat_names.asm"
 
 
-StatLevelMultipliers: ; 364e6
-	db 25, 100 ; 0.25x
-	db 28, 100 ; 0.28x
-	db 33, 100 ; 0.33x
-	db 40, 100 ; 0.40x
-	db 50, 100 ; 0.50x
-	db 66, 100 ; 0.66x
-	db  1,   1 ; 1.00x
-	db 15,  10 ; 1.50x
-	db  2,   1 ; 2.00x
-	db 25,  10 ; 2.50x
-	db  3,   1 ; 3.00x
-	db 35,  10 ; 3.50x
-	db  4,   1 ; 4.00x
-; 36500
+INCLUDE "data/battle/stat_multipliers.asm"
 
 
 BattleCommand_AllStatsUp: ; 36500
@@ -6266,13 +6210,12 @@
 
 	call BattleCommand_EffectChance
 
-; 1/3 chance of each status
 .loop
+	; 1/3 chance of each status
 	call BattleRandom
 	swap a
-	and 3
+	and %11
 	jr z, .loop
-; jump
 	dec a
 	ld hl, .ptrs
 	rst JumpTable
@@ -7450,7 +7393,8 @@
 	bit SUBSTATUS_SUBSTITUTE, a
 	ret nz
 	call BattleRandom
-	and 3
+	; trapped for 2-5 turns
+	and %11
 	inc a
 	inc a
 	inc a
@@ -7648,8 +7592,9 @@
 
 .got_confuse_count
 	set SUBSTATUS_CONFUSED, [hl]
+	; confused for 2-5 turns
 	call BattleRandom
-	and 3
+	and %11
 	inc a
 	inc a
 	ld [bc], a
@@ -8078,7 +8023,7 @@
 
 BattleCommand_Splash: ; 36fe1
 	call AnimateCurrentMove
-	farcall TrainerRankings_Splash
+	farcall StubbedTrainerRankings_Splash
 	jp PrintNothingHappened
 
 ; 36fed
@@ -8259,7 +8204,7 @@
 .done
 .loop3
 	call BattleRandom
-	and 3 ; TODO factor in NUM_MOVES
+	maskbits NUM_MOVES
 	ld c, a
 	ld b, 0
 	ld hl, StringBuffer1
@@ -8605,7 +8550,7 @@
 
 
 BattleCommand_Selfdestruct: ; 37380
-	farcall TrainerRankings_Selfdestruct
+	farcall StubbedTrainerRankings_Selfdestruct
 	ld a, BATTLEANIM_PLAYER_DAMAGE
 	ld [wNumHits], a
 	ld c, 3
--- a/engine/battle/effect_commands/present.asm
+++ b/engine/battle/effect_commands/present.asm
@@ -31,7 +31,7 @@
 	ld c, 0
 .next
 	ld a, [hli]
-	cp $ff
+	cp -1
 	jr z, .heal_effect ; 378a4 $11
 	cp b
 	jr nc, .got_power ; 378a7 $4
@@ -89,5 +89,5 @@
 	db 40 percent,     40
 	db 70 percent + 1, 80
 	db 80 percent,    120
-	db $ff
+	db -1 ; end
 ; 3790e
--- a/engine/battle/hidden_power.asm
+++ b/engine/battle/hidden_power.asm
@@ -16,12 +16,12 @@
 	; Attack
 	ld a, [hl]
 	swap a
-	and 8
+	and %1000
 
 	; Defense
 	ld b, a
 	ld a, [hli]
-	and 8
+	and %1000
 	srl a
 	or b
 
@@ -29,7 +29,7 @@
 	ld b, a
 	ld a, [hl]
 	swap a
-	and 8
+	and %1000
 	srl a
 	srl a
 	or b
@@ -37,7 +37,7 @@
 	; Special
 	ld b, a
 	ld a, [hl]
-	and 8
+	and %1000
 	srl a
 	srl a
 	srl a
@@ -52,7 +52,7 @@
 ; Add Special & 3
 	ld b, a
 	ld a, [hld]
-	and 3
+	and %0011
 	add b
 
 ; Divide by 2 and add 30 + 1
@@ -67,12 +67,12 @@
 
 	; Def & 3
 	ld a, [hl]
-	and 3
+	and %0011
 	ld b, a
 
 	; + (Atk & 3) << 2
 	ld a, [hl]
-	and 3 << 4
+	and %0011 << 4
 	swap a
 	add a
 	add a
--- a/engine/battle/menu.asm
+++ b/engine/battle/menu.asm
@@ -33,15 +33,14 @@
 ; 24f2c
 
 BattleMenuDataHeader: ; 24f2c
-	db $40 ; flags
-	db 12, 08 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 8, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw MenuData_0x24f34
 	db 1 ; default option
 ; 24f34
 
 MenuData_0x24f34: ; 0x24f34
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	dn 2, 2 ; rows, columns
 	db 6 ; spacing
 	dba Strings24f3d
@@ -56,15 +55,14 @@
 ; 24f4e
 
 MenuDataHeader_0x24f4e: ; 24f4e
-	db $40 ; flags
-	db 12, 00 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw MenuData_0x24f56
 	db 1 ; default option
 ; 24f56
 
 MenuData_0x24f56: ; 24f56
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	dn 2, 2 ; rows, columns
 	db 11 ; spacing
 	dba Strings24f5f
@@ -72,7 +70,7 @@
 ; 24f5f
 
 Strings24f5f: ; 24f5f
-	db "サファりボール×  @" ; "SAFARI BALL×  @"
+	db "サファりボール×  @" ; "SAFARI BALL×  @"
 	db "エサをなげる@" ; "THROW BAIT"
 	db "いしをなげる@" ; "THROW ROCK"
 	db "にげる@" ; "RUN"
@@ -87,15 +85,14 @@
 ; 24f89
 
 MenuDataHeader_0x24f89: ; 24f89
-	db $40 ; flags
-	db 12, 02 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 2, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw MenuData_0x24f91
 	db 1 ; default option
 ; 24f91
 
 MenuData_0x24f91: ; 24f91
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	dn 2, 2 ; rows, columns
 	db 12 ; spacing
 	dba Strings24f9a
--- a/engine/battle/misc.asm
+++ b/engine/battle/misc.asm
@@ -146,15 +146,15 @@
 	ret
 
 .WeatherTypeModifiers:
-	db WEATHER_RAIN, WATER, 15
-	db WEATHER_RAIN, FIRE,  05
-	db WEATHER_SUN,  FIRE,  15
-	db WEATHER_SUN,  WATER, 05
-	db $ff
+	db WEATHER_RAIN, WATER, MORE_EFFECTIVE
+	db WEATHER_RAIN, FIRE,  NOT_VERY_EFFECTIVE
+	db WEATHER_SUN,  FIRE,  MORE_EFFECTIVE
+	db WEATHER_SUN,  WATER, NOT_VERY_EFFECTIVE
+	db -1 ; end
 
 .WeatherMoveModifiers:
-	db WEATHER_RAIN, EFFECT_SOLARBEAM, 05
-	db $ff
+	db WEATHER_RAIN, EFFECT_SOLARBEAM, NOT_VERY_EFFECTIVE
+	db -1 ; end
 ; fbe24
 
 
@@ -183,7 +183,7 @@
 
 .CheckBadge:
 	ld a, [hl]
-	cp $ff
+	cp -1
 	jr z, .done
 
 	srl b
@@ -236,22 +236,24 @@
 	ret
 
 .BadgeTypes:
-	db FLYING   ; zephyrbadge
-	db BUG      ; hivebadge
-	db NORMAL   ; plainbadge
-	db GHOST    ; fogbadge
-	db STEEL    ; mineralbadge
-	db FIGHTING ; stormbadge
-	db ICE      ; glacierbadge
-	db DRAGON   ; risingbadge
-
-	db ROCK     ; boulderbadge
-	db WATER    ; cascadebadge
-	db ELECTRIC ; thunderbadge
-	db GRASS    ; rainbowbadge
-	db POISON   ; soulbadge
-	db PSYCHIC  ; marshbadge
-	db FIRE     ; volcanobadge
-	db GROUND   ; earthbadge
-	db $ff
+; entries correspond to wJohtoBadges constants
+	db FLYING   ; ZEPHYRBADGE
+	db BUG      ; HIVEBADGE
+	db NORMAL   ; PLAINBADGE
+	db GHOST    ; FOGBADGE
+	db STEEL    ; MINERALBADGE
+	db FIGHTING ; STORMBADGE
+	db ICE      ; GLACIERBADGE
+	db DRAGON   ; RISINGBADGE
+	; fallthrough
+; entries correspond to wKantoBadges constants
+	db ROCK     ; BOULDERBADGE
+	db WATER    ; CASCADEBADGE
+	db ELECTRIC ; THUNDERBADGE
+	db GRASS    ; RAINBOWBADGE
+	db POISON   ; SOULBADGE
+	db PSYCHIC  ; MARSHBADGE
+	db FIRE     ; VOLCANOBADGE
+	db GROUND   ; EARTHBADGE
+	db -1 ; end
 ; fbe91
--- a/engine/battle/sliding_intro.asm
+++ b/engine/battle/sliding_intro.asm
@@ -1,7 +1,7 @@
 BattleIntroSlidingPics: ; 4e980
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 	call .subfunction1
 	ld a, rSCX - $ff00
@@ -60,9 +60,9 @@
 ; 4e9d6
 
 .subfunction3 ; 4e9d6
-	ld hl, Sprites + 1 ; x pixel
+	ld hl, Sprite01XCoord
 	ld c, $12 ; 18
-	ld de, $4
+	ld de, SPRITEOAMSTRUCT_LENGTH
 .loop3
 	dec [hl]
 	dec [hl]
--- a/engine/battle/start_battle.asm
+++ b/engine/battle/start_battle.asm
@@ -33,7 +33,7 @@
 	add hl, de
 	ld a, [hl]
 	ld [BattleMonLevel], a
-	predef Predef_StartBattle
+	predef DoBattleTransition
 	farcall _LoadBattleFontsHPBar
 	ld a, 1
 	ld [hBGMapMode], a
@@ -93,7 +93,7 @@
 	cp RED
 	jr z, .done
 
-	; really, they should have included admins and scientists here too...
+	; They should have included EXECUTIVEM, EXECUTIVEF, and SCIENTIST too...
 	ld de, MUSIC_ROCKET_BATTLE
 	cp GRUNTM
 	jr z, .done
@@ -104,8 +104,10 @@
 	farcall IsKantoGymLeader
 	jr c, .done
 
+	; IsGymLeader also counts CHAMPION, RED, and the Kanto gym leaders
+	; but they have been taken care of before this
 	ld de, MUSIC_JOHTO_GYM_LEADER_BATTLE
-	farcall IsJohtoGymLeader
+	farcall IsGymLeader
 	jr c, .done
 
 	ld de, MUSIC_RIVAL_BATTLE
--- a/engine/battle/trainer_huds.asm
+++ b/engine/battle/trainer_huds.asm
@@ -28,7 +28,7 @@
 	ld [hl], a
 	ld a, 8
 	ld [wPlaceBallsDirection], a
-	ld hl, Sprites
+	ld hl, Sprite01
 	jp LoadTrainerHudOAM
 ; 2c03a
 
@@ -44,7 +44,7 @@
 	ld [hl], 4 * 8
 	ld a, -8
 	ld [wPlaceBallsDirection], a
-	ld hl, Sprites + PARTY_LENGTH * 4
+	ld hl, Sprite01 + PARTY_LENGTH * SPRITEOAMSTRUCT_LENGTH
 	jp LoadTrainerHudOAM
 ; 2c059
 
@@ -193,7 +193,7 @@
 	ld [hl], 8 * 8
 	ld a, $8
 	ld [wPlaceBallsDirection], a
-	ld hl, Sprites
+	ld hl, Sprite01
 	call LoadTrainerHudOAM
 
 	ld hl, OTPartyMon1HP
@@ -203,7 +203,7 @@
 	ld a, 10 * 8
 	ld [hli], a
 	ld [hl], 13 * 8
-	ld hl, Sprites + PARTY_LENGTH * 4
+	ld hl, Sprite01 + PARTY_LENGTH * SPRITEOAMSTRUCT_LENGTH
 	jp LoadTrainerHudOAM
 ; 2c143
 
@@ -212,13 +212,13 @@
 	ld c, PARTY_LENGTH
 .loop
 	ld a, [wPlaceBallsY]
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, [wPlaceBallsX]
-	ld [hli], a
+	ld [hli], a ; x
 	ld a, [de]
-	ld [hli], a
-	ld a, $3
-	ld [hli], a
+	ld [hli], a ; tile id
+	ld a, PAL_BATTLE_OB_YELLOW
+	ld [hli], a ; attributes
 	ld a, [wPlaceBallsX]
 	ld b, a
 	ld a, [wPlaceBallsDirection]
--- a/engine/battle/used_move_text.asm
+++ b/engine/battle/used_move_text.asm
@@ -157,12 +157,12 @@
 .loop
 	ld a, [hli]
 ; end of table?
-	cp $ff
+	cp -1
 	jr z, .end
 ; match?
 	cp c
 	jr z, .end
-; advance grammar type at $00
+; advance grammar type at 0
 	and a
 	jr nz, .loop
 ; next grammar type
@@ -179,106 +179,7 @@
 	ret
 ; 105e7a
 
-MoveGrammar: ; 105e7a
-; made redundant in localization
-; each move is given an identifier for what usedmovetext to use (0-4):
-
-; 0
-	db SWORDS_DANCE
-	db GROWTH
-	db STRENGTH
-	db HARDEN
-	db MINIMIZE
-	db SMOKESCREEN
-	db WITHDRAW
-	db DEFENSE_CURL
-	db EGG_BOMB
-	db SMOG
-	db BONE_CLUB
-	db FLASH
-	db SPLASH
-	db ACID_ARMOR
-	db BONEMERANG
-	db REST
-	db SHARPEN
-	db SUBSTITUTE
-	db MIND_READER
-	db SNORE
-	db PROTECT
-	db SPIKES
-	db ENDURE
-	db ROLLOUT
-	db SWAGGER
-	db SLEEP_TALK
-	db HIDDEN_POWER
-	db PSYCH_UP
-	db EXTREMESPEED
-	db 0 ; end set
-
-; 1
-	db RECOVER
-	db TELEPORT
-	db BIDE
-	db SELFDESTRUCT
-	db AMNESIA
-	db FLAIL
-	db 0 ; end set
-
-; 2
-	db MEDITATE
-	db AGILITY
-	db MIMIC
-	db DOUBLE_TEAM
-	db BARRAGE
-	db TRANSFORM
-	db STRUGGLE
-	db SCARY_FACE
-	db 0 ; end set
-
-; 3
-	db POUND
-	db SCRATCH
-	db VICEGRIP
-	db WING_ATTACK
-	db FLY
-	db BIND
-	db SLAM
-	db HORN_ATTACK
-	db WRAP
-	db THRASH
-	db TAIL_WHIP
-	db LEER
-	db BITE
-	db GROWL
-	db ROAR
-	db SING
-	db PECK
-	db ABSORB
-	db STRING_SHOT
-	db EARTHQUAKE
-	db FISSURE
-	db DIG
-	db TOXIC
-	db SCREECH
-	db METRONOME
-	db LICK
-	db CLAMP
-	db CONSTRICT
-	db POISON_GAS
-	db BUBBLE
-	db SLASH
-	db SPIDER_WEB
-	db NIGHTMARE
-	db CURSE
-	db FORESIGHT
-	db CHARM
-	db ATTRACT
-	db ROCK_SMASH
-	db 0 ; end set
-
-; all other moves = 4
-	db $ff ; end
-; 105ed0
+INCLUDE "data/moves/grammar.asm"
 
 
 UpdateUsedMoves: ; 105ed0
--- a/engine/battle_anims/anim_commands.asm
+++ b/engine/battle_anims/anim_commands.asm
@@ -5,7 +5,7 @@
 	ld a, [rSVBK]
 	push af
 
-	ld a, 5
+	ld a, BANK(ActiveAnimObjects)
 	ld [rSVBK], a
 
 	call _PlayBattleAnim
@@ -163,7 +163,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(CurBattleMon) ; alternatively: BANK(TempMon), BANK(PartyMon1), several others
 	ld [rSVBK], a
 
 	ld hl, UpdateBattleHuds
@@ -232,8 +232,7 @@
 	ret
 ; cc220
 
-Functioncc220: ; cc220
-; Appears to be unused.
+Unreferenced_Functioncc220: ; cc220
 	xor a
 	ld [hBGMapMode], a
 	ld a, LOW(vBGMap0 tile $28)
@@ -258,15 +257,15 @@
 	bit 3, a
 	jr z, .delete
 
-	ld hl, Sprites + 3
-	ld c, (SpritesEnd - Sprites) / 4
+	ld hl, Sprite01Attributes
+	ld c, NUM_SPRITE_OAM_STRUCTS
 .loop
 	ld a, [hl]
 	and $f0
 	ld [hli], a
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .loop
 	ret
@@ -917,7 +916,7 @@
 BattleAnimCmd_Transform: ; cc5dc (33:45dc)
 	ld a, [rSVBK]
 	push af
-	ld a, 1
+	ld a, BANK(CurPartySpecies)
 	ld [rSVBK], a
 	ld a, [CurPartySpecies] ; CurPartySpecies
 	push af
@@ -973,9 +972,9 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, 1
+	ld a, 1 ; unnecessary bankswitch?
 	ld [rSVBK], a
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 
 GetSubstitutePic: ; cc64c
@@ -1047,9 +1046,9 @@
 BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf)
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, 1 ; unnecessary bankswitch?
 	ld [rSVBK], a
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 	call GetMinimizePic
 	call Request2bpp
@@ -1077,7 +1076,7 @@
 	call CopyMinimizePic
 	ld hl, vTiles2 tile $00
 	ld de, sScratch
-	lb bc, BANK(GetMinimizePic), $31
+	lb bc, BANK(GetMinimizePic), 7 * 7
 	ret
 
 .player
@@ -1085,7 +1084,7 @@
 	call CopyMinimizePic
 	ld hl, vTiles2 tile $31
 	ld de, sScratch
-	lb bc, BANK(GetMinimizePic), $24
+	lb bc, BANK(GetMinimizePic), 6 * 6
 	ret
 
 CopyMinimizePic: ; cc719 (33:4719)
@@ -1103,9 +1102,9 @@
 BattleAnimCmd_Minimize: ; cc735 (33:4735)
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, 1 ; unnecessary bankswitch?
 	ld [rSVBK], a
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 	call GetMinimizePic
 	ld hl, vTiles0 tile $00
@@ -1118,7 +1117,7 @@
 BattleAnimCmd_DropSub: ; cc750 (33:4750)
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(CurPartySpecies)
 	ld [rSVBK], a
 
 	ld a, [CurPartySpecies] ; CurPartySpecies
@@ -1143,7 +1142,7 @@
 BattleAnimCmd_BeatUp: ; cc776 (33:4776)
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(CurPartySpecies)
 	ld [rSVBK], a
 	ld a, [CurPartySpecies] ; CurPartySpecies
 	push af
@@ -1207,7 +1206,7 @@
 	srl a
 	ld [wSFXDuration], a
 	call .GetCryTrack
-	and 3
+	maskbits NUM_NOISE_CHANS
 	ld [CryTracks], a ; CryTracks
 
 	ld e, a
@@ -1244,7 +1243,7 @@
 
 BattleAnimCmd_Cry: ; cc807 (33:4807)
 	call GetBattleAnimByte
-	and 3
+	maskbits NUM_NOISE_CHANS
 	ld e, a
 	ld d, 0
 	ld hl, .CryData
@@ -1254,7 +1253,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, 1
+	ld a, BANK(EnemyMon) ; BattleMon is in WRAM0, but EnemyMon is in WRAMX
 	ld [rSVBK], a
 
 	ld a, [hBattleTurn]
@@ -1262,18 +1261,18 @@
 	jr nz, .enemy
 
 	ld a, $f0
-	ld [CryTracks], a ; CryTracks
-	ld a, [BattleMonSpecies] ; BattleMonSpecies
+	ld [CryTracks], a
+	ld a, [BattleMonSpecies]
 	jr .done_cry_tracks
 
 .enemy
 	ld a, $0f
-	ld [CryTracks], a ; CryTracks
-	ld a, [EnemyMonSpecies] ; EnemyMon
+	ld [CryTracks], a
+	ld a, [EnemyMonSpecies]
 
 .done_cry_tracks
 	push hl
-	call LoadCryHeader
+	call LoadCry
 	pop hl
 	jr c, .done
 
@@ -1310,7 +1309,7 @@
 	ld a, 1
 	ld [wStereoPanningMask], a
 
-	callfar _PlayCryHeader
+	callfar _PlayCry
 
 .done
 	pop af
@@ -1431,7 +1430,7 @@
 	ret z
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, wBGPals2
 	ld de, wBGPals1
@@ -1459,7 +1458,7 @@
 	ret z
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wOBPals1)
 	ld [rSVBK], a
 	ld hl, wOBPals2 palette PAL_BATTLE_OB_GRAY
 	ld de, wOBPals1 palette PAL_BATTLE_OB_GRAY
--- a/engine/battle_anims/bg_effects.asm
+++ b/engine/battle_anims/bg_effects.asm
@@ -506,13 +506,13 @@
 	push bc
 	call BGEffect_CheckBattleTurn
 	jr nz, .player_turn
-	ld a, ANIM_OBJ_BA
+	ld a, ANIM_OBJ_PLAYERHEADFOLLOW
 	ld [wBattleAnimTemp0], a
 	ld a, 16 * 8 + 4
 	jr .okay
 
 .player_turn
-	ld a, ANIM_OBJ_BB
+	ld a, ANIM_OBJ_ENEMYHEADFOLLOW
 	ld [wBattleAnimTemp0], a
 	ld a, 6 * 8
 .okay
@@ -2578,7 +2578,7 @@
 	ld h, a
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld a, h
 	push bc
@@ -2605,7 +2605,7 @@
 	ld h, a
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld a, h
 	push bc
--- /dev/null
+++ b/engine/battle_anims/core.asm
@@ -1,0 +1,314 @@
+QueueBattleAnimation: ; cc9a1 (33:49a1)
+	ld hl, ActiveAnimObjects
+	ld e, 10
+.loop
+	ld a, [hl]
+	and a
+	jr z, .done
+	ld bc, BATTLEANIMSTRUCT_LENGTH
+	add hl, bc
+	dec e
+	jr nz, .loop
+	scf
+	ret
+
+.done
+	ld c, l
+	ld b, h
+	ld hl, wNumActiveBattleAnims
+	inc [hl]
+	call InitBattleAnimation
+	ret
+
+DeinitBattleAnimation: ; cc9bd
+	ld hl, BATTLEANIMSTRUCT_INDEX
+	add hl, bc
+	ld [hl], $0
+	ret
+
+; cc9c4
+
+InitBattleAnimation: ; cc9c4 (33:49c4)
+	ld a, [wBattleAnimTemp0]
+	ld e, a
+	ld d, 0
+	ld hl, BattleAnimObjects
+rept 6
+	add hl, de
+endr
+	ld e, l
+	ld d, h
+	ld hl, BATTLEANIMSTRUCT_INDEX
+	add hl, bc
+	ld a, [wNumActiveBattleAnims]
+	ld [hli], a ; Index
+	ld a, [de]
+	inc de
+	ld [hli], a ; 01
+	ld a, [de]
+	inc de
+	ld [hli], a ; 02
+	ld a, [de]
+	inc de
+	ld [hli], a ; Frameset ID
+	ld a, [de]
+	inc de
+	ld [hli], a ; Function
+	ld a, [de]
+	inc de
+	ld [hli], a ; 05
+	ld a, [de]
+	call GetBattleAnimTileOffset
+	ld [hli], a ; Tile ID
+	ld a, [wBattleAnimTemp1]
+	ld [hli], a ; X Coord
+	ld a, [wBattleAnimTemp2]
+	ld [hli], a ; Y Coord
+	xor a
+	ld [hli], a ; X Offset
+	ld [hli], a ; Y Offset
+	ld a, [wBattleAnimTemp3]
+	ld [hli], a ; 0b
+	xor a
+	ld [hli], a ; 0c
+	dec a
+	ld [hli], a ; 0d
+	xor a
+	ld [hli], a ; 0e
+	ld [hli], a ; 0f
+	ld [hl], a  ; 10
+	ret
+
+BattleAnimOAMUpdate: ; cca09
+	call InitBattleAnimBuffer
+	call GetBattleAnimFrame
+	cp -3
+	jp z, .done
+	cp -4
+	jp z, .delete
+	push af
+	ld hl, wBattleAnimTempOAMFlags
+	ld a, [wBattleAnimTempAddSubFlags]
+	xor [hl]
+	and $e0
+	ld [hl], a
+	pop af
+	push bc
+	call GetBattleAnimOAMPointer
+	ld a, [wBattleAnimTempTileID]
+	add [hl]
+	ld [wBattleAnimTempTileID], a
+	inc hl
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wBattleAnimOAMPointerLo]
+	ld e, a
+	ld d, HIGH(Sprites)
+.loop
+	ld a, [wBattleAnimTempYCoord]
+	ld b, a
+	ld a, [wBattleAnimTempYOffset]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, wBattleAnimTempOAMFlags
+	bit 6, [hl]
+	jr z, .no_yflip
+	add $8
+	xor $ff
+	inc a
+
+.no_yflip
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempXCoord]
+	ld b, a
+	ld a, [wBattleAnimTempXOffset]
+	add b
+	ld b, a
+	push hl
+	ld a, [hl]
+	ld hl, wBattleAnimTempOAMFlags
+	bit 5, [hl]
+	jr z, .no_xflip
+	add $8
+	xor $ff
+	inc a
+
+.no_xflip
+	pop hl
+	add b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempTileID]
+	add $31
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wBattleAnimTempOAMFlags]
+	ld b, a
+	ld a, [hl]
+	xor b
+	and $e0
+	ld b, a
+	ld a, [hl]
+	and $10
+	or b
+	ld b, a
+	ld a, [wBattleAnimTempPalette]
+	and $f
+	or b
+	ld [de], a
+	inc hl
+	inc de
+	ld a, e
+	ld [wBattleAnimOAMPointerLo], a
+	cp $a0
+	jr nc, .exit_set_carry
+	dec c
+	jr nz, .loop
+	pop bc
+	jr .done
+
+.delete
+	call DeinitBattleAnimation
+
+.done
+	and a
+	ret
+
+.exit_set_carry
+	pop bc
+	scf
+	ret
+
+; ccaaa
+
+InitBattleAnimBuffer: ; ccaaa
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	ld a, [hl]
+	and %10000000
+	ld [wBattleAnimTempOAMFlags], a
+	xor a
+	ld [wBattleAnimTempAddSubFlags], a
+	ld hl, BATTLEANIMSTRUCT_PALETTE
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTempPalette], a
+	ld hl, BATTLEANIMSTRUCT_02
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTempField02], a
+	ld hl, BATTLEANIMSTRUCT_TILEID
+	add hl, bc
+	ld a, [hli]
+	ld [wBattleAnimTempTileID], a
+	ld a, [hli]
+	ld [wBattleAnimTempXCoord], a
+	ld a, [hli]
+	ld [wBattleAnimTempYCoord], a
+	ld a, [hli]
+	ld [wBattleAnimTempXOffset], a
+	ld a, [hli]
+	ld [wBattleAnimTempYOffset], a
+	ld a, [hBattleTurn]
+	and a
+	ret z
+	ld hl, BATTLEANIMSTRUCT_01
+	add hl, bc
+	ld a, [hl]
+	ld [wBattleAnimTempOAMFlags], a
+	bit 0, [hl]
+	ret z
+	ld hl, BATTLEANIMSTRUCT_XCOORD
+	add hl, bc
+	ld a, [hli]
+	ld d, a
+	ld a, (-10 * 8) + 4
+	sub d
+	ld [wBattleAnimTempXCoord], a
+	ld a, [hli]
+	ld d, a
+	ld a, [wBattleAnimTempField02]
+	cp $ff
+	jr nz, .check_kinesis_softboiled_milkdrink
+	ld a, 5 * 8
+	add d
+	jr .done
+
+.check_kinesis_softboiled_milkdrink
+	sub d
+	push af
+	ld a, [FXAnimID + 1]
+	or a
+	jr nz, .no_sub
+	ld a, [FXAnimID]
+	cp KINESIS
+	jr z, .kinesis
+	cp SOFTBOILED
+	jr z, .softboiled
+	cp MILK_DRINK
+	jr nz, .no_sub
+.kinesis
+.softboiled
+.milk_drink
+	pop af
+	sub 1 * 8
+	jr .done
+
+.no_sub
+	pop af
+.done
+	ld [wBattleAnimTempYCoord], a
+	ld a, [hli]
+	xor $ff
+	inc a
+	ld [wBattleAnimTempXOffset], a
+	ret
+
+; ccb31
+
+GetBattleAnimTileOffset: ; ccb31 (33:4b31)
+	push hl
+	push bc
+	ld hl, wBattleAnimTileDict
+	ld b, a
+	ld c, 10 / 2
+.loop
+	ld a, [hli]
+	cp b
+	jr z, .load
+	inc hl
+	dec c
+	jr nz, .loop
+	xor a
+	jr .done
+
+.load
+	ld a, [hl]
+.done
+	pop bc
+	pop hl
+	ret
+
+_ExecuteBGEffects: ; ccb48
+	callfar ExecuteBGEffects
+	ret
+
+; ccb4f
+
+_QueueBGEffect: ; ccb4f (33:4b4f)
+	callfar QueueBGEffect
+	ret
+
+; ccb56 (33:4b56)
--- a/engine/battle_anims/engine.asm
+++ /dev/null
@@ -1,314 +1,0 @@
-QueueBattleAnimation: ; cc9a1 (33:49a1)
-	ld hl, ActiveAnimObjects
-	ld e, 10
-.loop
-	ld a, [hl]
-	and a
-	jr z, .done
-	ld bc, BATTLEANIMSTRUCT_LENGTH
-	add hl, bc
-	dec e
-	jr nz, .loop
-	scf
-	ret
-
-.done
-	ld c, l
-	ld b, h
-	ld hl, wNumActiveBattleAnims
-	inc [hl]
-	call InitBattleAnimation
-	ret
-
-DeinitBattleAnimation: ; cc9bd
-	ld hl, BATTLEANIMSTRUCT_INDEX
-	add hl, bc
-	ld [hl], $0
-	ret
-
-; cc9c4
-
-InitBattleAnimation: ; cc9c4 (33:49c4)
-	ld a, [wBattleAnimTemp0]
-	ld e, a
-	ld d, 0
-	ld hl, BattleAnimObjects
-rept 6
-	add hl, de
-endr
-	ld e, l
-	ld d, h
-	ld hl, BATTLEANIMSTRUCT_INDEX
-	add hl, bc
-	ld a, [wNumActiveBattleAnims]
-	ld [hli], a ; Index
-	ld a, [de]
-	inc de
-	ld [hli], a ; 01
-	ld a, [de]
-	inc de
-	ld [hli], a ; 02
-	ld a, [de]
-	inc de
-	ld [hli], a ; Frameset ID
-	ld a, [de]
-	inc de
-	ld [hli], a ; Function
-	ld a, [de]
-	inc de
-	ld [hli], a ; 05
-	ld a, [de]
-	call GetBattleAnimTileOffset
-	ld [hli], a ; Tile ID
-	ld a, [wBattleAnimTemp1]
-	ld [hli], a ; X Coord
-	ld a, [wBattleAnimTemp2]
-	ld [hli], a ; Y Coord
-	xor a
-	ld [hli], a ; X Offset
-	ld [hli], a ; Y Offset
-	ld a, [wBattleAnimTemp3]
-	ld [hli], a ; 0b
-	xor a
-	ld [hli], a ; 0c
-	dec a
-	ld [hli], a ; 0d
-	xor a
-	ld [hli], a ; 0e
-	ld [hli], a ; 0f
-	ld [hl], a  ; 10
-	ret
-
-BattleAnimOAMUpdate: ; cca09
-	call InitBattleAnimBuffer
-	call GetBattleAnimFrame
-	cp -3
-	jp z, .done
-	cp -4
-	jp z, .delete
-	push af
-	ld hl, wBattleAnimTempOAMFlags
-	ld a, [wBattleAnimTempAddSubFlags]
-	xor [hl]
-	and $e0
-	ld [hl], a
-	pop af
-	push bc
-	call GetBattleAnimOAMPointer
-	ld a, [wBattleAnimTempTileID]
-	add [hl]
-	ld [wBattleAnimTempTileID], a
-	inc hl
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wBattleAnimOAMPointerLo]
-	ld e, a
-	ld d, HIGH(Sprites)
-.loop
-	ld a, [wBattleAnimTempYCoord]
-	ld b, a
-	ld a, [wBattleAnimTempYOffset]
-	add b
-	ld b, a
-	push hl
-	ld a, [hl]
-	ld hl, wBattleAnimTempOAMFlags
-	bit 6, [hl]
-	jr z, .no_yflip
-	add $8
-	xor $ff
-	inc a
-
-.no_yflip
-	pop hl
-	add b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wBattleAnimTempXCoord]
-	ld b, a
-	ld a, [wBattleAnimTempXOffset]
-	add b
-	ld b, a
-	push hl
-	ld a, [hl]
-	ld hl, wBattleAnimTempOAMFlags
-	bit 5, [hl]
-	jr z, .no_xflip
-	add $8
-	xor $ff
-	inc a
-
-.no_xflip
-	pop hl
-	add b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wBattleAnimTempTileID]
-	add $31
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wBattleAnimTempOAMFlags]
-	ld b, a
-	ld a, [hl]
-	xor b
-	and $e0
-	ld b, a
-	ld a, [hl]
-	and $10
-	or b
-	ld b, a
-	ld a, [wBattleAnimTempPalette]
-	and $f
-	or b
-	ld [de], a
-	inc hl
-	inc de
-	ld a, e
-	ld [wBattleAnimOAMPointerLo], a
-	cp $a0
-	jr nc, .exit_set_carry
-	dec c
-	jr nz, .loop
-	pop bc
-	jr .done
-
-.delete
-	call DeinitBattleAnimation
-
-.done
-	and a
-	ret
-
-.exit_set_carry
-	pop bc
-	scf
-	ret
-
-; ccaaa
-
-InitBattleAnimBuffer: ; ccaaa
-	ld hl, BATTLEANIMSTRUCT_01
-	add hl, bc
-	ld a, [hl]
-	and %10000000
-	ld [wBattleAnimTempOAMFlags], a
-	xor a
-	ld [wBattleAnimTempAddSubFlags], a
-	ld hl, BATTLEANIMSTRUCT_PALETTE
-	add hl, bc
-	ld a, [hl]
-	ld [wBattleAnimTempPalette], a
-	ld hl, BATTLEANIMSTRUCT_02
-	add hl, bc
-	ld a, [hl]
-	ld [wBattleAnimTempField02], a
-	ld hl, BATTLEANIMSTRUCT_TILEID
-	add hl, bc
-	ld a, [hli]
-	ld [wBattleAnimTempTileID], a
-	ld a, [hli]
-	ld [wBattleAnimTempXCoord], a
-	ld a, [hli]
-	ld [wBattleAnimTempYCoord], a
-	ld a, [hli]
-	ld [wBattleAnimTempXOffset], a
-	ld a, [hli]
-	ld [wBattleAnimTempYOffset], a
-	ld a, [hBattleTurn]
-	and a
-	ret z
-	ld hl, BATTLEANIMSTRUCT_01
-	add hl, bc
-	ld a, [hl]
-	ld [wBattleAnimTempOAMFlags], a
-	bit 0, [hl]
-	ret z
-	ld hl, BATTLEANIMSTRUCT_XCOORD
-	add hl, bc
-	ld a, [hli]
-	ld d, a
-	ld a, (-10 * 8) + 4
-	sub d
-	ld [wBattleAnimTempXCoord], a
-	ld a, [hli]
-	ld d, a
-	ld a, [wBattleAnimTempField02]
-	cp $ff
-	jr nz, .check_kinesis_softboiled_milkdrink
-	ld a, 5 * 8
-	add d
-	jr .done
-
-.check_kinesis_softboiled_milkdrink
-	sub d
-	push af
-	ld a, [FXAnimID + 1]
-	or a
-	jr nz, .no_sub
-	ld a, [FXAnimID]
-	cp KINESIS
-	jr z, .kinesis
-	cp SOFTBOILED
-	jr z, .softboiled
-	cp MILK_DRINK
-	jr nz, .no_sub
-.kinesis
-.softboiled
-.milk_drink
-	pop af
-	sub 1 * 8
-	jr .done
-
-.no_sub
-	pop af
-.done
-	ld [wBattleAnimTempYCoord], a
-	ld a, [hli]
-	xor $ff
-	inc a
-	ld [wBattleAnimTempXOffset], a
-	ret
-
-; ccb31
-
-GetBattleAnimTileOffset: ; ccb31 (33:4b31)
-	push hl
-	push bc
-	ld hl, wBattleAnimTileDict
-	ld b, a
-	ld c, 10 / 2
-.loop
-	ld a, [hli]
-	cp b
-	jr z, .load
-	inc hl
-	dec c
-	jr nz, .loop
-	xor a
-	jr .done
-
-.load
-	ld a, [hl]
-.done
-	pop bc
-	pop hl
-	ret
-
-_ExecuteBGEffects: ; ccb48
-	callfar ExecuteBGEffects
-	ret
-
-; ccb4f
-
-_QueueBGEffect: ; ccb4f (33:4b4f)
-	callfar QueueBGEffect
-	ret
-
-; ccb56 (33:4b56)
--- a/engine/battle_anims/functions.asm
+++ b/engine/battle_anims/functions.asm
@@ -428,9 +428,9 @@
 	ld hl, BallColors
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(CurItem)
 	ld [rSVBK], a
-	ld a, [CurItem] ; CurItem
+	ld a, [CurItem]
 	ld e, a
 	pop af
 	ld [rSVBK], a
@@ -4083,11 +4083,12 @@
 	ret
 
 BattleAnim_Cosine: ; ce732 (33:6732)
-	add $10
+; a = d * cos(a * pi/32)
+	add %010000
 BattleAnim_Sine: ; ce734 (33:6734)
-; a = d sin a
-	and $3f
-	cp $20
+; a = d * sin(a * pi/32)
+	and %111111
+	cp %100000
 	jr nc, .negative
 	call .ApplySineWave
 	ld a, h
@@ -4094,7 +4095,7 @@
 	ret
 
 .negative
-	and $1f
+	and %011111
 	call .ApplySineWave
 	ld a, h
 	xor $ff
@@ -4111,7 +4112,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, $0
+	ld hl, 0
 .multiply
 	srl a
 	jr nc, .even
--- a/engine/battle_anims/getpokeballwobble.asm
+++ b/engine/battle_anims/getpokeballwobble.asm
@@ -8,7 +8,7 @@
 	ld d, a
 	push de
 
-	ld a, 1 ; BANK(Buffer2)
+	ld a, BANK(Buffer2)
 	ld [rSVBK], a
 
 	ld a, [Buffer2]
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -136,7 +136,7 @@
 	jp c, BillsPCDepositFuncCancel
 	ld a, [wMenuCursorY]
 	dec a
-	and $3
+	and %11
 	ld e, a
 	ld d, 0
 	ld hl, BillsPCDepositJumptable
@@ -229,15 +229,14 @@
 ; e253d (38:653d)
 
 BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 9, 4, SCREEN_WIDTH - 1, 13
 	dw .MenuData2
 	db 1 ; default option
 ; 0xe2545
 
 .MenuData2: ; 0xe2545 (38:6545)
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "DEPOSIT@"
 	db "STATS@"
@@ -245,8 +244,7 @@
 	db "CANCEL@"
 ; 0xe2564 (38:6564)
 
-BillsPC_ClearThreeBoxes: ; e2564
-; unreferenced
+Unreferenced_BillsPCClearThreeBoxes: ; e2564
 	hlcoord 0, 0
 	ld b,  4
 	ld c,  8
@@ -401,7 +399,7 @@
 	jp c, .cancel
 	ld a, [wMenuCursorY]
 	dec a
-	and 3
+	and %11
 	ld e, a
 	ld d, 0
 	ld hl, .dw
@@ -490,15 +488,14 @@
 ; e2731 (38:6731)
 
 .MenuDataHeader: ; 0xe2731
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 9, 4, SCREEN_WIDTH - 1, 13
 	dw .MenuData
 	db 1 ; default option
 ; 0xe2739
 
 .MenuData: ; 0xe2739
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "WITHDRAW@"
 	db "STATS@"
@@ -663,7 +660,7 @@
 	jp c, .Cancel
 	ld a, [wMenuCursorY]
 	dec a
-	and 3
+	and %11
 	ld e, a
 	ld d, 0
 	ld hl, .Jumptable2
@@ -714,15 +711,14 @@
 ; e28c3
 
 .MenuDataHeader: ; 0xe28c3
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 9, 4, SCREEN_WIDTH - 1, 13
 	dw .MenuData2
 	db 1 ; default option
 ; 0xe28cb
 
 .MenuData2: ; 0xe28cb
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
 	db "MOVE@"
 	db "STATS@"
@@ -1335,11 +1331,11 @@
 	jr z, .boxfail
 	ld bc, sBoxMonNicknames - sBox
 	add hl, bc
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, e
 	call AddNTimes
 	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call CloseSRAM
 	pop hl
@@ -1361,11 +1357,11 @@
 	and a
 	jr z, .partyfail
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, e
 	call AddNTimes
 	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	pop hl
 	ld de, StringBuffer1
@@ -1387,11 +1383,11 @@
 	and a
 	jr z, .sBoxFail
 	ld hl, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, e
 	call AddNTimes
 	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call CloseSRAM
 	pop hl
@@ -1502,7 +1498,7 @@
 
 .place_cursor
 	ld hl, .OAM
-	ld de, Sprites
+	ld de, Sprite01
 .loop
 	ld a, [hl]
 	cp -1
@@ -1512,9 +1508,9 @@
 	swap a
 	add [hl]
 	inc hl
-	ld [de], a
+	ld [de], a ; y
 	inc de
-rept 3
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -1523,36 +1519,36 @@
 ; e2e2b (38:6e2b)
 
 .OAM: ; e2e2b
-	dsprite 4, 6, 10, 0, $00, $00
-	dsprite 4, 6, 11, 0, $00, $00
-	dsprite 4, 6, 12, 0, $00, $00
-	dsprite 4, 6, 13, 0, $00, $00
-	dsprite 4, 6, 14, 0, $00, $00
-	dsprite 4, 6, 15, 0, $00, $00
-	dsprite 4, 6, 16, 0, $00, $00
-	dsprite 4, 6, 17, 0, $00, $00
-	dsprite 4, 6, 18, 0, $00, $00
-	dsprite 4, 6, 18, 7, $00, $00
-	dsprite 7, 1, 10, 0, $00, $40
-	dsprite 7, 1, 11, 0, $00, $40
-	dsprite 7, 1, 12, 0, $00, $40
-	dsprite 7, 1, 13, 0, $00, $40
-	dsprite 7, 1, 14, 0, $00, $40
-	dsprite 7, 1, 15, 0, $00, $40
-	dsprite 7, 1, 16, 0, $00, $40
-	dsprite 7, 1, 17, 0, $00, $40
-	dsprite 7, 1, 18, 0, $00, $40
-	dsprite 7, 1, 18, 7, $00, $40
-	dsprite 5, 6,  9, 6, $01, $00
-	dsprite 6, 1,  9, 6, $01, $40
-	dsprite 5, 6, 19, 1, $01, $20
-	dsprite 6, 1, 19, 1, $01, $60
+	dsprite 4, 6, 10, 0, $00, 0
+	dsprite 4, 6, 11, 0, $00, 0
+	dsprite 4, 6, 12, 0, $00, 0
+	dsprite 4, 6, 13, 0, $00, 0
+	dsprite 4, 6, 14, 0, $00, 0
+	dsprite 4, 6, 15, 0, $00, 0
+	dsprite 4, 6, 16, 0, $00, 0
+	dsprite 4, 6, 17, 0, $00, 0
+	dsprite 4, 6, 18, 0, $00, 0
+	dsprite 4, 6, 18, 7, $00, 0
+	dsprite 7, 1, 10, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 11, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 12, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 13, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 14, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 15, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 16, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 17, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 18, 0, $00, 0 | Y_FLIP
+	dsprite 7, 1, 18, 7, $00, 0 | Y_FLIP
+	dsprite 5, 6,  9, 6, $01, 0
+	dsprite 6, 1,  9, 6, $01, 0 | Y_FLIP
+	dsprite 5, 6, 19, 1, $01, 0 | X_FLIP
+	dsprite 6, 1, 19, 1, $01, 0 | X_FLIP | Y_FLIP
 	db -1
 ; e2e8c
 
 BillsPC_UpdateInsertCursor: ; e2e8c
 	ld hl, .OAM
-	ld de, Sprites
+	ld de, Sprite01
 .loop
 	ld a, [hl]
 	cp -1
@@ -1562,9 +1558,9 @@
 	swap a
 	add [hl]
 	inc hl
-	ld [de], a
+	ld [de], a ; y
 	inc de
-rept 3
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -1573,20 +1569,20 @@
 ; e2eac
 
 .OAM: ; e2eac
-	dsprite 4, 7, 10, 0, $06, $00
-	dsprite 5, 3, 11, 0, $00, $40
-	dsprite 5, 3, 12, 0, $00, $40
-	dsprite 5, 3, 13, 0, $00, $40
-	dsprite 5, 3, 14, 0, $00, $40
-	dsprite 5, 3, 15, 0, $00, $40
-	dsprite 5, 3, 16, 0, $00, $40
-	dsprite 5, 3, 17, 0, $00, $40
-	dsprite 5, 3, 18, 0, $00, $40
-	dsprite 4, 7, 19, 0, $07, $00
+	dsprite 4, 7, 10, 0, $06, 0
+	dsprite 5, 3, 11, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 12, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 13, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 14, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 15, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 16, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 17, 0, $00, 0 | Y_FLIP
+	dsprite 5, 3, 18, 0, $00, 0 | Y_FLIP
+	dsprite 4, 7, 19, 0, $07, 0
 	db -1
 ; e2ed5
 
-BillsPC_UnusedFillBox: ; e2ed5
+Unreferenced_BillsPC_FillBox: ; e2ed5
 .row
 	push bc
 	push hl
@@ -1823,13 +1819,13 @@
 	call GetNick
 	ld a, PC_DEPOSIT
 	ld [wPokemonWithdrawDepositParameter], a
-	predef SentGetPkmnIntoFromBox
+	predef SendGetPkmnIntoFromBox
 	jr c, .asm_boxisfull
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
 	farcall RemoveMonFromPartyOrBox
 	ld a, [CurPartySpecies]
-	call PlayCry
+	call PlayMonCry
 	hlcoord 0, 0
 	lb bc, 15, 8
 	call ClearBox
@@ -1878,13 +1874,13 @@
 	call CloseSRAM
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
-	predef SentGetPkmnIntoFromBox
+	predef SendGetPkmnIntoFromBox
 	jr c, .PartyFull
 	ld a, PC_DEPOSIT
 	ld [wPokemonWithdrawDepositParameter], a
 	farcall RemoveMonFromPartyOrBox
 	ld a, [CurPartySpecies]
-	call PlayCry
+	call PlayMonCry
 	hlcoord 0, 0
 	lb bc, 15, 8
 	call ClearBox
@@ -1938,7 +1934,7 @@
 	jr c, .skip_cry
 	ld e, c
 	ld d, b
-	call PlayCryHeader
+	call PlayCry
 .skip_cry
 
 	ld a, [CurPartySpecies]
@@ -2104,7 +2100,7 @@
 	ld hl, wBillsPC_BackupScrollPosition
 	add [hl]
 	ld [CurPartyMon], a
-	ld a, $1
+	ld a, BANK(sBox)
 	call GetSRAMBank
 	ld hl, sBoxSpecies
 	call CopySpeciesToTemp
@@ -2175,11 +2171,11 @@
 	ret
 
 CopyNicknameToTemp: ; e3363 (38:7363)
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld de, wBufferMonNick
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ret
 
@@ -2333,15 +2329,14 @@
 ; e35f1 (38:75f1)
 
 _ChangeBox_menudataheader: ; 0xe35f1
-	db $40 ; flags
-	db 05, 01 ; start coords
-	db 12, 09 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 1, 5, 9, 12
 	dw .menudata2
 	db 1 ; default option
 ; 0xe35f9
 
 .menudata2 ; 0xe35f9
-	db $22 ; flags
+	db MENU_UNUSED_1 | MENU_UNUSED_3 ; flags
 	db 4, 0
 	db 1
 	dba .boxes
@@ -2559,18 +2554,17 @@
 	ret
 ; e3778 (38:7778)
 
-	hlcoord 11, 7 ; XXX
+	hlcoord 11, 7 ; unused
 
 .MenuDataHeader: ; 0xe377b
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 13, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 4, SCREEN_WIDTH - 1, 13
 	dw .MenuData2
 	db 1 ; default option
 ; 0xe3783
 
 .MenuData2: ; 0xe3783
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "SWITCH@"
 	db "NAME@"
--- a/engine/billspctop.asm
+++ b/engine/billspctop.asm
@@ -69,14 +69,13 @@
 	ret
 
 .MenuDataHeader: ; 0xe46f
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2: ; 0xe477
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 0 ; items
 	dw .items
 	dw PlaceMenuStrings
@@ -143,7 +142,7 @@
 	and a
 	ret
 
-Functione512: ; unused
+Unreferenced_Functione512:
 	ld a, [PartyCount]
 	and a
 	jr z, .no_pkmn
@@ -212,7 +211,7 @@
 	and a
 	ret
 
-Functione56d: ; unused
+Unreferenced_Functione56d:
 	ld a, [PartyCount]
 	cp PARTY_LENGTH
 	jr nc, .asm_e576
@@ -268,7 +267,7 @@
 	call CloseSRAM
 	ret
 
-Functione5d9: ; unreferenced
+Unreferenced_Functione5d9:
 	ld a, [wCurBox]
 	cp b
 	jr z, .same_box
--- a/engine/breeding.asm
+++ b/engine/breeding.asm
@@ -232,7 +232,7 @@
 	push de
 
 	farcall SetEggMonCaughtData
-	farcall TrainerRankings_EggsHatched
+	farcall StubbedTrainerRankings_EggsHatched
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Species
 	ld bc, PARTYMON_STRUCT_LENGTH
@@ -320,7 +320,7 @@
 	call PrintText
 	ld a, [CurPartyMon]
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -345,7 +345,7 @@
 
 .nonickname
 	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 .next ; 1707d (5:707d)
@@ -659,7 +659,7 @@
 	ld hl, BattleMonDVs
 	predef GetUnownLetter
 	pop de
-	predef_jump GetAnimatedFrontpicPredef
+	predef_jump GetAnimatedFrontpic
 
 Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254)
 	push af
@@ -726,11 +726,11 @@
 	ld c, 80
 	call DelayFrames
 	xor a
-	ld [wcf64], a
+	ld [wFrameCounter], a
 	ld a, [hSCX]
 	ld b, a
 .outerloop
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	inc [hl]
 	cp 8
@@ -791,7 +791,7 @@
 	jp GetSGBLayout
 
 EggHatch_CrackShell: ; 1736d (5:736d)
-	ld a, [wcf64]
+	ld a, [wFrameCounter]
 	dec a
 	and $7
 	cp $7
@@ -860,18 +860,22 @@
 	ret
 ; 173ef (5:73ef)
 
+shell_fragment: MACRO
+; y tile, y pxl, x tile, x pxl, frameset offset, ???
+	db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5 - SPRITE_ANIM_FRAMESET_EGG_HATCH_1, \6
+ENDM
+
 .SpriteData: ; 173ef
-; Probably OAM.
-	dsprite 10, 4,  9, 0, $00, $3c
-	dsprite 11, 4,  9, 0, $01, $04
-	dsprite 10, 4, 10, 0, $00, $30
-	dsprite 11, 4, 10, 0, $01, $10
-	dsprite 10, 4, 11, 0, $02, $24
-	dsprite 11, 4, 11, 0, $03, $1c
-	dsprite 10, 0,  9, 4, $00, $36
-	dsprite 12, 0,  9, 4, $01, $0a
-	dsprite 10, 0, 10, 4, $02, $2a
-	dsprite 12, 0, 10, 4, $03, $16
+	shell_fragment 10, 4,  9, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_1, $3c
+	shell_fragment 11, 4,  9, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_2, $04
+	shell_fragment 10, 4, 10, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_1, $30
+	shell_fragment 11, 4, 10, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_2, $10
+	shell_fragment 10, 4, 11, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_3, $24
+	shell_fragment 11, 4, 11, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_4, $1c
+	shell_fragment 10, 0,  9, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_1, $36
+	shell_fragment 12, 0,  9, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_2, $0a
+	shell_fragment 10, 0, 10, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_3, $2a
+	shell_fragment 12, 0, 10, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_4, $16
 	db -1
 ; 17418
 
@@ -887,7 +891,7 @@
 	ld hl, DayCareMon1Text
 	call PrintText
 	ld a, [wBreedMon1Species]
-	call PlayCry
+	call PlayMonCry
 	ld a, [wDayCareLady]
 	bit 0, a
 	jr z, DayCareMonCursor
@@ -900,7 +904,7 @@
 	ld hl, DayCareMon2Text
 	call PrintText
 	ld a, [wBreedMon2Species]
-	call PlayCry
+	call PlayMonCry
 	ld a, [wDayCareMan]
 	bit 0, a
 	jr z, DayCareMonCursor
@@ -981,8 +985,7 @@
 	db "@"
 ; 0x174b5
 
-DayCareMonPrintEmptyString: ; 174b5
-; unreferenced
+Unreferenced_DayCareMonPrintEmptyString: ; 174b5
 	ld hl, .string
 	ret
 ; 174b9
--- a/engine/buy_sell_toss.asm
+++ b/engine/buy_sell_toss.asm
@@ -214,25 +214,22 @@
 ; 250ed
 
 TossItem_MenuDataHeader: ; 0x250ed
-	db $40 ; flags
-	db 09, 15 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 15, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw ret_25097
 	db 0 ; default option
 ; 0x250f5
 
 BuyItem_MenuDataHeader: ; 0x250f5
-	db $40 ; flags
-	db 15, 07 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 15, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw DisplayPurchasePrice
 	db -1 ; default option
 ; 0x250fd
 
 SellItem_MenuDataHeader: ; 0x250fd
-	db $40 ; flags
-	db 15, 07 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 15, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw DisplaySellingPrice
 	db 0 ; default option
 ; 0x25105
--- a/engine/card_flip.asm
+++ b/engine/card_flip.asm
@@ -1,7 +1,15 @@
 CARDFLIP_LIGHT_OFF EQU $ef
 CARDFLIP_LIGHT_ON  EQU $f5
+
 CARDFLIP_DECK_SIZE EQU 4 * 6
 
+; two labels below called from inside ./dummy_game.asm
+Unknown_e00ed: ; e00ed (38:40ed)
+; Graphics for an unused Game Corner
+; game were meant to be here.
+ret_e00ed: ; e00ed (38:40ed)
+	ret
+
 _CardFlip: ; e00ee (38:40ee)
 	ld hl, Options
 	set 4, [hl]
@@ -25,11 +33,11 @@
 	ld de, vTiles0 tile $00
 	call Decompress
 	ld hl, CardFlipOffButtonGFX
-	ld de, vTiles1 tile $6f
+	ld de, vTiles0 tile CARDFLIP_LIGHT_OFF
 	ld bc, 1 tiles
 	call CopyBytes
 	ld hl, CardFlipOnButtonGFX
-	ld de, vTiles1 tile $75
+	ld de, vTiles0 tile CARDFLIP_LIGHT_ON
 	ld bc, 1 tiles
 	call CopyBytes
 
@@ -593,23 +601,23 @@
 ; e0509 (38:4509)
 
 CardFlip_CopyOAM: ; e0509
-	ld de, Sprites
+	ld de, Sprite01
 	ld a, [hli]
 .loop
 	push af
 	ld a, [hli]
 	add b
-	ld [de], a
+	ld [de], a ; y
 	inc de
 	ld a, [hli]
 	add c
-	ld [de], a
+	ld [de], a ; x
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; tile id
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; attributes
 	inc de
 	pop af
 	dec a
@@ -618,11 +626,11 @@
 ; e0521
 
 CardFlip_ShiftDigitsLeftTwoPixels: ; e0521 (38:4521)
-	ld de, vTiles1 tile ("0" & $7f)
-	ld hl, vTiles1 tile ("0" & $7f) + 2
+	ld de, vTiles0 tile "0"
+	ld hl, vTiles0 tile "0" + 2
 	ld bc, 10 tiles - 2
 	call CopyBytes
-	ld hl, vTiles1 tile $7f + 1 tiles - 2
+	ld hl, vTiles0 tile "9" + 1 tiles - 2
 	xor a
 	ld [hli], a
 	ld [hl], a
@@ -1210,29 +1218,29 @@
 
 .SpriteData: ; e0853
 	db 18
-	dsprite 0, 0, 0, 0, $04, $00
-	dsprite 0, 0, 1, 0, $06, $00
-	dsprite 0, 0, 2, 0, $06, $00
-	dsprite 0, 0, 3, 0, $06, $00
-	dsprite 0, 0, 4, 0, $04, $20
+	dsprite 0, 0, 0, 0, $04, 0
+	dsprite 0, 0, 1, 0, $06, 0
+	dsprite 0, 0, 2, 0, $06, 0
+	dsprite 0, 0, 3, 0, $06, 0
+	dsprite 0, 0, 4, 0, $04, 0 | X_FLIP
 
-	dsprite 1, 0, 0, 0, $05, $00
-	dsprite 1, 0, 4, 0, $05, $20
+	dsprite 1, 0, 0, 0, $05, 0
+	dsprite 1, 0, 4, 0, $05, 0 | X_FLIP
 
-	dsprite 2, 0, 0, 0, $05, $00
-	dsprite 2, 0, 4, 0, $05, $20
+	dsprite 2, 0, 0, 0, $05, 0
+	dsprite 2, 0, 4, 0, $05, 0 | X_FLIP
 
-	dsprite 3, 0, 0, 0, $05, $00
-	dsprite 3, 0, 4, 0, $05, $20
+	dsprite 3, 0, 0, 0, $05, 0
+	dsprite 3, 0, 4, 0, $05, 0 | X_FLIP
 
 	dsprite 4, 0, 0, 0, $05, $00
-	dsprite 4, 0, 4, 0, $05, $20
+	dsprite 4, 0, 4, 0, $05, 0 | X_FLIP
 
-	dsprite 5, 0, 0, 0, $04, $40
-	dsprite 5, 0, 1, 0, $06, $40
-	dsprite 5, 0, 2, 0, $06, $40
-	dsprite 5, 0, 3, 0, $06, $40
-	dsprite 5, 0, 4, 0, $04, $60
+	dsprite 5, 0, 0, 0, $04, 0 | Y_FLIP
+	dsprite 5, 0, 1, 0, $06, 0 | Y_FLIP
+	dsprite 5, 0, 2, 0, $06, 0 | Y_FLIP
+	dsprite 5, 0, 3, 0, $06, 0 | Y_FLIP
+	dsprite 5, 0, 4, 0, $04, 0 | X_FLIP | Y_FLIP
 ; e089c
 
 ChooseCard_HandleJoypad: ; e089c
@@ -1471,145 +1479,145 @@
 
 .SingleTile: ; e0a41
 	db 6
-	dsprite   0, 0,  -1, 7, $00, $80
-	dsprite   0, 0,   0, 0, $02, $80
-	dsprite   0, 0,   1, 0, $03, $80
-	dsprite   0, 5,  -1, 7, $00, $c0
-	dsprite   0, 5,   0, 0, $02, $c0
-	dsprite   0, 5,   1, 0, $03, $80
+	dsprite  0, 0,  -1, 7, $00, 0 | PRIORITY
+	dsprite  0, 0,   0, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  0, 5,  -1, 7, $00, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   0, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   1, 0, $03, 0 | PRIORITY
 
 .PokeGroup: ; e0a5a
 	db 26
-	dsprite   0, 0,  -1, 7, $00, $80
-	dsprite   0, 0,   0, 0, $02, $80
-	dsprite   0, 0,   1, 0, $00, $a0
-	dsprite   1, 0,  -1, 7, $01, $80
-	dsprite   1, 0,   1, 0, $01, $a0
-	dsprite   2, 0,  -1, 7, $01, $80
-	dsprite   2, 0,   1, 0, $03, $80
-	dsprite   3, 0,  -1, 7, $01, $80
-	dsprite   3, 0,   1, 0, $03, $80
-	dsprite   4, 0,  -1, 7, $01, $80
-	dsprite   4, 0,   1, 0, $03, $80
-	dsprite   5, 0,  -1, 7, $01, $80
-	dsprite   5, 0,   1, 0, $03, $80
-	dsprite   6, 0,  -1, 7, $01, $80
-	dsprite   6, 0,   1, 0, $03, $80
-	dsprite   7, 0,  -1, 7, $01, $80
-	dsprite   7, 0,   1, 0, $03, $80
-	dsprite   8, 0,  -1, 7, $01, $80
-	dsprite   8, 0,   1, 0, $03, $80
-	dsprite   9, 0,  -1, 7, $01, $80
-	dsprite   9, 0,   1, 0, $03, $80
-	dsprite  10, 0,  -1, 7, $01, $80
-	dsprite  10, 0,   1, 0, $03, $80
-	dsprite  10, 1,  -1, 7, $00, $c0
-	dsprite  10, 1,   0, 0, $02, $c0
-	dsprite  10, 1,   1, 0, $03, $80
+	dsprite  0, 0,  -1, 7, $00, 0 | PRIORITY
+	dsprite  0, 0,   0, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   1, 0, $00, 0 | X_FLIP | PRIORITY
+	dsprite  1, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  1, 0,   1, 0, $01, 0 | X_FLIP | PRIORITY
+	dsprite  2, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  2, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  3, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  3, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  4, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  4, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  5, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  5, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  6, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  6, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  7, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  7, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  8, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  8, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  9, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  9, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite 10, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite 10, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite 10, 1,  -1, 7, $00, 0 | Y_FLIP | PRIORITY
+	dsprite 10, 1,   0, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite 10, 1,   1, 0, $03, 0 | PRIORITY
 
 .NumGroup: ; e0ac3
 	db 20
-	dsprite   0, 0,  -1, 7, $00, $80
-	dsprite   0, 0,   0, 0, $02, $80
-	dsprite   0, 0,   1, 0, $02, $80
-	dsprite   0, 0,   2, 0, $03, $80
-	dsprite   0, 0,   3, 0, $02, $80
-	dsprite   0, 0,   4, 0, $03, $80
-	dsprite   0, 0,   5, 0, $02, $80
-	dsprite   0, 0,   6, 0, $03, $80
-	dsprite   0, 0,   7, 0, $02, $80
-	dsprite   0, 0,   8, 0, $03, $80
-	dsprite   0, 5,  -1, 7, $00, $c0
-	dsprite   0, 5,   0, 0, $02, $c0
-	dsprite   0, 5,   1, 0, $02, $c0
-	dsprite   0, 5,   2, 0, $03, $80
-	dsprite   0, 5,   3, 0, $02, $c0
-	dsprite   0, 5,   4, 0, $03, $80
-	dsprite   0, 5,   5, 0, $02, $c0
-	dsprite   0, 5,   6, 0, $03, $80
-	dsprite   0, 5,   7, 0, $02, $c0
-	dsprite   0, 5,   8, 0, $03, $80
+	dsprite  0, 0,  -1, 7, $00, 0 | PRIORITY
+	dsprite  0, 0,   0, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   1, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   2, 0, $03, 0 | PRIORITY
+	dsprite  0, 0,   3, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   4, 0, $03, 0 | PRIORITY
+	dsprite  0, 0,   5, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   6, 0, $03, 0 | PRIORITY
+	dsprite  0, 0,   7, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   8, 0, $03, 0 | PRIORITY
+	dsprite  0, 5,  -1, 7, $00, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   0, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   1, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   2, 0, $03, 0 | PRIORITY
+	dsprite  0, 5,   3, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   4, 0, $03, 0 | PRIORITY
+	dsprite  0, 5,   5, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   6, 0, $03, 0 | PRIORITY
+	dsprite  0, 5,   7, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  0, 5,   8, 0, $03, 0 | PRIORITY
 
 .NumGroupPair: ; e0b14
 	db 30
-	dsprite   0, 0,   0, 0, $00, $80
-	dsprite   0, 0,   1, 0, $02, $80
-	dsprite   0, 0,   2, 0, $02, $80
-	dsprite   0, 0,   3, 0, $03, $80
-	dsprite   0, 0,   4, 0, $02, $80
-	dsprite   0, 0,   5, 0, $03, $80
-	dsprite   0, 0,   6, 0, $02, $80
-	dsprite   0, 0,   7, 0, $03, $80
-	dsprite   0, 0,   8, 0, $02, $80
-	dsprite   0, 0,   9, 0, $03, $80
-	dsprite   1, 0,   0, 0, $01, $80
-	dsprite   1, 0,   3, 0, $03, $80
-	dsprite   1, 0,   5, 0, $03, $80
-	dsprite   1, 0,   7, 0, $03, $80
-	dsprite   1, 0,   9, 0, $03, $80
-	dsprite   2, 0,   0, 0, $01, $80
-	dsprite   2, 0,   3, 0, $03, $80
-	dsprite   2, 0,   5, 0, $03, $80
-	dsprite   2, 0,   7, 0, $03, $80
-	dsprite   2, 0,   9, 0, $03, $80
-	dsprite   2, 1,   0, 0, $00, $c0
-	dsprite   2, 1,   1, 0, $02, $c0
-	dsprite   2, 1,   2, 0, $02, $c0
-	dsprite   2, 1,   3, 0, $03, $80
-	dsprite   2, 1,   4, 0, $03, $80
-	dsprite   2, 1,   5, 0, $03, $80
-	dsprite   2, 1,   6, 0, $03, $80
-	dsprite   2, 1,   7, 0, $03, $80
-	dsprite   2, 1,   8, 0, $03, $80
-	dsprite   2, 1,   9, 0, $03, $80
+	dsprite  0, 0,   0, 0, $00, 0 | PRIORITY
+	dsprite  0, 0,   1, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   2, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  0, 0,   4, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   5, 0, $03, 0 | PRIORITY
+	dsprite  0, 0,   6, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   7, 0, $03, 0 | PRIORITY
+	dsprite  0, 0,   8, 0, $02, 0 | PRIORITY
+	dsprite  0, 0,   9, 0, $03, 0 | PRIORITY
+	dsprite  1, 0,   0, 0, $01, 0 | PRIORITY
+	dsprite  1, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  1, 0,   5, 0, $03, 0 | PRIORITY
+	dsprite  1, 0,   7, 0, $03, 0 | PRIORITY
+	dsprite  1, 0,   9, 0, $03, 0 | PRIORITY
+	dsprite  2, 0,   0, 0, $01, 0 | PRIORITY
+	dsprite  2, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  2, 0,   5, 0, $03, 0 | PRIORITY
+	dsprite  2, 0,   7, 0, $03, 0 | PRIORITY
+	dsprite  2, 0,   9, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   0, 0, $00, 0 | Y_FLIP | PRIORITY
+	dsprite  2, 1,   1, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  2, 1,   2, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite  2, 1,   3, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   4, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   5, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   6, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   7, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   8, 0, $03, 0 | PRIORITY
+	dsprite  2, 1,   9, 0, $03, 0 | PRIORITY
 
 .PokeGroupPair: ; e0b8d
 	db 38
-	dsprite   0, 0,  -1, 7, $00, $80
-	dsprite   0, 0,   3, 0, $00, $a0
-	dsprite   1, 0,  -1, 7, $01, $80
-	dsprite   1, 0,   3, 0, $01, $a0
-	dsprite   2, 0,  -1, 7, $01, $80
-	dsprite   2, 0,   3, 0, $01, $a0
-	dsprite   3, 0,  -1, 7, $01, $80
-	dsprite   3, 0,   1, 0, $03, $80
-	dsprite   3, 0,   3, 0, $03, $80
-	dsprite   4, 0,  -1, 7, $01, $80
-	dsprite   4, 0,   1, 0, $03, $80
-	dsprite   4, 0,   3, 0, $03, $80
-	dsprite   5, 0,  -1, 7, $01, $80
-	dsprite   5, 0,   1, 0, $03, $80
-	dsprite   5, 0,   3, 0, $03, $80
-	dsprite   6, 0,  -1, 7, $01, $80
-	dsprite   6, 0,   1, 0, $03, $80
-	dsprite   6, 0,   3, 0, $03, $80
-	dsprite   7, 0,  -1, 7, $01, $80
-	dsprite   7, 0,   1, 0, $03, $80
-	dsprite   7, 0,   3, 0, $03, $80
-	dsprite   8, 0,  -1, 7, $01, $80
-	dsprite   8, 0,   1, 0, $03, $80
-	dsprite   8, 0,   3, 0, $03, $80
-	dsprite   9, 0,  -1, 7, $01, $80
-	dsprite   9, 0,   1, 0, $03, $80
-	dsprite   9, 0,   3, 0, $03, $80
-	dsprite  10, 0,  -1, 7, $01, $80
-	dsprite  10, 0,   1, 0, $03, $80
-	dsprite  10, 0,   3, 0, $03, $80
-	dsprite  11, 0,  -1, 7, $01, $80
-	dsprite  11, 0,   1, 0, $03, $80
-	dsprite  11, 0,   3, 0, $03, $80
-	dsprite  11, 1,  -1, 7, $00, $c0
-	dsprite  11, 1,   0, 0, $02, $c0
-	dsprite  11, 1,   1, 0, $03, $c0
-	dsprite  11, 1,   2, 0, $02, $c0
-	dsprite  11, 1,   3, 0, $03, $e0
+	dsprite  0, 0,  -1, 7, $00, 0 | PRIORITY
+	dsprite  0, 0,   3, 0, $00, 0 | X_FLIP | PRIORITY
+	dsprite  1, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  1, 0,   3, 0, $01, 0 | X_FLIP | PRIORITY
+	dsprite  2, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  2, 0,   3, 0, $01, 0 | X_FLIP | PRIORITY
+	dsprite  3, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  3, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  3, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  4, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  4, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  4, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  5, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  5, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  5, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  6, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  6, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  6, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  7, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  7, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  7, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  8, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  8, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  8, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite  9, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite  9, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite  9, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite 10, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite 10, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite 10, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite 11, 0,  -1, 7, $01, 0 | PRIORITY
+	dsprite 11, 0,   1, 0, $03, 0 | PRIORITY
+	dsprite 11, 0,   3, 0, $03, 0 | PRIORITY
+	dsprite 11, 1,  -1, 7, $00, 0 | Y_FLIP | PRIORITY
+	dsprite 11, 1,   0, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite 11, 1,   1, 0, $03, 0 | Y_FLIP | PRIORITY
+	dsprite 11, 1,   2, 0, $02, 0 | Y_FLIP | PRIORITY
+	dsprite 11, 1,   3, 0, $03, 0 | X_FLIP | Y_FLIP | PRIORITY
 
 .Impossible: ; e0c26
 	db 4
-	dsprite   0, 0,   0, 0, $00, $80
-	dsprite   0, 0,   1, 0, $00, $a0
-	dsprite   1, 0,   0, 0, $00, $c0
-	dsprite   1, 0,   1, 0, $00, $e0
+	dsprite  0, 0,   0, 0, $00, 0 | PRIORITY
+	dsprite  0, 0,   1, 0, $00, 0 | X_FLIP | PRIORITY
+	dsprite  1, 0,   0, 0, $00, 0 | Y_FLIP | PRIORITY
+	dsprite  1, 0,   1, 0, $00, 0 | X_FLIP | Y_FLIP | PRIORITY
 ; e0c37
 
 CardFlip_InitAttrPals: ; e0c37 (38:4c37)
@@ -1649,7 +1657,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, .palettes
 	ld de, wBGPals1
@@ -1661,7 +1669,7 @@
 ; e0c93 (38:4c93)
 
 .palettes ; e0c93
-INCLUDE "data/palettes/card_flip.pal"
+INCLUDE "gfx/card_flip/card_flip.pal"
 ; e0cdb
 
 CardFlipLZ03: ; e0cdb
--- a/engine/caught_data.asm
+++ b/engine/caught_data.asm
@@ -1,4 +1,4 @@
-CheckPartyFullAfterContest: ; 4d9e5
+Special_CheckPartyFullAfterContest: ; 4d9e5
 	ld a, [wContestMon]
 	and a
 	jp z, .DidntCatchAnything
@@ -7,17 +7,17 @@
 	call GetBaseData
 	ld hl, PartyCount
 	ld a, [hl]
-	cp 6
+	cp PARTY_LENGTH
 	jp nc, .TryAddToBox
 	inc a
 	ld [hl], a
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, [wContestMon]
 	ld [hli], a
 	ld [CurSpecies], a
-	ld a, $ff
+	ld a, -1
 	ld [hl], a
 	ld hl, PartyMon1Species
 	ld a, [PartyCount]
@@ -42,7 +42,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call GiveANickname_YesNo
 	jr c, .Party_SkipNickname
@@ -75,13 +75,13 @@
 	ld hl, PartyMon1CaughtLocation
 	call GetPartyLocation
 	ld a, [hl]
-	and $80
-	ld b, $13
+	and CAUGHT_GENDER_MASK
+	ld b, NATIONAL_PARK
 	or b
 	ld [hl], a
 	xor a
 	ld [wContestMon], a
-	and a
+	and a ; BUGCONTEST_CAUGHT_MON
 	ld [ScriptVar], a
 	ret
 
@@ -120,7 +120,7 @@
 	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
 	ld de, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call CloseSRAM
 
@@ -135,19 +135,19 @@
 	call GetSRAMBank
 	ld hl, sBoxMon1CaughtLocation
 	ld a, [hl]
-	and $80
-	ld b, $13
+	and CAUGHT_GENDER_MASK
+	ld b, NATIONAL_PARK
 	or b
 	ld [hl], a
 	call CloseSRAM
 	xor a
 	ld [wContestMon], a
-	ld a, $1
+	ld a, BUGCONTEST_BOXED_MON
 	ld [ScriptVar], a
 	ret
 
 .DidntCatchAnything: ; 4db35
-	ld a, $2
+	ld a, BUGCONTEST_NO_CATCH
 	ld [ScriptVar], a
 	ret
 
@@ -227,7 +227,7 @@
 SetGiftMonCaughtData: ; 4dbaf
 	xor a
 	ld [hli], a
-	ld a, $7e
+	ld a, GIFT_LOCATION
 	rrc b
 	or b
 	ld [hl], a
@@ -239,7 +239,7 @@
 	call GetPartyLocation
 	ld a, [CurPartyLevel]
 	push af
-	ld a, $1
+	ld a, CAUGHT_EGG_LEVEL
 	ld [CurPartyLevel], a
 	call SetBoxmonOrEggmonCaughtData
 	pop af
--- a/engine/cgb_layouts.asm
+++ b/engine/cgb_layouts.asm
@@ -6,7 +6,7 @@
 	ret
 ; 8d59
 
-Predef_LoadSGBLayoutCGB: ; 8d59
+LoadSGBLayoutCGB: ; 8d59
 	ld a, b
 	cp SCGB_RAM
 	jr nz, .not_ram
@@ -40,12 +40,12 @@
 	dw _CGB_Pokedex
 	dw _CGB_SlotMachine
 	dw _CGB06
-	dw _CGB07
+	dw _CGB_GSIntro
 	dw _CGB_Diploma
 	dw _CGB_MapPals
 	dw _CGB_PartyMenu
 	dw _CGB_Evolution
-	dw _CGB0c
+	dw _CGB_GSTitleScreen
 	dw _CGB0d
 	dw _CGB_MoveList
 	dw _CGB0f
@@ -58,7 +58,7 @@
 	dw _CGB_PokedexUnownMode
 	dw _CGB_BillsPC
 	dw _CGB_UnownPuzzle
-	dw _CGB_GamefreakLogo ; called before copyright
+	dw _CGB_GamefreakLogo
 	dw _CGB_PlayerOrMonFrontpicPals
 	dw _CGB_TradeTube
 	dw _CGB_TrainerOrMonFrontpicPals
@@ -67,15 +67,15 @@
 ; 8db8
 
 _CGB_BattleGrayscale: ; 8db8
-	ld hl, PalPacket_9c66 + 1
+	ld hl, PalPacket_BattleGrayscale + 1
 	ld de, wBGPals1
 	ld c, 4
 	call CopyPalettes
-	ld hl, PalPacket_9c66 + 1
+	ld hl, PalPacket_BattleGrayscale + 1
 	ld de, wBGPals1 palette PAL_BATTLE_BG_EXP
 	ld c, 4
 	call CopyPalettes
-	ld hl, PalPacket_9c66 + 1
+	ld hl, PalPacket_BattleGrayscale + 1
 	ld de, wOBPals1
 	ld c, 2
 	call CopyPalettes
@@ -158,9 +158,9 @@
 InitPartyMenuBGPal7: ; 8e85
 	farcall Function100dc0
 Mobile_InitPartyMenuBGPal7: ; 8e8b
-	ld hl, Palette_b311
+	ld hl, PartyMenuBGPalette
 	jr nc, .not_mobile
-	ld hl, Palette_b309
+	ld hl, PartyMenuBGMobilePalette
 .not_mobile
 	ld de, wBGPals1 palette 7
 	ld bc, 1 palettes
@@ -171,9 +171,9 @@
 
 InitPartyMenuBGPal0: ; 8e9f
 	farcall Function100dc0
-	ld hl, Palette_b311
+	ld hl, PartyMenuBGPalette
 	jr nc, .not_mobile
-	ld hl, Palette_b309
+	ld hl, PartyMenuBGMobilePalette
 .not_mobile
 	ld de, wBGPals1 palette 0
 	ld bc, 1 palettes
@@ -258,35 +258,16 @@
 ; 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
-	RGB 00, 00, 00
+INCLUDE "gfx/stats/pages.pal"
 ; 8f6a
 
 StatsScreenPals: ; 8f6a
-; pink
-	RGB 31, 19, 31
-; green
-	RGB 21, 31, 14
-; blue
-	RGB 17, 31, 31
+INCLUDE "gfx/stats/stats.pal"
 ; 8f70
 
 _CGB_Pokedex: ; 8f70
 	ld de, wBGPals1
-	ld a, $1d
+	ld a, PREDEFPAL_POKEDEX
 	call GetPredefPal
 	call LoadHLPaletteIntoDE ; dex interface palette
 	ld a, [CurPartySpecies]
@@ -319,21 +300,16 @@
 ; 8fba
 
 .PokedexQuestionMarkPalette: ; 8fba
-	RGB 11, 23, 00
-	RGB 07, 17, 00
-	RGB 06, 16, 03
-	RGB 05, 12, 01
+INCLUDE "gfx/pokedex/question_mark.pal"
+; 8fc2
 
 .PokedexCursorPalette: ; 8fc2
-	RGB 00, 00, 00
-	RGB 11, 23, 00
-	RGB 07, 17, 00
-	RGB 00, 00, 00
+INCLUDE "gfx/pokedex/cursor.pal"
 ; 8fca
 
 _CGB_BillsPC: ; 8fca
 	ld de, wBGPals1
-	ld a, $1d
+	ld a, PREDEFPAL_POKEDEX
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [CurPartySpecies]
@@ -385,15 +361,12 @@
 ; 9036
 
 .BillsPCOrangePalette: ; 9036
-	RGB 31, 15, 00
-	RGB 23, 12, 00
-	RGB 15, 07, 00
-	RGB 00, 00, 00
+INCLUDE "gfx/pc/orange.pal"
 ; 903e
 
 _CGB_PokedexUnownMode: ; 903e
 	ld de, wBGPals1
-	ld a, $1d
+	ld a, PREDEFPAL_POKEDEX
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [CurPartySpecies]
@@ -467,11 +440,11 @@
 ; 90f8
 
 _CGB06: ; 90f8
-	ld hl, PalPacket_9ca6 + 1
+	ld hl, PalPacket_SCGB_06 + 1
 	call CopyFourPalettes
 	call WipeAttrMap
 	ld de, wOBPals1
-	ld a, $3c
+	ld a, PREDEFPAL_PACK
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	hlcoord 0, 6, AttrMap
@@ -485,7 +458,7 @@
 	ret
 ; 9122
 
-_CGB07: ; 9122
+_CGB_GSIntro: ; 9122
 	ld b, 0
 	ld hl, .Jumptable
 	add hl, bc
@@ -497,16 +470,16 @@
 ; 912d
 
 .Jumptable: ; 912d
-	dw .Function9133
-	dw .Function9166
-	dw .Function9180
+	dw .ShellderLaprasScene
+	dw .JigglypuffPikachuScene
+	dw .StartersCharizardScene
 ; 9133
 
-.Function9133: ; 9133
-	ld hl, .Palette_914e
+.ShellderLaprasScene: ; 9133
+	ld hl, .ShellderLaprasBGPalette
 	ld de, wBGPals1
 	call LoadHLPaletteIntoDE
-	ld hl, .Palette_9156
+	ld hl, .ShellderLaprasOBPals
 	ld de, wOBPals1
 	ld bc, 2 palettes
 	ld a, BANK(wOBPals1)
@@ -515,13 +488,13 @@
 	ret
 ; 914e
 
-.Palette_914e: ; 914e
+.ShellderLaprasBGPalette: ; 914e
 	RGB 19, 31, 19
 	RGB 18, 23, 31
 	RGB 11, 21, 28
 	RGB 04, 16, 24
 
-.Palette_9156: ; 9156
+.ShellderLaprasOBPals: ; 9156
 	RGB 29, 29, 29
 	RGB 20, 19, 20
 	RGB 19, 06, 04
@@ -533,14 +506,14 @@
 	RGB 03, 04, 06
 ; 9166
 
-.Function9166: ; 9166
+.JigglypuffPikachuScene: ; 9166
 	ld de, wBGPals1
-	ld a, $38
+	ld a, PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 
 	ld de, wOBPals1
-	ld a, $39
+	ld a, PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	call WipeAttrMap
@@ -547,11 +520,11 @@
 	ret
 ; 9180
 
-.Function9180: ; 9180
-	ld hl, PalPacket_9c36 + 1
+.StartersCharizardScene: ; 9180
+	ld hl, PalPacket_Pack + 1
 	call CopyFourPalettes
 	ld de, wOBPals1
-	ld a, $3a
+	ld a, PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	call WipeAttrMap
@@ -559,7 +532,7 @@
 ; 9195
 
 _CGB11: ; 9195
-	ld hl, Palettes_b789
+	ld hl, Palettes_SCGB_11
 	ld de, wBGPals1
 	ld bc, 5 palettes
 	ld a, BANK(wBGPals1)
@@ -577,7 +550,7 @@
 	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
 
-	ld hl, PalPacket_9cb6 + 1
+	ld hl, PalPacket_Diploma + 1
 	call CopyFourPalettes
 	call WipeAttrMap
 	call ApplyAttrMap
@@ -592,7 +565,7 @@
 ; 91d1
 
 _CGB_PartyMenu: ; 91d1
-	ld hl, PalPacket_9c56 + 1
+	ld hl, PalPacket_PartyMenu + 1
 	call CopyFourPalettes
 	call InitPartyMenuBGPal0
 	call InitPartyMenuBGPal7
@@ -606,7 +579,7 @@
 	ld a, c
 	and a
 	jr z, .pokemon
-	ld a, $1a
+	ld a, PREDEFPAL_BLACKOUT
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	jr .got_palette
@@ -636,13 +609,13 @@
 	ret
 ; 9228
 
-_CGB0c: ; 9228
-	ld hl, Palettes_b6f1
+_CGB_GSTitleScreen: ; 9228
+	ld hl, UnusedGSTitleBGPals
 	ld de, wBGPals1
 	ld bc, 5 palettes
 	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
-	ld hl, Palettes_b719
+	ld hl, UnusedGSTitleOBPals
 	ld de, wOBPals1
 	ld bc, 2 palettes
 	ld a, BANK(wOBPals1)
@@ -656,7 +629,7 @@
 ; 9251
 
 _CGB0d: ; 9251
-	ld hl, PalPacket_9cb6 + 1
+	ld hl, PalPacket_Diploma + 1
 	call CopyFourPalettes
 	call WipeAttrMap
 	call ApplyAttrMap
@@ -664,10 +637,10 @@
 ; 925e
 
 _CGB_UnownPuzzle: ; 925e
-	ld hl, PalPacket_9bc6 + 1
+	ld hl, PalPacket_UnownPuzzle + 1
 	call CopyFourPalettes
 	ld de, wOBPals1
-	ld a, $4c
+	ld a, PREDEFPAL_UNOWN_PUZZLE
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [rSVBK]
@@ -675,9 +648,9 @@
 	ld a, BANK(wOBPals1)
 	ld [rSVBK], a
 	ld hl, wOBPals1
-	ld a, $1f
+	ld a, LOW(palred 31 + palgreen 0 + palblue 0)
 	ld [hli], a
-	ld a, $0
+	ld a, HIGH(palred 31 + palgreen 0 + palblue 0)
 	ld [hl], a
 	pop af
 	ld [rSVBK], a
@@ -712,7 +685,7 @@
 	ld a, PRYCE
 	call GetTrainerPalettePointer
 	call LoadPalette_White_Col1_Col2_Black
-	ld a, $24
+	ld a, PREDEFPAL_CGB_BADGE
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 
@@ -794,7 +767,7 @@
 
 _CGB_MoveList: ; 9373
 	ld de, wBGPals1
-	ld a, $10
+	ld a, PREDEFPAL_GOLDENROD
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld a, [PlayerHPPal]
@@ -818,7 +791,7 @@
 ; 93a6
 
 _CGB0f: ; 93a6
-	ld hl, PalPacket_9c46 + 1
+	ld hl, PalPacket_SCGB_0F + 1
 	call CopyFourPalettes
 	call WipeAttrMap
 	call ApplyAttrMap
@@ -830,7 +803,7 @@
 
 _CGB_PokedexSearchOption: ; 93ba
 	ld de, wBGPals1
-	ld a, $1d
+	ld a, PREDEFPAL_POKEDEX
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	call WipeAttrMap
@@ -891,11 +864,11 @@
 ; 9439
 
 .ChrisPackPals: ; 9439
-INCLUDE "data/palettes/pack.pal"
+INCLUDE "gfx/pack/pack.pal"
 ; 9469
 
 .KrisPackPals: ; 9469
-INCLUDE "data/palettes/pack_f.pal"
+INCLUDE "gfx/pack/pack_f.pal"
 ; 9499
 
 _CGB_Pokepic: ; 9499
@@ -934,7 +907,7 @@
 ; 94d0
 
 _CGB13: ; 94d0
-	ld hl, PalPacket_9ba6 + 1
+	ld hl, PalPacket_SCGB_13 + 1
 	call CopyFourPalettes
 	call WipeAttrMap
 	hlcoord 0, 4, AttrMap
@@ -954,7 +927,7 @@
 
 _CGB_GamefreakLogo: ; 94fa
 	ld de, wBGPals1
-	ld a, $4e
+	ld a, PREDEFPAL_GAMEFREAK_LOGO
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	ld hl, .Palette
@@ -970,10 +943,7 @@
 ; 9521
 
 .Palette: ; 9521
-	RGB 31, 31, 31
-	RGB 13, 11, 00
-	RGB 23, 12, 28
-	RGB 00, 00, 00
+INCLUDE "gfx/splash/logo.pal"
 ; 9529
 
 _CGB_PlayerOrMonFrontpicPals: ; 9529
@@ -999,7 +969,7 @@
 ; 9555
 
 _CGB_TradeTube: ; 9555
-	ld hl, PalPacket_9cc6 + 1
+	ld hl, PalPacket_TradeTube + 1
 	call CopyFourPalettes
 	ld hl, PartyMenuOBPals
 	ld de, wOBPals1
@@ -1007,7 +977,7 @@
 	ld a, BANK(wOBPals1)
 	call FarCopyWRAM
 	ld de, wOBPals1 palette 7
-	ld a, $1c
+	ld a, PREDEFPAL_TRADE_TUBE
 	call GetPredefPal
 	call LoadHLPaletteIntoDE
 	call WipeAttrMap
@@ -1059,13 +1029,5 @@
 ; 95e0
 
 .Palettes: ; 95e0
-	RGB 31, 31, 31
-	RGB 16, 31, 14
-	RGB 05, 14, 21
-	RGB 05, 13, 10
-
-	RGB 31, 31, 31
-	RGB 11, 21, 25
-	RGB 05, 14, 21
-	RGB 00, 03, 19
+INCLUDE "gfx/mystery_gift/mystery_gift.pal"
 ; 95f0
--- a/engine/clock_reset.asm
+++ b/engine/clock_reset.asm
@@ -220,6 +220,7 @@
 	ret
 ; 20160 (8:4160)
 
+; unused
 .unreferenced ; 20160
 	ld a, [Buffer3]
 	ld b, a
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -43,8 +43,7 @@
 	and a
 	ret
 
-; unreferenced
-CheckContestMon:
+Unused_CheckContestMon:
 ; Check a mon's DVs at hl in the bug catching contest.
 ; Return carry if its DVs are good enough to place in the contest.
 
@@ -78,8 +77,7 @@
 	and a
 	ret
 
-Function8aa4:
-; XXX
+Unreferenced_Function8aa4:
 	push de
 	push bc
 	ld hl, PalPacket_9ce6
@@ -103,7 +101,7 @@
 	ret
 
 InitPartyMenuPalettes:
-	ld hl, PalPacket_9c56 + 1
+	ld hl, PalPacket_PartyMenu + 1
 	call CopyFourPalettes
 	call InitPartyMenuOBPals
 	call WipeAttrMap
@@ -136,8 +134,7 @@
 	ld [hl], e
 	ret
 
-Function8b07:
-; Unreferenced
+Unreferenced_Function8b07:
 	call CheckCGB
 	ret z
 ; CGB only
@@ -144,13 +141,13 @@
 	ld hl, .BGPal
 	ld de, wBGPals1
 	ld bc, 1 palettes
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
 
 	ld hl, .OBPal
 	ld de, wOBPals1
 	ld bc, 1 palettes
-	ld a, $5
+	ld a, BANK(wOBPals1)
 	call FarCopyWRAM
 
 	call ApplyPals
@@ -170,8 +167,7 @@
 	RGB 08, 16, 28
 	RGB 00, 00, 00
 
-Function8b3f:
-; Unreferenced
+Unreferenced_Function8b3f:
 	call CheckCGB
 	ret nz
 	ld a, [hSGB]
@@ -180,40 +176,37 @@
 	ld hl, BlkPacket_9a86
 	jp PushSGBPals_
 
-Function8b4d:
-; XXX
+Unreferenced_Function8b4d:
 	call CheckCGB
 	jr nz, .cgb
 	ld a, [hSGB]
 	and a
 	ret z
-	ld hl, PalPacket_9c26
+	ld hl, PalPacket_Function8b4d
 	jp PushSGBPals_
 
 .cgb
 	ld de, wOBPals1
-	ld a, $3b
+	ld a, PREDEFPAL_3B
 	call GetPredefPal
 	jp LoadHLPaletteIntoDE
 
-Function8b67:
-; XXX
+Unreferenced_Function8b67:
 	call CheckCGB
 	jr nz, .cgb
 	ld a, [hSGB]
 	and a
 	ret z
-	ld hl, PalPacket_9c36
+	ld hl, PalPacket_Pack
 	jp PushSGBPals_
 
 .cgb
 	ld de, wOBPals1
-	ld a, $3c
+	ld a, PREDEFPAL_PACK
 	call GetPredefPal
 	jp LoadHLPaletteIntoDE
 
-Function8b81:
-; XXX
+Unreferenced_Function8b81:
 	call CheckCGB
 	jr nz, .cgb
 	ld a, [hSGB]
@@ -281,8 +274,7 @@
 	call LoadPalette_White_Col1_Col2_Black
 	ret
 
-Function8bec:
-; XXX
+Unreferenced_Function8bec:
 	ld a, [hCGB]
 	and a
 	jr nz, .cgb
@@ -359,7 +351,7 @@
 	ld bc, HPBarPals
 	add hl, bc
 	ld bc, 4
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	call FarCopyWRAM
 	ld a, $1
 	ld [hCGBPalUpdate], a
@@ -394,7 +386,7 @@
 	add hl, bc
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld a, [hli]
 	ld [wBGPals1 palette 0], a
@@ -443,7 +435,7 @@
 .cgb
 	ld de, wBGPals1
 	ld bc, 1 palettes
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
 	call ApplyPals
 	call WipeAttrMap
@@ -451,16 +443,15 @@
 	ret
 
 .MailPals:
-INCLUDE "data/palettes/mail.pal"
+INCLUDE "gfx/mail/mail.pal"
 
 INCLUDE "engine/cgb_layouts.asm"
 
-Function95f0:
-; XXX
+Unreferenced_Function95f0:
 	ld hl, .Palette
 	ld de, wBGPals1
 	ld bc, 1 palettes
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
 	call ApplyPals
 	call WipeAttrMap
@@ -475,7 +466,7 @@
 
 CopyFourPalettes:
 	ld de, wBGPals1
-	ld c, $4
+	ld c, 4
 
 CopyPalettes:
 .loop
@@ -504,7 +495,7 @@
 LoadHLPaletteIntoDE:
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wOBPals1)
 	ld [rSVBK], a
 	ld c, $8
 .loop
@@ -520,13 +511,13 @@
 LoadPalette_White_Col1_Col2_Black:
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
-	ld a, LOW(palred 31 + palgreen 31 + palblue 31)
+	ld a, LOW(PALRGB_WHITE)
 	ld [de], a
 	inc de
-	ld a, HIGH(palred 31 + palgreen 31 + palblue 31)
+	ld a, HIGH(PALRGB_WHITE)
 	ld [de], a
 	inc de
 
@@ -572,7 +563,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	ld hl, wBGPals1
@@ -611,7 +602,7 @@
 	ld hl, wBGPals1
 	ld de, wBGPals2
 	ld bc, 16 palettes
-	ld a, $5
+	ld a, BANK(wPals)
 	call FarCopyWRAM
 	ret
 
@@ -688,7 +679,7 @@
 	ld hl, PartyMenuOBPals
 	ld de, wOBPals1
 	ld bc, 2 palettes
-	ld a, $5
+	ld a, BANK(wOBPals1)
 	call FarCopyWRAM
 	ret
 
@@ -746,7 +737,8 @@
 	call GetMonPalettePointer
 	ret
 
-Function9779: mobile
+Unreferenced_Function9779:
+	ret
 	call CheckCGB
 	ret z
 	ld hl, BattleObjectPals
@@ -761,23 +753,22 @@
 	ld hl, BattleObjectPals
 	ld de, wOBPals1 palette 2
 	ld bc, 2 palettes
-	ld a, $5
+	ld a, BANK(wOBPals1)
 	call FarCopyWRAM
 	ret
 
 BattleObjectPals:
-INCLUDE "data/palettes/battle_objects.pal"
+INCLUDE "gfx/battle_anims/battle_anims.pal"
 
-Function97cc:
-; XXX
+Unreferenced_Function97cc:
 	call CheckCGB
 	ret z
 	ld a, $90
 	ld [rOBPI], a
-	ld a, $1c
+	ld a, PREDEFPAL_TRADE_TUBE
 	call GetPredefPal
 	call .PushPalette
-	ld a, $21
+	ld a, PREDEFPAL_RB_GREENMON
 	call GetPredefPal
 	call .PushPalette
 	ret
@@ -887,7 +878,7 @@
 	call PushSGBBorder
 	call SGBDelayCycles
 	call SGB_ClearVRAM
-	ld hl, PalPacket_9d66
+	ld hl, MaskEnCancelPacket
 	call PushSGBPals
 
 .skip
@@ -900,21 +891,21 @@
 	call CheckCGB
 	ret z
 ; CGB only
-	ld a, $1
+	ld a, BANK(vTiles3)
 	ld [rVBK], a
-	ld hl, vTiles0
+	ld hl, vTiles3
 	ld bc, $200 tiles
 	xor a
 	call ByteFill
-	ld a, $0
+	ld a, BANK(vTiles0)
 	ld [rVBK], a
 	ld a, 1 << rBGPI_AUTO_INCREMENT
 	ld [rBGPI], a
 	ld c, 4 * 8
 .bgpals_loop
-	ld a, LOW(palred 31 + palgreen 31 + palblue 31)
+	ld a, LOW(PALRGB_WHITE)
 	ld [rBGPD], a
-	ld a, HIGH(palred 31 + palgreen 31 + palblue 31)
+	ld a, HIGH(PALRGB_WHITE)
 	ld [rBGPD], a
 	dec c
 	jr nz, .bgpals_loop
@@ -922,15 +913,15 @@
 	ld [rOBPI], a
 	ld c, 4 * 8
 .obpals_loop
-	ld a, LOW(palred 31 + palgreen 31 + palblue 31)
+	ld a, LOW(PALRGB_WHITE)
 	ld [rOBPD], a
-	ld a, HIGH(palred 31 + palgreen 31 + palblue 31)
+	ld a, HIGH(PALRGB_WHITE)
 	ld [rOBPD], a
 	dec c
 	jr nz, .obpals_loop
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, wBGPals1
 	call .LoadWhitePals
@@ -943,9 +934,9 @@
 .LoadWhitePals:
 	ld c, 4 * 16
 .loop
-	ld a, LOW(palred 31 + palgreen 31 + palblue 31)
+	ld a, LOW(PALRGB_WHITE)
 	ld [hli], a
-	ld a, HIGH(palred 31 + palgreen 31 + palblue 31)
+	ld a, HIGH(PALRGB_WHITE)
 	ld [hli], a
 	dec c
 	jr nz, .loop
@@ -952,7 +943,7 @@
 	ret
 
 _InitSGBBorderPals:
-	ld hl, .PalPacketPointerTable
+	ld hl, .PacketPointerTable
 	ld c, 9
 .loop
 	push bc
@@ -968,28 +959,27 @@
 	jr nz, .loop
 	ret
 
-.PalPacketPointerTable:
-	dw PalPacket_9d56
-	dw PalPacket_9d76
-	dw PalPacket_9d86
-	dw PalPacket_9d96
-	dw PalPacket_9da6
-	dw PalPacket_9db6
-	dw PalPacket_9dc6
-	dw PalPacket_9dd6
-	dw PalPacket_9de6
+.PacketPointerTable:
+	dw MaskEnFreezePacket
+	dw DataSndPacket1
+	dw DataSndPacket2
+	dw DataSndPacket3
+	dw DataSndPacket4
+	dw DataSndPacket5
+	dw DataSndPacket6
+	dw DataSndPacket7
+	dw DataSndPacket8
 
-Function9911:
-; XXX
+Unreferenced_Function9911:
 	di
 	xor a
 	ld [rJOYP], a
-	ld hl, PalPacket_9d56
+	ld hl, MaskEnFreezePacket
 	call PushSGBPals
 	call PushSGBBorder
 	call SGBDelayCycles
 	call SGB_ClearVRAM
-	ld hl, PalPacket_9d66
+	ld hl, MaskEnCancelPacket
 	call PushSGBPals
 	ei
 	ret
@@ -1015,7 +1005,7 @@
 	ret
 
 PushSGBBorderPalsAndWait:
-	ld hl, PalPacket_9d26
+	ld hl, MltReq2Packet
 	call PushSGBPals
 	call SGBDelayCycles
 	ld a, [rJOYP]
@@ -1060,7 +1050,7 @@
 	ret
 
 .FinalPush:
-	ld hl, PalPacket_9d16
+	ld hl, MltReq1Packet
 	call PushSGBPals
 	jp SGBDelayCycles
 
@@ -1075,7 +1065,7 @@
 	call DrawDefaultTiles
 	ld a, LCDC_DEFAULT
 	ld [rLCDC], a
-	ld hl, PalPacket_9d06
+	ld hl, PalTrnPacket
 	call PushSGBPals
 	xor a
 	ld [rBGP], a
@@ -1109,7 +1099,7 @@
 	call DrawDefaultTiles
 	ld a, LCDC_DEFAULT
 	ld [rLCDC], a
-	ld hl, PalPacket_9d46
+	ld hl, PctTrnPacket
 	call PushSGBPals
 	xor a
 	ld [rBGP], a
@@ -1133,7 +1123,7 @@
 	call DrawDefaultTiles
 	ld a, LCDC_DEFAULT
 	ld [rLCDC], a
-	ld hl, PalPacket_9d36
+	ld hl, ChrTrnPacket
 	call PushSGBPals
 	xor a
 	ld [rBGP], a
@@ -1197,26 +1187,28 @@
 	jr nz, .wait
 	ret
 
-INCLUDE "data/palettes/blk_packets.asm"
+INCLUDE "gfx/sgb/blk_packets.asm"
+INCLUDE "gfx/sgb/pal_packets.asm"
+INCLUDE "data/sgb_ctrl_packets.asm"
 
-INCLUDE "data/palettes/pal_packets.asm"
-
 PredefPals:
-INCLUDE "data/palettes/predef.pal"
+INCLUDE "gfx/sgb/predef.pal"
 
-INCLUDE "data/sgb_border_map.asm"
+SGBBorderMap:
+; interleaved tile ids and palette ids
+INCBIN "gfx/sgb/sgb_border.bin"
 
 SGBBorderPalettes:
-INCLUDE "data/palettes/sgb_border.pal"
+INCLUDE "gfx/sgb/sgb_border.pal"
 
 SGBBorder:
 INCBIN "gfx/sgb/sgb_border.2bpp"
 
 HPBarPals:
-INCLUDE "data/palettes/hp_bar.pal"
+INCLUDE "gfx/battle/hp_bar.pal"
 
 ExpBarPalette:
-INCLUDE "data/palettes/exp_bar.pal"
+INCLUDE "gfx/battle/exp_bar.pal"
 
 INCLUDE "data/pokemon/palettes.asm"
 
@@ -1239,7 +1231,7 @@
 	ld l, a
 	; Futher refine by time of day
 	ld a, [TimeOfDayPal]
-	and 3
+	maskbits NUM_DAYTIMES
 	add a
 	add a
 	add a
@@ -1251,7 +1243,7 @@
 	; Switch to palettes WRAM bank
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, wBGPals1
 	ld b, 8
@@ -1285,7 +1277,7 @@
 
 .got_pals
 	ld a, [TimeOfDayPal]
-	and 3
+	maskbits NUM_DAYTIMES
 	ld bc, 8 palettes
 	ld hl, MapObjectPals
 	call AddNTimes
@@ -1309,7 +1301,7 @@
 	ld de, RoofPals
 	add hl, de
 	ld a, [TimeOfDayPal]
-	and 3
+	maskbits NUM_DAYTIMES
 	cp NITE_F
 	jr c, .morn_day
 rept 4
@@ -1318,53 +1310,47 @@
 .morn_day
 	ld de, wBGPals1 palette PAL_BG_ROOF + 2
 	ld bc, 4
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
 	ret
 
 INCLUDE "data/maps/environment_colors.asm"
 
-Palette_b309: ; b309 mobile
-	RGB 31, 31, 31
-	RGB 31, 19, 24
-	RGB 30, 10, 06
-	RGB 00, 00, 00
+PartyMenuBGMobilePalette:
+INCLUDE "gfx/stats/party_menu_bg_mobile.pal"
 
-Palette_b311: ; b311 not mobile
-	RGB 31, 31, 31
-	RGB 17, 19, 31
-	RGB 14, 16, 31
-	RGB 00, 00, 00
+PartyMenuBGPalette:
+INCLUDE "gfx/stats/party_menu_bg.pal"
 
 TilesetBGPalette:
-INCLUDE "data/palettes/overworld/tileset_bg.pal"
+INCLUDE "gfx/tilesets/bg_tiles.pal"
 
 MapObjectPals::
-INCLUDE "data/palettes/overworld/map_objects.pal"
+INCLUDE "gfx/overworld/npc_sprites.pal"
 
 RoofPals:
-INCLUDE "data/palettes/overworld/roofs.pal"
+INCLUDE "gfx/tilesets/roofs.pal"
 
 DiplomaPalettes:
-INCLUDE "data/palettes/diploma.pal"
+INCLUDE "gfx/diploma/diploma.pal"
 
 PartyMenuOBPals:
-INCLUDE "data/palettes/party_menu.pal"
+INCLUDE "gfx/stats/party_menu_ob.pal"
 
-Palettes_b6f1:
-INCLUDE "data/palettes/unknown/b6f1.pal"
+UnusedGSTitleBGPals:
+INCLUDE "gfx/title/unused_gs_bg.pal"
 
-Palettes_b719:
-INCLUDE "data/palettes/unknown/b719.pal"
+UnusedGSTitleOBPals:
+INCLUDE "gfx/title/unused_gs_fg.pal"
 
 MalePokegearPals:
-INCLUDE "data/palettes/pokegear.pal"
+INCLUDE "gfx/pokegear/pokegear.pal"
 
 FemalePokegearPals:
-INCLUDE "data/palettes/pokegear_f.pal"
+INCLUDE "gfx/pokegear/pokegear_f.pal"
 
-Palettes_b789:
-INCLUDE "data/palettes/unknown/b789.pal"
+Palettes_SCGB_11:
+INCLUDE "gfx/unknown/b789.pal"
 
 SlotMachinePals:
-INCLUDE "data/palettes/slot_machine.pal"
+INCLUDE "gfx/slots/slots.pal"
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "Credits", ROMX
@@ -13,7 +13,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wPals)
 	ld [rSVBK], a
 
 	call ClearBGPalettes
@@ -34,17 +34,17 @@
 
 	ld de, CreditsBorderGFX
 	ld hl, vTiles2 tile $20
-	lb bc, BANK(CreditsBorderGFX), $09
+	lb bc, BANK(CreditsBorderGFX), 9
 	call Request2bpp
 
 	ld de, CopyrightGFX
 	ld hl, vTiles2 tile $60
-	lb bc, BANK(CopyrightGFX), $1d
+	lb bc, BANK(CopyrightGFX), 29
 	call Request2bpp
 
 	ld de, TheEndGFX
 	ld hl, vTiles2 tile $40
-	lb bc, BANK(TheEndGFX), $10
+	lb bc, BANK(TheEndGFX), 16
 	call Request2bpp
 
 	ld a, $ff
@@ -504,7 +504,7 @@
 .GetPalAddress:
 ; Each set of palette data is 24 bytes long.
 	ld a, [wCreditsBorderMon] ; scene
-	and 3
+	and %11
 	add a
 	add a ; * 8
 	add a
@@ -540,7 +540,7 @@
 	ret
 
 CreditsPalettes:
-INCLUDE "data/palettes/credits.pal"
+INCLUDE "gfx/credits/credits.pal"
 ; 109bca
 
 Credits_LoadBorderGFX: ; 109bca (42:5bca)
@@ -549,13 +549,13 @@
 	cp $ff
 	jr z, .init
 
-	and 3
+	and %11
 	ld e, a
 	inc a
-	and 3
+	and %11
 	ld [hl], a
 	ld a, [wCreditsBorderMon]
-	and 3
+	and %11
 	add a
 	add a
 	add e
--- a/engine/crystal_colors.asm
+++ /dev/null
@@ -1,326 +1,0 @@
-GetMysteryGift_MobileAdapterLayout: ; 4930f (mobile)
-	ld a, b
-	cp SCGB_RAM
-	jr nz, .not_ram
-	ld a, [SGBPredef]
-.not_ram
-	push af
-	farcall ResetBGPals
-	pop af
-	ld l, a
-	ld h, 0
-	add hl, hl
-	ld de, .dw
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .done
-	push de
-	jp hl
-.done
-	ret
-; 49330 (12:5330)
-
-.dw ; 49330
-
-	dw MG_Mobile_Layout00
-	dw MG_Mobile_Layout01
-	dw MG_Mobile_Layout02
-; 49336
-
-MG_Mobile_Layout_FillBox: ; 49336
-.row
-	push bc
-	push hl
-.col
-	ld [hli], a
-	dec c
-	jr nz, .col
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .row
-	ret
-; 49346
-
-MG_Mobile_Layout_WipeAttrMap: ; 49346 (12:5346)
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	ret
-
-MG_Mobile_Layout_LoadPals: ; 49351 (12:5351)
-	ld de, wBGPals1
-	ld hl, Palette_493e1
-	ld bc, 5 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	ld de, wBGPals1 palette PAL_BG_TEXT
-	ld hl, Palette_TextBG7
-	ld bc, 1 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	ret
-
-MG_Mobile_Layout00: ; 4936e (12:536e)
-	call MG_Mobile_Layout_LoadPals
-	call MG_Mobile_Layout_WipeAttrMap
-	call MG_Mobile_Layout_CreatePalBoxes
-	farcall ApplyAttrMap
-	farcall ApplyPals
-	ret
-
-MG_Mobile_Layout_CreatePalBoxes: ; 49384 (12:5384)
-	hlcoord 0, 0, AttrMap
-	lb bc, 4, 1
-	ld a, $1
-	call MG_Mobile_Layout_FillBox
-	lb bc, 2, 1
-	ld a, $2
-	call MG_Mobile_Layout_FillBox
-	lb bc, 6, 1
-	ld a, $3
-	call MG_Mobile_Layout_FillBox
-	hlcoord 1, 0, AttrMap
-	ld a, $1
-	lb bc, 3, 18
-	call MG_Mobile_Layout_FillBox
-	lb bc, 2, 18
-	ld a, $2
-	call MG_Mobile_Layout_FillBox
-	lb bc, 12, 18
-	ld a, $3
-	call MG_Mobile_Layout_FillBox
-	hlcoord 19, 0, AttrMap
-	lb bc, 4, 1
-	ld a, $1
-	call MG_Mobile_Layout_FillBox
-	lb bc, 2, 1
-	ld a, $2
-	call MG_Mobile_Layout_FillBox
-	lb bc, 6, 1
-	ld a, $3
-	call MG_Mobile_Layout_FillBox
-	hlcoord 0, 12, AttrMap
-	ld bc, 6 * SCREEN_WIDTH
-	ld a, $7
-	call ByteFill
-	ret
-; 493e1 (12:53e1)
-
-Palette_493e1: ; 493e1
-INCLUDE "data/palettes/mg_mobile.pal"
-; 49409
-
-LoadOW_BGPal7:: ; 49409
-	ld hl, Palette_TextBG7
-	ld de, wBGPals1 palette PAL_BG_TEXT
-	ld bc, 1 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	ret
-; 49418
-
-Palette_TextBG7: ; 49418
-INCLUDE "data/palettes/overworld/bg_text.pal"
-; 49420
-
-Function49420:: ; 49420 (12:5420)
-	ld hl, MansionPalette4
-	ld de, wBGPals1 palette PAL_BG_ROOF
-	ld bc, 1 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	ret
-; 4942f (12:542f)
-
-MG_Mobile_Layout01: ; 4942f
-	call MG_Mobile_Layout_LoadPals
-	ld de, wBGPals1 palette PAL_BG_TEXT
-	ld hl, .Palette_49478
-	ld bc, 1 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	call MG_Mobile_Layout_WipeAttrMap
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	xor a
-	call ByteFill
-	hlcoord 0, 14, AttrMap
-	ld bc, 4 * SCREEN_WIDTH
-	ld a, $7
-	call ByteFill
-	ld a, [wd002]
-	bit 6, a
-	jr z, .asm_49464
-	call Function49480
-	jr .asm_49467
-
-.asm_49464
-	call Function49496
-
-.asm_49467
-	farcall ApplyAttrMap
-	farcall ApplyPals
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; 49478
-
-.Palette_49478: ; 49478
-	RGB 31, 31, 31
-	RGB 26, 31, 00
-	RGB 20, 16, 03
-	RGB 00, 00, 00
-; 49480
-
-Function49480: ; 49480
-	hlcoord 0, 0, AttrMap
-	lb bc, 4, SCREEN_WIDTH
-	ld a, $7
-	call MG_Mobile_Layout_FillBox
-	hlcoord 0, 2, AttrMap
-	ld a, $4
-	ld [hl], a
-	hlcoord 19, 2, AttrMap
-	ld [hl], a
-	ret
-; 49496
-
-Function49496: ; 49496
-	hlcoord 0, 0, AttrMap
-	lb bc, 2, SCREEN_WIDTH
-	ld a, $7
-	call MG_Mobile_Layout_FillBox
-	hlcoord 0, 1, AttrMap
-	ld a, $4
-	ld [hl], a
-	hlcoord 19, 1, AttrMap
-	ld [hl], a
-	ret
-; 494ac
-
-INCLUDE "tilesets/special_palettes.asm"
-
-MG_Mobile_Layout02: ; 49706
-	ld hl, .Palette_49732
-	ld de, wBGPals1
-	ld bc, 1 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	farcall ApplyPals
-	call MG_Mobile_Layout_WipeAttrMap
-	farcall ApplyAttrMap
-	ld hl, .Palette_4973a
-	ld de, wOBPals1
-	ld bc, 1 palettes
-	ld a, BANK(wOBPals1)
-	call FarCopyWRAM
-	ret
-; 49732
-
-.Palette_49732: ; 49732
-	RGB 31, 31, 31
-	RGB 23, 16, 07
-	RGB 23, 07, 07
-	RGB 03, 07, 20
-; 4973a
-
-.Palette_4973a: ; 4973a
-	RGB 00, 00, 00
-	RGB 07, 05, 31
-	RGB 14, 18, 31
-	RGB 31, 31, 31
-; 49742
-
-Function49742: ; 49742
-	ld hl, .Palette_49757
-	ld de, wBGPals1
-	ld bc, 8 palettes
-	ld a, $5
-	call FarCopyWRAM
-	farcall ApplyPals
-	ret
-; 49757
-
-.Palette_49757: ; 49757
-INCLUDE "data/palettes/unknown/49757.pal"
-; 49797
-
-_InitMG_Mobile_LinkTradePalMap: ; 49797
-	hlcoord 0, 0, AttrMap
-	lb bc, 16, 2
-	ld a, $4
-	call MG_Mobile_Layout_FillBox
-	ld a, $3
-	ldcoord_a 0, 1, AttrMap
-	ldcoord_a 0, 14, AttrMap
-	hlcoord 2, 0, AttrMap
-	lb bc, 8, 18
-	ld a, $5
-	call MG_Mobile_Layout_FillBox
-	hlcoord 2, 8, AttrMap
-	lb bc, 8, 18
-	ld a, $6
-	call MG_Mobile_Layout_FillBox
-	hlcoord 0, 16, AttrMap
-	lb bc, 2, SCREEN_WIDTH
-	ld a, $4
-	call MG_Mobile_Layout_FillBox
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 6, 1, AttrMap
-	call MG_Mobile_Layout_FillBox
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 17, 1, AttrMap
-	call MG_Mobile_Layout_FillBox
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 6, 9, AttrMap
-	call MG_Mobile_Layout_FillBox
-	ld a, $3
-	lb bc, 6, 1
-	hlcoord 17, 9, AttrMap
-	call MG_Mobile_Layout_FillBox
-	ld a, $2
-	hlcoord 2, 16, AttrMap
-	ld [hli], a
-	ld a, $7
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld a, $2
-	ld [hl], a
-	hlcoord 2, 17, AttrMap
-	ld a, $3
-	ld bc, 6
-	call ByteFill
-	ret
-; 49811
-
-LoadTradeRoomBGPals: ; 49811
-	ld hl, TradeRoomPalette
-	ld de, wBGPals1 palette PAL_BG_GREEN
-	ld bc, 6 palettes
-	ld a, BANK(wBGPals1)
-	call FarCopyWRAM
-	farcall ApplyPals
-	ret
-; 49826
-
-TradeRoomPalette: ; 49826
-INCLUDE "data/palettes/trade_room.pal"
-; 49856
-
-InitMG_Mobile_LinkTradePalMap: ; 49856
-	call _InitMG_Mobile_LinkTradePalMap
-	ret
-; 4985a
-
-Unknown_4985a: ; unreferenced
-INCLUDE "data/palettes/unknown/4985a.asm"
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -52,12 +52,12 @@
 .GetGFLogoGFX: ; e45e8
 	ld de, GameFreakLogo
 	ld hl, vTiles2
-	lb bc, BANK(GameFreakLogo), $1c
+	lb bc, BANK(GameFreakLogo), 28
 	call Get1bpp
 
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	ld hl, IntroLogoGFX
@@ -94,7 +94,7 @@
 	xor a
 	ld [wJumptableIndex], a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld [hSCX], a
 	ld [hSCY], a
 	ld a, $1
@@ -146,7 +146,7 @@
 ; e468d
 
 PlaceGameFreakPresents_1: ; e468d
-	ld hl, wcf65
+	ld hl, wIntroSceneTimer
 	ld a, [hl]
 	cp $20
 	jr nc, .PlaceGameFreak
@@ -173,7 +173,7 @@
 ; e46ba
 
 PlaceGameFreakPresents_2: ; e46ba
-	ld hl, wcf65
+	ld hl, wIntroSceneTimer
 	ld a, [hl]
 	cp $40
 	jr nc, .place_presents
@@ -197,7 +197,7 @@
 ; e46dd
 
 PlaceGameFreakPresents_3: ; e46dd
-	ld hl, wcf65
+	ld hl, wIntroSceneTimer
 	ld a, [hl]
 	cp $80
 	jr nc, .finish
@@ -247,10 +247,10 @@
 	ld hl, SPRITEANIMSTRUCT_0D
 	add hl, bc
 	ld a, [hl]
-	and $3f
-	cp $20
+	and %111111
+	cp %100000
 	jr nc, .asm_e4723
-	add $20
+	add %100000
 .asm_e4723
 	ld e, a
 	farcall BattleAnim_Sine_e
@@ -319,7 +319,7 @@
 	add hl, de
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wOBPals2)
 	ld [rSVBK], a
 	ld a, [hli]
 	ld [wOBPals2 + 12], a
@@ -341,7 +341,7 @@
 ; e47ac (39:47ac)
 
 GameFreakLogoPalettes: ; e47ac
-INCLUDE "data/palettes/crystal_intro/gamefreak_logo.pal"
+INCLUDE "gfx/intro/gamefreak_logo.pal"
 ; e47cc
 
 GameFreakLogo: ; e47cc
@@ -352,7 +352,7 @@
 CrystalIntro: ; e48ac
 	ld a, [rSVBK]
 	push af
-	ld a, 5
+	ld a, BANK(wPals)
 	ld [rSVBK], a
 	ld a, [hInMenu]
 	push af
@@ -480,7 +480,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_365ad
 	ld de, wBGPals1
@@ -503,7 +503,7 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -523,7 +523,7 @@
 	call PlaySFX
 	pop af
 .DontPlaySound:
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	xor a
 	call CrystalIntro_UnownFade
 	ret
@@ -553,7 +553,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_e5edd
 	ld de, wBGPals1
@@ -619,7 +619,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_365ad
 	ld de, wBGPals1
@@ -642,7 +642,7 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -669,7 +669,7 @@
 	call PlaySFX
 	pop af
 .NoUnown:
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	xor a
 	call CrystalIntro_UnownFade
 	ret
@@ -682,7 +682,7 @@
 	call PlaySFX
 	pop af
 .StopUnown:
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld a, $1
 	call CrystalIntro_UnownFade
 	ret
@@ -725,7 +725,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	ld hl, Palette_e5edd
@@ -758,7 +758,7 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -884,7 +884,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_365ad
 	ld de, wBGPals1
@@ -907,7 +907,7 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -925,7 +925,7 @@
 	ld c, a
 	and $1f
 	sla a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld a, c
 	and $e0
 	srl a
@@ -939,7 +939,7 @@
 	and $f
 	sla a
 	sla a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld a, c
 	and $70
 	or $40
@@ -1011,7 +1011,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_e5edd
 	ld de, wBGPals1
@@ -1041,7 +1041,7 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -1068,7 +1068,7 @@
 
 .asm_e4e1a
 	ld a, $1
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld a, [wGlobalAnimXOffset]
 	cp $88
 	jr c, .asm_e4e2c
@@ -1120,7 +1120,7 @@
 	call Intro_LoadTilemap
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_e77dd
 	ld de, wBGPals1
@@ -1150,7 +1150,7 @@
 	call _InitSpriteAnimStruct
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -1194,7 +1194,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_e6d6d
 	ld de, wBGPals1
@@ -1217,7 +1217,7 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -1268,7 +1268,7 @@
 	call Intro_LoadTilemap
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_e77dd
 	ld de, wBGPals1
@@ -1299,7 +1299,7 @@
 	call _InitSpriteAnimStruct
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -1331,7 +1331,7 @@
 	and $1c
 	srl a
 	srl a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	xor a
 	call Intro_Scene20_AppearUnown
 	ret
@@ -1341,7 +1341,7 @@
 	and $1c
 	srl a
 	srl a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld a, 1
 	call Intro_Scene20_AppearUnown
 	ret
@@ -1358,7 +1358,7 @@
 	xor a
 	ld [hBGMapMode], a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
@@ -1438,7 +1438,7 @@
 	call Intro_DecompressRequest2bpp_64Tiles
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld hl, Palette_e679d
 	ld de, wBGPals1
@@ -1461,13 +1461,13 @@
 	call Intro_SetCGBPalUpdate
 	xor a
 	ld [wIntroSceneFrameCounter], a
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	call NextIntroScene
 	ret
 
 IntroScene27: ; e512d (39:512d)
 ; Spell out C R Y S T A L with Unown.
-	ld hl, wcf65
+	ld hl, wIntroSceneTimer
 	inc [hl]
 	ld hl, wIntroSceneFrameCounter
 	ld a, [hl]
@@ -1477,7 +1477,7 @@
 
 	ld c, a
 	and $f
-	ld [wcf65], a
+	ld [wIntroSceneTimer], a
 	ld a, c
 	and $70
 	swap a
@@ -1526,7 +1526,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 	ld de, wBGPals2
 	ld b, 8 ; number of BG pals
@@ -1550,7 +1550,7 @@
 ; e519c (39:519c)
 
 .FadePals: ; e519c
-INCLUDE "data/palettes/crystal_intro/fade.pal"
+INCLUDE "gfx/intro/fade.pal"
 ; e51dc
 
 CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
@@ -1603,13 +1603,13 @@
 	add hl, de
 	inc hl
 	inc hl
-	ld a, [wcf65]
-	and $3f
-	cp $1f
+	ld a, [wIntroSceneTimer]
+	and %111111
+	cp %011111
 	jr z, .okay
 	jr c, .okay
 	ld c, a
-	ld a, $3f
+	ld a, %111111
 	sub c
 .okay
 
@@ -1617,7 +1617,7 @@
 	ld b, $0
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 
 	push hl
@@ -1714,7 +1714,7 @@
 	ld hl, .pal2
 
 .got_pointer
-	ld a, [wcf65]
+	ld a, [wIntroSceneTimer]
 	and $7
 	add a
 	add a
@@ -1722,7 +1722,7 @@
 	ld c, a
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 
 	push bc
@@ -1784,7 +1784,7 @@
 rept 4
 	inc hl
 endr
-	ld a, [wcf65]
+	ld a, [wIntroSceneTimer]
 	add a
 	ld c, a
 	ld b, $0
@@ -1791,7 +1791,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 
 	push hl
@@ -1846,7 +1846,7 @@
 Intro_LoadTilemap: ; e541b (39:541b)
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	ld hl, wDecompressScratch
@@ -1946,7 +1946,7 @@
 Intro_ClearBGPals: ; e54a3 (39:54a3)
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 
 	ld hl, wBGPals2
@@ -1965,7 +1965,7 @@
 Intro_DecompressRequest2bpp_128Tiles: ; e54c2 (39:54c2)
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	push de
@@ -1984,7 +1984,7 @@
 Intro_DecompressRequest2bpp_255Tiles: ; e54de (39:54de)
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	push de
@@ -2003,7 +2003,7 @@
 Intro_DecompressRequest2bpp_64Tiles: ; e54fa (39:54fa)
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	push de
@@ -2022,7 +2022,7 @@
 Intro_ResetLYOverrides: ; e5516 (39:5516)
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 
 	ld hl, LYOverrides
@@ -2039,7 +2039,7 @@
 Intro_PerspectiveScrollBG: ; e552f (39:552f)
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 	; Scroll the grass every frame.
 	; Scroll the trees every other frame and at half speed.
@@ -2088,7 +2088,7 @@
 ; e5edd
 
 Palette_e5edd: ; e5edd
-INCLUDE "data/palettes/crystal_intro/intro_1.pal"
+INCLUDE "gfx/intro/intro_1.pal"
 ; e5f5d
 
 IntroUnownsGFX: ; e5f5d
@@ -2124,7 +2124,7 @@
 ; e65ad
 
 Palette_365ad: ; e65ad
-INCLUDE "data/palettes/crystal_intro/intro_2.pal"
+INCLUDE "gfx/intro/intro_2.pal"
 ; e662d
 
 IntroCrystalUnownsGFX: ; e662d
@@ -2140,7 +2140,7 @@
 ; e679d
 
 Palette_e679d: ; e679d
-INCLUDE "data/palettes/crystal_intro/intro_3.pal"
+INCLUDE "gfx/intro/intro_3.pal"
 ; e681d
 
 IntroSuicuneCloseGFX: ; e681d
@@ -2156,7 +2156,7 @@
 ; e6d6d
 
 Palette_e6d6d: ; e6d6d
-INCLUDE "data/palettes/crystal_intro/intro_4.pal"
+INCLUDE "gfx/intro/intro_4.pal"
 ; e6ded
 
 IntroSuicuneJumpGFX: ; e6ded
@@ -2184,7 +2184,7 @@
 ; e77dd
 
 Palette_e77dd: ; e77dd
-INCLUDE "data/palettes/crystal_intro/intro_5.pal"
+INCLUDE "gfx/intro/intro_5.pal"
 
 IntroUnownBackGFX: ; e785d
 INCBIN "gfx/intro/unown_back.2bpp.lz"
--- /dev/null
+++ b/engine/crystal_layouts.asm
@@ -1,0 +1,325 @@
+GetMysteryGift_MobileAdapterLayout: ; 4930f (mobile)
+	ld a, b
+	cp SCGB_RAM
+	jr nz, .not_ram
+	ld a, [SGBPredef]
+.not_ram
+	push af
+	farcall ResetBGPals
+	pop af
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, .dw
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .done
+	push de
+	jp hl
+.done
+	ret
+; 49330 (12:5330)
+
+.dw ; 49330
+	dw MG_Mobile_Layout00
+	dw MG_Mobile_Layout01
+	dw MG_Mobile_Layout02
+; 49336
+
+MG_Mobile_Layout_FillBox: ; 49336
+.row
+	push bc
+	push hl
+.col
+	ld [hli], a
+	dec c
+	jr nz, .col
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .row
+	ret
+; 49346
+
+MG_Mobile_Layout_WipeAttrMap: ; 49346 (12:5346)
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	ret
+
+MG_Mobile_Layout_LoadPals: ; 49351 (12:5351)
+	ld de, wBGPals1
+	ld hl, Palette_493e1
+	ld bc, 5 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	ld de, wBGPals1 palette PAL_BG_TEXT
+	ld hl, Palette_TextBG7
+	ld bc, 1 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	ret
+
+MG_Mobile_Layout00: ; 4936e (12:536e)
+	call MG_Mobile_Layout_LoadPals
+	call MG_Mobile_Layout_WipeAttrMap
+	call MG_Mobile_Layout_CreatePalBoxes
+	farcall ApplyAttrMap
+	farcall ApplyPals
+	ret
+
+MG_Mobile_Layout_CreatePalBoxes: ; 49384 (12:5384)
+	hlcoord 0, 0, AttrMap
+	lb bc, 4, 1
+	ld a, $1
+	call MG_Mobile_Layout_FillBox
+	lb bc, 2, 1
+	ld a, $2
+	call MG_Mobile_Layout_FillBox
+	lb bc, 6, 1
+	ld a, $3
+	call MG_Mobile_Layout_FillBox
+	hlcoord 1, 0, AttrMap
+	ld a, $1
+	lb bc, 3, 18
+	call MG_Mobile_Layout_FillBox
+	lb bc, 2, 18
+	ld a, $2
+	call MG_Mobile_Layout_FillBox
+	lb bc, 12, 18
+	ld a, $3
+	call MG_Mobile_Layout_FillBox
+	hlcoord 19, 0, AttrMap
+	lb bc, 4, 1
+	ld a, $1
+	call MG_Mobile_Layout_FillBox
+	lb bc, 2, 1
+	ld a, $2
+	call MG_Mobile_Layout_FillBox
+	lb bc, 6, 1
+	ld a, $3
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 12, AttrMap
+	ld bc, 6 * SCREEN_WIDTH
+	ld a, $7
+	call ByteFill
+	ret
+; 493e1 (12:53e1)
+
+Palette_493e1: ; 493e1
+INCLUDE "gfx/mystery_gift/mg_mobile.pal"
+; 49409
+
+LoadOW_BGPal7:: ; 49409
+	ld hl, Palette_TextBG7
+	ld de, wBGPals1 palette PAL_BG_TEXT
+	ld bc, 1 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	ret
+; 49418
+
+Palette_TextBG7: ; 49418
+INCLUDE "gfx/font/bg_text.pal"
+; 49420
+
+Function49420:: ; 49420 (12:5420)
+	ld hl, MansionPalette1 + 8 palettes
+	ld de, wBGPals1 palette PAL_BG_ROOF
+	ld bc, 1 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	ret
+; 4942f (12:542f)
+
+MG_Mobile_Layout01: ; 4942f
+	call MG_Mobile_Layout_LoadPals
+	ld de, wBGPals1 palette PAL_BG_TEXT
+	ld hl, .Palette_49478
+	ld bc, 1 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	call MG_Mobile_Layout_WipeAttrMap
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	xor a
+	call ByteFill
+	hlcoord 0, 14, AttrMap
+	ld bc, 4 * SCREEN_WIDTH
+	ld a, $7
+	call ByteFill
+	ld a, [wd002]
+	bit 6, a
+	jr z, .asm_49464
+	call Function49480
+	jr .asm_49467
+
+.asm_49464
+	call Function49496
+
+.asm_49467
+	farcall ApplyAttrMap
+	farcall ApplyPals
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 49478
+
+.Palette_49478: ; 49478
+	RGB 31, 31, 31
+	RGB 26, 31, 00
+	RGB 20, 16, 03
+	RGB 00, 00, 00
+; 49480
+
+Function49480: ; 49480
+	hlcoord 0, 0, AttrMap
+	lb bc, 4, SCREEN_WIDTH
+	ld a, $7
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 2, AttrMap
+	ld a, $4
+	ld [hl], a
+	hlcoord 19, 2, AttrMap
+	ld [hl], a
+	ret
+; 49496
+
+Function49496: ; 49496
+	hlcoord 0, 0, AttrMap
+	lb bc, 2, SCREEN_WIDTH
+	ld a, $7
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 1, AttrMap
+	ld a, $4
+	ld [hl], a
+	hlcoord 19, 1, AttrMap
+	ld [hl], a
+	ret
+; 494ac
+
+INCLUDE "engine/tileset_palettes.asm"
+
+MG_Mobile_Layout02: ; 49706
+	ld hl, .Palette_49732
+	ld de, wBGPals1
+	ld bc, 1 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	farcall ApplyPals
+	call MG_Mobile_Layout_WipeAttrMap
+	farcall ApplyAttrMap
+	ld hl, .Palette_4973a
+	ld de, wOBPals1
+	ld bc, 1 palettes
+	ld a, BANK(wOBPals1)
+	call FarCopyWRAM
+	ret
+; 49732
+
+.Palette_49732: ; 49732
+	RGB 31, 31, 31
+	RGB 23, 16, 07
+	RGB 23, 07, 07
+	RGB 03, 07, 20
+; 4973a
+
+.Palette_4973a: ; 4973a
+	RGB 00, 00, 00
+	RGB 07, 05, 31
+	RGB 14, 18, 31
+	RGB 31, 31, 31
+; 49742
+
+Function49742: ; 49742
+	ld hl, .Palette_49757
+	ld de, wBGPals1
+	ld bc, 8 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	farcall ApplyPals
+	ret
+; 49757
+
+.Palette_49757: ; 49757
+INCLUDE "gfx/unknown/49757.pal"
+; 49797
+
+_InitMG_Mobile_LinkTradePalMap: ; 49797
+	hlcoord 0, 0, AttrMap
+	lb bc, 16, 2
+	ld a, $4
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	ldcoord_a 0, 1, AttrMap
+	ldcoord_a 0, 14, AttrMap
+	hlcoord 2, 0, AttrMap
+	lb bc, 8, 18
+	ld a, $5
+	call MG_Mobile_Layout_FillBox
+	hlcoord 2, 8, AttrMap
+	lb bc, 8, 18
+	ld a, $6
+	call MG_Mobile_Layout_FillBox
+	hlcoord 0, 16, AttrMap
+	lb bc, 2, SCREEN_WIDTH
+	ld a, $4
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 6, 1, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 17, 1, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 6, 9, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $3
+	lb bc, 6, 1
+	hlcoord 17, 9, AttrMap
+	call MG_Mobile_Layout_FillBox
+	ld a, $2
+	hlcoord 2, 16, AttrMap
+	ld [hli], a
+	ld a, $7
+	ld [hli], a
+	ld [hli], a
+	ld [hli], a
+	ld a, $2
+	ld [hl], a
+	hlcoord 2, 17, AttrMap
+	ld a, $3
+	ld bc, 6
+	call ByteFill
+	ret
+; 49811
+
+LoadTradeRoomBGPals: ; 49811
+	ld hl, TradeRoomPalette
+	ld de, wBGPals1 palette PAL_BG_GREEN
+	ld bc, 6 palettes
+	ld a, BANK(wBGPals1)
+	call FarCopyWRAM
+	farcall ApplyPals
+	ret
+; 49826
+
+TradeRoomPalette: ; 49826
+INCLUDE "gfx/trade/border.pal"
+; 49856
+
+InitMG_Mobile_LinkTradePalMap: ; 49856
+	call _InitMG_Mobile_LinkTradePalMap
+	ret
+; 4985a
+
+; unused
+INCLUDE "gfx/unknown/4985a.asm"
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -1,3 +1,27 @@
+const_value set $6a
+	const DEBUGTEST_UP_ARROW ; $6a
+	const DEBUGTEST_TICKS    ; $6b
+	const DEBUGTEST_WHITE    ; $6c
+	const DEBUGTEST_LIGHT    ; $6d
+	const DEBUGTEST_DARK     ; $6e
+	const DEBUGTEST_BLACK    ; $6f
+	const DEBUGTEST_0        ; $70
+	const DEBUGTEST_1        ; $71
+	const DEBUGTEST_2        ; $72
+	const DEBUGTEST_3        ; $73
+	const DEBUGTEST_4        ; $74
+	const DEBUGTEST_5        ; $75
+	const DEBUGTEST_6        ; $76
+	const DEBUGTEST_7        ; $77
+	const DEBUGTEST_8        ; $78
+	const DEBUGTEST_9        ; $79
+	const DEBUGTEST_A        ; $7a
+	const DEBUGTEST_B        ; $7b
+	const DEBUGTEST_C        ; $7c
+	const DEBUGTEST_D        ; $7d
+	const DEBUGTEST_E        ; $7e
+	const DEBUGTEST_F        ; $7f
+
 ColorTest: ; 818ac
 ; A debug menu to test monster and trainer palettes at runtime.
 
@@ -127,13 +151,13 @@
 ; 8197c
 
 Function8197c: ; 8197c
-	ld hl, DebugColorTestGFX + $10
-	ld de, vTiles2 tile $6a
-	ld bc, $160
+	ld hl, DebugColorTestGFX + 1 tiles
+	ld de, vTiles2 tile DEBUGTEST_UP_ARROW
+	ld bc, 22 tiles
 	call CopyBytes
 	ld hl, DebugColorTestGFX
 	ld de, vTiles0
-	ld bc, $10
+	ld bc, 1 tiles
 	call CopyBytes
 	call LoadStandardFont
 	ld hl, vTiles1
@@ -155,7 +179,7 @@
 	ret z
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 	ld hl, Palette_819f4
 	ld de, wBGPals2
@@ -193,10 +217,10 @@
 ; 819f4
 
 Palette_819f4: ; 819f4
-INCLUDE "data/palettes/debug/bg.pal"
+INCLUDE "gfx/debug/bg.pal"
 
 Palette_81a34: ; 81a34
-INCLUDE "data/palettes/debug/ob.pal"
+INCLUDE "gfx/debug/ob.pal"
 ; 81a74
 
 Function81a74: ; 81a74
@@ -278,19 +302,19 @@
 	ld [hBGMapMode], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $6f
+	ld a, DEBUGTEST_BLACK
 	call ByteFill
 	hlcoord 1, 3
 	lb bc, 7, 18
-	ld a, $6c
+	ld a, DEBUGTEST_WHITE
 	call Bank20_FillBoxWithByte
 	hlcoord 11, 0
 	lb bc, 2, 3
-	ld a, $6d
+	ld a, DEBUGTEST_LIGHT
 	call Bank20_FillBoxWithByte
 	hlcoord 16, 0
 	lb bc, 2, 3
-	ld a, $6e
+	ld a, DEBUGTEST_DARK
 	call Bank20_FillBoxWithByte
 	call Function81bc0
 	call Function81bf4
@@ -360,9 +384,9 @@
 	ret
 ; 81baf
 
-String_81baf: db "レア", $6f, $6f, "@" ; rare (shiny)
+String_81baf: db "レア", DEBUGTEST_BLACK, DEBUGTEST_BLACK, "@" ; rare (shiny)
 String_81bb4: db "ノーマル@" ; normal
-String_81bb9: db $7a, "きりかえ▶@" ; (A) switches
+String_81bb9: db DEBUGTEST_A, "きりかえ▶@" ; (A) switches
 ; 81bc0
 
 Function81bc0: ; 81bc0
@@ -380,10 +404,10 @@
 
 Function81bde: ; 81bde
 	push af
-	ld a, $6a
+	ld a, DEBUGTEST_UP_ARROW
 	ld [hli], a
 	ld bc, $f
-	ld a, $6b
+	ld a, DEBUGTEST_TICKS
 	call ByteFill
 	ld l, e
 	ld h, d
@@ -436,7 +460,7 @@
 	jr z, .asm_81c69
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 	ld hl, wBGPals2
 	ld de, wc608
@@ -458,11 +482,11 @@
 
 .asm_81c69
 	ld hl, wSGBPals
-	ld a, $1
+	ld a, 1
 	ld [hli], a
-	ld a, $ff
+	ld a, LOW(PALRGB_WHITE)
 	ld [hli], a
-	ld a, $7f
+	ld a, HIGH(PALRGB_WHITE)
 	ld [hli], a
 	ld a, [wc608]
 	ld [hli], a
@@ -506,7 +530,7 @@
 
 Function81cbc: ; 81cbc
 	and $f
-	add $70
+	add DEBUGTEST_0
 	ld [hld], a
 	ret
 ; 81cc2
@@ -657,7 +681,7 @@
 Function81d8e: ; 81d8e
 	hlcoord 0, 10
 	ld bc, $a0
-	ld a, $6f
+	ld a, DEBUGTEST_BLACK
 	call ByteFill
 	hlcoord 2, 12
 	ld de, String_81fcd
@@ -777,8 +801,8 @@
 ; 81e5e
 
 Function81e5e: ; 81e5e
-	ld bc, $a
-	ld a, $6f
+	ld bc, 10
+	ld a, DEBUGTEST_BLACK
 	call ByteFill
 	ret
 ; 81e67
@@ -864,9 +888,9 @@
 
 Function81ee3: ; 81ee3
 .asm_81ee3
-	ld a, $ff
+	ld a, LOW(PALRGB_WHITE)
 	ld [hli], a
-	ld a, $7f
+	ld a, HIGH(PALRGB_WHITE)
 	ld [hli], a
 	ld a, [de]
 	inc de
@@ -968,7 +992,7 @@
 ; 81f5e
 
 Function81f5e: ; 81f5e
-	ld a, $6f
+	ld a, DEBUGTEST_BLACK
 	hlcoord 10, 0
 	ld [hl], a
 	hlcoord 15, 0
@@ -1016,17 +1040,17 @@
 
 .asm_81fb7
 	ld a, b
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, [de]
 	add a
 	add a
-	add $18
-	ld [hli], a
+	add 3 * TILE_WIDTH
+	ld [hli], a ; x
 	xor a
-	ld [hli], a
+	ld [hli], a ; tile id
 	ld a, c
-	ld [hli], a
-	ld a, $10
+	ld [hli], a ; attributes
+	ld a, 2 * TILE_WIDTH
 	add b
 	ld b, a
 	inc c
@@ -1038,9 +1062,9 @@
 ; 81fcd
 
 String_81fcd: ; 81fcd
-	db   "おわりますか?" ; Are you finished?
-	next "はい", $f2, $f2, $f2, $7a ; YES (A)
-	next "いいえ",    $f2, $f2, $7b ; NO  (B)
+	db   "おわりますか?" ; Are you finished?
+	next "はい<DOT><DOT><DOT>", DEBUGTEST_A ; YES...(A)
+	next "いいえ<DOT><DOT>", DEBUGTEST_B ; NO..(B)
 	db   "@"
 ; 81fe3
 
@@ -1061,9 +1085,9 @@
 	call WaitBGMap2
 	xor a
 	ld [hBGMapMode], a
-	ld de, DebugColorTestGFX + $10
-	ld hl, vTiles2 tile $6a
-	lb bc, BANK(DebugColorTestGFX), $16
+	ld de, DebugColorTestGFX + 1 tiles
+	ld hl, vTiles2 tile DEBUGTEST_UP_ARROW
+	lb bc, BANK(DebugColorTestGFX), 22
 	call Request2bpp
 	ld de, DebugColorTestGFX
 	ld hl, vTiles1
@@ -1073,7 +1097,7 @@
 	ld [hBGMapAddress + 1], a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $6f
+	ld a, DEBUGTEST_BLACK
 	call ByteFill
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -1080,16 +1104,16 @@
 	ld a, $7
 	call ByteFill
 	ld de, $15
-	ld a, $6c
+	ld a, DEBUGTEST_WHITE
 	call Function821d2
 	ld de, $1a
-	ld a, $6d
+	ld a, DEBUGTEST_LIGHT
 	call Function821d2
 	ld de, $1f
-	ld a, $6e
+	ld a, DEBUGTEST_DARK
 	call Function821d2
 	ld de, $24
-	ld a, $6f
+	ld a, DEBUGTEST_BLACK
 	call Function821d2
 	call Function821f4
 	call Function8220f
@@ -1134,10 +1158,10 @@
 	hlcoord 2, 8
 
 Function82203: ; 82203
-	ld a, $6a
+	ld a, DEBUGTEST_UP_ARROW
 	ld [hli], a
 	ld bc, $10 - 1
-	ld a, $6b
+	ld a, DEBUGTEST_TICKS
 	call ByteFill
 	ret
 ; 8220f
@@ -1145,7 +1169,7 @@
 Function8220f: ; 8220f
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 	ld a, [wcf64]
 	ld l, a
@@ -1198,7 +1222,7 @@
 	call Function821d8
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 	ld hl, wBGPals2
 	ld a, [wcf64]
@@ -1228,7 +1252,7 @@
 Function822a3: ; 822a3
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 	ld hl, wBGPals2
 	ld a, [wcf64]
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -37,15 +37,14 @@
 ; 0x2679a
 
 .MenuDataHeader: ; 0x2679a
-	db $40 ; flags
-	db 00, 05 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 5, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x267a2
 
 .MenuData2: ; 0x267a2
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 0 ; items
 	dw wd002
 	dw PlaceNthMenuStrings
@@ -423,15 +422,14 @@
 ; 0x269b5
 
 .NonscrollingMenuDataHeader: ; 0x269b5
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .NonscrollingMenuData2
 	db 1 ; default option
 ; 0x269bd
 
 .NonscrollingMenuData2: ; 0x269bd
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 0 ; items
 	dw wd002
 	dw DecorationMenuFunction
@@ -439,15 +437,14 @@
 ; 0x269c5
 
 .ScrollingMenuDataHeader: ; 0x269c5
-	db $40 ; flags
-	db 01, 01 ; start coords
-	db 16, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 1, 1, SCREEN_WIDTH - 2, SCREEN_HEIGHT - 2
 	dw .ScrollingMenuData2
 	db 1 ; default option
 ; 0x269cd
 
 .ScrollingMenuData2: ; 0x269cd
-	db $10 ; flags
+	db SCROLLINGMENU_DISPLAY_ARROWS ; flags
 	db 8, 0 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, wd002 ; text pointer
@@ -951,15 +948,14 @@
 ; 26eab
 
 MenuDataHeader_0x26eab: ; 0x26eab
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 07, 13 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 13, 7
 	dw MenuData2_0x26eb3
 	db 1 ; default option
 ; 0x26eb3
 
 MenuData2_0x26eb3: ; 0x26eb3
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
 	db "RIGHT SIDE@"
 	db "LEFT SIDE@"
@@ -1061,12 +1057,13 @@
 
 DescribeDecoration:: ; 26f59
 	ld a, b
-	ld hl, JumpTable_DecorationDesc
+	ld hl, .JumpTable
 	rst JumpTable
 	ret
 ; 26f5f
 
-JumpTable_DecorationDesc: ; 26f5f
+.JumpTable: ; 26f5f
+; entries correspond to DECODESC_* constants
 	dw DecorationDesc_Poster
 	dw DecorationDesc_LeftOrnament
 	dw DecorationDesc_RightOrnament
@@ -1197,7 +1194,7 @@
 	db "@"
 ; 0x26feb
 
-ToggleMaptileDecorations: ; 26feb
+Special_ToggleMaptileDecorations: ; 26feb
 	lb de, 0, 4
 	ld a, [Bed]
 	call SetDecorationTile
@@ -1251,7 +1248,7 @@
 	ret
 ; 27043
 
-ToggleDecorationsVisibility: ; 27043
+Special_ToggleDecorationsVisibility: ; 27043
 	ld de, EVENT_KRISS_HOUSE_2F_CONSOLE
 	ld hl, VariableSprites + SPRITE_CONSOLE - SPRITE_VARS
 	ld a, [Console]
--- a/engine/delete_save_change_clock.asm
+++ b/engine/delete_save_change_clock.asm
@@ -47,14 +47,13 @@
 	db "@"
 
 .NoYes_MenuDataHeader: ; 0x4d40d
-	db $00 ; flags
-	db 07, 14 ; start coords
-	db 11, 19 ; end coords
+	db 0 ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .NoYes_MenuData2
 	db 1 ; default option
 
 .NoYes_MenuData2: ; 0x4d415
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2 ; items
 	db "NO@"
 	db "YES@"
@@ -285,14 +284,13 @@
 	db "@"
 
 .NoYesMenuDataHeader: ; 0x4d585
-	db $00 ; flags
-	db 07, 14 ; start coords
-	db 11, 19 ; end coords
+	db 0 ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2: ; 0x4d58d
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2 ; items
 	db "NO@"
 	db "YES@"
--- a/engine/dma_transfer.asm
+++ b/engine/dma_transfer.asm
@@ -112,7 +112,7 @@
 	ret
 ; 1040d4
 
-; XXX
+; unused
 	ld hl, .unreferenced_1040da
 	jp CallInSafeGFXMode
 
@@ -119,7 +119,7 @@
 .unreferenced_1040da
 	ld a, $1
 	ld [rVBK], a
-	ld a, $3
+	ld a, BANK(w3_d800)
 	ld [rSVBK], a
 	ld de, w3_d800
 	ld a, [hBGMapAddress + 1]
@@ -136,7 +136,7 @@
 	ret
 ; 1040fb
 
-; XXX
+; unused
 	ld hl, .unreferenced_104101
 	jp CallInSafeGFXMode
 
@@ -143,7 +143,7 @@
 .unreferenced_104101
 	ld a, $1
 	ld [rVBK], a
-	ld a, $3
+	ld a, BANK(w3_d800)
 	ld [rSVBK], a
 	ld hl, w3_d800
 	call HDMATransferToWRAMBank3
@@ -221,7 +221,7 @@
 	ld [hMapAnims], a
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wScratchTileMap)
 	ld [rSVBK], a
 	ld a, [rVBK]
 	push af
@@ -472,7 +472,7 @@
 	; switch to WRAM bank 6
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wScratchTileMap)
 	ld [rSVBK], a
 
 	push bc
@@ -542,7 +542,7 @@
 .bankswitch ; 1042d6
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wScratchTileMap)
 	ld [rSVBK], a
 
 	push bc
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -482,7 +482,7 @@
 .japstr1
 	db "とったもの@"
 .japstr2
-	db "あと かい@"
+	db "あと かい@"
 ; e2183
 
 DummyGame_Card2Coord: ; e2183
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -1,5 +1,6 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
+
 SECTION "Events", ROMX
 
 OverworldLoop:: ; 966b0
@@ -395,7 +396,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call CallScript
 	ret
 ; 968c7
@@ -449,7 +450,7 @@
 
 	ld e, a
 	ld d, 0
-	ld hl, wCurrMapSceneScriptHeaderPointer
+	ld hl, wCurrMapSceneScriptsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -457,9 +458,9 @@
 	add hl, de
 endr
 
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call GetFarHalfword
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call CallScript
 
 	ld hl, ScriptFlags
@@ -634,7 +635,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call CallScript
 	ret
 ; 96a12
@@ -645,7 +646,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	ld de, EngineBuffer1
 	ld bc, 2
 	call FarCopyBytes
@@ -730,7 +731,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call CallScript
 	scf
 	ret
@@ -739,7 +740,7 @@
 	call CheckBGEventFlag
 	jp nz, .dontread
 	call PlayTalkObject
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
@@ -752,7 +753,7 @@
 .copy
 	call CheckBGEventFlag
 	jr nz, .dontread
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	ld de, EngineBuffer1
 	ld bc, 3
 	call FarCopyBytes
@@ -773,9 +774,9 @@
 	pop hl
 	inc hl
 	inc hl
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call GetFarHalfword
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call CallScript
 	scf
 	ret
@@ -791,7 +792,7 @@
 	ld h, [hl]
 	ld l, a
 	push hl
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call GetFarHalfword
 	ld e, l
 	ld d, h
@@ -994,6 +995,7 @@
 	ret
 ; 96bd3
 
+; unused
 .unreferenced ; 96bd3
 	ld a, 7
 	scf
@@ -1060,7 +1062,7 @@
 	end
 ; 96c2e
 
-; unreferenced
+; unused
 	end
 ; 96c2f
 
@@ -1105,4 +1107,5 @@
 ; 96c56
 
 INCLUDE "engine/scripting.asm"
+
 INCLUDE "engine/events_2.asm"
--- a/engine/events/battle_tower.asm
+++ /dev/null
@@ -1,210 +1,0 @@
-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"
--- /dev/null
+++ b/engine/events/battle_tower/battle_tower.asm
@@ -1,0 +1,1669 @@
+Special_BattleTowerRoomMenu: ; 1700b0
+; special
+	call InitBattleTowerChallengeRAM
+	farcall _BattleTowerRoomMenu
+	ret
+; 1700ba
+
+Special_Function1700ba: ; 1700ba
+	call InitBattleTowerChallengeRAM
+	farcall Function11811a
+	ret
+; 1700c4
+
+Function1700c4: ; 1700c4
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+
+	call Function17042c
+
+	ld a, $5
+	call GetSRAMBank
+	ld a, $1
+	ld [$be45], a
+	xor a
+	ld [$be46], a
+	ld hl, w3_dffc
+	ld de, $aa41
+	ld bc, 4
+	call CopyBytes
+	ld hl, w3_d202Name
+	ld de, $aa8e
+	ld bc, 7 * $cc ; length of battle tower struct from japanese games?
+	call CopyBytes
+	ld hl, $aa5d ; some sort of count
+	ld a, [hl]
+	inc [hl]
+	inc hl
+	sla a
+	sla a
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, w3_dffc
+	ld bc, 4
+	call CopyBytes
+	call CloseSRAM
+	pop af
+	ld [rSVBK], a
+	ret
+; 170114
+
+Special_Function170114: ; 170114
+	call InitBattleTowerChallengeRAM
+	call .Function170121
+	farcall Function11805f
+	ret
+; 170121
+
+.Function170121: ; 170121
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a948
+	ld de, wMisc
+	ld bc, $f6 ; 246
+	call CopyBytes
+	call CloseSRAM
+	call Function170c8b
+	ret
+; 170139
+
+Function170139: ; 170139
+; Convert the 4-digit decimal number at 5:aa41 into binary
+	ld a, $5
+	call GetSRAMBank
+	ld de, $aa41
+	ld h, $0
+	ld l, h
+	ld bc, 1000
+	call .DecToBin
+	ld bc, 100
+	call .DecToBin
+	ld bc, 10
+	call .DecToBin
+	ld a, [de]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	call CloseSRAM
+; Store that number in wMisc
+	ld a, h
+	ld [wMisc], a
+	ld a, l
+	ld [wMisc + 1], a
+	ld hl, wBT_OTTempPkmn1DVs
+	ld a, [PlayerID]
+	ld [hli], a
+	ld a, [PlayerID + 1]
+	ld [hli], a
+	ld a, [wSecretID]
+	ld [hli], a
+	ld a, [wSecretID + 1]
+	ld [hli], a
+	ld e, l
+	ld d, h
+	ld hl, PlayerName
+	ld bc, NAME_LENGTH_JAPANESE - 1
+	call CopyBytes
+	ld bc, PlayerID
+	ld de, wPlayerGender
+	farcall GetMobileOTTrainerClass
+	ld de, wBT_OTTempPkmn1CaughtGender
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, LOW(PartyMons)
+	ld [wcd49], a
+	ld a, HIGH(PartyMons)
+	ld [wcd4a], a
+	ld a, LOW(PartyMonNicknames)
+	ld [wcd4b], a
+	ld a, HIGH(PartyMonNicknames)
+	ld [wcd4c], a
+	ld a, 3
+.CopyLoop:
+	push af
+	ld a, [wcd49]
+	ld l, a
+	ld a, [wcd4a]
+	ld h, a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	ld a, l
+	ld [wcd49], a
+	ld a, h
+	ld [wcd4a], a
+	ld a, [wcd4b]
+	ld l, a
+	ld a, [wcd4c]
+	ld h, a
+	ld bc, $0006
+	call CopyBytes
+	ld a, l
+	ld [wcd4b], a
+	ld a, h
+	ld [wcd4c], a
+	pop af
+	dec a
+	jr nz, .CopyLoop
+	ld a, $4
+	call GetSRAMBank
+	ld hl, $a013
+	ld bc, $24
+	call CopyBytes
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a894
+	ld bc, NAME_LENGTH_JAPANESE
+	call CopyBytes
+	ld hl, wMisc
+	ld de, $a948
+	ld bc, $f6
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 17020c
+
+.DecToBin: ; 17020c
+	ld a, [de]
+	inc de
+	and a
+	ret z
+
+.digit_loop
+	add hl, bc
+	dec a
+	jr nz, .digit_loop
+	ret
+; 170215
+
+Special_BattleTowerBattle: ; 170215
+	xor a
+	ld [wBattleTowerBattleEnded], a
+	call _BattleTowerBattle
+	ret
+; 17021d
+
+DummySpecial_17021d: ; 17021d
+	ret
+; 17021e
+
+InitBattleTowerChallengeRAM: ; 17021e
+	xor a
+	ld [wBattleTowerBattleEnded], a
+	ld [wNrOfBeatenBattleTowerTrainers], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ret
+; 17022c
+
+_BattleTowerBattle: ; 17022c
+.loop
+	call .do_dw
+	call DelayFrame
+	ld a, [wBattleTowerBattleEnded]
+	cp $1
+	jr nz, .loop
+	ret
+; 17023a
+
+.do_dw ; 17023a
+	ld a, [wBattleTowerBattleEnded]
+	ld e, a
+	ld d, 0
+	ld hl, .dw
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+; 170249
+
+.dw ; 170249
+	dw RunBattleTowerTrainer
+	dw SkipBattleTowerTrainer
+; 17024d
+
+RunBattleTowerTrainer: ; 17024d
+	ld a, [Options]
+	push af
+	ld hl, Options
+	set BATTLE_SHIFT, [hl] ; SET MODE
+
+	ld a, [InBattleTowerBattle]
+	push af
+	or $1
+	ld [InBattleTowerBattle], a
+
+	xor a
+	ld [wLinkMode], a
+	farcall Special_StubbedTrainerRankings_Healings
+	farcall HealParty
+	call ReadBTTrainerParty
+	call Clears5_a89a
+
+	predef StartBattle
+
+	farcall LoadPokemonData
+	farcall HealParty
+	ld a, [wBattleResult]
+	ld [ScriptVar], a
+	and a
+	jr nz, .lost
+	ld a, BANK(sNrOfBeatenBattleTowerTrainers)
+	call GetSRAMBank
+	ld a, [sNrOfBeatenBattleTowerTrainers]
+	ld [wNrOfBeatenBattleTowerTrainers], a
+	call CloseSRAM
+	ld hl, StringBuffer3
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	add "1"
+	ld [hli], a
+	ld a, "@"
+	ld [hl], a
+
+.lost
+	pop af
+	ld [InBattleTowerBattle], a
+	pop af
+	ld [Options], a
+	ld a, $1
+	ld [wBattleTowerBattleEnded], a
+	ret
+
+
+ReadBTTrainerParty: ; 1702b7
+; Initialise the BattleTower-Trainer and his Pkmn
+	call CopyBTTrainer_FromBT_OT_TowBT_OTTemp
+
+; Check the nicknames for illegal characters, and replace bad nicknames
+; with their species names.
+	ld de, wBT_OTTempPkmn1Name ; $c643
+	ld c, MON_NAME_LENGTH
+	farcall CheckStringForErrors
+	jr nc, .skip_mon_1
+
+	ld a, [wBT_OTTempPkmn1]
+	ld [wNamedObjectIndexBuffer], a
+	call GetPokemonName
+	ld l, e
+	ld h, d
+	ld de, wBT_OTTempPkmn1Name ; $c643
+	ld bc, MON_NAME_LENGTH
+	call CopyBytes
+
+.skip_mon_1
+	ld de, wBT_OTTempPkmn2Name ; $c67e
+	ld c, MON_NAME_LENGTH
+	farcall CheckStringForErrors
+	jr nc, .skip_mon_2
+	ld a, [wBT_OTTempPkmn2] ; [$c64e]
+	ld [wNamedObjectIndexBuffer], a
+	call GetPokemonName
+	ld l, e
+	ld h, d
+	ld de, wBT_OTTempPkmn2Name ; $c67e
+	ld bc, MON_NAME_LENGTH
+	call CopyBytes
+
+.skip_mon_2
+	ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
+	ld c, MON_NAME_LENGTH
+	farcall CheckStringForErrors
+	jr nc, .skip_mon_3
+	ld a, [wBT_OTTempPkmn3] ; [$c689]
+	ld [wNamedObjectIndexBuffer], a
+	call GetPokemonName
+	ld l, e
+	ld h, d
+	ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
+	ld bc, MON_NAME_LENGTH
+	call CopyBytes
+
+.skip_mon_3
+; Add the terminator character to each of these names
+	ld a, "@"
+	ld [wBT_OTTempPkmn1NameEnd - 1], a ; $c64d
+	ld [wBT_OTTempPkmn2NameEnd - 1], a ; $c688
+	ld [wBT_OTTempPkmn3NameEnd - 1], a ; $c68a + 57 = $c6c3
+; Fix errors in the movesets
+	call CheckBTMonMovesForErrors
+; Repair the trainer name if needed, then copy it to OTPlayerName
+	ld de, wBT_OTTempName
+	ld c, NAME_LENGTH - 1
+	farcall CheckStringForErrors
+	jr nc, .trainer_name_okay
+	ld hl, BT_ChrisName
+	jr .done_trainer_name
+
+.trainer_name_okay
+	ld hl, wBT_OTTempName ; 0xc608
+
+.done_trainer_name
+	ld de, OTPlayerName
+	ld bc, NAME_LENGTH - 1
+	call CopyBytes
+	ld a, "@"
+	ld [de], a
+
+	ld hl, wBT_OTTempTrainerClass
+	ld a, [hli]
+	ld [OtherTrainerClass], a
+	ld a, LOW(OTPartyMonNicknames)
+	ld [BGMapBuffer], a
+	ld a, HIGH(OTPartyMonNicknames)
+	ld [BGMapBuffer + 1], a
+
+	; Copy Pkmn into Memory from the address in hl
+	ld de, OTPartyMon1Species
+	ld bc, OTPartyCount
+	ld a, BATTLETOWER_PARTY_LENGTH
+	ld [bc], a
+	inc bc
+.otpartymon_loop
+	push af
+	ld a, [hl]
+	ld [bc], a
+	inc bc
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	push de
+	ld a, [BGMapBuffer]
+	ld e, a
+	ld a, [BGMapBuffer + 1]
+	ld d, a
+	ld bc, MON_NAME_LENGTH
+	call CopyBytes
+	ld a, e
+	ld [BGMapBuffer], a
+	ld a, d
+	ld [BGMapBuffer + 1], a
+	pop de
+	pop bc
+	pop af
+	dec a
+	and a
+	jr nz, .otpartymon_loop
+	ld a, -1
+	ld [bc], a
+	ret
+; 170394
+
+ValidateBTParty: ; 170394
+; Check for and fix errors in party data
+	ld hl, wBT_OTTempPkmn1Species
+	ld d, BATTLETOWER_PARTY_LENGTH
+.pkmn_loop
+	push de
+	push hl
+	ld b, h
+	ld c, l
+	ld a, [hl]
+	and a
+idx = $ff
+rept ($ff +- NUM_POKEMON)
+	jr z, .invalid
+	cp idx
+idx = idx +- 1
+endr
+	jr nz, .valid
+
+.invalid
+	ld a, SMEARGLE
+	ld [hl], a
+
+.valid
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb] ; s5_b2fb ; max level?
+	call CloseSRAM
+	ld e, a
+	ld hl, MON_LEVEL
+	add hl, bc
+	ld a, [hl]
+	cp MIN_LEVEL
+	ld a, MIN_LEVEL
+	jr c, .load
+	ld a, [hl]
+	cp e
+	jr c, .dont_load
+	ld a, e
+
+.load
+	ld [hl], a
+
+.dont_load
+	ld [CurPartyLevel], a
+	ld hl, MON_MOVES
+	add hl, bc
+	ld d, NUM_MOVES - 1
+	ld a, [hli]
+	and a
+	jr z, .not_move
+	cp NUM_ATTACKS + 1
+	jr nc, .not_move
+	jr .valid_move
+
+.not_move
+	dec hl
+	ld a, POUND
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld [hli], a
+	ld [hl], a
+	jr .done_moves
+
+.valid_move
+	ld a, [hl]
+	cp NUM_ATTACKS + 1
+	jr c, .next
+	ld [hl], $0
+
+.next
+	inc hl
+	dec d
+	jr nz, .valid_move
+
+.done_moves
+	ld hl, MON_MAXHP
+	add hl, bc
+	ld d, h
+	ld e, l
+	push hl
+	push de
+	ld hl, MON_STAT_EXP - 1
+	add hl, bc
+	ld b, $1
+	predef CalcPkmnStats
+	pop de
+	pop hl
+	dec de
+	dec de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	pop hl
+	ld bc, PARTYMON_STRUCT_LENGTH + MON_NAME_LENGTH
+	add hl, bc
+	pop de
+	dec d
+	jp nz, .pkmn_loop
+	ret
+; 170426
+
+BT_ChrisName: ; 170426
+	db "CHRIS@"
+; 17042c
+
+Function17042c: ; 17042c
+	ld hl, w3_d202TrainerData
+	ld a, BATTLETOWER_STREAK_LENGTH
+.loop
+	push af
+	push hl
+	ld c, BATTLETOWER_TRAINERDATALENGTH / 2
+.loop2
+	; First byte is a comparison value.
+	ld a, [hli]
+	ld b, a
+	; Second byte is a lookup index.
+	ld a, [hli]
+	and a
+	jr z, .empty
+	cp 15
+	jr nc, .copy_data
+
+	push hl
+	ld hl, Unknown_170470
+	dec a
+	ld e, a
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+	pop hl
+
+	; If Unknown_170470[a-1] <= b, overwrite the current trainer's data
+	; with Unknown17047e, and exit the inner loop.
+	cp b
+	jr c, .copy_data
+	jr z, .copy_data
+	jr .next_iteration
+
+.empty
+	; If a == 0 and b >= $fc, overwrite the current trainer's data with
+	; Unknown17047e, and exit the inner loop.
+	ld a, b
+	cp $fc
+	jr nc, .copy_data
+
+.next_iteration
+	dec c
+	jr nz, .loop2
+	jr .next_trainer
+
+.copy_data
+	pop de
+	push de
+	ld hl, Unknown_17047e
+	ld bc, BATTLETOWER_TRAINERDATALENGTH
+	call CopyBytes
+
+.next_trainer
+	pop hl
+	ld de, BATTLE_TOWER_STRUCT_LENGTH
+	add hl, de
+	pop af
+	dec a
+	jr nz, .loop
+	ret
+; 170470
+
+INCLUDE "data/battle_tower/unknown_levels.asm"
+
+
+CopyBTTrainer_FromBT_OT_TowBT_OTTemp: ; 1704a2
+; copy the BattleTower-Trainer data that lies at 'BT_OTTrainer' to 'wBT_OTTemp'
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(BT_OTTrainer)
+	ld [rSVBK], a
+
+	ld hl, BT_OTTrainer
+	ld de, wBT_OTTemp
+	ld bc, BATTLE_TOWER_STRUCT_LENGTH
+	call CopyBytes
+
+	pop af
+	ld [rSVBK], a
+
+	ld a, BANK(sBattleTowerChallengeState)
+	call GetSRAMBank
+	ld a, BATTLETOWER_CHALLENGE_IN_PROGESS
+	ld [sBattleTowerChallengeState], a
+	ld hl, sNrOfBeatenBattleTowerTrainers
+	inc [hl]
+	call CloseSRAM
+SkipBattleTowerTrainer: ; 1704c9
+	ret
+; 1704ca
+
+Unreferenced_Function1704ca: ; 1704ca
+	ld a, [$be46]
+	cp $7
+	jr c, .asm_1704d3
+	ld a, $6
+
+.asm_1704d3
+	ld hl, $afce
+	ld de, -$e0
+.asm_1704d9
+	and a
+	jr z, .asm_1704e0
+	add hl, de
+	dec a
+	jr .asm_1704d9
+
+.asm_1704e0
+	ret
+; 1704e1
+
+UnusedSpecial_Function1704e1: ; 1704e1
+	call SpeechTextBox
+	call FadeToMenu
+	call InitBattleTowerChallengeRAM
+	call .JumptableLoop
+	call CloseSubmenu
+	ret
+; 1704f1
+
+.JumptableLoop: ; 1704f1
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearScreen
+.loop
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .done
+	call .DoJumptable
+	farcall ReloadMapPart
+	jr .loop
+
+.done
+	ret
+; 170510
+
+.DoJumptable: ; 170510
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .dw
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+; 17051f
+
+.dw ; 17051f
+	dw .Jumptable_0
+	dw .Jumptable_1
+	dw .Jumptable_2
+; 170525
+
+.Jumptable_0: ; 170525
+	ld a, $5
+	call GetSRAMBank
+
+	ld hl, $a89c
+	ld de, StringBuffer3
+	ld bc, $16
+	call CopyBytes
+
+	ld hl, $a8b2
+	ld de, wMisc
+	ld bc, $0096
+	call CopyBytes
+
+	call CloseSRAM
+	hlcoord 1, 1
+	ld de, StringBuffer3
+	call PlaceString
+	hlcoord 1, 3
+	ld de, .String_Mail
+	call PlaceString
+	hlcoord 4, 3
+	ld de, StringBuffer4
+	call PlaceString
+	hlcoord 8, 3
+	ld de, .String_PastReaders
+	call PlaceString
+	call .DrawBorder
+	call .PlaceTextItems
+	jr .NextJumptableFunction
+
+
+.Jumptable_1:
+	call SetPalettes
+	call .NextJumptableFunction
+
+
+.Jumptable_2:
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .pressed_a_or_b
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .pressed_a_or_b
+	ld a, [hl]
+	and D_UP
+	jr nz, .pressed_up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .pressed_down
+	ret
+
+.pressed_up
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	and a
+	ret z
+	sub 15
+	ld [wNrOfBeatenBattleTowerTrainers], a
+	call .PlaceTextItems
+	ret
+
+.pressed_down
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	cp 60
+	ret z
+	add 15
+	ld [wNrOfBeatenBattleTowerTrainers], a
+	call .PlaceTextItems
+	ret
+
+.pressed_a_or_b
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.NextJumptableFunction:
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; 1705b7
+
+.DrawBorder: ; 1705b7
+	hlcoord 0, 4
+	ld a, "┌"
+	ld [hli], a
+	ld c, SCREEN_WIDTH - 2
+.top_border_loop
+	ld a, "─"
+	ld [hli], a
+	dec c
+	jr nz, .top_border_loop
+	ld a, "┐"
+	ld [hli], a
+	ld de, SCREEN_WIDTH
+	ld c, 12
+.left_border_loop
+	ld a, "│"
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .left_border_loop
+	ld a, "└"
+	ld [hli], a
+	ld c, SCREEN_WIDTH - 2
+.bottom_border_loop
+	ld a, "─"
+	ld [hli], a
+	dec c
+	jr nz, .bottom_border_loop
+	ld a, "┘"
+	ld [hl], a
+	ld de, -SCREEN_WIDTH
+	add hl, de
+	ld c, 12
+.right_border_loop
+	ld a, "│"
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .right_border_loop
+	ret
+; 1705f0
+
+.PlaceTextItems: ; 1705f0
+	call .ClearBox
+	call .PlaceUpDownArrows
+	ld a, $50
+	ld [wcd4e], a
+	ld hl, wMisc
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	ld c, a
+	xor a
+	ld b, a
+	add hl, bc
+	push hl
+	pop bc
+	hlcoord 1, 6
+	ld a, 6
+.loop1
+	push af
+	push hl
+	ld a, 3
+.loop2
+	push af
+	ld de, wcd49
+	ld a, [bc]
+	and a
+	jr z, .fill_with_e3
+; .copy
+	ld a, 5
+.loop3a
+	push af
+	ld a, [bc]
+	ld [de], a
+	inc bc
+	inc de
+	pop af
+	dec a
+	jr nz, .loop3a
+	jr .rejoin
+
+.fill_with_e3
+	ld a, 5
+.loop3b
+	push af
+	ld a, $e3
+	ld [de], a
+	inc de
+	inc bc
+	pop af
+	dec a
+	jr nz, .loop3b
+
+.rejoin
+	ld de, wcd49
+	push bc
+	call PlaceString
+	ld de, NAME_LENGTH_JAPANESE
+	add hl, de
+	pop bc
+	pop af
+	dec a
+	jr nz, .loop2
+	pop hl
+	ld de, $28
+	add hl, de
+	pop af
+	dec a
+	jr nz, .loop1
+	ret
+; 17064b
+
+.ClearBox: ; 17064b
+	hlcoord 1, 5
+	xor a
+	ld b, 12
+.clearbox_row
+	ld c, SCREEN_WIDTH - 2
+.clearbox_column
+	ld [hli], a
+	dec c
+	jr nz, .clearbox_column
+	inc hl
+	inc hl
+	dec b
+	jr nz, .clearbox_row
+	ret
+; 17065d
+
+.PlaceUpDownArrows: ; 17065d
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	and a
+	jr z, .nope
+	hlcoord 18, 5
+	ld a, "▲"
+	ld [hl], a
+
+.nope
+	ld a, [wNrOfBeatenBattleTowerTrainers]
+	cp 60
+	ret z
+	hlcoord 18, 16
+	ld a, "▼"
+	ld [hl], a
+	ret
+; 170676
+
+.String_Mail: ; 170676
+	db "ルーム@"
+; 17067a
+
+.String_PastReaders: ; 17067a
+	db "れきだいりーダーいちらん@"
+; 170687
+
+Special_BattleTowerAction: ; 170687
+	ld a, [ScriptVar]
+	ld e, a
+	ld d, 0
+	ld hl, .dw
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+; 170696
+
+
+.dw ; 170696 (5c:4696)
+	dw BattleTowerAction_CheckExplanationRead ; 0x00
+	dw BattleTowerAction_SetExplanationRead ; 0x01
+	dw BattleTowerAction_GetChallengeState ; 0x02
+	dw BattleTowerAction_SetByteToQuickSaveChallenge ; 0x03
+	dw BattleTowerAction_SetByteToCancelChallenge ; 0x04
+	dw Function1707ac ; 0x05
+	dw Function1707f4 ; 0x06
+	dw SaveBattleTowerLevelGroup ; 0x07
+	dw LoadBattleTowerLevelGroup ; 0x08
+	dw BattleTower_CheckSaveFileExistsAndIsYours ; 0x09
+	dw Function1708b1 ; 0x0a
+	dw CheckMobileEventIndex ; 0x0b
+	dw Function1708c8 ; 0x0c
+	dw Function1708f0 ; 0x0d
+	dw BattleTowerAction_EggTicket ; 0x0e
+	dw Function1709aa ; 0x0f
+	dw Function1709bb ; 0x10
+	dw Function170a9c ; 0x11
+	dw Function170aa0 ; 0x12
+	dw Function170aaf ; 0x13
+	dw Function170abe ; 0x14
+	dw Function170ad7 ; 0x15
+	dw Function170807 ; 0x16
+	dw Function17081d ; 0x17
+	dw BattleTowerAction_LevelCheck ; 0x18
+	dw BattleTowerAction_UbersCheck ; 0x19
+	dw ResetBattleTowerTrainersSRAM ; 0x1a
+	dw BattleTower_GiveReward ; 0x1b
+	dw Function17071b ; 0x1c
+	dw Function170729 ; 0x1d
+	dw BattleTower_RandomlyChooseReward ; 0x1e
+	dw BattleTower_SaveOptions ; 0x1f
+
+
+; Reset the save memory for BattleTower-Trainers (Counter and all 7 TrainerBytes)
+ResetBattleTowerTrainersSRAM: ; 1706d6 (5c:46d6) BattleTowerAction $1a
+	ld a, BANK(sBTTrainers)
+	call GetSRAMBank
+
+	ld a, $ff
+	ld hl, sBTTrainers
+	ld bc, BATTLETOWER_STREAK_LENGTH
+	call ByteFill
+
+	xor a
+	ld [sNrOfBeatenBattleTowerTrainers], a
+
+	call CloseSRAM
+
+	ret
+
+BattleTower_GiveReward: ; 1706ee (5c:46ee) BattleTowerAction $1b
+	ld a, BANK(sBattleTowerReward)
+	call GetSRAMBank
+
+	ld a, [sBattleTowerReward]
+	call CloseSRAM
+	ld [ScriptVar], a
+	ld hl, NumItems
+	ld a, [hli]
+	cp MAX_ITEMS
+	ret c
+	ld b, MAX_ITEMS
+	ld a, [ScriptVar]
+	ld c, a
+.loop
+	ld a, [hli]
+	cp c
+	jr nz, .next
+	ld a, [hl]
+	cp 95
+	ret c
+.next
+	inc hl
+	dec b
+	jr nz, .loop
+	ld a, POTION
+	ld [ScriptVar], a
+	ret
+
+Function17071b: ; 17071b (5c:471b) BattleTowerAction $1c
+	ld a, BANK(sBattleTowerChallengeState)
+	call GetSRAMBank
+	ld a, BATTLETOWER_WON_CHALLENGE
+	ld [sBattleTowerChallengeState], a
+	call CloseSRAM
+	ret
+
+Function170729: ; 170729 (5c:4729) BattleTowerAction $1d
+	ld a, BANK(sBattleTowerChallengeState)
+	call GetSRAMBank
+	ld a, BATTLETOWER_RECEIVED_REWARD
+	ld [sBattleTowerChallengeState], a
+	call CloseSRAM
+	ret
+
+BattleTower_SaveOptions: ; 170737 (5c:4737) BattleTowerAction $1f
+	farcall SaveOptions
+	ret
+
+BattleTower_RandomlyChooseReward: ; 17073e (5c:473e) BattleTowerAction $1e
+; Generate a random stat boosting item.
+.loop
+	call Random
+	ld a, [hRandomAdd]
+	and $7
+	cp 6
+	jr c, .okay
+	sub 6
+.okay
+	add HP_UP
+	cp LUCKY_PUNCH
+	jr z, .loop
+	push af
+	ld a, BANK(sBattleTowerReward)
+	call GetSRAMBank
+	pop af
+	ld [sBattleTowerReward], a
+	call CloseSRAM
+	ret
+
+BattleTowerAction_CheckExplanationRead: ; 17075f (5c:475f) BattleTowerAction $00
+	call BattleTower_CheckSaveFileExistsAndIsYours
+	ld a, [ScriptVar]
+	and a
+	ret z
+
+	ld a, BANK(sBattleTowerSaveFileFlags)
+	call GetSRAMBank
+	ld a, [sBattleTowerSaveFileFlags]
+	and $2
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+BattleTowerAction_GetChallengeState: ; 170778 (5c:4778) BattleTowerAction $02
+	ld hl, sBattleTowerChallengeState
+	ld a, BANK(sBattleTowerChallengeState)
+	call GetSRAMBank
+	ld a, [hl]
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+BattleTowerAction_SetExplanationRead: ; 170788 (5c:4788) BattleTowerAction $01
+	ld a, BANK(sBattleTowerSaveFileFlags)
+	call GetSRAMBank
+	ld a, [sBattleTowerSaveFileFlags]
+	or $2
+	ld [sBattleTowerSaveFileFlags], a
+	call CloseSRAM
+	ret
+
+BattleTowerAction_SetByteToQuickSaveChallenge: ; 170799 (5c:4799) BattleTowerAction $03
+	ld c, BATTLETOWER_SAVED_AND_LEFT
+	jr asm_17079f
+
+BattleTowerAction_SetByteToCancelChallenge: ; 17079d (5c:479d) BattleTowerAction $04
+	ld c, BATTLETOWER_NO_CHALLENGE
+asm_17079f: ; 17079f (5c:479f)
+	ld a, BANK(sBattleTowerChallengeState)
+	call GetSRAMBank
+	ld a, c
+	ld [sBattleTowerChallengeState], a
+	call CloseSRAM
+	ret
+
+Function1707ac: ; 1707ac (5c:47ac) BattleTowerAction $05
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8c]
+	ld b, a
+	ld a, [$be46]
+	ld [ScriptVar], a
+	call CloseSRAM
+	and a
+	ret z
+	ld a, b
+	cp $2
+	jr nc, .asm_1707ef
+	push bc
+	call UpdateTime
+	pop bc
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8b]
+	call CloseSRAM
+	ld c, a
+	ld a, [CurDay]
+	sub c
+	jr c, .asm_1707e5
+	cp $8
+	jr nc, .asm_1707ef
+	ld a, b
+	and a
+	jr nz, .asm_1707ef
+	ret
+.asm_1707e5
+	ld hl, CurDay
+	ld a, $8c
+	sub c
+	add [hl]
+	cp $8
+	ret c
+.asm_1707ef
+	ld a, $8
+	ld [ScriptVar], a
+
+Function1707f4: ; 1707f4 (5c:47f4) BattleTowerAction $06
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$be46], a
+	ld [$aa8b], a
+	ld [$aa8c], a
+	call CloseSRAM
+	ret
+
+Function170807: ; 170807 (5c:4807) BattleTowerAction $16
+	call UpdateTime
+	ld a, $5
+	call GetSRAMBank
+	ld a, [CurDay]
+	ld [$b2f9], a
+	xor a
+	ld [$b2fa], a
+	call CloseSRAM
+	ret
+
+Function17081d: ; 17081d (5c:481d) BattleTowerAction $17
+	xor a
+	ld [ScriptVar], a
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2f9]
+	ld c, a
+	ld a, [$b2fa]
+	ld b, a
+	call CloseSRAM
+	cp $2
+	jr nc, .asm_170853
+	push bc
+	call UpdateTime
+	pop bc
+	ld a, [CurDay]
+	sub c
+	jr c, .asm_170849
+	cp $b
+	jr nc, .asm_170853
+	ld a, b
+	and a
+	jr nz, .asm_170853
+	ret
+
+.asm_170849
+	ld hl, CurDay
+	ld a, 140
+	sub c
+	add [hl]
+	cp $b
+	ret c
+.asm_170853
+	ld a, $1
+	ld [ScriptVar], a
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$b2f9], a
+	ld [$b2fa], a
+	call CloseSRAM
+	ret
+
+SaveBattleTowerLevelGroup: ; 170868 (5c:4868) BattleTowerAction $07
+	ld a, BANK(sBTChoiceOfLevelGroup)
+	call GetSRAMBank
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [wBTChoiceOfLvlGroup]
+	ld [sBTChoiceOfLevelGroup], a
+	pop af
+	ld [rSVBK], a
+	call CloseSRAM
+	ret
+
+LoadBattleTowerLevelGroup: ; 170881 (5c:4881) BattleTowerAction $08 ; Load level group choice
+	ld a, BANK(sBTChoiceOfLevelGroup)
+	call GetSRAMBank
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [sBTChoiceOfLevelGroup]
+	ld [wBTChoiceOfLvlGroup], a
+	pop af
+	ld [rSVBK], a
+	call CloseSRAM
+	ret
+
+BattleTower_CheckSaveFileExistsAndIsYours: ; 17089a BattleTowerAction $09
+	ld a, [wSaveFileExists]
+	and a
+	jr z, .nope
+	farcall CompareLoadedAndSavedPlayerID
+	jr z, .yes
+	xor a
+	jr .nope
+
+.yes
+	ld a, $1
+
+.nope
+	ld [ScriptVar], a
+	ret
+; 1708b1
+
+
+Function1708b1: ; 1708b1 (5c:48b1) BattleTowerAction $0a
+	xor a
+	ld [MusicFade], a
+	call MaxVolume
+	ret
+
+CheckMobileEventIndex: ; 1708b9 (5c:48b9) BattleTowerAction $0b something to do with GS Ball
+	ld a, BANK(sMobileEventIndex)
+	call GetSRAMBank
+	ld a, [sMobileEventIndex]
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function1708c8: ; 1708c8 (5c:48c8) BattleTowerAction $0c
+	call UpdateTime
+	ld a, $5
+	call GetSRAMBank
+	ld a, [CurDay]
+	ld [$aa8b], a
+	xor a
+	ld [$aa8c], a
+	ld a, [$aa5d]
+	cp $2
+	jr nc, .asm_1708ec
+	ld a, [CurDay]
+	ld [$aa48], a
+	ld a, $1
+	ld [$aa47], a
+.asm_1708ec
+	call CloseSRAM
+	ret
+
+Function1708f0: ; 1708f0 (5c:48f0) BattleTowerAction $0d
+	xor a
+	ld [ScriptVar], a
+	call UpdateTime
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa48]
+	ld c, a
+	ld a, [$aa47]
+	call CloseSRAM
+	and a
+	ret z
+	ld hl, CurDay
+	ld a, c
+	cp [hl]
+	jr nz, Function170923
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa5d]
+	call CloseSRAM
+	cp $5
+	ret c
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+
+Function170923: ; 170923
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$aa48], a
+	ld [$aa47], a
+	ld hl, $aa5d
+	ld bc, $0011
+	call ByteFill
+	call CloseSRAM
+	ret
+; 17093c
+
+
+BattleTowerAction_EggTicket: ; 17093c (5c:493c) BattleTowerAction $0e
+	xor a
+	ld [ScriptVar], a
+	ld a, EGG_TICKET
+	ld [CurItem], a
+	ld hl, NumItems
+	call CheckItem
+	ret nc
+	ld a, [PartyCount]
+	ld b, 0
+	ld c, a
+	ld hl, PartySpecies
+.loop
+	ld a, [hli]
+	cp EGG
+	jr nz, .not_egg
+	push hl
+	ld hl, PartyMonOT
+	ld de, NAME_LENGTH_JAPANESE
+	ld a, b
+	and a
+	jr z, .skip
+.loop2
+	add hl, de
+	dec a
+	jr nz, .loop2
+.skip
+	ld de, String_1709a4
+	ld a, NAME_LENGTH_JAPANESE
+.compare_loop
+	push af
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr nz, .different
+	pop af
+	dec a
+	jr nz, .compare_loop
+rept 4
+	dec hl
+endr
+	ld a, "@"
+	ld [hli], a
+	ld [hli], a
+	pop hl
+	ld a, EGG_TICKET
+	ld [CurItem], a
+	ld a, 1
+	ld [wItemQuantityChangeBuffer], a
+	ld a, -1
+	ld [CurItemQuantity], a
+	ld hl, NumItems
+	call TossItem
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.different
+	pop af
+	pop hl
+.not_egg
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 1709a4 (5c:49a4)
+
+String_1709a4: ; 1709a4
+	db "なぞナゾ@@"
+
+Function1709aa: ; 1709aa (5c:49aa) BattleTowerAction $0f
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(w3_d090)
+	ld [rSVBK], a
+	ld a, [w3_d090]
+	ld [ScriptVar], a
+	pop af
+	ld [rSVBK], a
+	ret
+
+Function1709bb: ; 1709bb (5c:49bb) BattleTowerAction $10
+	xor a
+	ld [ScriptVar], a
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$a800]
+	call CloseSRAM
+	cp 6
+	jr nc, .invalid
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_1709e7
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+
+.invalid
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$a800], a
+	call CloseSRAM
+	ret
+; 1709e7 (5c:49e7)
+
+Jumptable_1709e7: ; 1709e7
+	dw .NoAction
+	dw .NoAction
+	dw .DoAction1
+	dw .DoAction1
+	dw .Action4
+	dw .Action5
+; 1709f3
+
+.DoAction1: ; 1709f3
+	ld a, $5
+	call GetSRAMBank
+	ld a, $1
+	ld [$a800], a
+	call CloseSRAM
+
+.NoAction: ; 170a00
+	ret
+; 170a01
+
+.Action4: ; 170a01
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $b023
+	ld de, wMisc
+	ld bc, $0069
+	call CopyBytes
+	ld a, [$a825]
+	ld [wcd30], a
+	ld a, [$a826]
+	ld [wcd31], a
+	call CloseSRAM
+	farcall Function11b6b4
+	farcall Function17d0f3
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; 170a33
+
+.Action5: ; 170a33
+	ld a, $0
+	call GetSRAMBank
+	ld hl, wRTC
+	ld de, wMisc
+	ld bc, $0004
+	call CopyBytes
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $b08c
+	ld de, wMisc
+	ld c, $4
+.compare_loop
+	ld a, [de]
+	inc de
+	cp [hl]
+	jr nz, .different
+	inc hl
+	dec c
+	jr nz, .compare_loop
+	call CloseSRAM
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetMapSceneID
+	ld a, d
+	or e
+	jr z, .no_scene
+	ld a, [de]
+	and a
+	ret nz
+
+.no_scene
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.different
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$a800], a
+	call CloseSRAM
+	ld [ScriptVar], a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetMapSceneID
+	ld a, d
+	or e
+	jr z, .no_scene_2
+	xor a
+	ld [de], a
+
+.no_scene_2
+	ret
+; 170a9c
+
+Function170a9c: ; 170a9c (5c:4a9c) BattleTowerAction $11
+	ld c, $0
+	jr asm_170aa2
+
+Function170aa0: ; 170aa0 (5c:4aa0) BattleTowerAction $12
+	ld c, $1
+asm_170aa2: ; 170aa2 (5c:4aa2)
+	ld a, $5
+	call GetSRAMBank
+	ld a, c
+	ld [$aa8d], a
+	call CloseSRAM
+	ret
+
+Function170aaf: ; 170aaf (5c:4aaf) BattleTowerAction $13
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8d]
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function170abe: ; 170abe (5c:4abe) BattleTowerAction $14
+	call BattleTower_CheckSaveFileExistsAndIsYours
+	ld a, [ScriptVar]
+	and a
+	ret z
+
+	ld a, BANK(sBattleTowerSaveFileFlags)
+	call GetSRAMBank
+	ld a, [sBattleTowerSaveFileFlags]
+	and $1
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function170ad7: ; 170ad7 (5c:4ad7) BattleTowerAction $15
+	ld a, BANK(sBattleTowerSaveFileFlags)
+	call GetSRAMBank
+	ld a, [sBattleTowerSaveFileFlags]
+	or $1
+	ld [sBattleTowerSaveFileFlags], a
+	call CloseSRAM
+	ret
+
+BattleTowerAction_LevelCheck: ; 170ae8 (5c:4ae8) BattleTowerAction $18
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld c, 10
+	call SimpleDivide
+	ld a, b
+	ld [wcd4f], a
+	xor a
+	ld [ScriptVar], a
+	farcall BattleTower_LevelCheck ; level check
+	ret nc
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld [ScriptVar], a
+	ret
+
+BattleTowerAction_UbersCheck: ; 170b16 (5c:4b16) BattleTowerAction $19
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld c, 10
+	call SimpleDivide
+	ld a, b
+	ld [wcd4f], a
+	xor a
+	ld [ScriptVar], a
+	farcall BattleTower_UbersCheck
+	ret nc
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld [ScriptVar], a
+	ret
+
+Special_LoadOpponentTrainerAndPokemonWithOTSprite: ; 0x170b44
+	farcall Function_LoadOpponentTrainerAndPokemons
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, BT_OTTrainerClass
+	ld a, [hl]
+	dec a
+	ld c, a
+	ld b, $0
+	pop af
+	ld [rSVBK], a
+	ld hl, BTTrainerClassSprites
+	add hl, bc
+	ld a, [hl]
+	ld [wBTTempOTSprite], a
+
+; Load sprite of the opponent trainer
+; because s/he is chosen randomly and appears out of nowhere
+	ld a, [ScriptVar]
+	dec a
+	sla a
+	ld e, a
+	sla a
+	sla a
+	sla a
+	ld c, a
+	ld b, 0
+	ld d, 0
+	ld hl, MapObjects
+	add hl, bc
+	inc hl
+	ld a, [wBTTempOTSprite]
+	ld [hl], a
+	ld hl, UsedSprites
+	add hl, de
+	ld [hli], a
+	ld [hUsedSpriteIndex], a
+	ld a, [hl]
+	ld [hUsedSpriteTile], a
+	farcall GetUsedSprite
+	ret
+; 170b90
+
+INCLUDE "data/trainers/sprites.asm"
+
+DummySpecial_170bd2: ; 170bd2
+	ret
+; 170bd3
+
+Special_CheckForBattleTowerRules: ; 170bd3
+	farcall CheckForBattleTowerRules
+	jr c, .asm_170bde
+	xor a ; FALSE
+	jr .asm_170be0
+
+.asm_170bde
+	ld a, TRUE
+
+.asm_170be0
+	ld [ScriptVar], a
+	ret
+; 170be4
--- /dev/null
+++ b/engine/events/battle_tower/get_trainer_class.asm
@@ -1,0 +1,46 @@
+GetMobileOTTrainerClass: ; mobile function
+	ld h, b
+	ld l, c
+	call .GetMobileOTTrainerClass
+	ld c, a
+	ret
+
+.GetMobileOTTrainerClass: ; 4e930
+	ld a, [hli]
+	xor [hl]
+	ld c, a
+	jr z, .skip_male_trainers
+	srl c
+	srl c
+.male_trainer_loop
+	srl c
+	ld a, c
+	cp MaleTrainersEnd - MaleTrainers - 1
+	jr nc, .male_trainer_loop
+	inc c
+
+.skip_male_trainers
+	ld a, [de]
+	cp $1
+	ld hl, MaleTrainers
+	jr nz, .finished
+
+	ld hl, FemaleTrainers
+	ld a, c
+	and a
+	jr z, .finished
+
+.female_trainer_loop
+	srl c
+	ld a, c
+	cp FemaleTrainersEnd - FemaleTrainers - 1
+	jr nc, .female_trainer_loop
+	inc c
+
+.finished
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ret
+
+INCLUDE "data/trainers/gendered_trainers.asm"
--- /dev/null
+++ b/engine/events/battle_tower/load_trainer.asm
@@ -1,0 +1,214 @@
+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)
+	maskbits BATTLETOWER_NUM_UNIQUE_TRAINERS
+	cp BATTLETOWER_NUM_UNIQUE_TRAINERS
+else
+; Crystal 1.0 used the wrong constant here, so only the first 21
+; trainers in BattleTowerTrainers can be sampled.
+	maskbits BATTLETOWER_NUM_UNIQUE_PKMN
+	cp BATTLETOWER_NUM_UNIQUE_PKMN
+endc
+	jr nc, .resample
+	ld b, a
+
+	ld a, BANK(sBTTrainers)
+	call GetSRAMBank
+
+	ld c, BATTLETOWER_STREAK_LENGTH
+	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_PARTY_LENGTH
+.loop
+	push bc
+	ld a, BANK(sBTPkmnPrevTrainer1)
+	call GetSRAMBank
+
+.FindARandomBattleTowerPkmn:
+	; From Which LevelGroup are the Pkmn loaded
+	; a = 1..10
+	ld a, [wBTChoiceOfLvlGroup]
+	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
+	maskbits BATTLETOWER_NUM_UNIQUE_PKMN
+	cp BATTLETOWER_NUM_UNIQUE_PKMN
+	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 + MON_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 + MON_NAME_LENGTH
+	call CopyBytes
+
+	ld a, [wNamedObjectIndexBuffer]
+	push af
+	push de
+	ld hl, - (PARTYMON_STRUCT_LENGTH + MON_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, MON_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/classes.asm"
+
+INCLUDE "data/battle_tower/parties.asm"
--- /dev/null
+++ b/engine/events/battle_tower/rules.asm
@@ -1,0 +1,342 @@
+CheckForMobileBattleRules: ; 8b1e1
+	ld de, .PointerTables
+	call BattleTower_ExecuteJumptable
+	ret z
+	call BattleTower_PleaseReturnWhenReady
+	scf
+	ret
+; 8b1ed
+
+.PointerTables: ; 8b1ed
+	db 2
+	dw .Functions
+	dw .TextPointers
+
+.Functions: ; 8b1f2
+	dw BattleTower_CheckPartyLengthIs3
+	dw BattleTower_CheckPartyHasThreeMonsThatAreNotEggs
+; 8b1f6
+
+.TextPointers: ; 8b1f6
+	dw .ExcuseMeText
+	dw JumpText_NeedAtLeastThreeMon
+	dw JumpText_EggDoesNotQualify
+; 8b1fc
+
+.ExcuseMeText: ; 0x8b1fc
+	; Excuse me!
+	text_jump UnknownText_0x1c5937
+	db "@"
+; 0x8b201
+
+CheckForBattleTowerRules: ; 8b201
+	ld hl, StringBuffer2
+	ld [hl], "3"
+	inc hl
+	ld [hl], "@"
+	ld de, .PointerTables
+	call BattleTower_ExecuteJumptable
+	ret z
+	call BattleTower_PleaseReturnWhenReady
+	scf
+	ret
+; 8b215
+
+.PointerTables: ; 8b215
+	db 4
+	dw .Functions
+	dw .TextPointers
+
+.Functions: ; 8b21a
+	dw Function_PartyCountEq3
+	dw Function_PartySpeciesAreUnique
+	dw Function_PartyItemsAreUnique
+	dw Function_HasPartyAnEgg
+; 8b222
+
+.TextPointers: ; 8b222
+	dw JumpText_ExcuseMeYoureNotReady
+	dw JumpText_OnlyThreePkmnMayBeEntered
+	dw JumpText_ThePkmnMustAllBeDifferentKinds
+	dw JumpText_ThePkmnMustNotHoldTheSameItems
+	dw JumpText_YouCantTakeAnEgg
+; 8b22c
+
+JumpText_ExcuseMeYoureNotReady: ; 0x8b22c
+	; Excuse me. You're not ready.
+	text_jump Text_ExcuseMeYoureNotReady
+	db "@"
+; 0x8b231
+
+BattleTower_PleaseReturnWhenReady: ; 8b231
+	ld hl, .PleaseReturnWhenReady
+	call PrintText
+	ret
+; 8b238
+
+.PleaseReturnWhenReady: ; 0x8b238
+	; Please return when you're ready.
+	text_jump UnknownText_0x1c5962
+	db "@"
+; 0x8b23d
+
+JumpText_NeedAtLeastThreeMon: ; 0x8b23d
+	; You need at least three #MON.
+	text_jump UnknownText_0x1c5983
+	db "@"
+; 0x8b242
+
+JumpText_EggDoesNotQualify: ; 0x8b242
+	; Sorry, an EGG doesn't qualify.
+	text_jump UnknownText_0x1c59a3
+	db "@"
+; 0x8b247
+
+JumpText_OnlyThreePkmnMayBeEntered: ; 0x8b247
+	; Only three #MON may be entered.
+	text_jump Text_OnlyThreePkmnMayBeEntered
+	db "@"
+; 0x8b24c
+
+JumpText_ThePkmnMustAllBeDifferentKinds: ; 0x8b24c
+	; The @  #MON must all be different kinds.
+	text_jump Text_ThePkmnMustAllBeDifferentKinds
+	db "@"
+; 0x8b251
+
+JumpText_ThePkmnMustNotHoldTheSameItems: ; 0x8b251
+	; The @  #MON must not hold the same items.
+	text_jump Text_ThePkmnMustNotHoldTheSameItems
+	db "@"
+; 0x8b256
+
+JumpText_YouCantTakeAnEgg: ; 0x8b256
+	; You can't take an EGG!
+	text_jump Text_YouCantTakeAnEgg
+	db "@"
+; 0x8b25b
+
+BattleTower_ExecuteJumptable: ; 8b25b
+	ld bc, 0
+.loop
+	call .DoJumptableFunction
+	call c, .PrintFailureText
+	call .Next_CheckReachedEnd
+	jr nz, .loop
+	ld a, b
+	and a
+	ret
+; 8b26c
+
+.DoJumptableFunction: ; 8b26c
+	push de
+	push bc
+	call .GetFunctionPointer
+	ld a, c
+	rst JumpTable
+	pop bc
+	pop de
+	ret
+; 8b276
+
+.Next_CheckReachedEnd: ; 8b276
+	inc c
+	ld a, [de]
+	cp c
+	ret
+; 8b27a
+
+.GetFunctionPointer: ; 8b27a
+	inc de
+	ld a, [de]
+	ld l, a
+	inc de
+	ld a, [de]
+	ld h, a
+	ret
+; 8b281
+
+.GetTextPointers: ; 8b281
+	inc de
+	inc de
+	inc de
+	ld a, [de]
+	ld l, a
+	inc de
+	ld a, [de]
+	ld h, a
+	ret
+; 8b28a
+
+.LoadTextPointer: ; 8b28a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 8b28e
+
+.PrintFailureText: ; 8b28e
+	push de
+	push bc
+	ld a, b
+	and a
+	call z, .PrintFirstText
+	pop bc
+	call .PrintNthText
+	ld b, $1
+	pop de
+	ret
+; 8b29d
+
+.PrintFirstText: ; 8b29d
+	push de
+	call .GetTextPointers
+	call .LoadTextPointer
+	call PrintText
+	pop de
+	ret
+; 8b2a9
+
+.PrintNthText: ; 8b2a9
+	push bc
+	call .GetTextPointers
+	inc hl
+	inc hl
+	ld b, $0
+	add hl, bc
+	add hl, bc
+	call .LoadTextPointer
+	call PrintText
+	pop bc
+	ret
+; 8b2bb
+
+BattleTower_CheckPartyLengthIs3: ; 8b2bb
+	ld a, [PartyCount]
+	cp BATTLETOWER_PARTY_LENGTH
+	ret
+; 8b2c1
+
+BattleTower_CheckPartyHasThreeMonsThatAreNotEggs: ; 8b2c1
+	ld hl, PartyCount
+	ld a, [hli]
+	ld b, $0
+	ld c, a
+.loop
+	ld a, [hli]
+	cp EGG
+	jr z, .egg
+	inc b
+
+.egg
+	dec c
+	jr nz, .loop
+	ld a, [PartyCount]
+	cp b
+	ret z
+	ld a, b
+	cp BATTLETOWER_PARTY_LENGTH
+	ret
+; 8b2da
+
+Function_PartyCountEq3: ; 8b2da
+	ld a, [PartyCount]
+	cp BATTLETOWER_PARTY_LENGTH
+	ret z
+	scf
+	ret
+; 8b2e2
+
+Function_PartySpeciesAreUnique: ; 8b2e2
+	ld hl, PartyMon1Species
+	call VerifyUniqueness
+	ret
+; 8b2e9
+
+VerifyUniqueness: ; 8b2e9
+	ld de, PartyCount
+	ld a, [de]
+	inc de
+	dec a
+	jr z, .done
+	ld b, a
+.loop
+	push hl
+	push de
+	ld c, b
+	call .isegg
+	jr z, .next
+	ld a, [hl]
+	and a
+	jr z, .next
+.loop2
+	call .nextmon
+	call .isegg
+	jr z, .next2
+	cp [hl]
+	jr z, .gotcha
+
+.next2
+	dec c
+	jr nz, .loop2
+
+.next
+	pop de
+	pop hl
+	call .nextmon
+	dec b
+	jr nz, .loop
+
+.done
+	and a
+	ret
+
+.gotcha
+	pop de
+	pop hl
+	scf
+	ret
+; 8b31a
+
+.nextmon ; 8b31a
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	inc de
+	pop bc
+	ret
+; 8b322
+
+.isegg ; 8b322
+	push bc
+	ld b, a
+	ld a, [de]
+	cp EGG
+	ld a, b
+	pop bc
+	ret
+; 8b32a
+
+Function_PartyItemsAreUnique: ; 8b32a
+	ld hl, PartyMon1Item
+	call VerifyUniqueness
+	ret
+; 8b331
+
+Function_HasPartyAnEgg: ; 8b331
+	ld hl, PartyCount
+	ld a, [hli]
+	ld c, a
+.loop
+	ld a, [hli]
+	cp EGG
+	jr z, .found
+	dec c
+	jr nz, .loop
+	and a
+	ret
+
+.found
+	scf
+	ret
+; 8b342
--- /dev/null
+++ b/engine/events/battle_tower/trainer_text.asm
@@ -1,0 +1,718 @@
+BattleTowerText:: ; 11c000
+; Print text c for trainer [BT_OTTrainerClass]
+; 1: Intro text
+; 2: Player lost
+; 3: Player won
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(BT_OTTrainerClass)
+	ld [rSVBK], a
+if DEF(_CRYSTAL11)
+	ld hl, BT_OTTrainerClass
+else
+; BUG ALERT
+; Instead of loading the Trainer Class, this routine
+; loads the 6th character in the Trainer's name, then
+; uses it to get the gender of the trainer.
+; As a consequence, the enemy trainer's dialog will
+; always be sampled from the female array.
+	ld hl, BT_OTName + NAME_LENGTH_JAPANESE - 1
+endc
+	ld a, [hl]
+	dec a
+	ld e, a
+	ld d, 0
+	ld hl, BTTrainerClassGenders
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .female
+	; generate a random number between 0 and 24
+	ld a, [hRandomAdd]
+	and $1f
+	cp 25
+	jr c, .okay0
+	sub 25
+
+.okay0
+	ld hl, BTMaleTrainerTexts
+	jr .proceed
+
+.female
+	; generate a random number between 0 and 14
+	ld a, [hRandomAdd]
+	and $f
+	cp 15
+	jr c, .okay1
+	sub 15
+
+.okay1
+	ld hl, BTFemaleTrainerTexts
+
+.proceed
+	ld b, 0
+	dec c
+	jr nz, .restore
+	ld [BT_TrainerTextIndex], a
+	jr .okay2
+
+.restore
+	ld a, [BT_TrainerTextIndex]
+
+.okay2
+	push af
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld h, a
+	ld l, c
+	pop af
+	ld c, a
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld l, c
+	ld h, a
+	bccoord 1, 14
+	pop af
+	ld [rSVBK], a
+	call PlaceHLTextAtBC
+	ret
+; 11c05d
+
+INCLUDE "mobile/fixed_words.asm"
+
+INCLUDE "data/trainers/genders.asm"
+
+
+BTMaleTrainerTexts: ; 11f332
+	dw .Greetings
+	dw .PlayerLost
+	dw .PlayerWon
+
+.Greetings: ; 11f338
+	dw BTGreetingM1
+	dw BTGreetingM2
+	dw BTGreetingM3
+	dw BTGreetingM4
+	dw BTGreetingM5
+	dw BTGreetingM6
+	dw BTGreetingM7
+	dw BTGreetingM8
+	dw BTGreetingM9
+	dw BTGreetingM10
+	dw BTGreetingM11
+	dw BTGreetingM12
+	dw BTGreetingM13
+	dw BTGreetingM14
+	dw BTGreetingM15
+	dw BTGreetingM16
+	dw BTGreetingM17
+	dw BTGreetingM18
+	dw BTGreetingM19
+	dw BTGreetingM20
+	dw BTGreetingM21
+	dw BTGreetingM22
+	dw BTGreetingM23
+	dw BTGreetingM24
+	dw BTGreetingM25
+
+.PlayerLost: ; 11f36a
+	dw BTLossM1
+	dw BTLossM2
+	dw BTLossM3
+	dw BTLossM4
+	dw BTLossM5
+	dw BTLossM6
+	dw BTLossM7
+	dw BTLossM8
+	dw BTLossM9
+	dw BTLossM10
+	dw BTLossM11
+	dw BTLossM12
+	dw BTLossM13
+	dw BTLossM14
+	dw BTLossM15
+	dw BTLossM16
+	dw BTLossM17
+	dw BTLossM18
+	dw BTLossM19
+	dw BTLossM20
+	dw BTLossM21
+	dw BTLossM22
+	dw BTLossM23
+	dw BTLossM24
+	dw BTLossM25
+
+.PlayerWon: ; 11f39c
+	dw BTWinM1
+	dw BTWinM2
+	dw BTWinM3
+	dw BTWinM4
+	dw BTWinM5
+	dw BTWinM6
+	dw BTWinM7
+	dw BTWinM8
+	dw BTWinM9
+	dw BTWinM10
+	dw BTWinM11
+	dw BTWinM12
+	dw BTWinM13
+	dw BTWinM14
+	dw BTWinM15
+	dw BTWinM16
+	dw BTWinM17
+	dw BTWinM18
+	dw BTWinM19
+	dw BTWinM20
+	dw BTWinM21
+	dw BTWinM22
+	dw BTWinM23
+	dw BTWinM24
+	dw BTWinM25
+
+
+BTFemaleTrainerTexts:
+	dw .Greetings
+	dw .PlayerLost
+	dw .PlayerWon
+
+.Greetings: ; 11f3d4
+	dw BTGreetingF1
+	dw BTGreetingF2
+	dw BTGreetingF3
+	dw BTGreetingF4
+	dw BTGreetingF5
+	dw BTGreetingF6
+	dw BTGreetingF7
+	dw BTGreetingF8
+	dw BTGreetingF9
+	dw BTGreetingF10
+	dw BTGreetingF11
+	dw BTGreetingF12
+	dw BTGreetingF13
+	dw BTGreetingF14
+	dw BTGreetingF15
+
+.PlayerLost: ; 11f3f2
+	dw BTLossF1
+	dw BTLossF2
+	dw BTLossF3
+	dw BTLossF4
+	dw BTLossF5
+	dw BTLossF6
+	dw BTLossF7
+	dw BTLossF8
+	dw BTLossF9
+	dw BTLossF10
+	dw BTLossF11
+	dw BTLossF12
+	dw BTLossF13
+	dw BTLossF14
+	dw BTLossF15
+
+.PlayerWon: ; 11f410
+	dw BTWinF1
+	dw BTWinF2
+	dw BTWinF3
+	dw BTWinF4
+	dw BTWinF5
+	dw BTWinF6
+	dw BTWinF7
+	dw BTWinF8
+	dw BTWinF9
+	dw BTWinF10
+	dw BTWinF11
+	dw BTWinF12
+	dw BTWinF13
+	dw BTWinF14
+	dw BTWinF15
+
+
+BTGreetingM1: ; 0x11f42e
+	text_jump BattleTowerText_0x1ec000
+	db "@"
+
+BTLossM1: ; 0x11f433
+	text_jump BattleTowerText_0x1ec03b
+	db "@"
+
+BTWinM1: ; 0x11f438
+	text_jump UnknownText_0x1ec060
+	db "@"
+
+BTGreetingM2: ; 0x11f43d
+	text_jump BattleTowerText_0x1ec080
+	db "@"
+
+BTLossM2: ; 0x11f442
+	text_jump UnknownText_0x1ec0a3
+	db "@"
+
+BTWinM2: ; 0x11f447
+	text_jump UnknownText_0x1ec0c4
+	db "@"
+
+BTGreetingM3: ; 0x11f44c
+	text_jump UnknownText_0x1ec0e1
+	db "@"
+
+BTLossM3: ; 0x11f451
+	text_jump UnknownText_0x1ec108
+	db "@"
+
+BTWinM3: ; 0x11f456
+	text_jump UnknownText_0x1ec12a
+	db "@"
+
+BTGreetingM4: ; 0x11f45b
+	text_jump UnknownText_0x1ec14d
+	db "@"
+
+BTLossM4: ; 0x11f460
+	text_jump UnknownText_0x1ec16f
+	db "@"
+
+BTWinM4: ; 0x11f465
+	text_jump UnknownText_0x1ec190
+	db "@"
+
+BTGreetingM5: ; 0x11f46a
+	text_jump UnknownText_0x1ec1ae
+	db "@"
+
+BTLossM5: ; 0x11f46f
+	text_jump UnknownText_0x1ec1d0
+	db "@"
+
+BTWinM5: ; 0x11f474
+	text_jump UnknownText_0x1ec1f4
+	db "@"
+
+BTGreetingM6: ; 0x11f479
+	text_jump UnknownText_0x1ec216
+	db "@"
+
+BTLossM6: ; 0x11f47e
+	text_jump UnknownText_0x1ec238
+	db "@"
+
+BTWinM6: ; 0x11f483
+	text_jump UnknownText_0x1ec259
+	db "@"
+
+BTGreetingM7: ; 0x11f488
+	text_jump UnknownText_0x1ec27b
+	db "@"
+
+BTLossM7: ; 0x11f48d
+	text_jump UnknownText_0x1ec2a0
+	db "@"
+
+BTWinM7: ; 0x11f492
+	text_jump UnknownText_0x1ec2c0
+	db "@"
+
+BTGreetingM8: ; 0x11f497
+	text_jump UnknownText_0x1ec2d9
+	db "@"
+
+BTLossM8: ; 0x11f49c
+	text_jump UnknownText_0x1ec2fe
+	db "@"
+
+BTWinM8: ; 0x11f4a1
+	text_jump UnknownText_0x1ec320
+	db "@"
+
+BTGreetingM9: ; 0x11f4a6
+	text_jump UnknownText_0x1ec33f
+	db "@"
+
+BTLossM9: ; 0x11f4ab
+	text_jump UnknownText_0x1ec36c
+	db "@"
+
+BTWinM9: ; 0x11f4b0
+	text_jump UnknownText_0x1ec389
+	db "@"
+
+BTGreetingM10: ; 0x11f4b5
+	text_jump UnknownText_0x1ec3ad
+	db "@"
+
+BTLossM10: ; 0x11f4ba
+	text_jump UnknownText_0x1ec3c5
+	db "@"
+
+BTWinM10: ; 0x11f4bf
+	text_jump UnknownText_0x1ec3e5
+	db "@"
+
+BTGreetingM11: ; 0x11f4c4
+	text_jump UnknownText_0x1ec402
+	db "@"
+
+BTLossM11: ; 0x11f4c9
+	text_jump UnknownText_0x1ec411
+	db "@"
+
+BTWinM11: ; 0x11f4ce
+	text_jump UnknownText_0x1ec41f
+	db "@"
+
+BTGreetingM12: ; 0x11f4d3
+	text_jump UnknownText_0x1ec42e
+	db "@"
+
+BTLossM12: ; 0x11f4d8
+	text_jump UnknownText_0x1ec461
+	db "@"
+
+BTWinM12: ; 0x11f4dd
+	text_jump UnknownText_0x1ec4a0
+	db "@"
+
+BTGreetingM13: ; 0x11f4e2
+	text_jump UnknownText_0x1ec4d6
+	db "@"
+
+BTLossM13: ; 0x11f4e7
+	text_jump UnknownText_0x1ec4f5
+	db "@"
+
+BTWinM13: ; 0x11f4ec
+	text_jump UnknownText_0x1ec512
+	db "@"
+
+BTGreetingM14: ; 0x11f4f1
+	text_jump UnknownText_0x1ec532
+	db "@"
+
+BTLossM14: ; 0x11f4f6
+	text_jump UnknownText_0x1ec54b
+	db "@"
+
+BTWinM14: ; 0x11f4fb
+	text_jump UnknownText_0x1ec565
+	db "@"
+
+BTGreetingM15: ; 0x11f500
+	text_jump UnknownText_0x1ec580
+	db "@"
+
+BTLossM15: ; 0x11f505
+	text_jump UnknownText_0x1ec59d
+	db "@"
+
+BTWinM15: ; 0x11f50a
+	text_jump UnknownText_0x1ec5b5
+	db "@"
+
+BTGreetingM16: ; 0x11f50f
+	text_jump UnknownText_0x1ec5d3
+	db "@"
+
+BTLossM16: ; 0x11f514
+	text_jump UnknownText_0x1ec5ee
+	db "@"
+
+BTWinM16: ; 0x11f519
+	text_jump UnknownText_0x1ec60d
+	db "@"
+
+BTGreetingM17: ; 0x11f51e
+	text_jump UnknownText_0x1ec631
+	db "@"
+
+BTLossM17: ; 0x11f523
+	text_jump UnknownText_0x1ec651
+	db "@"
+
+BTWinM17: ; 0x11f528
+	text_jump UnknownText_0x1ec68f
+	db "@"
+
+BTGreetingM18: ; 0x11f52d
+	text_jump UnknownText_0x1ec6b1
+	db "@"
+
+BTLossM18: ; 0x11f532
+	text_jump UnknownText_0x1ec6d0
+	db "@"
+
+BTWinM18: ; 0x11f537
+	text_jump UnknownText_0x1ec708
+	db "@"
+
+BTGreetingM19: ; 0x11f53c
+	text_jump UnknownText_0x1ec720
+	db "@"
+
+BTLossM19: ; 0x11f541
+	text_jump UnknownText_0x1ec73e
+	db "@"
+
+BTWinM19: ; 0x11f546
+	text_jump UnknownText_0x1ec75b
+	db "@"
+
+BTGreetingM20: ; 0x11f54b
+	text_jump UnknownText_0x1ec77f
+	db "@"
+
+BTLossM20: ; 0x11f550
+	text_jump UnknownText_0x1ec798
+	db "@"
+
+BTWinM20: ; 0x11f555
+	text_jump UnknownText_0x1ec7bb
+	db "@"
+
+BTGreetingM21: ; 0x11f55a
+	text_jump UnknownText_0x1ec7d8
+	db "@"
+
+BTLossM21: ; 0x11f55f
+	text_jump UnknownText_0x1ec818
+	db "@"
+
+BTWinM21: ; 0x11f564
+	text_jump UnknownText_0x1ec837
+	db "@"
+
+BTGreetingM22: ; 0x11f569
+	text_jump UnknownText_0x1ec858
+	db "@"
+
+BTLossM22: ; 0x11f56e
+	text_jump UnknownText_0x1ec876
+	db "@"
+
+BTWinM22: ; 0x11f573
+	text_jump UnknownText_0x1ec898
+	db "@"
+
+BTGreetingM23: ; 0x11f578
+	text_jump UnknownText_0x1ec8b1
+	db "@"
+
+BTLossM23: ; 0x11f57d
+	text_jump UnknownText_0x1ec8d5
+	db "@"
+
+BTWinM23: ; 0x11f582
+	text_jump UnknownText_0x1ec8f0
+	db "@"
+
+BTGreetingM24: ; 0x11f587
+	text_jump UnknownText_0x1ec911
+	db "@"
+
+BTLossM24: ; 0x11f58c
+	text_jump UnknownText_0x1ec928
+	db "@"
+
+BTWinM24: ; 0x11f591
+	text_jump UnknownText_0x1ec949
+	db "@"
+
+BTGreetingM25: ; 0x11f596
+	text_jump UnknownText_0x1ec969
+	db "@"
+
+BTLossM25: ; 0x11f59b
+	text_jump UnknownText_0x1ec986
+	db "@"
+
+BTWinM25: ; 0x11f5a0
+	text_jump UnknownText_0x1ec99b
+	db "@"
+
+
+
+
+BTGreetingF1: ; 0x11f5a5
+	text_jump UnknownText_0x1ec9bd
+	db "@"
+
+BTLossF1: ; 0x11f5aa
+	text_jump UnknownText_0x1ec9d9
+	db "@"
+
+BTWinF1: ; 0x11f5af
+	text_jump UnknownText_0x1ec9f7
+	db "@"
+
+BTGreetingF2: ; 0x11f5b4
+	text_jump UnknownText_0x1eca0a
+	db "@"
+
+BTLossF2: ; 0x11f5b9
+	text_jump UnknownText_0x1eca2a
+	db "@"
+
+BTWinF2: ; 0x11f5be
+	text_jump UnknownText_0x1eca47
+	db "@"
+
+BTGreetingF3: ; 0x11f5c3
+	text_jump UnknownText_0x1eca64
+	db "@"
+
+BTLossF3: ; 0x11f5c8
+	text_jump UnknownText_0x1eca82
+	db "@"
+
+BTWinF3: ; 0x11f5cd
+	text_jump UnknownText_0x1eca9d
+	db "@"
+
+BTGreetingF4: ; 0x11f5d2
+	text_jump UnknownText_0x1ecabf
+	db "@"
+
+BTLossF4: ; 0x11f5d7
+	text_jump UnknownText_0x1ecade
+	db "@"
+
+BTWinF4: ; 0x11f5dc
+	text_jump UnknownText_0x1ecafa
+	db "@"
+
+BTGreetingF5: ; 0x11f5e1
+	text_jump UnknownText_0x1ecb19
+	db "@"
+
+BTLossF5: ; 0x11f5e6
+	text_jump UnknownText_0x1ecb37
+	db "@"
+
+BTWinF5: ; 0x11f5eb
+	text_jump UnknownText_0x1ecb55
+	db "@"
+
+BTGreetingF6: ; 0x11f5f0
+	text_jump UnknownText_0x1ecb70
+	db "@"
+
+BTLossF6: ; 0x11f5f5
+	text_jump UnknownText_0x1ecb92
+	db "@"
+
+BTWinF6: ; 0x11f5fa
+	text_jump UnknownText_0x1ecbb6
+	db "@"
+
+BTGreetingF7: ; 0x11f5ff
+	text_jump UnknownText_0x1ecbd9
+	db "@"
+
+BTLossF7: ; 0x11f604
+	text_jump UnknownText_0x1ecbf3
+	db "@"
+
+BTWinF7: ; 0x11f609
+	text_jump UnknownText_0x1ecc15
+	db "@"
+
+BTGreetingF8: ; 0x11f60e
+	text_jump UnknownText_0x1ecc39
+	db "@"
+
+BTLossF8: ; 0x11f613
+	text_jump UnknownText_0x1ecc55
+	db "@"
+
+BTWinF8: ; 0x11f618
+	text_jump UnknownText_0x1ecc75
+	db "@"
+
+BTGreetingF9: ; 0x11f61d
+	text_jump UnknownText_0x1ecc92
+	db "@"
+
+BTLossF9: ; 0x11f622
+	text_jump UnknownText_0x1ecca7
+	db "@"
+
+BTWinF9: ; 0x11f627
+	text_jump UnknownText_0x1eccc1
+	db "@"
+
+BTGreetingF10: ; 0x11f62c
+	text_jump UnknownText_0x1eccd7
+	db "@"
+
+BTLossF10: ; 0x11f631
+	text_jump UnknownText_0x1eccef
+	db "@"
+
+BTWinF10: ; 0x11f636
+	text_jump UnknownText_0x1ecd0e
+	db "@"
+
+BTGreetingF11: ; 0x11f63b
+	text_jump UnknownText_0x1ecd2b
+	db "@"
+
+BTLossF11: ; 0x11f640
+	text_jump UnknownText_0x1ecd4d
+	db "@"
+
+BTWinF11: ; 0x11f645
+	text_jump UnknownText_0x1ecd6b
+	db "@"
+
+BTGreetingF12: ; 0x11f64a
+	text_jump UnknownText_0x1ecd8d
+	db "@"
+
+BTLossF12: ; 0x11f64f
+	text_jump UnknownText_0x1ecdaf
+	db "@"
+
+BTWinF12: ; 0x11f654
+	text_jump UnknownText_0x1ecdcf
+	db "@"
+
+BTGreetingF13: ; 0x11f659
+	text_jump UnknownText_0x1ecded
+	db "@"
+
+BTLossF13: ; 0x11f65e
+	text_jump UnknownText_0x1ece0d
+	db "@"
+
+BTWinF13: ; 0x11f663
+	text_jump UnknownText_0x1ece2a
+	db "@"
+
+BTGreetingF14: ; 0x11f668
+	text_jump UnknownText_0x1ece4b
+	db "@"
+
+BTLossF14: ; 0x11f66d
+	text_jump UnknownText_0x1ece70
+	db "@"
+
+BTWinF14: ; 0x11f672
+	text_jump UnknownText_0x1ece8a
+	db "@"
+
+BTGreetingF15: ; 0x11f677
+	text_jump UnknownText_0x1ecea8
+	db "@"
+
+BTLossF15: ; 0x11f67c
+	text_jump UnknownText_0x1ecec9
+	db "@"
+
+BTWinF15: ; 0x11f681
+	text_jump UnknownText_0x1ecee8
+	db "@"
--- a/engine/events/battle_tower_rules.asm
+++ /dev/null
@@ -1,342 +1,0 @@
-CheckForMobileBattleRules: ; 8b1e1
-	ld de, .PointerTables
-	call BattleTower_ExecuteJumptable
-	ret z
-	call BattleTower_PleaseReturnWhenReady
-	scf
-	ret
-; 8b1ed
-
-.PointerTables: ; 8b1ed
-	db 2
-	dw .Functions
-	dw .TextPointers
-
-.Functions: ; 8b1f2
-	dw BattleTower_CheckPartyLengthIs3
-	dw BattleTower_CheckPartyHasThreeMonsThatAreNotEggs
-; 8b1f6
-
-.TextPointers: ; 8b1f6
-	dw .ExcuseMeText
-	dw JumpText_NeedAtLeastThreeMon
-	dw JumpText_EggDoesNotQualify
-; 8b1fc
-
-.ExcuseMeText: ; 0x8b1fc
-	; Excuse me!
-	text_jump UnknownText_0x1c5937
-	db "@"
-; 0x8b201
-
-CheckForBattleTowerRules: ; 8b201
-	ld hl, StringBuffer2
-	ld [hl], "3"
-	inc hl
-	ld [hl], "@"
-	ld de, .PointerTables
-	call BattleTower_ExecuteJumptable
-	ret z
-	call BattleTower_PleaseReturnWhenReady
-	scf
-	ret
-; 8b215
-
-.PointerTables: ; 8b215
-	db 4
-	dw .Functions
-	dw .TextPointers
-
-.Functions: ; 8b21a
-	dw Function_PartyCountEq3
-	dw Function_PartySpeciesAreUnique
-	dw Function_PartyItemsAreUnique
-	dw Function_HasPartyAnEgg
-; 8b222
-
-.TextPointers: ; 8b222
-	dw JumpText_ExcuseMeYoureNotReady
-	dw JumpText_OnlyThreePkmnMayBeEntered
-	dw JumpText_ThePkmnMustAllBeDifferentKinds
-	dw JumpText_ThePkmnMustNotHoldTheSameItems
-	dw JumpText_YouCantTakeAnEgg
-; 8b22c
-
-JumpText_ExcuseMeYoureNotReady: ; 0x8b22c
-	; Excuse me. You're not ready.
-	text_jump Text_ExcuseMeYoureNotReady
-	db "@"
-; 0x8b231
-
-BattleTower_PleaseReturnWhenReady: ; 8b231
-	ld hl, .PleaseReturnWhenReady
-	call PrintText
-	ret
-; 8b238
-
-.PleaseReturnWhenReady: ; 0x8b238
-	; Please return when you're ready.
-	text_jump UnknownText_0x1c5962
-	db "@"
-; 0x8b23d
-
-JumpText_NeedAtLeastThreeMon: ; 0x8b23d
-	; You need at least three #MON.
-	text_jump UnknownText_0x1c5983
-	db "@"
-; 0x8b242
-
-JumpText_EggDoesNotQualify: ; 0x8b242
-	; Sorry, an EGG doesn't qualify.
-	text_jump UnknownText_0x1c59a3
-	db "@"
-; 0x8b247
-
-JumpText_OnlyThreePkmnMayBeEntered: ; 0x8b247
-	; Only three #MON may be entered.
-	text_jump Text_OnlyThreePkmnMayBeEntered
-	db "@"
-; 0x8b24c
-
-JumpText_ThePkmnMustAllBeDifferentKinds: ; 0x8b24c
-	; The @  #MON must all be different kinds.
-	text_jump Text_ThePkmnMustAllBeDifferentKinds
-	db "@"
-; 0x8b251
-
-JumpText_ThePkmnMustNotHoldTheSameItems: ; 0x8b251
-	; The @  #MON must not hold the same items.
-	text_jump Text_ThePkmnMustNotHoldTheSameItems
-	db "@"
-; 0x8b256
-
-JumpText_YouCantTakeAnEgg: ; 0x8b256
-	; You can't take an EGG!
-	text_jump Text_YouCantTakeAnEgg
-	db "@"
-; 0x8b25b
-
-BattleTower_ExecuteJumptable: ; 8b25b
-	ld bc, 0
-.loop
-	call .DoJumptableFunction
-	call c, .PrintFailureText
-	call .Next_CheckReachedEnd
-	jr nz, .loop
-	ld a, b
-	and a
-	ret
-; 8b26c
-
-.DoJumptableFunction: ; 8b26c
-	push de
-	push bc
-	call .GetFunctionPointer
-	ld a, c
-	rst JumpTable
-	pop bc
-	pop de
-	ret
-; 8b276
-
-.Next_CheckReachedEnd: ; 8b276
-	inc c
-	ld a, [de]
-	cp c
-	ret
-; 8b27a
-
-.GetFunctionPointer: ; 8b27a
-	inc de
-	ld a, [de]
-	ld l, a
-	inc de
-	ld a, [de]
-	ld h, a
-	ret
-; 8b281
-
-.GetTextPointers: ; 8b281
-	inc de
-	inc de
-	inc de
-	ld a, [de]
-	ld l, a
-	inc de
-	ld a, [de]
-	ld h, a
-	ret
-; 8b28a
-
-.LoadTextPointer: ; 8b28a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-; 8b28e
-
-.PrintFailureText: ; 8b28e
-	push de
-	push bc
-	ld a, b
-	and a
-	call z, .PrintFirstText
-	pop bc
-	call .PrintNthText
-	ld b, $1
-	pop de
-	ret
-; 8b29d
-
-.PrintFirstText: ; 8b29d
-	push de
-	call .GetTextPointers
-	call .LoadTextPointer
-	call PrintText
-	pop de
-	ret
-; 8b2a9
-
-.PrintNthText: ; 8b2a9
-	push bc
-	call .GetTextPointers
-	inc hl
-	inc hl
-	ld b, $0
-	add hl, bc
-	add hl, bc
-	call .LoadTextPointer
-	call PrintText
-	pop bc
-	ret
-; 8b2bb
-
-BattleTower_CheckPartyLengthIs3: ; 8b2bb
-	ld a, [PartyCount]
-	cp 3
-	ret
-; 8b2c1
-
-BattleTower_CheckPartyHasThreeMonsThatAreNotEggs: ; 8b2c1
-	ld hl, PartyCount
-	ld a, [hli]
-	ld b, $0
-	ld c, a
-.loop
-	ld a, [hli]
-	cp EGG
-	jr z, .egg
-	inc b
-
-.egg
-	dec c
-	jr nz, .loop
-	ld a, [PartyCount]
-	cp b
-	ret z
-	ld a, b
-	cp 3
-	ret
-; 8b2da
-
-Function_PartyCountEq3: ; 8b2da
-	ld a, [PartyCount]
-	cp 3
-	ret z
-	scf
-	ret
-; 8b2e2
-
-Function_PartySpeciesAreUnique: ; 8b2e2
-	ld hl, PartyMon1Species
-	call VerifyUniqueness
-	ret
-; 8b2e9
-
-VerifyUniqueness: ; 8b2e9
-	ld de, PartyCount
-	ld a, [de]
-	inc de
-	dec a
-	jr z, .done
-	ld b, a
-.loop
-	push hl
-	push de
-	ld c, b
-	call .isegg
-	jr z, .next
-	ld a, [hl]
-	and a
-	jr z, .next
-.loop2
-	call .nextmon
-	call .isegg
-	jr z, .next2
-	cp [hl]
-	jr z, .gotcha
-
-.next2
-	dec c
-	jr nz, .loop2
-
-.next
-	pop de
-	pop hl
-	call .nextmon
-	dec b
-	jr nz, .loop
-
-.done
-	and a
-	ret
-
-.gotcha
-	pop de
-	pop hl
-	scf
-	ret
-; 8b31a
-
-.nextmon ; 8b31a
-	push bc
-	ld bc, PARTYMON_STRUCT_LENGTH
-	add hl, bc
-	inc de
-	pop bc
-	ret
-; 8b322
-
-.isegg ; 8b322
-	push bc
-	ld b, a
-	ld a, [de]
-	cp EGG
-	ld a, b
-	pop bc
-	ret
-; 8b32a
-
-Function_PartyItemsAreUnique: ; 8b32a
-	ld hl, PartyMon1Item
-	call VerifyUniqueness
-	ret
-; 8b331
-
-Function_HasPartyAnEgg: ; 8b331
-	ld hl, PartyCount
-	ld a, [hli]
-	ld c, a
-.loop
-	ld a, [hli]
-	cp EGG
-	jr z, .found
-	dec c
-	jr nz, .loop
-	and a
-	ret
-
-.found
-	scf
-	ret
-; 8b342
--- a/engine/events/buena.asm
+++ b/engine/events/buena.asm
@@ -1,4 +1,4 @@
-SpecialBuenasPassword: ; 8af6b
+Special_BuenasPassword: ; 8af6b
 	xor a
 	ld [wWhichIndexSet], a
 	ld hl, .MenuDataHeader
@@ -17,7 +17,7 @@
 	ld a, [MenuSelection]
 	ld c, a
 	ld a, [wBuenasPassword]
-	and $3
+	maskbits NUM_PASSWORDS_PER_CATEGORY
 	cp c
 	jr nz, .wrong
 	ld b, $1
@@ -29,9 +29,8 @@
 ; 8afa9
 
 .MenuDataHeader: ; 0x8afa9
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 07, 10 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 10, 7
 	dw .MenuData2
 	db 1 ; default option
 ; 0x8afb1
@@ -39,7 +38,7 @@
 	db 0
 
 .MenuData2: ; 0x8afb2
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	db 0 ; items
 	dw .PasswordIndices
 	dw .PlacePasswordChoices
@@ -46,8 +45,12 @@
 ; 0x8afb4
 
 .PasswordIndices: ; 8afb8
-	db 3
-	db 0, 1, 2
+	db NUM_PASSWORDS_PER_CATEGORY
+x = 0
+rept NUM_PASSWORDS_PER_CATEGORY
+	db x
+x = x + 1
+endr
 	db -1
 
 .PlacePasswordChoices: ; 8afbd
@@ -64,7 +67,7 @@
 	ret
 ; 8afd4
 
-SpecialBuenaPrize: ; 8afd4
+Special_BuenaPrize: ; 8afd4
 	xor a
 	ld [wMenuScrollPosition], a
 	ld a, $1
@@ -225,9 +228,8 @@
 ; 8b0d1
 
 BlueCardBalanceMenuDataHeader: ; 0x8b0d1
-	db $40 ; flags
-	db 11, 00 ; start coords
-	db 13, 11 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 11, 11, 13
 ; 8b0d6
 
 Buena_PlacePrizeMenuBox: ; 8b0d6
@@ -237,9 +239,8 @@
 ; 8b0dd
 
 .menudataheader ; 0x8b0dd
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 11, 17 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 17, TEXTBOX_Y - 1
 ; 8b0e2
 
 Buena_PrizeMenu: ; 8b0e2
@@ -270,9 +271,8 @@
 ; 8b113
 
 .MenuDataHeader: ; 0x8b113
-	db $40 ; flags
-	db 01, 01 ; start coords
-	db 09, 16 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 1, 1, 16, 9
 	dw .MenuData2
 	db 1 ; default option
 ; 0x8b11b
@@ -280,7 +280,7 @@
 	db 0
 
 .MenuData2: ; 0x8b11c
-	db $10 ; flags
+	db SCROLLINGMENU_DISPLAY_ARROWS ; flags
 	db 4, 13 ; rows, columns
 	db 1 ; spacing
 	dba .indices
--- a/engine/events/buena_menu.asm
+++ b/engine/events/buena_menu.asm
@@ -1,4 +1,4 @@
-AskRememberPassword: ; 4ae12
+Special_AskRememberPassword: ; 4ae12
 	call .DoMenu
 	ld a, $0
 	jr c, .okay
--- a/engine/events/bug_contest/contest_2.asm
+++ b/engine/events/bug_contest/contest_2.asm
@@ -2,7 +2,7 @@
 ; Select five random people to participate in the current contest.
 
 ; First we have to make sure that any old data is cleared away.
-	ld c, 10 ; Number of people to choose from.
+	ld c, NUM_BUG_CONTESTANTS
 	ld hl, BugCatchingContestantEventFlagTable
 .loop1
 	push bc
@@ -26,9 +26,9 @@
 .next
 ; Choose a flag at uniform random to be set.
 	call Random
-	cp 250
+	cp $ff / NUM_BUG_CONTESTANTS * NUM_BUG_CONTESTANTS
 	jr nc, .next
-	ld c, 25
+	ld c, $ff / NUM_BUG_CONTESTANTS
 	call SimpleDivide
 	ld e, b
 	ld d, 0
@@ -59,7 +59,7 @@
 Special_CheckBugContestContestantFlag: ; 139ed
 ; Checks the flag of the Bug Catching Contestant whose index is loaded in a.
 
-; Bug: If a >= 10 when this is called, it will read beyond the table.
+; Bug: If a >= NUM_BUG_CONTESTANTS when this is called, it will read beyond the table.
 
 	ld hl, BugCatchingContestantEventFlagTable
 	ld e, a
@@ -74,20 +74,9 @@
 	ret
 ; 139fe
 
-BugCatchingContestantEventFlagTable: ; 139fe
-	dw EVENT_BUG_CATCHING_CONTESTANT_1A
-	dw EVENT_BUG_CATCHING_CONTESTANT_2A
-	dw EVENT_BUG_CATCHING_CONTESTANT_3A
-	dw EVENT_BUG_CATCHING_CONTESTANT_4A
-	dw EVENT_BUG_CATCHING_CONTESTANT_5A
-	dw EVENT_BUG_CATCHING_CONTESTANT_6A
-	dw EVENT_BUG_CATCHING_CONTESTANT_7A
-	dw EVENT_BUG_CATCHING_CONTESTANT_8A
-	dw EVENT_BUG_CATCHING_CONTESTANT_9A
-	dw EVENT_BUG_CATCHING_CONTESTANT_10A
-; 13a12
+INCLUDE "data/bug_contest_flags.asm"
 
-ContestDropOffMons: ; 13a12
+Special_ContestDropOffMons: ; 13a12
 	ld hl, PartyMon1HP
 	ld a, [hli]
 	or [hl]
@@ -101,7 +90,7 @@
 	ld a, [hl]
 	ld [wBugContestSecondPartySpecies], a
 ; ... and replacing it with the terminator byte
-	ld [hl], $ff
+	ld [hl], -1
 	xor a
 	ld [ScriptVar], a
 	ret
@@ -112,13 +101,13 @@
 	ret
 ; 13a31
 
-ContestReturnMons: ; 13a31
+Special_ContestReturnMons: ; 13a31
 ; Restore the species of the second mon.
 	ld hl, PartySpecies + 1
 	ld a, [wBugContestSecondPartySpecies]
 	ld [hl], a
 ; Restore the party count, which must be recomputed.
-	ld b, $1
+	ld b, 1
 .loop
 	ld a, [hli]
 	cp -1
--- a/engine/events/bug_contest/display_stats.asm
+++ b/engine/events/bug_contest/display_stats.asm
@@ -82,9 +82,9 @@
 .Health:
 	db "HEALTH@"
 .Stock:
-	db " STOCK ", $4a, " @"
+	db " STOCK <PKMN> @"
 .This:
-	db " THIS ", $4a, "  @"
+	db " THIS <PKMN>  @"
 
 SwitchMonText: ; cc0c2
 	; Switch #MON?
@@ -101,7 +101,7 @@
 	text_jump UnknownText_0x1c10dd
 	db "@"
 
-Predef2F:
-Predef38:
-Predef39: ; cc0d5
+DummyPredef2F:
+DummyPredef38:
+DummyPredef39: ; cc0d5
 	ret
--- a/engine/events/bug_contest/judging.asm
+++ b/engine/events/bug_contest/judging.asm
@@ -1,6 +1,6 @@
 _BugContestJudging: ; 1369d
 	call ContestScore
-	farcall TrainerRankings_BugContestScore
+	farcall StubbedTrainerRankings_BugContestScore
 	call BugContest_JudgeContestants
 	ld a, [wBugContestThirdPlaceWinnerID]
 	call LoadContestantName
@@ -77,9 +77,8 @@
 ; 0x13730
 
 LoadContestantName: ; 13730
-
-; If a = 0, get your name.
-	dec a
+; If a = 1, get your name.
+	dec a ; BUG_CONTEST_PLAYER
 	jr z, .player
 ; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a.
 	ld c, a
@@ -141,11 +140,11 @@
 
 BugContest_GetPlayersResult: ; 13807
 	ld hl, wBugContestThirdPlaceWinnerID
-	ld de, -4
-	ld b, 3
+	ld de, - BUG_CONTESTANT_SIZE
+	ld b, 3 ; 3rd, 2nd, or 1st
 .loop
 	ld a, [hl]
-	cp 1 ; Player
+	cp BUG_CONTEST_PLAYER
 	jr z, .done
 	add hl, de
 	dec b
@@ -159,7 +158,7 @@
 	call ClearContestResults
 	call ComputeAIContestantScores
 	ld hl, wBugContestTempWinnerID
-	ld a, 1 ; Player
+	ld a, BUG_CONTEST_PLAYER
 	ld [hli], a
 	ld a, [wContestMon]
 	ld [hli], a
@@ -190,11 +189,11 @@
 	jr c, .not_first_place
 	ld hl, wBugContestSecondPlaceWinnerID
 	ld de, wBugContestThirdPlaceWinnerID
-	ld bc, 4
+	ld bc, BUG_CONTESTANT_SIZE
 	call CopyBytes
 	ld hl, wBugContestFirstPlaceWinnerID
 	ld de, wBugContestSecondPlaceWinnerID
-	ld bc, 4
+	ld bc, BUG_CONTESTANT_SIZE
 	call CopyBytes
 	ld hl, wBugContestFirstPlaceWinnerID
 	call CopyTempContestant
@@ -208,7 +207,7 @@
 	jr c, .not_second_place
 	ld hl, wBugContestSecondPlaceWinnerID
 	ld de, wBugContestThirdPlaceWinnerID
-	ld bc, 4
+	ld bc, BUG_CONTESTANT_SIZE
 	call CopyBytes
 	ld hl, wBugContestSecondPlaceWinnerID
 	call CopyTempContestant
@@ -230,7 +229,7 @@
 CopyTempContestant: ; 138a0
 ; Could've just called CopyBytes.
 	ld de, wBugContestTempWinnerID
-rept 3
+rept BUG_CONTESTANT_SIZE +- 1
 	ld a, [de]
 	inc de
 	ld [hli], a
@@ -264,6 +263,7 @@
 	inc hl
 	inc hl
 .loop2
+	; 0, 1, or 2 for 1st, 2nd, or 3rd
 	call Random
 	and 3
 	cp 3
@@ -278,8 +278,9 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
+	; randomly perturb score
 	call Random
-	and 7
+	and %111
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -294,7 +295,7 @@
 .done
 	inc e
 	ld a, e
-	cp 10
+	cp NUM_BUG_CONTESTANTS
 	jr nz, .loop
 	ret
 ; 13900
@@ -337,7 +338,7 @@
 	; DVs
 	ld a, [wContestMonDVs + 0]
 	ld b, a
-	and 2
+	and %0010
 	add a
 	add a
 	ld c, a
@@ -344,7 +345,7 @@
 
 	swap b
 	ld a, b
-	and 2
+	and %0010
 	add a
 	add c
 	ld d, a
@@ -351,12 +352,12 @@
 
 	ld a, [wContestMonDVs + 1]
 	ld b, a
-	and 2
+	and %0010
 	ld c, a
 
 	swap b
 	ld a, b
-	and 2
+	and %0010
 	srl a
 	add c
 	add c
--- a/engine/events/celebi.asm
+++ b/engine/events/celebi.asm
@@ -1,3 +1,5 @@
+SPECIALCELEBIEVENT_CELEBI EQU $84
+
 Special_CelebiShrineEvent: ; 4989a
 	call DelayFrame
 	ld a, [VramState]
@@ -10,7 +12,7 @@
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
-	ld [hl], $84
+	ld [hl], SPECIALCELEBIEVENT_CELEBI
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
 	ld [hl], SPRITE_ANIM_SEQ_CELEBI
@@ -19,7 +21,7 @@
 	ld a, $80
 	ld [hl], a
 	ld a, 160 ; frame count
-	ld [wcf64], a
+	ld [wFrameCounter], a
 	ld d, $0
 .loop
 	ld a, [wJumptableIndex]
@@ -43,26 +45,26 @@
 .done
 	pop af
 	ld [VramState], a
-	call .RefreshPlayerSprite_ClearAllOthers
+	call .RestorePlayerSprite_DespawnLeaves
 	call CelebiEvent_SetBattleType
 	ret
 
 ; 498f9
 
-.RefreshPlayerSprite_ClearAllOthers: ; 498f9
-	ld hl, Sprites + 2
+.RestorePlayerSprite_DespawnLeaves: ; 498f9
+	ld hl, Sprite01TileID
 	xor a
-	ld c, $4
+	ld c, 4
 .OAMloop:
-	ld [hli], a
+	ld [hli], a ; tile id
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	inc hl
-	inc hl
-	inc hl
+endr
 	inc a
 	dec c
 	jr nz, .OAMloop
-	ld hl, Sprites + 4 * 4
-	ld bc, 36 * 4
+	ld hl, Sprite05
+	ld bc, SpritesEnd - Sprite05
 	xor a
 	call ByteFill
 	ret
@@ -76,8 +78,8 @@
 	lb bc, BANK(SpecialCelebiLeafGFX), 4
 	call Request2bpp
 	ld de, SpecialCelebiGFX
-	ld hl, vTiles0 tile $84
-	lb bc, BANK(SpecialCelebiGFX), $10
+	ld hl, vTiles0 tile SPECIALCELEBIEVENT_CELEBI
+	lb bc, BANK(SpecialCelebiGFX), 4 * 4
 	call Request2bpp
 	xor a
 	ld [wJumptableIndex], a
@@ -86,7 +88,7 @@
 ; 49935
 
 CelebiEvent_CountDown: ; 49935
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -238,27 +240,27 @@
 
 
 CelebiEvent_Cosine: ; 49b3b (12:5b3b)
-	add $10
-	and $3f
-	cp $20
+; a = d * cos(a * pi/32)
+	add %010000
+	and %111111
+	cp %100000
 	jr nc, .negative
-	call .SineFunction
+	call .ApplySineWave
 	ld a, h
 	ret
 
 .negative
-	and $1f
-	call .SineFunction
+	and %011111
+	call .ApplySineWave
 	ld a, h
 	xor $ff
 	inc a
 	ret
 
-
-.SineFunction: ; 49b52 (12:5b52)
+.ApplySineWave: ; 49b52 (12:5b52)
 	ld e, a
 	ld a, d
-	ld d, $0
+	ld d, 0
 	ld hl, .sinewave
 	add hl, de
 	add hl, de
@@ -276,7 +278,6 @@
 	and a
 	jr nz, .multiply
 	ret
-
 ; 49b6e (12:5b6e)
 
 .sinewave ; 49b6e
@@ -307,22 +308,22 @@
 
 
 .Frame1:
-	ld a, $84
+	ld a, SPECIALCELEBIEVENT_CELEBI
 	jr .load_tile
 
 
 .Frame2:
-	ld a, $88
+	ld a, SPECIALCELEBIEVENT_CELEBI + 4
 	jr .load_tile
 
 
 .Frame3:
-	ld a, $8c
+	ld a, SPECIALCELEBIEVENT_CELEBI + 8
 	jr .load_tile
 
 
 .Frame4:
-	ld a, $90
+	ld a, SPECIALCELEBIEVENT_CELEBI + 12
 
 .load_tile
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
@@ -361,7 +362,7 @@
 
 ; 49bf9
 
-CheckCaughtCelebi: ; 49bf9
+Special_CheckCaughtCelebi: ; 49bf9
 	ld a, [wBattleResult]
 	bit 6, a
 	jr z, .false
--- /dev/null
+++ b/engine/events/checkforhiddenitems.asm
@@ -1,0 +1,85 @@
+CheckForHiddenItems: ; b8172
+; Checks to see if there are hidden items on the screen that have not yet been found.  If it finds one, returns carry.
+	call GetMapScriptsBank
+	ld [Buffer1], a
+; Get the coordinate of the bottom right corner of the screen, and load it in Buffer3/Buffer4.
+	ld a, [XCoord]
+	add SCREEN_WIDTH / 4
+	ld [Buffer4], a
+	ld a, [YCoord]
+	add SCREEN_HEIGHT / 4
+	ld [Buffer3], a
+; Get the pointer for the first bg_event in the map...
+	ld hl, wCurrMapBGEventsPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+; ... before even checking to see if there are any BG events on this map.
+	ld a, [wCurrMapBGEventCount]
+	and a
+	jr z, .nobgeventitems
+; For i = 1:wCurrMapBGEventCount...
+.loop
+; Store the counter in Buffer2, and store the bg_event pointer in the stack.
+	ld [Buffer2], a
+	push hl
+; Get the Y coordinate of the BG event.
+	call .GetFarByte
+	ld e, a
+; Is the Y coordinate of the BG event on the screen?  If not, go to the next BG event.
+	ld a, [Buffer3]
+	sub e
+	jr c, .next
+	cp SCREEN_HEIGHT / 2
+	jr nc, .next
+; Is the X coordinate of the BG event on the screen?  If not, go to the next BG event.
+	call .GetFarByte
+	ld d, a
+	ld a, [Buffer4]
+	sub d
+	jr c, .next
+	cp SCREEN_WIDTH / 2
+	jr nc, .next
+; Is this BG event a hidden item?  If not, go to the next BG event.
+	call .GetFarByte
+	cp BGEVENT_ITEM
+	jr nz, .next
+; Has this item already been found?  If not, set off the Itemfinder.
+	ld a, [Buffer1]
+	call GetFarHalfword
+	ld a, [Buffer1]
+	call GetFarHalfword
+	ld d, h
+	ld e, l
+	ld b, CHECK_FLAG
+	call EventFlagAction
+	ld a, c
+	and a
+	jr z, .itemnearby
+
+.next
+; Restore the bg_event pointer and increment it by the length of a bg_event.
+	pop hl
+	ld bc, 5
+	add hl, bc
+; Restore the BG event counter and decrement it.  If it hits zero, there are no hidden items in range.
+	ld a, [Buffer2]
+	dec a
+	jr nz, .loop
+
+.nobgeventitems
+	xor a
+	ret
+
+.itemnearby
+	pop hl
+	scf
+	ret
+; b81e2
+
+.GetFarByte: ; b81e2
+	ld a, [Buffer1]
+	call GetFarByte
+	inc hl
+	ret
+; b81ea
--- a/engine/events/crystal_unown.asm
+++ /dev/null
@@ -1,324 +1,0 @@
-SpecialHoOhChamber: ; 0x8addb
-	ld hl, PartySpecies
-	ld a, [hl]
-	cp HO_OH ; is Ho-oh the first Pokémon in the party?
-	jr nz, .done ; if not, we're done
-	call GetSecondaryMapHeaderPointer
-	ld de, EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-.done
-	ret
-; 0x8adef
-
-SpecialOmanyteChamber: ; 8adef
-	call GetSecondaryMapHeaderPointer
-	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	ld b, CHECK_FLAG
-	call EventFlagAction
-	ld a, c
-	and a
-	jr nz, .nope
-
-	ld a, WATER_STONE
-	ld [CurItem], a
-	ld hl, NumItems
-	call CheckItem
-	jr c, .open
-
-	ld a, [PartyCount]
-	ld b, a
-	inc b
-.loop
-	dec b
-	jr z, .nope
-	ld a, b
-	dec a
-	ld [CurPartyMon], a
-	push bc
-	ld a, MON_ITEM
-	call GetPartyParamLocation
-	pop bc
-	ld a, [hl]
-	cp WATER_STONE
-	jr nz, .loop
-
-.open
-	call GetSecondaryMapHeaderPointer
-	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-
-.nope
-	ret
-; 8ae30
-
-SpecialAerodactylChamber: ; 8ae30
-	push de
-	push bc
-
-	call GetSecondaryMapHeaderPointer
-	ld a, h
-	cp HIGH(RuinsOfAlphAerodactylChamber_SecondMapHeader)
-	jr nz, .nope
-	ld a, l
-	cp LOW(RuinsOfAlphAerodactylChamber_SecondMapHeader)
-	jr nz, .nope
-
-	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-
-	scf
-	jr .done
-
-.nope
-	and a
-
-.done
-	pop bc
-	pop de
-	ret
-; 8ae4e
-
-SpecialKabutoChamber: ; 8ae4e
-	push hl
-	push de
-
-	call GetSecondaryMapHeaderPointer
-	ld a, h
-	cp HIGH(RuinsOfAlphKabutoChamber_SecondMapHeader)
-	jr nz, .done
-	ld a, l
-	cp LOW(RuinsOfAlphKabutoChamber_SecondMapHeader)
-	jr nz, .done
-
-	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
-	ld b, SET_FLAG
-	call EventFlagAction
-
-.done
-	pop de
-	pop hl
-	ret
-; 8ae68
-
-Special_DisplayUnownWords: ; 8ae68
-	ld a, [ScriptVar]
-	ld hl, .MenuDataHeaders_UnownWalls
-	and a
-	jr z, .load
-
-	ld d, $0
-	ld e, $5
-.loop
-	add hl, de
-	dec a
-	jr nz, .loop
-
-.load
-	call LoadMenuDataHeader
-	xor a
-	ld [hBGMapMode], a
-	call MenuBox
-	call UpdateSprites
-	call ApplyTilemap
-	call MenuBoxCoord2Tile
-	inc hl
-	ld d, 0
-	ld e, SCREEN_WIDTH
-	add hl, de
-	add hl, de
-	ld a, [ScriptVar]
-	ld c, a
-	ld de, .UnownText
-	and a
-	jr z, .copy
-.loop2
-	ld a, [de]
-	inc de
-	cp $ff
-	jr nz, .loop2
-	dec c
-	jr nz, .loop2
-.copy
-	call .CopyWord
-	ld bc, AttrMap - TileMap
-	add hl, bc
-	call .FillAttr
-	call WaitBGMap2
-	call JoyWaitAorB
-	call PlayClickSFX
-	call CloseWindow
-	ret
-; 8aebc
-
-unownwall: MACRO
-rept _NARG
-if \1 == "-"
-x = $64
-else
-if \1 >= "Y"
-x = 2 * (\1 - "Y") + $60
-else
-if \1 >= "Q"
-x = 2 * (\1 - "Q") + $40
-else
-if \1 >= "I"
-x = 2 * (\1 - "I") + $20
-else
-x = 2 * (\1 - "A")
-endc
-endc
-endc
-endc
-	db x
-shift
-endr
-	db $ff
-ENDM
-
-.UnownText: ; 8aebc
-;.UnownText_Escape:
-	; db      $08, $44, $04, $00, $2e, $08, $ff
-	unownwall "E", "S", "C", "A", "P", "E"
-;.UnownText_Light:
-	; db      $26, $20, $0c, $0e, $46, $ff
-	unownwall "L", "I", "G", "H", "T"
-;.UnownText_Water:
-	; db      $4c, $00, $46, $08, $42, $ff
-	unownwall "W", "A", "T", "E", "R"
-;.UnownText_Ho_Oh:
-	; db      $0e, $2c, $64, $2c, $0e, $ff
-	unownwall "H", "O", "-", "O", "H"
-; 8aed5
-
-.MenuDataHeaders_UnownWalls: ; 0x8aed5
-;.MenuDataHeader_Escape:
-	db $40 ; flags
-	db 04, 03 ; start coords
-	db 09, 16 ; end coords
-;.MenuDataHeader_Light:
-	db $40 ; flags
-	db 04, 04 ; start coords
-	db 09, 15 ; end coords
-;.MenuDataHeader_Water:
-	db $40 ; flags
-	db 04, 04 ; start coords
-	db 09, 15 ; end coords
-;.MenuDataHeader_Ho_Oh:
-	db $40 ; flags
-	db 04, 04 ; start coords
-	db 09, 15 ; end coords
-; 8aee9
-
-.FillAttr: ; 8aee9
-	ld a, [de]
-	cp $ff
-	ret z
-	cp $60
-	ld a, VRAM_BANK_1 | PAL_BG_BROWN
-	jr c, .got_pal
-	ld a, PAL_BG_BROWN
-
-.got_pal
-	call .PlaceSquare
-	inc hl
-	inc hl
-	inc de
-	jr .FillAttr
-; 8aefd
-
-.PlaceSquare: ; 8aefd
-	push hl
-	ld [hli], a
-	ld [hld], a
-	ld b, 0
-	ld c, SCREEN_WIDTH
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	pop hl
-	ret
-; 8af09
-
-.CopyWord: ; 8af09
-	push hl
-	push de
-.word_loop
-	ld a, [de]
-	cp $ff
-	jr z, .word_done
-	ld c, a
-	call .ConvertChar
-	inc hl
-	inc hl
-	inc de
-	jr .word_loop
-
-.word_done
-	pop de
-	pop hl
-	ret
-; 8af1c
-
-.ConvertChar: ; 8af1c
-	push hl
-	ld a, c
-	cp $60
-	jr z, .Tile60
-	cp $62
-	jr z, .Tile62
-	cp $64
-	jr z, .Tile64
-	ld [hli], a
-	inc a
-	ld [hld], a
-	dec a
-	ld b, 0
-	ld c, SCREEN_WIDTH
-	add hl, bc
-	ld c, $10
-	add c
-	ld [hli], a
-	inc a
-	ld [hl], a
-	pop hl
-	ret
-
-.Tile60:
-	ld [hl], $5b
-	inc hl
-	ld [hl], $5c
-	ld bc, SCREEN_WIDTH - 1
-	add hl, bc
-	ld [hl], $4d
-	inc hl
-	ld [hl], $5d
-	pop hl
-	ret
-
-.Tile62:
-	ld [hl], $4e
-	inc hl
-	ld [hl], $4f
-	ld bc, SCREEN_WIDTH - 1
-	add hl, bc
-	ld [hl], $5e
-	inc hl
-	ld [hl], $5f
-	pop hl
-	ret
-
-.Tile64:
-	ld [hl], $2
-	inc hl
-	ld [hl], $3
-	ld bc, SCREEN_WIDTH - 1
-	add hl, bc
-	ld [hl], $3
-	inc hl
-	ld [hl], $2
-	pop hl
-	ret
-; 8af6b
--- a/engine/events/daycare.asm
+++ b/engine/events/daycare.asm
@@ -1,3 +1,4 @@
+; PrintDayCareText.TextTable indexes
 	const_def
 	const DAYCARETEXT_MAN_INTRO
 	const DAYCARETEXT_MAN_EGG
@@ -13,12 +14,12 @@
 	const DAYCARETEXT_GENIUSES
 	const DAYCARETEXT_ASK_WITHDRAW
 	const DAYCARETEXT_WITHDRAW
+	const DAYCARETEXT_GOT_BACK
 	const DAYCARETEXT_TOO_SOON
 	const DAYCARETEXT_PARTY_FULL
 	const DAYCARETEXT_NOT_ENOUGH_MONEY
 	const DAYCARETEXT_OH_FINE
 	const DAYCARETEXT_COME_AGAIN
-	const DAYCARETEXT_13
 
 Special_DayCareMan: ; 166d6
 	ld hl, wDayCareMan
@@ -44,7 +45,7 @@
 	call DayCare_AskWithdrawBreedMon
 	jr c, .print_text
 	farcall RetrievePokemonFromDayCareMan
-	call DayCare_TakeMoney_PlayCry
+	call DayCare_GetBackMonForMoney
 	ld hl, wDayCareMan
 	res 0, [hl]
 	res 5, [hl]
@@ -54,7 +55,7 @@
 	call PrintDayCareText
 
 .cancel
-	ld a, DAYCARETEXT_13
+	ld a, DAYCARETEXT_COME_AGAIN
 	call PrintDayCareText
 	ret
 ; 1672a
@@ -83,7 +84,7 @@
 	call DayCare_AskWithdrawBreedMon
 	jr c, .print_text
 	farcall RetrievePokemonFromDayCareLady
-	call DayCare_TakeMoney_PlayCry
+	call DayCare_GetBackMonForMoney
 	ld hl, wDayCareLady
 	res 0, [hl]
 	ld hl, wDayCareMan
@@ -94,7 +95,7 @@
 	call PrintDayCareText
 
 .cancel
-	ld a, DAYCARETEXT_13
+	ld a, DAYCARETEXT_COME_AGAIN
 	call PrintDayCareText
 	ret
 ; 16781
@@ -145,7 +146,7 @@
 	ret
 
 .Declined:
-	ld a, DAYCARETEXT_COME_AGAIN
+	ld a, DAYCARETEXT_OH_FINE
 	scf
 	ret
 
@@ -180,7 +181,7 @@
 	ld a, DAYCARETEXT_DEPOSIT
 	call PrintDayCareText
 	ld a, [CurPartySpecies]
-	call PlayCry
+	call PlayMonCry
 	ld a, DAYCARETEXT_COME_BACK_LATER
 	call PrintDayCareText
 	ret
@@ -190,7 +191,7 @@
 	ld a, [StringBuffer2 + 1]
 	and a
 	jr nz, .grew_at_least_one_level
-	ld a, DAYCARETEXT_PARTY_FULL
+	ld a, DAYCARETEXT_TOO_SOON
 	call PrintDayCareText
 	call YesNoBox
 	jr c, .refused
@@ -218,22 +219,22 @@
 	ret
 
 .refused
-	ld a, DAYCARETEXT_COME_AGAIN
+	ld a, DAYCARETEXT_OH_FINE
 	scf
 	ret
 
 .not_enough_money
-	ld a, DAYCARETEXT_OH_FINE
+	ld a, DAYCARETEXT_NOT_ENOUGH_MONEY
 	scf
 	ret
 
 .PartyFull:
-	ld a, DAYCARETEXT_NOT_ENOUGH_MONEY
+	ld a, DAYCARETEXT_PARTY_FULL
 	scf
 	ret
 ; 16850
 
-DayCare_TakeMoney_PlayCry: ; 16850
+DayCare_GetBackMonForMoney: ; 16850
 	ld bc, StringBuffer2 + 2
 	ld de, Money
 	farcall TakeMoney
@@ -240,8 +241,8 @@
 	ld a, DAYCARETEXT_WITHDRAW
 	call PrintDayCareText
 	ld a, [CurPartySpecies]
-	call PlayCry
-	ld a, DAYCARETEXT_TOO_SOON
+	call PlayMonCry
+	ld a, DAYCARETEXT_GOT_BACK
 	call PrintDayCareText
 	ret
 ; 1686d
@@ -283,6 +284,7 @@
 ; 168aa
 
 .TextTable: ; 168aa
+; entries correspond to DAYCARETEXT_* constants
 	dw .DayCareManIntro ; 00
 	dw .DayCareManOddEgg ; 01
 	dw .DayCareLadyIntro ; 02
@@ -465,7 +467,7 @@
 
 .Load0:
 	call PrintText
-	xor a
+	xor a ; FALSE
 	ld [ScriptVar], a
 	ret
 
@@ -472,7 +474,7 @@
 .PartyFull:
 	ld hl, .PartyFullText
 	call PrintText
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 ; 16993
@@ -529,7 +531,7 @@
 	ld [hl], a
 
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call DayCare_GetCurrentPartyMember
 	ld hl, wEggNick
 	call CopyBytes
@@ -618,7 +620,7 @@
 	ld bc, wEggMonEnd - wEggMon
 	call ByteFill
 	ld hl, wEggNick
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call ByteFill
 	ld hl, wEggOT
 	ld bc, NAME_LENGTH
--- a/engine/events/dratini.asm
+++ b/engine/events/dratini.asm
@@ -1,4 +1,4 @@
-SpecialDratini: ; 0x8b170
+Special_Dratini: ; 0x8b170
 ; if ScriptVar is 0 or 1, change the moveset of the last Dratini in the party.
 ;  0: give it a special moveset with Extremespeed.
 ;  1: give it the normal moveset of a level 15 Dratini.
--- a/engine/events/elevator.asm
+++ b/engine/events/elevator.asm
@@ -188,24 +188,23 @@
 ; 13550
 
 Elevator_MenuDataHeader: ; 0x13550
-	db $40 ; flags
-	db 01, 12 ; start coords
-	db 09, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 12, 1, 18, 9
 	dw Elevator_MenuData2
 	db 1 ; default option
 ; 0x13558
 
 Elevator_MenuData2: ; 0x13558
-	db $10 ; flags
+	db SCROLLINGMENU_DISPLAY_ARROWS ; flags
 	db 4, 0 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, CurElevator
-	dba GetElevatorFlorStrings
+	dba GetElevatorFloorStrings
 	dba NULL
 	dba NULL
 ; 13568
 
-GetElevatorFlorStrings: ; 13568
+GetElevatorFloorStrings: ; 13568
 	ld a, [MenuSelection]
 GetFloorString: ; 1356b
 	push de
@@ -220,7 +219,7 @@
 	push de
 	ld e, a
 	ld d, 0
-	ld hl, .floors
+	ld hl, ElevatorFloorNames
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -230,54 +229,4 @@
 	ret
 ; 13583
 
-.floors
-	dw .b4f
-	dw .b3f
-	dw .b2f
-	dw .b1f
-	dw ._1f
-	dw ._2f
-	dw ._3f
-	dw ._4f
-	dw ._5f
-	dw ._6f
-	dw ._7f
-	dw ._8f
-	dw ._9f
-	dw ._10f
-	dw ._11f
-	dw .roof
-
-.b4f
-	db "B4F@"
-.b3f
-	db "B3F@"
-.b2f
-	db "B2F@"
-.b1f
-	db "B1F@"
-._1f
-	db "1F@"
-._2f
-	db "2F@"
-._3f
-	db "3F@"
-._4f
-	db "4F@"
-._5f
-	db "5F@"
-._6f
-	db "6F@"
-._7f
-	db "7F@"
-._8f
-	db "8F@"
-._9f
-	db "9F@"
-._10f
-	db "10F@"
-._11f
-	db "11F@"
-.roof
-	db "ROOF@"
-; 135db
+INCLUDE "data/elevator_floors.asm"
--- a/engine/events/field_moves.asm
+++ b/engine/events/field_moves.asm
@@ -7,7 +7,7 @@
 ; 8c7e1
 
 BlindingFlash: ; 8c7e1
-	farcall FadeOutPalettes
+	farcall Special_FadeOutPalettes
 	ld hl, wStatusFlags
 	set 2, [hl] ; Flash
 	farcall ReplaceTimeOfDayPals
@@ -15,7 +15,7 @@
 	ld b, SCGB_MAPPALS
 	call GetSGBLayout
 	farcall LoadOW_BGPal7
-	farcall FadeInPalettes
+	farcall Special_FadeInPalettes
 	ret
 ; 8c80a
 
@@ -39,13 +39,13 @@
 	ld [wCurrSpriteOAMAddr], a
 	farcall DoNextFrameForAllSprites
 	call HideHeadbuttTree
-	ld a, $20
-	ld [wcf64], a
+	ld a, 32
+	ld [wFrameCounter], a
 	call WaitSFX
 	ld de, SFX_SANDSTORM
 	call PlaySFX
 .loop
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -62,8 +62,8 @@
 	xor a
 	ld [hBGMapMode], a
 	farcall ClearSpriteAnims
-	ld hl, Sprites + 36 * 4
-	ld bc, SpritesEnd - (Sprites + 36 * 4)
+	ld hl, Sprite37
+	ld bc, SpritesEnd - Sprite37
 	xor a
 	call ByteFill
 	ld de, Font
@@ -188,7 +188,7 @@
 	add hl, bc
 	ld [hl], $84
 	ld a, 32
-	ld [wcf64], a
+	ld [wFrameCounter], a
 ; Cut_StartWaiting
 	ld hl, wJumptableIndex
 	inc [hl]
@@ -206,7 +206,7 @@
 	ld a, $30
 	call Cut_SpawnLeaf
 	ld a, 32 ; frames
-	ld [wcf64], a
+	ld [wFrameCounter], a
 ; Cut_StartWaiting
 	ld hl, wJumptableIndex
 	inc [hl]
@@ -220,7 +220,7 @@
 	inc [hl]
 
 Cut_WaitAnimSFX: ; 8ca64 (23:4a64)
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .finished
@@ -336,7 +336,7 @@
 	add hl, bc
 	ld [hl], SPRITE_ANIM_SEQ_FLY_FROM
 	ld a, 128
-	ld [wcf64], a
+	ld [wFrameCounter], a
 .loop
 	ld a, [wJumptableIndex]
 	bit 7, a
@@ -374,7 +374,7 @@
 	add hl, bc
 	ld [hl], 11 * 8
 	ld a, 64
-	ld [wcf64], a
+	ld [wFrameCounter], a
 .loop
 	ld a, [wJumptableIndex]
 	bit 7, a
@@ -393,19 +393,19 @@
 	ret
 
 .RestorePlayerSprite_DespawnLeaves: ; 8cb82 (23:4b82)
-	ld hl, Sprites + 2 ; Tile ID
+	ld hl, Sprite01TileID
 	xor a
-	ld c, $4
-.loop2
-	ld [hli], a
+	ld c, 4
+.OAMloop
+	ld [hli], a ; tile id
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	inc hl
-	inc hl
-	inc hl
+endr
 	inc a
 	dec c
-	jr nz, .loop2
-	ld hl, Sprites + 4 * 4
-	ld bc, SpritesEnd - (Sprites + 4 * 4)
+	jr nz, .OAMloop
+	ld hl, Sprite05
+	ld bc, SpritesEnd - Sprite05
 	xor a
 	call ByteFill
 	ret
@@ -431,7 +431,7 @@
 
 FlyFunction_FrameTimer: ; 8cbc8 (23:4bc8)
 	call .SpawnLeaf
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .exit
--- a/engine/events/fish.asm
+++ b/engine/events/fish.asm
@@ -80,7 +80,7 @@
 endr
 
 	ld a, [TimeOfDay]
-	and 3
+	maskbits NUM_DAYTIMES
 	cp NITE_F
 	jr c, .time_species
 	inc hl
--- a/engine/events/fruit_trees.asm
+++ b/engine/events/fruit_trees.asm
@@ -2,7 +2,7 @@
 	callasm GetCurTreeFruit
 	opentext
 	copybytetovar CurFruit
-	itemtotext $0, $0
+	itemtotext USE_SCRIPT_VAR, MEM_BUFFER_0
 	writetext FruitBearingTreeText
 	buttonsound
 	callasm TryResetFruitTrees
@@ -58,7 +58,7 @@
 ; 4405f
 
 PickedFruitTree: ; 4405f
-	farcall TrainerRankings_FruitPicked
+	farcall StubbedTrainerRankings_FruitPicked
 	ld b, 1
 	jp GetFruitTreeFlag
 ; 4406a
--- a/engine/events/halloffame.asm
+++ b/engine/events/halloffame.asm
@@ -42,7 +42,7 @@
 	ld [MusicFadeID + 1], a
 	ld a, 10
 	ld [MusicFade], a
-	farcall FadeOutPalettes
+	farcall Special_FadeOutPalettes
 	xor a
 	ld [VramState], a
 	ld [hMapAnims], a
@@ -65,7 +65,7 @@
 	ld [MusicFadeID + 1], a
 	ld a, 10
 	ld [MusicFade], a
-	farcall FadeOutPalettes
+	farcall Special_FadeOutPalettes
 	xor a
 	ld [VramState], a
 	ld [hMapAnims], a
@@ -92,9 +92,9 @@
 	ld de, MUSIC_HALL_OF_FAME
 	call HallOfFame_PlayMusicDE
 	xor a
-	ld [wcf64], a
+	ld [wHallOfFameMonCounter], a
 .loop
-	ld a, [wcf64]
+	ld a, [wHallOfFameMonCounter]
 	cp PARTY_LENGTH
 	jr nc, .done
 	ld hl, wHallOfFameTempMon1
@@ -108,7 +108,7 @@
 	pop hl
 	call .DisplayNewHallOfFamer
 	jr c, .done
-	ld hl, wcf64
+	ld hl, wHallOfFameMonCounter
 	inc [hl]
 	jr .loop
 
@@ -208,9 +208,9 @@
 	push bc
 	ld a, c
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call AddNTimes
-	ld bc, PKMN_NAME_LENGTH - 1
+	ld bc, MON_NAME_LENGTH - 1
 	call CopyBytes
 
 	pop bc
@@ -321,7 +321,7 @@
 
 .DisplayTeam:
 	xor a
-	ld [wcf64], a
+	ld [wHallOfFameMonCounter], a
 .next
 	call .DisplayMonAndStrings
 	jr c, .start_button
@@ -341,7 +341,7 @@
 	jr .loop
 
 .a_button
-	ld hl, wcf64
+	ld hl, wHallOfFameMonCounter
 	inc [hl]
 	jr .next
 
@@ -356,7 +356,7 @@
 .DisplayMonAndStrings:
 ; Print the number of times the player has entered the Hall of Fame.
 ; If that number is above 200, print "HOF Master!" instead.
-	ld a, [wcf64]
+	ld a, [wHallOfFameMonCounter]
 	cp PARTY_LENGTH
 	jr nc, .fail
 	ld hl, wHallOfFameTempMon1
@@ -460,7 +460,7 @@
 	ld a, [hli]
 	ld [TempMonLevel], a
 	ld de, StringBuffer2
-	ld bc, PKMN_NAME_LENGTH - 1
+	ld bc, MON_NAME_LENGTH - 1
 	call CopyBytes
 	ld a, "@"
 	ld [StringBuffer2 + 10], a
--- a/engine/events/happiness_egg.asm
+++ b/engine/events/happiness_egg.asm
@@ -1,4 +1,4 @@
-GetFirstPokemonHappiness: ; 718d
+Special_GetFirstPokemonHappiness: ; 718d
 	ld hl, PartyMon1Happiness
 	ld bc, PARTYMON_STRUCT_LENGTH
 	ld de, PartySpecies
@@ -17,11 +17,11 @@
 	call GetPokemonName
 	jp CopyPokemonName_Buffer1_Buffer3
 
-CheckFirstMonIsEgg: ; 71ac
+Special_CheckFirstMonIsEgg: ; 71ac
 	ld a, [PartySpecies]
 	ld [wd265], a
 	cp EGG
-	ld a, $1
+	ld a, 1
 	jr z, .egg
 	xor a
 
--- a/engine/events/heal_machine_anim.asm
+++ b/engine/events/heal_machine_anim.asm
@@ -1,4 +1,13 @@
-HealMachineAnim: ; 12324
+; Special_HealMachineAnim.Jumptable indexes
+	const_def
+	const HEALMACHINESTATE_LOADGFX
+	const HEALMACHINESTATE_PCLOADBALLS
+	const HEALMACHINESTATE_HOFLOADBALLS
+	const HEALMACHINESTATE_PLAYMUSIC
+	const HEALMACHINESTATE_HOFPLAYSFX
+	const HEALMACHINESTATE_FINISH
+
+Special_HealMachineAnim: ; 12324
 	; If you have no Pokemon, don't change the buffer.  This can lead to some glitchy effects if you have no Pokemon.
 	ld a, [PartyCount]
 	and a
@@ -36,7 +45,7 @@
 	ld [Buffer3], a
 	add hl, de
 	ld a, [hl]
-	cp 5
+	cp HEALMACHINESTATE_FINISH
 	jr z, .finish
 	ld hl, .Jumptable
 	rst JumpTable
@@ -47,20 +56,29 @@
 ; 12365
 
 .Pointers: ; 12365
+; entries correspond to HEALMACHINE_* constants
 	dw .Pokecenter
 	dw .ElmLab
 	dw .HallOfFame
 ; 1236b
 
+healmachineanimseq: MACRO
+rept _NARG
+	db HEALMACHINESTATE_\1
+	shift
+endr
+ENDM
+
 .Pokecenter: ; 1236b
-	db 0, 1, 3, 5
+	healmachineanimseq LOADGFX, PCLOADBALLS, PLAYMUSIC, FINISH
 .ElmLab: ; 1236f
-	db 0, 1, 3, 5
+	healmachineanimseq LOADGFX, PCLOADBALLS, PLAYMUSIC, FINISH
 .HallOfFame: ; 12373
-	db 0, 2, 4, 5
+	healmachineanimseq LOADGFX, HOFLOADBALLS, HOFPLAYSFX, FINISH
 ; 12377
 
 .Jumptable: ; 12377
+; entries correspond to HEALMACHINESTATE_* constants
 	dw .LoadGFX
 	dw .PC_LoadBallsOntoMachine
 	dw .HOF_LoadBallsOntoMachine
@@ -73,13 +91,13 @@
 	call .LoadPalettes
 	ld de, .HealMachineGFX
 	ld hl, vTiles0 tile $7c
-	lb bc, BANK(.HealMachineGFX), $2
+	lb bc, BANK(.HealMachineGFX), 2
 	call Request2bpp
 	ret
 ; 12393
 
 .PC_LoadBallsOntoMachine: ; 12393
-	ld hl, Sprites + $80
+	ld hl, Sprite33
 	ld de, .PC_ElmsLab_OAM
 	call .PlaceHealingMachineTile
 	call .PlaceHealingMachineTile
@@ -86,7 +104,7 @@
 	jr .LoadBallsOntoMachine
 
 .HOF_LoadBallsOntoMachine: ; 123a1
-	ld hl, Sprites + $80
+	ld hl, Sprite33
 	ld de, .HOF_OAM
 
 .LoadBallsOntoMachine: ; 123a7
@@ -160,7 +178,7 @@
 	ld hl, .palettes
 	ld de, wOBPals2 palette PAL_OW_TREE
 	ld bc, 1 palettes
-	ld a, $5
+	ld a, BANK(wOBPals2)
 	call FarCopyWRAM
 	ld a, $1
 	ld [hCGBPalUpdate], a
@@ -168,14 +186,11 @@
 ; 12451
 
 .palettes ; 12451
-	RGB 31, 31, 31
-	RGB 31, 19, 10
-	RGB 31, 07, 01
-	RGB 00, 00, 00
+INCLUDE "gfx/overworld/heal_machine.pal"
 ; 12459
 
 .FlashPalettes8Times: ; 12459
-	ld c, $8
+	ld c, 8
 .palette_loop
 	push bc
 	call .FlashPalettes
@@ -198,7 +213,7 @@
 .go
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wOBPals2)
 	ld [rSVBK], a
 
 	ld hl, wOBPals2 palette PAL_OW_TREE
@@ -241,7 +256,7 @@
 	push bc
 	ld a, [Buffer1]
 	bcpixel 2, 4
-	cp $1 ; ElmsLab
+	cp HEALMACHINE_ELMS_LAB
 	jr z, .okay
 	bcpixel 0, 0
 
@@ -249,17 +264,17 @@
 	ld a, [de]
 	add c
 	inc de
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, [de]
 	add b
 	inc de
-	ld [hli], a
+	ld [hli], a ; x
 	ld a, [de]
 	inc de
-	ld [hli], a
+	ld [hli], a ; tile id
 	ld a, [de]
 	inc de
-	ld [hli], a
+	ld [hli], a ; attributes
 	pop bc
 	ret
 ; 124c1
--- a/engine/events/kurt.asm
+++ b/engine/events/kurt.asm
@@ -76,7 +76,7 @@
 	jr nz, .done
 
 .nope
-	xor a
+	xor a ; FALSE
 
 .done
 	ld c, a
@@ -84,17 +84,16 @@
 ; 88086
 
 .MenuDataHeader: ; 0x88086
-	db $40 ; flags
-	db 01, 01 ; start coords
-	db 10, 13 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 1, 1, 13, 10
 	dw .MenuData2
 	db 1 ; default option
 ; 0x8808e
 
-	db 0
+	db 0 ; XXX
 
 .MenuData2: ; 0x8808f
-	db $10 ; flags
+	db SCROLLINGMENU_DISPLAY_ARROWS ; flags
 	db 4, 7
 	db 1
 	dbw 0, Buffer1
@@ -159,11 +158,11 @@
 ; 8810d
 
 .MenuDataHeader: ; 0x8810d
-	db $40 ; flags
-	db 09, 06 ; start coords
-	db 12, 19 ; end coords
-
-	db 0, 0, -1, 0 ; XXX
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 6, 9, SCREEN_WIDTH - 1, 12
+	dw NULL
+	db -1 ; default option
+	db 0
 
 .PlaceApricornName: ; 88116
 	call MenuBoxCoord2Tile
--- /dev/null
+++ b/engine/events/loadfishinggfx.asm
@@ -1,0 +1,46 @@
+LoadFishingGFX: ; b84b3
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+
+	ld de, FishingGFX
+	ld a, [wPlayerGender]
+	bit 0, a
+	jr z, .got_gender
+	ld de, KrisFishingGFX
+.got_gender
+
+	ld hl, vTiles0 tile $02
+	call .LoadGFX
+	ld hl, vTiles0 tile $06
+	call .LoadGFX
+	ld hl, vTiles0 tile $0a
+	call .LoadGFX
+	ld hl, vTiles1 tile $7c
+	call .LoadGFX
+
+	pop af
+	ld [rVBK], a
+	ret
+; b84e3
+
+.LoadGFX: ; b84e3
+	lb bc, BANK(FishingGFX), 2
+	push de
+	call Get2bpp
+	pop de
+	ld hl, 2 tiles
+	add hl, de
+	ld d, h
+	ld e, l
+	ret
+; b84f2
+
+FishingGFX: ; b84f2
+INCBIN "gfx/overworld/chris_fish.2bpp"
+; b8582
+
+KrisFishingGFX: ; b8582
+INCBIN "gfx/overworld/kris_fish.2bpp"
+; b8612
--- a/engine/events/lucky_number.asm
+++ b/engine/events/lucky_number.asm
@@ -103,7 +103,7 @@
 	ld a, [ScriptVar]
 	and a
 	ret z ; found nothing
-	farcall TrainerRankings_LuckyNumberShow
+	farcall StubbedTrainerRankings_LuckyNumberShow
 	ld a, [wFoundMatchingIDInParty]
 	and a
 	push af
--- a/engine/events/magikarp.asm
+++ b/engine/events/magikarp.asm
@@ -28,7 +28,7 @@
 	ld c, l
 	call CalcMagikarpLength
 	call PrintMagikarpLength
-	farcall TrainerRankings_MagikarpLength
+	farcall StubbedTrainerRankings_MagikarpLength
 	ld hl, .MeasureItText
 	call PrintText
 
@@ -52,22 +52,22 @@
 	ld hl, PartyMonOT
 	call SkipNames
 	call CopyBytes
-	ld a, 3
+	ld a, MAGIKARPLENGTH_BEAT_RECORD
 	ld [ScriptVar], a
 	ret
 
 .not_long_enough
-	ld a, 2
+	ld a, MAGIKARPLENGTH_TOO_SHORT
 	ld [ScriptVar], a
 	ret
 
 .declined
-	ld a, 1
+	ld a, MAGIKARPLENGTH_REFUSED
 	ld [ScriptVar], a
 	ret
 
 .not_magikarp
-	xor a
+	xor a ; MAGIKARPLENGTH_NOT_MAGIKARP
 	ld [ScriptVar], a
 	ret
 ; fbba9
--- a/engine/events/magnet_train.asm
+++ b/engine/events/magnet_train.asm
@@ -16,7 +16,7 @@
 	ld h, a
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wMagnetTrain)
 	ld [rSVBK], a
 
 	ld a, h
@@ -86,20 +86,20 @@
 MagnetTrain_UpdateLYOverrides: ; 8cc99
 	ld hl, LYOverridesBackup
 	ld c, $2f
-	ld a, [wcf64]
+	ld a, [wMagnetTrainOffset]
 	add a
 	ld [hSCX], a
 	call .loadloop
 	ld c, $30
-	ld a, [wcf65]
+	ld a, [wMagnetTrainPosition]
 	call .loadloop
 	ld c, $31
-	ld a, [wcf64]
+	ld a, [wMagnetTrainOffset]
 	add a
 	call .loadloop
 	ld a, [wMagnetTrainDirection]
 	ld d, a
-	ld hl, wcf64
+	ld hl, wMagnetTrainOffset
 	ld a, [hl]
 	add d
 	add d
@@ -129,7 +129,7 @@
 	ld [hSCY], a
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(wPlayerGender)
 	ld [rSVBK], a
 	farcall GetPlayerIcon
 	pop af
@@ -147,11 +147,11 @@
 	call MagnetTrain_InitLYOverrides
 	ld hl, wJumptableIndex
 	xor a
-	ld [hli], a
+	ld [hli], a ; wJumptableIndex
 	ld a, [wMagnetTrainInitPosition]
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
+	ld [hli], a ; wMagnetTrainOffset
+	ld [hli], a ; wMagnetTrainPosition
+	ld [hli], a ; wMagnetTrainWaitCounter
 	ld de, MUSIC_MAGNET_TRAIN
 	call PlayMusic2
 	ret
@@ -220,8 +220,7 @@
 ; 8cd82
 
 MagnetTrainBGTiles: ; 8cd82
-; Alternating tiles for each line
-; of the Magnet Train tilemap.
+; Alternating tiles for each line of the Magnet Train tilemap.
 	db $4c, $4d ; bush
 	db $5c, $5d ; bush
 	db $4c, $4d ; bush
@@ -263,25 +262,25 @@
 	; bushes
 	hlbgcoord 0, 0
 	ld bc, 4 * BG_MAP_WIDTH
-	ld a, $2
+	ld a, PAL_BG_GREEN
 	call ByteFill
 
 	; train
 	hlbgcoord 0, 4
 	ld bc, 10 * BG_MAP_WIDTH
-	xor a
+	xor a ; PAL_BG_GRAY
 	call ByteFill
 
 	; more bushes
 	hlbgcoord 0, 14
 	ld bc, 4 * BG_MAP_WIDTH
-	ld a, $2
+	ld a, PAL_BG_GREEN
 	call ByteFill
 
 	; train window
 	hlbgcoord 7, 8
 	ld bc, 6
-	ld a, $4
+	ld a, PAL_BG_YELLOW
 	call ByteFill
 
 	ld a, $0
@@ -325,7 +324,7 @@
 	ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(wPlayerGender)
 	ld [rSVBK], a
 	ld a, [wPlayerGender]
 	bit 0, a
@@ -342,13 +341,13 @@
 	ld [hl], $0
 	call .Next
 	ld a, $80
-	ld [wcf66], a
+	ld [wMagnetTrainWaitCounter], a
 	ret
 ; 8ce47
 
 .MoveTrain1: ; 8ce47
 	ld hl, wMagnetTrainHoldPosition
-	ld a, [wcf65]
+	ld a, [wMagnetTrainPosition]
 	cp [hl]
 	jr z, .PrepareToHoldTrain
 	ld e, a
@@ -356,7 +355,7 @@
 	xor $ff
 	inc a
 	add e
-	ld [wcf65], a
+	ld [wMagnetTrainPosition], a
 	ld hl, wGlobalAnimXOffset
 	ld a, [wMagnetTrainDirection]
 	add [hl]
@@ -366,12 +365,12 @@
 .PrepareToHoldTrain:
 	call .Next
 	ld a, $80
-	ld [wcf66], a
+	ld [wMagnetTrainWaitCounter], a
 	ret
 ; 8ce6d
 
 .WaitScene: ; 8ce6d
-	ld hl, wcf66
+	ld hl, wMagnetTrainWaitCounter
 	ld a, [hl]
 	and a
 	jr z, .DoneWaiting
@@ -385,7 +384,7 @@
 
 .MoveTrain2: ; 8ce7a
 	ld hl, wMagnetTrainFinalPosition
-	ld a, [wcf65]
+	ld a, [wMagnetTrainPosition]
 	cp [hl]
 	jr z, .PrepareToFinishAnim
 	ld e, a
@@ -396,7 +395,7 @@
 	ld a, e
 	add d
 	add d
-	ld [wcf65], a
+	ld [wMagnetTrainPosition], a
 	ld hl, wGlobalAnimXOffset
 	ld a, [wMagnetTrainDirection]
 	ld d, a
@@ -429,7 +428,7 @@
 	call DelayFrame
 	ld a, [rSVBK]
 	push af
-	ld a, $1
+	ld a, BANK(wEnvironment)
 	ld [rSVBK], a
 	ld a, [TimeOfDayPal]
 	push af
@@ -436,7 +435,7 @@
 	ld a, [wEnvironment]
 	push af
 	ld a, [TimeOfDay]
-	and $3
+	maskbits NUM_DAYTIMES
 	ld [TimeOfDayPal], a
 	ld a, $1
 	ld [wEnvironment], a
@@ -459,23 +458,11 @@
 ; 8ceff
 
 MagnetTrainTilemap1:
-	db $1f, $05, $06, $0a, $0a
-	db $0a, $09, $0a, $0a, $0a
-	db $0a, $0a, $0a, $09, $0a
-	db $0a, $0a, $0b, $0c, $1f
+	db $1f, $05, $06, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0b, $0c, $1f
 MagnetTrainTilemap2:
-	db $14, $15, $16, $1a, $1a
-	db $1a, $19, $1a, $1a, $1a
-	db $1a, $1a, $1a, $19, $1a
-	db $1a, $1a, $1b, $1c, $1d
+	db $14, $15, $16, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1b, $1c, $1d
 MagnetTrainTilemap3:
-	db $24, $25, $26, $27, $07
-	db $2f, $29, $28, $28, $28
-	db $28, $28, $28, $29, $07
-	db $2f, $2a, $2b, $2c, $2d
+	db $24, $25, $26, $27, $07, $2f, $29, $28, $28, $28, $28, $28, $28, $29, $07, $2f, $2a, $2b, $2c, $2d
 MagnetTrainTilemap4:
-	db $20, $1f, $2e, $1f, $17
-	db $00, $2e, $1f, $1f, $1f
-	db $1f, $1f, $1f, $2e, $17
-	db $00, $1f, $2e, $1f, $0f
+	db $20, $1f, $2e, $1f, $17, $00, $2e, $1f, $1f, $1f, $1f, $1f, $1f, $2e, $17, $00, $1f, $2e, $1f, $0f
 ; 8cf4f
--- /dev/null
+++ b/engine/events/map_name_sign.asm
@@ -1,0 +1,274 @@
+MAP_NAME_SIGN_START EQU $60
+
+ReturnFromMapSetupScript:: ; b8000
+	xor a
+	ld [hBGMapMode], a
+	farcall .inefficient_farcall ; this is a waste of 6 ROM bytes and 6 stack bytes
+	ret
+; b800a
+
+; should have just been a fallthrough
+.inefficient_farcall ; b800a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	ld [wCurrentLandmark], a
+	call .CheckNationalParkGate
+	jr z, .nationalparkgate
+
+	call GetMapEnvironment
+	cp GATE
+	jr nz, .not_gate
+
+.nationalparkgate
+	ld a, -1
+	ld [wCurrentLandmark], a
+
+.not_gate
+	ld hl, wEnteredMapFromContinue
+	bit 1, [hl]
+	res 1, [hl]
+	jr nz, .dont_do_map_sign
+
+	call .CheckMovingWithinLandmark
+	jr z, .dont_do_map_sign
+	ld a, [wCurrentLandmark]
+	ld [wPreviousLandmark], a
+
+	call .CheckSpecialMap
+	jr z, .dont_do_map_sign
+
+; Display for 60 frames
+	ld a, 60
+	ld [wLandmarkSignTimer], a
+	call LoadMapNameSignGFX
+	call InitMapNameFrame
+	farcall HDMATransfer_OnlyTopFourRows
+	ret
+
+.dont_do_map_sign
+	ld a, [wCurrentLandmark]
+	ld [wPreviousLandmark], a
+	ld a, $90
+	ld [rWY], a
+	ld [hWY], a
+	xor a
+	ld [hLCDCPointer], a
+	ret
+; b8064
+
+.CheckMovingWithinLandmark: ; b8064
+	ld a, [wCurrentLandmark]
+	ld c, a
+	ld a, [wPreviousLandmark]
+	cp c
+	ret z
+	cp SPECIAL_MAP
+	ret
+; b8070
+
+.CheckSpecialMap: ; b8070
+; These landmarks do not get pop-up signs.
+	cp -1
+	ret z
+	cp SPECIAL_MAP
+	ret z
+	cp RADIO_TOWER
+	ret z
+	cp LAV_RADIO_TOWER
+	ret z
+	cp UNDERGROUND_PATH
+	ret z
+	cp INDIGO_PLATEAU
+	ret z
+	cp POWER_PLANT
+	ret z
+	ld a, $1
+	and a
+	ret
+; b8089
+
+.CheckNationalParkGate: ; b8089
+	ld a, [MapGroup]
+	cp GROUP_ROUTE_35_NATIONAL_PARK_GATE
+	ret nz
+	ld a, [MapNumber]
+	cp MAP_ROUTE_35_NATIONAL_PARK_GATE
+	ret z
+	cp MAP_ROUTE_36_NATIONAL_PARK_GATE
+	ret
+; b8098
+
+
+PlaceMapNameSign:: ; b8098 (2e:4098)
+	ld hl, wLandmarkSignTimer
+	ld a, [hl]
+	and a
+	jr z, .disappear
+	dec [hl]
+	cp 60
+	ret z
+	cp 59
+	jr nz, .skip2
+	call InitMapNameFrame
+	call PlaceMapNameCenterAlign
+	farcall HDMATransfer_OnlyTopFourRows
+.skip2
+	ld a, $80
+	ld a, $70
+	ld [rWY], a
+	ld [hWY], a
+	ret
+
+.disappear
+	ld a, $90
+	ld [rWY], a
+	ld [hWY], a
+	xor a
+	ld [hLCDCPointer], a
+	ret
+
+
+LoadMapNameSignGFX: ; b80c6
+	ld de, MapEntryFrameGFX
+	ld hl, vTiles2 tile MAP_NAME_SIGN_START
+	lb bc, BANK(MapEntryFrameGFX), 14
+	call Get2bpp
+	ret
+; b80d3
+
+InitMapNameFrame: ; b80d3
+	hlcoord 0, 0
+	ld b, 2
+	ld c, 18
+	call InitMapSignAttrMap
+	call PlaceMapNameFrame
+	ret
+; b80e1
+
+
+PlaceMapNameCenterAlign: ; b80e1 (2e:40e1)
+	ld a, [wCurrentLandmark]
+	ld e, a
+	farcall GetLandmarkName
+	call .GetNameLength
+	ld a, SCREEN_WIDTH
+	sub c
+	srl a
+	ld b, $0
+	ld c, a
+	hlcoord 0, 2
+	add hl, bc
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+
+.GetNameLength: ; b8101 (2e:4101)
+	ld c, 0
+	push hl
+	ld hl, StringBuffer1
+.loop
+	ld a, [hli]
+	cp "@"
+	jr z, .stop
+	cp "%"
+	jr z, .loop
+	inc c
+	jr .loop
+.stop
+	pop hl
+	ret
+
+
+InitMapSignAttrMap: ; b8115
+	ld de, AttrMap - TileMap
+	add hl, de
+	inc b
+	inc b
+	inc c
+	inc c
+	ld a, PAL_BG_TEXT | PRIORITY
+.loop
+	push bc
+	push hl
+.inner_loop
+	ld [hli], a
+	dec c
+	jr nz, .inner_loop
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .loop
+	ret
+; b812f
+
+PlaceMapNameFrame: ; b812f
+	hlcoord 0, 0
+	; top left
+	ld a, MAP_NAME_SIGN_START + 1
+	ld [hli], a
+	; top row
+	ld a, MAP_NAME_SIGN_START + 2
+	call .FillTopBottom
+	; top right
+	ld a, MAP_NAME_SIGN_START + 4
+	ld [hli], a
+	; left, first line
+	ld a, MAP_NAME_SIGN_START + 5
+	ld [hli], a
+	; first line
+	call .FillMiddle
+	; right, first line
+	ld a, MAP_NAME_SIGN_START + 11
+	ld [hli], a
+	; left, second line
+	ld a, MAP_NAME_SIGN_START + 6
+	ld [hli], a
+	; second line
+	call .FillMiddle
+	; right, second line
+	ld a, MAP_NAME_SIGN_START + 12
+	ld [hli], a
+	; bottom left
+	ld a, MAP_NAME_SIGN_START + 7
+	ld [hli], a
+	; bottom
+	ld a, MAP_NAME_SIGN_START + 8
+	call .FillTopBottom
+	; bottom right
+	ld a, MAP_NAME_SIGN_START + 10
+	ld [hl], a
+	ret
+; b815b
+
+.FillMiddle: ; b815b
+	ld c, SCREEN_WIDTH - 2
+	ld a, MAP_NAME_SIGN_START + 13
+.loop
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	ret
+; b8164
+
+.FillTopBottom: ; b8164
+	ld c, 5
+	jr .enterloop
+
+.continueloop
+	ld [hli], a
+	ld [hli], a
+
+.enterloop
+	inc a
+	ld [hli], a
+	ld [hli], a
+	dec a
+	dec c
+	jr nz, .continueloop
+	ret
+; b8172
--- a/engine/events/misc_scripts.asm
+++ b/engine/events/misc_scripts.asm
@@ -2,7 +2,7 @@
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iffalse .finish
 	setflag ENGINE_DAILY_BUG_CONTEST
-	special ContestReturnMons
+	special Special_ContestReturnMons
 .finish
 	end
 
--- a/engine/events/misc_scripts_2.asm
+++ b/engine/events/misc_scripts_2.asm
@@ -13,7 +13,7 @@
 HiddenItemScript:: ; 0x13625
 	opentext
 	copybytetovar EngineBuffer3
-	itemtotext 0, 0
+	itemtotext USE_SCRIPT_VAR, MEM_BUFFER_0
 	writetext .found_text
 	giveitem ITEM_FROM_MEM
 	iffalse .bag_full
--- a/engine/events/mom.asm
+++ b/engine/events/mom.asm
@@ -146,7 +146,7 @@
 	ld [hli], a
 	ld [hl], a
 	ld a, $5
-	ld [wcf64], a
+	ld [wMomBankDigitCursorPosition], a
 	call LoadStandardMenuDataHeader
 	call Mom_SetUpDepositMenu
 	call Mom_Wait10Frames
@@ -213,7 +213,7 @@
 	ld [hli], a
 	ld [hl], a
 	ld a, $5
-	ld [wcf64], a
+	ld [wMomBankDigitCursorPosition], a
 	call LoadStandardMenuDataHeader
 	call Mom_SetUpWithdrawMenu
 	call Mom_Wait10Frames
@@ -728,15 +728,14 @@
 ; 166b5
 
 MenuDataHeader_0x166b5: ; 0x166b5
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 10, 10 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 10, 10
 	dw MenuData2_0x166bd
 	db 1 ; default option
 ; 0x166bd
 
 MenuData2_0x166bd: ; 0x166bd
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "GET@"
 	db "SAVE@"
--- a/engine/events/mom_phone.asm
+++ b/engine/events/mom_phone.asm
@@ -9,7 +9,7 @@
 	ld a, [wMapReentryScriptQueueFlag]
 	and a
 	ret nz
-	call GetMapHeaderPhoneServiceNybble
+	call GetMapPhoneService
 	and a
 	ret nz
 	xor a
@@ -217,7 +217,7 @@
 
 INCLUDE "data/items/mom_phone.asm"
 
-	db 0, 0, 0 ; XXX
+	db 0, 0, 0 ; unused
 
 _MomText_HiHowAreYou: ; 0xfd1b1
 	; Hi,  ! How are you?
@@ -255,10 +255,10 @@
 	db "@"
 ; 0xfd1cf
 
-	db 0 ; XXX
+	db 0 ; unused
 
-Predef3A: ; fd1d0
+DummyPredef3A: ; fd1d0
 	ret
 ; fd1d1
 
-	ret ; XXX
+	ret ; unused
--- a/engine/events/move_deleter.asm
+++ b/engine/events/move_deleter.asm
@@ -1,4 +1,4 @@
-MoveDeletion:
+Special_MoveDeletion:
 	ld hl, .IntroText
 	call PrintText
 	call YesNoBox
--- a/engine/events/move_tutor.asm
+++ b/engine/events/move_tutor.asm
@@ -22,7 +22,7 @@
 .enter_loop
 	call CheckCanLearnMoveTutorMove
 	jr nc, .loop
-	xor a
+	xor a ; FALSE
 	ld [ScriptVar], a
 	jr .quit
 
@@ -35,10 +35,11 @@
 
 .GetMoveTutorMove: ; 492a5
 	ld a, [ScriptVar]
-	cp 1
+	cp MOVETUTOR_FLAMETHROWER
 	jr z, .flamethrower
-	cp 2
+	cp MOVETUTOR_THUNDERBOLT
 	jr z, .thunderbolt
+	; MOVETUTOR_ICE_BEAM
 	ld a, ICE_BEAM
 	ret
 
@@ -98,6 +99,5 @@
 	ret
 
 .MenuDataHeader: ; 0x4930a
-	db $40 ; flags
-	db 12, 00 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
--- a/engine/events/name_rater.asm
+++ b/engine/events/name_rater.asm
@@ -45,13 +45,13 @@
 	jr c, .samename
 ; Copy the new name from StringBuffer2
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld e, l
 	ld d, h
 	ld hl, StringBuffer2
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ld hl, NameRaterEvenBetterText
 
@@ -115,7 +115,7 @@
 IsNewNameEmpty: ; fb7be
 ; Checks to see if the nickname loaded in StringBuffer2 is empty.  If so, return carry.
 	ld hl, StringBuffer2
-	ld c, PKMN_NAME_LENGTH - 1
+	ld c, MON_NAME_LENGTH - 1
 .loop
 	ld a, [hli]
 	cp "@"
@@ -137,7 +137,7 @@
 CompareNewToOld: ; fb7d3
 ; Compares the nickname in StringBuffer2 to the previous nickname.  If they are the same, return carry.
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	push hl
@@ -178,7 +178,7 @@
 	ret z
 	inc c
 	ld a, c
-	cp PKMN_NAME_LENGTH - 1
+	cp MON_NAME_LENGTH - 1
 	jr nz, .loop
 	ret
 ; fb80f
--- a/engine/events/odd_egg.asm
+++ b/engine/events/odd_egg.asm
@@ -43,7 +43,7 @@
 	call AddNTimes
 
 	ld de, OddEggSpecies
-	ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
+	ld bc, PARTYMON_STRUCT_LENGTH + 2 * MON_NAME_LENGTH
 	call CopyBytes
 
 	ld a, EGG_TICKET
@@ -73,7 +73,7 @@
 	; load Odd Egg Name in wTempOddEggNickname
 	ld hl, .Odd
 	ld de, wTempOddEggNickname
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 	; load pointer to wTempOddEggNickname in wMobileMonOTNamePointerBuffer
--- a/engine/events/overworld.asm
+++ b/engine/events/overworld.asm
@@ -427,7 +427,7 @@
 	end
 
 .empty_fn ; c9a2
-	farcall TrainerRankings_Surf
+	farcall StubbedTrainerRankings_Surf
 	ret
 
 UsedSurfText: ; c9a9
@@ -623,7 +623,7 @@
 	special UpdateTimePals
 	callasm FlyFromAnim
 	farscall Script_AbortBugContest
-	special WarpToSpawnPoint
+	special Special_WarpToSpawnPoint
 	callasm DelayLoadingNewSprites
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_FLY
@@ -700,7 +700,7 @@
 	ld a, [PlayerStandingTile]
 	call CheckWaterfallTile
 	ret z
-	farcall TrainerRankings_Waterfall
+	farcall StubbedTrainerRankings_Waterfall
 	ld a, $1
 	ld [ScriptVar], a
 	ret
@@ -871,7 +871,7 @@
 	playsound SFX_WARP_TO
 	applymovement PLAYER, .DigOut
 	farscall Script_AbortBugContest
-	special WarpToSpawnPoint
+	special Special_WarpToSpawnPoint
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_DOOR
 	playsound SFX_WARP_FROM
@@ -958,7 +958,7 @@
 	playsound SFX_WARP_TO
 	applymovement PLAYER, .TeleportFrom
 	farscall Script_AbortBugContest
-	special WarpToSpawnPoint
+	special Special_WarpToSpawnPoint
 	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_TELEPORT
 	playsound SFX_WARP_FROM
@@ -986,7 +986,7 @@
 	jr c, .Failed
 	jr .UseStrength
 
-.AlreadyUsing: ; unreferenced
+.Unreferenced_AlreadyUsing:
 	ld hl, .JumpText
 	call MenuTextBoxBackup
 	ld a, $80
@@ -1749,7 +1749,7 @@
 	special ReplaceKrisSprite
 	end
 
-; XXX
+; unused
 	nop
 	ret
 
--- a/engine/events/poisonstep_pals.asm
+++ b/engine/events/poisonstep_pals.asm
@@ -10,8 +10,8 @@
 	and a
 	jr nz, .cgb
 	ld a, [TimeOfDayPal]
-	and $3
-	cp $3
+	maskbits NUM_DAYTIMES
+	cp DARKNESS_F
 	ld a, %00000000
 	jr z, .convert_pals
 	ld a, %10101010
@@ -26,12 +26,11 @@
 .cgb
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals2)
 	ld [rSVBK], a
 	ld hl, wBGPals2
 	ld c, 4 palettes
 .loop
-; RGB 28, 21, 31
 	ld a, LOW(palred 28 + palgreen 21 + palblue 31)
 	ld [hli], a
 	ld a, HIGH(palred 28 + palgreen 21 + palblue 31)
--- a/engine/events/poke_seer.asm
+++ b/engine/events/poke_seer.asm
@@ -15,12 +15,12 @@
 	const SEERACTION_CANT_TELL_2
 	const SEERACTION_LEVEL_ONLY
 
-SpecialPokeSeer: ; 4f0bc
+Special_PokeSeer: ; 4f0bc
 	ld a, SEER_INTRO
 	call PrintSeerText
 	call JoyWaitAorB
 
-	ld b, $6
+	ld b, PARTY_LENGTH
 	farcall SelectMonFromParty
 	jr c, .cancel
 
@@ -148,10 +148,10 @@
 GetCaughtName: ; 4f176
 	ld a, [CurPartyMon]
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call AddNTimes
 	ld de, wSeerNickname
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ret
 ; 4f18c
@@ -163,11 +163,11 @@
 	call ByteFill
 
 	; caught level
-	; Limited to between 1 and 63 for some reason.
+	; Limited to between 1 and 63 since it's a 6-bit quantity.
 	ld a, [wSeerCaughtData]
-	and $3f
+	and CAUGHT_LEVEL_MASK
 	jr z, .unknown
-	cp 1 ; hatched from an egg
+	cp CAUGHT_EGG_LEVEL ; egg marker value
 	jr nz, .print
 	ld a, EGG_LEVEL ; egg hatch level
 
@@ -193,7 +193,7 @@
 
 GetCaughtTime: ; 4f1c5
 	ld a, [wSeerCaughtData]
-	and $c0
+	and CAUGHT_TIME_MASK
 	jr z, .none
 
 	rlca
@@ -233,11 +233,11 @@
 
 GetCaughtLocation: ; 4f20a
 	ld a, [wSeerCaughtGender]
-	and $7f
+	and CAUGHT_LOCATION_MASK
 	jr z, .Unknown
-	cp $7f
+	cp EVENT_LOCATION
 	jr z, .event
-	cp $7e
+	cp GIFT_LOCATION
 	jr z, .fail
 	ld e, a
 	farcall GetLandmarkName
@@ -440,22 +440,22 @@
 	add hl, bc
 
 	ld a, [hl]
-	and $7f
+	and CAUGHT_LOCATION_MASK
 	jr z, .genderless
-	cp $7f
+	cp EVENT_LOCATION
 	jr z, .genderless
 
 	ld a, [hl]
-	and $80
+	and CAUGHT_GENDER_MASK
 	jr nz, .male
-	ld c, 1
+	ld c, CAUGHT_BY_GIRL
 	ret
 
 .male
-	ld c, 2
+	ld c, CAUGHT_BY_BOY
 	ret
 
 .genderless
-	ld c, 0
+	ld c, CAUGHT_BY_UNKNOWN
 	ret
 ; 4f31c
--- a/engine/events/pokecenter_pc.asm
+++ b/engine/events/pokecenter_pc.asm
@@ -1,4 +1,4 @@
-PokemonCenterPC: ; 1559a
+Special_PokemonCenterPC: ; 1559a
 	call PC_CheckPartyForPokemon
 	ret c
 	call PC_PlayBootSound
@@ -27,14 +27,13 @@
 	ret
 
 .TopMenu:
-	db $48 ; flags
-	db 00, 00 ; start coords
-	db 12, 15 ; end coords
+	db MENU_BACKUP_TILES | MENU_NO_CLICK_SFX ; flags
+	menu_coords 0, 0, 15, 12
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 0 ; items
 	dw .WhichPC
 	dw PlaceNthMenuStrings
@@ -232,7 +231,7 @@
 ; 15736
 
 KrissPCMenuData: ; 0x15736
-	db %01000000
+	db MENU_BACKUP_TILES ; flags
 	db  0,  0 ; top left corner coords (y, x)
 	db 12, 15 ; bottom right corner coords (y, x)
 	dw .KrissPCMenuData2
@@ -239,7 +238,7 @@
 	db 1 ; default selected option
 
 .KrissPCMenuData2:
-	db %10100000 ; bit7
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 0 ; # items?
 	dw .KrissPCMenuList1
 	dw PlaceNthMenuStrings
@@ -421,7 +420,7 @@
 	farcall DepositSellInitPackBuffers
 .loop
 	farcall DepositSellPack
-	ld a, [wcf66]
+	ld a, [wPackUsedItem]
 	and a
 	jr z, .close
 	call .TryDepositItem
@@ -620,14 +619,13 @@
 	ret
 
 .PCItemsMenuData:
-	db %01000000
-	db  1,  4 ; start coords
-	db 10, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 4, 1, 18, 10
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db %10110000
+	db SCROLLINGMENU_ENABLE_SELECT | SCROLLINGMENU_ENABLE_FUNCTION3 | SCROLLINGMENU_DISPLAY_ARROWS ; flags
 	db 4, 8 ; rows/cols?
 	db 2 ; horizontal spacing?
 	dbw 0, PCItems
--- a/engine/events/pokepic.asm
+++ b/engine/events/pokepic.asm
@@ -42,8 +42,7 @@
 	ret
 
 PokepicMenuDataHeader: ; 0x24547
-	db $40 ; flags
-	db 04, 06 ; start coords
-	db 13, 14 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 6, 4, 14, 13
 	dw NULL
 	db 1 ; default option
--- a/engine/events/print_photo.asm
+++ b/engine/events/print_photo.asm
@@ -1,4 +1,4 @@
-PhotoStudio: ; 16dc7
+Special_PhotoStudio: ; 16dc7
 	ld hl, .Text_AskWhichMon
 	call PrintText
 	farcall SelectMonFromParty
--- a/engine/events/print_unown.asm
+++ b/engine/events/print_unown.asm
@@ -154,7 +154,7 @@
 .Load2bppToSRAM: ; 16cff
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	ld a, BANK(sScratch)
@@ -178,7 +178,7 @@
 	hlcoord 1, 9
 	ld de, UnownDexVacantString
 	call PlaceString
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 	ld hl, sScratch
 	ld bc, $31 tiles
--- a/engine/events/print_unown_2.asm
+++ b/engine/events/print_unown_2.asm
@@ -1,7 +1,7 @@
 RotateUnownFrontpic: ; e0000
 ; something to do with Unown printer
 	push de
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 	ld hl, sScratch
 	ld bc, 0
--- a/engine/events/prof_oaks_pc.asm
+++ b/engine/events/prof_oaks_pc.asm
@@ -3,7 +3,7 @@
 	call MenuTextBox
 	call YesNoBox
 	jr c, .shutdown
-	call ProfOaksPCBoot ; player chose "yes"?
+	call Special_ProfOaksPCBoot ; player chose "yes"?
 .shutdown
 	ld hl, OakPCText4
 	call PrintText
@@ -11,7 +11,7 @@
 	call ExitMenu
 	ret
 
-ProfOaksPCBoot ; 0x265ee
+Special_ProfOaksPCBoot ; 0x265ee
 	ld hl, OakPCText2
 	call PrintText
 	call Rate
--- a/engine/events/sacred_ash.asm
+++ b/engine/events/sacred_ash.asm
@@ -52,12 +52,12 @@
 	special HealParty
 	reloadmappart
 	playsound SFX_WARP_TO
-	special FadeOutPalettes
-	special FadeInPalettes
-	special FadeOutPalettes
-	special FadeInPalettes
-	special FadeOutPalettes
-	special FadeInPalettes
+	special Special_FadeOutPalettes
+	special Special_FadeInPalettes
+	special Special_FadeOutPalettes
+	special Special_FadeInPalettes
+	special Special_FadeOutPalettes
+	special Special_FadeInPalettes
 	waitsfx
 	writetext UnknownText_0x50845
 	playsound SFX_CAUGHT_MON
--- a/engine/events/special.asm
+++ b/engine/events/special.asm
@@ -1,5 +1,7 @@
-SpecialGiveShuckle: ; 7305
+MANIA_OT_ID EQU 00518
 
+Special_GiveShuckle: ; 7305
+
 ; Adding to the party.
 	xor a
 	ld [MonType], a
@@ -32,9 +34,9 @@
 ; OT ID.
 	ld hl, PartyMon1ID
 	call AddNTimes
-	ld a, $2
+	ld a, HIGH(MANIA_OT_ID)
 	ld [hli], a
-	ld [hl], $6
+	ld [hl], LOW(MANIA_OT_ID)
 
 ; Nickname.
 	ld a, [PartyCount]
@@ -54,8 +56,7 @@
 
 ; Engine flag for this event.
 	ld hl, wDailyFlags
-	set 5, [hl]
-; setflag ENGINE_SHUCKLE_GIVEN
+	set 5, [hl] ; ENGINE_SHUCKLE_GIVEN
 	ld a, 1
 	ld [ScriptVar], a
 	ret
@@ -70,7 +71,7 @@
 SpecialShuckleNick:
 	db "SHUCKIE@"
 
-SpecialReturnShuckle: ; 737e
+Special_ReturnShuckle: ; 737e
 	farcall SelectMonFromParty
 	jr c, .refused
 
@@ -85,10 +86,10 @@
 
 ; OT ID
 	ld a, [hli]
-	cp HIGH(00518)
+	cp HIGH(MANIA_OT_ID)
 	jr nz, .DontReturn
 	ld a, [hl]
-	cp LOW(00518)
+	cp LOW(MANIA_OT_ID)
 	jr nz, .DontReturn
 
 ; OT
@@ -115,28 +116,28 @@
 	call AddNTimes
 	ld a, [hl]
 	cp 150
-	ld a, $3
+	ld a, SHUCKIE_HAPPY
 	jr nc, .HappyToStayWithYou
 	xor a ; take from pc
 	ld [wPokemonWithdrawDepositParameter], a
 	callfar RemoveMonFromPartyOrBox
-	ld a, $2
+	ld a, SHUCKIE_RETURNED
 .HappyToStayWithYou:
 	ld [ScriptVar], a
 	ret
 
 .refused
-	ld a, $1
+	ld a, SHUCKIE_REFUSED
 	ld [ScriptVar], a
 	ret
 
 .DontReturn:
-	xor a
+	xor a ; SHUCKIE_WRONG_MON
 	ld [ScriptVar], a
 	ret
 
 .fainted
-	ld a, $4
+	ld a, SHUCKIE_FAINTED
 	ld [ScriptVar], a
 	ret
 
@@ -227,9 +228,8 @@
 CopyPokemonName_Buffer1_Buffer3: ; 746e
 	ld hl, StringBuffer1
 	ld de, StringBuffer3
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	jp CopyBytes
 
-Predef1: ; 747a
-; not used
+DummyPredef1: ; 747a
 	ret
--- a/engine/events/std_scripts.asm
+++ b/engine/events/std_scripts.asm
@@ -1,4 +1,5 @@
 StdScripts::
+; entries correspond to constants/std_constants.asm
 	dba PokecenterNurseScript
 	dba DifficultBookshelfScript
 	dba PictureBookshelfScript
@@ -107,13 +108,13 @@
 
 	farwritetext NurseTakePokemonText
 	pause 20
-	special TrainerRankings_Healings
+	special Special_StubbedTrainerRankings_Healings
 	spriteface LAST_TALKED, LEFT
 	pause 10
 	special HealParty
 	playmusic MUSIC_NONE
-	writebyte 0 ; Machine is at a Pokemon Center
-	special HealMachineAnim
+	writebyte HEALMACHINE_POKECENTER
+	special Special_HealMachineAnim
 	pause 30
 	special RestartMapMusic
 	spriteface LAST_TALKED, DOWN
@@ -123,7 +124,7 @@
 	iftrue .no
 	checkflag ENGINE_POKERUS ; nurse already talked about pokerus
 	iftrue .no
-	special SpecialCheckPokerus
+	special Special_CheckPokerus
 	iftrue .pokerus
 .no
 
@@ -203,7 +204,7 @@
 Radio1Script:
 	opentext
 	writebyte MAPRADIO_POKEMON_CHANNEL
-	special MapRadio
+	special Special_MapRadio
 	closetext
 	end
 
@@ -211,7 +212,7 @@
 ; Lucky Channel
 	opentext
 	writebyte MAPRADIO_LUCKY_CHANNEL
-	special MapRadio
+	special Special_MapRadio
 	closetext
 	end
 
@@ -220,7 +221,7 @@
 
 PCScript:
 	opentext
-	special PokemonCenterPC
+	special Special_PokemonCenterPC
 	closetext
 	end
 
@@ -250,25 +251,25 @@
 	if_equal THURSDAY, .Thursday
 	if_equal FRIDAY, .Friday
 	if_equal SATURDAY, .Saturday
-	stringtotext .SundayText, 0
+	stringtotext .SundayText, MEM_BUFFER_0
 	end
 .Monday:
-	stringtotext .MondayText, 0
+	stringtotext .MondayText, MEM_BUFFER_0
 	end
 .Tuesday:
-	stringtotext .TuesdayText, 0
+	stringtotext .TuesdayText, MEM_BUFFER_0
 	end
 .Wednesday:
-	stringtotext .WednesdayText, 0
+	stringtotext .WednesdayText, MEM_BUFFER_0
 	end
 .Thursday:
-	stringtotext .ThursdayText, 0
+	stringtotext .ThursdayText, MEM_BUFFER_0
 	end
 .Friday:
-	stringtotext .FridayText, 0
+	stringtotext .FridayText, MEM_BUFFER_0
 	end
 .Saturday:
-	stringtotext .SaturdayText, 0
+	stringtotext .SaturdayText, MEM_BUFFER_0
 	end
 .SundayText:
 	db "SUNDAY@"
@@ -297,7 +298,7 @@
 	clearevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
 	setevent EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_EAST
 	specialphonecall SPECIALCALL_WEIRDBROADCAST
-	setmapscene MAHOGANY_TOWN, $1
+	setmapscene MAHOGANY_TOWN, 1
 	end
 
 BugContestResultsWarpScript:
@@ -306,7 +307,7 @@
 	setevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
 	clearevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
 	setevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
-	warp ROUTE_36_NATIONAL_PARK_GATE, $0, $4
+	warp ROUTE_36_NATIONAL_PARK_GATE, 0, 4
 	applymovement PLAYER, Movement_ContestResults_WalkAfterWarp
 
 BugContestResultsScript:
@@ -319,8 +320,8 @@
 	opentext
 	farwritetext ContestResults_ReadyToJudgeText
 	waitbutton
-	special BugContestJudging
-	RAM2MEM $0
+	special Special_BugContestJudging
+	vartomem MEM_BUFFER_0
 	if_equal 1, BugContestResults_FirstPlace
 	if_equal 2, BugContestResults_SecondPlace
 	if_equal 3, BugContestResults_ThirdPlace
@@ -345,17 +346,18 @@
 	iffalse BugContestResults_DidNotLeaveMons
 	farwritetext ContestResults_ReturnPartyText
 	waitbutton
-	special ContestReturnMons
+	special Special_ContestReturnMons
 BugContestResults_DidNotLeaveMons
-	special CheckPartyFullAfterContest
-	if_equal $0, BugContestResults_CleanUp
-	if_equal $2, BugContestResults_CleanUp
+	special Special_CheckPartyFullAfterContest
+	if_equal BUGCONTEST_CAUGHT_MON, BugContestResults_CleanUp
+	if_equal BUGCONTEST_NO_CATCH, BugContestResults_CleanUp
+	; BUGCONTEST_BOXED_MON
 	farwritetext ContestResults_PartyFullText
 	waitbutton
 BugContestResults_CleanUp
 	closetext
-	setscene $0
-	setmapscene ROUTE_35_NATIONAL_PARK_GATE, $0
+	setscene 0
+	setmapscene ROUTE_35_NATIONAL_PARK_GATE, 0
 	setevent EVENT_BUG_CATCHING_CONTESTANT_1A
 	setevent EVENT_BUG_CATCHING_CONTESTANT_2A
 	setevent EVENT_BUG_CATCHING_CONTESTANT_3A
@@ -383,7 +385,7 @@
 
 BugContestResults_FirstPlace ; 0xbc31e
 	setevent EVENT_GAVE_KURT_APRICORNS
-	itemtotext SUN_STONE, $1
+	itemtotext SUN_STONE, MEM_BUFFER_1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	waitbutton
 	verbosegiveitem SUN_STONE
@@ -392,7 +394,7 @@
 ; 0xbc332
 
 BugContestResults_SecondPlace ; 0xbc332
-	itemtotext EVERSTONE, $1
+	itemtotext EVERSTONE, MEM_BUFFER_1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	waitbutton
 	verbosegiveitem EVERSTONE
@@ -401,7 +403,7 @@
 ; 0xbc343
 
 BugContestResults_ThirdPlace ; 0xbc343
-	itemtotext GOLD_BERRY, $1
+	itemtotext GOLD_BERRY, MEM_BUFFER_1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	waitbutton
 	verbosegiveitem GOLD_BERRY
@@ -620,7 +622,7 @@
 	return
 
 AskNumber1MScript:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -705,7 +707,7 @@
 	end
 
 AskNumber2MScript:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	checkcode VAR_CALLERID
 	if_equal PHONE_SCHOOLBOY_JACK, .Jack
 	if_equal PHONE_SAILOR_HUEY, .Huey
@@ -1758,7 +1760,7 @@
 	end
 
 GymStatue1Script:
-	mapnametotext $0
+	mapnametotext MEM_BUFFER_0
 	opentext
 	farwritetext GymStatue_CityGymText
 	waitbutton
@@ -1766,7 +1768,7 @@
 	end
 
 GymStatue2Script:
-	mapnametotext $0
+	mapnametotext MEM_BUFFER_0
 	opentext
 	farwritetext GymStatue_CityGymText
 	buttonsound
@@ -1812,18 +1814,18 @@
 	loadmenudata .MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .Buy50
-	if_equal $2, .Buy500
+	if_equal 1, .Buy50
+	if_equal 2, .Buy500
 	jump .Cancel
 ; 0xbcdf7
 
 .Buy50: ; 0xbcdf7
-	checkcoins 9949
-	if_equal $0, .CoinCaseFull
-	checkmoney $0, 1000
-	if_equal $2, .NotEnoughMoney
+	checkcoins MAX_COINS - 50
+	if_equal HAVE_MORE, .CoinCaseFull
+	checkmoney YOUR_MONEY, 1000
+	if_equal HAVE_LESS, .NotEnoughMoney
 	givecoins 50
-	takemoney $0, 1000
+	takemoney YOUR_MONEY, 1000
 	waitsfx
 	playsound SFX_TRANSACTION
 	farwritetext CoinVendor_Buy50CoinsText
@@ -1832,12 +1834,12 @@
 ; 0xbce1b
 
 .Buy500: ; 0xbce1b
-	checkcoins 9499
-	if_equal $0, .CoinCaseFull
-	checkmoney $0, 10000
-	if_equal $2, .NotEnoughMoney
+	checkcoins MAX_COINS - 500
+	if_equal HAVE_MORE, .CoinCaseFull
+	checkmoney YOUR_MONEY, 10000
+	if_equal HAVE_LESS, .NotEnoughMoney
 	givecoins 500
-	takemoney $0, 10000
+	takemoney YOUR_MONEY, 10000
 	waitsfx
 	playsound SFX_TRANSACTION
 	farwritetext CoinVendor_Buy500CoinsText
@@ -1868,14 +1870,13 @@
 
 
 .MenuDataHeader:
-	db $40 ; flags
-	db 04, 00 ; start coords
-	db 11, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 4, 15, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
 	db " 50 :  ¥1000@"
 	db "500 : ¥10000@"
@@ -1886,7 +1887,7 @@
 HappinessCheckScript:
 	faceplayer
 	opentext
-	special GetFirstPokemonHappiness
+	special Special_GetFirstPokemonHappiness
 	if_less_than 50, .Unhappy
 	if_less_than 150, .KindaHappy
 	farwritetext HappinessText3
--- /dev/null
+++ b/engine/events/treemons.asm
@@ -1,0 +1,285 @@
+TreeMonEncounter: ; b81ea
+	farcall StubbedTrainerRankings_TreeEncounters
+
+	xor a
+	ld [TempWildMonSpecies], a
+	ld [CurPartyLevel], a
+
+	ld hl, TreeMonMaps
+	call GetTreeMonSet
+	jr nc, .no_battle
+
+	call GetTreeMons
+	jr nc, .no_battle
+
+	call GetTreeMon
+	jr nc, .no_battle
+
+	ld a, BATTLETYPE_TREE
+	ld [BattleType], a
+	ld a, 1
+	ld [ScriptVar], a
+	ret
+
+.no_battle
+	xor a
+	ld [ScriptVar], a
+	ret
+; b8219
+
+RockMonEncounter: ; b8219
+
+	xor a
+	ld [TempWildMonSpecies], a
+	ld [CurPartyLevel], a
+
+	ld hl, RockMonMaps
+	call GetTreeMonSet
+	jr nc, .no_battle
+
+	call GetTreeMons
+	jr nc, .no_battle
+
+	; 40% chance of an encounter
+	ld a, 10
+	call RandomRange
+	cp 4
+	jr nc, .no_battle
+
+	call SelectTreeMon
+	jr nc, .no_battle
+
+	ret
+
+.no_battle
+	xor a
+	ret
+; b823e
+
+	db $05 ; ????
+
+GetTreeMonSet: ; b823f
+; Return carry and treemon set in a
+; if the current map is in table hl.
+	ld a, [MapNumber]
+	ld e, a
+	ld a, [MapGroup]
+	ld d, a
+.loop
+	ld a, [hli]
+	cp -1
+	jr z, .not_in_table
+
+	cp d
+	jr nz, .skip2
+
+	ld a, [hli]
+	cp e
+	jr nz, .skip1
+
+	jr .in_table
+
+.skip2
+	inc hl
+.skip1
+	inc hl
+	jr .loop
+
+.not_in_table
+	xor a
+	ret
+
+.in_table
+	ld a, [hl]
+	scf
+	ret
+; b825e
+
+INCLUDE "data/wild/treemon_maps.asm"
+
+GetTreeMons: ; b82d2
+; Return the address of TreeMon table a in hl.
+; Return nc if table a doesn't exist.
+
+	cp NUM_TREEMON_SETS
+	jr nc, .quit
+
+	and a
+	jr z, .quit
+
+	ld e, a
+	ld d, 0
+	ld hl, TreeMons
+	add hl, de
+	add hl, de
+
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	scf
+	ret
+
+.quit
+	xor a
+	ret
+; b82e8
+
+INCLUDE "data/wild/treemons.asm"
+
+GetTreeMon: ; b83e5
+	push hl
+	call GetTreeScore
+	pop hl
+	and a ; TREEMON_SCORE_BAD
+	jr z, .bad
+	cp TREEMON_SCORE_GOOD
+	jr z, .good
+	cp TREEMON_SCORE_RARE
+	jr z, .rare
+	ret
+
+.bad
+	; 10% chance of an encounter
+	ld a, 10
+	call RandomRange
+	and a
+	jr nz, NoTreeMon
+	jr SelectTreeMon
+
+.good
+	; 50% chance of an encounter
+	ld a, 10
+	call RandomRange
+	cp 5
+	jr nc, NoTreeMon
+	jr SelectTreeMon
+
+.rare
+	; 80% chance of an encounter
+	ld a, 10
+	call RandomRange
+	cp 8
+	jr nc, NoTreeMon
+	jr .skip
+.skip
+	ld a, [hli]
+	cp -1
+	jr nz, .skip
+	call SelectTreeMon
+	ret
+; b841f
+
+SelectTreeMon: ; b841f
+; Read a TreeMons table and pick one monster at random.
+
+	ld a, 100
+	call RandomRange
+.loop
+	sub [hl]
+	jr c, .ok
+	inc hl
+	inc hl
+	inc hl
+	jr .loop
+
+.ok
+	ld a, [hli]
+	cp -1
+	jr z, NoTreeMon
+
+	ld a, [hli]
+	ld [TempWildMonSpecies], a
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	scf
+	ret
+
+NoTreeMon: ; b843b
+	xor a
+	ld [TempWildMonSpecies], a
+	ld [CurPartyLevel], a
+	ret
+; b8443
+
+GetTreeScore: ; b8443
+	call .CoordScore
+	ld [Buffer1], a
+	call .OTIDScore
+	ld [Buffer2], a
+	ld c, a
+	ld a, [Buffer1]
+	sub c
+	jr z, .rare
+	jr nc, .ok
+	add 10
+.ok
+	cp 5
+	jr c, .good
+
+.bad
+	xor a ; TREEMON_SCORE_BAD
+	ret
+
+.good
+	ld a, TREEMON_SCORE_GOOD
+	ret
+
+.rare
+	ld a, TREEMON_SCORE_RARE
+	ret
+; b8466
+
+.CoordScore: ; b8466
+	call GetFacingTileCoord
+	ld hl, 0
+	ld c, e
+	ld b, 0
+	ld a, d
+
+	and a
+	jr z, .next
+.loop
+	add hl, bc
+	dec a
+	jr nz, .loop
+.next
+
+	add hl, bc
+	ld c, d
+	add hl, bc
+
+	ld a, h
+	ld [hDividend], a
+	ld a, l
+	ld [hDividend + 1], a
+	ld a, 5
+	ld [hDivisor], a
+	ld b, 2
+	call Divide
+
+	ld a, [hQuotient + 1]
+	ld [hDividend], a
+	ld a, [hQuotient + 2]
+	ld [hDividend + 1], a
+	ld a, 10
+	ld [hDivisor], a
+	ld b, 2
+	call Divide
+
+	ld a, [hQuotient + 3]
+	ret
+; b849d
+
+.OTIDScore: ; b849d
+	ld a, [PlayerID]
+	ld [hDividend], a
+	ld a, [PlayerID + 1]
+	ld [hDividend + 1], a
+	ld a, 10
+	ld [hDivisor], a
+	ld b, 2
+	call Divide
+	ld a, [hQuotient + 3]
+	ret
+; b84b3
--- /dev/null
+++ b/engine/events/unown_walls.asm
@@ -1,0 +1,267 @@
+Special_HoOhChamber: ; 0x8addb
+	ld hl, PartySpecies
+	ld a, [hl]
+	cp HO_OH ; is Ho-oh the first Pokémon in the party?
+	jr nz, .done ; if not, we're done
+	call GetMapDataPointer ; pointless?
+	ld de, EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+.done
+	ret
+; 0x8adef
+
+Special_OmanyteChamber: ; 8adef
+	call GetMapDataPointer ; pointless?
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	ld b, CHECK_FLAG
+	call EventFlagAction
+	ld a, c
+	and a
+	jr nz, .nope
+
+	ld a, WATER_STONE
+	ld [CurItem], a
+	ld hl, NumItems
+	call CheckItem
+	jr c, .open
+
+	ld a, [PartyCount]
+	ld b, a
+	inc b
+.loop
+	dec b
+	jr z, .nope
+	ld a, b
+	dec a
+	ld [CurPartyMon], a
+	push bc
+	ld a, MON_ITEM
+	call GetPartyParamLocation
+	pop bc
+	ld a, [hl]
+	cp WATER_STONE
+	jr nz, .loop
+
+.open
+	call GetMapDataPointer ; pointless?
+	ld de, EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+
+.nope
+	ret
+; 8ae30
+
+SpecialAerodactylChamber: ; 8ae30
+	push de
+	push bc
+
+	call GetMapDataPointer
+	ld a, h
+	cp HIGH(RuinsOfAlphAerodactylChamber_MapData)
+	jr nz, .nope
+	ld a, l
+	cp LOW(RuinsOfAlphAerodactylChamber_MapData)
+	jr nz, .nope
+
+	ld de, EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+
+	scf
+	jr .done
+
+.nope
+	and a
+
+.done
+	pop bc
+	pop de
+	ret
+; 8ae4e
+
+SpecialKabutoChamber: ; 8ae4e
+	push hl
+	push de
+
+	call GetMapDataPointer
+	ld a, h
+	cp HIGH(RuinsOfAlphKabutoChamber_MapData)
+	jr nz, .done
+	ld a, l
+	cp LOW(RuinsOfAlphKabutoChamber_MapData)
+	jr nz, .done
+
+	ld de, EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
+	ld b, SET_FLAG
+	call EventFlagAction
+
+.done
+	pop de
+	pop hl
+	ret
+; 8ae68
+
+Special_DisplayUnownWords: ; 8ae68
+	ld a, [ScriptVar]
+	ld hl, MenuDataHeaders_UnownWalls
+	and a
+	jr z, .load
+
+	ld d, $0
+	ld e, $5
+.loop
+	add hl, de
+	dec a
+	jr nz, .loop
+
+.load
+	call LoadMenuDataHeader
+	xor a
+	ld [hBGMapMode], a
+	call MenuBox
+	call UpdateSprites
+	call ApplyTilemap
+	call MenuBoxCoord2Tile
+	inc hl
+	ld d, 0
+	ld e, SCREEN_WIDTH
+	add hl, de
+	add hl, de
+	ld a, [ScriptVar]
+	ld c, a
+	ld de, UnownWalls
+	and a
+	jr z, .copy
+.loop2
+	ld a, [de]
+	inc de
+	cp -1
+	jr nz, .loop2
+	dec c
+	jr nz, .loop2
+.copy
+	call _DisplayUnownWords_CopyWord
+	ld bc, AttrMap - TileMap
+	add hl, bc
+	call _DisplayUnownWords_FillAttr
+	call WaitBGMap2
+	call JoyWaitAorB
+	call PlayClickSFX
+	call CloseWindow
+	ret
+; 8aebc
+
+INCLUDE "data/unown_walls.asm"
+
+_DisplayUnownWords_FillAttr: ; 8aee9
+	ld a, [de]
+	cp $ff
+	ret z
+	cp $60
+	ld a, VRAM_BANK_1 | PAL_BG_BROWN
+	jr c, .got_pal
+	ld a, PAL_BG_BROWN
+
+.got_pal
+	call .PlaceSquare
+	inc hl
+	inc hl
+	inc de
+	jr _DisplayUnownWords_FillAttr
+; 8aefd
+
+.PlaceSquare: ; 8aefd
+	push hl
+	ld [hli], a
+	ld [hld], a
+	ld b, 0
+	ld c, SCREEN_WIDTH
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	pop hl
+	ret
+; 8af09
+
+_DisplayUnownWords_CopyWord: ; 8af09
+	push hl
+	push de
+.word_loop
+	ld a, [de]
+	cp $ff
+	jr z, .word_done
+	ld c, a
+	call .ConvertChar
+	inc hl
+	inc hl
+	inc de
+	jr .word_loop
+
+.word_done
+	pop de
+	pop hl
+	ret
+; 8af1c
+
+.ConvertChar: ; 8af1c
+	push hl
+	ld a, c
+	cp $60
+	jr z, .Tile60
+	cp $62
+	jr z, .Tile62
+	cp $64
+	jr z, .Tile64
+	ld [hli], a
+	inc a
+	ld [hld], a
+	dec a
+	ld b, 0
+	ld c, SCREEN_WIDTH
+	add hl, bc
+	ld c, $10
+	add c
+	ld [hli], a
+	inc a
+	ld [hl], a
+	pop hl
+	ret
+
+.Tile60:
+	ld [hl], $5b
+	inc hl
+	ld [hl], $5c
+	ld bc, SCREEN_WIDTH - 1
+	add hl, bc
+	ld [hl], $4d
+	inc hl
+	ld [hl], $5d
+	pop hl
+	ret
+
+.Tile62:
+	ld [hl], $4e
+	inc hl
+	ld [hl], $4f
+	ld bc, SCREEN_WIDTH - 1
+	add hl, bc
+	ld [hl], $5e
+	inc hl
+	ld [hl], $5f
+	pop hl
+	ret
+
+.Tile64:
+	ld [hl], $2
+	inc hl
+	ld [hl], $3
+	ld bc, SCREEN_WIDTH - 1
+	add hl, bc
+	ld [hl], $3
+	inc hl
+	ld [hl], $2
+	pop hl
+	ret
+; 8af6b
--- a/engine/events/whiteout.asm
+++ b/engine/events/whiteout.asm
@@ -4,13 +4,13 @@
 ; 0x124c8
 
 Script_OverworldWhiteout:: ; 0x124c8
-	refreshscreen $0
+	refreshscreen
 	callasm OverworldBGMap
 
 Script_Whiteout: ; 0x124ce
 	writetext .WhitedOutText
 	waitbutton
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	pause 40
 	special HealParty
 	checkflag ENGINE_BUG_CONTEST_TIMER
@@ -18,7 +18,7 @@
 	callasm HalveMoney
 	callasm GetWhiteoutSpawn
 	farscall Script_AbortBugContest
-	special WarpToSpawnPoint
+	special Special_WarpToSpawnPoint
 	newloadmap MAPSETUP_WARP
 	end_all
 
@@ -49,7 +49,7 @@
 ; 12513
 
 HalveMoney: ; 12513
-	farcall TrainerRankings_WhiteOuts
+	farcall StubbedTrainerRankings_WhiteOuts
 
 ; Halve the player's money.
 	ld hl, Money
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -1,7 +1,7 @@
 ; More overworld event handling.
 
 
-WarpToSpawnPoint:: ; 97c28
+Special_WarpToSpawnPoint:: ; 97c28
 	ld hl, wStatusFlags2
 	res 1, [hl] ; safari zone?
 	res 2, [hl] ; bug contest
@@ -274,7 +274,7 @@
 
 	; If we're not in an area of phone service, we don't
 	; have to be here.
-	call GetMapHeaderPhoneServiceNybble
+	call GetMapPhoneService
 	and a
 	jr nz, .NoCall
 
@@ -361,7 +361,7 @@
 	ret
 ; 97e25
 
-GetNthCmdQueueEntry: ; 97e25 unreferenced
+Unreferenced_GetNthCmdQueueEntry: ; 97e25
 	ld hl, wCmdQueue
 	ld bc, CMDQUEUE_ENTRY_SIZE
 	call AddNTimes
--- a/engine/events_3.asm
+++ /dev/null
@@ -1,689 +1,0 @@
-ReturnFromMapSetupScript:: ; b8000
-	xor a
-	ld [hBGMapMode], a
-	; For some reson, GameFreak chose to use a farcall here instead of just falling through.
-	; No other function in the game references the function at 2E:400A, here labeled
-	; ReturnFromMapSetupScript.inefficient_farcall.
-	farcall .inefficient_farcall ; this is a waste of 6 ROM bytes and 6 stack bytes
-	ret
-; b800a
-
-.inefficient_farcall ; b800a
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetWorldMapLocation
-	ld [wCurrentLandmark], a
-	call .CheckNationalParkGate
-	jr z, .nationalparkgate
-
-	call GetMapEnvironment
-	cp GATE
-	jr nz, .not_gate
-
-.nationalparkgate
-	ld a, -1
-	ld [wCurrentLandmark], a
-
-.not_gate
-	ld hl, wEnteredMapFromContinue
-	bit 1, [hl]
-	res 1, [hl]
-	jr nz, .dont_do_map_sign
-
-	call .CheckMovingWithinLandmark
-	jr z, .dont_do_map_sign
-	ld a, [wCurrentLandmark]
-	ld [wPreviousLandmark], a
-
-	call .CheckSpecialMap
-	jr z, .dont_do_map_sign
-
-; Display for 60 frames
-	ld a, 60
-	ld [wLandmarkSignTimer], a
-	call LoadMapNameSignGFX
-	call InitMapNameFrame
-	farcall HDMATransfer_OnlyTopFourRows
-	ret
-
-.dont_do_map_sign
-	ld a, [wCurrentLandmark]
-	ld [wPreviousLandmark], a
-	ld a, $90
-	ld [rWY], a
-	ld [hWY], a
-	xor a
-	ld [hLCDCPointer], a
-	ret
-; b8064
-
-.CheckMovingWithinLandmark: ; b8064
-	ld a, [wCurrentLandmark]
-	ld c, a
-	ld a, [wPreviousLandmark]
-	cp c
-	ret z
-	cp SPECIAL_MAP
-	ret
-; b8070
-
-.CheckSpecialMap: ; b8070
-	cp -1
-	ret z
-	cp SPECIAL_MAP
-	ret z
-	cp RADIO_TOWER
-	ret z
-	cp LAV_RADIO_TOWER
-	ret z
-	cp UNDERGROUND_PATH
-	ret z
-	cp INDIGO_PLATEAU
-	ret z
-	cp POWER_PLANT
-	ret z
-	ld a, $1
-	and a
-	ret
-; b8089
-
-.CheckNationalParkGate: ; b8089
-	ld a, [MapGroup]
-	cp GROUP_ROUTE_35_NATIONAL_PARK_GATE
-	ret nz
-	ld a, [MapNumber]
-	cp MAP_ROUTE_35_NATIONAL_PARK_GATE
-	ret z
-	cp MAP_ROUTE_36_NATIONAL_PARK_GATE
-	ret
-; b8098
-
-
-PlaceMapNameSign:: ; b8098 (2e:4098)
-	ld hl, wLandmarkSignTimer
-	ld a, [hl]
-	and a
-	jr z, .disappear
-	dec [hl]
-	cp 60
-	ret z
-	cp 59
-	jr nz, .skip2
-	call InitMapNameFrame
-	call PlaceMapNameCenterAlign
-	farcall HDMATransfer_OnlyTopFourRows
-.skip2
-	ld a, $80
-	ld a, $70
-	ld [rWY], a
-	ld [hWY], a
-	ret
-
-.disappear
-	ld a, $90
-	ld [rWY], a
-	ld [hWY], a
-	xor a
-	ld [hLCDCPointer], a
-	ret
-
-
-LoadMapNameSignGFX: ; b80c6
-	ld de, MapEntryFrameGFX
-	ld hl, vTiles2 tile $60
-	lb bc, BANK(MapEntryFrameGFX), $e
-	call Get2bpp
-	ret
-; b80d3
-
-InitMapNameFrame: ; b80d3
-	hlcoord 0, 0
-	ld b, 2
-	ld c, 18
-	call InitMapSignAttrMap
-	call PlaceMapNameFrame
-	ret
-; b80e1
-
-
-PlaceMapNameCenterAlign: ; b80e1 (2e:40e1)
-	ld a, [wCurrentLandmark]
-	ld e, a
-	farcall GetLandmarkName
-	call .GetNameLength
-	ld a, SCREEN_WIDTH
-	sub c
-	srl a
-	ld b, $0
-	ld c, a
-	hlcoord 0, 2
-	add hl, bc
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-
-.GetNameLength: ; b8101 (2e:4101)
-	ld c, 0
-	push hl
-	ld hl, StringBuffer1
-.loop
-	ld a, [hli]
-	cp "@"
-	jr z, .stop
-	cp "%"
-	jr z, .loop
-	inc c
-	jr .loop
-.stop
-	pop hl
-	ret
-
-
-InitMapSignAttrMap: ; b8115
-	ld de, AttrMap - TileMap
-	add hl, de
-	inc b
-	inc b
-	inc c
-	inc c
-	ld a, $87
-.loop
-	push bc
-	push hl
-.inner_loop
-	ld [hli], a
-	dec c
-	jr nz, .inner_loop
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .loop
-	ret
-; b812f
-
-PlaceMapNameFrame: ; b812f
-	hlcoord 0, 0
-	; top left
-	ld a, $61
-	ld [hli], a
-	; top row
-	ld a, $62
-	call .FillTopBottom
-	; top right
-	ld a, $64
-	ld [hli], a
-	; left, first line
-	ld a, $65
-	ld [hli], a
-	; first line
-	call .FillMiddle
-	; right, first line
-	ld a, $6b
-	ld [hli], a
-	; left, second line
-	ld a, $66
-	ld [hli], a
-	; second line
-	call .FillMiddle
-	; right, second line
-	ld a, $6c
-	ld [hli], a
-	; bottom left
-	ld a, $67
-	ld [hli], a
-	; bottom
-	ld a, $68
-	call .FillTopBottom
-	; bottom right
-	ld a, $6a
-	ld [hl], a
-	ret
-; b815b
-
-.FillMiddle: ; b815b
-	ld c, 18
-	ld a, $6d
-.loop
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	ret
-; b8164
-
-.FillTopBottom: ; b8164
-	ld c, 5
-	jr .enterloop
-
-.continueloop
-	ld [hli], a
-	ld [hli], a
-
-.enterloop
-	inc a
-	ld [hli], a
-	ld [hli], a
-	dec a
-	dec c
-	jr nz, .continueloop
-	ret
-; b8172
-
-CheckForHiddenItems: ; b8172
-; Checks to see if there are hidden items on the screen that have not yet been found.  If it finds one, returns carry.
-	call GetMapScriptHeaderBank
-	ld [Buffer1], a
-; Get the coordinate of the bottom right corner of the screen, and load it in Buffer3/Buffer4.
-	ld a, [XCoord]
-	add SCREEN_WIDTH / 4
-	ld [Buffer4], a
-	ld a, [YCoord]
-	add SCREEN_HEIGHT / 4
-	ld [Buffer3], a
-; Get the pointer for the first BG event header in the map...
-	ld hl, wCurrMapBGEventHeaderPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-; ... before even checking to see if there are any BG events on this map.
-	ld a, [wCurrMapBGEventCount]
-	and a
-	jr z, .nobgeventitems
-; For i = 1:wCurrMapBGEventCount...
-.loop
-; Store the counter in Buffer2, and store the BG event header pointer in the stack.
-	ld [Buffer2], a
-	push hl
-; Get the Y coordinate of the BG event.
-	call .GetFarByte
-	ld e, a
-; Is the Y coordinate of the BG event on the screen?  If not, go to the next BG event.
-	ld a, [Buffer3]
-	sub e
-	jr c, .next
-	cp SCREEN_HEIGHT / 2
-	jr nc, .next
-; Is the X coordinate of the BG event on the screen?  If not, go to the next BG event.
-	call .GetFarByte
-	ld d, a
-	ld a, [Buffer4]
-	sub d
-	jr c, .next
-	cp SCREEN_WIDTH / 2
-	jr nc, .next
-; Is this BG event a hidden item?  If not, go to the next BG event.
-	call .GetFarByte
-	cp BGEVENT_ITEM
-	jr nz, .next
-; Has this item already been found?  If not, set off the Itemfinder.
-	ld a, [Buffer1]
-	call GetFarHalfword
-	ld a, [Buffer1]
-	call GetFarHalfword
-	ld d, h
-	ld e, l
-	ld b, CHECK_FLAG
-	call EventFlagAction
-	ld a, c
-	and a
-	jr z, .itemnearby
-
-.next
-; Restore the BG event header pointer and increment it by the length of a BG event header.
-	pop hl
-	ld bc, 5
-	add hl, bc
-; Restore the BG event counter and decrement it.  If it hits zero, there are no hidden items in range.
-	ld a, [Buffer2]
-	dec a
-	jr nz, .loop
-
-.nobgeventitems
-	xor a
-	ret
-
-.itemnearby
-	pop hl
-	scf
-	ret
-; b81e2
-
-.GetFarByte: ; b81e2
-	ld a, [Buffer1]
-	call GetFarByte
-	inc hl
-	ret
-; b81ea
-
-
-TreeMonEncounter: ; b81ea
-	farcall TrainerRankings_TreeEncounters
-
-	xor a
-	ld [TempWildMonSpecies], a
-	ld [CurPartyLevel], a
-
-	ld hl, TreeMonMaps
-	call GetTreeMonSet
-	jr nc, .no_battle
-
-	call GetTreeMons
-	jr nc, .no_battle
-
-	call GetTreeMon
-	jr nc, .no_battle
-
-	ld a, BATTLETYPE_TREE
-	ld [BattleType], a
-	ld a, 1
-	ld [ScriptVar], a
-	ret
-
-.no_battle
-	xor a
-	ld [ScriptVar], a
-	ret
-; b8219
-
-RockMonEncounter: ; b8219
-
-	xor a
-	ld [TempWildMonSpecies], a
-	ld [CurPartyLevel], a
-
-	ld hl, RockMonMaps
-	call GetTreeMonSet
-	jr nc, .no_battle
-
-	call GetTreeMons
-	jr nc, .no_battle
-
-	ld a, 10
-	call RandomRange
-	cp 4
-	jr nc, .no_battle
-
-	call SelectTreeMon
-	jr nc, .no_battle
-
-	ret
-
-.no_battle
-	xor a
-	ret
-; b823e
-
-	db $05 ; ????
-
-GetTreeMonSet: ; b823f
-; Return carry and treemon set in a
-; if the current map is in table hl.
-	ld a, [MapNumber]
-	ld e, a
-	ld a, [MapGroup]
-	ld d, a
-.loop
-	ld a, [hli]
-	cp -1
-	jr z, .not_in_table
-
-	cp d
-	jr nz, .skip2
-
-	ld a, [hli]
-	cp e
-	jr nz, .skip1
-
-	jr .in_table
-
-.skip2
-	inc hl
-.skip1
-	inc hl
-	jr .loop
-
-.not_in_table
-	xor a
-	ret
-
-.in_table
-	ld a, [hl]
-	scf
-	ret
-; b825e
-
-INCLUDE "data/wild/treemon_maps.asm"
-
-GetTreeMons: ; b82d2
-; Return the address of TreeMon table a in hl.
-; Return nc if table a doesn't exist.
-
-	cp 8
-	jr nc, .quit
-
-	and a
-	jr z, .quit
-
-	ld e, a
-	ld d, 0
-	ld hl, TreeMons
-	add hl, de
-	add hl, de
-
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	scf
-	ret
-
-.quit
-	xor a
-	ret
-; b82e8
-
-INCLUDE "data/wild/treemons.asm"
-
-GetTreeMon: ; b83e5
-	push hl
-	call GetTreeScore
-	pop hl
-	and a
-	jr z, .bad
-	cp 1
-	jr z, .good
-	cp 2
-	jr z, .rare
-	ret
-
-.bad
-	ld a, 10
-	call RandomRange
-	and a
-	jr nz, NoTreeMon
-	jr SelectTreeMon
-
-.good
-	ld a, 10
-	call RandomRange
-	cp 5
-	jr nc, NoTreeMon
-	jr SelectTreeMon
-
-.rare
-	ld a, 10
-	call RandomRange
-	cp 8
-	jr nc, NoTreeMon
-	jr .skip
-.skip
-	ld a, [hli]
-	cp -1
-	jr nz, .skip
-	call SelectTreeMon
-	ret
-; b841f
-
-SelectTreeMon: ; b841f
-; Read a TreeMons table and pick one monster at random.
-
-	ld a, 100
-	call RandomRange
-.loop
-	sub [hl]
-	jr c, .ok
-	inc hl
-	inc hl
-	inc hl
-	jr .loop
-
-.ok
-	ld a, [hli]
-	cp $ff
-	jr z, NoTreeMon
-
-	ld a, [hli]
-	ld [TempWildMonSpecies], a
-	ld a, [hl]
-	ld [CurPartyLevel], a
-	scf
-	ret
-
-NoTreeMon: ; b843b
-	xor a
-	ld [TempWildMonSpecies], a
-	ld [CurPartyLevel], a
-	ret
-; b8443
-
-GetTreeScore: ; b8443
-	call .CoordScore
-	ld [Buffer1], a
-	call .OTIDScore
-	ld [Buffer2], a
-	ld c, a
-	ld a, [Buffer1]
-	sub c
-	jr z, .rare
-	jr nc, .ok
-	add 10
-.ok
-	cp 5
-	jr c, .good
-
-.bad
-	xor a
-	ret
-
-.good
-	ld a, 1
-	ret
-
-.rare
-	ld a, 2
-	ret
-; b8466
-
-.CoordScore: ; b8466
-	call GetFacingTileCoord
-	ld hl, 0
-	ld c, e
-	ld b, 0
-	ld a, d
-
-	and a
-	jr z, .next
-.loop
-	add hl, bc
-	dec a
-	jr nz, .loop
-.next
-
-	add hl, bc
-	ld c, d
-	add hl, bc
-
-	ld a, h
-	ld [hDividend], a
-	ld a, l
-	ld [hDividend + 1], a
-	ld a, 5
-	ld [hDivisor], a
-	ld b, 2
-	call Divide
-
-	ld a, [hQuotient + 1]
-	ld [hDividend], a
-	ld a, [hQuotient + 2]
-	ld [hDividend + 1], a
-	ld a, 10
-	ld [hDivisor], a
-	ld b, 2
-	call Divide
-
-	ld a, [hQuotient + 3]
-	ret
-; b849d
-
-.OTIDScore: ; b849d
-	ld a, [PlayerID]
-	ld [hDividend], a
-	ld a, [PlayerID + 1]
-	ld [hDividend + 1], a
-	ld a, 10
-	ld [hDivisor], a
-	ld b, 2
-	call Divide
-	ld a, [hQuotient + 3]
-	ret
-; b84b3
-
-LoadFishingGFX: ; b84b3
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-
-	ld de, FishingGFX
-	ld a, [wPlayerGender]
-	bit 0, a
-	jr z, .got_gender
-	ld de, KrisFishingGFX
-.got_gender
-
-	ld hl, vTiles0 tile $02
-	call .LoadGFX
-	ld hl, vTiles0 tile $06
-	call .LoadGFX
-	ld hl, vTiles0 tile $0a
-	call .LoadGFX
-	ld hl, vTiles1 tile $7c
-	call .LoadGFX
-
-	pop af
-	ld [rVBK], a
-	ret
-; b84e3
-
-.LoadGFX: ; b84e3
-	lb bc, BANK(FishingGFX), 2
-	push de
-	call Get2bpp
-	pop de
-	ld hl, 2 tiles
-	add hl, de
-	ld d, h
-	ld e, l
-	ret
-; b84f2
-
-FishingGFX: ; b84f2
-INCBIN "gfx/overworld/chris_fish.2bpp"
-; b8582
-
-KrisFishingGFX: ; b8582
-INCBIN "gfx/overworld/kris_fish.2bpp"
-; b8612
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -80,7 +80,7 @@
 	jr c, .skip_cry
 
 	ld a, [wEvolutionOldSpecies]
-	call PlayCry
+	call PlayMonCry
 
 .skip_cry
 	ld de, MUSIC_EVOLUTION
@@ -148,7 +148,7 @@
 	ret c
 
 	ld a, [PlayerHPPal]
-	call PlayCry
+	call PlayMonCry
 	ret
 ; 4e703
 
@@ -168,7 +168,7 @@
 	ld a, $1
 	ld [wBoxAlignment], a
 	ld de, vTiles2
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	xor a
 	ld [wBoxAlignment], a
 	ret
@@ -346,15 +346,15 @@
 	inc a
 	and $7
 	ld b, a
-	ld hl, Sprites + 3 ; attributes
-	ld c, 40
+	ld hl, Sprite01Attributes
+	ld c, NUM_SPRITE_OAM_STRUCTS
 .loop6
 	ld a, [hl]
 	or b
-	ld [hli], a
+	ld [hli], a ; attributes
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .loop6
 	pop bc
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -247,7 +247,7 @@
 	push hl
 	ld hl, Text_EvolvedIntoPKMN
 	call PrintTextBoxText
-	farcall TrainerRankings_MonsEvolved
+	farcall StubbedTrainerRankings_MonsEvolved
 
 	ld de, MUSIC_NONE
 	call PlayMusic
@@ -333,7 +333,7 @@
 	inc hl
 	jp .loop
 
-; XXX
+; unused
 	pop hl
 .ReturnToMap:
 	pop de
@@ -371,7 +371,7 @@
 	jr nz, .loop
 
 	ld a, [CurPartyMon]
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld hl, PartyMonNicknames
 	call AddNTimes
 	push hl
@@ -380,7 +380,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	pop de
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	jp CopyBytes
 ; 42454
 
@@ -621,7 +621,7 @@
 EvoFlagAction: ; 42577
 	push de
 	ld d, $0
-	predef FlagPredef
+	predef SmallFarFlagAction
 	pop de
 	ret
 ; 42581
--- a/engine/gbc_only.asm
+++ b/engine/gbc_only.asm
@@ -10,18 +10,18 @@
 	call ClearTileMap
 
 	ld hl, GBCOnlyGFX
-	ld de, $d000
+	ld de, wGBCOnlyDecompressBuffer
 	ld a, [rSVBK]
 	push af
-	ld a, 0
+	ld a, 0 ; this has the same effect as selecting bank 1
 	ld [rSVBK], a
 	call Decompress
 	pop af
 	ld [rSVBK], a
 
-	ld de, $d000
+	ld de, wGBCOnlyDecompressBuffer
 	ld hl, vTiles2
-	lb bc, BANK(GBCOnlyGFX), $54
+	lb bc, BANK(GBCOnlyGFX), 84
 	call Get2bpp
 
 	ld de, Font
--- a/engine/init_gender.asm
+++ b/engine/init_gender.asm
@@ -44,15 +44,14 @@
 ; 48dfc (12:4dfc)
 
 .MenuDataHeader: ; 0x48dfc
-	db $40 ; flags
-	db 04, 06 ; start coords
-	db 09, 12 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 6, 4, 12, 9
 	dw .MenuData2
 	db 1 ; default option
 ; 0x48e04
 
 .MenuData2: ; 0x48e04
-	db $a1 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP | STATICMENU_DISABLE_B ; flags
 	db 2 ; items
 	db "Boy@"
 	db "Girl@"
@@ -90,7 +89,7 @@
 	ld hl, .Palette
 	ld de, wBGPals1
 	ld bc, 1 palettes
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	call FarCopyWRAM
 	farcall ApplyPals
 	ret
@@ -97,10 +96,7 @@
 ; 48e5c (12:4e5c)
 
 .Palette: ; 48e5c
-	RGB 31, 31, 31
-	RGB 09, 30, 31
-	RGB 01, 11, 31
-	RGB 00, 00, 00
+INCLUDE "gfx/new_game/gender_screen.pal"
 ; 48e64
 
 LoadGenderScreenLightBlueTile: ; 48e64 (12:4e64)
@@ -112,4 +108,4 @@
 ; 48e71 (12:4e71)
 
 .LightBlueTile: ; 48e71
-INCBIN "gfx/intro/gender_screen.2bpp"
+INCBIN "gfx/new_game/gender_screen.2bpp"
--- a/engine/init_hof_credits.asm
+++ b/engine/init_hof_credits.asm
@@ -46,9 +46,9 @@
 	ld hl, wBGPals1
 	ld c, 4 tiles
 .load_white_palettes
-	ld a, LOW(palred 31 + palgreen 31 + palblue 31)
+	ld a, LOW(PALRGB_WHITE)
 	ld [hli], a
-	ld a, HIGH(palred 31 + palgreen 31 + palblue 31)
+	ld a, HIGH(PALRGB_WHITE)
 	ld [hli], a
 	dec c
 	jr nz, .load_white_palettes
@@ -63,7 +63,7 @@
 ResetDisplayBetweenHallOfFameMons: ; 4e906
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 	ld hl, wDecompressScratch
 	ld bc, wScratchAttrMap - wDecompressScratch
--- a/engine/init_map.asm
+++ b/engine/init_map.asm
@@ -79,10 +79,10 @@
 HDMATransfer_FillBGMap0WithBlack: ; 64db
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
-	ld a, "<BLACK>" ; $60
+	ld a, "■"
 	ld hl, wDecompressScratch
 	ld bc, wScratchAttrMap - wDecompressScratch
 	call ByteFill
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -10,7 +10,7 @@
 	jp StartTitleScreen
 ; 5b04
 
-; unreferenced
+; unused
 	ret
 ; 5b05
 
@@ -542,10 +542,10 @@
 	ld hl, .MenuDataHeader_Dex
 	ld a, [wStatusFlags]
 	bit 0, a ; pokedex
-	jr nz, .pokedex_header
+	jr nz, .show_menu
 	ld hl, .MenuDataHeader_NoDex
 
-.pokedex_header
+.show_menu
 	call _OffsetMenuDataHeader
 	call MenuBox
 	call PlaceVerticalMenuItems
@@ -553,15 +553,14 @@
 ; 5ed9
 
 .MenuDataHeader_Dex: ; 5ed9
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 09, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 15, 9
 	dw .MenuData2_Dex
 	db 1 ; default option
 ; 5ee1
 
 .MenuData2_Dex: ; 5ee1
-	db $00 ; flags
+	db 0 ; flags
 	db 4 ; items
 	db "PLAYER@"
 	db "BADGES@"
@@ -570,15 +569,14 @@
 ; 5efb
 
 .MenuDataHeader_NoDex: ; 5efb
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 09, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 15, 9
 	dw .MenuData2_NoDex
 	db 1 ; default option
 ; 5f03
 
 .MenuData2_NoDex: ; 5f03
-	db $00 ; flags
+	db 0 ; flags
 	db 4 ; items
 	db "PLAYER <PLAYER>@"
 	db "BADGES@"
@@ -756,7 +754,7 @@
 	text_jump _OakText2
 	start_asm
 	ld a, WOOPER
-	call PlayCry
+	call PlayMonCry
 	call WaitSFX
 	ld hl, OakText3
 	ret
@@ -827,7 +825,7 @@
 	db "KRIS@@@@@@@"
 ; 60e9
 
-Function60e9: ; Unreferenced
+Unreferenced_Function60e9:
 	call LoadMenuDataHeader
 	call VerticalMenu
 	ld a, [wMenuCursorY]
@@ -853,7 +851,7 @@
 	ld a, [hROMBank]
 	push af
 
-	ld a, 0 << 7 | 32 ; fade out
+	ld a, 32 ; fade time
 	ld [MusicFade], a
 	ld de, MUSIC_NONE
 	ld a, e
@@ -954,8 +952,8 @@
 
 ShrinkFrame: ; 61b4
 	ld de, vTiles2
-	ld c, $31
-	predef DecompressPredef
+	ld c, 7 * 7
+	predef DecompressGet2bpp
 	xor a
 	ld [hGraphicStartTile], a
 	hlcoord 6, 4
@@ -971,7 +969,7 @@
 	ld hl, vTiles0
 	call Request2bpp
 
-	ld hl, Sprites
+	ld hl, Sprite01
 	ld de, .sprites
 	ld a, [de]
 	inc de
@@ -980,19 +978,19 @@
 .loop
 	ld a, [de]
 	inc de
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, [de]
 	inc de
-	ld [hli], a
+	ld [hli], a ; x
 	ld a, [de]
 	inc de
-	ld [hli], a
+	ld [hli], a ; tile id
 
-	ld b, 0
+	ld b, PAL_OW_RED
 	ld a, [wPlayerGender]
 	bit 0, a
 	jr z, .male
-	ld b, 1
+	ld b, PAL_OW_BLUE
 .male
 	ld a, b
 
@@ -1004,6 +1002,7 @@
 
 .sprites ; 61fe
 	db 4
+	; y pxl, x pxl, tile offset
 	db  9 * 8 + 4,  9 * 8, 0
 	db  9 * 8 + 4, 10 * 8, 1
 	db 10 * 8 + 4,  9 * 8, 2
@@ -1019,7 +1018,7 @@
 StartTitleScreen: ; 6219
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	call .TitleScreen
@@ -1094,7 +1093,7 @@
 	ret
 ; 6292
 
-Function6292: ; 6292 ; unreferenced
+Unreferenced_Function6292: ; 6292
 	ld a, [hVBlankCounter]
 	and $7
 	ret nz
@@ -1125,7 +1124,7 @@
 	dw TitleScreenEnd
 ; 62b7
 
-.NextScene: ; Unreferenced
+.Unreferenced_NextScene:
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
@@ -1329,10 +1328,10 @@
 	jp Init
 ; 639b
 
-Function639b: ; unreferenced
+Unreferenced_Function639b:
 	; If bit 0 or 1 of [wTitleScreenTimer] is set, we don't need to be here.
 	ld a, [wTitleScreenTimer]
-	and $3
+	and %00000011
 	ret nz
 	ld bc, SpriteAnim10
 	ld hl, SPRITEANIMSTRUCT_FRAME
@@ -1377,7 +1376,7 @@
 	call LoadFontsExtra
 	ld de, CopyrightGFX
 	ld hl, vTiles2 tile $60
-	lb bc, BANK(CopyrightGFX), $1d
+	lb bc, BANK(CopyrightGFX), 29
 	call Request2bpp
 	hlcoord 2, 7
 	ld de, CopyrightString
--- a/engine/item_effects.asm
+++ b/engine/item_effects.asm
@@ -517,7 +517,7 @@
 	cp BATTLETYPE_TUTORIAL
 	jp z, .FinishTutorial
 
-	farcall TrainerRankings_WildMonsCaught
+	farcall StubbedTrainerRankings_WildMonsCaught
 
 	ld hl, Text_GotchaMonWasCaught
 	call PrintText
@@ -599,7 +599,7 @@
 	dec a
 	ld [CurPartyMon], a
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call AddNTimes
 
 	ld d, h
@@ -623,7 +623,7 @@
 .SendToPC:
 	call ClearSprites
 
-	predef SentPkmnIntoBox
+	predef SendPkmnIntoBox
 
 	farcall SetBoxMonCaughtData
 
@@ -668,7 +668,7 @@
 
 	ld hl, wMonOrItemNameBuffer
 	ld de, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 	ld hl, sBoxMonNicknames
@@ -683,7 +683,7 @@
 
 	ld hl, sBoxMonNicknames
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 	call CloseSRAM
@@ -748,7 +748,7 @@
 	dbw MOON_BALL,   MoonBallMultiplier
 	dbw LOVE_BALL,   LoveBallMultiplier
 	dbw PARK_BALL,   ParkBallMultiplier
-	db $ff
+	db -1 ; end
 
 UltraBallMultiplier:
 ; multiply catch rate by 2
@@ -775,7 +775,7 @@
 	ld a, [EnemyMonSpecies]
 	rlca
 	rlca
-	and 3
+	maskbits NUM_DEX_ENTRY_BANKS
 	ld hl, .PokedexEntryBanks
 	ld d, 0
 	ld e, a
@@ -786,12 +786,6 @@
 	ret
 
 .PokedexEntryBanks:
-
-GLOBAL PokedexEntries1
-GLOBAL PokedexEntries2
-GLOBAL PokedexEntries3
-GLOBAL PokedexEntries4
-
 	db BANK(PokedexEntries1)
 	db BANK(PokedexEntries2)
 	db BANK(PokedexEntries3)
@@ -1436,7 +1430,7 @@
 	call TextBox
 
 	hlcoord 11, 1
-	ld bc, $0004
+	ld bc, 4
 	predef PrintTempMonStats
 
 	call WaitPressAorB_BlinkCursor
@@ -1576,7 +1570,7 @@
 GetItemHealingAction: ; f058 (3:7058)
 	push hl
 	ld a, [CurItem]
-	ld hl, .healingactions
+	ld hl, StatusHealingActions
 	ld bc, 3
 .next
 	cp [hl]
@@ -1595,24 +1589,7 @@
 	ret
 ; f071 (3:7071)
 
-.healingactions ; f071
-; item, party menu action text, status
-	db ANTIDOTE,     PARTYMENUTEXT_HEAL_PSN, 1 << PSN
-	db BURN_HEAL,    PARTYMENUTEXT_HEAL_BRN, 1 << BRN
-	db ICE_HEAL,     PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
-	db AWAKENING,    PARTYMENUTEXT_HEAL_SLP, SLP
-	db PARLYZ_HEAL,  PARTYMENUTEXT_HEAL_PAR, 1 << PAR
-	db FULL_HEAL,    PARTYMENUTEXT_HEAL_ALL, %11111111
-	db FULL_RESTORE, PARTYMENUTEXT_HEAL_ALL, %11111111
-	db HEAL_POWDER,  PARTYMENUTEXT_HEAL_ALL, %11111111
-	db PSNCUREBERRY, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
-	db PRZCUREBERRY, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
-	db BURNT_BERRY,  PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
-	db ICE_BERRY,    PARTYMENUTEXT_HEAL_BRN, 1 << BRN
-	db MINT_BERRY,   PARTYMENUTEXT_HEAL_SLP, SLP
-	db MIRACLEBERRY, PARTYMENUTEXT_HEAL_ALL, %11111111
-	db -1, 0, 0
-; f09e
+INCLUDE "data/items/heal_status.asm"
 
 StatusHealer_Jumptable: ; f09e (3:709e)
 	ld hl, .dw
@@ -1668,7 +1645,7 @@
 	ld d, 0
 	ld hl, wBattleParticipantsIncludingFainted
 	ld b, CHECK_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld a, c
 	and a
 	jr z, .skip_to_revive
@@ -1677,7 +1654,7 @@
 	ld c, a
 	ld hl, wBattleParticipantsNotFainted
 	ld b, SET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 
 .skip_to_revive
 	xor a
@@ -2118,7 +2095,7 @@
 GetHealingItemAmount: ; f395 (3:7395)
 	push hl
 	ld a, [CurItem]
-	ld hl, .Healing
+	ld hl, HealingHPAmounts
 	ld d, a
 .next
 	ld a, [hli]
@@ -2140,24 +2117,7 @@
 	ret
 ; f3af (3:73af)
 
-.Healing: ; f3af
-	dbw FRESH_WATER,   50
-	dbw SODA_POP,      60
-	dbw LEMONADE,      80
-	dbw HYPER_POTION, 200
-	dbw SUPER_POTION,  50
-	dbw POTION,        20
-	dbw MAX_POTION,   MAX_STAT_VALUE
-	dbw FULL_RESTORE, MAX_STAT_VALUE
-	dbw MOOMOO_MILK,  100
-	dbw BERRY,         10
-	dbw GOLD_BERRY,    30
-	dbw ENERGYPOWDER,  50
-	dbw ENERGY_ROOT,  200
-	dbw RAGECANDYBAR,  20
-	dbw BERRY_JUICE,   20
-	dbw -1,             0
-; f3df
+INCLUDE "data/items/heal_hp.asm"
 
 Softboiled_MilkDrinkFunction: ; f3df (3:73df)
 ; Softboiled/Milk Drink in the field
@@ -2291,7 +2251,7 @@
 	inc a
 	ld [wForcedSwitch], a
 	ld a, [wBattleResult]
-	and 3 << 6
+	and $c0
 	or $2
 	ld [wBattleResult], a
 	jp UseItemText
@@ -2328,7 +2288,7 @@
 	call UseItemText
 
 	ld a, [CurItem]
-	ld hl, .x_item_table
+	ld hl, XItemStats
 
 .loop
 	cp [hl]
@@ -2357,12 +2317,7 @@
 	ret
 ; f504
 
-.x_item_table ; f504
-	db X_ATTACK,  ATTACK
-	db X_DEFEND,  DEFENSE
-	db X_SPEED,   SPEED
-	db X_SPECIAL, SP_ATTACK
-; f50c
+INCLUDE "data/items/x_stats.asm"
 
 
 PokeFlute: ; f50c
@@ -2572,10 +2527,10 @@
 	cp SKETCH
 	jr z, .CantUsePPUpOnSketch
 
-	ld bc, $0015
+	ld bc, MON_PP - MON_MOVES
 	add hl, bc
 	ld a, [hl]
-	cp 3 << 6 ; have 3 PP Ups already been used?
+	cp PP_UP_MASK
 	jr c, .do_ppup
 
 .CantUsePPUpOnSketch:
@@ -2586,7 +2541,7 @@
 
 .do_ppup
 	ld a, [hl]
-	add 1 << 6 ; increase PP Up count by 1
+	add PP_UP_ONE
 	ld [hl], a
 	ld a, $1
 	ld [wd265], a
@@ -2714,7 +2669,7 @@
 	ld a, [wd265]
 	ld b, a
 	ld a, [hl]
-	and (1 << 6) - 1
+	and PP_MASK
 	cp b
 	jr nc, .dont_restore
 
@@ -2732,7 +2687,7 @@
 
 .restore_some
 	ld a, [hl]
-	and (1 << 6) - 1
+	and PP_MASK
 	add c
 	cp b
 	jr nc, .restore_all
@@ -2740,7 +2695,7 @@
 
 .restore_all
 	ld a, [hl]
-	and 3 << 6
+	and PP_UP_MASK
 	or b
 	ld [hl], a
 	ret
@@ -3125,7 +3080,7 @@
 
 .use
 	ld a, [hl]
-	and 3 << 6
+	and PP_UP_MASK
 	ld a, [de] ; wasted cycle
 	call nz, ComputeMaxPP
 
@@ -3209,7 +3164,7 @@
 	pop bc
 	pop de
 	ld a, [de]
-	and 3 << 6
+	and PP_UP_MASK
 	ld b, a
 	ld a, [wd265]
 	add b
@@ -3282,7 +3237,7 @@
 .notwild
 	add hl, bc
 	ld a, [hl]
-	and 3 << 6
+	and PP_UP_MASK
 	pop bc
 
 	or b
@@ -3293,7 +3248,7 @@
 	ld a, b ; this gets lost anyway
 	call ComputeMaxPP
 	ld a, [hl]
-	and (1 << 6) - 1
+	and PP_MASK
 	ld [wd265], a
 
 	pop af
--- a/engine/landmarks.asm
+++ b/engine/landmarks.asm
@@ -80,8 +80,8 @@
 	jr c, .kanto
 
 .johto
-	ld e, 0
+	ld e, JOHTO_REGION
 	ret
 .kanto
-	ld e, 1
+	ld e, KANTO_REGION
 	ret
--- a/engine/learn.asm
+++ b/engine/learn.asm
@@ -5,7 +5,7 @@
 	call GetNick
 	ld hl, StringBuffer1
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 .loop
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -28,9 +28,9 @@
 	call SetTradeRoomBGPals
 	call WaitBGMap2
 	ld hl, wcf5d
-	xor a
+	xor a ; LOW($5000)
 	ld [hli], a
-	ld [hl], $50
+	ld [hl], HIGH($5000)
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
 	jp nz, Gen2ToGen2LinkComms
@@ -42,29 +42,31 @@
 	xor a
 	ld [wPlayerLinkAction], a
 	call WaitLinkTransfer
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr nz, .player_1
+
 	ld c, 3
 	call DelayFrames
 	xor a
 	ld [hSerialSend], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
+
 	call DelayFrame
 	xor a
 	ld [hSerialSend], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 
 .player_1
 	ld de, MUSIC_NONE
 	call PlayMusic
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [rIF], a
@@ -73,19 +75,19 @@
 	ld hl, wd1f3
 	ld de, EnemyMonSpecies
 	ld bc, $11
-	call Function75f
-	ld a, $fe
+	call Serial_ExchangeBytes
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [de], a
 	ld hl, wLinkData
 	ld de, OTPlayerName
 	ld bc, $1a8
-	call Function75f
-	ld a, $fe
+	call Serial_ExchangeBytes
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [de], a
 	ld hl, wMisc
 	ld de, wPlayerTrademonSpecies
 	ld bc, wPlayerTrademonSpecies - wMisc
-	call Function75f
+	call Serial_ExchangeBytes
 	xor a
 	ld [rIF], a
 	ld a, $1d
@@ -107,25 +109,25 @@
 	call Link_CopyOTData
 	ld de, wPlayerTrademonSpecies
 	ld hl, wTimeCapsulePartyMon1Species
-	ld c, $2
+	ld c, 2
 .loop
 	ld a, [de]
 	inc de
 	and a
 	jr z, .loop
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr z, .loop
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop
-	cp $ff
+	cp SERIAL_PATCH_LIST_PART_TERMINATOR
 	jr z, .next
 	push hl
 	push bc
-	ld b, $0
+	ld b, 0
 	dec a
 	ld c, a
 	add hl, bc
-	ld a, $fe
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [hl], a
 	pop bc
 	pop hl
@@ -168,8 +170,8 @@
 	ld [wUnusedD102 + 1], a
 	ld de, MUSIC_NONE
 	call PlayMusic
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	ld c, 66
 	call z, DelayFrames
 	ld de, MUSIC_ROUTE_30
@@ -185,23 +187,25 @@
 	ld a, [ScriptVar]
 	and a
 	jp z, LinkTimeout
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr nz, .Player1
+
 	ld c, 3
 	call DelayFrames
 	xor a
 	ld [hSerialSend], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
+
 	call DelayFrame
 	xor a
 	ld [hSerialSend], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 
 .Player1:
@@ -216,19 +220,19 @@
 	ld hl, wd1f3
 	ld de, EnemyMonSpecies
 	ld bc, $11
-	call Function75f
-	ld a, $fe
+	call Serial_ExchangeBytes
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [de], a
 	ld hl, wLinkData
 	ld de, OTPlayerName
 	ld bc, $1c2
-	call Function75f
-	ld a, $fe
+	call Serial_ExchangeBytes
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [de], a
 	ld hl, wMisc
 	ld de, wPlayerTrademonSpecies
 	ld bc, $c8
-	call Function75f
+	call Serial_ExchangeBytes
 	ld a, [wLinkMode]
 	cp LINK_TRADECENTER
 	jr nz, .not_trading
@@ -235,7 +239,7 @@
 	ld hl, wc9f4
 	ld de, wcb84
 	ld bc, $186
-	call Function283f2
+	call ExchangeBytes
 
 .not_trading
 	xor a
@@ -252,25 +256,25 @@
 	call Link_CopyOTData
 	ld de, wPlayerTrademonSpecies
 	ld hl, wLinkPlayerPartyMon1Species
-	ld c, $2
+	ld c, 2
 .loop1
 	ld a, [de]
 	inc de
 	and a
 	jr z, .loop1
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr z, .loop1
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop1
-	cp $ff
+	cp SERIAL_PATCH_LIST_PART_TERMINATOR
 	jr z, .next1
 	push hl
 	push bc
-	ld b, $0
+	ld b, 0
 	dec a
 	ld c, a
 	add hl, bc
-	ld a, $fe
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [hl], a
 	pop bc
 	pop hl
@@ -286,13 +290,13 @@
 	ld hl, wcb84
 .loop2
 	ld a, [hli]
-	cp $20
+	cp MAIL_MSG_LENGTH
 	jr nz, .loop2
 .loop3
 	ld a, [hli]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop3
-	cp $20
+	cp MAIL_MSG_LENGTH
 	jr z, .loop3
 	dec hl
 	ld de, wcb84
@@ -302,9 +306,9 @@
 	ld bc, $c6 ; 198
 .loop4
 	ld a, [hl]
-	cp $21
+	cp MAIL_MSG_LENGTH + 1
 	jr nz, .okay1
-	ld [hl], $fe
+	ld [hl], SERIAL_NO_DATA_BYTE
 .okay1
 	inc hl
 	dec bc
@@ -315,7 +319,7 @@
 .loop5
 	ld a, [de]
 	inc de
-	cp $ff
+	cp SERIAL_PATCH_LIST_PART_TERMINATOR
 	jr z, .start_copying_mail
 	ld hl, wcc4a
 	dec a
@@ -322,7 +326,7 @@
 	ld b, $0
 	ld c, a
 	add hl, bc
-	ld [hl], $fe
+	ld [hl], SERIAL_NO_DATA_BYTE
 	jr .loop5
 
 .start_copying_mail
@@ -395,7 +399,7 @@
 	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld de, OTPartyCount
-	ld bc, 8
+	ld bc, 1 + PARTY_LENGTH + 1
 	call CopyBytes
 	ld de, OTPlayerID
 	ld bc, 2
@@ -409,8 +413,8 @@
 	ld [wUnusedD102 + 1], a
 	ld de, MUSIC_NONE
 	call PlayMusic
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	ld c, 66
 	call z, DelayFrames
 	ld a, [wLinkMode]
@@ -423,8 +427,8 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	and $20
-	or $3
+	and 1 << STEREO
+	or TEXT_DELAY_MED
 	ld [hl], a
 	ld hl, OTPlayerName
 	ld de, OTClassName
@@ -510,21 +514,21 @@
 	db "@"
 ; 0x283f2
 
-Function283f2: ; 283f2
-	ld a, $1
-	ld [hFFCC], a
+ExchangeBytes: ; 283f2
+	ld a, TRUE
+	ld [hSerialIgnoringInitialData], a
 .loop
 	ld a, [hl]
 	ld [hSerialSend], a
-	call Function78a
+	call Serial_ExchangeByte
 	push bc
 	ld b, a
 	inc hl
-	ld a, $30
+	ld a, 48
 .delay_cycles
 	dec a
 	jr nz, .delay_cycles
-	ld a, [hFFCC]
+	ld a, [hSerialIgnoringInitialData]
 	and a
 	ld a, b
 	pop bc
@@ -531,7 +535,7 @@
 	jr z, .load
 	dec hl
 	xor a
-	ld [hFFCC], a
+	ld [hSerialIgnoringInitialData], a
 	jr .loop
 
 .load
@@ -563,7 +567,7 @@
 
 FixDataForLinkTransfer: ; 28434
 	ld hl, wd1f3
-	ld a, $fd
+	ld a, SERIAL_PREAMBLE_BYTE
 	ld b, LinkBattleRNs - wd1f3
 .loop1
 	ld [hli], a
@@ -572,13 +576,13 @@
 	ld b, TempEnemyMonSpecies - LinkBattleRNs
 .loop2
 	call Random
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr nc, .loop2
 	ld [hli], a
 	dec b
 	jr nz, .loop2
 	ld hl, wMisc
-	ld a, $fd
+	ld a, SERIAL_PREAMBLE_BYTE
 	ld [hli], a
 	ld [hli], a
 	ld [hli], a
@@ -594,7 +598,7 @@
 .loop4
 	inc c
 	ld a, c
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr z, .next1
 	ld a, b
 	dec a
@@ -613,16 +617,16 @@
 .next2
 	inc hl
 	ld a, [hl]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr nz, .loop4
 	ld a, c
 	ld [de], a
 	inc de
-	ld [hl], $ff
+	ld [hl], SERIAL_PATCH_LIST_PART_TERMINATOR
 	jr .loop4
 
 .next1
-	ld a, $ff
+	ld a, SERIAL_PATCH_LIST_PART_TERMINATOR
 	ld [de], a
 	inc de
 	lb bc, 1, 0
@@ -629,7 +633,7 @@
 	jr .loop4
 
 .done
-	ld a, $ff
+	ld a, SERIAL_PATCH_LIST_PART_TERMINATOR
 	ld [de], a
 	ret
 ; 28499
@@ -636,8 +640,8 @@
 
 Link_PrepPartyData_Gen1: ; 28499
 	ld de, wLinkData
-	ld a, $fd
-	ld b, 6
+	ld a, SERIAL_PREAMBLE_BYTE
+	ld b, PARTY_LENGTH
 .loop1
 	ld [de], a
 	inc de
@@ -804,38 +808,31 @@
 
 Link_PrepPartyData_Gen2: ; 28595
 	ld de, wLinkData
-	ld a, $fd
-	ld b, 6
+	ld a, SERIAL_PREAMBLE_BYTE
+	ld b, PARTY_LENGTH
 .loop1
 	ld [de], a
 	inc de
 	dec b
 	jr nz, .loop1
-	; de = $c806
 	ld hl, PlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
-	; de = $c811
 	ld hl, PartyCount
 	ld bc, 1 + PARTY_LENGTH + 1
 	call CopyBytes
-	; de = $c819
 	ld hl, PlayerID
 	ld bc, 2
 	call CopyBytes
-	; de = $c81b
 	ld hl, PartyMon1Species
 	ld bc, PARTY_LENGTH * PARTYMON_STRUCT_LENGTH
 	call CopyBytes
-	; de = $c93b
 	ld hl, PartyMonOT
 	ld bc, PARTY_LENGTH * NAME_LENGTH
 	call CopyBytes
-	; de = $c97d
 	ld hl, PartyMonNicknames
-	ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH
+	ld bc, PARTY_LENGTH * MON_NAME_LENGTH
 	call CopyBytes
-	; de = $c9bf
 
 ; Okay, we did all that.  Now, are we in the trade center?
 	ld a, [wLinkMode]
@@ -914,7 +911,7 @@
 	ld bc, PARTY_LENGTH * (sPartyMon1MailAuthor - sPartyMon1Mail)
 .loop5
 	ld a, [hl]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr nz, .skip2
 	ld [hl], sPartyMon1MailAuthor - sPartyMon1Mail
 
@@ -931,9 +928,9 @@
 .loop6
 	inc c
 	ld a, [hl]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr nz, .skip3
-	ld [hl], $ff
+	ld [hl], SERIAL_PATCH_LIST_PART_TERMINATOR
 	ld a, c
 	ld [de], a
 	inc de
@@ -942,13 +939,13 @@
 	inc hl
 	dec b
 	jr nz, .loop6
-	ld a, $ff
+	ld a, SERIAL_PATCH_LIST_PART_TERMINATOR
 	ld [de], a
 	ret
 ; 28682
 
 Function28682: ; 28682
-	ld c, $5
+	ld c, 5
 .loop
 	ld [de], a
 	inc de
@@ -981,7 +978,7 @@
 	ld bc, PARTY_LENGTH * NAME_LENGTH
 	call CopyBytes
 	ld de, OTPartyMonNicknames
-	ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH
+	ld bc, PARTY_LENGTH * MON_NAME_LENGTH
 	jp CopyBytes
 ; 286ba
 
@@ -1130,13 +1127,13 @@
 	ret
 
 
-INCLUDE "data/time_capsule/catch_rate_items.asm"
+INCLUDE "data/items/catch_rate_items.asm"
 
 
 Link_CopyOTData: ; 2879e
 .loop
 	ld a, [hli]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop
 	ld [de], a
 	inc de
@@ -1148,8 +1145,8 @@
 ; 287ab
 
 Link_CopyRandomNumbers: ; 287ab
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	ret z
 	ld hl, EnemyMonSpecies
 	call Link_FindFirstNonControlCharacter_AllowZero
@@ -1157,9 +1154,9 @@
 	ld c, 10
 .loop
 	ld a, [hli]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr z, .loop
 	ld [de], a
 	inc de
@@ -1173,9 +1170,9 @@
 	ld a, [hli]
 	and a
 	jr z, .loop
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr z, .loop
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop
 	dec hl
 	ret
@@ -1184,9 +1181,9 @@
 Link_FindFirstNonControlCharacter_AllowZero: ; 287d8
 .loop
 	ld a, [hli]
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr z, .loop
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	jr z, .loop
 	dec hl
 	ret
@@ -1226,7 +1223,7 @@
 	ld [wMenuCursorX], a
 	ln a, 1, 0
 	ld [w2DMenuCursorOffsets], a
-	ld a, $20
+	ld a, MENU_UNUSED_3
 	ld [w2DMenuFlags1], a
 	xor a
 	ld [w2DMenuFlags2], a
@@ -1238,7 +1235,7 @@
 	jp z, LinkTradePartiesMenuMasterLoop
 	bit A_BUTTON_F, a
 	jr z, .not_a_button
-	ld a, $1
+	ld a, INIT_ENEMYOT_LIST
 	ld [wInitListType], a
 	callfar InitList
 	ld hl, OTPartyMon1Species
@@ -1291,7 +1288,7 @@
 	ld [wMenuCursorX], a
 	ln a, 1, 0
 	ld [w2DMenuCursorOffsets], a
-	ld a, $20
+	ld a, MENU_UNUSED_3
 	ld [w2DMenuFlags1], a
 	xor a
 	ld [w2DMenuFlags2], a
@@ -1362,7 +1359,7 @@
 	hlcoord 0, 15
 	ld b, 1
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	hlcoord 2, 16
 	ld de, .String_Stats_Trade
 	call PlaceString
@@ -1431,7 +1428,7 @@
 .show_stats
 	pop af
 	ld [wMenuCursorY], a
-	ld a, $4
+	ld a, INIT_PLAYEROT_LIST
 	ld [wInitListType], a
 	callfar InitList
 	farcall LinkMonStatsScreen
@@ -1471,7 +1468,7 @@
 	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	farcall Link_WaitBGMap
 	ld hl, .Text_CantTradeLastMon
 	bccoord 1, 14
@@ -1485,7 +1482,7 @@
 	ld a, [wd003]
 	ld hl, OTPartySpecies
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, [hl]
 	ld [wd265], a
@@ -1493,7 +1490,7 @@
 	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	farcall Link_WaitBGMap
 	ld hl, .Text_Abnormal
 	bccoord 1, 14
@@ -1503,7 +1500,7 @@
 	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	hlcoord 1, 14
 	ld de, String_TooBadTheTradeWasCanceled
 	call PlaceString
@@ -1590,15 +1587,14 @@
 	xor a
 	ld [rSB], a
 	ld [hSerialSend], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 	ret
 ; 28b42
 
-Function28b42: ; 28b42
-; unreferenced
+Unreferenced_Function28b42: ; 28b42
 	hlcoord 0, 16
 	ld a, "┘"
 	ld bc, 2 * SCREEN_WIDTH
@@ -1647,14 +1643,14 @@
 	ld [wcf57], a
 	ld [wOtherPlayerLinkAction], a
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Predef_LinkTextbox
+	ld b, 4
+	ld c, 18
+	call LinkTextboxAtHL
 	farcall Link_WaitBGMap
 	ld a, [wd002]
 	ld hl, PartySpecies
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, [hl]
 	ld [wd265], a
@@ -1661,12 +1657,12 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, wd004
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ld a, [wd003]
 	ld hl, OTPartySpecies
 	ld c, a
-	ld b, $0
+	ld b, 0
 	add hl, bc
 	ld a, [hl]
 	ld [wd265], a
@@ -1678,7 +1674,7 @@
 	hlcoord 10, 7
 	ld b, 3
 	ld c, 7
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	ld de, String28eab
 	hlcoord 12, 8
 	call PlaceString
@@ -1718,7 +1714,7 @@
 	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	hlcoord 1, 14
 	ld de, String_TooBadTheTradeWasCanceled
 	call PlaceString
@@ -1735,7 +1731,7 @@
 	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	hlcoord 1, 14
 	ld de, String_TooBadTheTradeWasCanceled
 	call PlaceString
@@ -1757,7 +1753,7 @@
 .asm_28c96
 	inc c
 	ld a, c
-	cp $6
+	cp PARTY_LENGTH
 	jr z, .asm_28ca6
 	push bc
 	ld bc, MAIL_STRUCT_LENGTH
@@ -1786,7 +1782,7 @@
 	call CopyBytes
 	ld a, [wd002]
 	ld hl, PartySpecies
-	ld b, $0
+	ld b, 0
 	ld c, a
 	add hl, bc
 	ld a, [hl]
@@ -1826,7 +1822,7 @@
 	call CopyBytes
 	ld a, [wd003]
 	ld hl, OTPartySpecies
-	ld b, $0
+	ld b, 0
 	ld c, a
 	add hl, bc
 	ld a, [hl]
@@ -1862,7 +1858,7 @@
 	ld a, [wd002]
 	ld [CurPartyMon], a
 	ld hl, PartySpecies
-	ld b, $0
+	ld b, 0
 	ld c, a
 	add hl, bc
 	ld a, [hl]
@@ -1873,12 +1869,12 @@
 	ld a, [PartyCount]
 	dec a
 	ld [CurPartyMon], a
-	ld a, $1
+	ld a, TRUE
 	ld [wForceEvolution], a
 	ld a, [wd003]
 	push af
 	ld hl, OTPartySpecies
-	ld b, $0
+	ld b, 0
 	ld c, a
 	add hl, bc
 	ld a, [hl]
@@ -1889,8 +1885,8 @@
 	call LoadFontsBattleExtra
 	ld b, SCGB_DIPLOMA
 	call GetSGBLayout
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player_2
 	predef TradeAnimation
 	jr .done_animation
@@ -1903,7 +1899,7 @@
 	ld c, a
 	ld [CurPartyMon], a
 	ld hl, OTPartySpecies
-	ld d, $0
+	ld d, 0
 	ld e, a
 	add hl, de
 	ld a, [hl]
@@ -1944,7 +1940,7 @@
 	ld a, b
 	ld [wPlayerLinkAction], a
 	push bc
-	call Function862
+	call Serial_PrintWaitingTextAndSyncAndExchangeNybble
 	pop bc
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
@@ -1958,7 +1954,7 @@
 
 .save
 	farcall SaveAfterLinkTrade
-	farcall TrainerRankings_Trades
+	farcall StubbedTrainerRankings_Trades
 	farcall BackupMobileEventIndex
 	ld c, 40
 	call DelayFrames
@@ -1965,7 +1961,7 @@
 	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	hlcoord 1, 14
 	ld de, String28ebd
 	call PlaceString
@@ -2002,7 +1998,7 @@
 	next "was canceled!@"
 
 
-Predef_LinkTextbox: ; 28eef
+LinkTextboxAtHL: ; 28eef
 	ld d, h
 	ld e, l
 	farcall LinkTextbox
@@ -2020,16 +2016,15 @@
 	ret
 ; 28f09
 
-Function28f09: ; 28f09
-; unreferenced
+Unreferenced_Function28f09: ; 28f09
 	hlcoord 0, 0
 	ld b, 6
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	hlcoord 0, 8
 	ld b, 6
 	ld c, 18
-	call Predef_LinkTextbox
+	call LinkTextboxAtHL
 	farcall PlaceTradePartnerNamesAndParty
 	ret
 ; 28f24
@@ -2045,12 +2040,12 @@
 
 ; If any party Pokemon was introduced in the generation 2 games, don't let it in.
 	ld hl, PartySpecies
-	ld b, PARTY_LENGTH ; 6
+	ld b, PARTY_LENGTH
 .loop
 	ld a, [hli]
 	cp -1
 	jr z, .checkitem
-	cp CHIKORITA ; MEW + 1 ; 151 + 1
+	cp JOHTO_POKEMON
 	jr nc, .mon_too_new
 	dec b
 	jr nz, .loop
@@ -2122,7 +2117,7 @@
 	sub b
 	ld c, a
 	inc c
-	ld b, $0
+	ld b, 0
 	ld hl, PartyCount
 	add hl, bc
 	ld a, [hl]
@@ -2145,17 +2140,17 @@
 	ret
 ; 29c92
 
-WaitForOtherPlayerToExit: ; 29c92
+Special_WaitForOtherPlayerToExit: ; 29c92
 	ld c, 3
 	call DelayFrames
-	ld a, -1
-	ld [hLinkPlayerNumber], a
+	ld a, CONNECTION_NOT_ESTABLISHED
+	ld [hSerialConnectionStatus], a
 	xor a
 	ld [rSB], a
 	ld [hSerialReceive], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 	ld c, 3
 	call DelayFrames
@@ -2162,11 +2157,11 @@
 	xor a
 	ld [rSB], a
 	ld [hSerialReceive], a
-	ld a, $0
+	ld a, (0 << rSC_ON) | 0
 	ld [rSC], a
-	ld a, $80
+	ld a, (1 << rSC_ON) | 0
 	ld [rSC], a
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	xor a
 	ld [rSB], a
@@ -2174,8 +2169,8 @@
 	ld [rSC], a
 	ld c, 3
 	call DelayFrames
-	ld a, -1
-	ld [hLinkPlayerNumber], a
+	ld a, CONNECTION_NOT_ESTABLISHED
+	ld [hSerialConnectionStatus], a
 	ld a, [rIF]
 	push af
 	xor a
@@ -2212,9 +2207,9 @@
 	ld [rSB], a
 	xor a
 	ld [hSerialReceive], a
-	ld a, $0
+	ld a, (0 << rSC_ON) | 0
 	ld [rSC], a
-	ld a, $80
+	ld a, (1 << rSC_ON) | 0
 	ld [rSC], a
 	xor a ; LINK_TIMECAPSULE - 1
 	ld [wPlayerLinkAction], a
@@ -2230,9 +2225,9 @@
 	ld [rSB], a
 	xor a
 	ld [hSerialReceive], a
-	ld a, $0
+	ld a, (0 << rSC_ON) | 0
 	ld [rSC], a
-	ld a, $80
+	ld a, (1 << rSC_ON) | 0
 	ld [rSC], a
 	call DelayFrame
 	call DelayFrame
@@ -2244,20 +2239,20 @@
 	ld a, $ff
 	ld [wLinkTimeoutFrames], a
 .loop
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr z, .connected
-	cp $1
+	cp USING_EXTERNAL_CLOCK
 	jr z, .connected
-	ld a, -1
-	ld [hLinkPlayerNumber], a
+	ld a, CONNECTION_NOT_ESTABLISHED
+	ld [hSerialConnectionStatus], a
 	ld a, $2
 	ld [rSB], a
 	xor a
 	ld [hSerialReceive], a
-	ld a, $0
+	ld a, (0 << rSC_ON) | 0
 	ld [rSC], a
-	ld a, $80
+	ld a, (1 << rSC_ON) | 0
 	ld [rSC], a
 	ld a, [wLinkTimeoutFrames]
 	dec a
@@ -2271,9 +2266,9 @@
 .not_done
 	ld a, $1
 	ld [rSB], a
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 	call DelayFrame
 	jr .loop
@@ -2366,7 +2361,7 @@
 
 Link_CheckCommunicationError: ; 29e0c
 	xor a
-	ld [hFFCA], a
+	ld [hSerialReceivedNewData], a
 	ld a, [wLinkTimeoutFrames]
 	ld h, a
 	ld a, [wLinkTimeoutFrames + 1]
@@ -2418,7 +2413,7 @@
 
 .ConvertDW: ; 29e53
 	; [wLinkTimeoutFrames] = ((hl - $100) / 4) + $100
-	;         = (hl / 4) + $c0
+	;                      = (hl / 4) + $c0
 	dec h
 	srl h
 	rr l
@@ -2436,9 +2431,9 @@
 	ld a, [wd265]
 	push af
 	farcall Link_SaveGame
-	ld a, $1
+	ld a, TRUE
 	jr nc, .return_result
-	xor a
+	xor a ; FALSE
 .return_result
 	ld [ScriptVar], a
 	ld c, 30
@@ -2465,12 +2460,12 @@
 	ld [wLinkMode], a
 	xor a
 	ld [hVBlank], a
-	ld a, $1
+	ld a, TRUE
 	ld [ScriptVar], a
 	ret
 
 .fail
-	xor a
+	xor a ; FALSE
 	ld [ScriptVar], a
 	ret
 ; 29eaf
@@ -2526,8 +2521,8 @@
 Link_ResetSerialRegistersAfterLinkClosure: ; 29f04
 	ld c, 3
 	call DelayFrames
-	ld a, -1
-	ld [hLinkPlayerNumber], a
+	ld a, CONNECTION_NOT_ESTABLISHED
+	ld [hSerialConnectionStatus], a
 	ld a, $2
 	ld [rSB], a
 	xor a
@@ -2545,7 +2540,7 @@
 	call DelayFrame
 	call DelayFrame
 .receive_loop
-	call Function83b
+	call Serial_ExchangeLinkMenuSelection
 	ld a, [wOtherPlayerLinkMode]
 	ld b, a
 	and $f0
@@ -2566,11 +2561,11 @@
 ; 29f47
 
 Special_CableClubCheckWhichChris: ; 29f47
-	ld a, [hLinkPlayerNumber]
-	cp $1
-	ld a, $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
+	ld a, TRUE
 	jr z, .yes
-	dec a
+	dec a ; FALSE
 
 .yes
 	ld [ScriptVar], a
@@ -2577,17 +2572,16 @@
 	ret
 ; 29f54
 
-UnusedGen1LinkCommsBorderGFX: ; 29f54
-; unreferenced
+Unreferenced_Gen1LinkCommsBorderGFX: ; 29f54
 INCBIN "gfx/trade/unused_gen_1_border_tiles.2bpp"
 ; 29fe4
 
-Function29fe4: ; unreferenced
+Unreferenced_Function29fe4:
 	ld a, BANK(sPartyMail)
 	call GetSRAMBank
-	ld d, $0
+	ld d, FALSE
 	ld b, CHECK_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 	call CloseSRAM
 	ld a, c
 	and a
--- a/engine/link_2.asm
+++ b/engine/link_2.asm
@@ -30,6 +30,7 @@
 	call .PlaceBorder
 	pop hl
 	pop bc
+
 	ld de, AttrMap - TileMap
 	add hl, de
 	inc b
@@ -36,7 +37,7 @@
 	inc b
 	inc c
 	inc c
-	ld a, $7
+	ld a, PAL_BG_TEXT
 .row
 	push bc
 	push hl
@@ -51,6 +52,7 @@
 	dec b
 	jr nz, .row
 	ret
+; 4d37e
 
 .PlaceBorder: ; 4d37e
 	push hl
@@ -75,6 +77,7 @@
 	add hl, de
 	dec b
 	jr nz, .loop
+
 	ld a, "┐"
 	ld [hli], a
 	ld a, "│"
@@ -81,6 +84,7 @@
 	call .PlaceRow
 	ld [hl], "└"
 	ret
+; 4d3ab
 
 .PlaceRow: ; 4d3ab
 	ld d, c
--- a/engine/link_trade.asm
+++ b/engine/link_trade.asm
@@ -48,7 +48,7 @@
 	ld l, e
 	push bc
 	push hl
-	call .draw_border
+	call .PlaceBorder
 	pop hl
 	pop bc
 
@@ -58,7 +58,7 @@
 	inc b
 	inc c
 	inc c
-	ld a, $7
+	ld a, PAL_BG_TEXT
 .row
 	push bc
 	push hl
@@ -75,12 +75,12 @@
 	ret
 ; 16d640
 
-.draw_border ; 16d640
+.PlaceBorder ; 16d640
 	push hl
 	ld a, $30
 	ld [hli], a
 	inc a
-	call .fill_row
+	call .PlaceRow
 	inc a
 	ld [hl], a
 	pop hl
@@ -91,7 +91,7 @@
 	ld a, $33
 	ld [hli], a
 	ld a, " "
-	call .fill_row
+	call .PlaceRow
 	ld [hl], $34
 	pop hl
 	ld de, SCREEN_WIDTH
@@ -102,17 +102,17 @@
 	ld a, $35
 	ld [hli], a
 	ld a, $36
-	call .fill_row
+	call .PlaceRow
 	ld [hl], $37
 	ret
 ; 16d66d
 
-.fill_row ; 16d66d
+.PlaceRow ; 16d66d
 	ld d, c
-.loop4
+.row_loop
 	ld [hli], a
 	dec d
-	jr nz, .loop4
+	jr nz, .row_loop
 	ret
 ; 16d673
 
@@ -181,7 +181,7 @@
 	hlcoord 4, 10
 	ld b, 1
 	ld c, 10
-	predef Predef_LinkTextbox
+	predef LinkTextboxAtHL
 	hlcoord 5, 11
 	ld de, .Waiting
 	call PlaceString
@@ -283,7 +283,7 @@
 	ld [hl], a
 	push hl
 	push bc
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	add hl, bc
 	ld [hl], a
 	pop bc
@@ -335,7 +335,7 @@
 	ld [hl], $1f
 	push hl
 	push bc
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	add hl, bc
 	ld [hl], $1f
 	pop bc
--- /dev/null
+++ b/engine/load_font.asm
@@ -1,0 +1,156 @@
+INCLUDE "gfx/font.asm"
+
+; This and the following two functions are unreferenced.
+; Debug, perhaps?
+Unreferenced_fb434:
+	db 0
+
+Unreferenced_Functionfb435: ; 4b435
+	ld a, [Unreferenced_fb434]
+	and a
+	jp nz, Get1bpp_2
+	jp Get1bpp
+; fb43f
+
+Unreferenced_Functionfb43f: ; fb43f
+	ld a, [Unreferenced_fb434]
+	and a
+	jp nz, Get2bpp_2
+	jp Get2bpp
+; End unreferenced block
+; fb449
+
+_LoadStandardFont:: ; fb449
+	ld de, Font
+	ld hl, vTiles1
+	lb bc, BANK(Font), 128 ; "A" to "9"
+	ld a, [rLCDC]
+	bit rLCDC_ENABLE, a
+	jp z, Copy1bpp
+
+	ld de, Font
+	ld hl, vTiles1
+	lb bc, BANK(Font), 32 ; "A" to "]"
+	call Get1bpp_2
+	ld de, Font + 32 * LEN_1BPP_TILE
+	ld hl, vTiles1 tile $20
+	lb bc, BANK(Font), 32 ; "a" to $bf
+	call Get1bpp_2
+	ld de, Font + 64 * LEN_1BPP_TILE
+	ld hl, vTiles1 tile $40
+	lb bc, BANK(Font), 32 ; "Ä" to "←"
+	call Get1bpp_2
+	ld de, Font + 96 * LEN_1BPP_TILE
+	ld hl, vTiles1 tile $60
+	lb bc, BANK(Font), 32 ; "'" to "9"
+	call Get1bpp_2
+	ret
+; fb48a
+
+_LoadFontsExtra1:: ; fb48a
+	ld de, FontsExtra_SolidBlackGFX
+	ld hl, vTiles2 tile "■" ; $60
+	lb bc, BANK(FontsExtra_SolidBlackGFX), 1
+	call Get1bpp_2
+	ld de, PokegearPhoneIconGFX
+	ld hl, vTiles2 tile "☎" ; $62
+	lb bc, BANK(PokegearPhoneIconGFX), 1
+	call Get2bpp_2
+	ld de, FontExtra + 3 tiles ; "<BOLD_D>"
+	ld hl, vTiles2 tile "<BOLD_D>"
+	lb bc, BANK(FontExtra), 22 ; "<BOLD_D>" to "ぉ"
+	call Get2bpp_2
+	jr LoadFrame
+; fb4b0
+
+_LoadFontsExtra2:: ; fb4b0
+	ld de, FontsExtra2_UpArrowGFX
+	ld hl, vTiles2 tile "▲" ; $61
+	ld b, BANK(FontsExtra2_UpArrowGFX)
+	ld c, 1
+	call Get2bpp_2
+	ret
+; fb4be
+
+_LoadFontsBattleExtra:: ; fb4be
+	ld de, FontBattleExtra
+	ld hl, vTiles2 tile $60
+	lb bc, BANK(FontBattleExtra), 25
+	call Get2bpp_2
+	jr LoadFrame
+; fb4cc
+
+LoadFrame: ; fb4cc
+	ld a, [TextBoxFrame]
+	maskbits NUM_FRAMES
+	ld bc, 6 * LEN_1BPP_TILE
+	ld hl, Frames
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, vTiles2 tile "┌" ; $79
+	lb bc, BANK(Frames), 6 ; "┌" to "┘"
+	call Get1bpp_2
+	ld hl, vTiles2 tile " " ; $7f
+	ld de, TextBoxSpaceGFX
+	lb bc, BANK(TextBoxSpaceGFX), 1
+	call Get1bpp_2
+	ret
+; fb4f2
+
+LoadBattleFontsHPBar: ; fb4f2
+	ld de, FontBattleExtra
+	ld hl, vTiles2 tile $60
+	lb bc, BANK(FontBattleExtra), 12
+	call Get2bpp_2
+	ld hl, vTiles2 tile $70
+	ld de, FontBattleExtra + 16 tiles ; "<DO>"
+	lb bc, BANK(FontBattleExtra), 3 ; "<DO>" to "『"
+	call Get2bpp_2
+	call LoadFrame
+
+LoadHPBar: ; fb50d
+	ld de, EnemyHPBarBorderGFX
+	ld hl, vTiles2 tile $6c
+	lb bc, BANK(EnemyHPBarBorderGFX), 4
+	call Get1bpp_2
+	ld de, HPExpBarBorderGFX
+	ld hl, vTiles2 tile $73
+	lb bc, BANK(HPExpBarBorderGFX), 6
+	call Get1bpp_2
+	ld de, ExpBarGFX
+	ld hl, vTiles2 tile $55
+	lb bc, BANK(ExpBarGFX), 9
+	call Get2bpp_2
+	ld de, MobilePhoneTilesGFX + 7 tiles ; mobile phone icon
+	ld hl, vTiles2 tile $5e
+	lb bc, BANK(MobilePhoneTilesGFX), 2
+	call Get2bpp_2
+	ret
+; fb53e
+
+StatsScreen_LoadFont: ; fb53e
+	call _LoadFontsBattleExtra
+	ld de, EnemyHPBarBorderGFX
+	ld hl, vTiles2 tile $6c
+	lb bc, BANK(EnemyHPBarBorderGFX), 4
+	call Get1bpp_2
+	ld de, HPExpBarBorderGFX
+	ld hl, vTiles2 tile $78
+	lb bc, BANK(HPExpBarBorderGFX), 1
+	call Get1bpp_2
+	ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE
+	ld hl, vTiles2 tile $76
+	lb bc, BANK(HPExpBarBorderGFX), 2
+	call Get1bpp_2
+	ld de, ExpBarGFX
+	ld hl, vTiles2 tile $55
+	lb bc, BANK(ExpBarGFX), 8
+	call Get2bpp_2
+LoadStatsScreenPageTilesGFX: ; fb571
+	ld de, StatsScreenPageTilesGFX
+	ld hl, vTiles2 tile $31
+	lb bc, BANK(StatsScreenPageTilesGFX), 17
+	call Get2bpp_2
+	ret
+; fb57e
--- /dev/null
+++ b/engine/load_pics.asm
@@ -1,0 +1,494 @@
+GetUnownLetter: ; 51040
+; Return Unown letter in UnownLetter based on DVs at hl
+
+; Take the middle 2 bits of each DV and place them in order:
+;	atk  def  spd  spc
+;	.ww..xx.  .yy..zz.
+
+	; atk
+	ld a, [hl]
+	and %01100000
+	sla a
+	ld b, a
+	; def
+	ld a, [hli]
+	and %00000110
+	swap a
+	srl a
+	or b
+	ld b, a
+
+	; spd
+	ld a, [hl]
+	and %01100000
+	swap a
+	sla a
+	or b
+	ld b, a
+	; spc
+	ld a, [hl]
+	and %00000110
+	srl a
+	or b
+
+; Divide by 10 to get 0-25
+	ld [hDividend + 3], a
+	xor a
+	ld [hDividend], a
+	ld [hDividend + 1], a
+	ld [hDividend + 2], a
+	ld a, $ff / NUM_UNOWN + 1
+	ld [hDivisor], a
+	ld b, 4
+	call Divide
+
+; Increment to get 1-26
+	ld a, [hQuotient + 2]
+	inc a
+	ld [UnownLetter], a
+	ret
+
+GetMonFrontpic: ; 51077
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	call _GetFrontpic
+	pop af
+	ld [rSVBK], a
+	ret
+
+GetAnimatedFrontpic: ; 5108b
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	call _GetFrontpic
+	call GetAnimatedEnemyFrontpic
+	pop af
+	ld [rSVBK], a
+	ret
+
+_GetFrontpic: ; 510a5
+	push de
+	call GetBaseData
+	ld a, [BasePicSize]
+	and $f
+	ld b, a
+	push bc
+	call GetFrontpicPointer
+	ld a, BANK(wDecompressEnemyFrontpic)
+	ld [rSVBK], a
+	ld a, b
+	ld de, wDecompressEnemyFrontpic
+	call FarDecompress
+	pop bc
+	ld hl, wDecompressScratch
+	ld de, wDecompressEnemyFrontpic
+	call PadFrontpic
+	pop hl
+	push hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ret
+
+GetFrontpicPointer: ; 510d7
+GLOBAL PokemonPicPointers, UnownPicPointers
+
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr z, .unown
+	ld a, [CurPartySpecies]
+	ld d, BANK(PokemonPicPointers)
+	jr .ok
+
+.unown
+	ld a, [UnownLetter]
+	ld d, BANK(UnownPicPointers)
+
+.ok
+	ld hl, PokemonPicPointers ; UnownPicPointers
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld a, d
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	pop bc
+	ret
+
+GetAnimatedEnemyFrontpic: ; 51103
+	ld a, BANK(vTiles3)
+	ld [rVBK], a
+	push hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ld de, 7 * 7 tiles
+	add hl, de
+	push hl
+	ld a, BANK(BasePicSize)
+	ld hl, BasePicSize
+	call GetFarWRAMByte
+	pop hl
+	and $f
+	ld de, wDecompressEnemyFrontpic + 5 * 5 tiles
+	ld c, 5 * 5
+	cp 5
+	jr z, .got_dims
+	ld de, wDecompressEnemyFrontpic + 6 * 6 tiles
+	ld c, 6 * 6
+	cp 6
+	jr z, .got_dims
+	ld de, wDecompressEnemyFrontpic + 7 * 7 tiles
+	ld c, 7 * 7
+.got_dims
+
+	push hl
+	push bc
+	call LoadFrontpicTiles
+	pop bc
+	pop hl
+	ld de, wDecompressScratch
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+
+LoadFrontpicTiles: ; 5114f
+	ld hl, wDecompressScratch
+	swap c
+	ld a, c
+	and $f
+	ld b, a
+	ld a, c
+	and $f0
+	ld c, a
+	push bc
+	call LoadOrientedFrontpic
+	pop bc
+.loop
+	push bc
+	ld c, 0
+	call LoadOrientedFrontpic
+	pop bc
+	dec b
+	jr nz, .loop
+	ret
+
+GetMonBackpic: ; 5116c
+	ld a, [CurPartySpecies]
+	call IsAPokemon
+	ret c
+
+	ld a, [CurPartySpecies]
+	ld b, a
+	ld a, [UnownLetter]
+	ld c, a
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(wDecompressScratch)
+	ld [rSVBK], a
+	push de
+
+	; These are assumed to be at the same address in their respective banks.
+	GLOBAL PokemonPicPointers,  UnownPicPointers
+	ld hl, PokemonPicPointers ; UnownPicPointers
+	ld a, b
+	ld d, BANK(PokemonPicPointers)
+	cp UNOWN
+	jr nz, .ok
+	ld a, c
+	ld d, BANK(UnownPicPointers)
+.ok
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld bc, 3
+	add hl, bc
+	ld a, d
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	ld de, wDecompressScratch
+	pop af
+	call FarDecompress
+	ld hl, wDecompressScratch
+	ld c, 6 * 6
+	call FixBackpicAlignment
+	pop hl
+	ld de, wDecompressScratch
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+
+FixPicBank: ; 511c5
+; This is a thing for some reason.
+
+PICS_FIX EQU $36
+GLOBAL PICS_FIX
+
+	push hl
+	push bc
+	sub BANK(Pics_1) - PICS_FIX
+	ld c, a
+	ld b, 0
+	ld hl, .PicsBanks
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	pop hl
+	ret
+
+.PicsBanks: ; 511d4
+	db BANK(Pics_1) + 0
+	db BANK(Pics_1) + 1
+	db BANK(Pics_1) + 2
+	db BANK(Pics_1) + 3
+	db BANK(Pics_1) + 4
+	db BANK(Pics_1) + 5
+	db BANK(Pics_1) + 6
+	db BANK(Pics_1) + 7
+	db BANK(Pics_1) + 8
+	db BANK(Pics_1) + 9
+	db BANK(Pics_1) + 10
+	db BANK(Pics_1) + 11
+	db BANK(Pics_1) + 12
+	db BANK(Pics_1) + 13
+	db BANK(Pics_1) + 14
+	db BANK(Pics_1) + 15
+	db BANK(Pics_1) + 16
+	db BANK(Pics_1) + 17
+	db BANK(Pics_1) + 18
+	db BANK(Pics_1) + 19
+	db BANK(Pics_1) + 20
+	db BANK(Pics_1) + 21
+	db BANK(Pics_1) + 22
+	db BANK(Pics_1) + 23
+
+Function511ec: ; 511ec
+	ld a, c
+	push de
+	ld hl, PokemonPicPointers
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld a, BANK(PokemonPicPointers)
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, BANK(PokemonPicPointers)
+	call GetFarHalfword
+	pop af
+	pop de
+	call FarDecompress
+	ret
+
+GetTrainerPic: ; 5120d
+	ld a, [TrainerClass]
+	and a
+	ret z
+	cp NUM_TRAINER_CLASSES
+	ret nc
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld hl, TrainerPicPointers
+	ld a, [TrainerClass]
+	dec a
+	ld bc, 3
+	call AddNTimes
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(wDecompressScratch)
+	ld [rSVBK], a
+	push de
+	ld a, BANK(TrainerPicPointers)
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, BANK(TrainerPicPointers)
+	call GetFarHalfword
+	pop af
+	ld de, wDecompressScratch
+	call FarDecompress
+	pop hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	call WaitBGMap
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+DecompressGet2bpp: ; 5125d
+; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
+
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(wDecompressScratch)
+	ld [rSVBK], a
+
+	push de
+	push bc
+	ld a, b
+	ld de, wDecompressScratch
+	call FarDecompress
+	pop bc
+	ld de, wDecompressScratch
+	pop hl
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+
+	pop af
+	ld [rSVBK], a
+	ret
+
+FixBackpicAlignment: ; 5127c
+	push de
+	push bc
+	ld a, [wBoxAlignment]
+	and a
+	jr z, .keep_dims
+	ld a, c
+	cp 7 * 7
+	ld de, 7 * 7 tiles
+	jr z, .got_dims
+	cp 6 * 6
+	ld de, 6 * 6 tiles
+	jr z, .got_dims
+	ld de, 5 * 5 tiles
+
+.got_dims
+	ld a, [hl]
+	ld b, 0
+	ld c, 8
+.loop
+	rra
+	rl b
+	dec c
+	jr nz, .loop
+	ld a, b
+	ld [hli], a
+	dec de
+	ld a, e
+	or d
+	jr nz, .got_dims
+
+.keep_dims
+	pop bc
+	pop de
+	ret
+
+PadFrontpic: ; 512ab
+; pads frontpic to fill 7x7 box
+	ld a, b
+	cp 6
+	jr z, .six
+	cp 5
+	jr z, .five
+
+.seven_loop
+	ld c, $70
+	call LoadOrientedFrontpic
+	dec b
+	jr nz, .seven_loop
+	ret
+
+.six
+	ld c, $70
+	xor a
+	call .Fill
+.six_loop
+	ld c, $10
+	xor a
+	call .Fill
+	ld c, $60
+	call LoadOrientedFrontpic
+	dec b
+	jr nz, .six_loop
+	ret
+
+.five
+	ld c, $70
+	xor a
+	call .Fill
+.five_loop
+	ld c, $20
+	xor a
+	call .Fill
+	ld c, $50
+	call LoadOrientedFrontpic
+	dec b
+	jr nz, .five_loop
+	ld c, $70
+	xor a
+	call .Fill
+	ret
+
+.Fill:
+	ld [hli], a
+	dec c
+	jr nz, .Fill
+	ret
+
+LoadOrientedFrontpic: ; 512f2
+	ld a, [wBoxAlignment]
+	and a
+	jr nz, .x_flip
+.left_loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .left_loop
+	ret
+
+.x_flip
+	push bc
+.right_loop
+	ld a, [de]
+	inc de
+	ld b, a
+	xor a
+rept 8
+	rr b
+	rla
+endr
+	ld [hli], a
+	dec c
+	jr nz, .right_loop
+	pop bc
+	ret
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -128,7 +128,7 @@
 	push bc
 	push de
 	farcall SelectMonFromParty
-	ld a, $2
+	ld a, POKEMAIL_REFUSED
 	jr c, .pop_return
 
 	ld a, [CurPartyMon]
@@ -137,7 +137,7 @@
 	call AddNTimes
 	ld d, [hl]
 	farcall ItemIsMail
-	ld a, $3
+	ld a, POKEMAIL_NO_MAIL
 	jr nc, .pop_return
 
 	ld a, BANK(sPartyMail)
@@ -162,7 +162,7 @@
 	cp "@"
 	jr z, .done
 	cp c
-	ld a, $0
+	ld a, POKEMAIL_WRONG_MAIL
 	jr nz, .close_sram_return
 	inc hl
 	inc de
@@ -173,12 +173,12 @@
 
 .done
 	farcall CheckCurPartyMonFainted
-	ld a, $4
+	ld a, POKEMAIL_LAST_MON
 	jr c, .close_sram_return
 	xor a
 	ld [wPokemonWithdrawDepositParameter], a
 	farcall RemoveMonFromPartyOrBox
-	ld a, $1
+	ld a, POKEMAIL_CORRECT
 
 .close_sram_return
 	call CloseSRAM
@@ -558,14 +558,13 @@
 	ret
 
 .TopMenuDataHeader: ; 0x4494c
-	db %01000000 ; flags
-	db 1, 8 ; start coords
-	db 10, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 8, 1, SCREEN_WIDTH - 2, 10
 	dw .TopMenuData2
 	db 1 ; default option
 
 .TopMenuData2:
-	db %00010000 ; flags
+	db SCROLLINGMENU_DISPLAY_ARROWS ; flags
 	db 4, 0 ; rows/columns?
 	db 1 ; horizontal spacing?
 	dbw 0, wMailboxCount ; text pointer
@@ -574,14 +573,13 @@
 	dba NULL
 
 .SubMenuDataHeader: ; 0x44964
-	db %01000000 ; flags
-	db 0,  0 ; start coords
-	db 9, 13 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 13, 9
 	dw .SubMenuData2
 	db 1 ; default option
 
 .SubMenuData2:
-	db %10000000 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "READ MAIL@"
 	db "PUT IN PACK@"
--- a/engine/mail_2.asm
+++ b/engine/mail_2.asm
@@ -69,7 +69,7 @@
 	ld h, d
 	ld l, e
 	push hl
-	ld a, $0
+	ld a, BANK(sPartyMail)
 	call GetSRAMBank
 	ld de, sPartyMon1MailAuthorID - sPartyMon1Mail
 	add hl, de
@@ -725,8 +725,7 @@
 	jp PlaceString
 ; b984e
 
-Functionb984e: ; b984e
-; XXX
+Unreferenced_Functionb984e: ; b984e
 .loop
 	ld a, [hl]
 	xor $ff
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -30,15 +30,14 @@
 ; 49d14
 
 .MenuDataHeader: ; 49d14
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 07, 16 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 16, 7
 	dw .MenuData2
 	db 1 ; default option
 ; 49d1c
 
 .MenuData2: ; 49d1c
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 0 ; items
 	dw MainMenuItems
 	dw PlaceMenuStrings
@@ -279,7 +278,7 @@
 	ret
 
 .min
-; unreferenced
+; unused
 	db "min.@"
 ; 49e75
 
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,6 +1,6 @@
-INCLUDE "data/facings.asm"
+INCLUDE "data/sprites/facings.asm"
 
-INCLUDE "data/map_objects.asm"
+INCLUDE "data/sprites/map_objects.asm"
 
 
 ; 4357
@@ -392,6 +392,7 @@
 	db -4,  0,  4, 4
 	db  4,  0,  4, 4
 ; 4730
+
 GetStepVectorSign: ; 4730
 	add a
 	ret z  ; 0 or 128
@@ -400,6 +401,7 @@
 	ld a, -1
 	ret    ; 129 - 255
 ; 4738
+
 UpdatePlayerStep: ; 4738
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -418,8 +420,7 @@
 	ret
 ; 4759
 
-Function4759: ; 4759
-; unreferenced
+Unreferenced_Function4759: ; 4759
 	push bc
 	ld e, a
 	ld d, 0
@@ -892,7 +893,7 @@
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, de
 	ld a, [hl]
-	and 3
+	maskbits NUM_DIRECTIONS
 	ld d, 1 * 8 + 6
 	cp DOWN
 	jr z, .ok_13
@@ -1571,7 +1572,7 @@
 	ld [hl], a
 	call IncrementObjectStructField1c
 StepType04: ; 4e21
-	call MobileFn_4fb2
+	call Stubbed_Function4fb2
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -1579,7 +1580,7 @@
 ; 4e2b
 
 NPCStep: ; 4e2b
-	call MobileFn_4fb2
+	call Stubbed_Function4fb2
 	call AddStepVector
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
@@ -1842,7 +1843,8 @@
 	ret
 ; 4fb2
 
-MobileFn_4fb2: mobile
+Stubbed_Function4fb2:
+	ret
 	ld hl, OBJECT_1D
 	add hl, bc
 	inc [hl]
@@ -2087,6 +2089,7 @@
 	; vtile, palette, movement
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SHADOW
 ; 5538
+
 SpawnStrengthBoulderDust: ; 5538
 	push bc
 	ld de, .BoulderDustObject
@@ -2098,6 +2101,7 @@
 .BoulderDustObject:
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_BOULDERDUST
 ; 5547
+
 SpawnEmote: ; 5547
 	push bc
 	ld de, .EmoteObject
@@ -2109,6 +2113,7 @@
 .EmoteObject:
 	db $00, PAL_OW_SILVER, SPRITEMOVEDATA_EMOTE
 ; 5556
+
 ShakeGrass: ; 5556
 	push bc
 	ld de, .data_5562
@@ -2120,6 +2125,7 @@
 .data_5562
 	db $00, PAL_OW_TREE, SPRITEMOVEDATA_GRASS
 ; 5565
+
 ShakeScreen: ; 5565
 	push bc
 	push af
@@ -2357,7 +2363,7 @@
 	cp d
 	jr z, .equal_x
 	jr nc, .nope
-	add $b
+	add MAPOBJECT_SCREEN_WIDTH - 1
 	cp d
 	jr c, .nope
 .equal_x
@@ -2365,7 +2371,7 @@
 	cp e
 	jr z, .equal_y
 	jr nc, .nope
-	add $a
+	add MAPOBJECT_SCREEN_HEIGHT - 1
 	cp e
 	jr c, .nope
 .equal_y
@@ -2404,7 +2410,7 @@
 	srl a
 	cp SCREEN_WIDTH
 	jr c, .ok3
-	sub $20
+	sub BG_MAP_WIDTH
 .ok3
 	ld [hUsedSpriteIndex], a
 	ld a, [wPlayerBGMapOffsetY]
@@ -2431,9 +2437,9 @@
 	srl a
 	srl a
 	srl a
-	cp $12
+	cp SCREEN_HEIGHT
 	jr c, .ok6
-	sub $20
+	sub BG_MAP_HEIGHT
 .ok6
 	ld [hUsedSpriteTile], a
 	ld hl, OBJECT_PALETTE
@@ -2455,7 +2461,7 @@
 	ld a, [hUsedSpriteTile]
 	add e
 	dec a
-	cp $12
+	cp SCREEN_HEIGHT
 	jr nc, .ok9
 	ld b, a
 .next
@@ -2462,14 +2468,16 @@
 	ld a, [hUsedSpriteIndex]
 	add d
 	dec a
-	cp $14
+	cp SCREEN_WIDTH
 	jr nc, .ok8
 	ld c, a
 	push bc
 	call Coord2Tile
 	pop bc
+; NPCs disappear if standing on tile $60-$7f (or $e0-$ff),
+; since those IDs are for text characters and textbox frames.
 	ld a, [hl]
-	cp $60
+	cp FIRST_REGULAR_TEXT_CHAR
 	jr nc, .nope
 .ok8
 	dec d
@@ -2793,6 +2801,7 @@
 	db SPRITEMOVEDATA_STANDING_LEFT
 	db SPRITEMOVEDATA_STANDING_RIGHT
 ; 5920
+
 _UpdateSprites:: ; 5920
 	ld a, [VramState]
 	bit 0, a
@@ -2814,7 +2823,7 @@
 	bit 1, a
 	ld b, LOW(SpritesEnd)
 	jr z, .ok
-	ld b, 28 * 4
+	ld b, 28 * SPRITEOAMSTRUCT_LENGTH
 .ok
 	ld a, [hUsedSpriteIndex]
 	cp b
@@ -2821,11 +2830,11 @@
 	ret nc
 	ld l, a
 	ld h, HIGH(Sprites)
-	ld de, 4
+	ld de, SPRITEOAMSTRUCT_LENGTH
 	ld a, b
-	ld c, SCREEN_HEIGHT_PX + 16
+	ld c, SCREEN_HEIGHT_PX + 2 * TILE_WIDTH
 .loop
-	ld [hl], c
+	ld [hl], c ; y
 	add hl, de
 	cp l
 	jr nz, .loop
@@ -2873,10 +2882,12 @@
 	ret
 ; 5991
 
-InitSprites: ; 5991
+
 PRIORITY_LOW  EQU $10
 PRIORITY_NORM EQU $20
 PRIORITY_HIGH EQU $30
+
+InitSprites: ; 5991
 	call .DeterminePriorities
 	ld c, PRIORITY_HIGH
 	call .InitSpritesByPriority
@@ -3042,12 +3053,12 @@
 	ld a, [hFFC0]
 	add [hl]
 	inc hl
-	ld [bc], a
+	ld [bc], a ; y
 	inc c
 	ld a, [hFFBF]
 	add [hl]
 	inc hl
-	ld [bc], a
+	ld [bc], a ; x
 	inc c
 	ld e, [hl]
 	inc hl
@@ -3058,7 +3069,7 @@
 .nope1
 	add [hl]
 	inc hl
-	ld [bc], a
+	ld [bc], a ; tile id
 	inc c
 	ld a, e
 	bit 1, a
@@ -3066,9 +3077,9 @@
 	ld a, [hFFC2]
 	or e
 .nope2
-	and %11110000
+	and OBP_NUM | X_FLIP | Y_FLIP | PRIORITY
 	or d
-	ld [bc], a
+	ld [bc], a ; attributes
 	inc c
 	ld a, [hUsedSpriteTile]
 	dec a
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -79,7 +79,7 @@
 	dba LoadGraphics ; 0e
 	dba LoadTileset ; 0f
 	dba LoadMapTimeOfDay ; 10
-	dba LoadMapPalettes ; 11
+	dba Special_LoadMapPalettes ; 11
 	dba LoadWildMonData ; 12
 	dba RefreshMapSprites ; 13
 	dba HandleNewMap ; 14
@@ -91,8 +91,8 @@
 	dba LoadMapAttributes ; 1a
 	dba LoadMapAttributes_SkipPeople ; 1b
 	dba ClearBGPalettes ; 1c
-	dba FadeOutPalettes ; 1d
-	dba FadeInPalettes ; 1e
+	dba Special_FadeOutPalettes ; 1d
+	dba Special_FadeInPalettes ; 1e
 	dba GetCoordOfUpperLeftCorner ; 1f
 	dba RestoreFacingAfterWarp ; 20
 	dba SpawnInFacingDown ; 21
@@ -137,7 +137,7 @@
 	ret
 ; 154ea (5:54ea)
 
-; unreferenced
+; unused
 	ret
 ; 154eb
 
--- /dev/null
+++ b/engine/mapgroup_roofs.asm
@@ -1,0 +1,20 @@
+LoadMapGroupRoof:: ; 1c000
+	ld a, [MapGroup]
+	ld e, a
+	ld d, 0
+	ld hl, MapGroupRoofs
+	add hl, de
+	ld a, [hl]
+	cp -1
+	ret z
+	ld hl, Roofs
+	ld bc, 9 tiles
+	call AddNTimes
+	ld de, vTiles2 tile $0a
+	ld bc, 9 tiles
+	call CopyBytes
+	ret
+; 1c021
+
+
+INCLUDE "data/maps/roofs.asm"
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -443,7 +443,7 @@
 
 
 BuyMenuLoop: ; 15cef
-	farcall PlaceMoneyTopRight
+	farcall Special_PlaceMoneyTopRight
 	call UpdateSprites
 	ld hl, MenuDataHeader_Buy
 	call CopyMenuDataHeader
@@ -617,15 +617,14 @@
 ; 0x15e18
 
 MenuDataHeader_Buy: ; 0x15e18
-	db $40 ; flags
-	db 03, 01 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 1, 3, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .menudata2
 	db 1 ; default option
 ; 0x15e20
 
 .menudata2 ; 0x15e20
-	db $30 ; pointers
+	db SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_FUNCTION3 ; flags
 	db 4, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, CurMart
@@ -785,7 +784,7 @@
 	farcall DepositSellInitPackBuffers
 .loop
 	farcall DepositSellPack
-	ld a, [wcf66]
+	ld a, [wPackUsedItem]
 	and a
 	jp z, .quit
 	call .TryToSellItem
@@ -797,7 +796,7 @@
 	ret
 ; 15ed3
 
-.NothingToSell: ; unreferenced
+.Unreferenced_NothingToSell:
 	ld hl, .NothingToSellText
 	call MenuTextBoxBackup
 	and a
@@ -892,8 +891,8 @@
 	db "@"
 ; 0x15f7d
 
-DummyString ; 15f7d
-	db "!ダミー!@"
+.UnusedString15f7d: ; 15f7d
+	db "!ダミー!@"
 
 Text_Mart_HowMayIHelpYou: ; 0x15f83
 	; Welcome! How may I help you?
@@ -902,15 +901,14 @@
 ; 0x15f88
 
 MenuDataHeader_BuySell: ; 0x15f88
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 08, 07 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 7, 8
 	dw .menudata2
 	db 1 ; default option
 ; 0x15f90
 
 .menudata2 ; 0x15f90
-	db $80 ; strings
+	db STATICMENU_CURSOR ; strings
 	db 3 ; items
 	db "BUY@"
 	db "SELL@"
--- a/engine/menu.asm
+++ b/engine/menu.asm
@@ -110,14 +110,14 @@
 	ret
 ; 240cd
 
-GetMenuNumberOfColumns: ; 240cd
-	ld a, [wMenuData2Items]
+Get2DMenuNumberOfColumns: ; 240cd
+	ld a, [wMenuData2_2DMenuDimensions]
 	and $f
 	ret
 ; 240d3
 
-GetMenuNumberOfRows: ; 240d3
-	ld a, [wMenuData2Items]
+Get2DMenuNumberOfRows: ; 240d3
+	ld a, [wMenuData2_2DMenuDimensions]
 	swap a
 	and $f
 	ret
@@ -130,12 +130,12 @@
 	ld d, [hl]
 	call GetMenuTextStartCoord
 	call Coord2Tile
-	call GetMenuNumberOfRows
+	call Get2DMenuNumberOfRows
 	ld b, a
 .row
 	push bc
 	push hl
-	call GetMenuNumberOfColumns
+	call Get2DMenuNumberOfColumns
 	ld c, a
 .col
 	push bc
@@ -142,7 +142,7 @@
 	ld a, [wMenuData2_2DMenuItemStringsBank]
 	call Place2DMenuItemName
 	inc de
-	ld a, [wMenuData2Spacing]
+	ld a, [wMenuData2_2DMenuSpacing]
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -174,9 +174,9 @@
 	dec c
 	ld a, c
 	ld [w2DMenuCursorInitX], a
-	call GetMenuNumberOfRows
+	call Get2DMenuNumberOfRows
 	ld [w2DMenuNumRows], a
-	call GetMenuNumberOfColumns
+	call Get2DMenuNumberOfColumns
 	ld [w2DMenuNumCols], a
 	call .InitFlags_a
 	call .InitFlags_b
@@ -238,7 +238,7 @@
 ; 2418a
 
 .InitFlags_b: ; 2418a
-	ld a, [wMenuData2Spacing]
+	ld a, [wMenuData2_2DMenuSpacing]
 	or $20
 	ld [w2DMenuCursorOffsets], a
 	ret
@@ -291,8 +291,7 @@
 ; 241d5
 
 
-Function241d5: ; 241d5
-; Unreferenced
+Unreferenced_Function241d5: ; 241d5
 	call Place2DMenuCursor
 .loop
 	call Move2DMenuCursor
@@ -586,7 +585,7 @@
 _PushWindow:: ; 24374
 	ld a, [rSVBK]
 	push af
-	ld a, $7
+	ld a, BANK(wWindowStack)
 	ld [rSVBK], a
 
 	ld hl, wWindowStackPointer
@@ -691,7 +690,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $7
+	ld a, BANK(wWindowStack)
 	ld [rSVBK], a
 
 	call GetWindowStackTop
@@ -725,12 +724,11 @@
 	ret
 ; 24423
 
-Function24423: ; 24423
-; Unreferenced
+Unreferenced_Function24423: ; 24423
 	ld a, [VramState]
 	bit 0, a
 	ret z
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 	hlcoord 0, 0
 	ld de, sScratch
@@ -738,7 +736,7 @@
 	call CopyBytes
 	call CloseSRAM
 	call OverworldTextModeSwitch
-	xor a
+	xor a ; sScratch
 	call GetSRAMBank
 	ld hl, sScratch
 	decoord 0, 0
--- a/engine/menu_2.asm
+++ b/engine/menu_2.asm
@@ -27,7 +27,7 @@
 .done
 	ret
 
-PlaceMoneyTopRight: ; 24ae8
+Special_PlaceMoneyTopRight: ; 24ae8
 	ld hl, MenuDataHeader_0x24b15
 	call CopyMenuDataHeader
 	jr PlaceMoneyDataHeader
@@ -53,16 +53,14 @@
 	ret
 
 MenuDataHeader_0x24b15: ; 0x24b15
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 02, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 0, SCREEN_WIDTH - 1, 2
 	dw NULL
 	db 1 ; default option
 
 MenuDataHeader_0x24b1d: ; 0x24b1d
-	db $40 ; flags
-	db 11, 00 ; start coords
-	db 13, 08 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 11, 8, 13
 	dw NULL
 	db 1 ; default option
 
@@ -112,8 +110,8 @@
 ShowMoney_TerminatorString: ; 24b8e
 	db "@"
 
-Function24b8f: ; 24b8f
-; unreferenced, related to safari?
+Unreferenced_Function24b8f: ; 24b8f
+; related to safari?
 	ld hl, Options
 	ld a, [hl]
 	push af
@@ -141,9 +139,9 @@
 	ret
 
 .slash_500 ; 24bcf
-	db "/500@"
+	db "/500@"
 .booru_ko ; 24bd4
-	db "ボール   こ@"
+	db "ボール   こ@"
 
 StartMenu_DrawBugContestStatusBox: ; 24bdc
 	hlcoord 0, 0
@@ -197,7 +195,7 @@
 	ret
 
 .Balls_JP: ; 24c43
-	db "ボール   こ@"
+	db "ボール   こ@"
 .CAUGHT: ; 24c4b
 	db "CAUGHT@"
 .Balls_EN: ; 24c52
@@ -216,7 +214,7 @@
 	ld bc, 10
 	call ByteFill
 
-	ld hl, .ApricornBalls
+	ld hl, ApricornBalls
 .loop
 	ld a, [hl]
 	cp -1
@@ -252,12 +250,4 @@
 	pop hl
 	ret
 
-.ApricornBalls: ; 24ca0
-	db RED_APRICORN, LEVEL_BALL
-	db BLU_APRICORN, LURE_BALL
-	db YLW_APRICORN, MOON_BALL
-	db GRN_APRICORN, FRIEND_BALL
-	db WHT_APRICORN, FAST_BALL
-	db BLK_APRICORN, HEAVY_BALL
-	db PNK_APRICORN, LOVE_BALL
-	db -1
+INCLUDE "data/items/apricorn_balls.asm"
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -281,8 +281,7 @@
 	ret
 ; 8e9cc (23:69cc)
 
-GetMonIcon2: ; 8e9cc
-; unreferenced
+Unreferenced_GetMonIcon2: ; 8e9cc
 	push de
 	ld a, [wd265]
 	call ReadMonMenuIcon
@@ -307,8 +306,8 @@
 	ret
 
 HeldItemIcons:
-INCBIN "gfx/icon/mail.2bpp"
-INCBIN "gfx/icon/item.2bpp"
+INCBIN "gfx/icons/mail.2bpp"
+INCBIN "gfx/icons/item.2bpp"
 ; 8ea17
 
 GetIcon_de: ; 8ea17
--- a/engine/mon_menu.asm
+++ b/engine/mon_menu.asm
@@ -55,9 +55,8 @@
 ; 24d3f
 
 .MenuDataHeader: ; 24d3f
-	db $40 ; tile backup
-	db 00, 06 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 6, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw 0
 	db 1 ; default option
 ; 24d47
@@ -78,7 +77,7 @@
 
 MonMenuLoop: ; 24d59
 .loop
-	ld a, $a0 ; flags
+	ld a, MENU_UNUSED_3 | MENU_BACKUP_TILES_2 ; flags
 	ld [wMenuData2Flags], a
 	ld a, [Buffer1] ; items
 	ld [wMenuData2Items], a
@@ -325,15 +324,14 @@
 ; 24ed4
 
 MenuDataHeader_0x24ed4: ; 24ed4
-	db $00 ; flags
-	db 11, 11 ; start coords
-	db 17, 19 ; end coords
+	db 0 ; flags
+	menu_coords 11, 11, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw MenuData2_0x24edc
 	db 1 ; default option
 ; 24edc
 
 MenuData2_0x24edc: ; 24edc
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 3 ; items
 	db "SWITCH@"
 	db "STATS@"
--- a/engine/mon_stats.asm
+++ b/engine/mon_stats.asm
@@ -174,7 +174,7 @@
 ; sBoxMon data is read directly from SRAM.
 	ld a, [MonType]
 	cp BOXMON
-	ld a, 1
+	ld a, BANK(sBox)
 	call z, GetSRAMBank
 
 ; Attack DV
@@ -324,8 +324,7 @@
 	jr nz, .load_loop
 	ret
 
-Function50cd0: ; 50cd0
-; XXX
+Unreferenced_Function50cd0: ; 50cd0
 .loop
 	ld [hl], $32
 	inc hl
@@ -336,7 +335,7 @@
 	jr nz, .loop
 	ret
 
-Predef22: ; unreferenced predef
+Unused_PlaceEnemyHPLevel:
 	push hl
 	push hl
 	ld hl, PartyMonNicknames
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -60,7 +60,7 @@
 	ld d, h
 	ld e, l
 	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 .skipnickname
@@ -397,7 +397,7 @@
 	ld hl, OTPartyMonNicknames
 	ld a, [CurPartyMon]
 	call SkipNames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 	ld a, [CurPartySpecies]
@@ -434,7 +434,7 @@
 	and a
 	ret
 
-SentGetPkmnIntoFromBox: ; db3f
+SendGetPkmnIntoFromBox: ; db3f
 ; Sents/Gets Pkmn into/from Box depending on Parameter
 ; wPokemonWithdrawDepositParameter == 0: get Pkmn into Party
 ; wPokemonWithdrawDepositParameter == 1: sent Pkmn into Box
@@ -583,7 +583,7 @@
 	call SkipNames
 
 .okay12
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	pop hl
 
@@ -904,8 +904,8 @@
 	ld bc, BOXMON_STRUCT_LENGTH
 	jp CopyBytes
 
-SentPkmnIntoBox: ; de6e
-; Sents the Pkmn into one of Bills Boxes
+SendPkmnIntoBox: ; de6e
+; Sends the Pkmn into one of Bills Boxes
 ; the data comes mainly from 'EnemyMon:'
 	ld a, BANK(sBoxCount)
 	call GetSRAMBank
@@ -943,7 +943,7 @@
 
 	ld de, sBoxMonNicknames
 	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 
 	ld hl, EnemyMon
@@ -1044,7 +1044,7 @@
 	call .shift
 
 	ld hl, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call .shift
 
 	ld hl, sBoxMons
@@ -1119,7 +1119,7 @@
 	ld d, $0
 	ld hl, PokedexCaught
 	ld b, RESET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 
 .skip_caught_flag
 ; If we haven't seen this Pokemon before receiving
@@ -1135,7 +1135,7 @@
 	ld d, $0
 	ld hl, PokedexSeen
 	ld b, RESET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 
 .skip_seen_flag
 	pop af
@@ -1240,7 +1240,7 @@
 	; Shift the OT names
 	ld d, h
 	ld e, l
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	add hl, bc
 	ld bc, PartyMonNicknames
 	ld a, [wPokemonWithdrawDepositParameter]
@@ -1283,12 +1283,12 @@
 	jr z, .party6
 	ld hl, sBoxMonNicknames
 .party6
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	add hl, bc
 	ld bc, PartyMonNicknamesEnd
 	ld a, [wPokemonWithdrawDepositParameter]
@@ -1626,7 +1626,7 @@
 	ld a, [CurPartySpecies]
 	ld [TempEnemyMonSpecies], a
 	callfar LoadEnemyMon
-	call SentPkmnIntoBox
+	call SendPkmnIntoBox
 	jp nc, .FailedToGiveMon
 	ld a, BOXMON
 	ld [MonType], a
@@ -1652,7 +1652,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	pop af
 	and a
@@ -1664,7 +1664,7 @@
 	push hl
 	ld a, [ScriptBank]
 	call GetFarHalfword
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [ScriptBank]
 	call FarCopyBytes
 	pop hl
@@ -1764,7 +1764,7 @@
 	call GetSRAMBank
 	ld hl, wMonOrItemNameBuffer
 	ld de, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call CloseSRAM
 	ld b, $1
@@ -1795,7 +1795,7 @@
 	pop hl
 	ld de, StringBuffer1
 	call InitName
-	ld a, $4 ; XXX could this be in bank 4 in pokered?
+	ld a, $4 ; ExitAllMenus is in bank 0, XXX could this be in bank 4 in pokered?
 	ld hl, ExitAllMenus
 	rst FarCall
 	ret
--- a/engine/move_mon_wo_mail.asm
+++ b/engine/move_mon_wo_mail.asm
@@ -7,7 +7,7 @@
 	dec a
 	ld [wd265], a
 	ld hl, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld de, wBufferMonNick
 	call InsertDataIntoBoxOrParty
 	ld a, [sBoxCount]
@@ -44,7 +44,7 @@
 	dec a
 	ld [wd265], a
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld de, wBufferMonNick
 	call InsertDataIntoBoxOrParty
 	ld a, [PartyCount]
--- a/engine/mystery_gift.asm
+++ b/engine/mystery_gift.asm
@@ -63,7 +63,7 @@
 	jr z, .skip_append_save
 	call .SaveMysteryGiftTrainerName
 	farcall RestoreMobileEventIndex
-	farcall TrainerRankings_MysteryGift
+	farcall StubbedTrainerRankings_MysteryGift
 	farcall BackupMobileEventIndex
 .skip_append_save
 	ld a, [wMysteryGiftPartnerSentDeco]
@@ -1117,7 +1117,7 @@
 	ld d, $0
 	ld b, CHECK_FLAG
 	ld hl, sMysteryGiftDecorationsReceived
-	predef_id FlagPredef
+	predef_id SmallFarFlagAction
 	push hl
 	push bc
 	call Predef
@@ -1129,7 +1129,7 @@
 	ret nz
 	call GetMysteryGiftBank
 	ld b, SET_FLAG
-	predef FlagPredef
+	predef SmallFarFlagAction
 	call CloseSRAM
 	xor a
 	ret
@@ -1142,7 +1142,7 @@
 	ld d, $0
 	ld b, CHECK_FLAG
 	ld hl, sMysteryGiftDecorationsReceived
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld a, c
 	and a
 	pop bc
@@ -1369,7 +1369,7 @@
 	jr .gfx_loop
 ; 105232 (41:5232)
 
-.Load6GFX: ; unreferenced
+.Unreferenced_Load6GFX:
 	ld b,  6
 	jr .gfx_loop
 
@@ -1456,26 +1456,26 @@
 	jr asm_105726
 
 Function1056eb: ; 1056eb (41:56eb)
-	ld c, $10
-.asm_1056ed
-	ld hl, Sprites
-	ld b, $8
-.asm_1056f2
+	ld c, 16
+.loop
+	ld hl, Sprite01YCoord
+	ld b, 8
+.dec_y_loop
 	dec [hl]
-rept 4
+rept SPRITEOAMSTRUCT_LENGTH
 	inc hl
 endr
 	dec b
-	jr nz, .asm_1056f2
-	ld hl, Sprites + $20
-	ld b, $8
-.asm_1056ff
+	jr nz, .dec_y_loop
+	ld hl, Sprite09YCoord
+	ld b, 8
+.inc_y_loop
 	inc [hl]
-rept 4
+rept SPRITEOAMSTRUCT_LENGTH
 	inc hl
 endr
 	dec b
-	jr nz, .asm_1056ff
+	jr nz, .inc_y_loop
 	dec c
 	ret z
 	push bc
@@ -1482,7 +1482,7 @@
 	ld c, 4
 	call DelayFrames
 	pop bc
-	jr .asm_1056ed
+	jr .loop
 
 Function105712: ; 105712 (41:5712)
 	call Function105777
@@ -1504,9 +1504,9 @@
 
 String_10572e: ; 10572e
 	db   "エーボタン¯おすと"
-	next "つうしん<PKMN>おこなわれるよ!"
+	next "つうしん<PKMN>おこなわれるよ!"
 	next "ビーボタン¯おすと"
-	next "つうしん¯ちゅうし します"
+	next "つうしん¯ちゅうし します"
 	db   "@"
 
 ; 10575e
@@ -1561,12 +1561,12 @@
 	ld a, [sCrystalData + 0]
 	ld [de], a
 	inc de
-	ld a, $4
+	ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
-	ld hl, $a603
+	ld hl, $a603 ; address of MBC30 bank
 	ld bc, $8
 	call CopyBytes
-	ld hl, $a007
+	ld hl, $a007 ; address of MBC30 bank
 	ld bc, $c
 	call CopyBytes
 	call CloseSRAM
@@ -1580,7 +1580,7 @@
 	ld a, BANK(MysteryGiftJP_GFX)
 	lb bc, 4, 0
 	call FarCopyBytes
-	ld hl, MysteryGiftJP_GFX + $400
+	ld hl, MysteryGiftJP_GFX + $40 tiles
 	ld de, vTiles0 tile $00
 	ld a, BANK(MysteryGiftJP_GFX)
 	ld bc, $80
@@ -1656,9 +1656,9 @@
 	ld [hl], $3c
 	hlcoord 17, 15
 	ld [hl], $3e
-	ld de, Sprites
+	ld de, Sprite01
 	ld hl, .OAM_data
-	ld bc, $40
+	ld bc, 16 * SPRITEOAMSTRUCT_LENGTH
 	call CopyBytes
 	call EnableLCD
 	call WaitBGMap
@@ -1713,22 +1713,22 @@
 ; 1058f0 (41:58f0)
 
 .OAM_data: ; 1058f0
-	dsprite  2, 1,  6, 4, $00, $00
-	dsprite  2, 1,  7, 4, $01, $00
-	dsprite  2, 1,  8, 4, $02, $00
-	dsprite  2, 1,  9, 4, $03, $00
-	dsprite  3, 1,  6, 4, $04, $00
-	dsprite  3, 1,  7, 4, $05, $00
-	dsprite  3, 1,  8, 4, $06, $00
-	dsprite  3, 1,  9, 4, $07, $00
-	dsprite  0, 1, 11, 4, $00, $00
-	dsprite  0, 1, 12, 4, $01, $00
-	dsprite  0, 1, 13, 4, $02, $00
-	dsprite  0, 1, 14, 4, $03, $00
-	dsprite  1, 1, 11, 4, $04, $00
-	dsprite  1, 1, 12, 4, $05, $00
-	dsprite  1, 1, 13, 4, $06, $00
-	dsprite  1, 1, 14, 4, $07, $00
+	dsprite  2, 1,  6, 4, $00, 0
+	dsprite  2, 1,  7, 4, $01, 0
+	dsprite  2, 1,  8, 4, $02, 0
+	dsprite  2, 1,  9, 4, $03, 0
+	dsprite  3, 1,  6, 4, $04, 0
+	dsprite  3, 1,  7, 4, $05, 0
+	dsprite  3, 1,  8, 4, $06, 0
+	dsprite  3, 1,  9, 4, $07, 0
+	dsprite  0, 1, 11, 4, $00, 0
+	dsprite  0, 1, 12, 4, $01, 0
+	dsprite  0, 1, 13, 4, $02, 0
+	dsprite  0, 1, 14, 4, $03, 0
+	dsprite  1, 1, 11, 4, $04, 0
+	dsprite  1, 1, 12, 4, $05, 0
+	dsprite  1, 1, 13, 4, $06, 0
+	dsprite  1, 1, 14, 4, $07, 0
 
 ; japanese mystery gift gfx
 MysteryGiftJP_GFX: ; 105930
--- a/engine/mystery_gift_2.asm
+++ b/engine/mystery_gift_2.asm
@@ -29,7 +29,7 @@
 	inc de ; wc80f
 	call CloseSRAM
 	call Random
-	and $1
+	and 1
 	ld [de], a
 	inc de ; wc810
 	call .RandomSample
@@ -59,10 +59,10 @@
 .RandomSample: ; 2c6ac (b:46ac)
 	push de
 	call Random
-	cp $19 ; 10 percent
+	cp 10 percent
 	jr c, .tenpercent
 	call Random
-	and $7
+	and %111
 	ld d, a
 	rl d
 	ld e, $80
@@ -80,10 +80,10 @@
 
 .tenpercent
 	call Random
-	cp $32 ; 20 percent
+	cp 20 percent - 1
 	jr c, .twopercent
 	call Random
-	and $3
+	and %011
 	ld d, a
 	rl d
 	ld e, $80
@@ -102,7 +102,7 @@
 
 .twopercent
 	call Random
-	cp $32 ; 50 ; 20 percent
+	cp 20 percent - 1
 	jr c, .pointfourpercent
 	ld a, b
 	swap a
@@ -147,6 +147,6 @@
 ; 2c725 (b:4725)
 
 
-INCLUDE "data/mystery_gift_items.asm"
+INCLUDE "data/items/mystery_gift_items.asm"
 
-INCLUDE "data/mystery_gift_decos.asm"
+INCLUDE "data/decorations/mystery_gift_decos.asm"
--- /dev/null
+++ b/engine/naming_screen.asm
@@ -1,0 +1,1467 @@
+NAMINGSCREEN_CURSOR     EQU $7e
+
+NAMINGSCREEN_BORDER     EQUS "\"■\"" ; $60
+NAMINGSCREEN_MIDDLELINE EQUS "\"→\"" ; $eb
+NAMINGSCREEN_UNDERLINE  EQUS "\"<DOT>\"" ; $f2
+
+_NamingScreen: ; 0x116b7
+	call DisableSpriteUpdates
+	call NamingScreen
+	call ReturnToMapWithSpeechTextbox
+	ret
+
+; 0x116c1
+
+NamingScreen: ; 116c1
+	ld hl, wNamingScreenDestinationPointer
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, wNamingScreenType
+	ld [hl], b
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call .SetUpNamingScreen
+	call DelayFrame
+.loop
+	call NamingScreenJoypadLoop
+	jr nc, .loop
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [hMapAnims], a
+	pop af
+	ld [Options], a
+	call ClearJoypad
+	ret
+
+; 116f8
+
+.SetUpNamingScreen: ; 116f8
+	call ClearBGPalettes
+	ld b, SCGB_DIPLOMA
+	call GetSGBLayout
+	call DisableLCD
+	call LoadNamingScreenGFX
+	call NamingScreen_InitText
+	ld a, LCDC_DEFAULT
+	ld [rLCDC], a
+	call .GetNamingScreenSetup
+	call WaitBGMap
+	call WaitTop
+	call SetPalettes
+	call NamingScreen_InitNameEntry
+	ret
+
+; 1171d
+
+.GetNamingScreenSetup: ; 1171d
+	ld a, [wNamingScreenType]
+	and 7
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+
+; 1172e
+
+.Jumptable: ; 1172e (4:572e)
+	dw .Pokemon
+	dw .Player
+	dw .Rival
+	dw .Mom
+	dw .Box
+	dw .Tomodachi
+	dw .Pokemon
+	dw .Pokemon
+
+.Pokemon: ; 1173e (4:573e)
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	ld hl, LoadMenuMonIcon
+	ld a, BANK(LoadMenuMonIcon)
+	ld e, $1
+	rst FarCall ;  ; indirect jump to LoadMenuMonIcon (8e83f (23:683f))
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+	hlcoord 5, 2
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld de, .NicknameStrings
+	call PlaceString
+	inc de
+	hlcoord 5, 4
+	call PlaceString
+	farcall GetGender
+	jr c, .genderless
+	ld a, "♂"
+	jr nz, .place_gender
+	ld a, "♀"
+.place_gender
+	hlcoord 1, 2
+	ld [hl], a
+.genderless
+	call .StoreMonIconParams
+	ret
+
+; 11780 (4:5780)
+
+.NicknameStrings: ; 11780
+	db "'S@"
+	db "NICKNAME?@"
+
+; 1178d
+
+.Player: ; 1178d (4:578d)
+	farcall GetPlayerIcon
+	call .LoadSprite
+	hlcoord 5, 2
+	ld de, .PlayerNameString
+	call PlaceString
+	call .StoreSpriteIconParams
+	ret
+
+; 117a3 (4:57a3)
+
+.PlayerNameString: ; 117a3
+	db "YOUR NAME?@"
+
+; 117ae
+
+.Rival: ; 117ae (4:57ae)
+	ld de, SilverSpriteGFX
+	ld b, BANK(SilverSpriteGFX)
+	call .LoadSprite
+	hlcoord 5, 2
+	ld de, .RivalNameString
+	call PlaceString
+	call .StoreSpriteIconParams
+	ret
+
+; 117c3 (4:57c3)
+
+.RivalNameString: ; 117c3
+	db "RIVAL'S NAME?@"
+
+; 117d1
+
+.Mom: ; 117d1 (4:57d1)
+	ld de, MomSpriteGFX
+	ld b, BANK(MomSpriteGFX)
+	call .LoadSprite
+	hlcoord 5, 2
+	ld de, .MomNameString
+	call PlaceString
+	call .StoreSpriteIconParams
+	ret
+
+; 117e6 (4:57e6)
+
+.MomNameString: ; 117e6
+	db "MOTHER'S NAME?@"
+
+; 117f5
+
+.Box: ; 117f5 (4:57f5)
+	ld de, PokeBallSpriteGFX
+	ld hl, vTiles0 tile $00
+	lb bc, BANK(PokeBallSpriteGFX), 4
+	call Request2bpp
+	xor a
+	ld hl, wSpriteAnimDict
+	ld [hli], a
+	ld [hl], a
+	depixel 4, 4, 4, 0
+	ld a, SPRITE_ANIM_INDEX_RED_WALK
+	call _InitSpriteAnimStruct
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], $0
+	hlcoord 5, 2
+	ld de, .BoxNameString
+	call PlaceString
+	call .StoreBoxIconParams
+	ret
+
+; 11822 (4:5822)
+
+.BoxNameString: ; 11822
+	db "BOX NAME?@"
+
+; 1182c
+
+.Tomodachi: ; 1182c (4:582c)
+	hlcoord 3, 2
+	ld de, .oTomodachi_no_namae_sutoringu
+	call PlaceString
+	call .StoreSpriteIconParams
+	ret
+
+; 11839 (4:5839)
+
+.oTomodachi_no_namae_sutoringu ; 11839
+	db "おともだち の なまえは?@"
+
+; 11847
+
+.LoadSprite: ; 11847 (4:5847)
+	push de
+	ld hl, vTiles0 tile $00
+	ld c, $4
+	push bc
+	call Request2bpp
+	pop bc
+	ld hl, 12 tiles
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, vTiles0 tile $04
+	call Request2bpp
+	xor a
+	ld hl, wSpriteAnimDict
+	ld [hli], a
+	ld [hl], a
+	pop de
+	ld b, SPRITE_ANIM_INDEX_RED_WALK
+	ld a, d
+	cp HIGH(KrisSpriteGFX)
+	jr nz, .not_kris
+	ld a, e
+	cp LOW(KrisSpriteGFX)
+	jr nz, .not_kris
+	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
+.not_kris
+	ld a, b
+	depixel 4, 4, 4, 0
+	call _InitSpriteAnimStruct
+	ret
+
+.StoreMonIconParams: ; 1187b (4:587b)
+	ld a, MON_NAME_LENGTH - 1
+	hlcoord 5, 6
+	jr .StoreParams
+
+.StoreSpriteIconParams: ; 11882 (4:5882)
+	ld a, PLAYER_NAME_LENGTH - 1
+	hlcoord 5, 6
+	jr .StoreParams
+
+.StoreBoxIconParams: ; 11889 (4:5889)
+	ld a, BOX_NAME_LENGTH - 1
+	hlcoord 5, 4
+	jr .StoreParams
+
+.StoreParams: ; 11890 (4:5890)
+	ld [wNamingScreenMaxNameLength], a
+	ld a, l
+	ld [wNamingScreenStringEntryCoord], a
+	ld a, h
+	ld [wNamingScreenStringEntryCoord + 1], a
+	ret
+
+NamingScreen_IsTargetBox: ; 1189c
+	push bc
+	push af
+	ld a, [wNamingScreenType]
+	sub $3
+	ld b, a
+	pop af
+	dec b
+	pop bc
+	ret
+
+; 118a8
+
+NamingScreen_InitText: ; 118a8
+	call WaitTop
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, NAMINGSCREEN_BORDER
+	call ByteFill
+	hlcoord 1, 1
+	lb bc, 6, 18
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
+	lb bc, 4, 18
+
+.not_box
+	call ClearBox
+	ld de, NameInputUpper
+NamingScreen_ApplyTextInputMode: ; 118ca
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
+	ld hl, BoxNameInputLower - NameInputLower
+	add hl, de
+	ld d, h
+	ld e, l
+
+.not_box
+	push de
+	hlcoord 1, 8
+	lb bc, 7, 18
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box_2
+	hlcoord 1, 6
+	lb bc, 9, 18
+
+.not_box_2
+	call ClearBox
+	hlcoord 1, 16
+	lb bc, 1, 18
+	call ClearBox
+	pop de
+	hlcoord 2, 8
+	ld b, $5
+	call NamingScreen_IsTargetBox
+	jr nz, .row
+	hlcoord 2, 6
+	ld b, $6
+
+.row
+	ld c, $11
+.col
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .col
+	push de
+	ld de, 2 * SCREEN_WIDTH - $11
+	add hl, de
+	pop de
+	dec b
+	jr nz, .row
+	ret
+
+; 11915
+
+NamingScreenJoypadLoop: ; 11915
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .quit
+	call .RunJumptable
+	farcall PlaySpriteAnimationsAndDelayFrame
+	call .UpdateStringEntry
+	call DelayFrame
+	and a
+	ret
+
+.quit
+	callfar ClearSpriteAnims
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+
+; 11940
+
+.UpdateStringEntry: ; 11940
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 1, 5
+	call NamingScreen_IsTargetBox
+	jr nz, .got_coords
+	hlcoord 1, 3
+
+.got_coords
+	lb bc, 1, 18
+	call ClearBox
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, wNamingScreenStringEntryCoord
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+; 11968
+
+.RunJumptable: ; 11968
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, $0
+	ld hl, .Jumptable
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+
+; 11977
+
+.Jumptable: ; 11977 (4:5977)
+	dw .InitCursor
+	dw .ReadButtons
+
+.InitCursor: ; 1197b (4:597b)
+	depixel 10, 3
+	call NamingScreen_IsTargetBox
+	jr nz, .got_cursor_position
+	ld d, 8 * 8
+.got_cursor_position
+	ld a, SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
+	call _InitSpriteAnimStruct
+	ld a, c
+	ld [wNamingScreenCursorObjectPointer], a
+	ld a, b
+	ld [wNamingScreenCursorObjectPointer + 1], a
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld [hl], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+.ReadButtons: ; 119a1 (4:59a1)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [hl]
+	and START
+	jr nz, .start
+	ld a, [hl]
+	and SELECT
+	jr nz, .select
+	ret
+
+.a
+	call .GetCursorPosition
+	cp $1
+	jr z, .select
+	cp $2
+	jr z, .b
+	cp $3
+	jr z, .end
+	call NamingScreen_GetLastCharacter
+	call NamingScreen_TryAddCharacter
+	ret nc
+
+.start
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $8
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], $4
+	call NamingScreen_IsTargetBox
+	ret nz
+	inc [hl]
+	ret
+
+.b
+	call NamingScreen_DeleteCharacter
+	ret
+
+.end
+	call NamingScreen_StoreEntry
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.select
+	ld hl, wNamingScreenLetterCase
+	ld a, [hl]
+	xor 1
+	ld [hl], a
+	jr z, .upper
+	ld de, NameInputLower
+	call NamingScreen_ApplyTextInputMode
+	ret
+
+.upper
+	ld de, NameInputUpper
+	call NamingScreen_ApplyTextInputMode
+	ret
+
+.GetCursorPosition: ; 11a0b (4:5a0b)
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+
+NamingScreen_GetCursorPosition: ; 11a11 (4:5a11)
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	push bc
+	ld b, $4
+	call NamingScreen_IsTargetBox
+	jr nz, .not_box
+	inc b
+.not_box
+	cp b
+	pop bc
+	jr nz, .not_bottom_row
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $3
+	jr c, .case_switch
+	cp $6
+	jr c, .delete
+	ld a, $3
+	ret
+
+.case_switch
+	ld a, $1
+	ret
+
+.delete
+	ld a, $2
+	ret
+
+.not_bottom_row
+	xor a
+	ret
+
+NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
+	call .GetDPad
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	swap e
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], e
+	ld d, $4
+	call NamingScreen_IsTargetBox
+	jr nz, .ok
+	inc d
+.ok
+	cp d
+	ld de, .LetterEntries
+	ld a, SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR - SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR ; 0
+	jr nz, .ok2
+	ld de, .CaseDelEnd
+	ld a, SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR_BIG - SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR ; 1
+.ok2
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	add [hl] ; default SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+; 11a79 (4:5a79)
+
+.LetterEntries: ; 11a79
+	db $00, $10, $20, $30, $40, $50, $60, $70, $80
+
+.CaseDelEnd: ; 11a82
+	db $00, $00, $00, $30, $30, $30, $60, $60, $60
+
+; 11a8b
+
+.GetDPad: ; 11a8b (4:5a8b)
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .down
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .right
+	ret
+
+.right
+	call NamingScreen_GetCursorPosition
+	and a
+	jr nz, .asm_11ab7
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $8
+	jr nc, .asm_11ab4
+	inc [hl]
+	ret
+
+.asm_11ab4
+	ld [hl], $0
+	ret
+
+.asm_11ab7
+	cp $3
+	jr nz, .asm_11abc
+	xor a
+.asm_11abc
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.left
+	call NamingScreen_GetCursorPosition
+	and a
+	jr nz, .asm_11ad8
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_11ad5
+	dec [hl]
+	ret
+
+.asm_11ad5
+	ld [hl], $8
+	ret
+
+.asm_11ad8
+	cp $1
+	jr nz, .asm_11ade
+	ld a, $4
+.asm_11ade
+	dec a
+	dec a
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.down
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	call NamingScreen_IsTargetBox
+	jr nz, .asm_11af9
+	cp $5
+	jr nc, .asm_11aff
+	inc [hl]
+	ret
+
+.asm_11af9
+	cp $4
+	jr nc, .asm_11aff
+	inc [hl]
+	ret
+
+.asm_11aff
+	ld [hl], $0
+	ret
+
+.up
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_11b0c
+	dec [hl]
+	ret
+
+.asm_11b0c
+	ld [hl], $4
+	call NamingScreen_IsTargetBox
+	ret nz
+	inc [hl]
+	ret
+
+NamingScreen_TryAddCharacter: ; 11b14 (4:5b14)
+	ld a, [wNamingScreenLastCharacter] ; lost
+MailComposition_TryAddCharacter: ; 11b17 (4:5b17)
+	ld a, [wNamingScreenMaxNameLength]
+	ld c, a
+	ld a, [wNamingScreenCurrNameLength]
+	cp c
+	ret nc
+
+	ld a, [wNamingScreenLastCharacter]
+
+NamingScreen_LoadNextCharacter: ; 11b23
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], a
+
+NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
+	ld hl, wNamingScreenCurrNameLength
+	inc [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld a, [hl]
+	cp "@"
+	jr z, .end_of_string
+	ld [hl], NAMINGSCREEN_UNDERLINE
+	and a
+	ret
+
+.end_of_string
+	scf
+	ret
+
+; 11b39 (4:5b39)
+
+; unused
+	ld a, [wNamingScreenCurrNameLength]
+	and a
+	ret z
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+	dec [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld c, [hl]
+	pop hl
+
+.loop
+	ld a, [hli]
+	cp $ff
+	jr z, NamingScreen_AdvanceCursor_CheckEndOfString
+	cp c
+	jr z, .done
+	inc hl
+	jr .loop
+
+.done
+	ld a, [hl]
+	jr NamingScreen_LoadNextCharacter
+
+; 11b56
+
+INCLUDE "data/unused/dakutens.asm"
+
+; 11bbc
+
+NamingScreen_DeleteCharacter: ; 11bbc (4:5bbc)
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], NAMINGSCREEN_UNDERLINE
+	inc hl
+	ld a, [hl]
+	cp NAMINGSCREEN_UNDERLINE
+	ret nz
+	ld [hl], NAMINGSCREEN_MIDDLELINE
+	ret
+
+NamingScreen_GetTextCursorPosition: ; 11bd0 (4:5bd0)
+	push af
+	ld hl, wNamingScreenDestinationPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wNamingScreenCurrNameLength]
+	ld e, a
+	ld d, 0
+	add hl, de
+	pop af
+	ret
+
+; 11be0
+
+NamingScreen_InitNameEntry: ; 11be0
+; load NAMINGSCREEN_UNDERLINE, (NAMINGSCREEN_MIDDLELINE * [wNamingScreenMaxNameLength]), "@" into the dw address at wNamingScreenDestinationPointer
+	ld hl, wNamingScreenDestinationPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld [hl], NAMINGSCREEN_UNDERLINE
+	inc hl
+	ld a, [wNamingScreenMaxNameLength]
+	dec a
+	ld c, a
+	ld a, NAMINGSCREEN_MIDDLELINE
+.loop
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	ld [hl], "@"
+	ret
+
+; 11bf7
+
+NamingScreen_StoreEntry: ; 11bf7 (4:5bf7)
+	ld hl, wNamingScreenDestinationPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wNamingScreenMaxNameLength]
+	ld c, a
+.loop
+	ld a, [hl]
+	cp NAMINGSCREEN_MIDDLELINE
+	jr z, .terminator
+	cp NAMINGSCREEN_UNDERLINE
+	jr nz, .not_terminator
+.terminator
+	ld [hl], "@"
+.not_terminator
+	inc hl
+	dec c
+	jr nz, .loop
+	ret
+
+NamingScreen_GetLastCharacter: ; 11c11 (4:5c11)
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_XCOORD
+	add hl, bc
+	add [hl]
+	sub $8
+	srl a
+	srl a
+	srl a
+	ld e, a
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_YCOORD
+	add hl, bc
+	add [hl]
+	sub $10
+	srl a
+	srl a
+	srl a
+	ld d, a
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH
+.loop
+	ld a, d
+	and a
+	jr z, .done
+	add hl, bc
+	dec d
+	jr .loop
+
+.done
+	add hl, de
+	ld a, [hl]
+	ld [wNamingScreenLastCharacter], a
+	ret
+
+LoadNamingScreenGFX: ; 11c51
+	call ClearSprites
+	callfar ClearSpriteAnims
+	call LoadStandardFont
+	call LoadFontsExtra
+
+	ld de, NamingScreenGFX_MiddleLine
+	ld hl, vTiles0 tile NAMINGSCREEN_MIDDLELINE
+	lb bc, BANK(NamingScreenGFX_MiddleLine), 1
+	call Get1bpp
+
+	ld de, NamingScreenGFX_UnderLine
+	ld hl, vTiles0 tile NAMINGSCREEN_UNDERLINE
+	lb bc, BANK(NamingScreenGFX_UnderLine), 1
+	call Get1bpp
+
+	ld de, vTiles2 tile NAMINGSCREEN_BORDER
+	ld hl, NamingScreenGFX_Border
+	ld bc, 1 tiles
+	ld a, BANK(NamingScreenGFX_Border)
+	call FarCopyBytes
+
+	ld de, vTiles0 tile NAMINGSCREEN_CURSOR
+	ld hl, NamingScreenGFX_Cursor
+	ld bc, 2 tiles
+	ld a, BANK(NamingScreenGFX_Cursor)
+	call FarCopyBytes
+
+	ld a, $5
+	ld hl, wSpriteAnimDict + 9 * 2
+	ld [hli], a
+	ld [hl], NAMINGSCREEN_CURSOR
+	xor a
+	ld [hSCY], a
+	ld [wGlobalAnimYOffset], a
+	ld [hSCX], a
+	ld [wGlobalAnimXOffset], a
+	ld [wJumptableIndex], a
+	ld [wNamingScreenLetterCase], a
+	ld [hBGMapMode], a
+	ld [wNamingScreenCurrNameLength], a
+	ld a, $7
+	ld [hWX], a
+	ret
+
+; 11cb7
+
+NamingScreenGFX_Border: ; 11cb7
+INCBIN "gfx/naming_screen/border.2bpp"
+; 11cc7
+
+NamingScreenGFX_Cursor: ; 11cc7
+INCBIN "gfx/naming_screen/cursor.2bpp"
+; 11ce7
+
+INCLUDE "data/name_input_chars.asm"
+; 11e5d
+
+NamingScreenGFX_End: ; unused
+INCBIN "gfx/naming_screen/end.1bpp"
+; 11e6d
+
+NamingScreenGFX_MiddleLine:
+INCBIN "gfx/naming_screen/middle_line.1bpp"
+; 11e6d
+
+NamingScreenGFX_UnderLine: ; 11e6d
+INCBIN "gfx/naming_screen/underline.1bpp"
+; 11e75
+
+_ComposeMailMessage: ; 11e75 (mail?)
+	ld hl, wNamingScreenDestinationPointer
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call .InitBlankMail
+	call DelayFrame
+
+.loop
+	call .DoMailEntry
+	jr nc, .loop
+
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [hMapAnims], a
+	ret
+
+.InitBlankMail: ; 11e9a (4:5e9a)
+	call ClearBGPalettes
+	call DisableLCD
+	call LoadNamingScreenGFX
+	ld de, vTiles0 tile $00
+	ld hl, .MailIcon
+	ld bc, 8 tiles
+	ld a, BANK(.MailIcon)
+	call FarCopyBytes
+	xor a
+	ld hl, wSpriteAnimDict
+	ld [hli], a
+	ld [hl], a
+
+	; init mail icon
+	depixel 3, 2
+	ld a, SPRITE_ANIM_INDEX_PARTY_MON
+	call _InitSpriteAnimStruct
+
+	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+	add hl, bc
+	ld [hl], $0
+	call .InitCharset
+	ld a, LCDC_DEFAULT
+	ld [rLCDC], a
+	call .initwNamingScreenMaxNameLength
+	ld b, SCGB_DIPLOMA
+	call GetSGBLayout
+	call WaitBGMap
+	call WaitTop
+	ld a, %11100100
+	call DmgToCgbBGPals
+	ld a, %11100100
+	call DmgToCgbObjPal0
+	call NamingScreen_InitNameEntry
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, MAIL_LINE_LENGTH
+	add hl, de
+	ld [hl], "<NEXT>"
+	ret
+
+; 11ef4 (4:5ef4)
+
+.MailIcon: ; 11ef4
+INCBIN "gfx/icons/mail_big.2bpp"
+; 11f74
+
+.initwNamingScreenMaxNameLength ; 11f74 (4:5f74)
+	ld a, MAIL_MSG_LENGTH + 1
+	ld [wNamingScreenMaxNameLength], a
+	ret
+
+; 11f7a (4:5f7a)
+
+.UnusedString11f7a:
+	db "メールを かいてね@"
+
+; 11f84
+
+.InitCharset: ; 11f84 (4:5f84)
+	call WaitTop
+	hlcoord 0, 0
+	ld bc, 6 * SCREEN_WIDTH
+	ld a, NAMINGSCREEN_BORDER
+	call ByteFill
+	hlcoord 0, 6
+	ld bc, 12 * SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	hlcoord 1, 1
+	lb bc, 4, SCREEN_WIDTH - 2
+	call ClearBox
+	ld de, MailEntry_Uppercase
+
+.PlaceMailCharset: ; 11fa9 (4:5fa9)
+	hlcoord 1, 7
+	ld b, 6
+.next
+	ld c, SCREEN_WIDTH - 1
+.loop_
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .loop_
+	push de
+	ld de, SCREEN_WIDTH + 1
+	add hl, de
+	pop de
+	dec b
+	jr nz, .next
+	ret
+
+.DoMailEntry: ; 11fc0 (4:5fc0)
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit_mail
+	call .DoJumptable
+	farcall PlaySpriteAnimationsAndDelayFrame
+	call .Update
+	call DelayFrame
+	and a
+	ret
+
+.exit_mail
+	callfar ClearSpriteAnims
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+
+.Update: ; 11feb (4:5feb)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 1, 1
+	lb bc, 4, 18
+	call ClearBox
+	ld hl, wNamingScreenDestinationPointer
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	hlcoord 2, 2
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.DoJumptable: ; 12008 (4:6008)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp hl
+
+.Jumptable: ; 12017 (4:6017)
+	dw .init_blinking_cursor
+	dw .process_joypad
+
+.init_blinking_cursor ; 1201b (4:601b)
+	depixel 9, 2
+	ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
+	call _InitSpriteAnimStruct
+	ld a, c
+	ld [wNamingScreenCursorObjectPointer], a
+	ld a, b
+	ld [wNamingScreenCursorObjectPointer + 1], a
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	ld [hl], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+.process_joypad ; 1203a (4:603a)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [hl]
+	and START
+	jr nz, .start
+	ld a, [hl]
+	and SELECT
+	jr nz, .select
+	ret
+
+.a
+	call NamingScreen_PressedA_GetCursorCommand
+	cp $1
+	jr z, .select
+	cp $2
+	jr z, .b
+	cp $3
+	jr z, .finished
+	call NamingScreen_GetLastCharacter
+	call MailComposition_TryAddLastCharacter
+	jr c, .start
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	cp MAIL_LINE_LENGTH
+	ret nz
+	inc [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], NAMINGSCREEN_UNDERLINE
+	dec hl
+	ld [hl], "<NEXT>"
+	ret
+
+.start
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], $9
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld [hl], $5
+	ret
+
+.b
+	call NamingScreen_DeleteCharacter
+	ld hl, wNamingScreenCurrNameLength
+	ld a, [hl]
+	cp MAIL_LINE_LENGTH
+	ret nz
+	dec [hl]
+	call NamingScreen_GetTextCursorPosition
+	ld [hl], NAMINGSCREEN_UNDERLINE
+	inc hl
+	ld [hl], "<NEXT>"
+	ret
+
+.finished
+	call NamingScreen_StoreEntry
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.select
+	ld hl, wNamingScreenLetterCase
+	ld a, [hl]
+	xor 1
+	ld [hl], a
+	jr nz, .switch_to_lowercase
+	ld de, MailEntry_Uppercase
+	call .PlaceMailCharset
+	ret
+
+.switch_to_lowercase
+	ld de, MailEntry_Lowercase
+	call .PlaceMailCharset
+	ret
+
+; called from engine/sprite_anims.asm
+
+ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
+	call .GetDPad
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	swap e
+	ld hl, SPRITEANIMSTRUCT_YOFFSET
+	add hl, bc
+	ld [hl], e
+	cp $5
+	ld de, .LetterEntries
+	ld a, 0
+	jr nz, .got_pointer
+	ld de, .CaseDelEnd
+	ld a, 1
+.got_pointer
+	ld hl, SPRITEANIMSTRUCT_0E
+	add hl, bc
+	add [hl]
+	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+	add hl, bc
+	ld [hl], a
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld l, [hl]
+	ld h, 0
+	add hl, de
+	ld a, [hl]
+	ld hl, SPRITEANIMSTRUCT_XOFFSET
+	add hl, bc
+	ld [hl], a
+	ret
+
+; 120f8 (4:60f8)
+
+.LetterEntries: ; 120f8
+	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
+
+.CaseDelEnd: ; 12102
+	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
+
+; 1210c
+
+.GetDPad: ; 1210c (4:610c)
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .down
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .right
+	ret
+
+.right
+	call ComposeMail_GetCursorPosition
+	and a
+	jr nz, .case_del_done_right
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $9
+	jr nc, .wrap_around_letter_right
+	inc [hl]
+	ret
+
+.wrap_around_letter_right
+	ld [hl], $0
+	ret
+
+.case_del_done_right
+	cp $3
+	jr nz, .wrap_around_command_right
+	xor a
+.wrap_around_command_right
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.left
+	call ComposeMail_GetCursorPosition
+	and a
+	jr nz, .caps_del_done_left
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .wrap_around_letter_left
+	dec [hl]
+	ret
+
+.wrap_around_letter_left
+	ld [hl], $9
+	ret
+
+.caps_del_done_left
+	cp $1
+	jr nz, .wrap_around_command_left
+	ld a, $4
+.wrap_around_command_left
+	dec a
+	dec a
+	ld e, a
+	add a
+	add e
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld [hl], a
+	ret
+
+.down
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nc, .wrap_around_down
+	inc [hl]
+	ret
+
+.wrap_around_down
+	ld [hl], $0
+	ret
+
+.up
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .wrap_around_up
+	dec [hl]
+	ret
+
+.wrap_around_up
+	ld [hl], $5
+	ret
+
+NamingScreen_PressedA_GetCursorCommand: ; 12185 (4:6185)
+	ld hl, wNamingScreenCursorObjectPointer
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+
+ComposeMail_GetCursorPosition: ; 1218b (4:618b)
+	ld hl, SPRITEANIMSTRUCT_0D
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nz, .letter
+	ld hl, SPRITEANIMSTRUCT_0C
+	add hl, bc
+	ld a, [hl]
+	cp $3
+	jr c, .case
+	cp $6
+	jr c, .del
+	ld a, $3
+	ret
+
+.case
+	ld a, $1
+	ret
+
+.del
+	ld a, $2
+	ret
+
+.letter
+	xor a
+	ret
+
+MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
+	ld a, [wNamingScreenLastCharacter]
+	jp MailComposition_TryAddCharacter
+
+; 121b2 (4:61b2)
+
+; unused
+	ld a, [wNamingScreenCurrNameLength]
+	and a
+	ret z
+	cp $11
+	jr nz, .asm_121c3
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+	dec [hl]
+	dec [hl]
+	jr .asm_121c8
+
+.asm_121c3
+	push hl
+	ld hl, wNamingScreenCurrNameLength
+	dec [hl]
+
+.asm_121c8
+	call NamingScreen_GetTextCursorPosition
+	ld c, [hl]
+	pop hl
+.asm_121cd
+	ld a, [hli]
+	cp $ff
+	jp z, NamingScreen_AdvanceCursor_CheckEndOfString
+	cp c
+	jr z, .asm_121d9
+	inc hl
+	jr .asm_121cd
+
+.asm_121d9
+	ld a, [hl]
+	jp NamingScreen_LoadNextCharacter
+
+; 121dd
+
+INCLUDE "data/mail_input_chars.asm"
+
+; 122c1
--- a/engine/namingscreen.asm
+++ /dev/null
@@ -1,1475 +1,0 @@
-_NamingScreen: ; 0x116b7
-	call DisableSpriteUpdates
-	call NamingScreen
-	call ReturnToMapWithSpeechTextbox
-	ret
-
-; 0x116c1
-
-NamingScreen: ; 116c1
-	ld hl, wNamingScreenDestinationPointer
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, wNamingScreenType
-	ld [hl], b
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set NO_TEXT_SCROLL, [hl]
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call .SetUpNamingScreen
-	call DelayFrame
-.loop
-	call NamingScreenJoypadLoop
-	jr nc, .loop
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [hMapAnims], a
-	pop af
-	ld [Options], a
-	call ClearJoypad
-	ret
-
-; 116f8
-
-.SetUpNamingScreen: ; 116f8
-	call ClearBGPalettes
-	ld b, SCGB_DIPLOMA
-	call GetSGBLayout
-	call DisableLCD
-	call LoadNamingScreenGFX
-	call NamingScreen_InitText
-	ld a, LCDC_DEFAULT
-	ld [rLCDC], a
-	call .GetNamingScreenSetup
-	call WaitBGMap
-	call WaitTop
-	call SetPalettes
-	call NamingScreen_InitNameEntry
-	ret
-
-; 1171d
-
-.GetNamingScreenSetup: ; 1171d
-	ld a, [wNamingScreenType]
-	and 7
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-
-; 1172e
-
-.Jumptable: ; 1172e (4:572e)
-	dw .Pokemon
-	dw .Player
-	dw .Rival
-	dw .Mom
-	dw .Box
-	dw .Tomodachi
-	dw .Pokemon
-	dw .Pokemon
-
-.Pokemon: ; 1173e (4:573e)
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	ld hl, LoadMenuMonIcon
-	ld a, BANK(LoadMenuMonIcon)
-	ld e, $1
-	rst FarCall ;  ; indirect jump to LoadMenuMonIcon (8e83f (23:683f))
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-	hlcoord 5, 2
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld de, .NicknameStrings
-	call PlaceString
-	inc de
-	hlcoord 5, 4
-	call PlaceString
-	farcall GetGender
-	jr c, .genderless
-	ld a, "♂"
-	jr nz, .place_gender
-	ld a, "♀"
-.place_gender
-	hlcoord 1, 2
-	ld [hl], a
-.genderless
-	call .StoreMonIconParams
-	ret
-
-; 11780 (4:5780)
-
-.NicknameStrings: ; 11780
-	db "'S@"
-	db "NICKNAME?@"
-
-; 1178d
-
-.Player: ; 1178d (4:578d)
-	farcall GetPlayerIcon
-	call .LoadSprite
-	hlcoord 5, 2
-	ld de, .PlayerNameString
-	call PlaceString
-	call .StoreSpriteIconParams
-	ret
-
-; 117a3 (4:57a3)
-
-.PlayerNameString: ; 117a3
-	db "YOUR NAME?@"
-
-; 117ae
-
-.Rival: ; 117ae (4:57ae)
-	ld de, SilverSpriteGFX
-	ld b, BANK(SilverSpriteGFX)
-	call .LoadSprite
-	hlcoord 5, 2
-	ld de, .RivalNameString
-	call PlaceString
-	call .StoreSpriteIconParams
-	ret
-
-; 117c3 (4:57c3)
-
-.RivalNameString: ; 117c3
-	db "RIVAL'S NAME?@"
-
-; 117d1
-
-.Mom: ; 117d1 (4:57d1)
-	ld de, MomSpriteGFX
-	ld b, BANK(MomSpriteGFX)
-	call .LoadSprite
-	hlcoord 5, 2
-	ld de, .MomNameString
-	call PlaceString
-	call .StoreSpriteIconParams
-	ret
-
-; 117e6 (4:57e6)
-
-.MomNameString: ; 117e6
-	db "MOTHER'S NAME?@"
-
-; 117f5
-
-.Box: ; 117f5 (4:57f5)
-	ld de, PokeBallSpriteGFX
-	ld hl, vTiles0 tile $00
-	lb bc, BANK(PokeBallSpriteGFX), $4
-	call Request2bpp
-	xor a
-	ld hl, wSpriteAnimDict
-	ld [hli], a
-	ld [hl], a
-	depixel 4, 4, 4, 0
-	ld a, SPRITE_ANIM_INDEX_RED_WALK
-	call _InitSpriteAnimStruct
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld [hl], $0
-	hlcoord 5, 2
-	ld de, .BoxNameString
-	call PlaceString
-	call .StoreBoxIconParams
-	ret
-
-; 11822 (4:5822)
-
-.BoxNameString: ; 11822
-	db "BOX NAME?@"
-
-; 1182c
-
-.Tomodachi: ; 1182c (4:582c)
-	hlcoord 3, 2
-	ld de, .oTomodachi_no_namae_sutoringu
-	call PlaceString
-	call .StoreSpriteIconParams
-	ret
-
-; 11839 (4:5839)
-
-.oTomodachi_no_namae_sutoringu ; 11839
-	db "おともだち の なまえは?@"
-
-; 11847
-
-.LoadSprite: ; 11847 (4:5847)
-	push de
-	ld hl, vTiles0 tile $00
-	ld c, $4
-	push bc
-	call Request2bpp
-	pop bc
-	ld hl, 12 tiles
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, vTiles0 tile $04
-	call Request2bpp
-	xor a
-	ld hl, wSpriteAnimDict
-	ld [hli], a
-	ld [hl], a
-	pop de
-	ld b, SPRITE_ANIM_INDEX_RED_WALK
-	ld a, d
-	cp HIGH(KrisSpriteGFX)
-	jr nz, .not_kris
-	ld a, e
-	cp LOW(KrisSpriteGFX)
-	jr nz, .not_kris
-	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
-.not_kris
-	ld a, b
-	depixel 4, 4, 4, 0
-	call _InitSpriteAnimStruct
-	ret
-
-.StoreMonIconParams: ; 1187b (4:587b)
-	ld a, PKMN_NAME_LENGTH - 1
-	hlcoord 5, 6
-	jr .StoreParams
-
-.StoreSpriteIconParams: ; 11882 (4:5882)
-	ld a, PLAYER_NAME_LENGTH - 1
-	hlcoord 5, 6
-	jr .StoreParams
-
-.StoreBoxIconParams: ; 11889 (4:5889)
-	ld a, BOX_NAME_LENGTH - 1
-	hlcoord 5, 4
-	jr .StoreParams
-
-.StoreParams: ; 11890 (4:5890)
-	ld [wNamingScreenMaxNameLength], a
-	ld a, l
-	ld [wNamingScreenStringEntryCoord], a
-	ld a, h
-	ld [wNamingScreenStringEntryCoord + 1], a
-	ret
-
-NamingScreen_IsTargetBox: ; 1189c
-	push bc
-	push af
-	ld a, [wNamingScreenType]
-	sub $3
-	ld b, a
-	pop af
-	dec b
-	pop bc
-	ret
-
-; 118a8
-
-NamingScreen_InitText: ; 118a8
-	call WaitTop
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $60
-	call ByteFill
-	hlcoord 1, 1
-	lb bc, 6, 18
-	call NamingScreen_IsTargetBox
-	jr nz, .not_box
-	lb bc, 4, 18
-
-.not_box
-	call ClearBox
-	ld de, NameInputUpper
-NamingScreen_ApplyTextInputMode: ; 118ca
-	call NamingScreen_IsTargetBox
-	jr nz, .not_box
-	ld hl, BoxNameInputLower - NameInputLower
-	add hl, de
-	ld d, h
-	ld e, l
-
-.not_box
-	push de
-	hlcoord 1, 8
-	lb bc, 7, 18
-	call NamingScreen_IsTargetBox
-	jr nz, .not_box_2
-	hlcoord 1, 6
-	lb bc, 9, 18
-
-.not_box_2
-	call ClearBox
-	hlcoord 1, 16
-	lb bc, 1, 18
-	call ClearBox
-	pop de
-	hlcoord 2, 8
-	ld b, $5
-	call NamingScreen_IsTargetBox
-	jr nz, .row
-	hlcoord 2, 6
-	ld b, $6
-
-.row
-	ld c, $11
-.col
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .col
-	push de
-	ld de, 2 * SCREEN_WIDTH - $11
-	add hl, de
-	pop de
-	dec b
-	jr nz, .row
-	ret
-
-; 11915
-
-NamingScreenJoypadLoop: ; 11915
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .quit
-	call .RunJumptable
-	farcall PlaySpriteAnimationsAndDelayFrame
-	call .UpdateStringEntry
-	call DelayFrame
-	and a
-	ret
-
-.quit
-	callfar ClearSpriteAnims
-	call ClearSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	scf
-	ret
-
-; 11940
-
-.UpdateStringEntry: ; 11940
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 1, 5
-	call NamingScreen_IsTargetBox
-	jr nz, .got_coords
-	hlcoord 1, 3
-
-.got_coords
-	lb bc, 1, 18
-	call ClearBox
-	ld hl, wNamingScreenDestinationPointer
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, wNamingScreenStringEntryCoord
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-; 11968
-
-.RunJumptable: ; 11968
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, $0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-
-; 11977
-
-.Jumptable: ; 11977 (4:5977)
-	dw .InitCursor
-	dw .ReadButtons
-
-.InitCursor: ; 1197b (4:597b)
-	depixel 10, 3
-	call NamingScreen_IsTargetBox
-	jr nz, .got_cursor_position
-	ld d, 8 * 8
-.got_cursor_position
-	ld a, SPRITE_ANIM_INDEX_NAMING_SCREEN_CURSOR
-	call _InitSpriteAnimStruct
-	ld a, c
-	ld [wNamingScreenCursorObjectPointer], a
-	ld a, b
-	ld [wNamingScreenCursorObjectPointer + 1], a
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	ld [hl], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-.ReadButtons: ; 119a1 (4:59a1)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [hl]
-	and START
-	jr nz, .start
-	ld a, [hl]
-	and SELECT
-	jr nz, .select
-	ret
-
-.a
-	call .GetCursorPosition
-	cp $1
-	jr z, .select
-	cp $2
-	jr z, .b
-	cp $3
-	jr z, .end
-	call NamingScreen_GetLastCharacter
-	call NamingScreen_TryAddCharacter
-	ret nc
-
-.start
-	ld hl, wNamingScreenCursorObjectPointer
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], $8
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld [hl], $4
-	call NamingScreen_IsTargetBox
-	ret nz
-	inc [hl]
-	ret
-
-.b
-	call NamingScreen_DeleteCharacter
-	ret
-
-.end
-	call NamingScreen_StoreEntry
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.select
-	ld hl, wcf64
-	ld a, [hl]
-	xor 1
-	ld [hl], a
-	jr z, .upper
-	ld de, NameInputLower
-	call NamingScreen_ApplyTextInputMode
-	ret
-
-.upper
-	ld de, NameInputUpper
-	call NamingScreen_ApplyTextInputMode
-	ret
-
-.GetCursorPosition: ; 11a0b (4:5a0b)
-	ld hl, wNamingScreenCursorObjectPointer
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-
-NamingScreen_GetCursorPosition: ; 11a11 (4:5a11)
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	push bc
-	ld b, $4
-	call NamingScreen_IsTargetBox
-	jr nz, .not_box
-	inc b
-.not_box
-	cp b
-	pop bc
-	jr nz, .not_bottom_row
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $3
-	jr c, .case_switch
-	cp $6
-	jr c, .delete
-	ld a, $3
-	ret
-
-.case_switch
-	ld a, $1
-	ret
-
-.delete
-	ld a, $2
-	ret
-
-.not_bottom_row
-	xor a
-	ret
-
-NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
-	call .GetDPad
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	swap e
-	ld hl, SPRITEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld [hl], e
-	ld d, $4
-	call NamingScreen_IsTargetBox
-	jr nz, .ok
-	inc d
-.ok
-	cp d
-	ld de, .LetterEntries
-	ld a, $0
-	jr nz, .ok2
-	ld de, .CaseDelEnd
-	ld a, $1
-.ok2
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	add [hl]
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld [hl], a
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld l, [hl]
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_XOFFSET
-	add hl, bc
-	ld [hl], a
-	ret
-
-; 11a79 (4:5a79)
-
-.LetterEntries: ; 11a79
-	db $00, $10, $20, $30, $40, $50, $60, $70, $80
-
-.CaseDelEnd: ; 11a82
-	db $00, $00, $00, $30, $30, $30, $60, $60, $60
-
-; 11a8b
-
-.GetDPad: ; 11a8b (4:5a8b)
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .down
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .left
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .right
-	ret
-
-.right
-	call NamingScreen_GetCursorPosition
-	and a
-	jr nz, .asm_11ab7
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $8
-	jr nc, .asm_11ab4
-	inc [hl]
-	ret
-
-.asm_11ab4
-	ld [hl], $0
-	ret
-
-.asm_11ab7
-	cp $3
-	jr nz, .asm_11abc
-	xor a
-.asm_11abc
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.left
-	call NamingScreen_GetCursorPosition
-	and a
-	jr nz, .asm_11ad8
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_11ad5
-	dec [hl]
-	ret
-
-.asm_11ad5
-	ld [hl], $8
-	ret
-
-.asm_11ad8
-	cp $1
-	jr nz, .asm_11ade
-	ld a, $4
-.asm_11ade
-	dec a
-	dec a
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.down
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	call NamingScreen_IsTargetBox
-	jr nz, .asm_11af9
-	cp $5
-	jr nc, .asm_11aff
-	inc [hl]
-	ret
-
-.asm_11af9
-	cp $4
-	jr nc, .asm_11aff
-	inc [hl]
-	ret
-
-.asm_11aff
-	ld [hl], $0
-	ret
-
-.up
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_11b0c
-	dec [hl]
-	ret
-
-.asm_11b0c
-	ld [hl], $4
-	call NamingScreen_IsTargetBox
-	ret nz
-	inc [hl]
-	ret
-
-NamingScreen_TryAddCharacter: ; 11b14 (4:5b14)
-	ld a, [wNamingScreenLastCharacter] ; lost
-MailComposition_TryAddCharacter: ; 11b17 (4:5b17)
-	ld a, [wNamingScreenMaxNameLength]
-	ld c, a
-	ld a, [wNamingScreenCurrNameLength]
-	cp c
-	ret nc
-
-	ld a, [wNamingScreenLastCharacter]
-
-NamingScreen_LoadNextCharacter: ; 11b23
-	call NamingScreen_GetTextCursorPosition
-	ld [hl], a
-
-NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
-	ld hl, wNamingScreenCurrNameLength
-	inc [hl]
-	call NamingScreen_GetTextCursorPosition
-	ld a, [hl]
-	cp "@"
-	jr z, .end_of_string
-	ld [hl], $f2
-	and a
-	ret
-
-.end_of_string
-	scf
-	ret
-
-; 11b39 (4:5b39)
-
-; XXX
-	ld a, [wNamingScreenCurrNameLength]
-	and a
-	ret z
-	push hl
-	ld hl, wNamingScreenCurrNameLength
-	dec [hl]
-	call NamingScreen_GetTextCursorPosition
-	ld c, [hl]
-	pop hl
-
-.loop
-	ld a, [hli]
-	cp $ff
-	jr z, NamingScreen_AdvanceCursor_CheckEndOfString
-	cp c
-	jr z, .done
-	inc hl
-	jr .loop
-
-.done
-	ld a, [hl]
-	jr NamingScreen_LoadNextCharacter
-
-; 11b56
-
-Dakutens: ; Dummied out
-	db "かが", "きぎ", "くぐ", "けげ", "こご"
-	db "さざ", "しじ", "すず", "せぜ", "そぞ"
-	db "ただ", "ちぢ", "つづ", "てで", "とど"
-	db "はば", "ひび", "ふぶ", "へべ", "ほぼ"
-	db "カガ", "キギ", "クグ", "ケゲ", "コゴ"
-	db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
-	db "タダ", "チヂ", "ツヅ", "テデ", "トド"
-	db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
-	db $ff
-
-Handakutens: ; Dummied out
-	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
-	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
-	db $ff
-
-; 11bbc
-
-NamingScreen_DeleteCharacter: ; 11bbc (4:5bbc)
-	ld hl, wNamingScreenCurrNameLength
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	call NamingScreen_GetTextCursorPosition
-	ld [hl], $f2
-	inc hl
-	ld a, [hl]
-	cp $f2
-	ret nz
-	ld [hl], $eb
-	ret
-
-NamingScreen_GetTextCursorPosition: ; 11bd0 (4:5bd0)
-	push af
-	ld hl, wNamingScreenDestinationPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wNamingScreenCurrNameLength]
-	ld e, a
-	ld d, 0
-	add hl, de
-	pop af
-	ret
-
-; 11be0
-
-NamingScreen_InitNameEntry: ; 11be0
-; load $f2, ($eb * [wNamingScreenMaxNameLength]), $50 into the dw address at wNamingScreenDestinationPointer
-	ld hl, wNamingScreenDestinationPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld [hl], $f2
-	inc hl
-	ld a, [wNamingScreenMaxNameLength]
-	dec a
-	ld c, a
-	ld a, $eb
-.loop
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	ld [hl], "@"
-	ret
-
-; 11bf7
-
-NamingScreen_StoreEntry: ; 11bf7 (4:5bf7)
-	ld hl, wNamingScreenDestinationPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wNamingScreenMaxNameLength]
-	ld c, a
-.loop
-	ld a, [hl]
-	cp $eb
-	jr z, .terminator
-	cp $f2
-	jr nz, .not_terminator
-.terminator
-	ld [hl], "@"
-.not_terminator
-	inc hl
-	dec c
-	jr nz, .loop
-	ret
-
-NamingScreen_GetLastCharacter: ; 11c11 (4:5c11)
-	ld hl, wNamingScreenCursorObjectPointer
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, SPRITEANIMSTRUCT_XOFFSET
-	add hl, bc
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_XCOORD
-	add hl, bc
-	add [hl]
-	sub $8
-	srl a
-	srl a
-	srl a
-	ld e, a
-	ld hl, SPRITEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_YCOORD
-	add hl, bc
-	add [hl]
-	sub $10
-	srl a
-	srl a
-	srl a
-	ld d, a
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH
-.loop
-	ld a, d
-	and a
-	jr z, .done
-	add hl, bc
-	dec d
-	jr .loop
-
-.done
-	add hl, de
-	ld a, [hl]
-	ld [wNamingScreenLastCharacter], a
-	ret
-
-LoadNamingScreenGFX: ; 11c51
-	call ClearSprites
-	callfar ClearSpriteAnims
-	call LoadStandardFont
-	call LoadFontsExtra
-
-	ld de, NamingScreenGFX_MiddleLine
-	ld hl, vTiles1 tile $6b
-	lb bc, BANK(NamingScreenGFX_MiddleLine), 1
-	call Get1bpp
-
-	ld de, NamingScreenGFX_UnderLine
-	ld hl, vTiles1 tile $72
-	lb bc, BANK(NamingScreenGFX_UnderLine), 1
-	call Get1bpp
-
-	ld de, vTiles2 tile $60
-	ld hl, NamingScreenGFX_Border
-	ld bc, 1 tiles
-	ld a, BANK(NamingScreenGFX_Border)
-	call FarCopyBytes
-
-	ld de, vTiles0 tile $7e
-	ld hl, NamingScreenGFX_Cursor
-	ld bc, 2 tiles
-	ld a, BANK(NamingScreenGFX_Cursor)
-	call FarCopyBytes
-
-	ld a, $5
-	ld hl, wSpriteAnimDict + 9 * 2
-	ld [hli], a
-	ld [hl], $7e
-	xor a
-	ld [hSCY], a
-	ld [wGlobalAnimYOffset], a
-	ld [hSCX], a
-	ld [wGlobalAnimXOffset], a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [hBGMapMode], a
-	ld [wNamingScreenCurrNameLength], a
-	ld a, $7
-	ld [hWX], a
-	ret
-
-; 11cb7
-
-NamingScreenGFX_Border: ; 11cb7
-INCBIN "gfx/namingscreen/border.2bpp"
-; 11cc7
-
-NamingScreenGFX_Cursor: ; 11cc7
-INCBIN "gfx/namingscreen/cursor.2bpp"
-; 11ce7
-
-INCLUDE "data/name_input_chars.asm"
-; 11e5d
-
-NamingScreenGFX_End: ; unused
-INCBIN "gfx/namingscreen/end.1bpp"
-; 11e6d
-
-NamingScreenGFX_MiddleLine:
-INCBIN "gfx/namingscreen/middle_line.1bpp"
-; 11e6d
-
-NamingScreenGFX_UnderLine: ; 11e6d
-INCBIN "gfx/namingscreen/underline.1bpp"
-; 11e75
-
-_ComposeMailMessage: ; 11e75 (mail?)
-	ld hl, wNamingScreenDestinationPointer
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call .InitBlankMail
-	call DelayFrame
-
-.loop
-	call .DoMailEntry
-	jr nc, .loop
-
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [hMapAnims], a
-	ret
-
-.InitBlankMail: ; 11e9a (4:5e9a)
-	call ClearBGPalettes
-	call DisableLCD
-	call LoadNamingScreenGFX
-	ld de, vTiles0 tile $00
-	ld hl, .MailIcon
-	ld bc, 8 tiles
-	ld a, BANK(.MailIcon)
-	call FarCopyBytes
-	xor a
-	ld hl, wSpriteAnimDict
-	ld [hli], a
-	ld [hl], a
-
-	; init mail icon
-	depixel 3, 2
-	ld a, SPRITE_ANIM_INDEX_PARTY_MON
-	call _InitSpriteAnimStruct
-
-	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
-	add hl, bc
-	ld [hl], $0
-	call .InitCharset
-	ld a, LCDC_DEFAULT
-	ld [rLCDC], a
-	call .initwNamingScreenMaxNameLength
-	ld b, SCGB_DIPLOMA
-	call GetSGBLayout
-	call WaitBGMap
-	call WaitTop
-	ld a, %11100100
-	call DmgToCgbBGPals
-	ld a, %11100100
-	call DmgToCgbObjPal0
-	call NamingScreen_InitNameEntry
-	ld hl, wNamingScreenDestinationPointer
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $10
-	add hl, de
-	ld [hl], $4e
-	ret
-
-; 11ef4 (4:5ef4)
-
-.MailIcon: ; 11ef4
-INCBIN "gfx/icon/mail2.2bpp"
-; 11f74
-
-.initwNamingScreenMaxNameLength ; 11f74 (4:5f74)
-	ld a, MAIL_MSG_LENGTH + 1
-	ld [wNamingScreenMaxNameLength], a
-	ret
-
-; 11f7a (4:5f7a)
-
-.Dummy: ; dummied out
-	db "メールを かいてね@"
-
-; 11f84
-
-.InitCharset: ; 11f84 (4:5f84)
-	call WaitTop
-	hlcoord 0, 0
-	ld bc, 6 * SCREEN_WIDTH
-	ld a, $60 ; border
-	call ByteFill
-	hlcoord 0, 6
-	ld bc, 12 * SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	hlcoord 1, 1
-	lb bc, 4, SCREEN_WIDTH - 2
-	call ClearBox
-	ld de, MailEntry_Uppercase
-
-.PlaceMailCharset: ; 11fa9 (4:5fa9)
-	hlcoord 1, 7
-	ld b, 6
-.next
-	ld c, SCREEN_WIDTH - 1
-.loop_
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .loop_
-	push de
-	ld de, SCREEN_WIDTH + 1
-	add hl, de
-	pop de
-	dec b
-	jr nz, .next
-	ret
-
-.DoMailEntry: ; 11fc0 (4:5fc0)
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .exit_mail
-	call .DoJumptable
-	farcall PlaySpriteAnimationsAndDelayFrame
-	call .Update
-	call DelayFrame
-	and a
-	ret
-
-.exit_mail
-	callfar ClearSpriteAnims
-	call ClearSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	scf
-	ret
-
-.Update: ; 11feb (4:5feb)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 1, 1
-	lb bc, 4, 18
-	call ClearBox
-	ld hl, wNamingScreenDestinationPointer
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	hlcoord 2, 2
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.DoJumptable: ; 12008 (4:6008)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-
-.Jumptable: ; 12017 (4:6017)
-	dw .init_blinking_cursor
-	dw .process_joypad
-
-.init_blinking_cursor ; 1201b (4:601b)
-	depixel 9, 2
-	ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
-	call _InitSpriteAnimStruct
-	ld a, c
-	ld [wNamingScreenCursorObjectPointer], a
-	ld a, b
-	ld [wNamingScreenCursorObjectPointer + 1], a
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	ld [hl], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-.process_joypad ; 1203a (4:603a)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [hl]
-	and START
-	jr nz, .start
-	ld a, [hl]
-	and SELECT
-	jr nz, .select
-	ret
-
-.a
-	call NamingScreen_PressedA_GetCursorCommand
-	cp $1
-	jr z, .select
-	cp $2
-	jr z, .b
-	cp $3
-	jr z, .finished
-	call NamingScreen_GetLastCharacter
-	call MailComposition_TryAddLastCharacter
-	jr c, .start
-	ld hl, wNamingScreenCurrNameLength
-	ld a, [hl]
-	cp $10
-	ret nz
-	inc [hl]
-	call NamingScreen_GetTextCursorPosition
-	ld [hl], $f2
-	dec hl
-	ld [hl], $4e
-	ret
-
-.start
-	ld hl, wNamingScreenCursorObjectPointer
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], $9
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld [hl], $5
-	ret
-
-.b
-	call NamingScreen_DeleteCharacter
-	ld hl, wNamingScreenCurrNameLength
-	ld a, [hl]
-	cp $10
-	ret nz
-	dec [hl]
-	call NamingScreen_GetTextCursorPosition
-	ld [hl], $f2
-	inc hl
-	ld [hl], $4e
-	ret
-
-.finished
-	call NamingScreen_StoreEntry
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.select
-	ld hl, wcf64
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	jr nz, .switch_to_lowercase
-	ld de, MailEntry_Uppercase
-	call .PlaceMailCharset
-	ret
-
-.switch_to_lowercase
-	ld de, MailEntry_Lowercase
-	call .PlaceMailCharset
-	ret
-
-; called from engine/sprite_anims.asm
-
-ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
-	call .GetDPad
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	swap e
-	ld hl, SPRITEANIMSTRUCT_YOFFSET
-	add hl, bc
-	ld [hl], e
-	cp $5
-	ld de, .LetterEntries
-	ld a, 0
-	jr nz, .got_pointer
-	ld de, .CaseDelEnd
-	ld a, 1
-.got_pointer
-	ld hl, SPRITEANIMSTRUCT_0E
-	add hl, bc
-	add [hl]
-	ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
-	add hl, bc
-	ld [hl], a
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld l, [hl]
-	ld h, 0
-	add hl, de
-	ld a, [hl]
-	ld hl, SPRITEANIMSTRUCT_XOFFSET
-	add hl, bc
-	ld [hl], a
-	ret
-
-; 120f8 (4:60f8)
-
-.LetterEntries: ; 120f8
-	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
-
-.CaseDelEnd: ; 12102
-	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
-
-; 1210c
-
-.GetDPad: ; 1210c (4:610c)
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .down
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .left
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .right
-	ret
-
-.right
-	call ComposeMail_GetCursorPosition
-	and a
-	jr nz, .case_del_done_right
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $9
-	jr nc, .wrap_around_letter_right
-	inc [hl]
-	ret
-
-.wrap_around_letter_right
-	ld [hl], $0
-	ret
-
-.case_del_done_right
-	cp $3
-	jr nz, .wrap_around_command_right
-	xor a
-.wrap_around_command_right
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.left
-	call ComposeMail_GetCursorPosition
-	and a
-	jr nz, .caps_del_done_left
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .wrap_around_letter_left
-	dec [hl]
-	ret
-
-.wrap_around_letter_left
-	ld [hl], $9
-	ret
-
-.caps_del_done_left
-	cp $1
-	jr nz, .wrap_around_command_left
-	ld a, $4
-.wrap_around_command_left
-	dec a
-	dec a
-	ld e, a
-	add a
-	add e
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld [hl], a
-	ret
-
-.down
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nc, .wrap_around_down
-	inc [hl]
-	ret
-
-.wrap_around_down
-	ld [hl], $0
-	ret
-
-.up
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .wrap_around_up
-	dec [hl]
-	ret
-
-.wrap_around_up
-	ld [hl], $5
-	ret
-
-NamingScreen_PressedA_GetCursorCommand: ; 12185 (4:6185)
-	ld hl, wNamingScreenCursorObjectPointer
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-
-ComposeMail_GetCursorPosition: ; 1218b (4:618b)
-	ld hl, SPRITEANIMSTRUCT_0D
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nz, .letter
-	ld hl, SPRITEANIMSTRUCT_0C
-	add hl, bc
-	ld a, [hl]
-	cp $3
-	jr c, .case
-	cp $6
-	jr c, .del
-	ld a, $3
-	ret
-
-.case
-	ld a, $1
-	ret
-
-.del
-	ld a, $2
-	ret
-
-.letter
-	xor a
-	ret
-
-MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
-	ld a, [wNamingScreenLastCharacter]
-	jp MailComposition_TryAddCharacter
-
-; 121b2 (4:61b2)
-
-; XXX
-	ld a, [wNamingScreenCurrNameLength]
-	and a
-	ret z
-	cp $11
-	jr nz, .asm_121c3
-	push hl
-	ld hl, wNamingScreenCurrNameLength
-	dec [hl]
-	dec [hl]
-	jr .asm_121c8
-
-.asm_121c3
-	push hl
-	ld hl, wNamingScreenCurrNameLength
-	dec [hl]
-
-.asm_121c8
-	call NamingScreen_GetTextCursorPosition
-	ld c, [hl]
-	pop hl
-.asm_121cd
-	ld a, [hli]
-	cp $ff
-	jp z, NamingScreen_AdvanceCursor_CheckEndOfString
-	cp c
-	jr z, .asm_121d9
-	inc hl
-	jr .asm_121cd
-
-.asm_121d9
-	ld a, [hl]
-	jp NamingScreen_LoadNextCharacter
-
-; 121dd
-
-INCLUDE "data/mail_input_chars.asm"
-
-; 122c1
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -70,7 +70,7 @@
 	ld e, [hl]
 	ld hl, OBJECT_PALETTE
 	add hl, bc
-	bit 7, [hl]
+	bit OAM_PRIORITY, [hl]
 	jp nz, Function6fa1
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
@@ -77,7 +77,7 @@
 	ld a, [hl]
 	ld d, a
 	call GetTileCollision
-	and a ; land
+	and a ; LANDTILE
 	jr z, Function6f3e
 	scf
 	ret
@@ -106,7 +106,7 @@
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	and 3
+	maskbits NUM_DIRECTIONS
 	ld e, a
 	ld d, 0
 	ld hl, .data_6f5b
@@ -131,7 +131,7 @@
 	push af
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	and 3
+	maskbits NUM_DIRECTIONS
 	ld e, a
 	ld d, 0
 	ld hl, .data_6f7b
@@ -178,49 +178,49 @@
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld a, [hl]
-	and 3
-	jr z, .asm_6fb2
+	maskbits NUM_DIRECTIONS
+	jr z, .down
 	dec a
-	jr z, .asm_6fb7
+	jr z, .up
 	dec a
-	jr z, .asm_6fbb
-	jr .asm_6fbf
+	jr z, .left
+	jr .right
 
-.asm_6fb2
+.down
 	inc e
 	push de
 	inc d
-	jr .asm_6fc2
+	jr .continue
 
-.asm_6fb7
+.up
 	push de
 	inc d
-	jr .asm_6fc2
+	jr .continue
 
-.asm_6fbb
+.left
 	push de
 	inc e
-	jr .asm_6fc2
+	jr .continue
 
-.asm_6fbf
+.right
 	inc d
 	push de
 	inc e
 
-.asm_6fc2
+.continue
 	call GetCoordTile
 	call GetTileCollision
 	pop de
-	and a ; land
-	jr nz, .asm_6fd7
+	and a ; LANDTILE
+	jr nz, .not_land
 	call GetCoordTile
 	call GetTileCollision
-	and a ; land
-	jr nz, .asm_6fd7
+	and a ; LANDTILE
+	jr nz, .not_land
 	xor a
 	ret
 
-.asm_6fd7
+.not_land
 	scf
 	ret
 ; 6fd9
@@ -279,7 +279,7 @@
 	jr IsNPCAtCoord
 ; 7015
 
-Function7015: ; unreferenced
+Unreferenced_Function7015:
 	ld a, [hMapObjectIndexBuffer]
 	call GetObjectStruct
 	call .CheckWillBeFacingNPC
@@ -482,7 +482,7 @@
 	ret
 ; 7113
 
-Function7113: ; unreferenced
+Unreferenced_Function7113:
 	ld a, [PlayerStandingMapX]
 	ld d, a
 	ld a, [PlayerStandingMapY]
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -1,11 +1,3 @@
-; Trade dialogs
-	const_def
-	const TRADE_INTRO
-	const TRADE_CANCEL
-	const TRADE_WRONG
-	const TRADE_COMPLETE
-	const TRADE_AFTER
-
 NPCTrade:: ; fcba8
 	ld a, e
 	ld [wJumptableIndex], a
@@ -83,9 +75,9 @@
 	ld e, TRADE_GENDER
 	call GetTradeAttribute
 	ld a, [hl]
-	and a
+	and a ; TRADE_EITHER_GENDER
 	jr z, .matching
-	cp 1
+	cp TRADE_MALE_ONLY
 	jr z, .check_male
 
 	farcall GetGender
@@ -109,7 +101,7 @@
 	ld hl, wTradeFlags
 	ld a, [wJumptableIndex]
 	ld c, a
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld a, c
 	and a
 	ret
@@ -178,10 +170,10 @@
 	ld e, TRADE_DIALOG
 	call GetTradeAttribute
 	ld a, [hl]
-	cp 3
-	ld a, 1
+	cp TRADE_DIALOG_GIRL
+	ld a, CAUGHT_BY_GIRL
 	jr c, .okay
-	ld a, 2
+	ld a, CAUGHT_BY_BOY
 .okay
 	ld [wOTTrademonCaughtData], a
 
@@ -214,7 +206,7 @@
 	call CopyTradeName
 
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call Trade_GetAttributeOfLastPartymon
 	ld hl, wOTTrademonNickname
 	call CopyTradeName
@@ -332,8 +324,7 @@
 	ret
 ; fcdfb
 
-Functionfcdfb: ; fcdfb
-; unreferenced
+Unreferenced_Functionfcdfb: ; fcdfb
 	ld bc, 4
 	call CopyBytes
 	ld a, "@"
@@ -341,8 +332,7 @@
 	ret
 ; fce05
 
-Functionfce05: ; fce05
-; unreferenced
+Unreferenced_Functionfce05: ; fce05
 	ld bc, 3
 	call CopyBytes
 	ld a, "@"
@@ -400,7 +390,7 @@
 	and a
 	ret z
 
-	cp 1
+	cp TRADE_MALE_ONLY
 	ld a, "♂"
 	jr z, .done
 	ld a, "♀"
@@ -433,31 +423,28 @@
 ; fcf53
 
 TradeTexts: ; fcf53
-; intro
+; entries correspond to TRADE_* × TRADE_DIALOG_* constants
+; TRADE_INTRO
 	dw TradeIntroText1
 	dw TradeIntroText2
 	dw TradeIntroText3
 	dw TradeIntroText4
-
-; cancel
+; TRADE_CANCEL
 	dw TradeCancelText1
 	dw TradeCancelText2
 	dw TradeCancelText3
 	dw TradeCancelText4
-
-; wrong mon
+; TRADE_WRONG
 	dw TradeWrongText1
 	dw TradeWrongText2
 	dw TradeWrongText3
 	dw TradeWrongText4
-
-; completed
+; TRADE_COMPLETE
 	dw TradeCompleteText1
 	dw TradeCompleteText2
 	dw TradeCompleteText3
 	dw TradeCompleteText4
-
-; after
+; TRADE_AFTER
 	dw TradeAfterText1
 	dw TradeAfterText2
 	dw TradeAfterText3
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -23,7 +23,7 @@
 	push af
 	res 7, [hl]
 	set 6, [hl]
-	call MapCallbackSprites_LoadUsedSpritesGFX
+	call Special_LoadUsedSpritesGFX
 	pop af
 	ld [wSpriteFlags], a
 	ret
@@ -35,15 +35,15 @@
 	push af
 	set 7, [hl]
 	res 6, [hl]
-	call MapCallbackSprites_LoadUsedSpritesGFX
+	call Special_LoadUsedSpritesGFX
 	pop af
 	ld [wSpriteFlags], a
 	ret
 ; 14168
 
-RefreshSprites:: ; 14168
+Special_RefreshSprites:: ; 14168
 	call .Refresh
-	call MapCallbackSprites_LoadUsedSpritesGFX
+	call Special_LoadUsedSpritesGFX
 	ret
 ; 1416f
 
@@ -77,7 +77,7 @@
 	cp c
 	jr z, .good
 	inc hl
-	cp $ff
+	cp -1
 	jr nz, .loop
 
 ; Any player state not in the array defaults to Chris's sprite.
@@ -100,7 +100,7 @@
 	db PLAYER_BIKE,      SPRITE_CHRIS_BIKE
 	db PLAYER_SURF,      SPRITE_SURF
 	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
-	db $ff
+	db -1 ; end
 
 .Kris:
 	db PLAYER_NORMAL,    SPRITE_KRIS
@@ -107,7 +107,7 @@
 	db PLAYER_BIKE,      SPRITE_KRIS_BIKE
 	db PLAYER_SURF,      SPRITE_SURF
 	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
-	db $ff
+	db -1 ; end
 ; 141c9
 
 
@@ -164,7 +164,7 @@
 ; 14209
 
 
-MapCallbackSprites_LoadUsedSpritesGFX: ; 14209
+Special_LoadUsedSpritesGFX: ; 14209
 	ld a, MAPCALLBACK_SPRITES
 	call RunMapCallback
 	call GetUsedSprites
@@ -719,10 +719,10 @@
 ; 1444d
 
 
-INCLUDE "data/emotes.asm"
+INCLUDE "data/sprites/emotes.asm"
 
-INCLUDE "data/sprite_mons.asm"
+INCLUDE "data/sprites/sprite_mons.asm"
 
 INCLUDE "data/maps/outdoor_sprites.asm"
 
-INCLUDE "data/sprites.asm"
+INCLUDE "data/sprites/sprites.asm"
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -1,3 +1,17 @@
+; Pack.Jumptable and BattlePack.Jumptable indexes
+	const_def
+	const PACKSTATE_INITGFX            ;  0
+	const PACKSTATE_INITITEMSPOCKET    ;  1
+	const PACKSTATE_ITEMSPOCKETMENU    ;  2
+	const PACKSTATE_INITBALLSPOCKET    ;  3
+	const PACKSTATE_BALLSPOCKETMENU    ;  4
+	const PACKSTATE_INITKEYITEMSPOCKET ;  5
+	const PACKSTATE_KEYITEMSPOCKETMENU ;  6
+	const PACKSTATE_INITTMHMPOCKET     ;  7
+	const PACKSTATE_TMHMPOCKETMENU     ;  8
+	const PACKSTATE_QUITNOSCRIPT       ;  9
+	const PACKSTATE_QUITRUNSCRIPT      ; 10
+
 Pack: ; 10000
 	ld hl, Options
 	set NO_TEXT_SCROLL, [hl]
@@ -28,6 +42,7 @@
 ; 10030
 
 .Jumptable: ; 10030 (4:4030)
+; entries correspond to PACKSTATE_* constants
 	dw .InitGFX            ;  0
 	dw .InitItemsPocket    ;  1
 	dw .ItemsPocketMenu    ;  2
@@ -44,13 +59,13 @@
 	xor a
 	ld [hBGMapMode], a
 	call Pack_InitGFX
-	ld a, [wcf64]
+	ld a, [wPackJumptableIndex]
 	ld [wJumptableIndex], a
 	call Pack_InitColors
 	ret
 
 .InitItemsPocket: ; 10056 (4:4056)
-	xor a
+	xor a ; ITEM_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -70,8 +85,8 @@
 	ld [wItemsPocketScrollPosition], a
 	ld a, [wMenuCursorY]
 	ld [wItemsPocketCursor], a
-	ld b, $7
-	ld c, $3
+	ld b, PACKSTATE_INITTMHMPOCKET ; left
+	ld c, PACKSTATE_INITBALLSPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	call .ItemBallsKey_LoadSubmenu
@@ -78,7 +93,7 @@
 	ret
 
 .InitKeyItemsPocket: ; 10094 (4:4094)
-	ld a, $2
+	ld a, KEY_ITEM_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -98,8 +113,8 @@
 	ld [wKeyItemsPocketScrollPosition], a
 	ld a, [wMenuCursorY]
 	ld [wKeyItemsPocketCursor], a
-	ld b, $3
-	ld c, $7
+	ld b, PACKSTATE_INITBALLSPOCKET ; left
+	ld c, PACKSTATE_INITTMHMPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	call .ItemBallsKey_LoadSubmenu
@@ -106,7 +121,7 @@
 	ret
 
 .InitTMHMPocket: ; 100d3 (4:40d3)
-	ld a, $3
+	ld a, TM_HM_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -118,8 +133,8 @@
 
 .TMHMPocketMenu: ; 100e8 (4:40e8)
 	farcall TMHMPocket
-	ld b, $5
-	ld c, $1
+	ld b, PACKSTATE_INITKEYITEMSPOCKET ; left
+	ld c, PACKSTATE_INITITEMSPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	farcall _CheckTossableItem
@@ -147,15 +162,14 @@
 
 ; 10124 (4:4124)
 .MenuDataHeader1: ; 0x10124
-	db $40 ; flags
-	db 07, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2_1
 	db 1 ; default option
 ; 0x1012c
 
 .MenuData2_1: ; 0x1012c
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2 ; items
 	db "USE@"
 	db "QUIT@"
@@ -162,7 +176,6 @@
 ; 0x10137
 
 .Jumptable1: ; 10137
-
 	dw .UseItem
 	dw QuitItemSubmenu
 
@@ -169,15 +182,14 @@
 ; 1013b
 
 .MenuDataHeader2: ; 0x1013b
-	db $40 ; flags
-	db 05, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2_2
 	db 1 ; default option
 ; 0x10143
 
 .MenuData2_2: ; 0x10143
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 3 ; items
 	db "USE@"
 	db "GIVE@"
@@ -211,7 +223,7 @@
 	ret
 
 .InitBallsPocket: ; 10186 (4:4186)
-	ld a, $1
+	ld a, BALL_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -231,8 +243,8 @@
 	ld [wBallsPocketScrollPosition], a
 	ld a, [wMenuCursorY]
 	ld [wBallsPocketCursor], a
-	ld b, $1
-	ld c, $5
+	ld b, PACKSTATE_INITITEMSPOCKET ; left
+	ld c, PACKSTATE_INITKEYITEMSPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	call .ItemBallsKey_LoadSubmenu
@@ -309,15 +321,14 @@
 
 ; 10249 (4:4249)
 MenuDataHeader_UsableKeyItem: ; 0x10249
-	db $40 ; flags
-	db 01, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10251
 
 .MenuData2: ; 0x10251
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 5 ; items
 	db "USE@"
 	db "GIVE@"
@@ -327,7 +338,6 @@
 ; 0x1026a
 
 Jumptable_UseGiveTossRegisterQuit: ; 1026a
-
 	dw UseItem
 	dw GiveItem
 	dw TossMenu
@@ -336,15 +346,14 @@
 ; 10274
 
 MenuDataHeader_UsableItem: ; 0x10274
-	db $40 ; flags
-	db 03, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 3, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x1027c
 
 .MenuData2: ; 0x1027c
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 4 ; items
 	db "USE@"
 	db "GIVE@"
@@ -353,7 +362,6 @@
 ; 0x10291
 
 Jumptable_UseGiveTossQuit: ; 10291
-
 	dw UseItem
 	dw GiveItem
 	dw TossMenu
@@ -361,15 +369,14 @@
 ; 10299
 
 MenuDataHeader_UnusableItem: ; 0x10299
-	db %01000000 ; flags
-	db 07, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x102a1
 
 .MenuData2: ; 0x102a1
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2 ; items
 	db "USE@"
 	db "QUIT@"
@@ -376,21 +383,19 @@
 ; 0x102ac
 
 Jumptable_UseQuit: ; 102ac
-
 	dw UseItem
 	dw QuitItemSubmenu
 ; 102b0
 
 MenuDataHeader_UnusableKeyItem: ; 0x102b0
-	db %01000000 ; flags
-	db 05, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x102b8
 
 .MenuData2: ; 0x102b8
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 3 ; items
 	db "USE@"
 	db "SEL@"
@@ -398,7 +403,6 @@
 ; 0x102c7
 
 Jumptable_UseRegisterQuit: ; 102c7
-
 	dw UseItem
 	dw RegisterItem
 	dw QuitItemSubmenu
@@ -405,15 +409,14 @@
 ; 102cd
 
 MenuDataHeader_HoldableKeyItem: ; 0x102cd
-	db $40 ; flags
-	db 03, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 3, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x102d5
 
 .MenuData2: ; 0x102d5
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 4 ; items
 	db "GIVE@"
 	db "TOSS@"
@@ -422,7 +425,6 @@
 ; 0x102ea
 
 Jumptable_GiveTossRegisterQuit: ; 102ea
-
 	dw GiveItem
 	dw TossMenu
 	dw RegisterItem
@@ -430,15 +432,14 @@
 ; 102f2
 
 MenuDataHeader_HoldableItem: ; 0x102f2
-	db $40 ; flags
-	db 05, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x102fa
 
 .MenuData2: ; 0x102fa
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 3 ; items
 	db "GIVE@"
 	db "TOSS@"
@@ -446,7 +447,6 @@
 ; 0x1030b
 
 Jumptable_GiveTossQuit: ; 1030b
-
 	dw GiveItem
 	dw TossMenu
 	dw QuitItemSubmenu
@@ -462,14 +462,14 @@
 ; 1031f
 
 .dw ; 1031f (4:431f)
-
+; entries correspond to ITEMMENU_* constants
+	dw .Oak     ; ITEMMENU_NOUSE
 	dw .Oak
 	dw .Oak
 	dw .Oak
-	dw .Oak
-	dw .Current
-	dw .Party
-	dw .Field
+	dw .Current ; ITEMMENU_CURRENT
+	dw .Party   ; ITEMMENU_PARTY
+	dw .Field   ; ITEMMENU_CLOSE
 ; 1035c
 
 .Oak: ; 1032d (4:432d)
@@ -503,7 +503,7 @@
 	ld a, [wItemEffectSucceeded]
 	and a
 	jr z, .Oak
-	ld a, $a
+	ld a, PACKSTATE_QUITRUNSCRIPT
 	ld [wJumptableIndex], a
 	ret
 ; 10364 (4:4364)
@@ -534,14 +534,13 @@
 	ret
 ; 1039d
 
-ResetPocketCursorPositions: ; 1039d
-; unreferenced
+Unreferenced_ResetPocketCursorPositions: ; 1039d
 	ld a, [wCurrPocket]
-	and a
+	and a ; ITEM_POCKET
 	jr z, .items
-	dec a
+	dec a ; BALL_POCKET
 	jr z, .balls
-	dec a
+	dec a ; KEY_ITEM_POCKET
 	jr z, .key
 	ret
 
@@ -626,16 +625,16 @@
 .give
 	ld a, [wJumptableIndex]
 	push af
-	ld a, [wcf64]
+	ld a, [wPackJumptableIndex]
 	push af
 	call GetCurNick
 	ld hl, StringBuffer1
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	call TryGiveItemToPartymon
 	pop af
-	ld [wcf64], a
+	ld [wPackJumptableIndex], a
 	pop af
 	ld [wJumptableIndex], a
 .finish
@@ -693,6 +692,7 @@
 ; 104c3
 
 .Jumptable: ; 104c3 (4:44c3)
+; entries correspond to PACKSTATE_* constants
 	dw .InitGFX            ;  0
 	dw .InitItemsPocket    ;  1
 	dw .ItemsPocketMenu    ;  2
@@ -709,13 +709,13 @@
 	xor a
 	ld [hBGMapMode], a
 	call Pack_InitGFX
-	ld a, [wcf64]
+	ld a, [wPackJumptableIndex]
 	ld [wJumptableIndex], a
 	call Pack_InitColors
 	ret
 
 .InitItemsPocket: ; 104e9 (4:44e9)
-	xor a
+	xor a ; ITEM_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -735,8 +735,8 @@
 	ld [wItemsPocketScrollPosition], a
 	ld a, [wMenuCursorY]
 	ld [wItemsPocketCursor], a
-	ld b, $7
-	ld c, $3
+	ld b, PACKSTATE_INITTMHMPOCKET ; left
+	ld c, PACKSTATE_INITBALLSPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	call ItemSubmenu
@@ -743,7 +743,7 @@
 	ret
 
 .InitKeyItemsPocket: ; 10527 (4:4527)
-	ld a, $2
+	ld a, KEY_ITEM_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -763,8 +763,8 @@
 	ld [wKeyItemsPocketScrollPosition], a
 	ld a, [wMenuCursorY]
 	ld [wKeyItemsPocketCursor], a
-	ld b, $3
-	ld c, $7
+	ld b, PACKSTATE_INITBALLSPOCKET ; left
+	ld c, PACKSTATE_INITTMHMPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	call ItemSubmenu
@@ -771,7 +771,7 @@
 	ret
 
 .InitTMHMPocket: ; 10566 (4:4566)
-	ld a, $3
+	ld a, TM_HM_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -785,8 +785,8 @@
 
 .TMHMPocketMenu: ; 10581 (4:4581)
 	farcall TMHMPocket
-	ld b, $5
-	ld c, $1
+	ld b, PACKSTATE_INITKEYITEMSPOCKET ; left
+	ld c, PACKSTATE_INITITEMSPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	xor a
@@ -794,7 +794,7 @@
 	ret
 
 .InitBallsPocket: ; 10594 (4:4594)
-	ld a, $1
+	ld a, BALL_POCKET
 	ld [wCurrPocket], a
 	call ClearPocketList
 	call DrawPocketName
@@ -814,8 +814,8 @@
 	ld [wBallsPocketScrollPosition], a
 	ld a, [wMenuCursorY]
 	ld [wBallsPocketCursor], a
-	ld b, $1
-	ld c, $5
+	ld b, PACKSTATE_INITITEMSPOCKET ; left
+	ld c, PACKSTATE_INITKEYITEMSPOCKET ; right
 	call Pack_InterpretJoypad
 	ret c
 	call ItemSubmenu
@@ -848,15 +848,14 @@
 
 ; 10601 (4:4601)
 .UsableMenuDataHeader: ; 0x10601
-	db $40 ; flags
-	db 07, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .UsableMenuData2
 	db 1 ; default option
 ; 0x10609
 
 .UsableMenuData2: ; 0x10609
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2 ; items
 	db "USE@"
 	db "QUIT@"
@@ -868,15 +867,14 @@
 ; 10618
 
 .UnusableMenuDataHeader: ; 0x10618
-	db $40 ; flags
-	db 09, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .UnusableMenuData2
 	db 1 ; default option
 ; 0x10620
 
 .UnusableMenuData2: ; 0x10620
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 1 ; items
 	db "QUIT@"
 ; 0x10627
@@ -893,13 +891,14 @@
 	ret
 
 .ItemFunctionJumptable: ; 10637 (4:4637)
+; entries correspond to ITEMMENU_* constants
+	dw .Oak         ; ITEMMENU_NOUSE
 	dw .Oak
 	dw .Oak
 	dw .Oak
-	dw .Oak
-	dw .Unused
-	dw .BattleField
-	dw .BattleOnly
+	dw .Unused      ; ITEMMENU_CURRENT
+	dw .BattleField ; ITEMMENU_PARTY
+	dw .BattleOnly  ; ITEMMENU_CLOSE
 
 .Oak: ; 10645 (4:4645)
 	ld hl, Text_ThisIsntTheTime
@@ -937,7 +936,7 @@
 	cp $2
 	jr z, .didnt_use_item
 .quit_run_script ; 1067e (4:467e)
-	ld a, 10
+	ld a, PACKSTATE_QUITRUNSCRIPT
 	ld [wJumptableIndex], a
 	ret
 
@@ -953,16 +952,17 @@
 InitPackBuffers: ; 1068a
 	xor a
 	ld [wJumptableIndex], a
+	; pocket id -> jumptable index
 	ld a, [wLastPocket]
-	and $3
+	maskbits NUM_POCKETS
 	ld [wCurrPocket], a
 	inc a
 	add a
 	dec a
-	ld [wcf64], a
+	ld [wPackJumptableIndex], a
+	xor a ; FALSE
+	ld [wPackUsedItem], a
 	xor a
-	ld [wcf66], a
-	xor a
 	ld [wSwitchItem], a
 	ret
 ; 106a5
@@ -970,10 +970,10 @@
 DepositSellInitPackBuffers: ; 106a5
 	xor a
 	ld [hBGMapMode], a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wCurrPocket], a
-	ld [wcf66], a
+	ld [wJumptableIndex], a ; PACKSTATE_INITGFX
+	ld [wPackJumptableIndex], a ; PACKSTATE_INITGFX
+	ld [wCurrPocket], a ; ITEM_POCKET
+	ld [wPackUsedItem], a
 	ld [wSwitchItem], a
 	call Pack_InitGFX
 	call Pack_InitColors
@@ -997,6 +997,7 @@
 ; 106d1
 
 .Jumptable: ; 106d1 (4:46d1)
+; entries correspond to *_POCKET constants
 	dw .ItemsPocket
 	dw .BallsPocket
 	dw .KeyItemsPocket
@@ -1003,7 +1004,7 @@
 	dw .TMHMPocket
 
 .ItemsPocket: ; 106d9 (4:46d9)
-	xor a
+	xor a ; ITEM_POCKET
 	call InitPocket
 	ld hl, PC_Mart_ItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
@@ -1019,7 +1020,7 @@
 	ret
 
 .KeyItemsPocket: ; 106ff (4:46ff)
-	ld a, 2
+	ld a, KEY_ITEM_POCKET
 	call InitPocket
 	ld hl, PC_Mart_KeyItemsPocketMenuDataHeader
 	call CopyMenuDataHeader
@@ -1035,7 +1036,7 @@
 	ret
 
 .TMHMPocket: ; 10726 (4:4726)
-	ld a, 3
+	ld a, TM_HM_POCKET
 	call InitPocket
 	call WaitBGMap_DrawPackGFX
 	farcall TMHMPocket
@@ -1044,7 +1045,7 @@
 	ret
 
 .BallsPocket: ; 1073b (4:473b)
-	ld a, 1
+	ld a, BALL_POCKET
 	call InitPocket
 	ld hl, PC_Mart_BallsPocketMenuDataHeader
 	call CopyMenuDataHeader
@@ -1085,13 +1086,13 @@
 
 .a_button
 	ld a, TRUE
-	ld [wcf66], a
+	ld [wPackUsedItem], a
 	and a
 	ret
 
 .b_button
-	xor a
-	ld [wcf66], a
+	xor a ; FALSE
+	ld [wPackUsedItem], a
 	and a
 	ret
 
@@ -1098,7 +1099,7 @@
 .d_left
 	ld a, [wJumptableIndex]
 	dec a
-	and $3
+	maskbits NUM_POCKETS
 	ld [wJumptableIndex], a
 	push de
 	ld de, SFX_SWITCH_POCKETS
@@ -1110,7 +1111,7 @@
 .d_right
 	ld a, [wJumptableIndex]
 	inc a
-	and $3
+	maskbits NUM_POCKETS
 	ld [wJumptableIndex], a
 	push de
 	ld de, SFX_SWITCH_POCKETS
@@ -1130,8 +1131,8 @@
 	call .RunJumptable
 	call DepositSellTutorial_InterpretJoypad
 	jr c, .loop
-	xor a
-	ld [wcf66], a
+	xor a ; FALSE
+	ld [wPackUsedItem], a
 	ret
 ; 107d7
 
@@ -1144,7 +1145,7 @@
 ; 107e1
 
 .dw ; 107e1 (4:47e1)
-
+; entries correspond to *_POCKET constants
 	dw .Items
 	dw .Balls
 	dw .KeyItems
@@ -1151,21 +1152,20 @@
 	dw .TMHM
 
 .Items: ; 107e9 (4:47e9)
-	xor a
+	xor a ; ITEM_POCKET
 	ld hl, .ItemsMenuDataHeader
 	jr .DisplayPocket
 
 ; 107ef (4:47ef)
 .ItemsMenuDataHeader: ; 0x107ef
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .ItemsMenuData2
 	db 1 ; default option
 ; 0x107f7
 
 .ItemsMenuData2: ; 0x107f7
-	db $ae ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, wDudeNumItems
@@ -1175,21 +1175,20 @@
 ; 10807
 
 .KeyItems: ; 10807 (4:4807)
-	ld a, 2
+	ld a, KEY_ITEM_POCKET
 	ld hl, .KeyItemsMenuDataHeader
 	jr .DisplayPocket
 
 ; 1080e (4:480e)
 .KeyItemsMenuDataHeader: ; 0x1080e
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .KeyItemsMenuData2
 	db 1 ; default option
 ; 0x10816
 
 .KeyItemsMenuData2: ; 0x10816
-	db $ae ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, wDudeNumKeyItems
@@ -1199,7 +1198,7 @@
 ; 10826
 
 .TMHM: ; 10826 (4:4826)
-	ld a, 3
+	ld a, TM_HM_POCKET
 	call InitPocket
 	call WaitBGMap_DrawPackGFX
 	farcall TMHMPocket
@@ -1208,21 +1207,20 @@
 	ret
 
 .Balls: ; 1083b (4:483b)
-	ld a, 1
+	ld a, BALL_POCKET
 	ld hl, .BallsMenuDataHeader
 	jr .DisplayPocket
 
 ; 10842 (4:4842)
 .BallsMenuDataHeader: ; 0x10842
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .BallsMenuData2
 	db 1 ; default option
 ; 0x1084a
 
 .BallsMenuData2: ; 0x1084a
-	db $ae ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, wDudeNumBalls
@@ -1258,8 +1256,8 @@
 Pack_QuitNoScript: ; 10874 (4:4874)
 	ld hl, wJumptableIndex
 	set 7, [hl]
-	xor a
-	ld [wcf66], a
+	xor a ; FALSE
+	ld [wPackUsedItem], a
 	ret
 
 Pack_QuitRunScript: ; 1087e (4:487e)
@@ -1266,7 +1264,7 @@
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ld a, TRUE
-	ld [wcf66], a
+	ld [wPackUsedItem], a
 	ret
 
 Pack_PrintTextNoScroll: ; 10889 (4:4889)
@@ -1283,7 +1281,7 @@
 	call WaitBGMap
 DrawPackGFX: ; 1089d
 	ld a, [wCurrPocket]
-	and $3
+	maskbits NUM_POCKETS
 	ld e, a
 	ld d, $0
 	ld a, [BattleType]
@@ -1310,10 +1308,10 @@
 ; 108cc
 
 PackGFXPointers: ; 108cc
-	dw PackGFX + (15 tiles) * 1
-	dw PackGFX + (15 tiles) * 3
-	dw PackGFX + (15 tiles) * 0
-	dw PackGFX + (15 tiles) * 2
+	dw PackGFX + (15 tiles) * 1 ; ITEM_POCKET
+	dw PackGFX + (15 tiles) * 3 ; BALL_POCKET
+	dw PackGFX + (15 tiles) * 0 ; KEY_ITEM_POCKET
+	dw PackGFX + (15 tiles) * 2 ; TM_HM_POCKET
 ; 108d4
 
 Pack_InterpretJoypad: ; 108d4 (4:48d4)
@@ -1344,7 +1342,7 @@
 	ret
 
 .b_button
-	ld a, 9
+	ld a, PACKSTATE_QUITNOSCRIPT
 	ld [wJumptableIndex], a
 	scf
 	ret
@@ -1352,7 +1350,7 @@
 .d_left
 	ld a, b
 	ld [wJumptableIndex], a
-	ld [wcf64], a
+	ld [wPackJumptableIndex], a
 	push de
 	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
@@ -1363,7 +1361,7 @@
 .d_right
 	ld a, c
 	ld [wJumptableIndex], a
-	ld [wcf64], a
+	ld [wPackJumptableIndex], a
 	push de
 	ld de, SFX_SWITCH_POCKETS
 	call PlaySFX
@@ -1489,15 +1487,19 @@
 ; 109e1
 
 .tilemap ; 109e1
+; ITEM_POCKET
 	db $00, $04, $04, $04, $01 ; top border
 	db $06, $07, $08, $09, $0a ; Items
 	db $02, $05, $05, $05, $03 ; bottom border
+; BALL_POCKET
 	db $00, $04, $04, $04, $01 ; top border
 	db $15, $16, $17, $18, $19 ; Balls
 	db $02, $05, $05, $05, $03 ; bottom border
+; KEY_ITEM_POCKET
 	db $00, $04, $04, $04, $01 ; top border
 	db $0b, $0c, $0d, $0e, $0f ; Key Items
 	db $02, $05, $05, $05, $03 ; bottom border
+; TM_HM_POCKET
 	db $00, $04, $04, $04, $01 ; top border
 	db $10, $11, $12, $13, $14 ; TM/HM
 	db $02, $05, $05, $05, $03 ; bottom border
@@ -1511,8 +1513,7 @@
 	ret
 ; 10a2a
 
-Pack_ClearTilemap: ; 10a2a
-; unreferenced
+Unreferenced_Pack_ClearTilemap: ; 10a2a
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
@@ -1536,15 +1537,14 @@
 ; 10a4f
 
 ItemsPocketMenuDataHeader: ; 0x10a4f
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10a57
 
 .MenuData2: ; 0x10a57
-	db $ae ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumItems
@@ -1554,15 +1554,14 @@
 ; 10a67
 
 PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10a6f
 
 .MenuData2: ; 0x10a6f
-	db $2e ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumItems
@@ -1572,15 +1571,14 @@
 ; 10a7f
 
 KeyItemsPocketMenuDataHeader: ; 0x10a7f
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10a87
 
 .MenuData2: ; 0x10a87
-	db $ae ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, NumKeyItems
@@ -1590,15 +1588,14 @@
 ; 10a97
 
 PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10a9f
 
 .MenuData2: ; 0x10a9f
-	db $2e ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, NumKeyItems
@@ -1608,15 +1605,14 @@
 ; 10aaf
 
 BallsPocketMenuDataHeader: ; 0x10aaf
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10ab7
 
 .MenuData2: ; 0x10ab7
-	db $ae ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP | STATICMENU_CURSOR ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumBalls
@@ -1626,15 +1622,14 @@
 ; 10ac7
 
 PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7
-	db $40 ; flags
-	db 01, 07 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 7, 1, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x10acf
 
 .MenuData2: ; 0x10acf
-	db $2e ; flags
+	db STATICMENU_ENABLE_SELECT | STATICMENU_ENABLE_LEFT_RIGHT | STATICMENU_ENABLE_START | STATICMENU_WRAP ; flags
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumBalls
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -50,7 +50,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl] ; Disable text delay
+	set NO_TEXT_SCROLL, [hl]
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 0
@@ -57,16 +57,16 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
 	call ByteFill ; blank the tilemap
-	call GetPartyMenuTilemapPointers ; This reads from a pointer table???
+	call GetPartyMenuQualityIndexes
 .loop
 	ld a, [hli]
-	cp $ff
-	jr z, .end ; 0x5007a $8
+	cp -1
+	jr z, .end
 	push hl
 	ld hl, .Jumptable
 	rst JumpTable
 	pop hl
-	jr .loop ; 0x50082 $f3
+	jr .loop
 .end
 	pop af
 	ld [Options], a
@@ -74,6 +74,7 @@
 ; 0x50089
 
 .Jumptable: ; 50089
+; entries correspond to PARTYMENUQUALITY_* constants
 	dw PlacePartyNicknames
 	dw PlacePartyHPBar
 	dw PlacePartyMenuHPDigits
@@ -523,7 +524,7 @@
 	dec c
 	jr nz, .loop
 	ld a, l
-	ld e, PKMN_NAME_LENGTH
+	ld e, MON_NAME_LENGTH
 	sub e
 	ld l, a
 	ld a, h
@@ -573,16 +574,16 @@
 ; 5036b
 
 .String_Banme: ; 5036b
-	db " ばんめ  @" ; Place
+	db " ばんめ  @" ; Place
 ; 50372
 .String_Sanka_Shinai: ; 50372
 	db "さんかしない@" ; Cancel
 ; 50379
 .String_Kettei_Yameru: ; 50379
-	db "けってい  やめる@" ; Quit
+	db "けってい  やめる@" ; Quit
 ; 50383
 .Strings_1_2_3: ; 50383
-	db "1@", "2@", "3@" ; 1st, 2nd, 3rd
+	db "1@", "2@", "3@" ; 1st, 2nd, 3rd
 ; 50389
 
 
@@ -598,7 +599,7 @@
 	ret
 ; 50396
 
-GetPartyMenuTilemapPointers: ; 50396
+GetPartyMenuQualityIndexes: ; 50396
 	ld a, [PartyMenuActionText]
 	and $f0
 	jr nz, .skip
@@ -606,7 +607,7 @@
 	and $f
 	ld e, a
 	ld d, 0
-	ld hl, .Pointers
+	ld hl, PartyMenuQualityPointers
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -615,31 +616,13 @@
 	ret
 
 .skip
-	ld hl, .Default
+	ld hl, PartyMenuQualityPointers.Default
 	ret
 ; 503b2
 
-.Pointers: ; 503b2
-	dw .Default
-	dw .Default
-	dw .Default
-	dw .TMHM
-	dw .Default
-	dw .EvoStone
-	dw .Gender
-	dw .Gender
-	dw .Default
-	dw .Mobile
-; 503c6
+INCLUDE "data/party_menu_qualities.asm"
 
-.Default: db 0, 1, 2, 3, 4, $ff
-.TMHM: db 0, 5, 3, 4, $ff
-.EvoStone: db 0, 6, 3, 4, $ff
-.Gender: db 0, 7, 3, 4, $ff
-.Mobile: db 0, 8, 3, 4, $ff
-; 503e0
 
-
 InitPartyMenuGFX: ; 503e0
 	ld hl, PartyCount
 	ld a, [hli]
@@ -817,24 +800,32 @@
 
 ChooseAMonString: ; 0x504e4
 	db "Choose a #MON.@"
+
 UseOnWhichPKMNString: ; 0x504f3
 	db "Use on which <PK><MN>?@"
+
 WhichPKMNString: ; 0x50504
 	db "Which <PK><MN>?@"
+
 TeachWhichPKMNString: ; 0x5050e
 	db "Teach which <PK><MN>?@"
+
 MoveToWhereString: ; 0x5051e
 	db "Move to where?@"
-ChooseAFemalePKMNString: ; 0x5052d  ; UNUSED
+
+ChooseAFemalePKMNString: ; 0x5052d
+; unused
 	db "Choose a ♀<PK><MN>.@"
-ChooseAMalePKMNString: ; 0x5053b    ; UNUSED
+
+ChooseAMalePKMNString: ; 0x5053b
+; unused
 	db "Choose a ♂<PK><MN>.@"
+
 ToWhichPKMNString: ; 0x50549
 	db "To which <PK><MN>?@"
 
 YouHaveNoPKMNString: ; 0x50556
 	db "You have no <PK><MN>!@"
-
 
 PrintPartyMenuActionText: ; 50566
 	ld a, [CurPartyMon]
--- a/engine/phone/buenas_password.asm
+++ b/engine/phone/buenas_password.asm
@@ -167,4 +167,4 @@
 	end
 ; a0c28
 
-INCLUDE "text/phone/buena.asm"
+INCLUDE "data/phone/text/buena.asm"
--- a/engine/phone/generic_calls.asm
+++ b/engine/phone/generic_calls.asm
@@ -1240,7 +1240,7 @@
 	end
 
 PhoneScript_MonFlavorText:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	farscall PhoneScript_Random2
 	if_equal $0, .TooEnergetic
 	farwritetext UnknownText_0x1b518b
--- a/engine/phone/phone.asm
+++ b/engine/phone/phone.asm
@@ -75,20 +75,20 @@
 	cp -1
 	jr z, .done
 	cp c
-	jr z, .elm_or_mom
+	jr z, .continue
+
 	push bc
 	push hl
 	ld c, a
 	call _CheckCellNum
-	jr c, .elm_or_mom_in_list
+	jr c, .permanent
 	ld hl, Buffer1
 	inc [hl]
-
-.elm_or_mom_in_list
+.permanent
 	pop hl
 	pop bc
 
-.elm_or_mom
+.continue
 	jr .loop
 
 .done
@@ -98,9 +98,7 @@
 	ret
 ; 90066
 
-PermanentNumbers: ; 90066
-	db PHONECONTACT_MOM, PHONECONTACT_ELM, -1
-; 90069
+INCLUDE "data/phone/permanent_numbers.asm"
 
 
 FarPlaceString: ; 90069
@@ -133,7 +131,7 @@
 	cp b
 	jr nz, .no_call
 
-	call GetMapHeaderPhoneServiceNybble
+	call GetMapPhoneService
 	and a
 	jr nz, .no_call
 
@@ -165,7 +163,7 @@
 
 	farcall CheckTime
 	pop af
-	and MORN | DAY | NITE
+	and ANYTIME
 	and c
 
 	pop de
@@ -330,7 +328,7 @@
 	and a
 	jr nz, .OutOfArea
 	; If you're in an area without phone service, don't do the call
-	call GetMapHeaderPhoneServiceNybble
+	call GetMapPhoneService
 	and a
 	jr nz, .OutOfArea
 	; If the person can't take a call at that time, don't do the call
@@ -439,7 +437,7 @@
 ; 90241
 
 Script_ReceivePhoneCall: ; 0x90241
-	refreshscreen $0
+	refreshscreen
 	callasm RingTwice_StartCall
 	ptcall wPhoneScriptPointer
 	waitbutton
@@ -471,7 +469,7 @@
 RingTwice_StartCall: ; 9026f
 	call .Ring
 	call .Ring
-	farcall TrainerRankings_PhoneCalls
+	farcall StubbedTrainerRankings_PhoneCalls
 	ret
 ; 9027c
 
@@ -500,7 +498,7 @@
 	ld [PhoneCaller + 1], a
 	call Phone_FirstOfTwoRings
 	call Phone_FirstOfTwoRings
-	farcall TrainerRankings_PhoneCalls
+	farcall StubbedTrainerRankings_PhoneCalls
 	ret
 ; 902b3
 
@@ -518,7 +516,7 @@
 Phone_CallerTextboxWithName2: ; 902c9
 	call Phone_CallerTextbox
 	hlcoord 1, 2
-	ld [hl], "<PHONE>"
+	ld [hl], "☎"
 	inc hl
 	inc hl
 	ld a, [PhoneScriptBank]
@@ -618,7 +616,7 @@
 	push bc
 	call Phone_CallerTextbox
 	hlcoord 1, 1
-	ld [hl], "<PHONE>"
+	ld [hl], "☎"
 	inc hl
 	inc hl
 	ld d, h
@@ -719,7 +717,7 @@
 .bill db "BILL:@"
 .elm db "PROF.ELM:@"
 .bikeshop db "BIKE SHOP:@"
-.buena db "BUENA:", $22, "   DISC JOCKEY@"
+.buena db "BUENA:<LNBRK>   DISC JOCKEY@"
 ; 90423
 
 Phone_GetTrainerName: ; 90423 (24:4423)
@@ -761,9 +759,9 @@
 ; 9045f
 
 
-INCLUDE "data/phone_contacts.asm"
+INCLUDE "data/phone/phone_contacts.asm"
 
-INCLUDE "data/phone_special.asm"
+INCLUDE "data/phone/special_calls.asm"
 
 
 UnknownScript_0x90657: ; 0x90657
--- a/engine/phone/phone_callers.asm
+++ b/engine/phone/phone_callers.asm
@@ -1,5 +1,5 @@
 Phone_GenericCall_Male:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	farscall PhoneScript_Random2
 	if_equal 0, .Bragging
 	farscall PhoneScript_Generic_Male
@@ -9,7 +9,7 @@
 	farjump Phone_BraggingCall_Male
 
 Phone_GenericCall_Female:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	farscall PhoneScript_Random2
 	if_equal 0, .Bragging
 	farscall PhoneScript_Generic_Female
@@ -27,7 +27,7 @@
 	farjump Phone_FoundAMon_Female
 
 Phone_FoundAMon_Male:
-	special RandomPhoneWildMon
+	special Special_RandomPhoneWildMon
 	farscall PhoneScript_Random2
 	if_equal 0, .GotAway
 	farscall Phone_WhoDefeatedMon_Male
@@ -37,7 +37,7 @@
 	farjump Phone_GotAwayCall_Male
 
 Phone_FoundAMon_Female:
-	special RandomPhoneWildMon
+	special Special_RandomPhoneWildMon
 	farscall PhoneScript_Random2
 	if_equal 0, .GotAway
 	farscall Phone_WhoDefeatedMon_Female
@@ -851,7 +851,7 @@
 	farjump PhoneScript_HangupText_Female
 
 PhoneScriptRareWildMon:
-	special RandomUnseenWildMon
+	special Special_RandomUnseenWildMon
 	end
 
 PhoneScript_BugCatchingContest:
--- a/engine/phone/phone_scripts.asm
+++ b/engine/phone/phone_scripts.asm
@@ -20,10 +20,10 @@
 	iftrue MomPhoneHangUpScript
 	farwritetext MomPhoneGreetingText
 	buttonsound
-	mapnametotext $0
+	mapnametotext MEM_BUFFER_0
 	checkcode VAR_ROOFPALETTE
-	if_equal $1, MomPhonePalette1
-	if_equal $2, MomPhonePalette2
+	if_equal 1, MomPhonePalette1
+	if_equal 2, MomPhonePalette2
 	jump MomPhoneOther
 
 MomPhoneLandmark: ; 0xbcedf
@@ -53,13 +53,13 @@
 	jump MomSavingMoney
 
 .violet ; 0xbcf15
-	landmarktotext SPROUT_TOWER, 1
+	landmarktotext SPROUT_TOWER, MEM_BUFFER_1
 	jump MomPhoneLandmark
 .azalea ; 0xbcf1b
-	landmarktotext SLOWPOKE_WELL, 1
+	landmarktotext SLOWPOKE_WELL, MEM_BUFFER_1
 	jump MomPhoneLandmark
 .goldenrod ; 0xbcf21
-	landmarktotext RADIO_TOWER, 1
+	landmarktotext RADIO_TOWER, MEM_BUFFER_1
 	jump MomPhoneLandmark
 
 MomPhonePalette2: ; 0xbcf27
@@ -75,17 +75,17 @@
 MomSavingMoney: ; 0xbcf37
 	checkflag ENGINE_MOM_SAVING_MONEY
 	iffalse MomIsNotSaving
-	checkmoney $1, 0
-	if_equal $0, MomSavingHasMoney
+	checkmoney MOMS_MONEY, 0
+	if_equal HAVE_MORE, MomSavingHasMoney
 	jump MomSavingButBroke
 
 MomIsNotSaving: ; 0xbcf49
-	checkmoney $1, 0
-	if_equal $0, MomHasMoney
+	checkmoney MOMS_MONEY, 0
+	if_equal HAVE_MORE, MomHasMoney
 	jump MomHasNoMoney
 
 MomSavingHasMoney: ; 0xbcf55
-	readmoney $1, $0
+	readmoney MOMS_MONEY, MEM_BUFFER_0
 	farwritetext MomCheckBalanceText
 	yesorno
 	iftrue MomPhoneSaveMoneyScript
@@ -104,7 +104,7 @@
 	jump MomPhoneWontSaveMoneyScript
 
 MomHasMoney: ; 0xbcf79
-	readmoney $1, $0
+	readmoney MOMS_MONEY, MEM_BUFFER_0
 	farwritetext MomYouveSavedText
 	yesorno
 	iftrue MomPhoneSaveMoneyScript
@@ -172,9 +172,9 @@
 	farwritetext BillPhoneGeneriText
 	buttonsound
 	checkcode VAR_BOXSPACE
-	RAM2MEM $0
-	if_equal $0, .full
-	if_less_than $6, .nearlyfull
+	vartomem MEM_BUFFER_0
+	if_equal 0, .full
+	if_less_than PARTY_LENGTH, .nearlyfull
 	farwritetext BillPhoneNotFullText
 	end
 
@@ -195,7 +195,7 @@
 
 ElmPhoneScript1: ; 0xbd00d
 	checkcode VAR_SPECIALPHONECALL
-	if_equal $1, .pokerus
+	if_equal SPECIALCALL_POKERUS, .pokerus
 	checkevent EVENT_SHOWED_TOGEPI_TO_ELM
 	iftrue .discovery
 	checkevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
@@ -242,8 +242,8 @@
 	end
 
 .discovery ; 0xbd069
-	random $2
-	if_equal $0, .nextdiscovery
+	random 2
+	if_equal 0, .nextdiscovery
 	farwritetext ElmPhoneDiscovery1Text
 	end
 
@@ -258,11 +258,11 @@
 
 ElmPhoneScript2: ; 0xbd081
 	checkcode VAR_SPECIALPHONECALL
-	if_equal $2, .disaster
-	if_equal $3, .assistant
-	if_equal $4, .rocket
-	if_equal $5, .gift
-	if_equal $8, .gift
+	if_equal SPECIALCALL_ROBBED, .disaster
+	if_equal SPECIALCALL_ASSISTANT, .assistant
+	if_equal SPECIALCALL_WEIRDBROADCAST, .rocket
+	if_equal SPECIALCALL_SSTICKET, .gift
+	if_equal SPECIALCALL_MASTERBALL, .gift
 	farwritetext ElmPhonePokerusText
 	specialphonecall SPECIALCALL_NONE
 	end
@@ -299,7 +299,7 @@
 ; Jack
 
 JackPhoneScript1:
-	trainertotext SCHOOLBOY, JACK1, $0
+	trainertotext SCHOOLBOY, JACK1, MEM_BUFFER_0
 	checkflag ENGINE_JACK
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -314,24 +314,24 @@
 	farjump JackPhoneTips
 
 .WantsBattle:
-	landmarktotext NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, MEM_BUFFER_2
 	farjump JackWantsBattleScript
 
 JackPhoneScript2:
-	trainertotext SCHOOLBOY, JACK1, $0
+	trainertotext SCHOOLBOY, JACK1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	farscall PhoneScript_Random2
-	if_equal $0, JackBattleTrivia
+	if_equal 0, JackBattleTrivia
 	checkflag ENGINE_JACK
 	iftrue .WaitingForBattle
 	checkflag ENGINE_JACK_MONDAY_MORNING
 	iftrue .WaitingForBattle
 	farscall PhoneScript_Random2
-	if_equal $0, JackWantsToBattle
+	if_equal 0, JackWantsToBattle
 
 .WaitingForBattle:
 	farscall PhoneScript_Random3
-	if_equal $0, JackFindsRare
+	if_equal 0, JackFindsRare
 	farjump Phone_GenericCall_Male
 
 JackMondayMorning:
@@ -338,7 +338,7 @@
 	setflag ENGINE_JACK_MONDAY_MORNING
 
 JackWantsToBattle:
-	landmarktotext NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, MEM_BUFFER_2
 	setflag ENGINE_JACK
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -351,7 +351,7 @@
 ; Beverly
 
 BeverlyPhoneScript1:
-	trainertotext POKEFANF, BEVERLY1, $0
+	trainertotext POKEFANF, BEVERLY1, MEM_BUFFER_0
 	farscall PhoneScript_AnswerPhone_Female
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue .HasNugget
@@ -358,16 +358,16 @@
 	farjump UnknownScript_0xa0900
 
 .HasNugget:
-	landmarktotext NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, MEM_BUFFER_2
 	farjump UnknownScript_0xa0aa5
 
 BeverlyPhoneScript2:
-	trainertotext POKEFANF, BEVERLY1, $0
+	trainertotext POKEFANF, BEVERLY1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_BEVERLY_HAS_NUGGET
 	iftrue .HasNugget
 	farscall PhoneScript_Random4
-	if_equal $0, .FoundNugget
+	if_equal 0, .FoundNugget
 
 .HasNugget:
 	farjump Phone_GenericCall_Female
@@ -374,13 +374,13 @@
 
 .FoundNugget:
 	setflag ENGINE_BEVERLY_HAS_NUGGET
-	landmarktotext NATIONAL_PARK, $2
+	landmarktotext NATIONAL_PARK, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Female
 
 ; Huey
 
 HueyPhoneScript1:
-	trainertotext SAILOR, HUEY1, $0
+	trainertotext SAILOR, HUEY1, MEM_BUFFER_0
 	checkflag ENGINE_HUEY
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -392,15 +392,15 @@
 	iftrue HueyWednesdayNight
 
 .NotWednesday:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	farjump UnknownScript_0xa0908
 
 .WantsBattle:
-	landmarktotext LIGHTHOUSE, $2
+	landmarktotext LIGHTHOUSE, MEM_BUFFER_2
 	farjump HueyWantsBattleScript
 
 HueyPhoneScript2:
-	trainertotext SAILOR, HUEY1, $0
+	trainertotext SAILOR, HUEY1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_HUEY
 	iftrue .Flavor
@@ -407,8 +407,8 @@
 	checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
 	iftrue .Flavor
 	farscall PhoneScript_Random3
-	if_equal $0, HueyWantsBattle
-	if_equal $1, HueyWantsBattle
+	if_equal 0, HueyWantsBattle
+	if_equal 1, HueyWantsBattle
 
 .Flavor:
 	farjump PhoneScript_MonFlavorText
@@ -417,7 +417,7 @@
 	setflag ENGINE_HUEY_WEDNESDAY_NIGHT
 
 HueyWantsBattle:
-	landmarktotext LIGHTHOUSE, $2
+	landmarktotext LIGHTHOUSE, MEM_BUFFER_2
 	setflag ENGINE_HUEY
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -424,7 +424,7 @@
 ; Gaven
 
 GavenPhoneScript1:
-	trainertotext COOLTRAINERM, GAVEN3, $0
+	trainertotext COOLTRAINERM, GAVEN3, MEM_BUFFER_0
 	checkflag ENGINE_GAVEN
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -439,11 +439,11 @@
 	farjump UnknownScript_0xa0910
 
 .WantsBattle:
-	landmarktotext ROUTE_26, $2
+	landmarktotext ROUTE_26, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a37
 
 GavenPhoneScript2:
-	trainertotext COOLTRAINERM, GAVEN3, $0
+	trainertotext COOLTRAINERM, GAVEN3, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_GAVEN
 	iftrue .WaitingForBattle
@@ -450,11 +450,11 @@
 	checkflag ENGINE_GAVEN_THURSDAY_MORNING
 	iftrue .WaitingForBattle
 	farscall PhoneScript_Random2
-	if_equal $0, GavenWantsRematch
+	if_equal 0, GavenWantsRematch
 
 .WaitingForBattle:
 	farscall PhoneScript_Random3
-	if_equal $0, GavenFoundRare
+	if_equal 0, GavenFoundRare
 	farjump Phone_GenericCall_Male
 
 GavenThursdayMorning:
@@ -461,7 +461,7 @@
 	setflag ENGINE_GAVEN_THURSDAY_MORNING
 
 GavenWantsRematch:
-	landmarktotext ROUTE_26, $2
+	landmarktotext ROUTE_26, MEM_BUFFER_2
 	setflag ENGINE_GAVEN
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -471,7 +471,7 @@
 ; Beth
 
 BethPhoneScript1:
-	trainertotext COOLTRAINERF, BETH1, $0
+	trainertotext COOLTRAINERF, BETH1, MEM_BUFFER_0
 	checkflag ENGINE_BETH
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -486,11 +486,11 @@
 	farjump UnknownScript_0xa0918
 
 .WantsBattle:
-	landmarktotext ROUTE_26, $2
+	landmarktotext ROUTE_26, MEM_BUFFER_2
 	farjump BethBattleReminderScript
 
 BethPhoneScript2:
-	trainertotext COOLTRAINERF, BETH1, $0
+	trainertotext COOLTRAINERF, BETH1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_BETH
 	iftrue .Generic
@@ -497,7 +497,7 @@
 	checkflag ENGINE_BETH_FRIDAY_AFTERNOON
 	iftrue .Generic
 	farscall PhoneScript_Random2
-	if_equal $0, BethWantsBattle
+	if_equal 0, BethWantsBattle
 
 .Generic:
 	farjump Phone_GenericCall_Female
@@ -506,7 +506,7 @@
 	setflag ENGINE_BETH_FRIDAY_AFTERNOON
 
 BethWantsBattle:
-	landmarktotext ROUTE_26, $2
+	landmarktotext ROUTE_26, MEM_BUFFER_2
 	setflag ENGINE_BETH
 	farjump PhoneScript_WantsToBattle_Female
 
@@ -513,7 +513,7 @@
 ; Jose
 
 JosePhoneScript1:
-	trainertotext BIRD_KEEPER, JOSE2, $0
+	trainertotext BIRD_KEEPER, JOSE2, MEM_BUFFER_0
 	checkflag ENGINE_JOSE
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -530,15 +530,15 @@
 	farjump UnknownScript_0xa0920
 
 .WantsBattle:
-	landmarktotext ROUTE_27, $2
+	landmarktotext ROUTE_27, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a41
 
 .HasItem:
-	landmarktotext ROUTE_27, $2
+	landmarktotext ROUTE_27, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a41
 
 JosePhoneScript2:
-	trainertotext BIRD_KEEPER, JOSE2, $0
+	trainertotext BIRD_KEEPER, JOSE2, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_JOSE
 	iftrue .Generic
@@ -547,13 +547,13 @@
 	checkflag ENGINE_JOSE_HAS_STAR_PIECE
 	iftrue .Generic
 	farscall PhoneScript_Random3
-	if_equal $0, JoseWantsBattle
+	if_equal 0, JoseWantsBattle
 	farscall PhoneScript_Random3
-	if_equal $0, JoseHasStarPiece
+	if_equal 0, JoseHasStarPiece
 
 .Generic:
 	farscall PhoneScript_Random3
-	if_equal $0, JoseFoundRare
+	if_equal 0, JoseFoundRare
 	farjump Phone_GenericCall_Male
 
 JoseSaturdayNight:
@@ -560,7 +560,7 @@
 	setflag ENGINE_JOSE_SATURDAY_NIGHT
 
 JoseWantsBattle:
-	landmarktotext ROUTE_27, $2
+	landmarktotext ROUTE_27, MEM_BUFFER_2
 	setflag ENGINE_JOSE
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -569,13 +569,13 @@
 
 JoseHasStarPiece:
 	setflag ENGINE_JOSE_HAS_STAR_PIECE
-	landmarktotext ROUTE_27, $2
+	landmarktotext ROUTE_27, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Male
 
 ; Reena
 
 ReenaPhoneScript1:
-	trainertotext COOLTRAINERF, REENA1, $0
+	trainertotext COOLTRAINERF, REENA1, MEM_BUFFER_0
 	checkflag ENGINE_REENA
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -590,11 +590,11 @@
 	farjump UnknownScript_0xa0928
 
 .WantsBattle:
-	landmarktotext ROUTE_27, $2
+	landmarktotext ROUTE_27, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a46
 
 ReenaPhoneScript2:
-	trainertotext COOLTRAINERF, REENA1, $0
+	trainertotext COOLTRAINERF, REENA1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_REENA
 	iftrue .Generic
@@ -601,7 +601,7 @@
 	checkflag ENGINE_REENA_SUNDAY_MORNING
 	iftrue .Generic
 	farscall PhoneScript_Random2
-	if_equal $0, ReenaWantsBattle
+	if_equal 0, ReenaWantsBattle
 
 .Generic:
 	farjump Phone_GenericCall_Female
@@ -610,7 +610,7 @@
 	setflag ENGINE_REENA_SUNDAY_MORNING
 
 ReenaWantsBattle:
-	landmarktotext ROUTE_27, $2
+	landmarktotext ROUTE_27, MEM_BUFFER_2
 	setflag ENGINE_REENA
 	farjump PhoneScript_WantsToBattle_Female
 
@@ -617,7 +617,7 @@
 ; Joey
 
 JoeyPhoneScript1:
-	trainertotext YOUNGSTER, JOEY1, $0
+	trainertotext YOUNGSTER, JOEY1, MEM_BUFFER_0
 	checkflag ENGINE_JOEY
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -629,15 +629,15 @@
 	iftrue JoeyMondayAfternoon
 
 .NotMonday:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	farjump UnknownScript_0xa0930
 
 .WantsBattle:
-	landmarktotext ROUTE_30, $2
+	landmarktotext ROUTE_30, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a4b
 
 JoeyPhoneScript2:
-	trainertotext YOUNGSTER, JOEY1, $0
+	trainertotext YOUNGSTER, JOEY1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_JOEY
 	iftrue .Generic
@@ -644,8 +644,8 @@
 	checkflag ENGINE_JOEY_MONDAY_AFTERNOON
 	iftrue .Generic
 	farscall PhoneScript_Random3
-	if_equal $0, JoeyWantsBattle
-	if_equal $1, JoeyWantsBattle
+	if_equal 0, JoeyWantsBattle
+	if_equal 1, JoeyWantsBattle
 
 .Generic:
 	farjump Phone_GenericCall_Male
@@ -654,7 +654,7 @@
 	setflag ENGINE_JOEY_MONDAY_AFTERNOON
 
 JoeyWantsBattle:
-	landmarktotext ROUTE_30, $2
+	landmarktotext ROUTE_30, MEM_BUFFER_2
 	setflag ENGINE_JOEY
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -661,7 +661,7 @@
 ; Wade
 
 WadePhoneScript1:
-	trainertotext BUG_CATCHER, WADE1, $0
+	trainertotext BUG_CATCHER, WADE1, MEM_BUFFER_0
 	checkflag ENGINE_WADE
 	iftrue WadeWantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -676,7 +676,7 @@
 
 .NotTuesday:
 	farscall PhoneScript_Random2
-	if_equal $0, .NoContest
+	if_equal 0, .NoContest
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue .NoContest
 	checkcode VAR_WEEKDAY
@@ -691,18 +691,18 @@
 	farjump PhoneScript_BugCatchingContest
 
 WadeWantsBattle:
-	landmarktotext ROUTE_31, $2
+	landmarktotext ROUTE_31, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a50
 
 WadeHasItem:
-	landmarktotext ROUTE_31, $2
+	landmarktotext ROUTE_31, MEM_BUFFER_2
 	farjump UnknownScript_0xa0ab5
 
 WadePhoneScript2:
-	trainertotext BUG_CATCHER, WADE1, $0
+	trainertotext BUG_CATCHER, WADE1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	farscall PhoneScript_Random2
-	if_equal $0, .NoContest
+	if_equal 0, .NoContest
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue .NoContest
 	checkcode VAR_WEEKDAY
@@ -718,15 +718,15 @@
 	checkflag ENGINE_WADE_HAS_ITEM
 	iftrue .next
 	farscall PhoneScript_Random2
-	if_equal $0, WadeHasItem2
+	if_equal 0, WadeHasItem2
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse .next
 	farscall PhoneScript_Random2
-	if_equal $0, WadeWantsBattle2
+	if_equal 0, WadeWantsBattle2
 
 .next:
 	farscall PhoneScript_Random3
-	if_equal $0, WadeFoundRare
+	if_equal 0, WadeFoundRare
 	farjump Phone_GenericCall_Male
 
 Wade_ContestToday:
@@ -736,7 +736,7 @@
 	setflag ENGINE_WADE_TUESDAY_NIGHT
 
 WadeWantsBattle2:
-	landmarktotext ROUTE_31, $2
+	landmarktotext ROUTE_31, MEM_BUFFER_2
 	setflag ENGINE_WADE
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -745,16 +745,16 @@
 
 WadeHasItem2:
 	setflag ENGINE_WADE_HAS_ITEM
-	landmarktotext ROUTE_31, $2
+	landmarktotext ROUTE_31, MEM_BUFFER_2
 	clearevent EVENT_WADE_HAS_BERRY
 	clearevent EVENT_WADE_HAS_PSNCUREBERRY
 	clearevent EVENT_WADE_HAS_PRZCUREBERRY
 	clearevent EVENT_WADE_HAS_BITTER_BERRY
-	random $4
-	if_equal $0, .Berry
-	if_equal $1, .PsnCureBerry
-	if_equal $2, .PrzCureBerry
-	if_equal $3, .Bitterberry
+	random 4
+	if_equal 0, .Berry
+	if_equal 1, .PsnCureBerry
+	if_equal 2, .PrzCureBerry
+	if_equal 3, .Bitterberry
 
 .Berry:
 	setevent EVENT_WADE_HAS_BERRY
@@ -777,7 +777,7 @@
 ; Ralph
 
 RalphPhoneScript1:
-	trainertotext FISHER, RALPH1, $0
+	trainertotext FISHER, RALPH1, MEM_BUFFER_0
 	checkflag ENGINE_RALPH
 	iftrue Ralph_Rematch
 	farscall PhoneScript_AnswerPhone_Male
@@ -793,15 +793,15 @@
 	farjump UnknownScript_0xa0940
 
 Ralph_Rematch:
-	landmarktotext ROUTE_32, $2
+	landmarktotext ROUTE_32, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a55
 
 Ralph_ReportSwarm:
-	landmarktotext ROUTE_32, $2
+	landmarktotext ROUTE_32, MEM_BUFFER_2
 	farjump UnknownScript_0xa0af5
 
 RalphPhoneScript2:
-	trainertotext FISHER, RALPH1, $0
+	trainertotext FISHER, RALPH1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse Ralph_CheckSwarm2
@@ -810,16 +810,16 @@
 	checkflag ENGINE_RALPH_WEDNESDAY_MORNING
 	iftrue Ralph_CheckSwarm2
 	farscall PhoneScript_Random2
-	if_equal $0, Ralph_FightMe
+	if_equal 0, Ralph_FightMe
 Ralph_CheckSwarm2:
 	farscall PhoneScript_Random5
-	if_equal $0, Ralph_SetUpSwarm
+	if_equal 0, Ralph_SetUpSwarm
 	farjump Phone_GenericCall_Male
 
 Ralph_WednesdayMorning:
 	setflag ENGINE_RALPH_WEDNESDAY_MORNING
 Ralph_FightMe:
-	landmarktotext ROUTE_32, $2
+	landmarktotext ROUTE_32, MEM_BUFFER_2
 	setflag ENGINE_RALPH
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -827,8 +827,8 @@
 	checkflag ENGINE_SPECIAL_WILDDATA
 	iftrue .Generic
 	setflag ENGINE_SPECIAL_WILDDATA
-	pokenamemem QWILFISH, $1
-	landmarktotext ROUTE_32, $2
+	pokenamemem QWILFISH, MEM_BUFFER_1
+	landmarktotext ROUTE_32, MEM_BUFFER_2
 	writebyte FISHSWARM_QWILFISH
 	special Special_ActivateFishingSwarm
 	farjump UnknownScript_0xa05d6
@@ -839,7 +839,7 @@
 ; Liz
 
 LizPhoneScript1:
-	trainertotext PICNICKER, LIZ1, $0
+	trainertotext PICNICKER, LIZ1, MEM_BUFFER_0
 	checkflag ENGINE_LIZ
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -851,17 +851,17 @@
 	iftrue LizThursdayAfternoon
 
 .NotThursday:
-	special RandomPhoneMon
+	special Special_RandomPhoneMon
 	farjump UnknownScript_0xa0948
 
 .WantsBattle:
-	landmarktotext ROUTE_32, $2
+	landmarktotext ROUTE_32, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a5a
 
 LizPhoneScript2:
-	trainertotext PICNICKER, LIZ1, $0
+	trainertotext PICNICKER, LIZ1, MEM_BUFFER_0
 	farscall PhoneScript_Random4
-	if_equal $0, LizWrongNumber
+	if_equal 0, LizWrongNumber
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_LIZ
 	iftrue .next
@@ -870,11 +870,11 @@
 
 .next:
 	farscall PhoneScript_Random2
-	if_equal $0, LizGossip
+	if_equal 0, LizGossip
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse .Generic
 	farscall PhoneScript_Random2
-	if_equal $0, LizWantsBattle
+	if_equal 0, LizWantsBattle
 
 .Generic:
 	farjump Phone_GenericCall_Female
@@ -883,7 +883,7 @@
 	setflag ENGINE_LIZ_THURSDAY_AFTERNOON
 
 LizWantsBattle:
-	landmarktotext ROUTE_32, $2
+	landmarktotext ROUTE_32, MEM_BUFFER_2
 	setflag ENGINE_LIZ
 	farjump PhoneScript_WantsToBattle_Female
 
@@ -891,51 +891,51 @@
 	farjump LizWrongNumberScript
 
 LizGossip:
-	random $9
-	if_equal $0, .CoolTrainerM
-	if_equal $1, .Beauty
-	if_equal $2, .Grunt
-	if_equal $3, .Teacher
-	if_equal $4, .SwimmerF
-	if_equal $5, .KimonoGirl
-	if_equal $6, .Skier
-	if_equal $7, .Medium
-	if_equal $8, .PokefanM
+	random 9
+	if_equal 0, .CoolTrainerM
+	if_equal 1, .Beauty
+	if_equal 2, .Grunt
+	if_equal 3, .Teacher
+	if_equal 4, .SwimmerF
+	if_equal 5, .KimonoGirl
+	if_equal 6, .Skier
+	if_equal 7, .Medium
+	if_equal 8, .PokefanM
 
 .CoolTrainerM:
-	trainerclassname COOLTRAINERM, $1
+	trainerclassname COOLTRAINERM, NICK
 	jump LizGossipScript
 
 .Beauty:
-	trainerclassname BEAUTY, $1
+	trainerclassname BEAUTY, VICTORIA
 	jump LizGossipScript
 
 .Grunt:
-	trainerclassname GRUNTM, $1
+	trainerclassname GRUNTM, GRUNTM_1
 	jump LizGossipScript
 
 .Teacher:
-	trainerclassname TEACHER, $1
+	trainerclassname TEACHER, COLETTE
 	jump LizGossipScript
 
 .SwimmerF:
-	trainerclassname SWIMMERF, $1
+	trainerclassname SWIMMERF, ELAINE
 	jump LizGossipScript
 
 .KimonoGirl:
-	trainerclassname KIMONO_GIRL, $1
+	trainerclassname KIMONO_GIRL, NAOKO1
 	jump LizGossipScript
 
 .Skier:
-	trainerclassname SKIER, $1
+	trainerclassname SKIER, ROXANNE
 	jump LizGossipScript
 
 .Medium:
-	trainerclassname MEDIUM, $1
+	trainerclassname MEDIUM, MARTHA
 	jump LizGossipScript
 
 .PokefanM:
-	trainerclassname POKEFANM, $1
+	trainerclassname POKEFANM, WILLIAM
 	jump LizGossipScript
 
 LizGossipScript:
@@ -944,7 +944,7 @@
 ; Anthony
 
 AnthonyPhoneScript1:
-	trainertotext HIKER, ANTHONY2, $0
+	trainertotext HIKER, ANTHONY2, MEM_BUFFER_0
 	checkflag ENGINE_ANTHONY
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -961,15 +961,15 @@
 	farjump UnknownScript_0xa0950
 
 .WantsBattle:
-	landmarktotext ROUTE_33, $2
+	landmarktotext ROUTE_33, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a5f
 
 .AlreadySwarming:
-	landmarktotext ROUTE_33, $2
+	landmarktotext ROUTE_33, MEM_BUFFER_2
 	farjump UnknownScript_0xa0afa
 
 AnthonyPhoneScript2:
-	trainertotext HIKER, ANTHONY2, $0
+	trainertotext HIKER, ANTHONY2, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse .TriesSwarm
@@ -978,11 +978,11 @@
 	checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
 	iftrue .TriesSwarm
 	farscall PhoneScript_Random2
-	if_equal $0, AnthonyWantsBattle
+	if_equal 0, AnthonyWantsBattle
 
 .TriesSwarm:
 	farscall PhoneScript_Random5
-	if_equal $0, AnthonyTriesDunsparceSwarm
+	if_equal 0, AnthonyTriesDunsparceSwarm
 	farjump Phone_GenericCall_Male
 
 AnthonyFridayNight:
@@ -989,7 +989,7 @@
 	setflag ENGINE_ANTHONY_FRIDAY_NIGHT
 
 AnthonyWantsBattle:
-	landmarktotext ROUTE_33, $2
+	landmarktotext ROUTE_33, MEM_BUFFER_2
 	setflag ENGINE_ANTHONY
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -997,9 +997,9 @@
 	checkflag ENGINE_DUNSPARCE_SWARM
 	iftrue .Generic
 	setflag ENGINE_DUNSPARCE_SWARM
-	pokenamemem DUNSPARCE, $1
+	pokenamemem DUNSPARCE, MEM_BUFFER_1
 	swarm SWARM_DUNSPARCE, DARK_CAVE_VIOLET_ENTRANCE
-	landmarktotext DARK_CAVE, $2
+	landmarktotext DARK_CAVE, MEM_BUFFER_2
 	farjump UnknownScript_0xa05de
 
 .Generic:
@@ -1008,7 +1008,7 @@
 ; Todd
 
 ToddPhoneScript1:
-	trainertotext CAMPER, TODD1, $0
+	trainertotext CAMPER, TODD1, MEM_BUFFER_0
 	checkflag ENGINE_TODD
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1025,7 +1025,7 @@
 	farjump UnknownScript_0xa0958
 
 .WantsBattle:
-	landmarktotext ROUTE_34, $2
+	landmarktotext ROUTE_34, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a64
 
 .SaleOn:
@@ -1032,7 +1032,7 @@
 	farjump UnknownScript_0xa0b04
 
 ToddPhoneScript2:
-	trainertotext CAMPER, TODD1, $0
+	trainertotext CAMPER, TODD1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_TODD
 	iftrue .TryForSale
@@ -1041,15 +1041,15 @@
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse ToddNoGoldenrod
 	farscall PhoneScript_Random2
-	if_equal $0, ToddWantsBattle
+	if_equal 0, ToddWantsBattle
 
 .TryForSale:
 	farscall PhoneScript_Random2
-	if_equal $0, ToddDeptStoreSale
+	if_equal 0, ToddDeptStoreSale
 
 ToddNoGoldenrod:
 	farscall PhoneScript_Random3
-	if_equal $0, ToddFoundRare
+	if_equal 0, ToddFoundRare
 	farjump Phone_GenericCall_Male
 
 ToddSaturdayMorning:
@@ -1056,7 +1056,7 @@
 	setflag ENGINE_TODD_SATURDAY_MORNING
 
 ToddWantsBattle:
-	landmarktotext ROUTE_34, $2
+	landmarktotext ROUTE_34, MEM_BUFFER_2
 	setflag ENGINE_TODD
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -1070,7 +1070,7 @@
 ; Gina
 
 GinaPhoneScript1:
-	trainertotext PICNICKER, GINA1, $0
+	trainertotext PICNICKER, GINA1, MEM_BUFFER_0
 	checkflag ENGINE_GINA
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -1092,15 +1092,15 @@
 	farjump UnknownScript_0xa05c6
 
 .WantsBattle:
-	landmarktotext ROUTE_34, $2
+	landmarktotext ROUTE_34, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a69
 
 .HasLeafStone:
-	landmarktotext ROUTE_34, $2
+	landmarktotext ROUTE_34, MEM_BUFFER_2
 	farjump UnknownScript_0xa0abd
 
 GinaPhoneScript2:
-	trainertotext PICNICKER, GINA1, $0
+	trainertotext PICNICKER, GINA1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue GinaRockets
@@ -1113,15 +1113,15 @@
 	checkevent EVENT_GINA_GAVE_LEAF_STONE
 	iftrue .GaveLeafStone
 	farscall PhoneScript_Random2
-	if_equal $0, GinaHasLeafStone
+	if_equal 0, GinaHasLeafStone
 
 .GaveLeafStone:
 	farscall PhoneScript_Random11
-	if_equal $0, GinaHasLeafStone
+	if_equal 0, GinaHasLeafStone
 	checkflag ENGINE_FLYPOINT_GOLDENROD
 	iffalse .Generic
 	farscall PhoneScript_Random3
-	if_equal $0, GinaWantsBattle
+	if_equal 0, GinaWantsBattle
 
 .Generic:
 	farjump Phone_GenericCall_Female
@@ -1130,7 +1130,7 @@
 	setflag ENGINE_GINA_SUNDAY_AFTERNOON
 
 GinaWantsBattle:
-	landmarktotext ROUTE_34, $2
+	landmarktotext ROUTE_34, MEM_BUFFER_2
 	setflag ENGINE_GINA
 	farjump PhoneScript_WantsToBattle_Female
 
@@ -1139,13 +1139,13 @@
 
 GinaHasLeafStone:
 	setflag ENGINE_GINA_HAS_LEAF_STONE
-	landmarktotext ROUTE_34, $2
+	landmarktotext ROUTE_34, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Female
 
 ; Irwin
 
 IrwinPhoneScript1:
-	trainertotext JUGGLER, IRWIN1, $0
+	trainertotext JUGGLER, IRWIN1, MEM_BUFFER_0
 	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue .Rockets
@@ -1155,7 +1155,7 @@
 	farjump IrwinRocketRumor
 
 IrwinPhoneScript2:
-	trainertotext JUGGLER, IRWIN1, $0
+	trainertotext JUGGLER, IRWIN1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
 	iftrue .Rockets
@@ -1167,7 +1167,7 @@
 ; Arnie
 
 ArniePhoneScript1:
-	trainertotext BUG_CATCHER, ARNIE1, $0
+	trainertotext BUG_CATCHER, ARNIE1, MEM_BUFFER_0
 	checkflag ENGINE_ARNIE
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1184,15 +1184,15 @@
 	farjump UnknownScript_0xa0968
 
 .WantsBattle:
-	landmarktotext ROUTE_35, $2
+	landmarktotext ROUTE_35, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a6e
 
 .AlreadySwarming:
-	landmarktotext ROUTE_35, $2
+	landmarktotext ROUTE_35, MEM_BUFFER_2
 	farjump UnknownScript_0xa0aff
 
 ArniePhoneScript2:
-	trainertotext BUG_CATCHER, ARNIE1, $0
+	trainertotext BUG_CATCHER, ARNIE1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_ARNIE
 	iftrue .Swarm
@@ -1199,13 +1199,13 @@
 	checkflag ENGINE_ARNIE_TUESDAY_MORNING
 	iftrue .Swarm
 	farscall PhoneScript_Random2
-	if_equal $0, ArnieWantsBattle
+	if_equal 0, ArnieWantsBattle
 
 .Swarm:
 	farscall PhoneScript_Random5
-	if_equal $0, ArnieYanmaSwarm
+	if_equal 0, ArnieYanmaSwarm
 	farscall PhoneScript_Random3
-	if_equal $0, ArnieFoundRare
+	if_equal 0, ArnieFoundRare
 	farjump Phone_GenericCall_Male
 
 ArnieTuesdayMorning:
@@ -1212,7 +1212,7 @@
 	setflag ENGINE_ARNIE_TUESDAY_MORNING
 
 ArnieWantsBattle:
-	landmarktotext ROUTE_35, $2
+	landmarktotext ROUTE_35, MEM_BUFFER_2
 	setflag ENGINE_ARNIE
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -1220,9 +1220,9 @@
 	checkflag ENGINE_YANMA_SWARM
 	iftrue ArnieYanmaAlreadySwarming
 	setflag ENGINE_YANMA_SWARM
-	pokenamemem YANMA, $1
+	pokenamemem YANMA, MEM_BUFFER_1
 	swarm SWARM_YANMA, ROUTE_35
-	landmarktotext ROUTE_35, $2
+	landmarktotext ROUTE_35, MEM_BUFFER_2
 	farjump UnknownScript_0xa05ce
 
 ArnieFoundRare:
@@ -1234,7 +1234,7 @@
 ; Alan
 
 AlanPhoneScript1:
-	trainertotext SCHOOLBOY, ALAN1, $0
+	trainertotext SCHOOLBOY, ALAN1, MEM_BUFFER_0
 	checkflag ENGINE_ALAN
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1251,15 +1251,15 @@
 	farjump UnknownScript_0xa0970
 
 .WantsBattle:
-	landmarktotext ROUTE_36, $2
+	landmarktotext ROUTE_36, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a73
 
 .FireStone:
-	landmarktotext ROUTE_36, $2
+	landmarktotext ROUTE_36, MEM_BUFFER_2
 	farjump UnknownScript_0xa0ac5
 
 AlanPhoneScript2:
-	trainertotext SCHOOLBOY, ALAN1, $0
+	trainertotext SCHOOLBOY, ALAN1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_ALAN
 	iftrue AlanGenericCall
@@ -1268,15 +1268,15 @@
 	checkflag ENGINE_ALAN_HAS_FIRE_STONE
 	iftrue AlanGenericCall
 	farscall PhoneScript_Random3
-	if_equal $0, AlanWantsBattle
+	if_equal 0, AlanWantsBattle
 	checkevent EVENT_ALAN_GAVE_FIRE_STONE
 	iftrue .FireStone
 	farscall PhoneScript_Random2
-	if_equal $0, AlanHasFireStone
+	if_equal 0, AlanHasFireStone
 
 .FireStone:
 	farscall PhoneScript_Random11
-	if_equal $0, AlanHasFireStone
+	if_equal 0, AlanHasFireStone
 
 AlanGenericCall:
 	farjump Phone_GenericCall_Male
@@ -1285,19 +1285,19 @@
 	setflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
 
 AlanWantsBattle:
-	landmarktotext ROUTE_36, $2
+	landmarktotext ROUTE_36, MEM_BUFFER_2
 	setflag ENGINE_ALAN
 	farjump PhoneScript_WantsToBattle_Male
 
 AlanHasFireStone:
 	setflag ENGINE_ALAN_HAS_FIRE_STONE
-	landmarktotext ROUTE_36, $2
+	landmarktotext ROUTE_36, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Male
 
 ; Dana
 
 DanaPhoneScript1:
-	trainertotext LASS, DANA1, $0
+	trainertotext LASS, DANA1, MEM_BUFFER_0
 	checkflag ENGINE_DANA
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -1314,15 +1314,15 @@
 	farjump UnknownScript_0xa0978
 
 .WantsBattle:
-	landmarktotext ROUTE_38, $2
+	landmarktotext ROUTE_38, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a78
 
 .HasThunderstone:
-	landmarktotext ROUTE_38, $2
+	landmarktotext ROUTE_38, MEM_BUFFER_2
 	farjump UnknownScript_0xa0acd
 
 DanaPhoneScript2:
-	trainertotext LASS, DANA1, $0
+	trainertotext LASS, DANA1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_DANA
 	iftrue .Generic
@@ -1331,19 +1331,19 @@
 	checkflag ENGINE_DANA_HAS_THUNDERSTONE
 	iftrue .Generic
 	farscall PhoneScript_Random3
-	if_equal $0, DanaWantsBattle
+	if_equal 0, DanaWantsBattle
 	checkevent EVENT_DANA_GAVE_THUNDERSTONE
 	iftrue .Thunderstone
 	farscall PhoneScript_Random2
-	if_equal $0, DanaHasThunderstone
+	if_equal 0, DanaHasThunderstone
 
 .Thunderstone:
 	farscall PhoneScript_Random11
-	if_equal $0, DanaHasThunderstone
+	if_equal 0, DanaHasThunderstone
 
 .Generic:
 	farscall PhoneScript_Random3
-	if_equal $0, DanaFoundRare
+	if_equal 0, DanaFoundRare
 	farjump Phone_GenericCall_Female
 
 DanaThursdayNight:
@@ -1350,7 +1350,7 @@
 	setflag ENGINE_DANA_THURSDAY_NIGHT
 
 DanaWantsBattle:
-	landmarktotext ROUTE_38, $2
+	landmarktotext ROUTE_38, MEM_BUFFER_2
 	setflag ENGINE_DANA
 	farjump PhoneScript_WantsToBattle_Female
 
@@ -1359,13 +1359,13 @@
 
 DanaHasThunderstone:
 	setflag ENGINE_DANA_HAS_THUNDERSTONE
-	landmarktotext ROUTE_38, $2
+	landmarktotext ROUTE_38, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Female
 
 ; Chad
 
 ChadPhoneScript1:
-	trainertotext SCHOOLBOY, CHAD1, $0
+	trainertotext SCHOOLBOY, CHAD1, MEM_BUFFER_0
 	checkflag ENGINE_CHAD
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1380,24 +1380,24 @@
 	farjump UnknownScript_0xa0980
 
 .WantsBattle:
-	landmarktotext ROUTE_38, $2
+	landmarktotext ROUTE_38, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a7d
 
 ChadPhoneScript2:
-	trainertotext SCHOOLBOY, CHAD1, $0
+	trainertotext SCHOOLBOY, CHAD1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	farscall PhoneScript_Random2
-	if_equal $0, ChadOakGossip
+	if_equal 0, ChadOakGossip
 	checkflag ENGINE_CHAD
 	iftrue .Generic
 	checkflag ENGINE_CHAD_FRIDAY_MORNING
 	iftrue .Generic
 	farscall PhoneScript_Random2
-	if_equal $0, ChadWantsBattle
+	if_equal 0, ChadWantsBattle
 
 .Generic:
 	farscall PhoneScript_Random3
-	if_equal $0, ChadFoundRare
+	if_equal 0, ChadFoundRare
 	farjump Phone_GenericCall_Male
 
 ChadFridayMorning:
@@ -1404,7 +1404,7 @@
 	setflag ENGINE_CHAD_FRIDAY_MORNING
 
 ChadWantsBattle:
-	landmarktotext ROUTE_38, $2
+	landmarktotext ROUTE_38, MEM_BUFFER_2
 	setflag ENGINE_CHAD
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -1415,12 +1415,12 @@
 	farjump ChadOakGossipScript
 
 DerekPhoneScript1:
-	trainertotext POKEFANM, DEREK1, $0
+	trainertotext POKEFANM, DEREK1, MEM_BUFFER_0
 	farscall PhoneScript_AnswerPhone_Male
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue .Nugget
 	farscall PhoneScript_Random2
-	if_equal $0, .NoContest
+	if_equal 0, .NoContest
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue .NoContest
 	checkcode VAR_WEEKDAY
@@ -1435,14 +1435,14 @@
 	farjump PhoneScript_BugCatchingContest
 
 .Nugget:
-	landmarktotext ROUTE_39, $2
+	landmarktotext ROUTE_39, MEM_BUFFER_2
 	farjump UnknownScript_0xa0ad5
 
 DerekPhoneScript2:
-	trainertotext POKEFANM, DEREK1, $0
+	trainertotext POKEFANM, DEREK1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	farscall PhoneScript_Random2
-	if_equal $0, .NoContest
+	if_equal 0, .NoContest
 	checkflag ENGINE_DAILY_BUG_CONTEST
 	iftrue .NoContest
 	checkcode VAR_WEEKDAY
@@ -1452,7 +1452,7 @@
 
 .NoContest:
 	farscall PhoneScript_Random4
-	if_equal $0, .Nugget
+	if_equal 0, .Nugget
 	farjump Phone_GenericCall_Male
 
 .ContestToday:
@@ -1460,11 +1460,11 @@
 
 .Nugget:
 	setflag ENGINE_DEREK_HAS_NUGGET
-	landmarktotext ROUTE_39, $2
+	landmarktotext ROUTE_39, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Male
 
 TullyPhoneScript1:
-	trainertotext FISHER, TULLY1, $0
+	trainertotext FISHER, TULLY1, MEM_BUFFER_0
 	checkflag ENGINE_TULLY
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1481,15 +1481,15 @@
 	farjump UnknownScript_0xa0990
 
 .WantsBattle:
-	landmarktotext ROUTE_42, $2
+	landmarktotext ROUTE_42, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a82
 
 TullyHasWaterStone:
-	landmarktotext ROUTE_42, $2
+	landmarktotext ROUTE_42, MEM_BUFFER_2
 	farjump UnknownScript_0xa0add
 
 TullyPhoneScript2:
-	trainertotext FISHER, TULLY1, $0
+	trainertotext FISHER, TULLY1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_TULLY
 	iftrue .Generic
@@ -1498,15 +1498,15 @@
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue .Generic
 	farscall PhoneScript_Random3
-	if_equal $0, TullyWantsBattle
+	if_equal 0, TullyWantsBattle
 	checkevent EVENT_TULLY_GAVE_WATER_STONE
 	iftrue .WaterStone
 	farscall PhoneScript_Random2
-	if_equal $0, TullyFoundWaterStone
+	if_equal 0, TullyFoundWaterStone
 
 .WaterStone:
 	farscall PhoneScript_Random11
-	if_equal $0, TullyFoundWaterStone
+	if_equal 0, TullyFoundWaterStone
 
 .Generic:
 	farjump Phone_GenericCall_Male
@@ -1515,17 +1515,17 @@
 	setflag ENGINE_TULLY_SUNDAY_NIGHT
 
 TullyWantsBattle:
-	landmarktotext ROUTE_42, $2
+	landmarktotext ROUTE_42, MEM_BUFFER_2
 	setflag ENGINE_TULLY
 	farjump PhoneScript_WantsToBattle_Male
 
 TullyFoundWaterStone:
 	setflag ENGINE_TULLY_HAS_WATER_STONE
-	landmarktotext ROUTE_42, $2
+	landmarktotext ROUTE_42, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Male
 
 BrentPhoneScript1:
-	trainertotext POKEMANIAC, BRENT1, $0
+	trainertotext POKEMANIAC, BRENT1, MEM_BUFFER_0
 	checkflag ENGINE_BRENT
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1540,20 +1540,20 @@
 	farjump UnknownScript_0xa0998
 
 .WantsBattle:
-	landmarktotext ROUTE_43, $2
+	landmarktotext ROUTE_43, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a87
 
 BrentPhoneScript2:
-	trainertotext POKEMANIAC, BRENT1, $0
+	trainertotext POKEMANIAC, BRENT1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	farscall PhoneScript_Random2
-	if_equal $0, BrentBillTrivia
+	if_equal 0, BrentBillTrivia
 	checkflag ENGINE_BRENT
 	iftrue .Generic
 	checkflag ENGINE_BRENT_MONDAY_MORNING
 	iftrue .Generic
 	farscall PhoneScript_Random2
-	if_equal $0, BrentWantsBattle
+	if_equal 0, BrentWantsBattle
 
 .Generic:
 	farjump Phone_GenericCall_Male
@@ -1562,7 +1562,7 @@
 	setflag ENGINE_BRENT_MONDAY_MORNING
 
 BrentWantsBattle:
-	landmarktotext ROUTE_43, $2
+	landmarktotext ROUTE_43, MEM_BUFFER_2
 	setflag ENGINE_BRENT
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -1570,7 +1570,7 @@
 	farjump BrentBillTriviaScript
 
 TiffanyPhoneScript1:
-	trainertotext PICNICKER, TIFFANY3, $0
+	trainertotext PICNICKER, TIFFANY3, MEM_BUFFER_0
 	checkflag ENGINE_TIFFANY
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -1587,17 +1587,17 @@
 	farjump UnknownScript_0xa09a0
 
 .WantsBattle:
-	landmarktotext ROUTE_43, $2
+	landmarktotext ROUTE_43, MEM_BUFFER_2
 	farjump UnknownScript_0xa0a8c
 
 .HasItem:
-	landmarktotext ROUTE_43, $2
+	landmarktotext ROUTE_43, MEM_BUFFER_2
 	farjump UnknownScript_0xa0ae5
 
 TiffanyPhoneScript2:
-	trainertotext PICNICKER, TIFFANY3, $0
+	trainertotext PICNICKER, TIFFANY3, MEM_BUFFER_0
 	farscall PhoneScript_Random4
-	if_equal $0, TiffanysFamilyMembers
+	if_equal 0, TiffanysFamilyMembers
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_TIFFANY
 	iftrue TiffanyGenericCall
@@ -1606,15 +1606,15 @@
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue TiffanyGenericCall
 	farscall PhoneScript_Random3
-	if_equal $0, TiffanyWantsBattle
+	if_equal 0, TiffanyWantsBattle
 	checkevent EVENT_TIFFANY_GAVE_PINK_BOW
 	iftrue .PinkBow
 	farscall PhoneScript_Random2
-	if_equal $0, TiffanyHasPinkBow
+	if_equal 0, TiffanyHasPinkBow
 
 .PinkBow:
 	farscall PhoneScript_Random11
-	if_equal $0, TiffanyHasPinkBow
+	if_equal 0, TiffanyHasPinkBow
 
 TiffanyGenericCall:
 	farjump Phone_GenericCall_Female
@@ -1623,41 +1623,41 @@
 	setflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
 
 TiffanyWantsBattle:
-	landmarktotext ROUTE_43, $2
+	landmarktotext ROUTE_43, MEM_BUFFER_2
 	setflag ENGINE_TIFFANY
 	farjump PhoneScript_WantsToBattle_Female
 
 TiffanysFamilyMembers:
-	random $6
-	if_equal $0, .Grandma
-	if_equal $1, .Grandpa
-	if_equal $2, .Mom
-	if_equal $3, .Dad
-	if_equal $4, .Sister
-	if_equal $5, .Brother
+	random 6
+	if_equal 0, .Grandma
+	if_equal 1, .Grandpa
+	if_equal 2, .Mom
+	if_equal 3, .Dad
+	if_equal 4, .Sister
+	if_equal 5, .Brother
 
 .Grandma:
-	stringtotext GrandmaString, $1
+	stringtotext GrandmaString, MEM_BUFFER_1
 	jump TiffanysPoorClefairy
 
 .Grandpa:
-	stringtotext GrandpaString, $1
+	stringtotext GrandpaString, MEM_BUFFER_1
 	jump TiffanysPoorClefairy
 
 .Mom:
-	stringtotext MomString, $1
+	stringtotext MomString, MEM_BUFFER_1
 	jump TiffanysPoorClefairy
 
 .Dad:
-	stringtotext DadString, $1
+	stringtotext DadString, MEM_BUFFER_1
 	jump TiffanysPoorClefairy
 
 .Sister:
-	stringtotext SisterString, $1
+	stringtotext SisterString, MEM_BUFFER_1
 	jump TiffanysPoorClefairy
 
 .Brother:
-	stringtotext BrotherString, $1
+	stringtotext BrotherString, MEM_BUFFER_1
 	jump TiffanysPoorClefairy
 
 TiffanysPoorClefairy:
@@ -1665,13 +1665,13 @@
 
 TiffanyHasPinkBow:
 	setflag ENGINE_TIFFANY_HAS_PINK_BOW
-	landmarktotext ROUTE_43, $2
+	landmarktotext ROUTE_43, MEM_BUFFER_2
 	farjump PhoneScript_FoundItem_Female
 
 ; Vance
 
 VancePhoneScript1:
-	trainertotext BIRD_KEEPER, VANCE1, $0
+	trainertotext BIRD_KEEPER, VANCE1, MEM_BUFFER_0
 	checkflag ENGINE_VANCE
 	iftrue VanceWantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1686,11 +1686,11 @@
 	farjump VanceLookingForward
 
 VanceWantsBattle:
-	landmarktotext ROUTE_44, $2
+	landmarktotext ROUTE_44, MEM_BUFFER_2
 	farjump VanceHurryHurry
 
 VancePhoneScript2:
-	trainertotext BIRD_KEEPER, VANCE1, $0
+	trainertotext BIRD_KEEPER, VANCE1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_VANCE
 	iftrue .WantsBattle
@@ -1697,8 +1697,8 @@
 	checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
 	iftrue .WantsBattle
 	farscall PhoneScript_Random3
-	if_equal $0, VanceWantsRematch
-	if_equal $1, VanceWantsRematch
+	if_equal 0, VanceWantsRematch
+	if_equal 1, VanceWantsRematch
 
 .WantsBattle:
 	farjump Phone_GenericCall_Male
@@ -1707,12 +1707,12 @@
 	setflag ENGINE_VANCE_WEDNESDAY_NIGHT
 
 VanceWantsRematch:
-	landmarktotext ROUTE_44, $2
+	landmarktotext ROUTE_44, MEM_BUFFER_2
 	setflag ENGINE_VANCE
 	farjump PhoneScript_WantsToBattle_Male
 
 WiltonPhoneScript1:
-	trainertotext FISHER, WILTON1, $0
+	trainertotext FISHER, WILTON1, MEM_BUFFER_0
 	checkflag ENGINE_WILTON
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1729,15 +1729,15 @@
 	farjump WiltonHaventFoundAnything
 
 .WantsBattle:
-	landmarktotext ROUTE_44, $2
+	landmarktotext ROUTE_44, MEM_BUFFER_2
 	farjump WiltonNotBiting
 
 .HasItem:
-	landmarktotext ROUTE_44, $2
+	landmarktotext ROUTE_44, MEM_BUFFER_2
 	farjump WiltonWantThis
 
 WiltonPhoneScript2:
-	trainertotext FISHER, WILTON1, $0
+	trainertotext FISHER, WILTON1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_WILTON
 	iftrue .GenericCall
@@ -1746,9 +1746,9 @@
 	checkflag ENGINE_WILTON_HAS_ITEM
 	iftrue .GenericCall
 	farscall PhoneScript_Random2
-	if_equal $0, WiltonWantsBattle
+	if_equal 0, WiltonWantsBattle
 	farscall PhoneScript_Random2
-	if_equal $0, WiltonHasItem
+	if_equal 0, WiltonHasItem
 
 .GenericCall:
 	farjump Phone_GenericCall_Male
@@ -1757,20 +1757,20 @@
 	setflag ENGINE_WILTON_THURSDAY_MORNING
 
 WiltonWantsBattle:
-	landmarktotext ROUTE_44, $2
+	landmarktotext ROUTE_44, MEM_BUFFER_2
 	setflag ENGINE_WILTON
 	farjump PhoneScript_WantsToBattle_Male
 
 WiltonHasItem:
 	setflag ENGINE_WILTON_HAS_ITEM
-	landmarktotext ROUTE_44, $2
+	landmarktotext ROUTE_44, MEM_BUFFER_2
 	clearevent EVENT_WILTON_HAS_ULTRA_BALL
 	clearevent EVENT_WILTON_HAS_GREAT_BALL
 	clearevent EVENT_WILTON_HAS_POKE_BALL
-	random $5
-	if_equal $0, .UltraBall
-	random $3
-	if_equal $0, .GreatBall
+	random 5
+	if_equal 0, .UltraBall
+	random 3
+	if_equal 0, .GreatBall
 	jump .PokeBall
 
 .UltraBall:
@@ -1790,12 +1790,12 @@
 ; Kenji
 
 KenjiPhoneScript1:
-	trainertotext BLACKBELT_T, KENJI3, $0
+	trainertotext BLACKBELT_T, KENJI3, MEM_BUFFER_0
 	farscall PhoneScript_AnswerPhone_Male
 	farjump KenjiAnswerPhoneScript
 
 KenjiPhoneScript2:
-	trainertotext BLACKBELT_T, KENJI3, $0
+	trainertotext BLACKBELT_T, KENJI3, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	farjump KenjiCallingPhoneScript
 
@@ -1802,7 +1802,7 @@
 ; Parry
 
 ParryPhoneScript1:
-	trainertotext HIKER, PARRY1, $0
+	trainertotext HIKER, PARRY1, MEM_BUFFER_0
 	checkflag ENGINE_PARRY
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Male
@@ -1817,11 +1817,11 @@
 	farjump ParryBattleWithMe
 
 .WantsBattle:
-	landmarktotext ROUTE_45, $2
+	landmarktotext ROUTE_45, MEM_BUFFER_2
 	farjump ParryHaventYouGottenTo
 
 ParryPhoneScript2:
-	trainertotext HIKER, PARRY1, $0
+	trainertotext HIKER, PARRY1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Male
 	checkflag ENGINE_PARRY
 	iftrue .GenericCall
@@ -1828,8 +1828,8 @@
 	checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
 	iftrue .GenericCall
 	farscall PhoneScript_Random2
-	if_equal $0, ParryWantsBattle
-	if_equal $1, ParryWantsBattle
+	if_equal 0, ParryWantsBattle
+	if_equal 1, ParryWantsBattle
 
 .GenericCall:
 	farjump Phone_GenericCall_Male
@@ -1838,7 +1838,7 @@
 	setflag ENGINE_PARRY_FRIDAY_AFTERNOON
 
 ParryWantsBattle:
-	landmarktotext ROUTE_45, $2
+	landmarktotext ROUTE_45, MEM_BUFFER_2
 	setflag ENGINE_PARRY
 	farjump PhoneScript_WantsToBattle_Male
 
@@ -1845,7 +1845,7 @@
 ; Erin
 
 ErinPhoneScript1:
-	trainertotext PICNICKER, ERIN1, $0
+	trainertotext PICNICKER, ERIN1, MEM_BUFFER_0
 	checkflag ENGINE_ERIN
 	iftrue .WantsBattle
 	farscall PhoneScript_AnswerPhone_Female
@@ -1860,11 +1860,11 @@
 	farjump ErinWorkingHardScript
 
 .WantsBattle:
-	landmarktotext ROUTE_46, $2
+	landmarktotext ROUTE_46, MEM_BUFFER_2
 	farjump ErinComeBattleScript
 
 ErinPhoneScript2:
-	trainertotext PICNICKER, ERIN1, $0
+	trainertotext PICNICKER, ERIN1, MEM_BUFFER_0
 	farscall PhoneScript_GreetPhone_Female
 	checkflag ENGINE_ERIN
 	iftrue .GenericCall
@@ -1871,8 +1871,8 @@
 	checkflag ENGINE_ERIN_SATURDAY_NIGHT
 	iftrue .GenericCall
 	farscall PhoneScript_Random3
-	if_equal $0, ErinWantsBattle
-	if_equal $1, ErinWantsBattle
+	if_equal 0, ErinWantsBattle
+	if_equal 1, ErinWantsBattle
 
 .GenericCall:
 	farjump Phone_GenericCall_Female
@@ -1881,6 +1881,6 @@
 	setflag ENGINE_ERIN_SATURDAY_NIGHT
 
 ErinWantsBattle:
-	landmarktotext ROUTE_46, $2
+	landmarktotext ROUTE_46, MEM_BUFFER_2
 	setflag ENGINE_ERIN
 	farjump PhoneScript_WantsToBattle_Female
--- a/engine/pic_animation.asm
+++ b/engine/pic_animation.asm
@@ -1,6 +1,6 @@
 ; Pic animation arrangement.
 
-AnimateMon_Slow_Normal: ; d0000
+Unused_AnimateMon_Slow_Normal: ; d0000
 	hlcoord 12, 0
 	ld a, [wBattleMode]
 	cp WILD_BATTLE
@@ -249,7 +249,7 @@
 
 PokeAnim_Cry: ; d017a
 	ld a, [wPokeAnimSpecies]
-	call _PlayCry
+	call _PlayMonCry
 	ld a, [wPokeAnimSceneIndex]
 	inc a
 	ld [wPokeAnimSceneIndex], a
@@ -258,7 +258,7 @@
 
 PokeAnim_CryNoWait: ; d0188
 	ld a, [wPokeAnimSpecies]
-	call PlayCry2
+	call PlayMonCry2
 	ld a, [wPokeAnimSceneIndex]
 	inc a
 	ld [wPokeAnimSceneIndex], a
@@ -279,7 +279,7 @@
 PokeAnim_DeinitFrames: ; d01a9
 	ld a, [rSVBK]
 	push af
-	ld a, $2
+	ld a, BANK(wPokeAnimCoord)
 	ld [rSVBK], a
 	call PokeAnim_PlaceGraphic
 	farcall HDMATransferTileMapToWRAMBank3
@@ -335,12 +335,12 @@
 	ld a, d
 	ld [wPokeAnimGraphicStartTile], a
 
-	ld a, $1
+	ld a, BANK(CurPartySpecies)
 	ld hl, CurPartySpecies
 	call GetFarWRAMByte
 	ld [wPokeAnimSpecies], a
 
-	ld a, $1
+	ld a, BANK(UnownLetter)
 	ld hl, UnownLetter
 	call GetFarWRAMByte
 	ld [wPokeAnimUnownLetter], a
@@ -695,7 +695,7 @@
 	ret
 ; d03f4
 
-; XXX
+; unused
 	db 6, 5, 4
 
 .GetTilemap: ; d03f7
@@ -876,7 +876,7 @@
 PokeAnim_SetVBank1: ; d0504
 	ld a, [rSVBK]
 	push af
-	ld a, $2
+	ld a, BANK(wPokeAnimCoord)
 	ld [rSVBK], a
 	xor a
 	ld [hBGMapMode], a
@@ -1024,7 +1024,7 @@
 	ld hl, UnownFramesPointers
 	jr z, .got_frames
 	ld a, [wPokeAnimSpecies]
-	cp CHIKORITA
+	cp JOHTO_POKEMON
 	ld b, BANK(FramesPointers)
 	ld c, BANK(KantoFrames)
 	ld hl, FramesPointers
@@ -1110,10 +1110,11 @@
 	ret
 ; d0669
 
-Predef48: ; d0669 Predef 48
+Unused_HOF_AnimateAlignedFrontpic: ; d0669
 	ld a, $1
 	ld [wBoxAlignment], a
-HOF_AnimateFrontpic: ; d066e Predef 49
+
+HOF_AnimateFrontpic: ; d066e
 	call AnimateMon_CheckIfPokemon
 	jr c, .fail
 	ld h, d
@@ -1121,7 +1122,7 @@
 	push bc
 	push hl
 	ld de, vTiles2
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	pop hl
 	pop bc
 	ld d, 0
--- a/engine/player_gfx.asm
+++ b/engine/player_gfx.asm
@@ -1,5 +1,4 @@
-Function88248: ; 88248
-; XXX
+Unreferenced_Function88248: ; 88248
 	ld c, CAL
 	ld a, [wPlayerGender]
 	bit 0, a
@@ -57,11 +56,11 @@
 	jr .loop
 
 ShowPlayerNamingChoices: ; 88297
-	ld hl, ChrisNameMenuHeader
+	ld hl, ChrisNameMenuDataHeader
 	ld a, [wPlayerGender]
 	bit 0, a
 	jr z, .GotGender
-	ld hl, KrisNameMenuHeader
+	ld hl, KrisNameMenuDataHeader
 .GotGender:
 	call LoadMenuDataHeader
 	call VerticalMenu
@@ -71,7 +70,7 @@
 	call CloseWindow
 	ret
 
-INCLUDE "data/default_names.asm"
+INCLUDE "data/player_names.asm"
 
 GetPlayerNameArray: ; 88318 This Function is never called
 	ld hl, PlayerName
@@ -142,7 +141,7 @@
 	ld b, BANK(ChrisBackpic)
 	ld de, vTiles2 tile $31
 	ld c, 7 * 7
-	predef DecompressPredef
+	predef DecompressGet2bpp
 	ret
 
 HOF_LoadTrainerFrontpic: ; 88840
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -140,7 +140,7 @@
 
 .water
 	ld a, c
-	and 3
+	maskbits NUM_DIRECTIONS
 	ld c, a
 	ld b, 0
 	ld hl, .water_table
@@ -244,7 +244,7 @@
 	ld a, [PlayerDirection]
 	rrca
 	rrca
-	and 3
+	maskbits NUM_DIRECTIONS
 	cp e
 	jr z, .not_turning
 
@@ -316,7 +316,7 @@
 	scf
 	ret
 
-; unused?
+; unused
 	xor a
 	ret
 
@@ -430,7 +430,7 @@
 	ld a, [PlayerDirection]
 	rrca
 	rrca
-	and 3
+	maskbits NUM_DIRECTIONS
 	cp e
 	jr nz, .not_warp
 	call WarpCheck
@@ -559,7 +559,7 @@
 	cp 0
 	ret z
 
-	and 3
+	maskbits NUM_DIRECTIONS
 	ld e, a
 	ld d, 0
 	ld hl, .forced_dpad
--- a/engine/player_object.asm
+++ b/engine/player_object.asm
@@ -589,7 +589,7 @@
 	ld a, [PlayerDirection]
 	srl a
 	srl a
-	and 3
+	maskbits NUM_DIRECTIONS
 	ld e, a
 	ld d, 0
 	ld hl, .movement_data
--- a/engine/player_step.asm
+++ b/engine/player_step.asm
@@ -76,7 +76,7 @@
 	ret
 
 .mobile ; d509 (3:5509)
-	farcall TrainerRankings_StepCount
+	farcall StubbedTrainerRankings_StepCount
 	ret
 
 .fail2 ; d510 (3:5510)
@@ -154,7 +154,7 @@
 	jr nc, .not_overflowed
 	ld a, [wBGMapAnchor + 1]
 	inc a
-	and $3
+	and %11
 	or HIGH(vBGMap0)
 	ld [wBGMapAnchor + 1], a
 .not_overflowed
@@ -185,7 +185,7 @@
 	jr nc, .not_underflowed
 	ld a, [wBGMapAnchor + 1]
 	dec a
-	and $3
+	and %11
 	or HIGH(vBGMap0)
 	ld [wBGMapAnchor + 1], a
 .not_underflowed
--- a/engine/pokedex.asm
+++ /dev/null
@@ -1,2620 +1,0 @@
-	const_def
-	const DEXSTATE_MAIN_SCR
-	const DEXSTATE_UPDATE_MAIN_SCR
-	const DEXSTATE_DEX_ENTRY_SCR
-	const DEXSTATE_UPDATE_DEX_ENTRY_SCR
-	const DEXSTATE_REINIT_DEX_ENTRY_SCR
-	const DEXSTATE_SEARCH_SCR
-	const DEXSTATE_UPDATE_SEARCH_SCR
-	const DEXSTATE_OPTION_SCR
-	const DEXSTATE_UPDATE_OPTION_SCR
-	const DEXSTATE_SEARCH_RESULTS_SCR
-	const DEXSTATE_UPDATE_SEARCH_RESULTS_SCR
-	const DEXSTATE_UNOWN_MODE
-	const DEXSTATE_UPDATE_UNOWN_MODE
-	const DEXSTATE_EXIT
-
-Pokedex: ; 40000
-
-	ld a, [hWX]
-	ld l, a
-	ld a, [hWY]
-	ld h, a
-	push hl
-	ld a, [hSCX]
-	push af
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set NO_TEXT_SCROLL, [hl]
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-
-	xor a
-	ld [hMapAnims], a
-	call InitPokedex
-	call DelayFrame
-
-.main
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .exit
-	call Pokedex_RunJumptable
-	call DelayFrame
-	jr .main
-
-.exit
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	call ClearSprites
-	ld a, [wCurrentDexMode]
-	ld [wLastDexMode], a
-
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	pop af
-	ld [hSCX], a
-	pop hl
-	ld a, l
-	ld [hWX], a
-	ld a, h
-	ld [hWY], a
-	ret
-
-InitPokedex: ; 40063
-	call ClearBGPalettes
-	call ClearSprites
-	call ClearTileMap
-	call Pokedex_LoadGFX
-
-	ld hl, wPokedexDataStart
-	ld bc, wPokedexDataEnd - wPokedexDataStart
-	xor a
-	call ByteFill
-
-	xor a
-	ld [wJumptableIndex], a
-	ld [wDexEntryPrevJumptableIndex], a
-	ld [wcf65], a
-	ld [wcf66], a
-
-	call Pokedex_CheckUnlockedUnownMode
-
-	ld a, [wLastDexMode]
-	ld [wCurrentDexMode], a
-
-	call Pokedex_OrderMonsByMode
-	call Pokedex_InitCursorPosition
-	call Pokedex_GetLandmark
-	farcall DrawDexEntryScreenRightEdge
-	call Pokedex_ResetBGMapMode
-	ret
-
-Pokedex_CheckUnlockedUnownMode: ; 400a2
-	ld a, [wStatusFlags]
-	bit 1, a
-	jr nz, .unlocked
-
-	xor a
-	ld [wUnlockedUnownMode], a
-	ret
-
-.unlocked
-	ld a, TRUE
-	ld [wUnlockedUnownMode], a
-	ret
-
-Pokedex_InitCursorPosition: ; 400b4
-	ld hl, wPokedexOrder
-	ld a, [wLastDexEntry]
-	and a
-	jr z, .done
-	cp NUM_POKEMON + 1
-	jr nc, .done
-
-	ld b, a
-	ld a, [wDexListingEnd]
-	cp $8
-	jr c, .only_one_page
-
-	sub $7
-	ld c, a
-.loop1
-	ld a, b
-	cp [hl]
-	jr z, .done
-	inc hl
-	ld a, [wDexListingScrollOffset]
-	inc a
-	ld [wDexListingScrollOffset], a
-	dec c
-	jr nz, .loop1
-
-.only_one_page
-	ld c, $7
-.loop2
-	ld a, b
-	cp [hl]
-	jr z, .done
-	inc hl
-	ld a, [wDexListingCursor]
-	inc a
-	ld [wDexListingCursor], a
-	dec c
-	jr nz, .loop2
-
-.done
-	ret
-
-Pokedex_GetLandmark: ; 400ed
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetWorldMapLocation
-
-	cp SPECIAL_MAP
-	jr nz, .load
-
-	ld a, [BackupMapGroup]
-	ld b, a
-	ld a, [BackupMapNumber]
-	ld c, a
-	call GetWorldMapLocation
-
-.load
-	ld [wDexCurrentLocation], a
-	ret
-
-Pokedex_RunJumptable: ; 4010b
-	ld a, [wJumptableIndex]
-	ld hl, .Jumptable
-	call Pokedex_LoadPointer
-	jp hl
-
-.Jumptable: ; 40115 (10:4115)
-	dw Pokedex_InitMainScreen
-	dw Pokedex_UpdateMainScreen
-	dw Pokedex_InitDexEntryScreen
-	dw Pokedex_UpdateDexEntryScreen
-	dw Pokedex_ReinitDexEntryScreen
-	dw Pokedex_InitSearchScreen
-	dw Pokedex_UpdateSearchScreen
-	dw Pokedex_InitOptionScreen
-	dw Pokedex_UpdateOptionScreen
-	dw Pokedex_InitSearchResultsScreen
-	dw Pokedex_UpdateSearchResultsScreen
-	dw Pokedex_InitUnownMode
-	dw Pokedex_UpdateUnownMode
-	dw Pokedex_Exit
-
-Pokedex_IncrementDexPointer: ; 40131 (10:4131)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Pokedex_Exit: ; 40136 (10:4136)
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Pokedex_InitMainScreen: ; 4013c (10:413c)
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	xor a
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	call ByteFill
-	farcall DrawPokedexListWindow
-	hlcoord 0, 17
-	ld de, String_START_SEARCH
-	call Pokedex_PlaceString
-	ld a, 7
-	ld [wDexListingHeight], a
-	call Pokedex_PrintListing
-	call Pokedex_SetBGMapMode_3ifDMG_4ifCGB
-	call Pokedex_ResetBGMapMode
-	call Pokedex_DrawMainScreenBG
-	ld a, $5
-	ld [hSCX], a
-
-	ld a, [wCurrentDexMode]
-	cp DEXMODE_OLD
-	ld a, $4a
-	jr z, .okay
-	ld a, $47
-.okay
-	ld [hWX], a
-	xor a
-	ld [hWY], a
-	call WaitBGMap
-
-	call Pokedex_ResetBGMapMode
-	ld a, -1
-	ld [CurPartySpecies], a
-	ld a, SCGB_POKEDEX
-	call Pokedex_GetSGBLayout
-	call Pokedex_UpdateCursorOAM
-	farcall DrawPokedexListWindow
-	hlcoord 0, 17
-	ld de, String_START_SEARCH
-	call Pokedex_PlaceString
-	ld a, 7
-	ld [wDexListingHeight], a
-	call Pokedex_PrintListing
-	call Pokedex_IncrementDexPointer
-	ret
-
-Pokedex_UpdateMainScreen: ; 401ae (10:41ae)
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [hl]
-	and SELECT
-	jr nz, .select
-	ld a, [hl]
-	and START
-	jr nz, .start
-	call Pokedex_ListingHandleDPadInput
-	ret nc
-	call Pokedex_UpdateCursorOAM
-	xor a
-	ld [hBGMapMode], a
-	call Pokedex_PrintListing
-	call Pokedex_SetBGMapMode3
-	call Pokedex_ResetBGMapMode
-	ret
-
-.a
-	call Pokedex_GetSelectedMon
-	call Pokedex_CheckSeen
-	ret z
-	ld a, DEXSTATE_DEX_ENTRY_SCR
-	ld [wJumptableIndex], a
-	ld a, DEXSTATE_MAIN_SCR
-	ld [wDexEntryPrevJumptableIndex], a
-	ret
-
-.select
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_OPTION_SCR
-	ld [wJumptableIndex], a
-	xor a
-	ld [hSCX], a
-	ld a, $a7
-	ld [hWX], a
-	call DelayFrame
-	ret
-
-.start
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_SEARCH_SCR
-	ld [wJumptableIndex], a
-	xor a
-	ld [hSCX], a
-	ld a, $a7
-	ld [hWX], a
-	call DelayFrame
-	ret
-
-.b
-	ld a, DEXSTATE_EXIT
-	ld [wJumptableIndex], a
-	ret
-
-Pokedex_InitDexEntryScreen: ; 40217 (10:4217)
-	call LowVolume
-	xor a
-	ld [wPokedexStatus], a
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Pokedex_LoadCurrentFootprint
-	call Pokedex_DrawDexEntryScreenBG
-	call Pokedex_InitArrowCursor
-	call Pokedex_GetSelectedMon
-	ld [wLastDexEntry], a
-	farcall DisplayDexEntry
-	call Pokedex_DrawFootprint
-	call WaitBGMap
-	ld a, $a7
-	ld [hWX], a
-	call Pokedex_GetSelectedMon
-	ld [CurPartySpecies], a
-	ld a, SCGB_POKEDEX
-	call Pokedex_GetSGBLayout
-	ld a, [CurPartySpecies]
-	call PlayCry
-	call Pokedex_IncrementDexPointer
-	ret
-
-Pokedex_UpdateDexEntryScreen: ; 40258 (10:4258)
-	ld de, DexEntryScreen_ArrowCursorData
-	call Pokedex_MoveArrowCursor
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .return_to_prev_screen
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .do_menu_action
-	call Pokedex_NextOrPreviousDexEntry
-	ret nc
-	call Pokedex_IncrementDexPointer
-	ret
-
-.do_menu_action
-	ld a, [wDexArrowCursorPosIndex]
-	ld hl, DexEntryScreen_MenuActionJumptable
-	call Pokedex_LoadPointer
-	jp hl
-
-.return_to_prev_screen
-	ld a, [LastVolume]
-	and a
-	jr z, .max_volume
-	ld a, $77
-	ld [LastVolume], a
-
-.max_volume
-	call MaxVolume
-	ld a, [wDexEntryPrevJumptableIndex]
-	ld [wJumptableIndex], a
-	ret
-
-Pokedex_Page: ; 40292
-	ld a, [wPokedexStatus]
-	xor $1
-	ld [wPokedexStatus], a
-	call Pokedex_GetSelectedMon
-	ld [wLastDexEntry], a
-	farcall DisplayDexEntry
-	call WaitBGMap
-	ret
-
-Pokedex_ReinitDexEntryScreen: ; 402aa (10:42aa)
-; Reinitialize the Pokédex entry screen after changing the selected mon.
-	call Pokedex_BlackOutBG
-	xor a
-	ld [wPokedexStatus], a
-	xor a
-	ld [hBGMapMode], a
-	call Pokedex_DrawDexEntryScreenBG
-	call Pokedex_InitArrowCursor
-	call Pokedex_LoadCurrentFootprint
-	call Pokedex_GetSelectedMon
-	ld [wLastDexEntry], a
-	farcall DisplayDexEntry
-	call Pokedex_DrawFootprint
-	call Pokedex_LoadSelectedMonTiles
-	call WaitBGMap
-	call Pokedex_GetSelectedMon
-	ld [CurPartySpecies], a
-	ld a, SCGB_POKEDEX
-	call Pokedex_GetSGBLayout
-	ld a, [CurPartySpecies]
-	call PlayCry
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-DexEntryScreen_ArrowCursorData: ; 402e8
-	db D_RIGHT | D_LEFT, 4
-	dwcoord 1, 17
-	dwcoord 6, 17
-	dwcoord 11, 17
-	dwcoord 15, 17
-
-
-DexEntryScreen_MenuActionJumptable: ; 402f2
-	dw Pokedex_Page
-	dw .Area
-	dw .Cry
-	dw .Print
-
-.Area: ; 402fa
-	call Pokedex_BlackOutBG
-	xor a
-	ld [hSCX], a
-	call DelayFrame
-	ld a, $7
-	ld [hWX], a
-	ld a, $90
-	ld [hWY], a
-	call Pokedex_GetSelectedMon
-	ld a, [wDexCurrentLocation]
-	ld e, a
-	predef _Area
-	call Pokedex_BlackOutBG
-	call DelayFrame
-	xor a
-	ld [hBGMapMode], a
-	ld a, $90
-	ld [hWY], a
-	ld a, $5
-	ld [hSCX], a
-	call DelayFrame
-	call Pokedex_RedisplayDexEntry
-	call Pokedex_LoadSelectedMonTiles
-	call WaitBGMap
-	call Pokedex_GetSelectedMon
-	ld [CurPartySpecies], a
-	ld a, SCGB_POKEDEX
-	call Pokedex_GetSGBLayout
-	ret
-
-.Cry: ; 40340
-	call Pokedex_GetSelectedMon
-	ld a, [wd265]
-	call GetCryIndex
-	ld e, c
-	ld d, b
-	call PlayCryHeader
-	ret
-
-.Print: ; 4034f
-	call Pokedex_ApplyPrintPals
-	xor a
-	ld [hSCX], a
-	ld a, [wcf65]
-	push af
-	ld a, [wDexEntryPrevJumptableIndex]
-	push af
-	ld a, [wJumptableIndex]
-	push af
-	farcall PrintDexEntry
-	pop af
-	ld [wJumptableIndex], a
-	pop af
-	ld [wDexEntryPrevJumptableIndex], a
-	pop af
-	ld [wcf65], a
-	call ClearBGPalettes
-	call DisableLCD
-	call Pokedex_LoadInvertedFont
-	call Pokedex_RedisplayDexEntry
-	call EnableLCD
-	call WaitBGMap
-	ld a, $5
-	ld [hSCX], a
-	call Pokedex_ApplyUsualPals
-	ret
-
-Pokedex_RedisplayDexEntry: ; 4038d
-	call Pokedex_DrawDexEntryScreenBG
-	call Pokedex_GetSelectedMon
-	farcall DisplayDexEntry
-	call Pokedex_DrawFootprint
-	ret
-
-Pokedex_InitOptionScreen: ; 4039d (10:439d)
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Pokedex_DrawOptionScreenBG
-	call Pokedex_InitArrowCursor
-	ld a, [wCurrentDexMode] ; Index of the topmost visible item in a scrolling menu ???
-	ld [wDexArrowCursorPosIndex], a
-	call Pokedex_DisplayModeDescription
-	call WaitBGMap
-	ld a, SCGB_POKEDEX_SEARCH_OPTION
-	call Pokedex_GetSGBLayout
-	call Pokedex_IncrementDexPointer
-	ret
-
-Pokedex_UpdateOptionScreen: ; 403be (10:43be)
-	ld a, [wUnlockedUnownMode]
-	and a
-	jr nz, .okay
-	ld de, .NoUnownModeArrowCursorData
-	jr .okay2
-.okay
-	ld de, .ArrowCursorData
-.okay2
-	call Pokedex_MoveArrowCursor
-	call c, Pokedex_DisplayModeDescription
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and SELECT | B_BUTTON
-	jr nz, .return_to_main_screen
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .do_menu_action
-	ret
-
-.do_menu_action
-	ld a, [wDexArrowCursorPosIndex]
-	ld hl, .MenuActionJumptable
-	call Pokedex_LoadPointer
-	jp hl
-
-.return_to_main_screen
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_MAIN_SCR
-	ld [wJumptableIndex], a
-	ret
-
-.NoUnownModeArrowCursorData: ; 403f3
-	db D_UP | D_DOWN, 3
-	dwcoord 2,  4
-	dwcoord 2,  6
-	dwcoord 2,  8
-
-.ArrowCursorData: ; 403fb
-	db D_UP | D_DOWN, 4
-	dwcoord 2,  4
-	dwcoord 2,  6
-	dwcoord 2,  8
-	dwcoord 2, 10
-
-.MenuActionJumptable: ; 40405 (10:4405)
-	dw .MenuAction_NewMode
-	dw .MenuAction_OldMode
-	dw .MenuAction_ABCMode
-	dw .MenuAction_UnownMode
-
-.MenuAction_NewMode: ; 4040d (10:440d)
-	ld b, DEXMODE_NEW
-	jr .ChangeMode
-
-.MenuAction_OldMode: ; 40411 (10:4411)
-	ld b, DEXMODE_OLD
-	jr .ChangeMode
-
-.MenuAction_ABCMode: ; 40415 (10:4415)
-	ld b, DEXMODE_ABC
-
-.ChangeMode: ; 40417 (10:4417)
-	ld a, [wCurrentDexMode]
-	cp b
-	jr z, .skip_changing_mode ; Skip if new mode is same as current.
-
-	ld a, b
-	ld [wCurrentDexMode], a
-	call Pokedex_OrderMonsByMode
-	call Pokedex_DisplayChangingModesMessage
-	xor a
-	ld [wDexListingScrollOffset], a
-	ld [wDexListingCursor], a
-	call Pokedex_InitCursorPosition
-
-.skip_changing_mode
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_MAIN_SCR
-	ld [wJumptableIndex], a
-	ret
-
-.MenuAction_UnownMode: ; 4043a (10:443a)
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_UNOWN_MODE
-	ld [wJumptableIndex], a
-	ret
-
-Pokedex_InitSearchScreen: ; 40443 (10:4443)
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Pokedex_DrawSearchScreenBG
-	call Pokedex_InitArrowCursor
-	ld a, NORMAL + 1
-	ld [wDexSearchMonType1], a
-	xor a
-	ld [wDexSearchMonType2], a
-	call Pokedex_PlaceSearchScreenTypeStrings
-	xor a
-	ld [wDexSearchSlowpokeFrame], a
-	farcall DoDexSearchSlowpokeFrame
-	call WaitBGMap
-	ld a, SCGB_POKEDEX_SEARCH_OPTION
-	call Pokedex_GetSGBLayout
-	call Pokedex_IncrementDexPointer
-	ret
-
-Pokedex_UpdateSearchScreen: ; 40471 (10:4471)
-	ld de, .ArrowCursorData
-	call Pokedex_MoveArrowCursor
-	call Pokedex_UpdateSearchMonType
-	call c, Pokedex_PlaceSearchScreenTypeStrings
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and START | B_BUTTON
-	jr nz, .cancel
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .do_menu_action
-	ret
-
-.do_menu_action
-	ld a, [wDexArrowCursorPosIndex]
-	ld hl, .MenuActionJumptable
-	call Pokedex_LoadPointer
-	jp hl
-
-.cancel
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_MAIN_SCR
-	ld [wJumptableIndex], a
-	ret
-
-.ArrowCursorData: ; 4049e
-	db D_UP | D_DOWN, 4
-	dwcoord 2, 4
-	dwcoord 2, 6
-	dwcoord 2, 13
-	dwcoord 2, 15
-
-.MenuActionJumptable: ; 404a8
-	dw .MenuAction_MonSearchType
-	dw .MenuAction_MonSearchType
-	dw .MenuAction_BeginSearch
-	dw .MenuAction_Cancel
-
-.MenuAction_MonSearchType: ; 404b0
-	call Pokedex_NextSearchMonType
-	call Pokedex_PlaceSearchScreenTypeStrings
-	ret
-
-.MenuAction_BeginSearch: ; 404b7
-	call Pokedex_SearchForMons
-	farcall AnimateDexSearchSlowpoke
-	ld a, [wDexSearchResultCount]
-	and a
-	jr nz, .show_search_results
-
-; No mon with matching types was found.
-	call Pokedex_OrderMonsByMode
-	call Pokedex_DisplayTypeNotFoundMessage
-	xor a
-	ld [hBGMapMode], a
-	call Pokedex_DrawSearchScreenBG
-	call Pokedex_InitArrowCursor
-	call Pokedex_PlaceSearchScreenTypeStrings
-	call WaitBGMap
-	ret
-
-.show_search_results
-	ld [wDexListingEnd], a
-	ld a, [wDexListingScrollOffset]
-	ld [wDexListingScrollOffsetBackup], a
-	ld a, [wDexListingCursor]
-	ld [wDexListingCursorBackup], a
-	ld a, [wLastDexEntry]
-	ld [wcf65], a
-	xor a
-	ld [wDexListingScrollOffset], a
-	ld [wDexListingCursor], a
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_SEARCH_RESULTS_SCR
-	ld [wJumptableIndex], a
-	ret
-
-.MenuAction_Cancel: ; 40501
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_MAIN_SCR
-	ld [wJumptableIndex], a
-	ret
-
-Pokedex_InitSearchResultsScreen: ; 4050a (10:450a)
-	xor a
-	ld [hBGMapMode], a
-	xor a
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	call Pokedex_SetBGMapMode4
-	call Pokedex_ResetBGMapMode
-	farcall DrawPokedexSearchResultsWindow
-	call Pokedex_PlaceSearchResultsTypeStrings
-	ld a, 4
-	ld [wDexListingHeight], a
-	call Pokedex_PrintListing
-	call Pokedex_SetBGMapMode3
-	call Pokedex_ResetBGMapMode
-	call Pokedex_DrawSearchResultsScreenBG
-	ld a, $5
-	ld [hSCX], a
-	ld a, $4a
-	ld [hWX], a
-	xor a
-	ld [hWY], a
-	call WaitBGMap
-	call Pokedex_ResetBGMapMode
-	farcall DrawPokedexSearchResultsWindow
-	call Pokedex_PlaceSearchResultsTypeStrings
-	call Pokedex_UpdateSearchResultsCursorOAM
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, SCGB_POKEDEX
-	call Pokedex_GetSGBLayout
-	call Pokedex_IncrementDexPointer
-	ret
-
-Pokedex_UpdateSearchResultsScreen: ; 40562 (10:4562)
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .return_to_search_screen
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .go_to_dex_entry
-	call Pokedex_ListingHandleDPadInput
-	ret nc
-	call Pokedex_UpdateSearchResultsCursorOAM
-	xor a
-	ld [hBGMapMode], a
-	call Pokedex_PrintListing
-	call Pokedex_SetBGMapMode3
-	call Pokedex_ResetBGMapMode
-	ret
-
-.go_to_dex_entry
-	call Pokedex_GetSelectedMon
-	call Pokedex_CheckSeen
-	ret z
-	ld a, DEXSTATE_DEX_ENTRY_SCR
-	ld [wJumptableIndex], a
-	ld a, DEXSTATE_SEARCH_RESULTS_SCR
-	ld [wDexEntryPrevJumptableIndex], a
-	ret
-
-.return_to_search_screen
-	ld a, [wDexListingScrollOffsetBackup]
-	ld [wDexListingScrollOffset], a
-	ld a, [wDexListingCursorBackup]
-	ld [wDexListingCursor], a
-	ld a, [wcf65]
-	ld [wLastDexEntry], a
-	call Pokedex_BlackOutBG
-	call ClearSprites
-	call Pokedex_OrderMonsByMode
-	ld a, DEXSTATE_SEARCH_SCR
-	ld [wJumptableIndex], a
-	xor a
-	ld [hSCX], a
-	ld a, $a7
-	ld [hWX], a
-	ret
-
-Pokedex_InitUnownMode: ; 405bd (10:45bd)
-	call Pokedex_LoadUnownFont
-	call Pokedex_DrawUnownModeBG
-	xor a
-	ld [wDexCurrentUnownIndex], a
-	call Pokedex_LoadUnownFrontpicTiles
-	call Pokedex_UnownModePlaceCursor
-	farcall PrintUnownWord
-	call WaitBGMap
-	ld a, SCGB_POKEDEX_UNOWN_MODE
-	call Pokedex_GetSGBLayout
-	call Pokedex_IncrementDexPointer
-	ret
-
-Pokedex_UpdateUnownMode: ; 405df (10:45df)
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and A_BUTTON | B_BUTTON
-	jr nz, .a_b
-	call Pokedex_UnownModeHandleDPadInput
-	ret
-
-.a_b
-	call Pokedex_BlackOutBG
-	ld a, DEXSTATE_OPTION_SCR
-	ld [wJumptableIndex], a
-	call DelayFrame
-	call Pokedex_CheckSGB
-	jr nz, .decompress
-	farcall LoadSGBPokedexGFX2
-	jr .done
-
-.decompress
-	ld hl, PokedexLZ
-	ld de, vTiles2 tile $31
-	lb bc, BANK(PokedexLZ), $3a
-	call DecompressRequest2bpp
-
-.done
-	ret
-
-Pokedex_UnownModeHandleDPadInput: ; 40610 (10:4610)
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .right
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .left
-	ret
-
-.right
-	ld a, [wDexUnownCount]
-	ld e, a
-	ld hl, wDexCurrentUnownIndex
-	ld a, [hl]
-	inc a
-	cp e
-	ret nc
-	ld a, [hl]
-	inc [hl]
-	jr .update
-
-.left
-	ld hl, wDexCurrentUnownIndex
-	ld a, [hl]
-	and a
-	ret z
-	ld a, [hl]
-	dec [hl]
-
-.update
-	push af
-	xor a
-	ld [hBGMapMode], a
-	pop af
-	call Pokedex_UnownModeEraseCursor
-	call Pokedex_LoadUnownFrontpicTiles
-	call Pokedex_UnownModePlaceCursor
-	farcall PrintUnownWord
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-
-Pokedex_UnownModeEraseCursor: ; 40654 (10:4654)
-	ld c, " "
-	jr Pokedex_UnownModeUpdateCursorGfx
-
-Pokedex_UnownModePlaceCursor: ; 40658 (10:4658)
-	ld a, [wDexCurrentUnownIndex]
-	ld c, $5a ; diamond cursor
-
-Pokedex_UnownModeUpdateCursorGfx: ; 4065d (10:465d)
-	ld e, a
-	ld d, 0
-	ld hl, UnownModeLetterAndCursorCoords + 2
-rept 4
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld [hl], c
-	ret
-
-Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c)
-	ld a, [wDexListingCursor]
-	ld [wBackupDexListingCursor], a
-	ld a, [wDexListingScrollOffset]
-	ld [wBackupDexListingPage], a
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .down
-	and a
-	ret
-
-.up
-	ld a, [wDexListingHeight]
-	ld d, a
-	ld a, [wDexListingEnd]
-	ld e, a
-	call Pokedex_ListingMoveCursorUp
-	jr nc, .nope
-	call Pokedex_GetSelectedMon
-	call Pokedex_CheckSeen
-	jr nz, .yep
-	jr .up
-
-.down
-	ld a, [wDexListingHeight]
-	ld d, a
-	ld a, [wDexListingEnd]
-	ld e, a
-	call Pokedex_ListingMoveCursorDown
-	jr nc, .nope
-	call Pokedex_GetSelectedMon
-	call Pokedex_CheckSeen
-	jr nz, .yep
-	jr .down
-
-.yep
-	scf
-	ret
-
-.nope
-	ld a, [wBackupDexListingCursor]
-	ld [wDexListingCursor], a
-	ld a, [wBackupDexListingPage]
-	ld [wDexListingScrollOffset], a
-	and a
-	ret
-
-Pokedex_ListingHandleDPadInput: ; 406c5 (10:46c5)
-; Handles D-pad input for a list of Pokémon.
-	ld a, [wDexListingHeight]
-	ld d, a
-	ld a, [wDexListingEnd]
-	ld e, a
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, Pokedex_ListingMoveCursorUp
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Pokedex_ListingMoveCursorDown
-	ld a, d
-	cp e
-	jr nc, Pokedex_ListingPosStayedSame
-	ld a, [hl]
-	and D_LEFT
-	jr nz, Pokedex_ListingMoveUpOnePage
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, Pokedex_ListingMoveDownOnePage
-	jr Pokedex_ListingPosStayedSame
-
-Pokedex_ListingMoveCursorUp: ; 406ea (10:46ea)
-	ld hl, wDexListingCursor
-	ld a, [hl]
-	and a
-	jr z, .try_scrolling
-	dec [hl]
-	jr Pokedex_ListingPosChanged
-.try_scrolling
-	ld hl, wDexListingScrollOffset
-	ld a, [hl]
-	and a
-	jr z, Pokedex_ListingPosStayedSame
-	dec [hl]
-	jr Pokedex_ListingPosChanged
-
-Pokedex_ListingMoveCursorDown: ; 406fe (10:46fe)
-	ld hl, wDexListingCursor
-	ld a, [hl]
-	inc a
-	cp e
-	jr nc, Pokedex_ListingPosStayedSame
-	cp d
-	jr nc, .try_scrolling
-	inc [hl]
-	jr Pokedex_ListingPosChanged
-.try_scrolling
-	ld hl, wDexListingScrollOffset
-	add [hl]
-	cp e
-	jr nc, Pokedex_ListingPosStayedSame
-	inc [hl]
-	jr Pokedex_ListingPosChanged
-
-Pokedex_ListingMoveUpOnePage: ; 40716 (10:4716)
-	ld hl, wDexListingScrollOffset
-	ld a, [hl]
-	and a
-	jr z, Pokedex_ListingPosStayedSame
-	cp d
-	jr nc, .not_near_top
-; If we're already less than page away from the top, go to the top.
-	xor a
-	ld [hl], a
-	jr Pokedex_ListingPosChanged
-.not_near_top
-	sub d
-	ld [hl], a
-	jr Pokedex_ListingPosChanged
-
-Pokedex_ListingMoveDownOnePage: ; 40728 (10:4728)
-; When moving down a page, the return value always report a change in position.
-	ld hl, wDexListingScrollOffset
-	ld a, d
-	add a
-	add [hl]
-	jr c, .near_bottom
-	cp e
-	jr c, .not_near_bottom
-.near_bottom
-	ld a, e
-	sub d
-	ld [hl], a
-	jr Pokedex_ListingPosChanged
-.not_near_bottom
-	ld a, [hl]
-	add d
-	ld [hl], a
-	jr Pokedex_ListingPosChanged
-
-Pokedex_ListingPosStayedSame: ; 4073d (10:473d)
-	and a
-	ret
-
-Pokedex_ListingPosChanged: ; 4073f (10:473f)
-	scf
-	ret
-
-Pokedex_FillColumn: ; 40741
-; Fills a column starting at HL, going downwards.
-; B is the height of the column and A is the tile it's filled with.
-	push de
-	ld de, SCREEN_WIDTH
-.loop
-	ld [hl], a
-	add hl, de
-	dec b
-	jr nz, .loop
-	pop de
-	ret
-
-
-Pokedex_DrawMainScreenBG: ; 4074c (10:474c)
-; Draws the left sidebar and the bottom bar on the main screen.
-	hlcoord 0, 17
-	ld de, String_START_SEARCH
-	call Pokedex_PlaceString
-	ld a, $32
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	hlcoord 0, 0
-	lb bc, 7, 7
-	call Pokedex_PlaceBorder
-	hlcoord 0, 9
-	lb bc, 6, 7
-	call Pokedex_PlaceBorder
-	hlcoord 1, 11
-	ld de, String_SEEN
-	call Pokedex_PlaceString
-	ld hl, PokedexSeen
-	ld b, EndPokedexSeen - PokedexSeen
-	call CountSetBits
-	ld de, wd265
-	hlcoord 5, 12
-	lb bc, 1, 3
-	call PrintNum
-	hlcoord 1, 14
-	ld de, String_OWN
-	call Pokedex_PlaceString
-	ld hl, PokedexCaught
-	ld b, EndPokedexCaught - PokedexCaught
-	call CountSetBits
-	ld de, wd265
-	hlcoord 5, 15
-	lb bc, 1, 3
-	call PrintNum
-	hlcoord 1, 17
-	ld de, String_SELECT_OPTION
-	call Pokedex_PlaceString
-	hlcoord 8, 1
-	ld b, 7
-	ld a, $5a
-	call Pokedex_FillColumn
-	hlcoord 8, 10
-	ld b, 6
-	ld a, $5a
-	call Pokedex_FillColumn
-	hlcoord 8, 0
-	ld [hl], $59
-	hlcoord 8, 8
-	ld [hl], $53
-	hlcoord 8, 9
-	ld [hl], $54
-	hlcoord 8, 16
-	ld [hl], $5b
-	call Pokedex_PlaceFrontpicTopLeftCorner
-	ret
-
-String_SEEN: ; 407e1
-	db "SEEN", $ff
-String_OWN: ; 407e6
-	db "OWN", $ff
-String_SELECT_OPTION: ; 407ea
-	db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION
-String_START_SEARCH: ; 407f2
-	db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, $ff ; START > SEARCH
-
-Pokedex_DrawDexEntryScreenBG: ; 407fd
-	call Pokedex_FillBackgroundColor2
-	hlcoord 0, 0
-	lb bc, 15, 18
-	call Pokedex_PlaceBorder
-	hlcoord 19, 0
-	ld [hl], $34
-	hlcoord 19, 1
-	ld a, " "
-	ld b, 15
-	call Pokedex_FillColumn
-	ld [hl], $39
-	hlcoord 1, 10
-	ld bc, 19
-	ld a, $61
-	call ByteFill
-	hlcoord 1, 17
-	ld bc, 18
-	ld a, " "
-	call ByteFill
-	hlcoord 9, 7
-	ld de, .Height
-	call Pokedex_PlaceString
-	hlcoord 9, 9
-	ld de, .Weight
-	call Pokedex_PlaceString
-	hlcoord 0, 17
-	ld de, .MenuItems
-	call Pokedex_PlaceString
-	call Pokedex_PlaceFrontpicTopLeftCorner
-	ret
-
-.Unused: ; 4084f
-	db $5c, $5d, $ff ; No.
-.Height: ; 40852
-	db "HT  ?", $5e, "??", $5f, $ff ; HT  ?'??"
-.Weight: ; 4085c
-	db "WT   ???lb", $ff ; WT   ???lb
-.MenuItems: ; 40867
-	db $3b, " PAGE AREA CRY PRNT", $ff
-
-Pokedex_DrawOptionScreenBG: ; 4087c (10:487c)
-	call Pokedex_FillBackgroundColor2
-	hlcoord 0, 2
-	lb bc, 8, 18
-	call Pokedex_PlaceBorder
-	hlcoord 0, 12
-	lb bc, 4, 18
-	call Pokedex_PlaceBorder
-	hlcoord 0, 1
-	ld de, .Title
-	call Pokedex_PlaceString
-	hlcoord 3, 4
-	ld de, .Modes
-	call PlaceString
-	ld a, [wUnlockedUnownMode]
-	and a
-	ret z
-	hlcoord 3, 10
-	ld de, .UnownMode
-	call PlaceString
-	ret
-
-.Title: ; 408b2
-	db $3b, " OPTION ", $3c, $ff
-
-.Modes: ; 408bd
-	db   "NEW #DEX MODE"
-	next "OLD #DEX MODE"
-	next "A to Z MODE"
-	db "@"
-
-.UnownMode: ; 408e5
-	db "UNOWN MODE@"
-
-Pokedex_DrawSearchScreenBG: ; 408f0 (10:48f0)
-	call Pokedex_FillBackgroundColor2
-	hlcoord 0, 2
-	lb bc, 14, 18
-	call Pokedex_PlaceBorder
-	hlcoord 0, 1
-	ld de, .Title
-	call Pokedex_PlaceString
-	hlcoord 8, 4
-	ld de, .TypeLeftRightArrows
-	call Pokedex_PlaceString
-	hlcoord 8, 6
-	ld de, .TypeLeftRightArrows
-	call Pokedex_PlaceString
-	hlcoord 3, 4
-	ld de, .Types
-	call PlaceString
-	hlcoord 3, 13
-	ld de, .Menu
-	call PlaceString
-	ret
-
-.Title: ; 4092a
-	db $3b, " SEARCH ", $3c, $ff
-
-.TypeLeftRightArrows: ; 40935
-	db $3d, "        ", $3e, $ff
-
-.Types: ; 40940
-	db   "TYPE1"
-	next "TYPE2"
-	db   "@"
-
-.Menu: ; 4094c
-	db   "BEGIN SEARCH!!"
-	next "CANCEL"
-	db   "@"
-
-Pokedex_DrawSearchResultsScreenBG: ; 40962 (10:4962)
-	call Pokedex_FillBackgroundColor2
-	hlcoord 0, 0
-	lb bc, 7, 7
-	call Pokedex_PlaceBorder
-	hlcoord 0, 11
-	lb bc, 5, 18
-	call Pokedex_PlaceBorder
-	hlcoord 1, 12
-	ld de, .BottomWindowText
-	call PlaceString
-	ld de, wDexSearchResultCount
-	hlcoord 1, 16
-	lb bc, 1, 3
-	call PrintNum
-	hlcoord 8, 0
-	ld [hl], $59
-	hlcoord 8, 1
-	ld b, 7
-	ld a, $5a
-	call Pokedex_FillColumn
-	hlcoord 8, 8
-	ld [hl], $53
-	hlcoord 8, 9
-	ld [hl], $69
-	hlcoord 8, 10
-	ld [hl], $6a
-	call Pokedex_PlaceFrontpicTopLeftCorner
-	ret
-
-.BottomWindowText: ; 409ae
-	db   "SEARCH RESULTS"
-	next "  TYPE"
-	next "    FOUND!"
-	db   "@"
-
-Pokedex_PlaceSearchResultsTypeStrings: ; 409cf (10:49cf)
-	ld a, [wDexSearchMonType1]
-	hlcoord 0, 14
-	call Pokedex_PlaceTypeString
-	ld a, [wDexSearchMonType1]
-	ld b, a
-	ld a, [wDexSearchMonType2]
-	and a
-	jr z, .done
-	cp b
-	jr z, .done
-	hlcoord 2, 15
-	call Pokedex_PlaceTypeString
-	hlcoord 1, 15
-	ld [hl], "/"
-.done
-	ret
-
-Pokedex_DrawUnownModeBG: ; 409f1 (10:49f1)
-	call Pokedex_FillBackgroundColor2
-	hlcoord 2, 1
-	lb bc, 10, 13
-	call Pokedex_PlaceBorder
-	hlcoord 2, 14
-	lb bc, 1, 13
-	call Pokedex_PlaceBorder
-	hlcoord 2, 15
-	ld [hl], $3d
-	hlcoord 16, 15
-	ld [hl], $3e
-	hlcoord 6, 5
-	call Pokedex_PlaceFrontpicAtHL
-	ld de, 0
-	ld b, 0
-	ld c, 26
-.loop
-	ld hl, UnownDex
-	add hl, de
-	ld a, [hl]
-	and a
-	jr z, .done
-	push af
-	ld hl, UnownModeLetterAndCursorCoords
-rept 4
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop af
-	add $40 - 1 ; Unown A
-	ld [hl], a
-	inc de
-	inc b
-	dec c
-	jr nz, .loop
-.done
-	ld a, b
-	ld [wDexUnownCount], a
-	ret
-
-UnownModeLetterAndCursorCoords: ; 40a3e
-;           letter, cursor
-	dwcoord   4,11,   3,11
-	dwcoord   4,10,   3,10
-	dwcoord   4, 9,   3, 9
-	dwcoord   4, 8,   3, 8
-	dwcoord   4, 7,   3, 7
-	dwcoord   4, 6,   3, 6
-	dwcoord   4, 5,   3, 5
-	dwcoord   4, 4,   3, 4
-	dwcoord   4, 3,   3, 2
-	dwcoord   5, 3,   5, 2
-	dwcoord   6, 3,   6, 2
-	dwcoord   7, 3,   7, 2
-	dwcoord   8, 3,   8, 2
-	dwcoord   9, 3,   9, 2
-	dwcoord  10, 3,  10, 2
-	dwcoord  11, 3,  11, 2
-	dwcoord  12, 3,  12, 2
-	dwcoord  13, 3,  13, 2
-	dwcoord  14, 3,  15, 2
-	dwcoord  14, 4,  15, 4
-	dwcoord  14, 5,  15, 5
-	dwcoord  14, 6,  15, 6
-	dwcoord  14, 7,  15, 7
-	dwcoord  14, 8,  15, 8
-	dwcoord  14, 9,  15, 9
-	dwcoord  14,10,  15,10
-
-Pokedex_FillBackgroundColor2: ; 40aa6
-	hlcoord 0, 0
-	ld a, $32
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	ret
-
-Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2
-	hlcoord 1, 1
-Pokedex_PlaceFrontpicAtHL: ; 40ab5
-	xor a
-	ld b, $7
-.row
-	ld c, $7
-	push af
-	push hl
-.col
-	ld [hli], a
-	add $7
-	dec c
-	jr nz, .col
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	pop af
-	inc a
-	dec b
-	jr nz, .row
-	ret
-
-Pokedex_PlaceString: ; 40acd
-.loop
-	ld a, [de]
-	cp -1
-	ret z
-	inc de
-	ld [hli], a
-	jr .loop
-
-
-Pokedex_PlaceBorder: ; 40ad5
-	push hl
-	ld a, $33
-	ld [hli], a
-	ld d, $34
-	call .FillRow
-	ld a, $35
-	ld [hl], a
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-.loop
-	push hl
-	ld a, $36
-	ld [hli], a
-	ld d, $7f
-	call .FillRow
-	ld a, $37
-	ld [hl], a
-	pop hl
-	ld de, SCREEN_WIDTH
-	add hl, de
-	dec b
-	jr nz, .loop
-	ld a, $38
-	ld [hli], a
-	ld d, $39
-	call .FillRow
-	ld a, $3a
-	ld [hl], a
-	ret
-
-.FillRow: ; 40b06
-	ld e, c
-.row_loop
-	ld a, e
-	and a
-	ret z
-	ld a, d
-	ld [hli], a
-	dec e
-	jr .row_loop
-
-
-Pokedex_PrintListing: ; 40b0f (10:4b0f)
-; Prints the list of Pokémon on the main Pokédex screen.
-
-; This check is completely useless.
-	ld a, [wCurrentDexMode]
-	cp DEXMODE_OLD
-	jr z, .okay
-	ld c, 11
-	jr .resume
-.okay
-	ld c, 11
-; End useless check
-
-.resume
-; Clear (2 * [wDexListingHeight] + 1) by 11 box starting at 0,1
-	hlcoord 0, 1
-	ld a, [wDexListingHeight]
-	add a
-	inc a
-	ld b, a
-	ld a, " "
-	call Pokedex_FillBox
-
-; Load de with wPokedexOrder + [wDexListingScrollOffset]
-	ld a, [wDexListingScrollOffset]
-	ld e, a
-	ld d, $0
-	ld hl, wPokedexOrder
-	add hl, de
-	ld e, l
-	ld d, h
-	hlcoord 0, 2
-	ld a, [wDexListingHeight]
-.loop
-	push af
-	ld a, [de]
-	ld [wd265], a
-	push de
-	push hl
-	call .PrintEntry
-	pop hl
-	ld de, 2 * SCREEN_WIDTH
-	add hl, de
-	pop de
-	inc de
-	pop af
-	dec a
-	jr nz, .loop
-	call Pokedex_LoadSelectedMonTiles
-	ret
-
-.PrintEntry: ; 40b55 (10:4b55)
-; Prints one entry in the list of Pokémon on the main Pokédex screen.
-	and a
-	ret z
-	call Pokedex_PrintNumberIfOldMode
-	call Pokedex_PlaceDefaultStringIfNotSeen
-	ret c
-	call Pokedex_PlaceCaughtSymbolIfCaught
-	push hl
-	call GetPokemonName
-	pop hl
-	call PlaceString
-	ret
-
-Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a)
-	ld a, [wCurrentDexMode]
-	cp DEXMODE_OLD
-	jr z, .printnum
-	ret
-
-.printnum
-	push hl
-	ld de, -SCREEN_WIDTH
-	add hl, de
-	ld de, wd265
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
-	call PrintNum
-	pop hl
-	ret
-
-Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82)
-	call Pokedex_CheckCaught
-	jr nz, .place_caught_symbol
-	inc hl
-	ret
-
-.place_caught_symbol
-	ld a, $4f
-	ld [hli], a
-	ret
-
-Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d)
-	call Pokedex_CheckSeen
-	ret nz
-	inc hl
-	ld de, .NameNotSeen
-	call PlaceString
-	scf
-	ret
-
-.NameNotSeen: ; 40b9a
-	db "-----@"
-
-Pokedex_DrawFootprint: ; 40ba0
-	hlcoord 18, 1
-	ld a, $62
-	ld [hli], a
-	inc a
-	ld [hl], a
-	hlcoord 18, 2
-	ld a, $64
-	ld [hli], a
-	inc a
-	ld [hl], a
-	ret
-
-
-Pokedex_GetSelectedMon: ; 40bb1
-; Gets the species of the currently selected Pokémon. This corresponds to the
-; position of the cursor in the main listing, but this function can be used
-; on all Pokédex screens.
-	ld a, [wDexListingCursor]
-	ld hl, wDexListingScrollOffset
-	add [hl]
-	ld e, a
-	ld d, $0
-	ld hl, wPokedexOrder
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-	ret
-
-
-Pokedex_CheckCaught: ; 40bc4 (10:4bc4)
-	push de
-	push hl
-	ld a, [wd265]
-	dec a
-	call CheckCaughtMon
-	pop hl
-	pop de
-	ret
-
-
-Pokedex_CheckSeen: ; 40bd0
-	push de
-	push hl
-	ld a, [wd265]
-	dec a
-	call CheckSeenMon
-	pop hl
-	pop de
-	ret
-
-
-
-Pokedex_OrderMonsByMode: ; 40bdc
-	ld hl, wPokedexOrder
-	ld bc, wPokedexOrderEnd - wPokedexOrder
-	xor a
-	call ByteFill
-	ld a, [wCurrentDexMode]
-	ld hl, .Jumptable
-	call Pokedex_LoadPointer
-	jp hl
-
-.Jumptable: ; 40bf0 (10:4bf0)
-	dw .NewMode
-	dw .OldMode
-	dw Pokedex_ABCMode
-
-.NewMode: ; 40bf6 (10:4bf6)
-	ld de, NewPokedexOrder
-	ld hl, wPokedexOrder
-	ld c, NUM_POKEMON
-.loopnew
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .loopnew
-	call .FindLastSeen
-	ret
-
-.OldMode: ; 40c08 (10:4c08)
-	ld hl, wPokedexOrder
-	ld a, $1
-	ld c, NUM_POKEMON
-.loopold
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .loopold
-	call .FindLastSeen
-	ret
-
-.FindLastSeen: ; 40c18 (10:4c18)
-	ld hl, wPokedexOrder + NUM_POKEMON - 1
-	ld d, NUM_POKEMON
-	ld e, d
-.loopfindend
-	ld a, [hld]
-	ld [wd265], a
-	call Pokedex_CheckSeen
-	jr nz, .foundend
-	dec d
-	dec e
-	jr nz, .loopfindend
-.foundend
-	ld a, d
-	ld [wDexListingEnd], a
-	ret
-
-Pokedex_ABCMode: ; 40c30
-	xor a
-	ld [wDexListingEnd], a
-	ld hl, wPokedexOrder
-	ld de, AlphabeticalPokedexOrder
-	ld c, NUM_POKEMON
-.loop1abc
-	push bc
-	ld a, [de]
-	ld [wd265], a
-	call Pokedex_CheckSeen
-	jr z, .skipabc
-	ld a, [wd265]
-	ld [hli], a
-	ld a, [wDexListingEnd]
-	inc a
-	ld [wDexListingEnd], a
-
-.skipabc
-	inc de
-	pop bc
-	dec c
-	jr nz, .loop1abc
-	ld a, [wDexListingEnd]
-	ld c, 0
-.loop2abc
-	cp NUM_POKEMON
-	jr z, .doneabc
-	ld [hl], c
-	inc hl
-	inc a
-	jr .loop2abc
-
-.doneabc
-	ret
-
-
-INCLUDE "data/pokemon/dex_order_alpha.asm"
-
-INCLUDE "data/pokemon/dex_order_new.asm"
-
-
-Pokedex_DisplayModeDescription: ; 40e5b
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 12
-	lb bc, 4, 18
-	call Pokedex_PlaceBorder
-	ld a, [wDexArrowCursorPosIndex]
-	ld hl, .Modes
-	call Pokedex_LoadPointer
-	ld e, l
-	ld d, h
-	hlcoord 1, 14
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.Modes: ; 40e7d
-	dw .NewMode
-	dw .OldMode
-	dw .ABCMode
-	dw .UnownMode
-
-.NewMode: ; 40e85
-	db   "<PK><MN> are listed by"
-	next "evolution type.@"
-
-.OldMode: ; 40ea6
-	db   "<PK><MN> are listed by"
-	next "official type.@"
-
-.ABCMode: ; 40ec6
-	db   "<PK><MN> are listed"
-	next "alphabetically.@"
-
-.UnownMode: ; 40ee4
-	db   "UNOWN are listed"
-	next "in catching order.@"
-
-Pokedex_DisplayChangingModesMessage: ; 40f08 (10:4f08)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 12
-	lb bc, 4, 18
-	call Pokedex_PlaceBorder
-	ld de, String_ChangingModesPleaseWait
-	hlcoord 1, 14
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ld c, 64
-	call DelayFrames
-	ld de, SFX_CHANGE_DEX_MODE
-	call PlaySFX
-	ld c, 64
-	call DelayFrames
-	ret
-
-String_ChangingModesPleaseWait: ; 40f32
-	db   "Changing modes."
-	next "Please wait.@"
-
-Pokedex_UpdateSearchMonType: ; 40f4f (10:4f4f)
-	ld a, [wDexArrowCursorPosIndex]
-	cp 2
-	jr nc, .no_change
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_LEFT
-	jr nz, Pokedex_PrevSearchMonType
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, Pokedex_NextSearchMonType
-.no_change
-	and a
-	ret
-
-Pokedex_PrevSearchMonType: ; 40f65
-	ld a, [wDexArrowCursorPosIndex]
-	and a
-	jr nz, .type2
-
-	ld hl, wDexSearchMonType1
-	ld a, [hl]
-	cp $1
-	jr z, .wrap_around
-	dec [hl]
-	jr .done
-
-.type2
-	ld hl, wDexSearchMonType2
-	ld a, [hl]
-	and a
-	jr z, .wrap_around
-	dec [hl]
-	jr .done
-
-.wrap_around
-	ld [hl], $11
-
-.done
-	scf
-	ret
-
-Pokedex_NextSearchMonType: ; 40f84
-	ld a, [wDexArrowCursorPosIndex]
-	and a
-	jr nz, .type2
-
-	ld hl, wDexSearchMonType1
-	ld a, [hl]
-	cp $11
-	jr nc, .type1_wrap_around
-	inc [hl]
-	jr .done
-.type1_wrap_around
-	ld [hl], $1
-	jr .done
-
-.type2
-	ld hl, wDexSearchMonType2
-	ld a, [hl]
-	cp $11
-	jr nc, .type2_wrap_around
-	inc [hl]
-	jr .done
-.type2_wrap_around
-	ld [hl], 0
-
-.done
-	scf
-	ret
-
-Pokedex_PlaceSearchScreenTypeStrings: ; 40fa8 (10:4fa8)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 9, 3
-	lb bc, 4, 8
-	ld a, " "
-	call Pokedex_FillBox
-	ld a, [wDexSearchMonType1]
-	hlcoord 9, 4
-	call Pokedex_PlaceTypeString
-	ld a, [wDexSearchMonType2]
-	hlcoord 9, 6
-	call Pokedex_PlaceTypeString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-Pokedex_PlaceTypeString: ; 40fcd (10:4fcd)
-	push hl
-	ld e, a
-	ld d, 0
-	ld hl, .TypeStrings
-rept 9
-	add hl, de
-endr
-	ld e, l
-	ld d, h
-	pop hl
-	call PlaceString
-	ret
-
-.TypeStrings: ; 40fe4
-	db "  ----  @"
-	db " NORMAL @"
-	db "  FIRE  @"
-	db " WATER  @"
-	db " GRASS  @"
-	db "ELECTRIC@"
-	db "  ICE   @"
-	db "FIGHTING@"
-	db " POISON @"
-	db " GROUND @"
-	db " FLYING @"
-	db "PSYCHIC @"
-	db "  BUG   @"
-	db "  ROCK  @"
-	db " GHOST  @"
-	db " DRAGON @"
-	db "  DARK  @"
-	db " STEEL  @"
-
-Pokedex_SearchForMons: ; 41086
-	ld a, [wDexSearchMonType2]
-	and a
-	call nz, .Search
-	ld a, [wDexSearchMonType1]
-	and a
-	call nz, .Search
-	ret
-
-.Search: ; 41095
-	dec a
-	ld e, a
-	ld d, 0
-	ld hl, .TypeConversionTable
-	add hl, de
-	ld a, [hl]
-	ld [wDexConvertedMonType], a
-	ld hl, wPokedexOrder
-	ld de, wPokedexOrder
-	ld c, NUM_POKEMON
-	xor a
-	ld [wDexSearchResultCount], a
-.loop
-	push bc
-	ld a, [hl]
-	and a
-	jr z, .next_mon
-	ld [wd265], a
-	ld [CurSpecies], a
-	call Pokedex_CheckCaught
-	jr z, .next_mon
-	push hl
-	push de
-	call GetBaseData
-	pop de
-	pop hl
-	ld a, [wDexConvertedMonType]
-	ld b, a
-	ld a, [BaseType1]
-	cp b
-	jr z, .match_found
-	ld a, [BaseType2]
-	cp b
-	jr nz, .next_mon
-
-.match_found
-	ld a, [wd265]
-	ld [de], a
-	inc de
-	ld a, [wDexSearchResultCount]
-	inc a
-	ld [wDexSearchResultCount], a
-
-.next_mon
-	inc hl
-	pop bc
-	dec c
-	jr nz, .loop
-
-	ld l, e
-	ld h, d
-	ld a, [wDexSearchResultCount]
-	ld c, 0
-
-.zero_remaining_mons
-	cp NUM_POKEMON
-	jr z, .done
-	ld [hl], c
-	inc hl
-	inc a
-	jr .zero_remaining_mons
-
-.done
-	ret
-
-.TypeConversionTable: ; 410f6
-	db NORMAL
-	db FIRE
-	db WATER
-	db GRASS
-	db ELECTRIC
-	db ICE
-	db FIGHTING
-	db POISON
-	db GROUND
-	db FLYING
-	db PSYCHIC
-	db BUG
-	db ROCK
-	db GHOST
-	db DRAGON
-	db DARK
-	db STEEL
-
-Pokedex_DisplayTypeNotFoundMessage: ; 41107
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 12
-	lb bc, 4, 18
-	call Pokedex_PlaceBorder
-	ld de, .TypeNotFound
-	hlcoord 1, 14
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ld c, $80
-	call DelayFrames
-	ret
-
-.TypeNotFound: ; 41126
-	db   "The specified type"
-	next "was not found.@"
-
-Pokedex_UpdateCursorOAM: ; 41148 (10:5148)
-	ld a, [wCurrentDexMode]
-	cp DEXMODE_OLD
-	jp z, Pokedex_PutOldModeCursorOAM
-	call Pokedex_PutNewModeABCModeCursorOAM
-	call Pokedex_PutScrollbarOAM
-	ret
-
-Pokedex_PutOldModeCursorOAM: ; 41157 (10:5157)
-	ld hl, .CursorOAM
-	ld a, [wDexListingCursor]
-	or a
-	jr nz, .okay
-	ld hl, .CursorAtTopOAM
-.okay
-	call Pokedex_LoadCursorOAM
-	ret
-
-.CursorOAM: ; 41167
-	db $18, $47, $30, $07
-	db $10, $47, $31, $07
-	db $10, $4f, $32, $07
-	db $10, $57, $32, $07
-	db $10, $5f, $32, $07
-	db $10, $67, $33, $07
-	db $10, $7e, $33, $27
-	db $10, $86, $32, $27
-	db $10, $8e, $32, $27
-	db $10, $96, $32, $27
-	db $10, $9e, $31, $27
-	db $18, $9e, $30, $27
-	db $20, $47, $30, $47
-	db $28, $47, $31, $47
-	db $28, $4f, $32, $47
-	db $28, $57, $32, $47
-	db $28, $5f, $32, $47
-	db $28, $67, $33, $47
-	db $28, $7e, $33, $67
-	db $28, $86, $32, $67
-	db $28, $8e, $32, $67
-	db $28, $96, $32, $67
-	db $28, $9e, $31, $67
-	db $20, $9e, $30, $67
-	db $ff
-
-.CursorAtTopOAM: ; 411c8
-; OAM data for when the cursor is at the top of the list. The tiles at the top
-; are cut off so they don't show up outside the list area.
-	db $18, $47, $30, $07
-	db $10, $47, $34, $07
-	db $10, $4f, $35, $07
-	db $10, $57, $35, $07
-	db $10, $5f, $35, $07
-	db $10, $67, $36, $07
-	db $10, $7e, $36, $27
-	db $10, $86, $35, $27
-	db $10, $8e, $35, $27
-	db $10, $96, $35, $27
-	db $10, $9e, $34, $27
-	db $18, $9e, $30, $27
-	db $20, $47, $30, $47
-	db $28, $47, $31, $47
-	db $28, $4f, $32, $47
-	db $28, $57, $32, $47
-	db $28, $5f, $32, $47
-	db $28, $67, $33, $47
-	db $28, $7e, $33, $67
-	db $28, $86, $32, $67
-	db $28, $8e, $32, $67
-	db $28, $96, $32, $67
-	db $28, $9e, $31, $67
-	db $20, $9e, $30, $67
-	db $ff
-
-Pokedex_PutNewModeABCModeCursorOAM: ; 41229 (10:5229)
-	ld hl, .CursorOAM
-	call Pokedex_LoadCursorOAM
-	ret
-
-.CursorOAM: ; 41230
-	db $1b, $47, $30, $07
-	db $13, $47, $31, $07
-	db $13, $4f, $32, $07
-	db $13, $57, $32, $07
-	db $13, $5f, $33, $07
-	db $13, $80, $33, $27
-	db $13, $88, $32, $27
-	db $13, $90, $32, $27
-	db $13, $98, $31, $27
-	db $1b, $98, $30, $27
-	db $23, $47, $30, $47
-	db $2b, $47, $31, $47
-	db $2b, $4f, $32, $47
-	db $2b, $57, $32, $47
-	db $2b, $5f, $33, $47
-	db $2b, $80, $33, $67
-	db $2b, $88, $32, $67
-	db $2b, $90, $32, $67
-	db $2b, $98, $31, $67
-	db $23, $98, $30, $67
-	db $ff
-
-Pokedex_UpdateSearchResultsCursorOAM: ; 41281 (10:5281)
-	ld a, [wCurrentDexMode]
-	cp DEXMODE_OLD
-	jp z, Pokedex_PutOldModeCursorOAM
-	ld hl, .CursorOAM
-	call Pokedex_LoadCursorOAM
-	ret
-
-.CursorOAM: ; 41290
-	db $1b, $47, $30, $07
-	db $13, $47, $31, $07
-	db $13, $4f, $32, $07
-	db $13, $57, $32, $07
-	db $13, $5f, $32, $07
-	db $13, $67, $33, $07
-	db $13, $7e, $33, $27
-	db $13, $86, $32, $27
-	db $13, $8e, $32, $27
-	db $13, $96, $32, $27
-	db $13, $9e, $31, $27
-	db $1b, $9e, $30, $27
-	db $23, $47, $30, $47
-	db $2b, $47, $31, $47
-	db $2b, $4f, $32, $47
-	db $2b, $57, $32, $47
-	db $2b, $5f, $32, $47
-	db $2b, $67, $33, $47
-	db $2b, $7e, $33, $67
-	db $2b, $86, $32, $67
-	db $2b, $8e, $32, $67
-	db $2b, $96, $32, $67
-	db $2b, $9e, $31, $67
-	db $23, $9e, $30, $67
-	db $ff
-
-Pokedex_LoadCursorOAM: ; 412f1 (10:52f1)
-	ld de, Sprites
-.loop
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wDexListingCursor]
-	and $7
-	swap a
-	add [hl]
-	inc hl
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .loop
-
-Pokedex_PutScrollbarOAM: ; 4130e (10:530e)
-; Writes the OAM data for the scrollbar in the new mode and ABC mode.
-	push de
-	ld a, [wDexListingEnd]
-	dec a
-	ld e, a
-	ld a, [wDexListingCursor]
-	ld hl, wDexListingScrollOffset
-	add [hl]
-	cp e
-	jr z, .asm_4133f
-	ld hl, $0
-	ld bc, $79
-	call AddNTimes
-	ld e, l
-	ld d, h
-	ld b, $0
-	ld a, d
-	or e
-	jr z, .asm_41341
-	ld a, [wDexListingEnd]
-	ld c, a
-.asm_41333
-	ld a, e
-	sub c
-	ld e, a
-	ld a, d
-	sbc $0
-	ld d, a
-	jr c, .asm_41341
-	inc b
-	jr .asm_41333
-.asm_4133f
-	ld b, $79
-.asm_41341
-	ld a, $14
-	add b
-	pop hl
-	ld [hli], a
-	ld a, $a1
-	ld [hli], a
-	ld a, $f
-	ld [hli], a
-	ld [hl], $0
-	ret
-
-Pokedex_InitArrowCursor: ; 4134f (10:534f)
-	xor a
-	ld [wDexArrowCursorPosIndex], a
-	ld [wDexArrowCursorDelayCounter], a
-	ld [wDexArrowCursorBlinkCounter], a
-	ret
-
-Pokedex_MoveArrowCursor: ; 4135a (10:535a)
-; bc = [de] - 1
-	ld a, [de]
-	ld b, a
-	inc de
-	ld a, [de]
-	dec a
-	ld c, a
-	inc de
-	call Pokedex_BlinkArrowCursor
-
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and D_LEFT | D_UP
-	and b
-	jr nz, .move_left_or_up
-	ld a, [hl]
-	and D_RIGHT | D_DOWN
-	and b
-	jr nz, .move_right_or_down
-	ld a, [hl]
-	and SELECT
-	and b
-	jr nz, .select
-	call Pokedex_ArrowCursorDelay
-	jr c, .no_action
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_LEFT | D_UP
-	and b
-	jr nz, .move_left_or_up
-	ld a, [hl]
-	and D_RIGHT | D_DOWN
-	and b
-	jr nz, .move_right_or_down
-	jr .no_action
-
-.move_left_or_up
-	ld a, [wDexArrowCursorPosIndex]
-	and a
-	jr z, .no_action
-	call Pokedex_GetArrowCursorPos
-	ld [hl], " "
-	ld hl, wDexArrowCursorPosIndex
-	dec [hl]
-	jr .update_cursor_pos
-
-.move_right_or_down
-	ld a, [wDexArrowCursorPosIndex]
-	cp c
-	jr nc, .no_action
-	call Pokedex_GetArrowCursorPos
-	ld [hl], " "
-	ld hl, wDexArrowCursorPosIndex
-	inc [hl]
-
-.update_cursor_pos
-	call Pokedex_GetArrowCursorPos
-	ld [hl], "▶"
-	ld a, 12
-	ld [wDexArrowCursorDelayCounter], a
-	xor a
-	ld [wDexArrowCursorBlinkCounter], a
-	scf
-	ret
-
-.no_action
-	and a
-	ret
-
-.select
-	call Pokedex_GetArrowCursorPos
-	ld [hl], " "
-	ld a, [wDexArrowCursorPosIndex]
-	cp c
-	jr c, .update
-	ld a, -1
-.update
-	inc a
-	ld [wDexArrowCursorPosIndex], a
-	jr .update_cursor_pos
-
-Pokedex_GetArrowCursorPos: ; 413d4 (10:53d4)
-	ld a, [wDexArrowCursorPosIndex]
-	add a
-	ld l, a
-	ld h, 0
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-Pokedex_BlinkArrowCursor: ; 413e0 (10:53e0)
-	ld hl, wDexArrowCursorBlinkCounter
-	ld a, [hl]
-	inc [hl]
-	and $8
-	jr z, .blink_on
-	call Pokedex_GetArrowCursorPos
-	ld [hl], " "
-	ret
-
-.blink_on
-	call Pokedex_GetArrowCursorPos
-	ld [hl], "▶"
-	ret
-
-Pokedex_ArrowCursorDelay: ; 413f5 (10:53f5)
-; Updates the delay counter set when moving the arrow cursor.
-; Returns whether the delay is active in carry.
-	ld hl, wDexArrowCursorDelayCounter
-	ld a, [hl]
-	and a
-	ret z
-
-	dec [hl]
-	scf
-	ret
-
-Pokedex_FillBox: ; 413fe (10:53fe)
-	jp FillBoxWithByte
-
-Pokedex_BlackOutBG: ; 41401 (10:5401)
-; Make BG palettes black so that the BG becomes all black.
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, wBGPals1
-	ld bc, 8 palettes
-	xor a
-	call ByteFill
-	pop af
-	ld [rSVBK], a
-
-Pokedex_ApplyPrintPals: ; 41415
-	ld a, $ff
-	call DmgToCgbBGPals
-	ld a, $ff
-	call DmgToCgbObjPal0
-	call DelayFrame
-	ret
-
-Pokedex_GetSGBLayout: ; 41423
-	ld b, a
-	call GetSGBLayout
-
-Pokedex_ApplyUsualPals: ; 41427
-; This applies the palettes used for most Pokédex screens.
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $e0
-	call DmgToCgbObjPal0
-	ret
-
-
-Pokedex_LoadPointer: ; 41432
-	ld e, a
-	ld d, 0
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-Pokedex_LoadSelectedMonTiles: ; 4143b
-; Loads the tiles of the currently selected Pokémon.
-	call Pokedex_GetSelectedMon
-	call Pokedex_CheckSeen
-	jr z, .QuestionMark
-	ld a, [wFirstUnownSeen]
-	ld [UnownLetter], a
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	call GetBaseData
-	ld de, vTiles2
-	predef GetMonFrontpic
-	ret
-
-.QuestionMark:
-	ld a, BANK(sScratch)
-	call GetSRAMBank
-	farcall LoadQuestionMarkPic
-	ld hl, vTiles2
-	ld de, sScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	call CloseSRAM
-	ret
-
-
-Pokedex_LoadCurrentFootprint: ; 41478 (10:5478)
-	call Pokedex_GetSelectedMon
-
-Pokedex_LoadAnyFootprint: ; 4147b
-	ld a, [wd265]
-	dec a
-	and ($ff ^ $07) ; $f8 ; $1f << 3
-	srl a
-	srl a
-	srl a
-	ld e, 0
-	ld d, a
-	ld a, [wd265]
-	dec a
-	and 7
-	swap a ; * $10
-	ld l, a
-	ld h, 0
-	add hl, de
-	ld de, Footprints
-	add hl, de
-
-	push hl
-	ld e, l
-	ld d, h
-	ld hl, vTiles2 tile $62
-	lb bc, BANK(Footprints), 2
-	call Request1bpp
-	pop hl
-
-	; Whoever was editing footprints forgot to fix their
-	; tile editor. Now each bottom half is 8 tiles off.
-	ld de, 8 tiles
-	add hl, de
-
-	ld e, l
-	ld d, h
-	ld hl, vTiles2 tile $64
-	lb bc, BANK(Footprints), 2
-	call Request1bpp
-
-	ret
-
-
-Pokedex_LoadGFX: ; 414b7
-	call DisableLCD
-	ld hl, vTiles2
-	ld bc, $31 tiles
-	xor a
-	call ByteFill
-	call Pokedex_LoadInvertedFont
-	call LoadFontsExtra
-	ld hl, vTiles2 tile $60
-	ld bc, $20 tiles
-	call Pokedex_InvertTiles
-	call Pokedex_CheckSGB
-	jr nz, .LoadPokedexLZ
-	farcall LoadSGBPokedexGFX
-	jr .LoadPokedexSlowpokeLZ
-
-.LoadPokedexLZ:
-	ld hl, PokedexLZ
-	ld de, vTiles2 tile $31
-	call Decompress
-
-.LoadPokedexSlowpokeLZ:
-	ld hl, PokedexSlowpokeLZ
-	ld de, vTiles0
-	call Decompress
-	ld a, 6
-	call SkipMusic
-	call EnableLCD
-	ret
-
-Pokedex_LoadInvertedFont: ; 414fb
-	call LoadStandardFont
-	ld hl, vTiles1
-	ld bc, $80 tiles
-
-Pokedex_InvertTiles: ; 41504
-.loop
-	ld a, [hl]
-	xor $ff
-	ld [hli], a
-	dec bc
-	ld a, b
-	or c
-	jr nz, .loop
-	ret
-
-PokedexLZ: ; 4150e
-INCBIN "gfx/pokedex/pokedex.2bpp.lz"
-
-PokedexSlowpokeLZ: ; 416b0
-INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
-
-Pokedex_CheckSGB: ; 41a24
-	ld a, [hCGB]
-	or a
-	ret nz
-	ld a, [hSGB]
-	dec a
-	ret
-
-Pokedex_LoadUnownFont: ; 41a2c
-	ld a, BANK(sScratch)
-	call GetSRAMBank
-	ld hl, UnownFont
-	ld de, sScratch + $188
-	ld bc, 39 tiles
-	ld a, BANK(UnownFont)
-	call FarCopyBytes
-	ld hl, sScratch + $188
-	ld bc, 27 tiles
-	call Pokedex_InvertTiles
-	ld de, sScratch + $188
-	ld hl, vTiles2 tile $40
-	lb bc, BANK(Pokedex_LoadUnownFont), 27
-	call Request2bpp
-	call CloseSRAM
-	ret
-
-Pokedex_LoadUnownFrontpicTiles: ; 41a58 (10:5a58)
-	ld a, [UnownLetter]
-	push af
-	ld a, [wDexCurrentUnownIndex]
-	ld e, a
-	ld d, 0
-	ld hl, UnownDex
-	add hl, de
-	ld a, [hl]
-	ld [UnownLetter], a
-	ld a, UNOWN
-	ld [CurPartySpecies], a
-	call GetBaseData
-	ld de, vTiles2 tile $00
-	predef GetMonFrontpic
-	pop af
-	ld [UnownLetter], a
-	ret
-
-_NewPokedexEntry: ; 41a7f
-	xor a
-	ld [hBGMapMode], a
-	farcall DrawDexEntryScreenRightEdge
-	call Pokedex_ResetBGMapMode
-	call DisableLCD
-	call LoadStandardFont
-	call LoadFontsExtra
-	call Pokedex_LoadGFX
-	call Pokedex_LoadAnyFootprint
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	call Pokedex_DrawDexEntryScreenBG
-	call Pokedex_DrawFootprint
-	hlcoord 0, 17
-	ld [hl], $3b
-	inc hl
-	ld bc, 19
-	ld a, " "
-	call ByteFill
-	farcall DisplayDexEntry
-	call EnableLCD
-	call WaitBGMap
-	call GetBaseData
-	ld de, vTiles2
-	predef GetMonFrontpic
-	ld a, SCGB_POKEDEX
-	call Pokedex_GetSGBLayout
-	ld a, [CurPartySpecies]
-	call PlayCry
-	ret
-
-
-Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7)
-	ld a, $3
-	ld [hBGMapMode], a
-	ld c, 4
-	call DelayFrames
-	ret
-
-Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1)
-	ld a, $4
-	ld [hBGMapMode], a
-	ld c, 4
-	call DelayFrames
-	ret
-
-Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb)
-	ld a, [hCGB]
-	and a
-	jr z, .DMG
-	call Pokedex_SetBGMapMode4
-.DMG:
-	call Pokedex_SetBGMapMode3
-	ret
-
-
-Pokedex_ResetBGMapMode: ; 41af7
-	xor a
-	ld [hBGMapMode], a
-	ret
--- /dev/null
+++ b/engine/pokedex/newpokedexentry.asm
@@ -1,0 +1,52 @@
+NewPokedexEntry: ; fb877
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	call LowVolume
+	call ClearBGPalettes
+	call ClearTileMap
+	call UpdateSprites
+	call ClearSprites
+	ld a, [wPokedexStatus]
+	push af
+	ld a, [hSCX]
+	add POKEDEX_SCX
+	ld [hSCX], a
+	xor a
+	ld [wPokedexStatus], a
+	farcall _NewPokedexEntry
+	call WaitPressAorB_BlinkCursor
+	ld a, 1 ; page 2
+	ld [wPokedexStatus], a
+	farcall DisplayDexEntry
+	call WaitPressAorB_BlinkCursor
+	pop af
+	ld [wPokedexStatus], a
+	call MaxVolume
+	call RotateThreePalettesRight
+	ld a, [hSCX]
+	add -POKEDEX_SCX
+	ld [hSCX], a
+	call .ReturnFromDexRegistration
+	pop af
+	ld [hMapAnims], a
+	ret
+; fb8c8
+
+.ReturnFromDexRegistration: ; fb8c8
+	call ClearTileMap
+	call LoadFontsExtra
+	call LoadStandardFont
+	farcall Pokedex_PlaceFrontpicTopLeftCorner
+	call WaitBGMap2
+	farcall GetEnemyMonDVs
+	ld a, [hli]
+	ld [TempMonDVs], a
+	ld a, [hl]
+	ld [TempMonDVs + 1], a
+	ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+	call GetSGBLayout
+	call SetPalettes
+	ret
+; fb8f1
--- /dev/null
+++ b/engine/pokedex/pokedex.asm
@@ -1,0 +1,2592 @@
+; Pokedex_RunJumptable.Jumptable indexes
+	const_def
+	const DEXSTATE_MAIN_SCR
+	const DEXSTATE_UPDATE_MAIN_SCR
+	const DEXSTATE_DEX_ENTRY_SCR
+	const DEXSTATE_UPDATE_DEX_ENTRY_SCR
+	const DEXSTATE_REINIT_DEX_ENTRY_SCR
+	const DEXSTATE_SEARCH_SCR
+	const DEXSTATE_UPDATE_SEARCH_SCR
+	const DEXSTATE_OPTION_SCR
+	const DEXSTATE_UPDATE_OPTION_SCR
+	const DEXSTATE_SEARCH_RESULTS_SCR
+	const DEXSTATE_UPDATE_SEARCH_RESULTS_SCR
+	const DEXSTATE_UNOWN_MODE
+	const DEXSTATE_UPDATE_UNOWN_MODE
+	const DEXSTATE_EXIT
+
+POKEDEX_SCX EQU 5
+GLOBAL POKEDEX_SCX
+
+Pokedex: ; 40000
+
+	ld a, [hWX]
+	ld l, a
+	ld a, [hWY]
+	ld h, a
+	push hl
+	ld a, [hSCX]
+	push af
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+
+	xor a
+	ld [hMapAnims], a
+	call InitPokedex
+	call DelayFrame
+
+.main
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit
+	call Pokedex_RunJumptable
+	call DelayFrame
+	jr .main
+
+.exit
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	call WaitSFX
+	call ClearSprites
+	ld a, [wCurrentDexMode]
+	ld [wLastDexMode], a
+
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	pop af
+	ld [hSCX], a
+	pop hl
+	ld a, l
+	ld [hWX], a
+	ld a, h
+	ld [hWY], a
+	ret
+
+InitPokedex: ; 40063
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearTileMap
+	call Pokedex_LoadGFX
+
+	ld hl, wPokedexDataStart
+	ld bc, wPokedexDataEnd - wPokedexDataStart
+	xor a
+	call ByteFill
+
+	xor a
+	ld [wJumptableIndex], a
+	ld [wPrevDexEntryJumptableIndex], a
+	ld [wPrevDexEntryBackup], a
+	ld [wcf66], a
+
+	call Pokedex_CheckUnlockedUnownMode
+
+	ld a, [wLastDexMode]
+	ld [wCurrentDexMode], a
+
+	call Pokedex_OrderMonsByMode
+	call Pokedex_InitCursorPosition
+	call Pokedex_GetLandmark
+	farcall DrawDexEntryScreenRightEdge
+	call Pokedex_ResetBGMapMode
+	ret
+
+Pokedex_CheckUnlockedUnownMode: ; 400a2
+	ld a, [wStatusFlags]
+	bit 1, a
+	jr nz, .unlocked
+
+	xor a
+	ld [wUnlockedUnownMode], a
+	ret
+
+.unlocked
+	ld a, TRUE
+	ld [wUnlockedUnownMode], a
+	ret
+
+Pokedex_InitCursorPosition: ; 400b4
+	ld hl, wPokedexOrder
+	ld a, [wPrevDexEntry]
+	and a
+	jr z, .done
+	cp NUM_POKEMON + 1
+	jr nc, .done
+
+	ld b, a
+	ld a, [wDexListingEnd]
+	cp $8
+	jr c, .only_one_page
+
+	sub $7
+	ld c, a
+.loop1
+	ld a, b
+	cp [hl]
+	jr z, .done
+	inc hl
+	ld a, [wDexListingScrollOffset]
+	inc a
+	ld [wDexListingScrollOffset], a
+	dec c
+	jr nz, .loop1
+
+.only_one_page
+	ld c, $7
+.loop2
+	ld a, b
+	cp [hl]
+	jr z, .done
+	inc hl
+	ld a, [wDexListingCursor]
+	inc a
+	ld [wDexListingCursor], a
+	dec c
+	jr nz, .loop2
+
+.done
+	ret
+
+Pokedex_GetLandmark: ; 400ed
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+	cp SPECIAL_MAP
+	jr nz, .load
+
+	ld a, [BackupMapGroup]
+	ld b, a
+	ld a, [BackupMapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+.load
+	ld [wDexCurrentLocation], a
+	ret
+
+Pokedex_RunJumptable: ; 4010b
+	ld a, [wJumptableIndex]
+	ld hl, .Jumptable
+	call Pokedex_LoadPointer
+	jp hl
+
+.Jumptable: ; 40115 (10:4115)
+; entries correspond to DEXSTATE_* constants
+	dw Pokedex_InitMainScreen
+	dw Pokedex_UpdateMainScreen
+	dw Pokedex_InitDexEntryScreen
+	dw Pokedex_UpdateDexEntryScreen
+	dw Pokedex_ReinitDexEntryScreen
+	dw Pokedex_InitSearchScreen
+	dw Pokedex_UpdateSearchScreen
+	dw Pokedex_InitOptionScreen
+	dw Pokedex_UpdateOptionScreen
+	dw Pokedex_InitSearchResultsScreen
+	dw Pokedex_UpdateSearchResultsScreen
+	dw Pokedex_InitUnownMode
+	dw Pokedex_UpdateUnownMode
+	dw Pokedex_Exit
+
+Pokedex_IncrementDexPointer: ; 40131 (10:4131)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Pokedex_Exit: ; 40136 (10:4136)
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Pokedex_InitMainScreen: ; 4013c (10:413c)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	xor a
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	call ByteFill
+	farcall DrawPokedexListWindow
+	hlcoord 0, 17
+	ld de, String_START_SEARCH
+	call Pokedex_PlaceString
+	ld a, 7
+	ld [wDexListingHeight], a
+	call Pokedex_PrintListing
+	call Pokedex_SetBGMapMode_3ifDMG_4ifCGB
+	call Pokedex_ResetBGMapMode
+	call Pokedex_DrawMainScreenBG
+	ld a, POKEDEX_SCX
+	ld [hSCX], a
+
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	ld a, $4a
+	jr z, .okay
+	ld a, $47
+.okay
+	ld [hWX], a
+	xor a
+	ld [hWY], a
+	call WaitBGMap
+
+	call Pokedex_ResetBGMapMode
+	ld a, -1
+	ld [CurPartySpecies], a
+	ld a, SCGB_POKEDEX
+	call Pokedex_GetSGBLayout
+	call Pokedex_UpdateCursorOAM
+	farcall DrawPokedexListWindow
+	hlcoord 0, 17
+	ld de, String_START_SEARCH
+	call Pokedex_PlaceString
+	ld a, 7
+	ld [wDexListingHeight], a
+	call Pokedex_PrintListing
+	call Pokedex_IncrementDexPointer
+	ret
+
+Pokedex_UpdateMainScreen: ; 401ae (10:41ae)
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [hl]
+	and SELECT
+	jr nz, .select
+	ld a, [hl]
+	and START
+	jr nz, .start
+	call Pokedex_ListingHandleDPadInput
+	ret nc
+	call Pokedex_UpdateCursorOAM
+	xor a
+	ld [hBGMapMode], a
+	call Pokedex_PrintListing
+	call Pokedex_SetBGMapMode3
+	call Pokedex_ResetBGMapMode
+	ret
+
+.a
+	call Pokedex_GetSelectedMon
+	call Pokedex_CheckSeen
+	ret z
+	ld a, DEXSTATE_DEX_ENTRY_SCR
+	ld [wJumptableIndex], a
+	ld a, DEXSTATE_MAIN_SCR
+	ld [wPrevDexEntryJumptableIndex], a
+	ret
+
+.select
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_OPTION_SCR
+	ld [wJumptableIndex], a
+	xor a
+	ld [hSCX], a
+	ld a, $a7
+	ld [hWX], a
+	call DelayFrame
+	ret
+
+.start
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_SEARCH_SCR
+	ld [wJumptableIndex], a
+	xor a
+	ld [hSCX], a
+	ld a, $a7
+	ld [hWX], a
+	call DelayFrame
+	ret
+
+.b
+	ld a, DEXSTATE_EXIT
+	ld [wJumptableIndex], a
+	ret
+
+Pokedex_InitDexEntryScreen: ; 40217 (10:4217)
+	call LowVolume
+	xor a ; page 1
+	ld [wPokedexStatus], a
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Pokedex_LoadCurrentFootprint
+	call Pokedex_DrawDexEntryScreenBG
+	call Pokedex_InitArrowCursor
+	call Pokedex_GetSelectedMon
+	ld [wPrevDexEntry], a
+	farcall DisplayDexEntry
+	call Pokedex_DrawFootprint
+	call WaitBGMap
+	ld a, $a7
+	ld [hWX], a
+	call Pokedex_GetSelectedMon
+	ld [CurPartySpecies], a
+	ld a, SCGB_POKEDEX
+	call Pokedex_GetSGBLayout
+	ld a, [CurPartySpecies]
+	call PlayMonCry
+	call Pokedex_IncrementDexPointer
+	ret
+
+Pokedex_UpdateDexEntryScreen: ; 40258 (10:4258)
+	ld de, DexEntryScreen_ArrowCursorData
+	call Pokedex_MoveArrowCursor
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .return_to_prev_screen
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .do_menu_action
+	call Pokedex_NextOrPreviousDexEntry
+	ret nc
+	call Pokedex_IncrementDexPointer
+	ret
+
+.do_menu_action
+	ld a, [wDexArrowCursorPosIndex]
+	ld hl, DexEntryScreen_MenuActionJumptable
+	call Pokedex_LoadPointer
+	jp hl
+
+.return_to_prev_screen
+	ld a, [LastVolume]
+	and a
+	jr z, .max_volume
+	ld a, $77
+	ld [LastVolume], a
+
+.max_volume
+	call MaxVolume
+	ld a, [wPrevDexEntryJumptableIndex]
+	ld [wJumptableIndex], a
+	ret
+
+Pokedex_Page: ; 40292
+	ld a, [wPokedexStatus]
+	xor 1 ; toggle page
+	ld [wPokedexStatus], a
+	call Pokedex_GetSelectedMon
+	ld [wPrevDexEntry], a
+	farcall DisplayDexEntry
+	call WaitBGMap
+	ret
+
+Pokedex_ReinitDexEntryScreen: ; 402aa (10:42aa)
+; Reinitialize the Pokédex entry screen after changing the selected mon.
+	call Pokedex_BlackOutBG
+	xor a ; page 1
+	ld [wPokedexStatus], a
+	xor a
+	ld [hBGMapMode], a
+	call Pokedex_DrawDexEntryScreenBG
+	call Pokedex_InitArrowCursor
+	call Pokedex_LoadCurrentFootprint
+	call Pokedex_GetSelectedMon
+	ld [wPrevDexEntry], a
+	farcall DisplayDexEntry
+	call Pokedex_DrawFootprint
+	call Pokedex_LoadSelectedMonTiles
+	call WaitBGMap
+	call Pokedex_GetSelectedMon
+	ld [CurPartySpecies], a
+	ld a, SCGB_POKEDEX
+	call Pokedex_GetSGBLayout
+	ld a, [CurPartySpecies]
+	call PlayMonCry
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+DexEntryScreen_ArrowCursorData: ; 402e8
+	db D_RIGHT | D_LEFT, 4
+	dwcoord 1, 17  ; PAGE
+	dwcoord 6, 17  ; AREA
+	dwcoord 11, 17 ; CRY
+	dwcoord 15, 17 ; PRNT
+
+
+DexEntryScreen_MenuActionJumptable: ; 402f2
+	dw Pokedex_Page
+	dw .Area
+	dw .Cry
+	dw .Print
+
+.Area: ; 402fa
+	call Pokedex_BlackOutBG
+	xor a
+	ld [hSCX], a
+	call DelayFrame
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	call Pokedex_GetSelectedMon
+	ld a, [wDexCurrentLocation]
+	ld e, a
+	predef Pokedex_GetArea
+	call Pokedex_BlackOutBG
+	call DelayFrame
+	xor a
+	ld [hBGMapMode], a
+	ld a, $90
+	ld [hWY], a
+	ld a, POKEDEX_SCX
+	ld [hSCX], a
+	call DelayFrame
+	call Pokedex_RedisplayDexEntry
+	call Pokedex_LoadSelectedMonTiles
+	call WaitBGMap
+	call Pokedex_GetSelectedMon
+	ld [CurPartySpecies], a
+	ld a, SCGB_POKEDEX
+	call Pokedex_GetSGBLayout
+	ret
+
+.Cry: ; 40340
+	call Pokedex_GetSelectedMon
+	ld a, [wd265]
+	call GetCryIndex
+	ld e, c
+	ld d, b
+	call PlayCry
+	ret
+
+.Print: ; 4034f
+	call Pokedex_ApplyPrintPals
+	xor a
+	ld [hSCX], a
+	ld a, [wPrevDexEntryBackup]
+	push af
+	ld a, [wPrevDexEntryJumptableIndex]
+	push af
+	ld a, [wJumptableIndex]
+	push af
+	farcall PrintDexEntry
+	pop af
+	ld [wJumptableIndex], a
+	pop af
+	ld [wPrevDexEntryJumptableIndex], a
+	pop af
+	ld [wPrevDexEntryBackup], a
+	call ClearBGPalettes
+	call DisableLCD
+	call Pokedex_LoadInvertedFont
+	call Pokedex_RedisplayDexEntry
+	call EnableLCD
+	call WaitBGMap
+	ld a, POKEDEX_SCX
+	ld [hSCX], a
+	call Pokedex_ApplyUsualPals
+	ret
+
+Pokedex_RedisplayDexEntry: ; 4038d
+	call Pokedex_DrawDexEntryScreenBG
+	call Pokedex_GetSelectedMon
+	farcall DisplayDexEntry
+	call Pokedex_DrawFootprint
+	ret
+
+Pokedex_InitOptionScreen: ; 4039d (10:439d)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Pokedex_DrawOptionScreenBG
+	call Pokedex_InitArrowCursor
+	ld a, [wCurrentDexMode] ; Index of the topmost visible item in a scrolling menu ???
+	ld [wDexArrowCursorPosIndex], a
+	call Pokedex_DisplayModeDescription
+	call WaitBGMap
+	ld a, SCGB_POKEDEX_SEARCH_OPTION
+	call Pokedex_GetSGBLayout
+	call Pokedex_IncrementDexPointer
+	ret
+
+Pokedex_UpdateOptionScreen: ; 403be (10:43be)
+	ld a, [wUnlockedUnownMode]
+	and a
+	jr nz, .okay
+	ld de, .NoUnownModeArrowCursorData
+	jr .okay2
+.okay
+	ld de, .ArrowCursorData
+.okay2
+	call Pokedex_MoveArrowCursor
+	call c, Pokedex_DisplayModeDescription
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and SELECT | B_BUTTON
+	jr nz, .return_to_main_screen
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .do_menu_action
+	ret
+
+.do_menu_action
+	ld a, [wDexArrowCursorPosIndex]
+	ld hl, .MenuActionJumptable
+	call Pokedex_LoadPointer
+	jp hl
+
+.return_to_main_screen
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_MAIN_SCR
+	ld [wJumptableIndex], a
+	ret
+
+.NoUnownModeArrowCursorData: ; 403f3
+	db D_UP | D_DOWN, 3
+	dwcoord 2,  4 ; NEW
+	dwcoord 2,  6 ; OLD
+	dwcoord 2,  8 ; ABC
+
+.ArrowCursorData: ; 403fb
+	db D_UP | D_DOWN, 4
+	dwcoord 2,  4 ; NEW
+	dwcoord 2,  6 ; OLD
+	dwcoord 2,  8 ; ABC
+	dwcoord 2, 10 ; UNOWN
+
+.MenuActionJumptable: ; 40405 (10:4405)
+	dw .MenuAction_NewMode
+	dw .MenuAction_OldMode
+	dw .MenuAction_ABCMode
+	dw .MenuAction_UnownMode
+
+.MenuAction_NewMode: ; 4040d (10:440d)
+	ld b, DEXMODE_NEW
+	jr .ChangeMode
+
+.MenuAction_OldMode: ; 40411 (10:4411)
+	ld b, DEXMODE_OLD
+	jr .ChangeMode
+
+.MenuAction_ABCMode: ; 40415 (10:4415)
+	ld b, DEXMODE_ABC
+
+.ChangeMode: ; 40417 (10:4417)
+	ld a, [wCurrentDexMode]
+	cp b
+	jr z, .skip_changing_mode ; Skip if new mode is same as current.
+
+	ld a, b
+	ld [wCurrentDexMode], a
+	call Pokedex_OrderMonsByMode
+	call Pokedex_DisplayChangingModesMessage
+	xor a
+	ld [wDexListingScrollOffset], a
+	ld [wDexListingCursor], a
+	call Pokedex_InitCursorPosition
+
+.skip_changing_mode
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_MAIN_SCR
+	ld [wJumptableIndex], a
+	ret
+
+.MenuAction_UnownMode: ; 4043a (10:443a)
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_UNOWN_MODE
+	ld [wJumptableIndex], a
+	ret
+
+Pokedex_InitSearchScreen: ; 40443 (10:4443)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Pokedex_DrawSearchScreenBG
+	call Pokedex_InitArrowCursor
+	ld a, NORMAL + 1
+	ld [wDexSearchMonType1], a
+	xor a
+	ld [wDexSearchMonType2], a
+	call Pokedex_PlaceSearchScreenTypeStrings
+	xor a
+	ld [wDexSearchSlowpokeFrame], a
+	farcall DoDexSearchSlowpokeFrame
+	call WaitBGMap
+	ld a, SCGB_POKEDEX_SEARCH_OPTION
+	call Pokedex_GetSGBLayout
+	call Pokedex_IncrementDexPointer
+	ret
+
+Pokedex_UpdateSearchScreen: ; 40471 (10:4471)
+	ld de, .ArrowCursorData
+	call Pokedex_MoveArrowCursor
+	call Pokedex_UpdateSearchMonType
+	call c, Pokedex_PlaceSearchScreenTypeStrings
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and START | B_BUTTON
+	jr nz, .cancel
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .do_menu_action
+	ret
+
+.do_menu_action
+	ld a, [wDexArrowCursorPosIndex]
+	ld hl, .MenuActionJumptable
+	call Pokedex_LoadPointer
+	jp hl
+
+.cancel
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_MAIN_SCR
+	ld [wJumptableIndex], a
+	ret
+
+.ArrowCursorData: ; 4049e
+	db D_UP | D_DOWN, 4
+	dwcoord 2, 4  ; TYPE 1
+	dwcoord 2, 6  ; TYPE 2
+	dwcoord 2, 13 ; BEGIN SEARCH
+	dwcoord 2, 15 ; CANCEL
+
+.MenuActionJumptable: ; 404a8
+	dw .MenuAction_MonSearchType
+	dw .MenuAction_MonSearchType
+	dw .MenuAction_BeginSearch
+	dw .MenuAction_Cancel
+
+.MenuAction_MonSearchType: ; 404b0
+	call Pokedex_NextSearchMonType
+	call Pokedex_PlaceSearchScreenTypeStrings
+	ret
+
+.MenuAction_BeginSearch: ; 404b7
+	call Pokedex_SearchForMons
+	farcall AnimateDexSearchSlowpoke
+	ld a, [wDexSearchResultCount]
+	and a
+	jr nz, .show_search_results
+
+; No mon with matching types was found.
+	call Pokedex_OrderMonsByMode
+	call Pokedex_DisplayTypeNotFoundMessage
+	xor a
+	ld [hBGMapMode], a
+	call Pokedex_DrawSearchScreenBG
+	call Pokedex_InitArrowCursor
+	call Pokedex_PlaceSearchScreenTypeStrings
+	call WaitBGMap
+	ret
+
+.show_search_results
+	ld [wDexListingEnd], a
+	ld a, [wDexListingScrollOffset]
+	ld [wDexListingScrollOffsetBackup], a
+	ld a, [wDexListingCursor]
+	ld [wDexListingCursorBackup], a
+	ld a, [wPrevDexEntry]
+	ld [wPrevDexEntryBackup], a
+	xor a
+	ld [wDexListingScrollOffset], a
+	ld [wDexListingCursor], a
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_SEARCH_RESULTS_SCR
+	ld [wJumptableIndex], a
+	ret
+
+.MenuAction_Cancel: ; 40501
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_MAIN_SCR
+	ld [wJumptableIndex], a
+	ret
+
+Pokedex_InitSearchResultsScreen: ; 4050a (10:450a)
+	xor a
+	ld [hBGMapMode], a
+	xor a
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	call Pokedex_SetBGMapMode4
+	call Pokedex_ResetBGMapMode
+	farcall DrawPokedexSearchResultsWindow
+	call Pokedex_PlaceSearchResultsTypeStrings
+	ld a, 4
+	ld [wDexListingHeight], a
+	call Pokedex_PrintListing
+	call Pokedex_SetBGMapMode3
+	call Pokedex_ResetBGMapMode
+	call Pokedex_DrawSearchResultsScreenBG
+	ld a, POKEDEX_SCX
+	ld [hSCX], a
+	ld a, $4a
+	ld [hWX], a
+	xor a
+	ld [hWY], a
+	call WaitBGMap
+	call Pokedex_ResetBGMapMode
+	farcall DrawPokedexSearchResultsWindow
+	call Pokedex_PlaceSearchResultsTypeStrings
+	call Pokedex_UpdateSearchResultsCursorOAM
+	ld a, -1
+	ld [CurPartySpecies], a
+	ld a, SCGB_POKEDEX
+	call Pokedex_GetSGBLayout
+	call Pokedex_IncrementDexPointer
+	ret
+
+Pokedex_UpdateSearchResultsScreen: ; 40562 (10:4562)
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .return_to_search_screen
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .go_to_dex_entry
+	call Pokedex_ListingHandleDPadInput
+	ret nc
+	call Pokedex_UpdateSearchResultsCursorOAM
+	xor a
+	ld [hBGMapMode], a
+	call Pokedex_PrintListing
+	call Pokedex_SetBGMapMode3
+	call Pokedex_ResetBGMapMode
+	ret
+
+.go_to_dex_entry
+	call Pokedex_GetSelectedMon
+	call Pokedex_CheckSeen
+	ret z
+	ld a, DEXSTATE_DEX_ENTRY_SCR
+	ld [wJumptableIndex], a
+	ld a, DEXSTATE_SEARCH_RESULTS_SCR
+	ld [wPrevDexEntryJumptableIndex], a
+	ret
+
+.return_to_search_screen
+	ld a, [wDexListingScrollOffsetBackup]
+	ld [wDexListingScrollOffset], a
+	ld a, [wDexListingCursorBackup]
+	ld [wDexListingCursor], a
+	ld a, [wPrevDexEntryBackup]
+	ld [wPrevDexEntry], a
+	call Pokedex_BlackOutBG
+	call ClearSprites
+	call Pokedex_OrderMonsByMode
+	ld a, DEXSTATE_SEARCH_SCR
+	ld [wJumptableIndex], a
+	xor a
+	ld [hSCX], a
+	ld a, $a7
+	ld [hWX], a
+	ret
+
+Pokedex_InitUnownMode: ; 405bd (10:45bd)
+	call Pokedex_LoadUnownFont
+	call Pokedex_DrawUnownModeBG
+	xor a
+	ld [wDexCurrentUnownIndex], a
+	call Pokedex_LoadUnownFrontpicTiles
+	call Pokedex_UnownModePlaceCursor
+	farcall PrintUnownWord
+	call WaitBGMap
+	ld a, SCGB_POKEDEX_UNOWN_MODE
+	call Pokedex_GetSGBLayout
+	call Pokedex_IncrementDexPointer
+	ret
+
+Pokedex_UpdateUnownMode: ; 405df (10:45df)
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and A_BUTTON | B_BUTTON
+	jr nz, .a_b
+	call Pokedex_UnownModeHandleDPadInput
+	ret
+
+.a_b
+	call Pokedex_BlackOutBG
+	ld a, DEXSTATE_OPTION_SCR
+	ld [wJumptableIndex], a
+	call DelayFrame
+	call Pokedex_CheckSGB
+	jr nz, .decompress
+	farcall LoadSGBPokedexGFX2
+	jr .done
+
+.decompress
+	ld hl, PokedexLZ
+	ld de, vTiles2 tile $31
+	lb bc, BANK(PokedexLZ), 58
+	call DecompressRequest2bpp
+
+.done
+	ret
+
+Pokedex_UnownModeHandleDPadInput: ; 40610 (10:4610)
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .right
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .left
+	ret
+
+.right
+	ld a, [wDexUnownCount]
+	ld e, a
+	ld hl, wDexCurrentUnownIndex
+	ld a, [hl]
+	inc a
+	cp e
+	ret nc
+	ld a, [hl]
+	inc [hl]
+	jr .update
+
+.left
+	ld hl, wDexCurrentUnownIndex
+	ld a, [hl]
+	and a
+	ret z
+	ld a, [hl]
+	dec [hl]
+
+.update
+	push af
+	xor a
+	ld [hBGMapMode], a
+	pop af
+	call Pokedex_UnownModeEraseCursor
+	call Pokedex_LoadUnownFrontpicTiles
+	call Pokedex_UnownModePlaceCursor
+	farcall PrintUnownWord
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+
+Pokedex_UnownModeEraseCursor: ; 40654 (10:4654)
+	ld c, " "
+	jr Pokedex_UnownModeUpdateCursorGfx
+
+Pokedex_UnownModePlaceCursor: ; 40658 (10:4658)
+	ld a, [wDexCurrentUnownIndex]
+	ld c, $5a ; diamond cursor
+
+Pokedex_UnownModeUpdateCursorGfx: ; 4065d (10:465d)
+	ld e, a
+	ld d, 0
+	ld hl, UnownModeLetterAndCursorCoords + 2
+rept 4
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld [hl], c
+	ret
+
+Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c)
+	ld a, [wDexListingCursor]
+	ld [wBackupDexListingCursor], a
+	ld a, [wDexListingScrollOffset]
+	ld [wBackupDexListingPage], a
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .down
+	and a
+	ret
+
+.up
+	ld a, [wDexListingHeight]
+	ld d, a
+	ld a, [wDexListingEnd]
+	ld e, a
+	call Pokedex_ListingMoveCursorUp
+	jr nc, .nope
+	call Pokedex_GetSelectedMon
+	call Pokedex_CheckSeen
+	jr nz, .yep
+	jr .up
+
+.down
+	ld a, [wDexListingHeight]
+	ld d, a
+	ld a, [wDexListingEnd]
+	ld e, a
+	call Pokedex_ListingMoveCursorDown
+	jr nc, .nope
+	call Pokedex_GetSelectedMon
+	call Pokedex_CheckSeen
+	jr nz, .yep
+	jr .down
+
+.yep
+	scf
+	ret
+
+.nope
+	ld a, [wBackupDexListingCursor]
+	ld [wDexListingCursor], a
+	ld a, [wBackupDexListingPage]
+	ld [wDexListingScrollOffset], a
+	and a
+	ret
+
+Pokedex_ListingHandleDPadInput: ; 406c5 (10:46c5)
+; Handles D-pad input for a list of Pokémon.
+	ld a, [wDexListingHeight]
+	ld d, a
+	ld a, [wDexListingEnd]
+	ld e, a
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, Pokedex_ListingMoveCursorUp
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Pokedex_ListingMoveCursorDown
+	ld a, d
+	cp e
+	jr nc, Pokedex_ListingPosStayedSame
+	ld a, [hl]
+	and D_LEFT
+	jr nz, Pokedex_ListingMoveUpOnePage
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, Pokedex_ListingMoveDownOnePage
+	jr Pokedex_ListingPosStayedSame
+
+Pokedex_ListingMoveCursorUp: ; 406ea (10:46ea)
+	ld hl, wDexListingCursor
+	ld a, [hl]
+	and a
+	jr z, .try_scrolling
+	dec [hl]
+	jr Pokedex_ListingPosChanged
+.try_scrolling
+	ld hl, wDexListingScrollOffset
+	ld a, [hl]
+	and a
+	jr z, Pokedex_ListingPosStayedSame
+	dec [hl]
+	jr Pokedex_ListingPosChanged
+
+Pokedex_ListingMoveCursorDown: ; 406fe (10:46fe)
+	ld hl, wDexListingCursor
+	ld a, [hl]
+	inc a
+	cp e
+	jr nc, Pokedex_ListingPosStayedSame
+	cp d
+	jr nc, .try_scrolling
+	inc [hl]
+	jr Pokedex_ListingPosChanged
+.try_scrolling
+	ld hl, wDexListingScrollOffset
+	add [hl]
+	cp e
+	jr nc, Pokedex_ListingPosStayedSame
+	inc [hl]
+	jr Pokedex_ListingPosChanged
+
+Pokedex_ListingMoveUpOnePage: ; 40716 (10:4716)
+	ld hl, wDexListingScrollOffset
+	ld a, [hl]
+	and a
+	jr z, Pokedex_ListingPosStayedSame
+	cp d
+	jr nc, .not_near_top
+; If we're already less than page away from the top, go to the top.
+	xor a
+	ld [hl], a
+	jr Pokedex_ListingPosChanged
+.not_near_top
+	sub d
+	ld [hl], a
+	jr Pokedex_ListingPosChanged
+
+Pokedex_ListingMoveDownOnePage: ; 40728 (10:4728)
+; When moving down a page, the return value always report a change in position.
+	ld hl, wDexListingScrollOffset
+	ld a, d
+	add a
+	add [hl]
+	jr c, .near_bottom
+	cp e
+	jr c, .not_near_bottom
+.near_bottom
+	ld a, e
+	sub d
+	ld [hl], a
+	jr Pokedex_ListingPosChanged
+.not_near_bottom
+	ld a, [hl]
+	add d
+	ld [hl], a
+	jr Pokedex_ListingPosChanged
+
+Pokedex_ListingPosStayedSame: ; 4073d (10:473d)
+	and a
+	ret
+
+Pokedex_ListingPosChanged: ; 4073f (10:473f)
+	scf
+	ret
+
+Pokedex_FillColumn: ; 40741
+; Fills a column starting at HL, going downwards.
+; B is the height of the column and A is the tile it's filled with.
+	push de
+	ld de, SCREEN_WIDTH
+.loop
+	ld [hl], a
+	add hl, de
+	dec b
+	jr nz, .loop
+	pop de
+	ret
+
+
+Pokedex_DrawMainScreenBG: ; 4074c (10:474c)
+; Draws the left sidebar and the bottom bar on the main screen.
+	hlcoord 0, 17
+	ld de, String_START_SEARCH
+	call Pokedex_PlaceString
+	ld a, $32
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	hlcoord 0, 0
+	lb bc, 7, 7
+	call Pokedex_PlaceBorder
+	hlcoord 0, 9
+	lb bc, 6, 7
+	call Pokedex_PlaceBorder
+	hlcoord 1, 11
+	ld de, String_SEEN
+	call Pokedex_PlaceString
+	ld hl, PokedexSeen
+	ld b, EndPokedexSeen - PokedexSeen
+	call CountSetBits
+	ld de, wd265
+	hlcoord 5, 12
+	lb bc, 1, 3
+	call PrintNum
+	hlcoord 1, 14
+	ld de, String_OWN
+	call Pokedex_PlaceString
+	ld hl, PokedexCaught
+	ld b, EndPokedexCaught - PokedexCaught
+	call CountSetBits
+	ld de, wd265
+	hlcoord 5, 15
+	lb bc, 1, 3
+	call PrintNum
+	hlcoord 1, 17
+	ld de, String_SELECT_OPTION
+	call Pokedex_PlaceString
+	hlcoord 8, 1
+	ld b, 7
+	ld a, $5a
+	call Pokedex_FillColumn
+	hlcoord 8, 10
+	ld b, 6
+	ld a, $5a
+	call Pokedex_FillColumn
+	hlcoord 8, 0
+	ld [hl], $59
+	hlcoord 8, 8
+	ld [hl], $53
+	hlcoord 8, 9
+	ld [hl], $54
+	hlcoord 8, 16
+	ld [hl], $5b
+	call Pokedex_PlaceFrontpicTopLeftCorner
+	ret
+
+String_SEEN: ; 407e1
+	db "SEEN", -1
+String_OWN: ; 407e6
+	db "OWN", -1
+String_SELECT_OPTION: ; 407ea
+	db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION
+	; fallthrough
+String_START_SEARCH: ; 407f2
+	db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, -1 ; START > SEARCH
+
+Pokedex_DrawDexEntryScreenBG: ; 407fd
+	call Pokedex_FillBackgroundColor2
+	hlcoord 0, 0
+	lb bc, 15, 18
+	call Pokedex_PlaceBorder
+	hlcoord 19, 0
+	ld [hl], $34
+	hlcoord 19, 1
+	ld a, " "
+	ld b, 15
+	call Pokedex_FillColumn
+	ld [hl], $39
+	hlcoord 1, 10
+	ld bc, 19
+	ld a, $61
+	call ByteFill
+	hlcoord 1, 17
+	ld bc, 18
+	ld a, " "
+	call ByteFill
+	hlcoord 9, 7
+	ld de, .Height
+	call Pokedex_PlaceString
+	hlcoord 9, 9
+	ld de, .Weight
+	call Pokedex_PlaceString
+	hlcoord 0, 17
+	ld de, .MenuItems
+	call Pokedex_PlaceString
+	call Pokedex_PlaceFrontpicTopLeftCorner
+	ret
+
+.Unused: ; 4084f
+	db $5c, $5d, -1 ; No.
+.Height: ; 40852
+	db "HT  ?", $5e, "??", $5f, -1 ; HT  ?'??"
+.Weight: ; 4085c
+	db "WT   ???lb", -1 ; WT   ???lb
+.MenuItems: ; 40867
+	db $3b, " PAGE AREA CRY PRNT", -1
+
+Pokedex_DrawOptionScreenBG: ; 4087c (10:487c)
+	call Pokedex_FillBackgroundColor2
+	hlcoord 0, 2
+	lb bc, 8, 18
+	call Pokedex_PlaceBorder
+	hlcoord 0, 12
+	lb bc, 4, 18
+	call Pokedex_PlaceBorder
+	hlcoord 0, 1
+	ld de, .Title
+	call Pokedex_PlaceString
+	hlcoord 3, 4
+	ld de, .Modes
+	call PlaceString
+	ld a, [wUnlockedUnownMode]
+	and a
+	ret z
+	hlcoord 3, 10
+	ld de, .UnownMode
+	call PlaceString
+	ret
+
+.Title: ; 408b2
+	db $3b, " OPTION ", $3c, -1
+
+.Modes: ; 408bd
+	db   "NEW #DEX MODE"
+	next "OLD #DEX MODE"
+	next "A to Z MODE"
+	db "@"
+
+.UnownMode: ; 408e5
+	db "UNOWN MODE@"
+
+Pokedex_DrawSearchScreenBG: ; 408f0 (10:48f0)
+	call Pokedex_FillBackgroundColor2
+	hlcoord 0, 2
+	lb bc, 14, 18
+	call Pokedex_PlaceBorder
+	hlcoord 0, 1
+	ld de, .Title
+	call Pokedex_PlaceString
+	hlcoord 8, 4
+	ld de, .TypeLeftRightArrows
+	call Pokedex_PlaceString
+	hlcoord 8, 6
+	ld de, .TypeLeftRightArrows
+	call Pokedex_PlaceString
+	hlcoord 3, 4
+	ld de, .Types
+	call PlaceString
+	hlcoord 3, 13
+	ld de, .Menu
+	call PlaceString
+	ret
+
+.Title: ; 4092a
+	db $3b, " SEARCH ", $3c, -1
+
+.TypeLeftRightArrows: ; 40935
+	db $3d, "        ", $3e, -1
+
+.Types: ; 40940
+	db   "TYPE1"
+	next "TYPE2"
+	db   "@"
+
+.Menu: ; 4094c
+	db   "BEGIN SEARCH!!"
+	next "CANCEL"
+	db   "@"
+
+Pokedex_DrawSearchResultsScreenBG: ; 40962 (10:4962)
+	call Pokedex_FillBackgroundColor2
+	hlcoord 0, 0
+	lb bc, 7, 7
+	call Pokedex_PlaceBorder
+	hlcoord 0, 11
+	lb bc, 5, 18
+	call Pokedex_PlaceBorder
+	hlcoord 1, 12
+	ld de, .BottomWindowText
+	call PlaceString
+	ld de, wDexSearchResultCount
+	hlcoord 1, 16
+	lb bc, 1, 3
+	call PrintNum
+	hlcoord 8, 0
+	ld [hl], $59
+	hlcoord 8, 1
+	ld b, 7
+	ld a, $5a
+	call Pokedex_FillColumn
+	hlcoord 8, 8
+	ld [hl], $53
+	hlcoord 8, 9
+	ld [hl], $69
+	hlcoord 8, 10
+	ld [hl], $6a
+	call Pokedex_PlaceFrontpicTopLeftCorner
+	ret
+
+.BottomWindowText: ; 409ae
+	db   "SEARCH RESULTS"
+	next "  TYPE"
+	next "    FOUND!"
+	db   "@"
+
+Pokedex_PlaceSearchResultsTypeStrings: ; 409cf (10:49cf)
+	ld a, [wDexSearchMonType1]
+	hlcoord 0, 14
+	call Pokedex_PlaceTypeString
+	ld a, [wDexSearchMonType1]
+	ld b, a
+	ld a, [wDexSearchMonType2]
+	and a
+	jr z, .done
+	cp b
+	jr z, .done
+	hlcoord 2, 15
+	call Pokedex_PlaceTypeString
+	hlcoord 1, 15
+	ld [hl], "/"
+.done
+	ret
+
+Pokedex_DrawUnownModeBG: ; 409f1 (10:49f1)
+	call Pokedex_FillBackgroundColor2
+	hlcoord 2, 1
+	lb bc, 10, 13
+	call Pokedex_PlaceBorder
+	hlcoord 2, 14
+	lb bc, 1, 13
+	call Pokedex_PlaceBorder
+	hlcoord 2, 15
+	ld [hl], $3d
+	hlcoord 16, 15
+	ld [hl], $3e
+	hlcoord 6, 5
+	call Pokedex_PlaceFrontpicAtHL
+	ld de, 0
+	ld b, 0
+	ld c, 26
+.loop
+	ld hl, UnownDex
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .done
+	push af
+	ld hl, UnownModeLetterAndCursorCoords
+rept 4
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	add $40 - 1 ; Unown A
+	ld [hl], a
+	inc de
+	inc b
+	dec c
+	jr nz, .loop
+.done
+	ld a, b
+	ld [wDexUnownCount], a
+	ret
+
+UnownModeLetterAndCursorCoords: ; 40a3e
+; entries correspond to Unown forms
+;           letter, cursor
+	dwcoord   4,11,   3,11 ; A
+	dwcoord   4,10,   3,10 ; B
+	dwcoord   4, 9,   3, 9 ; C
+	dwcoord   4, 8,   3, 8 ; D
+	dwcoord   4, 7,   3, 7 ; E
+	dwcoord   4, 6,   3, 6 ; F
+	dwcoord   4, 5,   3, 5 ; G
+	dwcoord   4, 4,   3, 4 ; H
+	dwcoord   4, 3,   3, 2 ; I
+	dwcoord   5, 3,   5, 2 ; J
+	dwcoord   6, 3,   6, 2 ; K
+	dwcoord   7, 3,   7, 2 ; L
+	dwcoord   8, 3,   8, 2 ; M
+	dwcoord   9, 3,   9, 2 ; N
+	dwcoord  10, 3,  10, 2 ; O
+	dwcoord  11, 3,  11, 2 ; P
+	dwcoord  12, 3,  12, 2 ; Q
+	dwcoord  13, 3,  13, 2 ; R
+	dwcoord  14, 3,  15, 2 ; S
+	dwcoord  14, 4,  15, 4 ; T
+	dwcoord  14, 5,  15, 5 ; U
+	dwcoord  14, 6,  15, 6 ; V
+	dwcoord  14, 7,  15, 7 ; W
+	dwcoord  14, 8,  15, 8 ; X
+	dwcoord  14, 9,  15, 9 ; Y
+	dwcoord  14,10,  15,10 ; Z
+
+Pokedex_FillBackgroundColor2: ; 40aa6
+	hlcoord 0, 0
+	ld a, $32
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	ret
+
+Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2
+	hlcoord 1, 1
+Pokedex_PlaceFrontpicAtHL: ; 40ab5
+	xor a
+	ld b, $7
+.row
+	ld c, $7
+	push af
+	push hl
+.col
+	ld [hli], a
+	add $7
+	dec c
+	jr nz, .col
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	pop af
+	inc a
+	dec b
+	jr nz, .row
+	ret
+
+Pokedex_PlaceString: ; 40acd
+.loop
+	ld a, [de]
+	cp -1
+	ret z
+	inc de
+	ld [hli], a
+	jr .loop
+
+
+Pokedex_PlaceBorder: ; 40ad5
+	push hl
+	ld a, $33
+	ld [hli], a
+	ld d, $34
+	call .FillRow
+	ld a, $35
+	ld [hl], a
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+.loop
+	push hl
+	ld a, $36
+	ld [hli], a
+	ld d, $7f
+	call .FillRow
+	ld a, $37
+	ld [hl], a
+	pop hl
+	ld de, SCREEN_WIDTH
+	add hl, de
+	dec b
+	jr nz, .loop
+	ld a, $38
+	ld [hli], a
+	ld d, $39
+	call .FillRow
+	ld a, $3a
+	ld [hl], a
+	ret
+
+.FillRow: ; 40b06
+	ld e, c
+.row_loop
+	ld a, e
+	and a
+	ret z
+	ld a, d
+	ld [hli], a
+	dec e
+	jr .row_loop
+
+
+Pokedex_PrintListing: ; 40b0f (10:4b0f)
+; Prints the list of Pokémon on the main Pokédex screen.
+
+; This check is completely useless.
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jr z, .okay
+	ld c, 11
+	jr .resume
+.okay
+	ld c, 11
+; End useless check
+
+.resume
+; Clear (2 * [wDexListingHeight] + 1) by 11 box starting at 0,1
+	hlcoord 0, 1
+	ld a, [wDexListingHeight]
+	add a
+	inc a
+	ld b, a
+	ld a, " "
+	call Pokedex_FillBox
+
+; Load de with wPokedexOrder + [wDexListingScrollOffset]
+	ld a, [wDexListingScrollOffset]
+	ld e, a
+	ld d, $0
+	ld hl, wPokedexOrder
+	add hl, de
+	ld e, l
+	ld d, h
+	hlcoord 0, 2
+	ld a, [wDexListingHeight]
+.loop
+	push af
+	ld a, [de]
+	ld [wd265], a
+	push de
+	push hl
+	call .PrintEntry
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop de
+	inc de
+	pop af
+	dec a
+	jr nz, .loop
+	call Pokedex_LoadSelectedMonTiles
+	ret
+
+.PrintEntry: ; 40b55 (10:4b55)
+; Prints one entry in the list of Pokémon on the main Pokédex screen.
+	and a
+	ret z
+	call Pokedex_PrintNumberIfOldMode
+	call Pokedex_PlaceDefaultStringIfNotSeen
+	ret c
+	call Pokedex_PlaceCaughtSymbolIfCaught
+	push hl
+	call GetPokemonName
+	pop hl
+	call PlaceString
+	ret
+
+Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a)
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jr z, .printnum
+	ret
+
+.printnum
+	push hl
+	ld de, -SCREEN_WIDTH
+	add hl, de
+	ld de, wd265
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+	call PrintNum
+	pop hl
+	ret
+
+Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82)
+	call Pokedex_CheckCaught
+	jr nz, .place_caught_symbol
+	inc hl
+	ret
+
+.place_caught_symbol
+	ld a, $4f
+	ld [hli], a
+	ret
+
+Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d)
+	call Pokedex_CheckSeen
+	ret nz
+	inc hl
+	ld de, .NameNotSeen
+	call PlaceString
+	scf
+	ret
+
+.NameNotSeen: ; 40b9a
+	db "-----@"
+
+Pokedex_DrawFootprint: ; 40ba0
+	hlcoord 18, 1
+	ld a, $62
+	ld [hli], a
+	inc a
+	ld [hl], a
+	hlcoord 18, 2
+	ld a, $64
+	ld [hli], a
+	inc a
+	ld [hl], a
+	ret
+
+
+Pokedex_GetSelectedMon: ; 40bb1
+; Gets the species of the currently selected Pokémon. This corresponds to the
+; position of the cursor in the main listing, but this function can be used
+; on all Pokédex screens.
+	ld a, [wDexListingCursor]
+	ld hl, wDexListingScrollOffset
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, wPokedexOrder
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+	ret
+
+
+Pokedex_CheckCaught: ; 40bc4 (10:4bc4)
+	push de
+	push hl
+	ld a, [wd265]
+	dec a
+	call CheckCaughtMon
+	pop hl
+	pop de
+	ret
+
+
+Pokedex_CheckSeen: ; 40bd0
+	push de
+	push hl
+	ld a, [wd265]
+	dec a
+	call CheckSeenMon
+	pop hl
+	pop de
+	ret
+
+
+
+Pokedex_OrderMonsByMode: ; 40bdc
+	ld hl, wPokedexOrder
+	ld bc, wPokedexOrderEnd - wPokedexOrder
+	xor a
+	call ByteFill
+	ld a, [wCurrentDexMode]
+	ld hl, .Jumptable
+	call Pokedex_LoadPointer
+	jp hl
+
+.Jumptable: ; 40bf0 (10:4bf0)
+	dw .NewMode
+	dw .OldMode
+	dw Pokedex_ABCMode
+
+.NewMode: ; 40bf6 (10:4bf6)
+	ld de, NewPokedexOrder
+	ld hl, wPokedexOrder
+	ld c, NUM_POKEMON
+.loopnew
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .loopnew
+	call .FindLastSeen
+	ret
+
+.OldMode: ; 40c08 (10:4c08)
+	ld hl, wPokedexOrder
+	ld a, $1
+	ld c, NUM_POKEMON
+.loopold
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .loopold
+	call .FindLastSeen
+	ret
+
+.FindLastSeen: ; 40c18 (10:4c18)
+	ld hl, wPokedexOrder + NUM_POKEMON - 1
+	ld d, NUM_POKEMON
+	ld e, d
+.loopfindend
+	ld a, [hld]
+	ld [wd265], a
+	call Pokedex_CheckSeen
+	jr nz, .foundend
+	dec d
+	dec e
+	jr nz, .loopfindend
+.foundend
+	ld a, d
+	ld [wDexListingEnd], a
+	ret
+
+Pokedex_ABCMode: ; 40c30
+	xor a
+	ld [wDexListingEnd], a
+	ld hl, wPokedexOrder
+	ld de, AlphabeticalPokedexOrder
+	ld c, NUM_POKEMON
+.loop1abc
+	push bc
+	ld a, [de]
+	ld [wd265], a
+	call Pokedex_CheckSeen
+	jr z, .skipabc
+	ld a, [wd265]
+	ld [hli], a
+	ld a, [wDexListingEnd]
+	inc a
+	ld [wDexListingEnd], a
+
+.skipabc
+	inc de
+	pop bc
+	dec c
+	jr nz, .loop1abc
+	ld a, [wDexListingEnd]
+	ld c, 0
+.loop2abc
+	cp NUM_POKEMON
+	jr z, .doneabc
+	ld [hl], c
+	inc hl
+	inc a
+	jr .loop2abc
+
+.doneabc
+	ret
+
+
+INCLUDE "data/pokemon/dex_order_alpha.asm"
+
+INCLUDE "data/pokemon/dex_order_new.asm"
+
+
+Pokedex_DisplayModeDescription: ; 40e5b
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 12
+	lb bc, 4, 18
+	call Pokedex_PlaceBorder
+	ld a, [wDexArrowCursorPosIndex]
+	ld hl, .Modes
+	call Pokedex_LoadPointer
+	ld e, l
+	ld d, h
+	hlcoord 1, 14
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.Modes: ; 40e7d
+	dw .NewMode
+	dw .OldMode
+	dw .ABCMode
+	dw .UnownMode
+
+.NewMode: ; 40e85
+	db   "<PK><MN> are listed by"
+	next "evolution type.@"
+
+.OldMode: ; 40ea6
+	db   "<PK><MN> are listed by"
+	next "official type.@"
+
+.ABCMode: ; 40ec6
+	db   "<PK><MN> are listed"
+	next "alphabetically.@"
+
+.UnownMode: ; 40ee4
+	db   "UNOWN are listed"
+	next "in catching order.@"
+
+Pokedex_DisplayChangingModesMessage: ; 40f08 (10:4f08)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 12
+	lb bc, 4, 18
+	call Pokedex_PlaceBorder
+	ld de, String_ChangingModesPleaseWait
+	hlcoord 1, 14
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, 64
+	call DelayFrames
+	ld de, SFX_CHANGE_DEX_MODE
+	call PlaySFX
+	ld c, 64
+	call DelayFrames
+	ret
+
+String_ChangingModesPleaseWait: ; 40f32
+	db   "Changing modes."
+	next "Please wait.@"
+
+Pokedex_UpdateSearchMonType: ; 40f4f (10:4f4f)
+	ld a, [wDexArrowCursorPosIndex]
+	cp 2
+	jr nc, .no_change
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_LEFT
+	jr nz, Pokedex_PrevSearchMonType
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, Pokedex_NextSearchMonType
+.no_change
+	and a
+	ret
+
+Pokedex_PrevSearchMonType: ; 40f65
+	ld a, [wDexArrowCursorPosIndex]
+	and a
+	jr nz, .type2
+
+	ld hl, wDexSearchMonType1
+	ld a, [hl]
+	cp 1
+	jr z, .wrap_around
+	dec [hl]
+	jr .done
+
+.type2
+	ld hl, wDexSearchMonType2
+	ld a, [hl]
+	and a
+	jr z, .wrap_around
+	dec [hl]
+	jr .done
+
+.wrap_around
+	ld [hl], NUM_TYPES - 1
+
+.done
+	scf
+	ret
+
+Pokedex_NextSearchMonType: ; 40f84
+	ld a, [wDexArrowCursorPosIndex]
+	and a
+	jr nz, .type2
+
+	ld hl, wDexSearchMonType1
+	ld a, [hl]
+	cp NUM_TYPES - 1
+	jr nc, .type1_wrap_around
+	inc [hl]
+	jr .done
+.type1_wrap_around
+	ld [hl], 1
+	jr .done
+
+.type2
+	ld hl, wDexSearchMonType2
+	ld a, [hl]
+	cp NUM_TYPES - 1
+	jr nc, .type2_wrap_around
+	inc [hl]
+	jr .done
+.type2_wrap_around
+	ld [hl], 0
+
+.done
+	scf
+	ret
+
+Pokedex_PlaceSearchScreenTypeStrings: ; 40fa8 (10:4fa8)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 9, 3
+	lb bc, 4, 8
+	ld a, " "
+	call Pokedex_FillBox
+	ld a, [wDexSearchMonType1]
+	hlcoord 9, 4
+	call Pokedex_PlaceTypeString
+	ld a, [wDexSearchMonType2]
+	hlcoord 9, 6
+	call Pokedex_PlaceTypeString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+Pokedex_PlaceTypeString: ; 40fcd (10:4fcd)
+	push hl
+	ld e, a
+	ld d, 0
+	ld hl, PokedexTypeSearchStrings
+rept 9
+	add hl, de
+endr
+	ld e, l
+	ld d, h
+	pop hl
+	call PlaceString
+	ret
+
+INCLUDE "data/types/search_strings.asm"
+
+Pokedex_SearchForMons: ; 41086
+	ld a, [wDexSearchMonType2]
+	and a
+	call nz, .Search
+	ld a, [wDexSearchMonType1]
+	and a
+	call nz, .Search
+	ret
+
+.Search: ; 41095
+	dec a
+	ld e, a
+	ld d, 0
+	ld hl, PokedexTypeSearchConversionTable
+	add hl, de
+	ld a, [hl]
+	ld [wDexConvertedMonType], a
+	ld hl, wPokedexOrder
+	ld de, wPokedexOrder
+	ld c, NUM_POKEMON
+	xor a
+	ld [wDexSearchResultCount], a
+.loop
+	push bc
+	ld a, [hl]
+	and a
+	jr z, .next_mon
+	ld [wd265], a
+	ld [CurSpecies], a
+	call Pokedex_CheckCaught
+	jr z, .next_mon
+	push hl
+	push de
+	call GetBaseData
+	pop de
+	pop hl
+	ld a, [wDexConvertedMonType]
+	ld b, a
+	ld a, [BaseType1]
+	cp b
+	jr z, .match_found
+	ld a, [BaseType2]
+	cp b
+	jr nz, .next_mon
+
+.match_found
+	ld a, [wd265]
+	ld [de], a
+	inc de
+	ld a, [wDexSearchResultCount]
+	inc a
+	ld [wDexSearchResultCount], a
+
+.next_mon
+	inc hl
+	pop bc
+	dec c
+	jr nz, .loop
+
+	ld l, e
+	ld h, d
+	ld a, [wDexSearchResultCount]
+	ld c, 0
+
+.zero_remaining_mons
+	cp NUM_POKEMON
+	jr z, .done
+	ld [hl], c
+	inc hl
+	inc a
+	jr .zero_remaining_mons
+
+.done
+	ret
+
+INCLUDE "data/types/search_types.asm"
+
+Pokedex_DisplayTypeNotFoundMessage: ; 41107
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 12
+	lb bc, 4, 18
+	call Pokedex_PlaceBorder
+	ld de, .TypeNotFound
+	hlcoord 1, 14
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, $80
+	call DelayFrames
+	ret
+
+.TypeNotFound: ; 41126
+	db   "The specified type"
+	next "was not found.@"
+
+Pokedex_UpdateCursorOAM: ; 41148 (10:5148)
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jp z, Pokedex_PutOldModeCursorOAM
+	call Pokedex_PutNewModeABCModeCursorOAM
+	call Pokedex_PutScrollbarOAM
+	ret
+
+Pokedex_PutOldModeCursorOAM: ; 41157 (10:5157)
+	ld hl, .CursorOAM
+	ld a, [wDexListingCursor]
+	or a
+	jr nz, .okay
+	ld hl, .CursorAtTopOAM
+.okay
+	call Pokedex_LoadCursorOAM
+	ret
+
+.CursorOAM: ; 41167
+	dsprite  3,  0,  9, -1, $30, 7
+	dsprite  2,  0,  9, -1, $31, 7
+	dsprite  2,  0, 10, -1, $32, 7
+	dsprite  2,  0, 11, -1, $32, 7
+	dsprite  2,  0, 12, -1, $32, 7
+	dsprite  2,  0, 13, -1, $33, 7
+	dsprite  2,  0, 16, -2, $33, 7 | X_FLIP
+	dsprite  2,  0, 17, -2, $32, 7 | X_FLIP
+	dsprite  2,  0, 18, -2, $32, 7 | X_FLIP
+	dsprite  2,  0, 19, -2, $32, 7 | X_FLIP
+	dsprite  2,  0, 20, -2, $31, 7 | X_FLIP
+	dsprite  3,  0, 20, -2, $30, 7 | X_FLIP
+	dsprite  4,  0,  9, -1, $30, 7 | Y_FLIP
+	dsprite  5,  0,  9, -1, $31, 7 | Y_FLIP
+	dsprite  5,  0, 10, -1, $32, 7 | Y_FLIP
+	dsprite  5,  0, 11, -1, $32, 7 | Y_FLIP
+	dsprite  5,  0, 12, -1, $32, 7 | Y_FLIP
+	dsprite  5,  0, 13, -1, $33, 7 | Y_FLIP
+	dsprite  5,  0, 16, -2, $33, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 17, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 18, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 19, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 20, -2, $31, 7 | X_FLIP | Y_FLIP
+	dsprite  4,  0, 20, -2, $30, 7 | X_FLIP | Y_FLIP
+	db -1
+
+.CursorAtTopOAM: ; 411c8
+; OAM data for when the cursor is at the top of the list. The tiles at the top
+; are cut off so they don't show up outside the list area.
+	dsprite  3,  0,  9, -1, $30, 7
+	dsprite  2,  0,  9, -1, $34, 7
+	dsprite  2,  0, 10, -1, $35, 7
+	dsprite  2,  0, 11, -1, $35, 7
+	dsprite  2,  0, 12, -1, $35, 7
+	dsprite  2,  0, 13, -1, $36, 7
+	dsprite  2,  0, 16, -2, $36, 7 | X_FLIP
+	dsprite  2,  0, 17, -2, $35, 7 | X_FLIP
+	dsprite  2,  0, 18, -2, $35, 7 | X_FLIP
+	dsprite  2,  0, 19, -2, $35, 7 | X_FLIP
+	dsprite  2,  0, 20, -2, $34, 7 | X_FLIP
+	dsprite  3,  0, 20, -2, $30, 7 | X_FLIP
+	dsprite  4,  0,  9, -1, $30, 7 | Y_FLIP
+	dsprite  5,  0,  9, -1, $31, 7 | Y_FLIP
+	dsprite  5,  0, 10, -1, $32, 7 | Y_FLIP
+	dsprite  5,  0, 11, -1, $32, 7 | Y_FLIP
+	dsprite  5,  0, 12, -1, $32, 7 | Y_FLIP
+	dsprite  5,  0, 13, -1, $33, 7 | Y_FLIP
+	dsprite  5,  0, 16, -2, $33, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 17, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 18, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 19, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  0, 20, -2, $31, 7 | X_FLIP | Y_FLIP
+	dsprite  4,  0, 20, -2, $30, 7 | X_FLIP | Y_FLIP
+	db -1
+
+Pokedex_PutNewModeABCModeCursorOAM: ; 41229 (10:5229)
+	ld hl, .CursorOAM
+	call Pokedex_LoadCursorOAM
+	ret
+
+.CursorOAM: ; 41230
+	dsprite  3,  3,  9, -1, $30, 7
+	dsprite  2,  3,  9, -1, $31, 7
+	dsprite  2,  3, 10, -1, $32, 7
+	dsprite  2,  3, 11, -1, $32, 7
+	dsprite  2,  3, 12, -1, $33, 7
+	dsprite  2,  3, 16,  0, $33, 7 | X_FLIP
+	dsprite  2,  3, 17,  0, $32, 7 | X_FLIP
+	dsprite  2,  3, 18,  0, $32, 7 | X_FLIP
+	dsprite  2,  3, 19,  0, $31, 7 | X_FLIP
+	dsprite  3,  3, 19,  0, $30, 7 | X_FLIP
+	dsprite  4,  3,  9, -1, $30, 7 | Y_FLIP
+	dsprite  5,  3,  9, -1, $31, 7 | Y_FLIP
+	dsprite  5,  3, 10, -1, $32, 7 | Y_FLIP
+	dsprite  5,  3, 11, -1, $32, 7 | Y_FLIP
+	dsprite  5,  3, 12, -1, $33, 7 | Y_FLIP
+	dsprite  5,  3, 16,  0, $33, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 17,  0, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 18,  0, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 19,  0, $31, 7 | X_FLIP | Y_FLIP
+	dsprite  4,  3, 19,  0, $30, 7 | X_FLIP | Y_FLIP
+	db -1
+
+Pokedex_UpdateSearchResultsCursorOAM: ; 41281 (10:5281)
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jp z, Pokedex_PutOldModeCursorOAM
+	ld hl, .CursorOAM
+	call Pokedex_LoadCursorOAM
+	ret
+
+.CursorOAM: ; 41290
+	dsprite  3,  3,  9, -1, $30, 7
+	dsprite  2,  3,  9, -1, $31, 7
+	dsprite  2,  3, 10, -1, $32, 7
+	dsprite  2,  3, 11, -1, $32, 7
+	dsprite  2,  3, 12, -1, $32, 7
+	dsprite  2,  3, 13, -1, $33, 7
+	dsprite  2,  3, 16, -2, $33, 7 | X_FLIP
+	dsprite  2,  3, 17, -2, $32, 7 | X_FLIP
+	dsprite  2,  3, 18, -2, $32, 7 | X_FLIP
+	dsprite  2,  3, 19, -2, $32, 7 | X_FLIP
+	dsprite  2,  3, 20, -2, $31, 7 | X_FLIP
+	dsprite  3,  3, 20, -2, $30, 7 | X_FLIP
+	dsprite  4,  3,  9, -1, $30, 7 | Y_FLIP
+	dsprite  5,  3,  9, -1, $31, 7 | Y_FLIP
+	dsprite  5,  3, 10, -1, $32, 7 | Y_FLIP
+	dsprite  5,  3, 11, -1, $32, 7 | Y_FLIP
+	dsprite  5,  3, 12, -1, $32, 7 | Y_FLIP
+	dsprite  5,  3, 13, -1, $33, 7 | Y_FLIP
+	dsprite  5,  3, 16, -2, $33, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 17, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 18, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 19, -2, $32, 7 | X_FLIP | Y_FLIP
+	dsprite  5,  3, 20, -2, $31, 7 | X_FLIP | Y_FLIP
+	dsprite  4,  3, 20, -2, $30, 7 | X_FLIP | Y_FLIP
+	db -1
+
+Pokedex_LoadCursorOAM: ; 412f1 (10:52f1)
+	ld de, Sprite01
+.loop
+	ld a, [hl]
+	cp -1
+	ret z
+	ld a, [wDexListingCursor]
+	and $7
+	swap a
+	add [hl] ; y
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli] ; x
+	ld [de], a
+	inc de
+	ld a, [hli] ; tile id
+	ld [de], a
+	inc de
+	ld a, [hli] ; attributes
+	ld [de], a
+	inc de
+	jr .loop
+
+Pokedex_PutScrollbarOAM: ; 4130e (10:530e)
+; Writes the OAM data for the scrollbar in the new mode and ABC mode.
+	push de
+	ld a, [wDexListingEnd]
+	dec a
+	ld e, a
+	ld a, [wDexListingCursor]
+	ld hl, wDexListingScrollOffset
+	add [hl]
+	cp e
+	jr z, .asm_4133f
+	ld hl, $0
+	ld bc, $79
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ld b, $0
+	ld a, d
+	or e
+	jr z, .asm_41341
+	ld a, [wDexListingEnd]
+	ld c, a
+.asm_41333
+	ld a, e
+	sub c
+	ld e, a
+	ld a, d
+	sbc $0
+	ld d, a
+	jr c, .asm_41341
+	inc b
+	jr .asm_41333
+.asm_4133f
+	ld b, $79
+.asm_41341
+	ld a, $14
+	add b
+	pop hl
+	ld [hli], a
+	ld a, $a1
+	ld [hli], a
+	ld a, $f
+	ld [hli], a
+	ld [hl], $0
+	ret
+
+Pokedex_InitArrowCursor: ; 4134f (10:534f)
+	xor a
+	ld [wDexArrowCursorPosIndex], a
+	ld [wDexArrowCursorDelayCounter], a
+	ld [wDexArrowCursorBlinkCounter], a
+	ret
+
+Pokedex_MoveArrowCursor: ; 4135a (10:535a)
+; bc = [de] - 1
+	ld a, [de]
+	ld b, a
+	inc de
+	ld a, [de]
+	dec a
+	ld c, a
+	inc de
+	call Pokedex_BlinkArrowCursor
+
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and D_LEFT | D_UP
+	and b
+	jr nz, .move_left_or_up
+	ld a, [hl]
+	and D_RIGHT | D_DOWN
+	and b
+	jr nz, .move_right_or_down
+	ld a, [hl]
+	and SELECT
+	and b
+	jr nz, .select
+	call Pokedex_ArrowCursorDelay
+	jr c, .no_action
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_LEFT | D_UP
+	and b
+	jr nz, .move_left_or_up
+	ld a, [hl]
+	and D_RIGHT | D_DOWN
+	and b
+	jr nz, .move_right_or_down
+	jr .no_action
+
+.move_left_or_up
+	ld a, [wDexArrowCursorPosIndex]
+	and a
+	jr z, .no_action
+	call Pokedex_GetArrowCursorPos
+	ld [hl], " "
+	ld hl, wDexArrowCursorPosIndex
+	dec [hl]
+	jr .update_cursor_pos
+
+.move_right_or_down
+	ld a, [wDexArrowCursorPosIndex]
+	cp c
+	jr nc, .no_action
+	call Pokedex_GetArrowCursorPos
+	ld [hl], " "
+	ld hl, wDexArrowCursorPosIndex
+	inc [hl]
+
+.update_cursor_pos
+	call Pokedex_GetArrowCursorPos
+	ld [hl], "▶"
+	ld a, 12
+	ld [wDexArrowCursorDelayCounter], a
+	xor a
+	ld [wDexArrowCursorBlinkCounter], a
+	scf
+	ret
+
+.no_action
+	and a
+	ret
+
+.select
+	call Pokedex_GetArrowCursorPos
+	ld [hl], " "
+	ld a, [wDexArrowCursorPosIndex]
+	cp c
+	jr c, .update
+	ld a, -1
+.update
+	inc a
+	ld [wDexArrowCursorPosIndex], a
+	jr .update_cursor_pos
+
+Pokedex_GetArrowCursorPos: ; 413d4 (10:53d4)
+	ld a, [wDexArrowCursorPosIndex]
+	add a
+	ld l, a
+	ld h, 0
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+Pokedex_BlinkArrowCursor: ; 413e0 (10:53e0)
+	ld hl, wDexArrowCursorBlinkCounter
+	ld a, [hl]
+	inc [hl]
+	and $8
+	jr z, .blink_on
+	call Pokedex_GetArrowCursorPos
+	ld [hl], " "
+	ret
+
+.blink_on
+	call Pokedex_GetArrowCursorPos
+	ld [hl], "▶"
+	ret
+
+Pokedex_ArrowCursorDelay: ; 413f5 (10:53f5)
+; Updates the delay counter set when moving the arrow cursor.
+; Returns whether the delay is active in carry.
+	ld hl, wDexArrowCursorDelayCounter
+	ld a, [hl]
+	and a
+	ret z
+
+	dec [hl]
+	scf
+	ret
+
+Pokedex_FillBox: ; 413fe (10:53fe)
+	jp FillBoxWithByte
+
+Pokedex_BlackOutBG: ; 41401 (10:5401)
+; Make BG palettes black so that the BG becomes all black.
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(wBGPals1)
+	ld [rSVBK], a
+	ld hl, wBGPals1
+	ld bc, 8 palettes
+	xor a
+	call ByteFill
+	pop af
+	ld [rSVBK], a
+
+Pokedex_ApplyPrintPals: ; 41415
+	ld a, $ff
+	call DmgToCgbBGPals
+	ld a, $ff
+	call DmgToCgbObjPal0
+	call DelayFrame
+	ret
+
+Pokedex_GetSGBLayout: ; 41423
+	ld b, a
+	call GetSGBLayout
+
+Pokedex_ApplyUsualPals: ; 41427
+; This applies the palettes used for most Pokédex screens.
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $e0
+	call DmgToCgbObjPal0
+	ret
+
+
+Pokedex_LoadPointer: ; 41432
+	ld e, a
+	ld d, 0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+Pokedex_LoadSelectedMonTiles: ; 4143b
+; Loads the tiles of the currently selected Pokémon.
+	call Pokedex_GetSelectedMon
+	call Pokedex_CheckSeen
+	jr z, .QuestionMark
+	ld a, [wFirstUnownSeen]
+	ld [UnownLetter], a
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	call GetBaseData
+	ld de, vTiles2
+	predef GetMonFrontpic
+	ret
+
+.QuestionMark:
+	ld a, BANK(sScratch)
+	call GetSRAMBank
+	farcall LoadQuestionMarkPic
+	ld hl, vTiles2
+	ld de, sScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	call CloseSRAM
+	ret
+
+
+Pokedex_LoadCurrentFootprint: ; 41478 (10:5478)
+	call Pokedex_GetSelectedMon
+
+Pokedex_LoadAnyFootprint: ; 4147b
+	ld a, [wd265]
+	dec a
+	and %11111000
+	srl a
+	srl a
+	srl a
+	ld e, 0
+	ld d, a
+	ld a, [wd265]
+	dec a
+	and %111
+	swap a ; * $10
+	ld l, a
+	ld h, 0
+	add hl, de
+	ld de, Footprints
+	add hl, de
+
+	push hl
+	ld e, l
+	ld d, h
+	ld hl, vTiles2 tile $62
+	lb bc, BANK(Footprints), 2
+	call Request1bpp
+	pop hl
+
+	; Whoever was editing footprints forgot to fix their
+	; tile editor. Now each bottom half is 8 tiles off.
+	ld de, 8 tiles
+	add hl, de
+
+	ld e, l
+	ld d, h
+	ld hl, vTiles2 tile $64
+	lb bc, BANK(Footprints), 2
+	call Request1bpp
+
+	ret
+
+
+Pokedex_LoadGFX: ; 414b7
+	call DisableLCD
+	ld hl, vTiles2
+	ld bc, $31 tiles
+	xor a
+	call ByteFill
+	call Pokedex_LoadInvertedFont
+	call LoadFontsExtra
+	ld hl, vTiles2 tile $60
+	ld bc, $20 tiles
+	call Pokedex_InvertTiles
+	call Pokedex_CheckSGB
+	jr nz, .LoadPokedexLZ
+	farcall LoadSGBPokedexGFX
+	jr .LoadPokedexSlowpokeLZ
+
+.LoadPokedexLZ:
+	ld hl, PokedexLZ
+	ld de, vTiles2 tile $31
+	call Decompress
+
+.LoadPokedexSlowpokeLZ:
+	ld hl, PokedexSlowpokeLZ
+	ld de, vTiles0
+	call Decompress
+	ld a, 6
+	call SkipMusic
+	call EnableLCD
+	ret
+
+Pokedex_LoadInvertedFont: ; 414fb
+	call LoadStandardFont
+	ld hl, vTiles1
+	ld bc, $80 tiles
+
+Pokedex_InvertTiles: ; 41504
+.loop
+	ld a, [hl]
+	xor $ff
+	ld [hli], a
+	dec bc
+	ld a, b
+	or c
+	jr nz, .loop
+	ret
+
+PokedexLZ: ; 4150e
+INCBIN "gfx/pokedex/pokedex.2bpp.lz"
+
+PokedexSlowpokeLZ: ; 416b0
+INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
+
+Pokedex_CheckSGB: ; 41a24
+	ld a, [hCGB]
+	or a
+	ret nz
+	ld a, [hSGB]
+	dec a
+	ret
+
+Pokedex_LoadUnownFont: ; 41a2c
+	ld a, BANK(sScratch)
+	call GetSRAMBank
+	ld hl, UnownFont
+	ld de, sScratch + $188
+	ld bc, 39 tiles
+	ld a, BANK(UnownFont)
+	call FarCopyBytes
+	ld hl, sScratch + $188
+	ld bc, 27 tiles
+	call Pokedex_InvertTiles
+	ld de, sScratch + $188
+	ld hl, vTiles2 tile $40
+	lb bc, BANK(Pokedex_LoadUnownFont), 27
+	call Request2bpp
+	call CloseSRAM
+	ret
+
+Pokedex_LoadUnownFrontpicTiles: ; 41a58 (10:5a58)
+	ld a, [UnownLetter]
+	push af
+	ld a, [wDexCurrentUnownIndex]
+	ld e, a
+	ld d, 0
+	ld hl, UnownDex
+	add hl, de
+	ld a, [hl]
+	ld [UnownLetter], a
+	ld a, UNOWN
+	ld [CurPartySpecies], a
+	call GetBaseData
+	ld de, vTiles2 tile $00
+	predef GetMonFrontpic
+	pop af
+	ld [UnownLetter], a
+	ret
+
+_NewPokedexEntry: ; 41a7f
+	xor a
+	ld [hBGMapMode], a
+	farcall DrawDexEntryScreenRightEdge
+	call Pokedex_ResetBGMapMode
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsExtra
+	call Pokedex_LoadGFX
+	call Pokedex_LoadAnyFootprint
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	call Pokedex_DrawDexEntryScreenBG
+	call Pokedex_DrawFootprint
+	hlcoord 0, 17
+	ld [hl], $3b
+	inc hl
+	ld bc, 19
+	ld a, " "
+	call ByteFill
+	farcall DisplayDexEntry
+	call EnableLCD
+	call WaitBGMap
+	call GetBaseData
+	ld de, vTiles2
+	predef GetMonFrontpic
+	ld a, SCGB_POKEDEX
+	call Pokedex_GetSGBLayout
+	ld a, [CurPartySpecies]
+	call PlayMonCry
+	ret
+
+
+Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7)
+	ld a, $3
+	ld [hBGMapMode], a
+	ld c, 4
+	call DelayFrames
+	ret
+
+Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1)
+	ld a, $4
+	ld [hBGMapMode], a
+	ld c, 4
+	call DelayFrames
+	ret
+
+Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb)
+	ld a, [hCGB]
+	and a
+	jr z, .DMG
+	call Pokedex_SetBGMapMode4
+.DMG:
+	call Pokedex_SetBGMapMode3
+	ret
+
+
+Pokedex_ResetBGMapMode: ; 41af7
+	xor a
+	ld [hBGMapMode], a
+	ret
--- /dev/null
+++ b/engine/pokedex/pokedex_2.asm
@@ -1,0 +1,280 @@
+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, .SlowpokeSpriteData
+	ld de, Sprite01
+.loop
+	ld a, [hli]
+	cp -1
+	ret z
+	ld [de], a ; y
+	inc de
+	ld a, [hli]
+	ld [de], a ; x
+	inc de
+	ld a, [wDexSearchSlowpokeFrame]
+	ld b, a
+	add a
+	add b
+	add [hl]
+	inc hl
+	ld [de], a ; tile id
+	inc de
+	ld a, [hli]
+	ld [de], a ; attributes
+	inc de
+	jr .loop
+
+.SlowpokeSpriteData: ; 44228
+	dsprite 11, 0,  9, 0, $00, 0
+	dsprite 11, 0, 10, 0, $01, 0
+	dsprite 11, 0, 11, 0, $02, 0
+	dsprite 12, 0,  9, 0, $10, 0
+	dsprite 12, 0, 10, 0, $11, 0
+	dsprite 12, 0, 11, 0, $12, 0
+	dsprite 13, 0,  9, 0, $20, 0
+	dsprite 13, 0, 10, 0, $21, 0
+	dsprite 13, 0, 11, 0, $22, 0
+	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 ; check for page 2
+	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
+	maskbits NUM_DEX_ENTRY_BANKS
+	ld hl, .PokedexEntryBanks
+	ld d, 0
+	ld e, a
+	add hl, de
+	ld b, [hl]
+	pop de
+	pop hl
+	ret
+
+.PokedexEntryBanks: ; 44351
+	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
--- /dev/null
+++ b/engine/pokedex/pokedex_3.asm
@@ -1,0 +1,162 @@
+LoadSGBPokedexGFX: ; 1ddf1c
+	ld hl, SGBPokedexGFX_LZ
+	ld de, vTiles2 tile $31
+	call Decompress
+	ret
+
+LoadSGBPokedexGFX2: ; 1ddf26 (77:5f26)
+	ld hl, SGBPokedexGFX_LZ
+	ld de, vTiles2 tile $31
+	lb bc, BANK(SGBPokedexGFX_LZ), 58
+	call DecompressRequest2bpp
+	ret
+
+SGBPokedexGFX_LZ: ; 1ddf33
+INCBIN "gfx/pokedex/sgb.2bpp.lz"
+
+LoadQuestionMarkPic: ; 1de0d7
+	ld hl, .QuestionMarkLZ
+	ld de, sScratch
+	call Decompress
+	ret
+
+.QuestionMarkLZ: ; 1de0e1
+INCBIN "gfx/pokemon/questionmark/front.2bpp.lz"
+
+DrawPokedexListWindow: ; 1de171 (77:6171)
+	ld a, $32
+	hlcoord 0, 17
+	ld bc, 12
+	call ByteFill
+	hlcoord 0, 1
+	lb bc, 15, 11
+	call ClearBox
+	ld a, $34
+	hlcoord 0, 0
+	ld bc, 11
+	call ByteFill
+	ld a, $39
+	hlcoord 0, 16
+	ld bc, 11
+	call ByteFill
+	hlcoord 5, 0
+	ld [hl], $3f
+	hlcoord 5, 16
+	ld [hl], $40
+	ld a, [wCurrentDexMode]
+	cp DEXMODE_OLD
+	jr z, .OldMode
+; scroll bar
+	hlcoord 11, 0
+	ld [hl], $50
+	ld a, $51
+	hlcoord 11, 1
+	ld b, SCREEN_HEIGHT - 3
+	call Bank77_FillColumn
+	ld [hl], $52
+	jr .Done
+
+.OldMode:
+; no scroll bar
+	hlcoord 11, 0
+	ld [hl], $66
+	ld a, $67
+	hlcoord 11, 1
+	ld b, SCREEN_HEIGHT - 3
+	call Bank77_FillColumn
+	ld [hl], $68
+.Done:
+	ret
+
+DrawPokedexSearchResultsWindow: ; 1de1d1 (77:61d1)
+	ld a, $34
+	hlcoord 0, 0
+	ld bc, 11
+	call ByteFill
+	ld a, $39
+	hlcoord 0, 10
+	ld bc, 11
+	call ByteFill
+	hlcoord 5, 0
+	ld [hl], $3f
+	hlcoord 5, 10
+	ld [hl], $40
+	hlcoord 11, 0
+	ld [hl], $66
+	ld a, $67
+	hlcoord 11, 1
+	ld b, SCREEN_HEIGHT / 2
+	call Bank77_FillColumn
+	ld [hl], $68
+	ld a, $34
+	hlcoord 0, 11
+	ld bc, 11
+	call ByteFill
+	ld a, $39
+	hlcoord 0, 17
+	ld bc, 11
+	call ByteFill
+	hlcoord 11, 11
+	ld [hl], $66
+	ld a, $67
+	hlcoord 11, 12
+	ld b, 5
+	call Bank77_FillColumn
+	ld [hl], $68
+	hlcoord 0, 12
+	lb bc, 5, 11
+	call ClearBox
+	ld de, .esults_D
+	hlcoord 0, 12
+	call PlaceString
+	ret
+
+.esults_D ; 1de23c
+; (SEARCH R)
+	db   "ESULTS"
+	next ""
+; (### FOUN)
+	next "D!@"
+
+DrawDexEntryScreenRightEdge: ; 1de247
+	ld a, [hBGMapAddress]
+	ld l, a
+	ld a, [hBGMapAddress + 1]
+	ld h, a
+	push hl
+	inc hl
+	ld a, l
+	ld [hBGMapAddress], a
+	ld a, h
+	ld [hBGMapAddress + 1], a
+	hlcoord 19, 0
+	ld [hl], $66
+	hlcoord 19, 1
+	ld a, $67
+	ld b, 15
+	call Bank77_FillColumn
+	ld [hl], $68
+	hlcoord 19, 17
+	ld [hl], $3c
+	xor a
+	ld b, SCREEN_HEIGHT
+	hlcoord 19, 0, AttrMap
+	call Bank77_FillColumn
+	call WaitBGMap2
+	pop hl
+	ld a, l
+	ld [hBGMapAddress], a
+	ld a, h
+	ld [hBGMapAddress + 1], a
+	ret
+
+Bank77_FillColumn: ; 1de27f
+	push de
+	ld de, SCREEN_WIDTH
+.loop
+	ld [hl], a
+	add hl, de
+	dec b
+	jr nz, .loop
+	pop de
+	ret
--- /dev/null
+++ b/engine/pokedex/unown_dex.asm
@@ -1,0 +1,52 @@
+UpdateUnownDex: ; fba18
+	ld a, [UnownLetter]
+	ld c, a
+	ld b, NUM_UNOWN
+	ld hl, UnownDex
+.loop
+	ld a, [hli]
+	and a
+	jr z, .done
+	cp c
+	ret z
+	dec b
+	jr nz, .loop
+	ret
+
+.done
+	dec hl
+	ld [hl], c
+	ret
+; fba2e
+
+PrintUnownWord: ; fba2e (3e:7a2e)
+	hlcoord 4, 15
+	ld bc, 12
+	ld a, " "
+	call ByteFill
+	ld a, [wDexCurrentUnownIndex]
+	ld e, a
+	ld d, 0
+	ld hl, UnownDex
+	add hl, de
+	ld a, [hl]
+	ld e, a
+	ld d, 0
+	ld hl, UnownWords
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	hlcoord 4, 15
+.loop
+	ld a, [de]
+	cp -1
+	ret z
+	inc de
+	ld [hli], a
+	jr .loop
+; fba5a (3e:7a5a)
+
+
+INCLUDE "data/unown_words.asm"
--- a/engine/pokedex_2.asm
+++ /dev/null
@@ -1,286 +1,0 @@
-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/pokedex_3.asm
+++ /dev/null
@@ -1,162 +1,0 @@
-LoadSGBPokedexGFX: ; 1ddf1c
-	ld hl, SGBPokedexGFX_LZ
-	ld de, vTiles2 tile $31
-	call Decompress
-	ret
-
-LoadSGBPokedexGFX2: ; 1ddf26 (77:5f26)
-	ld hl, SGBPokedexGFX_LZ
-	ld de, vTiles2 tile $31
-	lb bc, BANK(SGBPokedexGFX_LZ), $3a
-	call DecompressRequest2bpp
-	ret
-
-SGBPokedexGFX_LZ: ; 1ddf33
-INCBIN "gfx/pokedex/sgb.2bpp.lz"
-
-LoadQuestionMarkPic: ; 1de0d7
-	ld hl, .QuestionMarkLZ
-	ld de, sScratch
-	call Decompress
-	ret
-
-.QuestionMarkLZ: ; 1de0e1
-INCBIN "gfx/pokemon/questionmark/front.2bpp.lz"
-
-DrawPokedexListWindow: ; 1de171 (77:6171)
-	ld a, $32
-	hlcoord 0, 17
-	ld bc, 12
-	call ByteFill
-	hlcoord 0, 1
-	lb bc, 15, 11
-	call ClearBox
-	ld a, $34
-	hlcoord 0, 0
-	ld bc, 11
-	call ByteFill
-	ld a, $39
-	hlcoord 0, 16
-	ld bc, 11
-	call ByteFill
-	hlcoord 5, 0
-	ld [hl], $3f
-	hlcoord 5, 16
-	ld [hl], $40
-	ld a, [wCurrentDexMode]
-	cp DEXMODE_OLD
-	jr z, .OldMode
-; scroll bar
-	hlcoord 11, 0
-	ld [hl], $50
-	ld a, $51
-	hlcoord 11, 1
-	ld b, SCREEN_HEIGHT - 3
-	call Bank77_FillColumn
-	ld [hl], $52
-	jr .Done
-
-.OldMode:
-; no scroll bar
-	hlcoord 11, 0
-	ld [hl], $66
-	ld a, $67
-	hlcoord 11, 1
-	ld b, SCREEN_HEIGHT - 3
-	call Bank77_FillColumn
-	ld [hl], $68
-.Done:
-	ret
-
-DrawPokedexSearchResultsWindow: ; 1de1d1 (77:61d1)
-	ld a, $34
-	hlcoord 0, 0
-	ld bc, 11
-	call ByteFill
-	ld a, $39
-	hlcoord 0, 10
-	ld bc, 11
-	call ByteFill
-	hlcoord 5, 0
-	ld [hl], $3f
-	hlcoord 5, 10
-	ld [hl], $40
-	hlcoord 11, 0
-	ld [hl], $66
-	ld a, $67
-	hlcoord 11, 1
-	ld b, SCREEN_HEIGHT / 2
-	call Bank77_FillColumn
-	ld [hl], $68
-	ld a, $34
-	hlcoord 0, 11
-	ld bc, 11
-	call ByteFill
-	ld a, $39
-	hlcoord 0, 17
-	ld bc, 11
-	call ByteFill
-	hlcoord 11, 11
-	ld [hl], $66
-	ld a, $67
-	hlcoord 11, 12
-	ld b, 5
-	call Bank77_FillColumn
-	ld [hl], $68
-	hlcoord 0, 12
-	lb bc, 5, 11
-	call ClearBox
-	ld de, .esults_D
-	hlcoord 0, 12
-	call PlaceString
-	ret
-
-.esults_D ; 1de23c
-; (SEARCH R)
-	db   "ESULTS"
-	next ""
-; (### FOUN)
-	next "D!@"
-
-DrawDexEntryScreenRightEdge: ; 1de247
-	ld a, [hBGMapAddress]
-	ld l, a
-	ld a, [hBGMapAddress + 1]
-	ld h, a
-	push hl
-	inc hl
-	ld a, l
-	ld [hBGMapAddress], a
-	ld a, h
-	ld [hBGMapAddress + 1], a
-	hlcoord 19, 0
-	ld [hl], $66
-	hlcoord 19, 1
-	ld a, $67
-	ld b, 15
-	call Bank77_FillColumn
-	ld [hl], $68
-	hlcoord 19, 17
-	ld [hl], $3c
-	xor a
-	ld b, SCREEN_HEIGHT
-	hlcoord 19, 0, AttrMap
-	call Bank77_FillColumn
-	call WaitBGMap2
-	pop hl
-	ld a, l
-	ld [hBGMapAddress], a
-	ld a, h
-	ld [hBGMapAddress + 1], a
-	ret
-
-Bank77_FillColumn: ; 1de27f
-	push de
-	ld de, SCREEN_WIDTH
-.loop
-	ld [hl], a
-	add hl, de
-	dec b
-	jr nz, .loop
-	pop de
-	ret
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -1,3 +1,27 @@
+; Pokégear cards
+	const_def
+	const POKEGEARCARD_CLOCK ; 0
+	const POKEGEARCARD_MAP   ; 1
+	const POKEGEARCARD_PHONE ; 2
+	const POKEGEARCARD_RADIO ; 3
+NUM_POKEGEAR_CARDS EQU const_value
+
+; PokegearJumptable.Jumptable indexes
+	const_def
+	const POKEGEARSTATE_CLOCKINIT       ; 0
+	const POKEGEARSTATE_CLOCKJOYPAD     ; 1
+	const POKEGEARSTATE_MAPCHECKREGION  ; 2
+	const POKEGEARSTATE_JOHTOMAPINIT    ; 3
+	const POKEGEARSTATE_JOHTOMAPJOYPAD  ; 4
+	const POKEGEARSTATE_KANTOMAPINIT    ; 5
+	const POKEGEARSTATE_KANTOMAPJOYPAD  ; 6
+	const POKEGEARSTATE_PHONEINIT       ; 7
+	const POKEGEARSTATE_PHONEJOYPAD     ; 8
+	const POKEGEARSTATE_MAKEPHONECALL   ; 9
+	const POKEGEARSTATE_FINISHPHONECALL ; a
+	const POKEGEARSTATE_RADIOINIT       ; b
+	const POKEGEARSTATE_RADIOJOYPAD     ; c
+
 PokeGear: ; 90b8d (24:4b8d)
 	ld hl, Options
 	ld a, [hl]
@@ -63,9 +87,9 @@
 	ld [rLCDC], a
 	call TownMap_InitCursorAndPlayerIconPositions
 	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
+	ld [wJumptableIndex], a ; POKEGEARSTATE_CLOCKINIT
+	ld [wPokegearCard], a ; POKEGEARCARD_CLOCK
+	ld [wPokegearMapRegion], a ; JOHTO_REGION
 	ld [wcf66], a
 	ld [wPokegearPhoneScrollPosition], a
 	ld [wPokegearPhoneCursorPosition], a
@@ -92,7 +116,7 @@
 	ld a, BANK(TownMapGFX)
 	call FarDecompress
 	ld hl, PokegearGFX
-	ld de, vTiles2 + $30 tiles
+	ld de, vTiles2 tile $30
 	ld a, BANK(PokegearGFX)
 	call FarDecompress
 	ld hl, PokegearSpritesGFX
@@ -149,7 +173,7 @@
 	ret
 
 AnimatePokegearModeIndicatorArrow: ; 90d41 (24:4d41)
-	ld hl, wcf64
+	ld hl, wPokegearCard
 	ld e, [hl]
 	ld d, 0
 	ld hl, .XCoords
@@ -163,7 +187,10 @@
 ; 90d52 (24:4d52)
 
 .XCoords: ; 90d52
-	db $00, $10, $20, $30
+	db $00 ; POKEGEARCARD_CLOCK
+	db $10 ; POKEGEARCARD_MAP
+	db $20 ; POKEGEARCARD_PHONE
+	db $30 ; POKEGEARCARD_RADIO
 ; 90d56
 
 TownMap_GetCurrentLandmark: ; 90d56
@@ -210,10 +237,10 @@
 	ret
 
 Pokegear_InitJumptableIndices: ; 90d9e (24:4d9e)
-	ld a, $0
+	ld a, POKEGEARSTATE_CLOCKINIT
 	ld [wJumptableIndex], a
-	xor a
-	ld [wcf64], a
+	xor a ; POKEGEARCARD_CLOCK
+	ld [wPokegearCard], a
 	ret
 
 InitPokegearTilemap: ; 90da8 (24:4da8)
@@ -223,8 +250,8 @@
 	ld bc, TileMapEnd - TileMap
 	ld a, $4f
 	call ByteFill
-	ld a, [wcf64]
-	and $3
+	ld a, [wPokegearCard]
+	maskbits NUM_POKEGEAR_CARDS
 	add a
 	ld e, a
 	ld d, 0
@@ -240,7 +267,7 @@
 .return_from_jumptable
 	call Pokegear_FinishTilemap
 	farcall TownMapPals
-	ld a, [wcf65]
+	ld a, [wPokegearMapRegion]
 	and a
 	jr nz, .kanto_0
 	xor a ; LOW(vBGMap0)
@@ -260,10 +287,11 @@
 	xor a
 .finish
 	ld [hWY], a
-	ld a, [wcf65]
-	and 1
+	; swap region maps
+	ld a, [wPokegearMapRegion]
+	maskbits NUM_REGIONS
 	xor 1
-	ld [wcf65], a
+	ld [wPokegearMapRegion], a
 	ret
 
 .UpdateBGMap: ; 90e00 (24:4e00)
@@ -281,6 +309,7 @@
 ; 90e12 (24:4e12)
 
 .Jumptable: ; 90e12
+; entries correspond to POKEGEARCARD_* constants
 	dw .Clock
 	dw .Map
 	dw .Phone
@@ -319,12 +348,12 @@
 	ld e, 1
 .ok
 	farcall PokegearMap
-	ld a, $7
+	ld a, $07
 	ld bc, $12
 	hlcoord 1, 2
 	call ByteFill
 	hlcoord 0, 2
-	ld [hl], $6
+	ld [hl], $06
 	hlcoord 19, 2
 	ld [hl], $17
 	ld a, [wPokegearMapCursorLandmark]
@@ -364,7 +393,7 @@
 	hlcoord 17, 2
 	inc a
 	ld [hli], a
-	call GetMapHeaderPhoneServiceNybble
+	call GetMapPhoneService
 	and a
 	ret nz
 	hlcoord 18, 2
@@ -382,13 +411,13 @@
 	call ByteFill
 	ld de, wPokegearFlags
 	ld a, [de]
-	bit 0, a
+	bit 0, a ; ENGINE_MAP_CARD
 	call nz, .PlaceMapIcon
 	ld a, [de]
-	bit 2, a
+	bit 2, a ; ENGINE_PHONE_CARD
 	call nz, .PlacePhoneIcon
 	ld a, [de]
-	bit 1, a
+	bit 1, a ; ENGINE_RADIO_CARD
 	call nz, .PlaceRadioIcon
 	hlcoord 0, 0
 	ld a, $46
@@ -433,6 +462,7 @@
 	jp hl
 
 .Jumptable: ; 90f13 (24:4f13)
+; entries correspond to POKEGEARSTATE_* constants
 	dw PokegearClock_Init
 	dw PokegearClock_Joypad
 	dw PokegearMap_CheckRegion
@@ -460,32 +490,32 @@
 	call .UpdateClock
 	ld hl, hJoyLast
 	ld a, [hl]
-	and A_BUTTON + B_BUTTON + START + SELECT
+	and A_BUTTON | B_BUTTON | START | SELECT
 	jr nz, .quit
 	ld a, [hl]
 	and D_RIGHT
 	ret z
 	ld a, [wPokegearFlags]
-	bit 0, a
+	bit 0, a ; ENGINE_MAP_CARD
 	jr z, .no_map_card
-	ld c, $2
-	ld b, $1
+	ld c, POKEGEARSTATE_MAPCHECKREGION
+	ld b, POKEGEARCARD_MAP
 	jr .done
 
 .no_map_card
 	ld a, [wPokegearFlags]
-	bit 2, a
+	bit 2, a ; ENGINE_PHONE_CARD
 	jr z, .no_phone_card
-	ld c, $7
-	ld b, $2
+	ld c, POKEGEARSTATE_PHONEINIT
+	ld b, POKEGEARCARD_PHONE
 	jr .done
 
 .no_phone_card
 	ld a, [wPokegearFlags]
-	bit 1, a
+	bit 1, a ; ENGINE_RADIO_CARD
 	ret z
-	ld c, $b
-	ld b, $3
+	ld c, POKEGEARSTATE_RADIOINIT
+	ld b, POKEGEARCARD_RADIO
 .done
 	call Pokegear_SwitchPage
 	ret
@@ -535,12 +565,12 @@
 	cp KANTO_LANDMARK
 	jr nc, .kanto
 .johto
-	ld a, 3
+	ld a, POKEGEARSTATE_JOHTOMAPINIT
 	jr .done
 	ret
 
 .kanto
-	ld a, 5
+	ld a, POKEGEARSTATE_KANTOMAPINIT
 .done
 	ld [wJumptableIndex], a
 	call ExitPokegearRadio_HandleMusic
@@ -583,23 +613,23 @@
 
 .right
 	ld a, [wPokegearFlags]
-	bit 2, a
+	bit 2, a ; ENGINE_PHONE_CARD
 	jr z, .no_phone
-	ld c, $7
-	ld b, $2
+	ld c, POKEGEARSTATE_PHONEINIT
+	ld b, POKEGEARCARD_PHONE
 	jr .done
 
 .no_phone
 	ld a, [wPokegearFlags]
-	bit 1, a
+	bit 1, a ; ENGINE_RADIO_CARD
 	ret z
-	ld c, $b
-	ld b, $3
+	ld c, POKEGEARSTATE_RADIOINIT
+	ld b, POKEGEARCARD_RADIO
 	jr .done
 
 .left
-	ld c, $0
-	ld b, $0
+	ld c, POKEGEARSTATE_CLOCKINIT
+	ld b, POKEGEARCARD_CLOCK
 .done
 	call Pokegear_SwitchPage
 	ret
@@ -657,7 +687,7 @@
 	depixel 0, 0
 	ld b, SPRITE_ANIM_INDEX_RED_WALK
 	ld a, [wPlayerGender]
-	bit 0, a
+	bit 0, a ; ENGINE_PLAYER_IS_FEMALE
 	jr z, .got_gender
 	ld b, SPRITE_ANIM_INDEX_BLUE_WALK
 .got_gender
@@ -688,7 +718,7 @@
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
-	ld [hl], $4
+	ld [hl], $04
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
 	ld [hl], SPRITE_ANIM_SEQ_NULL
@@ -734,7 +764,7 @@
 
 TownMap_GetKantoLandmarkLimits: ; 910e8
 	ld a, [wStatusFlags]
-	bit 6, a
+	bit 6, a ; ENGINE_CREDITS_SKIP
 	jr z, .not_hof
 	ld d, ROUTE_28
 	ld e, PALLET_TOWN
@@ -754,7 +784,7 @@
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
-	ld [hl], $8
+	ld [hl], $08
 	call _UpdateRadioStation
 	ld hl, wJumptableIndex
 	inc [hl]
@@ -780,23 +810,23 @@
 
 .left
 	ld a, [wPokegearFlags]
-	bit 2, a
+	bit 2, a ; ENGINE_PHONE_CARD
 	jr z, .no_phone
-	ld c, $7
-	ld b, $2
+	ld c, POKEGEARSTATE_PHONEINIT
+	ld b, POKEGEARCARD_PHONE
 	jr .switch_page
 
 .no_phone
 	ld a, [wPokegearFlags]
-	bit 0, a
+	bit 0, a ; ENGINE_MAP_CARD
 	jr z, .no_map
-	ld c, $2
-	ld b, $1
+	ld c, POKEGEARSTATE_MAPCHECKREGION
+	ld b, POKEGEARCARD_MAP
 	jr .switch_page
 
 .no_map
-	ld c, $0
-	ld b, $0
+	ld c, POKEGEARSTATE_CLOCKINIT
+	ld b, POKEGEARCARD_CLOCK
 .switch_page
 	call Pokegear_SwitchPage
 	ret
@@ -839,23 +869,23 @@
 
 .left
 	ld a, [wPokegearFlags]
-	bit 0, a
+	bit 0, a ; ENGINE_MAP_CARD
 	jr z, .no_map
-	ld c, $2
-	ld b, $1
+	ld c, POKEGEARSTATE_MAPCHECKREGION
+	ld b, POKEGEARCARD_MAP
 	jr .switch_page
 
 .no_map
-	ld c, $0
-	ld b, $0
+	ld c, POKEGEARSTATE_CLOCKINIT
+	ld b, POKEGEARCARD_CLOCK
 	jr .switch_page
 
 .right
 	ld a, [wPokegearFlags]
-	bit 1, a
+	bit 1, a ; ENGINE_RADIO_CARD
 	ret z
-	ld c, $b
-	ld b, $3
+	ld c, POKEGEARSTATE_RADIOINIT
+	ld b, POKEGEARCARD_RADIO
 .switch_page
 	call Pokegear_SwitchPage
 	ret
@@ -891,12 +921,12 @@
 	ret
 
 .quit_submenu
-	ld a, $8
+	ld a, POKEGEARSTATE_PHONEJOYPAD
 	ld [wJumptableIndex], a
 	ret
 
 PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
-	call GetMapHeaderPhoneServiceNybble
+	call GetMapPhoneService
 	and a
 	jr nz, .no_service
 	ld hl, Options
@@ -931,7 +961,7 @@
 	farcall Phone_NoSignal
 	ld hl, .OutOfServiceArea
 	call PrintText
-	ld a, $8
+	ld a, POKEGEARSTATE_PHONEJOYPAD
 	ld [wJumptableIndex], a
 	ld hl, PokegearText_WhomToCall
 	call PrintText
@@ -958,7 +988,7 @@
 	and A_BUTTON | B_BUTTON
 	ret z
 	farcall HangUp
-	ld a, $8
+	ld a, POKEGEARSTATE_PHONEJOYPAD
 	ld [wJumptableIndex], a
 	ld hl, PokegearText_WhomToCall
 	call PrintText
@@ -993,7 +1023,7 @@
 .down
 	ld hl, wPokegearPhoneCursorPosition
 	ld a, [hl]
-	cp $3
+	cp 3
 	jr nc, .scroll_page_down
 	inc [hl]
 	jr .done_joypad_same_page
@@ -1001,7 +1031,7 @@
 .scroll_page_down
 	ld hl, wPokegearPhoneScrollPosition
 	ld a, [hl]
-	cp $6
+	cp 6
 	ret nc
 	inc [hl]
 	jr .done_joypad_update_page
@@ -1075,7 +1105,7 @@
 	ld a, [wPokegearPhoneLoadNameBuffer]
 	inc a
 	ld [wPokegearPhoneLoadNameBuffer], a
-	cp $4
+	cp 4
 	jr c, .loop
 	call PokegearPhone_UpdateCursor
 	ret
@@ -1309,7 +1339,7 @@
 
 ; 9146e
 
-; XXX
+; unused
 	ld a, [hHours]
 	cp 12
 	jr c, .am
@@ -1331,15 +1361,15 @@
 	ld a, c
 	ld [wJumptableIndex], a
 	ld a, b
-	ld [wcf64], a
+	ld [wPokegearCard], a
 	call DeleteSpriteAnimStruct2ToEnd
 	ret
 
 ExitPokegearRadio_HandleMusic: ; 91492
 	ld a, [wPokegearRadioMusicPlaying]
-	cp $fe
+	cp RESTART_MAP_MUSIC
 	jr z, .restart_map_music
-	cp $ff
+	cp ENTER_MAP_MUSIC
 	call z, EnterMapMusic
 	xor a
 	ld [wPokegearRadioMusicPlaying], a
@@ -1364,11 +1394,11 @@
 
 Pokegear_LoadTilemapRLE: ; 914bb (24:54bb)
 	; Format: repeat count, tile ID
-	; Terminated with $FF
+	; Terminated with -1
 	hlcoord 0, 0
 .loop
 	ld a, [de]
-	cp $ff
+	cp -1
 	ret z
 	ld b, a
 	inc de
@@ -1499,7 +1529,7 @@
 
 ; 916a1 (24:56a1)
 
-; XXX
+; unused
 	ld [wPokegearRadioChannelBank], a
 	ld a, [hli]
 	ld [wPokegearRadioChannelAddr], a
@@ -1510,7 +1540,7 @@
 ; 916ad
 
 RadioChannels:
-; frequencies and the shows that play on them.
+; entries correspond to constants/radio_constants.asm
 
 ; frequency value given here = 4 × ingame_frequency − 2
 	dbw 16, .PkmnTalkAndPokedexShow
@@ -1560,7 +1590,7 @@
 	call .InJohto
 	jr c, .NoSignal
 	ld a, [wPokegearFlags]
-	bit 3, a
+	bit 3, a ; ENGINE_EXPN_CARD
 	jr z, .NoSignal
 	jp LoadStation_PlacesAndPeople
 
@@ -1568,7 +1598,7 @@
 	call .InJohto
 	jr c, .NoSignal
 	ld a, [wPokegearFlags]
-	bit 3, a
+	bit 3, a ; ENGINE_EXPN_CARD
 	jr z, .NoSignal
 	jp LoadStation_LetsAllSing
 
@@ -1576,7 +1606,7 @@
 	call .InJohto
 	jr c, .NoSignal
 	ld a, [wPokegearFlags]
-	bit 3, a
+	bit 3, a ; ENGINE_EXPN_CARD
 	jr z, .NoSignal
 	jp LoadStation_PokeFluteRadio
 
@@ -1583,7 +1613,7 @@
 .EvolutionRadio:
 ; This station airs in the Lake of Rage area when Rocket are still in Mahogany.
 	ld a, [wStatusFlags]
-	bit 4, a
+	bit 4, a ; ENGINE_ROCKET_SIGNAL_ON_CH20
 	jr z, .NoSignal
 	ld a, [wPokegearMapPlayerIconLandmark]
 	cp MAHOGANY_TOWN
@@ -1669,7 +1699,7 @@
 	call Radio_BackUpFarCallParams
 	ld de, NotBuenasPasswordName
 	ld a, [wStatusFlags2]
-	bit 0, a
+	bit 0, a ; ENGINE_ROCKETS_IN_RADIO_TOWER
 	ret z
 	ld de, BuenasPasswordName
 	ret
@@ -1751,7 +1781,7 @@
 
 ; 91853 (24:5853)
 
-LoadStation_Dummy: ; 91853
+Unreferenced_LoadStation: ; 91853
 	ret
 
 RadioMusicRestartDE: ; 91854 (24:5854)
@@ -1768,7 +1798,7 @@
 
 RadioMusicRestartPokemonChannel: ; 91868 (24:5868)
 	push de
-	ld a, $fe
+	ld a, RESTART_MAP_MUSIC
 	ld [wPokegearRadioMusicPlaying], a
 	ld de, MUSIC_NONE
 	call PlayMusic
@@ -1799,7 +1829,7 @@
 NoRadioMusic: ; 9189d (24:589d)
 	ld de, MUSIC_NONE
 	call PlayMusic
-	ld a, $ff
+	ld a, ENTER_MAP_MUSIC
 	ld [wPokegearRadioMusicPlaying], a
 	ret
 
@@ -1810,7 +1840,7 @@
 	lb bc, 3, 18
 	call ClearBox
 	hlcoord 0, 12
-	ld bc, $412
+	lb bc, 4, 18
 	call TextBox
 	ret
 
@@ -1966,19 +1996,19 @@
 	ld a, [wTownMapPlayerIconLandmark]
 	cp KANTO_LANDMARK
 	jr nc, .kanto2
-	ld e, $0
+	ld e, JOHTO_REGION
 	jr .okay_tilemap
 
 .kanto2
-	ld e, $1
+	ld e, KANTO_REGION
 .okay_tilemap
 	farcall PokegearMap
-	ld a, $7
+	ld a, $07
 	ld bc, 6
 	hlcoord 1, 0
 	call ByteFill
 	hlcoord 0, 0
-	ld [hl], $6
+	ld [hl], $06
 	hlcoord 7, 0
 	ld [hl], $17
 	hlcoord 7, 1
@@ -1985,7 +2015,7 @@
 	ld [hl], $16
 	hlcoord 7, 2
 	ld [hl], $26
-	ld a, $7
+	ld a, $07
 	ld bc, NAME_LENGTH
 	hlcoord 8, 2
 	call ByteFill
@@ -2001,7 +2031,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call .PlayStation
 	ld c, 100
 	call DelayFrames
@@ -2031,10 +2061,10 @@
 ; 91a87
 
 .PlayStation: ; 91a87
-	ld a, -1
-	ld [EnemyTurnsTaken], a
+	ld a, ENTER_MAP_MUSIC
+	ld [wPokegearRadioMusicPlaying], a
 	ld hl, .StationPointers
-	ld d, $0
+	ld d, 0
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -2063,6 +2093,7 @@
 ; 91ab9
 
 .StationPointers: ; 91ab9
+; entries correspond to MAPRADIO_* constants
 	dw .OakOrPnP
 	dw LoadStation_OaksPokemonTalk
 	dw LoadStation_PokedexShow
@@ -2286,7 +2317,7 @@
 GetMapCursorCoordinates: ; 91c17
 	ld a, [wTownMapPlayerIconLandmark]
 	ld l, a
-	ld h, $0
+	ld h, 0
 	add hl, hl
 	ld de, Flypoints
 	add hl, de
@@ -2296,10 +2327,10 @@
 	ld c, a
 	ld a, [wTownMapCursorCoordinates + 1]
 	ld b, a
-	ld hl, $4
+	ld hl, 4
 	add hl, bc
 	ld [hl], e
-	ld hl, $5
+	ld hl, 5
 	add hl, bc
 	ld [hl], d
 	ret
@@ -2331,7 +2362,7 @@
 	ld hl, wVisitedSpawns
 	ld b, CHECK_FLAG
 	ld d, 0
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld a, c
 	ret
 
@@ -2440,7 +2471,7 @@
 
 ; 91d11
 
-_Area: ; 91d11
+Pokedex_GetArea: ; 91d11
 ; e: Current landmark
 	ld a, [wTownMapPlayerIconLandmark]
 	push af
@@ -2477,7 +2508,7 @@
 	call SetPalettes
 	xor a
 	ld [hBGMapMode], a
-	xor a ; Johto
+	xor a ; JOHTO_REGION
 	call .GetAndPlaceNest
 .loop
 	call JoyTextDelay
@@ -2524,13 +2555,13 @@
 	call ClearSprites
 	ld a, $90
 	ld [hWY], a
-	xor a ; Johto
+	xor a ; JOHTO_REGION
 	call .GetAndPlaceNest
 	ret
 
 .right
 	ld a, [wStatusFlags]
-	bit 6, a ; hall of fame
+	bit 6, a ; ENGINE_CREDITS_SKIP
 	ret z
 	ld a, [hWY]
 	and a
@@ -2538,7 +2569,7 @@
 	call ClearSprites
 	xor a
 	ld [hWY], a
-	ld a, 1 ; Kanto
+	ld a, KANTO_REGION
 	call .GetAndPlaceNest
 	ret
 
@@ -2596,7 +2627,7 @@
 	ld e, a
 	farcall FindNest ; load nest landmarks into TileMap[0,0]
 	decoord 0, 0
-	ld hl, Sprites
+	ld hl, Sprite01
 .nestloop
 	ld a, [de]
 	and a
@@ -2609,14 +2640,14 @@
 	; load into OAM
 	ld a, d
 	sub 4
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, e
 	sub 4
-	ld [hli], a
-	ld a, $7f ; nest icon in this context
-	ld [hli], a
+	ld [hli], a ; x
+	ld a, $7f ; nest icon
+	ld [hli], a ; tile id
 	xor a
-	ld [hli], a
+	ld [hli], a ; attributes
 	; next
 	pop de
 	inc de
@@ -2640,37 +2671,37 @@
 	ld c, e
 	ld b, d
 	ld de, .PlayerOAM
-	ld hl, Sprites
+	ld hl, Sprite01
 .ShowPlayerLoop:
 	ld a, [de]
 	cp $80
 	jr z, .clear_oam
 	add b
-	ld [hli], a
+	ld [hli], a ; y
 	inc de
 	ld a, [de]
 	add c
-	ld [hli], a
+	ld [hli], a ; x
 	inc de
 	ld a, [de]
 	add $78 ; where the player's sprite is loaded
-	ld [hli], a
+	ld [hli], a ; tile id
 	inc de
 	push bc
-	ld c, 0 ; RED
+	ld c, PAL_OW_RED
 	ld a, [wPlayerGender]
 	bit 0, a
-	jr z, .got_gender
-	inc c   ; BLUE
-.got_gender
+	jr z, .male
+	inc c ; PAL_OW_BLUE
+.male
 	ld a, c
-	ld [hli], a
+	ld [hli], a ; attributes
 	pop bc
 	jr .ShowPlayerLoop
 
 .clear_oam
-	ld hl, Sprites + 4 * 4
-	ld bc, SpritesEnd - (Sprites + 4 * 4)
+	ld hl, Sprite05
+	ld bc, SpritesEnd - Sprite05
 	xor a
 	call ByteFill
 	ret
@@ -2678,10 +2709,11 @@
 ; 91e9c
 
 .PlayerOAM: ; 91e9c
-	db -1 * 8, -1 * 8,  0 ; top left
-	db -1 * 8,  0 * 8,  1 ; top right
-	db  0 * 8, -1 * 8,  2 ; bottom left
-	db  0 * 8,  0 * 8,  3 ; bottom right
+	; y pxl, x pxl, tile offset
+	db -1 * 8, -1 * 8, 0 ; top left
+	db -1 * 8,  0 * 8, 1 ; top right
+	db  0 * 8, -1 * 8, 2 ; bottom left
+	db  0 * 8,  0 * 8, 3 ; bottom right
 	db $80 ; terminator
 ; 91ea9
 
@@ -2790,12 +2822,11 @@
 ; Current tile
 	ld a, [hli]
 	push hl
-; HP/borders use palette 0
+; The palette map covers tiles $00 to $5f; $60 and above use palette 0
 	cp $60
 	jr nc, .pal0
-; The palette data is condensed to nybbles,
 
-; least-significant first.
+; The palette data is condensed to nybbles, least-significant first.
 	ld hl, .PalMap
 	srl a
 	jr c, .odd
@@ -2806,7 +2837,7 @@
 	adc 0
 	ld h, a
 	ld a, [hl]
-	and %111
+	and PALETTE_MASK
 	jr .update
 
 .odd
@@ -2818,7 +2849,7 @@
 	ld h, a
 	ld a, [hl]
 	swap a
-	and %111
+	and PALETTE_MASK
 	jr .update
 
 .pal0
@@ -2834,11 +2865,11 @@
 	ret
 
 .PalMap:
-INCLUDE "data/palettes/town_map.asm"
+INCLUDE "gfx/pokegear/town_map_palette_map.asm"
 ; 91f7b
 
 TownMapMon: ; 91f7b
-; Draw the FlyMon icon at town map location in
+; Draw the FlyMon icon at town map location
 
 ; Get FlyMon species
 	ld a, [CurPartyMon]
@@ -2849,7 +2880,7 @@
 	ld a, [hl]
 	ld [wd265], a
 ; Get FlyMon icon
-	ld e, 8 ; starting tile in VRAM
+	ld e, $08 ; starting tile in VRAM
 	farcall GetSpeciesIcon
 ; Animation/palette
 	depixel 0, 0
@@ -2857,7 +2888,7 @@
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_TILE_ID
 	add hl, bc
-	ld [hl], $8
+	ld [hl], $08
 	ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
 	add hl, bc
 	ld [hl], SPRITE_ANIM_SEQ_NULL
@@ -2913,7 +2944,7 @@
 LoadTownMapGFX: ; 91ff2
 	ld hl, TownMapGFX
 	ld de, vTiles2
-	lb bc, BANK(TownMapGFX), $30
+	lb bc, BANK(TownMapGFX), 48
 	call DecompressRequest2bpp
 	ret
 
@@ -2932,7 +2963,7 @@
 FlyMapLabelBorderGFX: ; 922e1
 INCBIN "gfx/pokegear/flymap_label_border.1bpp"
 
-; XXX
+Unreferenced_Function92311:
 	xor a
 	ld [wTownMapPlayerIconLandmark], a
 	call ClearBGPalettes
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -26,83 +26,4 @@
 	ret
 ; 856b
 
-PredefPointers:: ; 856b
-; $4b Predef pointers
-; address, bank
-
-	add_predef LearnMove ; $0
-	add_predef Predef1
-	add_predef HealParty
-	add_predef FlagPredef
-	add_predef ComputeHPBarPixels
-	add_predef FillPP
-	add_predef TryAddMonToParty
-	add_predef AddTempmonToParty
-	add_predef SentGetPkmnIntoFromBox
-	add_predef SentPkmnIntoBox
-	add_predef GiveEgg
-	add_predef AnimateHPBar
-	add_predef CalcPkmnStats
-	add_predef CalcPkmnStatC
-	add_predef CanLearnTMHMMove
-	add_predef GetTMHMMove
-	add_predef Predef_LinkTextbox ; $ 10
-	add_predef PrintMoveDesc
-	add_predef UpdatePlayerHUD
-	add_predef PlaceGraphic
-	add_predef CheckPlayerPartyForFitPkmn
-	add_predef UpdateEnemyHUD
-	add_predef StartBattle
-	add_predef FillInExpBar
-	add_predef GetBattleMonBackpic ; $18
-	add_predef GetEnemyMonFrontpic
-	add_predef LearnLevelMoves
-	add_predef FillMoves
-	add_predef EvolveAfterBattle
-	add_predef TradeAnimationPlayer2
-	add_predef TradeAnimation
-	add_predef CopyPkmnToTempMon
-	add_predef ListMoves ; $20
-	add_predef PlaceNonFaintStatus
-	add_predef Predef22
-	add_predef ListMovePP
-	add_predef GetGender
-	add_predef StatsScreenInit
-	add_predef DrawPlayerHP
-	add_predef DrawEnemyHP
-	add_predef PrintTempMonStats ; $28
-	add_predef GetTypeName
-	add_predef PrintMoveType
-	add_predef PrintType
-	add_predef PrintMonTypes
-	add_predef GetUnownLetter
-	add_predef LoadPoisonBGPals
-	add_predef Predef2F
-	add_predef InitSGBBorder ; $30
-	add_predef Predef_LoadSGBLayout
-	add_predef _Area
-	add_predef CheckContestMon
-	add_predef Predef_StartBattle
-	add_predef Predef35
-	add_predef Predef36
-	add_predef PlayBattleAnim
-	add_predef Predef38 ; $38
-	add_predef Predef39
-	add_predef Predef3A
-	add_predef PartyMonItemName
-	add_predef GetMonFrontpic
-	add_predef GetMonBackpic
-	add_predef GetAnimatedFrontpicPredef
-	add_predef GetTrainerPic
-	add_predef DecompressPredef ; $40
-	add_predef CheckTypeMatchup
-	add_predef ConvertMon_1to2
-	add_predef NewPokedexEntry
-	add_predef AnimateMon_Slow_Normal
-	add_predef PlaceStatusString
-	add_predef LoadMonAnimation
-	add_predef AnimateFrontpic
-	add_predef Predef48 ; $48
-	add_predef HOF_AnimateFrontpic
-	dbw $ff, InexplicablyEmptyFunction ; ???
-; 864c
+INCLUDE "data/predef_pointers.asm"
--- a/engine/print_party.asm
+++ b/engine/print_party.asm
@@ -1,3 +1,5 @@
+PRINTPARTY_HP EQUS "\"◀\"" ; $71
+
 PrintPage1: ; 1dc1b0
 	hlcoord 0, 0
 	decoord 0, 0, wPrinterTileMapBuffer
@@ -141,18 +143,18 @@
 	call LoadFontsBattleExtra
 
 	ld de, GBPrinterHPIcon
-	ld hl, vTiles2 tile $71
+	ld hl, vTiles2 tile PRINTPARTY_HP
 	lb bc, BANK(GBPrinterHPIcon), 1
 	call Request1bpp
 
 	ld de, GBPrinterLvIcon
-	ld hl, vTiles2 tile $6e
+	ld hl, vTiles2 tile "<LV>"
 	lb bc, BANK(GBPrinterLvIcon), 1
 	call Request1bpp
 
-	ld de, ShinyIconGFX
-	ld hl, vTiles2 tile $3f
-	lb bc, BANK(ShinyIconGFX), 1
+	ld de, StatsScreenPageTilesGFX + 14 tiles ; shiny icon
+	ld hl, vTiles2 tile "⁂"
+	lb bc, BANK(StatsScreenPageTilesGFX), 1
 	call Get2bpp
 
 	xor a
@@ -166,7 +168,7 @@
 	ld a, [TempMonLevel]
 	call PrintLevel_Force3Digits
 	hlcoord 12, 2
-	ld [hl], "◀" ; Filled left triangle
+	ld [hl], PRINTPARTY_HP
 	inc hl
 	ld de, TempMonMaxHP
 	lb bc, 2, 3
@@ -330,7 +332,7 @@
 	farcall CheckShininess
 	ret nc
 	hlcoord 18, 2
-	ld [hl], "<SHINY>"
+	ld [hl], "⁂"
 	ret
 ; 1dc550
 
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -596,8 +596,7 @@
 	ret
 ; 847bd
 
-Function847bd: ; 847bd
-; XXX
+Unreferenced_Function847bd: ; 847bd
 	ld a, [wPrinterStatus]
 	and a
 	ret z
@@ -775,10 +774,10 @@
 	pop hl
 	jr z, .ok2
 
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	add hl, bc
 	call Printer_GetMonGender
-	ld bc, SCREEN_WIDTH - PKMN_NAME_LENGTH
+	ld bc, SCREEN_WIDTH - MON_NAME_LENGTH
 	add hl, bc
 	ld a, "/"
 	ld [hli], a
@@ -796,7 +795,7 @@
 	ld h, a
 	ld bc, sBoxMonNicknames - sBox
 	add hl, bc
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [wWhichBoxMonToPrint]
 	call AddNTimes
 	ld e, l
@@ -807,7 +806,7 @@
 	call PlaceString
 	pop hl
 
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	add hl, bc
 	push hl
 	ld a, [wAddrOfBoxToPrint]
--- a/engine/printnum.asm
+++ b/engine/printnum.asm
@@ -165,7 +165,7 @@
 	dec e
 	jr nz, .money_leading_zero
 	inc hl
-	ld [hl], $f2 ; XXX
+	ld [hl], "<DOT>"
 
 .money_leading_zero
 	call .AdvancePointer
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -28,6 +28,7 @@
 	jp hl
 
 RadioJumptable:
+; entries correspond to constants/radio_constants.asm
 	dw OaksPkmnTalk1  ; $00
 	dw PokedexShow1 ; $01
 	dw BenMonMusic1  ; $02
@@ -133,7 +134,7 @@
 	cp 2
 	jr nc, .print
 	inc hl
-	ld [hl], "<START>"
+	ld [hl], TX_START
 	inc a
 	ld [wNumRadioLinesPrinted], a
 	cp 2
@@ -203,11 +204,11 @@
 ; Choose a random route, and a random Pokemon from that route.
 .sample
 	call Random
-	and $1f
-	cp $f ; so wasteful
+	and %11111
+	cp (OaksPkmnTalkRoutesEnd - OaksPkmnTalkRoutes) / 2
 	jr nc, .sample
 	; We now have a number between 0 and 14.
-	ld hl, .routes
+	ld hl, OaksPkmnTalkRoutes
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -239,6 +240,7 @@
 	jr .loop
 
 .done
+	; Point hl to the list of morning Pokémon., skipping percentages
 rept 4
 	inc hl
 endr
@@ -245,8 +247,8 @@
 	; Generate a number, either 0, 1, or 2, to choose a time of day.
 .loop2
 	call Random
-	and 3
-	cp 3
+	maskbits NUM_DAYTIMES
+	cp DARKNESS_F
 	jr z, .loop2
 
 	ld bc, 2 * NUM_GRASSMON
@@ -271,8 +273,9 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
+
 	; Now that we've chosen our wild Pokemon,
 	; let's recover the map index info and get its name.
 	pop bc
@@ -289,22 +292,7 @@
 	ld a, OAKS_POKEMON_TALK
 	jp PrintRadioLine
 
-.routes
-	map ROUTE_29
-	map ROUTE_46
-	map ROUTE_30
-	map ROUTE_32
-	map ROUTE_34
-	map ROUTE_35
-	map ROUTE_37
-	map ROUTE_38
-	map ROUTE_39
-	map ROUTE_42
-	map ROUTE_43
-	map ROUTE_44
-	map ROUTE_45
-	map ROUTE_36
-	map ROUTE_31
+INCLUDE "data/radio/oaks_pkmn_talk_routes.asm"
 
 OaksPkmnTalk5:
 	ld hl, OPT_OakText2
@@ -360,11 +348,13 @@
 	db "@"
 
 OaksPkmnTalk8:
+	; 0-15 are all valid indexes into .Adverbs,
+	; so no need for a retry loop
 	call Random
-	and $f
+	maskbits NUM_OAKS_MON_TALK_ADVERBS
 	ld e, a
 	ld d, 0
-	ld hl, .Descriptors
+	ld hl, .Adverbs
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -373,7 +363,8 @@
 	ld a, OAKS_POKEMON_TALK_9
 	jp NextRadioLine
 
-.Descriptors:
+.Adverbs:
+; there are NUM_OAKS_MON_TALK_ADVERBS entries
 	dw .sweetadorably
 	dw .wigglyslickly
 	dw .aptlynamed
@@ -472,11 +463,13 @@
 	db "@"
 
 OaksPkmnTalk9:
+	; 0-15 are all valid indexes into .Adjectives,
+	; so no need for a retry loop
 	call Random
-	and $f
+	maskbits NUM_OAKS_MON_TALK_ADJECTIVES
 	ld e, a
 	ld d, 0
-	ld hl, .Descriptors
+	ld hl, .Adjectives
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -493,7 +486,8 @@
 .ok
 	jp NextRadioLine
 
-.Descriptors:
+.Adjectives:
+; there are NUM_OAKS_MON_TALK_ADJECTIVES entries
 	dw .cute
 	dw .weird
 	dw .pleasant
@@ -652,7 +646,7 @@
 	ld hl, wRadioTextDelay
 	dec [hl]
 	ret nz
-	ld de, $1d
+	ld de, MUSIC_POKEMON_TALK
 	callfar RadioMusicRestartDE
 	ld hl, .terminator
 	call PrintText
@@ -698,8 +692,8 @@
 	dec a
 	rlca
 	rlca
-	and 3
-	ld hl, .pokedexbanks
+	maskbits NUM_DEX_ENTRY_BANKS
+	ld hl, .PokedexEntryBanks
 	ld d, 0
 	ld e, a
 	add hl, de
@@ -708,7 +702,7 @@
 	pop hl
 	ret
 
-.pokedexbanks
+.PokedexEntryBanks
 	db BANK(PokedexEntries1)
 	db BANK(PokedexEntries2)
 	db BANK(PokedexEntries3)
@@ -819,7 +813,7 @@
 	ld bc, SCREEN_WIDTH - 1
 	call FarCopyBytes
 	ld hl, wPokedexShowPointerAddr
-	ld [hl], "<START>"
+	ld [hl], TX_START
 	inc hl
 	ld [hl], "<LINE>"
 	inc hl
@@ -1146,7 +1140,7 @@
 PeoplePlaces3:
 	ld hl, PnP_Text3
 	call Random
-	cp $7b ; 48 percent
+	cp 49 percent - 1
 	ld a, PLACES_AND_PEOPLE_4 ; People
 	jr c, .ok
 	ld a, PLACES_AND_PEOPLE_6 ; Places
@@ -1170,20 +1164,20 @@
 
 PeoplePlaces4: ; People
 	call Random
-	and $7f
+	maskbits NUM_TRAINER_CLASSES
 	inc a
 	cp NUM_TRAINER_CLASSES - 1
 	jr nc, PeoplePlaces4
 	push af
-	ld hl, .E4Names
+	ld hl, PnP_HiddenPeople
 	ld a, [wStatusFlags]
 	bit 6, a ; ENGINE_CREDITS_SKIP
 	jr z, .ok
-	ld hl, .KantoLeaderNames
+	ld hl, PnP_HiddenPeople_BeatE4
 	ld a, [wKantoBadges]
-	cp %11111111
+	cp %11111111 ; all badges
 	jr nz, .ok
-	ld hl, .MiscNames
+	ld hl, PnP_HiddenPeople_BeatKanto
 .ok
 	pop af
 	ld c, a
@@ -1203,10 +1197,7 @@
 	ld a, PLACES_AND_PEOPLE_5
 	jp NextRadioLine
 
-.E4Names:          db WILL, BRUNO, KAREN, KOGA, CHAMPION
-.KantoLeaderNames: db BROCK, MISTY, LT_SURGE, ERIKA, JANINE, SABRINA, BLAINE, BLUE
-.MiscNames:        db RIVAL1, POKEMON_PROF, CAL, RIVAL2, RED
-                   db -1
+INCLUDE "data/radio/pnp_hidden_people.asm"
 
 PnP_Text4:
 	; @  @ @
@@ -1214,11 +1205,13 @@
 	db "@"
 
 PeoplePlaces5:
+	; 0-15 are all valid indexes into .Adjectives,
+	; so no need for a retry loop
 	call Random
-	and $f
+	maskbits NUM_PNP_PEOPLE_ADJECTIVES
 	ld e, a
 	ld d, 0
-	ld hl, .Descriptors
+	ld hl, .Adjectives
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -1225,11 +1218,11 @@
 	ld h, [hl]
 	ld l, a
 	call Random
-	cp $a ; 6.25 percent
+	cp 4 percent
 	ld a, PLACES_AND_PEOPLE
 	jr c, .ok
 	call Random
-	cp $7b ; 48 percent
+	cp 49 percent - 1
 	ld a, PLACES_AND_PEOPLE_4 ; People
 	jr c, .ok
 	ld a, PLACES_AND_PEOPLE_6 ; Places
@@ -1236,7 +1229,8 @@
 .ok
 	jp NextRadioLine
 
-.Descriptors:
+.Adjectives:
+; there are NUM_PNP_PEOPLE_ADJECTIVES entries
 	dw PnP_cute
 	dw PnP_lazy
 	dw PnP_happy
@@ -1336,9 +1330,9 @@
 
 PeoplePlaces6: ; Places
 	call Random
-	cp 9
+	cp (PnP_HiddenPlacesEnd - PnP_HiddenPlaces) / 2
 	jr nc, PeoplePlaces6
-	ld hl, .Maps
+	ld hl, PnP_HiddenPlaces
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -1353,16 +1347,7 @@
 	ld a, PLACES_AND_PEOPLE_7
 	jp NextRadioLine
 
-.Maps:
-	map PALLET_TOWN
-	map ROUTE_22
-	map PEWTER_CITY
-	map CERULEAN_POLICE_STATION
-	map ROUTE_12
-	map ROUTE_11
-	map ROUTE_16
-	map ROUTE_14
-	map CINNABAR_POKECENTER_2F_BETA
+INCLUDE "data/radio/pnp_hidden_places.asm"
 
 PnP_Text5:
 	; @ @
@@ -1370,11 +1355,13 @@
 	db "@"
 
 PeoplePlaces7:
+	; 0-15 are all valid indexes into .Adjectives,
+	; so no need for a retry loop
 	call Random
-	and $f
+	maskbits NUM_PNP_PLACES_ADJECTIVES
 	ld e, a
 	ld d, 0
-	ld hl, .Descriptors
+	ld hl, .Adjectives
 	add hl, de
 	add hl, de
 	ld a, [hli]
@@ -1386,7 +1373,7 @@
 	ld a, PLACES_AND_PEOPLE
 	jr c, .ok
 	call Random
-	cp 1 + 48 percent
+	cp 49 percent - 1
 	ld a, PLACES_AND_PEOPLE_4 ; People
 	jr c, .ok
 	ld a, PLACES_AND_PEOPLE_6 ; Places
@@ -1393,7 +1380,8 @@
 .ok
 	jp PrintRadioLine
 
-.Descriptors:
+.Adjectives:
+; there are NUM_PNP_PLACES_ADJECTIVES entries
 	dw PnP_cute
 	dw PnP_lazy
 	dw PnP_happy
@@ -1572,7 +1560,7 @@
 	ld a, [wBuenasPassword]
 ; If we already generated the password today, we don't need to generate a new one.
 	ld hl, wWeeklyFlags
-	bit 7, [hl]
+	bit 7, [hl] ; ENGINE_BUENAS_PASSWORD
 	jr nz, .AlreadyGotIt
 ; There are only 11 groups to choose from.
 .greater_than_11
@@ -1586,7 +1574,7 @@
 ; For each group, choose one of the three passwords.
 .greater_than_three
 	call Random
-	and $3
+	maskbits NUM_PASSWORDS_PER_CATEGORY
 	cp NUM_PASSWORDS_PER_CATEGORY
 	jr nc, .greater_than_three
 ; The high nybble of wBuenasPassword will now contain the password group index, and the low nybble contains the actual password.
@@ -1594,7 +1582,7 @@
 	ld [wBuenasPassword], a
 ; Set the flag so that we don't generate a new password this week.
 	ld hl, wWeeklyFlags
-	set 7, [hl]
+	set 7, [hl] ; ENGINE_BUENAS_PASSWORD
 .AlreadyGotIt:
 	ld c, a
 	call GetBuenasPassword
@@ -1608,7 +1596,7 @@
 	ld a, c
 	swap a
 	and $f
-	ld hl, PasswordTable
+	ld hl, BuenasPasswordTable
 	ld d, 0
 	ld e, a
 	add hl, de
@@ -1640,12 +1628,12 @@
 	ret
 
 .StringFunctionJumpTable:
-	dw .Mon
-	dw .Item
-	dw .Move
-	dw .RawString
+; entries correspond to BUENA_* constants
+	dw .Mon       ; BUENA_MON
+	dw .Item      ; BUENA_ITEM
+	dw .Move      ; BUENA_MOVE
+	dw .RawString ; BUENA_STRING
 
-
 .Mon:
 	call .GetTheIndex
 	call GetPokemonName
@@ -1693,30 +1681,7 @@
 	ld de, StringBuffer1
 	ret
 
-PasswordTable:
-	dw .JohtoStarters
-	dw .Beverages
-	dw .HealingItems
-	dw .Balls
-	dw .Pokemon1
-	dw .Pokemon2
-	dw .JohtoTowns
-	dw .Types
-	dw .Moves
-	dw .XItems
-	dw .RadioStations
-                    ; string type, points, option 1, option 2, option 3
-.JohtoStarters:      db BUENA_MON,    10, CYNDAQUIL, TOTODILE, CHIKORITA
-.Beverages:          db BUENA_ITEM,   12, FRESH_WATER, SODA_POP, LEMONADE
-.HealingItems:       db BUENA_ITEM,   12, POTION, ANTIDOTE, PARLYZ_HEAL
-.Balls:              db BUENA_ITEM,   12, POKE_BALL, GREAT_BALL, ULTRA_BALL
-.Pokemon1:           db BUENA_MON,    10, PIKACHU, RATTATA, GEODUDE
-.Pokemon2:           db BUENA_MON,    10, HOOTHOOT, SPINARAK, DROWZEE
-.JohtoTowns:         db BUENA_STRING, 16, "NEW BARK TOWN@", "CHERRYGROVE CITY@", "AZALEA TOWN@"
-.Types:              db BUENA_STRING,  6, "FLYING@", "BUG@", "GRASS@"
-.Moves:              db BUENA_MOVE,   12, TACKLE, GROWL, MUD_SLAP
-.XItems:             db BUENA_ITEM,   12, X_ATTACK, X_DEFEND, X_SPEED
-.RadioStations:      db BUENA_STRING, 13, "#MON Talk@", "#MON Music@", "Lucky Channel@"
+INCLUDE "data/radio/buenas_passwords.asm"
 
 BuenasPassword5:
 	ld hl, BuenaRadioText5
@@ -1738,7 +1703,7 @@
 BuenasPasswordAfterMidnight:
 	push hl
 	ld hl, wWeeklyFlags
-	res 7, [hl]
+	res 7, [hl] ; ENGINE_BUENAS_PASSWORD
 	pop hl
 	ld a, BUENAS_PASSWORD_8
 	jp NextRadioLine
@@ -1745,7 +1710,7 @@
 
 BuenasPassword8:
 	ld hl, wWeeklyFlags
-	res 7, [hl]
+	res 7, [hl] ; ENGINE_BUENAS_PASSWORD
 	ld hl, BuenaRadioMidnightText10
 	ld a, BUENAS_PASSWORD_9
 	jp NextRadioLine
@@ -1958,18 +1923,7 @@
 	callfar RadioMusicRestartDE
 	ret
 
-RadioChannelSongs:
-	dw MUSIC_POKEMON_TALK
-	dw MUSIC_POKEMON_CENTER
-	dw MUSIC_TITLE
-	dw MUSIC_GAME_CORNER
-	dw MUSIC_BUENAS_PASSWORD
-	dw MUSIC_VIRIDIAN_CITY
-	dw MUSIC_BICYCLE
-	dw MUSIC_ROCKET_OVERTURE
-	dw MUSIC_POKE_FLUTE_CHANNEL
-	dw MUSIC_RUINS_OF_ALPH_RADIO
-	dw MUSIC_LAKE_OF_RAGE_ROCKET_RADIO
+INCLUDE "data/radio/channel_music.asm"
 
 NextRadioLine:
 	push af
--- a/engine/routines/checknickerrors.asm
+++ b/engine/routines/checknickerrors.asm
@@ -6,7 +6,7 @@
 
 	push bc
 	push de
-	ld b, PKMN_NAME_LENGTH
+	ld b, MON_NAME_LENGTH
 
 .checkchar
 ; end of nick?
@@ -64,10 +64,10 @@
 ; table defining which characters are actually text commands
 ; format:
 	;      ≥           <
-	db "<START>",  TX_BOX    + 1
-	db "<PLAY_G>", $18       + 1
-	db $1d,        "%"       + 1
-	db $35,        "<GREEN>" + 1
+	db TX_START,   TX_BOX    + 1
+	db "<PLAY_G>", "<JP_18>" + 1
+	db "<NI>",     "<NO>"    + 1
+	db "<ROUTE>",  "<GREEN>" + 1
 	db "<ENEMY>",  "<ENEMY>" + 1
 	db "<MOM>",    "<TM>"    + 1
 	db "<ROCKET>", "┘"       + 1
--- a/engine/routines/correcterrorsinplayerparty.asm
+++ b/engine/routines/correcterrorsinplayerparty.asm
@@ -1,4 +1,4 @@
-CorrectErrorsInPlayerParty: ; unreferenced
+Unreferenced_CorrectErrorsInPlayerParty:
 	ld hl, PartyCount
 	ld a, [hl]
 	and a
@@ -128,7 +128,7 @@
 	ld hl, StringBuffer1
 .got_nickname
 	pop de
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	pop bc
 
--- a/engine/routines/drawkrispackgfx.asm
+++ b/engine/routines/drawkrispackgfx.asm
@@ -11,10 +11,10 @@
 	ret
 
 PackFGFXPointers: ; 48e93
-	dw PackFGFX + (15 tiles) * 1
-	dw PackFGFX + (15 tiles) * 3
-	dw PackFGFX + (15 tiles) * 0
-	dw PackFGFX + (15 tiles) * 2
+	dw PackFGFX + (15 tiles) * 1 ; ITEM_POCKET
+	dw PackFGFX + (15 tiles) * 3 ; BALL_POCKET
+	dw PackFGFX + (15 tiles) * 0 ; KEY_ITEM_POCKET
+	dw PackFGFX + (15 tiles) * 2 ; TM_HM_POCKET
 
 PackFGFX: ; 48e9b
 INCBIN "gfx/pack/pack_f.2bpp"
--- a/engine/routines/emptyallsrambanks.asm
+++ b/engine/routines/emptyallsrambanks.asm
@@ -1,11 +1,11 @@
 EmptyAllSRAMBanks: ; 4cf1f
-	ld a, $0
+	ld a, 0
 	call .EmptyBank
-	ld a, $1
+	ld a, 1
 	call .EmptyBank
-	ld a, $2
+	ld a, 2
 	call .EmptyBank
-	ld a, $3
+	ld a, 3
 	call .EmptyBank
 	ret
 
--- a/engine/routines/flagpredef.asm
+++ b/engine/routines/flagpredef.asm
@@ -1,5 +1,5 @@
-FlagPredef: ; 4d7c1
-; Perform action b on flag c in flag array hl.
+SmallFarFlagAction: ; 4d7c1
+; Perform action b on bit c in flag array hl.
 ; If checking a flag, check flag array d:hl unless d is 0.
 
 ; For longer flag arrays, see FlagAction.
--- a/engine/routines/getsquareroot.asm
+++ b/engine/routines/getsquareroot.asm
@@ -1,3 +1,5 @@
+NUM_SQUARE_ROOTS EQU 255
+
 GetSquareRoot: ; 13b87
 ; Return the square root of de in b.
 
@@ -10,7 +12,7 @@
 ; Make sure we don't go past the end of the table.
 	inc b
 	ld a, b
-	cp $ff
+	cp NUM_SQUARE_ROOTS
 	ret z
 
 ; Iterate over the table until b**2 >= de.
@@ -23,8 +25,8 @@
 	ret
 
 .Squares: ; 13b98
-root = 1
-	rept $ff
-	dw root * root
-root = root + 1
-	endr
+x = 1
+rept NUM_SQUARE_ROOTS
+	dw x * x
+x = x + 1
+endr
--- a/engine/routines/initlist.asm
+++ b/engine/routines/initlist.asm
@@ -21,7 +21,7 @@
 	jr nz, .check_item_name
 	ld hl, CurMart
 	ld de, PokemonNames
-	ld a, PKMN_NAME
+	ld a, MON_NAME
 	jr .done
 
 .check_item_name
--- /dev/null
+++ b/engine/routines/loadoverworldfont.asm
@@ -1,0 +1,17 @@
+LoadOverworldFont:: ; 106594
+	ld de, .OverworldFontGFX
+	ld hl, vTiles1
+	lb bc, BANK(.OverworldFontGFX), $80
+	call Get2bpp
+	ld de, .OverworldFontSpaceGFX
+	ld hl, vTiles2 tile " "
+	lb bc, BANK(.OverworldFontSpaceGFX), 1
+	call Get2bpp
+	ret
+; 1065ad
+
+.OverworldFontGFX:
+INCBIN "gfx/font/overworld.2bpp"
+
+.OverworldFontSpaceGFX:
+INCBIN "gfx/font/overworld_space.2bpp"
--- a/engine/routines/loadpushoam.asm
+++ b/engine/routines/loadpushoam.asm
@@ -13,7 +13,7 @@
 .PushOAM: ; 403f
 	ld a, HIGH(Sprites)
 	ld [rDMA], a
-	ld a, (SpritesEnd - Sprites) / 4 ; 40
+	ld a, NUM_SPRITE_OAM_STRUCTS
 .pushoam_loop
 	dec a
 	jr nz, .pushoam_loop
--- a/engine/routines/newpokedexentry.asm
+++ /dev/null
@@ -1,52 +1,0 @@
-NewPokedexEntry: ; fb877
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	call LowVolume
-	call ClearBGPalettes
-	call ClearTileMap
-	call UpdateSprites
-	call ClearSprites
-	ld a, [wPokedexStatus]
-	push af
-	ld a, [hSCX]
-	add $5
-	ld [hSCX], a
-	xor a
-	ld [wPokedexStatus], a
-	farcall _NewPokedexEntry
-	call WaitPressAorB_BlinkCursor
-	ld a, $1
-	ld [wPokedexStatus], a
-	farcall DisplayDexEntry
-	call WaitPressAorB_BlinkCursor
-	pop af
-	ld [wPokedexStatus], a
-	call MaxVolume
-	call RotateThreePalettesRight
-	ld a, [hSCX]
-	add -5 ; 251 ; NUM_POKEMON
-	ld [hSCX], a
-	call .ReturnFromDexRegistration
-	pop af
-	ld [hMapAnims], a
-	ret
-; fb8c8
-
-.ReturnFromDexRegistration: ; fb8c8
-	call ClearTileMap
-	call LoadFontsExtra
-	call LoadStandardFont
-	farcall Pokedex_PlaceFrontpicTopLeftCorner
-	call WaitBGMap2
-	farcall GetEnemyMonDVs
-	ld a, [hli]
-	ld [TempMonDVs], a
-	ld a, [hl]
-	ld [TempMonDVs + 1], a
-	ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
-	call GetSGBLayout
-	call SetPalettes
-	ret
-; fb8f1
--- a/engine/routines/placegraphic.asm
+++ b/engine/routines/placegraphic.asm
@@ -1,7 +1,6 @@
 PlaceGraphic: ; 2ef6e
 ; Fill wBoxAlignment-aligned box width b height c
 ; with iterating tile starting from hGraphicStartTile at hl.
-; Predef $13
 
 	ld de, SCREEN_WIDTH
 
--- a/engine/routines/placewaitingtext.asm
+++ b/engine/routines/placewaitingtext.asm
@@ -11,7 +11,7 @@
 	jr .proceed
 
 .notinbattle
-	predef Predef_LinkTextbox
+	predef LinkTextboxAtHL
 
 .proceed
 	hlcoord 4, 11
--- a/engine/routines/playslowcry.asm
+++ b/engine/routines/playslowcry.asm
@@ -1,6 +1,6 @@
-PlaySlowCry: ; fb841
+Special_PlaySlowCry: ; fb841
 	ld a, [ScriptVar]
-	call LoadCryHeader
+	call LoadCry
 	jr c, .done
 
 	ld hl, CryPitch
@@ -23,7 +23,7 @@
 	ld [CryLength], a
 	ld a, h
 	ld [CryLength + 1], a
-	farcall _PlayCryHeader
+	farcall _PlayCry
 	call WaitSFX
 
 .done
--- a/engine/routines/printhoursmins.asm
+++ b/engine/routines/printhoursmins.asm
@@ -1,5 +1,4 @@
-Function1dd6a9: ; 1dd6a9
-; XXX
+Unreferenced_Function1dd6a9: ; 1dd6a9
 	ld a, b
 	ld b, c
 	ld c, a
--- /dev/null
+++ b/engine/routines/printitemdescription.asm
@@ -1,0 +1,31 @@
+PrintItemDescription: ; 0x1c8955
+; Print the description for item [CurSpecies] at de.
+
+	ld a, [CurSpecies]
+	cp TM01
+	jr c, .not_a_tm
+
+	ld [CurItem], a
+	push de
+	farcall GetTMHMItemMove
+	pop hl
+	ld a, [wd265]
+	ld [CurSpecies], a
+	predef PrintMoveDesc
+	ret
+
+.not_a_tm
+	push de
+	ld hl, ItemDescriptions
+	ld a, [CurSpecies]
+	dec a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	pop hl
+	jp PlaceString
+; 0x1c8987
--- a/engine/routines/sine.asm
+++ b/engine/routines/sine.asm
@@ -7,7 +7,6 @@
 	and %111111
 	cp  %100000
 	jr nc, .negative
-
 	call .ApplySineWave
 	ld a, h
 	ret
@@ -16,7 +15,7 @@
 	and %011111
 	call .ApplySineWave
 	ld a, h
-	xor -1
+	xor $ff
 	inc a
 	ret
 
@@ -31,7 +30,6 @@
 	inc hl
 	ld d, [hl]
 	ld hl, 0
-
 ; Factor amplitude
 .multiply
 	srl a
--- a/engine/routines/switchpartymons.asm
+++ b/engine/routines/switchpartymons.asm
@@ -25,13 +25,13 @@
 	ld a, " "
 	call ByteFill
 	pop af
-	ld hl, Sprites
-	ld bc, $10
+	ld hl, Sprite01
+	ld bc, 4 * SPRITEOAMSTRUCT_LENGTH
 	call AddNTimes
-	ld de, $4
-	ld c, $4
+	ld de, SPRITEOAMSTRUCT_LENGTH
+	ld c, 4
 .gfx_loop
-	ld [hl], $a0
+	ld [hl], SCREEN_WIDTH_PX ; y (off-screen)
 	add hl, de
 	dec c
 	jr nz, .gfx_loop
--- a/engine/routines/trademonfrontpic.asm
+++ b/engine/routines/trademonfrontpic.asm
@@ -10,7 +10,7 @@
 	ld [CurSpecies], a
 	call GetBaseData
 	pop de
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	ret
 
 AnimateTrademonFrontpic: ; 4d81e
--- /dev/null
+++ b/engine/routines/unreferenced_getgen1trainerclassname.asm
@@ -1,0 +1,21 @@
+Unreferenced_GetGen1TrainerClassName: ; 50a28
+	ld hl, Gen1TrainerClassNames
+	ld a, [TrainerClass]
+	dec a
+	ld c, a
+	ld b, 0
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, StringBuffer1
+.copy
+	ld a, [hli]
+	ld [de], a
+	inc de
+	cp "@"
+	jr nz, .copy
+	ret
+
+INCLUDE "data/unused/gen_1_trainer_names.asm"
--- a/engine/rtc.asm
+++ b/engine/rtc.asm
@@ -1,4 +1,4 @@
-StopRTC: ; Unreferenced???
+Unreferenced_StopRTC:
 	ld a, SRAM_ENABLE
 	ld [MBC3SRamEnable], a
 	call LatchClock
@@ -58,7 +58,7 @@
 	db -1, MORN_F
 ; 1404e
 
-Unknown_1404e: ; unreferenced
+Unreferenced_1404e:
 	db 20, NITE_F
 	db 40, MORN_F
 	db 60, DAY_F
@@ -146,14 +146,14 @@
 	farcall ClearDailyTimers
 	farcall Function170923
 ; mobile
-	ld a, $5
+	ld a, 5 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
-	ld a, [$aa8c]
+	ld a, [$aa8c] ; address of MBC30 bank
 	inc a
-	ld [$aa8c], a
-	ld a, [$b2fa]
+	ld [$aa8c], a ; address of MBC30 bank
+	ld a, [$b2fa] ; address of MBC30 bank
 	inc a
-	ld [$b2fa], a
+	ld [$b2fa], a ; address of MBC30 bank
 	call CloseSRAM
 	ret
 
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -415,13 +415,12 @@
 	jp CloseSRAM
 ; 14d18
 
-Function14d18: ; 14d18
-; XXX
+Unreferenced_Function14d18: ; 14d18
 ; copy .Data to SRA4:a007
-	ld a, $4
+	ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
 	ld hl, .Data
-	ld de, $a007
+	ld de, $a007 ; address of MBC30 bank
 	ld bc, .DataEnd - .Data
 	call CopyBytes
 	jp CloseSRAM
@@ -452,11 +451,10 @@
 	ret
 ; 14d6c
 
-Function14d6c: ; 14d6c
-; XXX
-	ld a, $4
+Unreferenced_Function14d6c: ; 14d6c
+	ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
-	ld a, [$a60b]
+	ld a, [$a60b] ; address of MBC30 bank
 	ld b, $0
 	and a
 	jr z, .ok
@@ -464,28 +462,26 @@
 
 .ok
 	ld a, b
-	ld [$a60b], a
+	ld [$a60b], a ; address of MBC30 bank
 	call CloseSRAM
 	ret
 ; 14d83
 
-Function14d83: ; 14d83
-; XXX
-	ld a, $4
+Unreferenced_Function14d83: ; 14d83
+	ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
 	xor a
-	ld [$a60c], a
-	ld [$a60d], a
+	ld [$a60c], a ; address of MBC30 bank
+	ld [$a60d], a ; address of MBC30 bank
 	call CloseSRAM
 	ret
 ; 14d93
 
-Function14d93: ; 14d93
-; XXX
-	ld a, $7
+Unreferenced_Function14d93: ; 14d93
+	ld a, 7 ; MBC30 bank used by JP Crystal; inaccessible by MBC3
 	call GetSRAMBank
 	xor a
-	ld [$a000], a
+	ld [$a000], a ; address of MBC30 bank
 	call CloseSRAM
 	ret
 ; 14da0
@@ -529,9 +525,9 @@
 	ld de, sPlayerData
 	ld bc, wPlayerDataEnd - wPlayerData
 	call CopyBytes
-	ld hl, wMapData
-	ld de, sMapData
-	ld bc, wMapDataEnd - wMapData
+	ld hl, wCurrMapData
+	ld de, sCurrMapData
+	ld bc, wCurrMapDataEnd - wCurrMapData
 	call CopyBytes
 	jp CloseSRAM
 ; 14df7
@@ -596,9 +592,9 @@
 	ld de, sBackupPlayerData
 	ld bc, wPlayerDataEnd - wPlayerData
 	call CopyBytes
-	ld hl, wMapData
-	ld de, sBackupMapData
-	ld bc, wMapDataEnd - wMapData
+	ld hl, wCurrMapData
+	ld de, sBackupCurrMapData
+	ld bc, wCurrMapDataEnd - wCurrMapData
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -781,9 +777,9 @@
 	ld de, wPlayerData
 	ld bc, wPlayerDataEnd - wPlayerData
 	call CopyBytes
-	ld hl, sMapData
-	ld de, wMapData
-	ld bc, wMapDataEnd - wMapData
+	ld hl, sCurrMapData
+	ld de, wCurrMapData
+	ld bc, wCurrMapDataEnd - wCurrMapData
 	call CopyBytes
 	call CloseSRAM
 	ld a, BANK(sBattleTowerChallengeState)
@@ -837,9 +833,9 @@
 	ld de, wPlayerData
 	ld bc, wPlayerDataEnd - wPlayerData
 	call CopyBytes
-	ld hl, sBackupMapData
-	ld de, wMapData
-	ld bc, wMapDataEnd - wMapData
+	ld hl, sBackupCurrMapData
+	ld de, wCurrMapData
+	ld bc, wCurrMapDataEnd - wCurrMapData
 	call CopyBytes
 	call CloseSRAM
 	ret
@@ -873,6 +869,11 @@
 
 
 _SaveData: ; 1509a
+	; This is called within two scenarios:
+	;   a) ErasePreviousSave (the process of erasing the save from a previous game file)
+	;   b) unused mobile functionality
+	; It is not part of a regular save.
+
 	ld a, BANK(sCrystalData)
 	call GetSRAMBank
 	ld hl, wCrystalData
@@ -880,7 +881,11 @@
 	ld bc, wCrystalDataEnd - wCrystalData
 	call CopyBytes
 
-	; XXX SRAM bank 7
+	; This block originally had some mobile functionality, but since we're still in
+	; BANK(sCrystalData), it instead overwrites the sixteen EventFlags starting at 1:a603 with
+	; garbage from wd479. This isn't an issue, since ErasePreviousSave is followed by a regular
+	; save that unwrites the garbage.
+
 	ld hl, wd479
 	ld a, [hli]
 	ld [$a60e + 0], a
@@ -898,7 +903,9 @@
 	ld bc, wCrystalDataEnd - wCrystalData
 	call CopyBytes
 
-	; XXX SRAM bank 7
+	; This block originally had some mobile functionality to mirror _SaveData above, but instead it
+	; (harmlessly) writes the aforementioned EventFlags to the unused wd479.
+
 	ld hl, wd479
 	ld a, [$a60e + 0]
 	ld [hli], a
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -128,7 +128,7 @@
 	dw Script_warp                       ; 3c
 	dw Script_readmoney                  ; 3d
 	dw Script_readcoins                  ; 3e
-	dw Script_RAM2MEM                    ; 3f
+	dw Script_vartomem                   ; 3f
 	dw Script_pokenamemem                ; 40
 	dw Script_itemtotext                 ; 41
 	dw Script_mapnametotext              ; 42
@@ -255,8 +255,7 @@
 
 Script_callasm:
 ; script command 0xe
-; parameters:
-;     asm (AsmPointerParam)
+; parameters: asm
 
 	call GetScriptByte
 	ld b, a
@@ -270,8 +269,7 @@
 
 Script_special:
 ; script command 0xf
-; parameters:
-;     predefined_script (MultiByteParam)
+; parameters: predefined_script
 
 	call GetScriptByte
 	ld e, a
@@ -282,8 +280,7 @@
 
 Script_ptcallasm:
 ; script command 0x10
-; parameters:
-;     asm (PointerToAsmPointerParam)
+; parameters: asm
 
 	call GetScriptByte
 	ld l, a
@@ -300,8 +297,7 @@
 
 Script_jumptextfaceplayer:
 ; script command 0x51
-; parameters:
-;     text_pointer (RawTextPointerLabelParam)
+; parameters: text_pointer
 
 	ld a, [ScriptBank]
 	ld [wScriptTextBank], a
@@ -315,8 +311,7 @@
 
 Script_jumptext:
 ; script command 0x53
-; parameters:
-;     text_pointer (RawTextPointerLabelParam)
+; parameters: text_pointer
 
 	ld a, [ScriptBank]
 	ld [wScriptTextBank], a
@@ -342,8 +337,7 @@
 
 Script_farjumptext:
 ; script command 0x52
-; parameters:
-;     text_pointer (PointerLabelBeforeBank)
+; parameters: text_pointer
 
 	call GetScriptByte
 	ld [wScriptTextBank], a
@@ -360,8 +354,7 @@
 
 Script_writetext:
 ; script command 0x4c
-; parameters:
-;     text_pointer (RawTextPointerLabelParam)
+; parameters: text_pointer
 
 	call GetScriptByte
 	ld l, a
@@ -374,8 +367,7 @@
 
 Script_farwritetext:
 ; script command 0x4b
-; parameters:
-;     text_pointer (PointerLabelBeforeBank)
+; parameters: text_pointer
 
 	call GetScriptByte
 	ld b, a
@@ -388,9 +380,7 @@
 
 Script_repeattext:
 ; script command 0x4d
-; parameters:
-;     byte (SingleByteParam)
-;     byte (SingleByteParam)
+; parameters: byte, byte
 
 	call GetScriptByte
 	ld l, a
@@ -444,8 +434,7 @@
 
 Script_loadmenudata:
 ; script command 0x4f
-; parameters:
-;     data (MenuDataPointerParam)
+; parameters: data
 
 	call GetScriptByte
 	ld l, a
@@ -466,8 +455,7 @@
 
 Script_pokepic:
 ; script command 0x56
-; parameters:
-;     pokemon (PokemonParam)
+; parameters: pokemon
 
 	call GetScriptByte
 	and a
@@ -512,9 +500,7 @@
 
 Script_battletowertext:
 ; script command 0xa4
-; parameters:
-;     pointer (PointerLabelBeforeBank)
-;     memory (SingleByteParam)
+; parameters: pointer, memory
 
 	call SetUpTextBox
 	call GetScriptByte
@@ -524,9 +510,7 @@
 
 Script_verbosegiveitem:
 ; script command 0x9e
-; parameters:
-;     item (ItemLabelByte)
-;     quantity (DecimalParam)
+; parameters: item, quantity
 
 	call Script_giveitem
 	call CurItemName
@@ -563,9 +547,7 @@
 
 Script_verbosegiveitem2:
 ; script command 0x9f
-; parameters:
-;     item (ItemLabelByte)
-;     var (SingleByteParam)
+; parameters: item, var
 
 	call GetScriptByte
 	cp -1
@@ -632,7 +614,7 @@
 	ld a, [wItemAttributeParamBuffer]
 	dec a
 	ld hl, .Pockets
-	and 3
+	maskbits NUM_POCKETS
 	add a
 	ld e, a
 	ld d, 0
@@ -677,9 +659,7 @@
 
 Script_pokemart:
 ; script command 0x94
-; parameters:
-;     dialog_id (SingleByteParam)
-;     mart_id (MultiByteParam)
+; parameters: dialog_id, mart_id
 
 	call GetScriptByte
 	ld c, a
@@ -694,8 +674,7 @@
 
 Script_elevator:
 ; script command 0x95
-; parameters:
-;     floor_list_pointer (PointerLabelParam)
+; parameters: floor_list_pointer
 
 	xor a
 	ld [ScriptVar], a
@@ -713,8 +692,7 @@
 
 Script_trade:
 ; script command 0x96
-; parameters:
-;     trade_id (SingleByteParam)
+; parameters: trade_id
 
 	call GetScriptByte
 	ld e, a
@@ -723,8 +701,7 @@
 
 Script_phonecall:
 ; script command 0x98
-; parameters:
-;     caller_name (RawTextPointerLabelParam)
+; parameters: caller_name
 
 	call GetScriptByte
 	ld e, a
@@ -743,8 +720,7 @@
 
 Script_askforphonenumber:
 ; script command 0x97
-; parameters:
-;     number (SingleByteParam)
+; parameters: number
 
 	call YesNoBox
 	jr c, .refused
@@ -752,14 +728,14 @@
 	ld c, a
 	farcall AddPhoneNumber
 	jr c, .phonefull
-	xor a
+	xor a ; PHONE_CONTACT_GOT
 	jr .done
 .phonefull
-	ld a, 1
+	ld a, PHONE_CONTACTS_FULL
 	jr .done
 .refused
 	call GetScriptByte
-	ld a, 2
+	ld a, PHONE_CONTACT_REFUSED
 .done
 	ld [ScriptVar], a
 	ret
@@ -766,8 +742,7 @@
 
 Script_describedecoration:
 ; script command 0x9a
-; parameters:
-;     byte (SingleByteParam)
+; parameters: byte
 
 	call GetScriptByte
 	ld b, a
@@ -778,8 +753,7 @@
 
 Script_fruittree:
 ; script command 0x9b
-; parameters:
-;     tree_id (SingleByteParam)
+; parameters: tree_id
 
 	call GetScriptByte
 	ld [CurFruitTree], a
@@ -789,10 +763,7 @@
 
 Script_swarm:
 ; script command 0xa0
-; parameters:
-;     flag (SingleByteParam)
-;     map_group (MapGroupParam)
-;     map_id (MapIdParam)
+; parameters: flag, map_group, map_id
 
 	call GetScriptByte
 	ld c, a
@@ -805,8 +776,7 @@
 
 Script_trainertext:
 ; script command 0x62
-; parameters:
-;     which_text (SingleByteParam)
+; parameters: which_text
 
 	call GetScriptByte
 	ld c, a
@@ -835,8 +805,7 @@
 
 Script_trainerflagaction:
 ; script command 0x63
-; parameters:
-;     action (SingleByteParam)
+; parameters: action
 
 	xor a
 	ld [ScriptVar], a
@@ -856,9 +825,7 @@
 
 Script_winlosstext:
 ; script command 0x64
-; parameters:
-;     win_text_pointer (TextPointerLabelParam)
-;     loss_text_pointer (TextPointerLabelParam)
+; parameters: win_text_pointer, loss_text_pointer
 
 	ld hl, wWinTextPointer
 	call GetScriptByte
@@ -908,8 +875,7 @@
 
 Script_playmusic:
 ; script command 0x7f
-; parameters:
-;     music_pointer (MultiByteParam)
+; parameters: music_pointer
 
 	ld de, MUSIC_NONE
 	call PlayMusic
@@ -925,9 +891,7 @@
 
 Script_musicfadeout:
 ; script command 0x81
-; parameters:
-;     music (MultiByteParam)
-;     fadetime (SingleByteParam)
+; parameters: music, fadetime
 
 	call GetScriptByte
 	ld [MusicFadeID], a
@@ -934,14 +898,13 @@
 	call GetScriptByte
 	ld [MusicFadeID + 1], a
 	call GetScriptByte
-	and $7f
+	and $ff ^ (1 << MUSIC_FADE_IN_F)
 	ld [MusicFade], a
 	ret
 
 Script_playsound:
 ; script command 0x85
-; parameters:
-;     sound_pointer (MultiByteParam)
+; parameters: sound_pointer
 
 	call GetScriptByte
 	ld e, a
@@ -965,8 +928,7 @@
 
 Script_cry:
 ; script command 0x84
-; parameters:
-;     cry_id (MultiByteParam)
+; parameters: cry_id
 
 	call GetScriptByte
 	push af
@@ -976,7 +938,7 @@
 	jr nz, .ok
 	ld a, [ScriptVar]
 .ok
-	call PlayCry
+	call PlayMonCry
 	ret
 
 GetScriptObject:
@@ -989,8 +951,7 @@
 
 Script_setlasttalked:
 ; script command 0x68
-; parameters:
-;     object id (SingleByteParam)
+; parameters: object_id
 
 	call GetScriptByte
 	call GetScriptObject
@@ -999,9 +960,7 @@
 
 Script_applymovement:
 ; script command 0x69
-; parameters:
-;     object id (SingleByteParam)
-;     data (MovementPointerLabelParam)
+; parameters: object_id, data
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1036,10 +995,9 @@
 	ret
 
 Script_applymovement2:
-; apply movement to last talked
 ; script command 0x6a
-; parameters:
-;     data (MovementPointerLabelParam)
+; parameters: data
+; apply movement to last talked
 
 	ld a, [hLastTalked]
 	ld c, a
@@ -1066,9 +1024,7 @@
 
 Script_faceobject:
 ; script command 0x6c
-; parameters:
-;     object1 (SingleByteParam)
-;     object2 (SingleByteParam)
+; parameters: object1, object2
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1098,9 +1054,7 @@
 
 Script_spriteface:
 ; script command 0x76
-; parameters:
-;     object id (SingleByteParam)
-;     facing (SingleByteParam)
+; parameters: object_id, facing
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1163,9 +1117,7 @@
 
 Script_variablesprite:
 ; script command 0x6d
-; parameters:
-;     byte (SingleByteParam)
-;     sprite (SingleByteParam)
+; parameters: byte, sprite
 
 	call GetScriptByte
 	ld e, a
@@ -1178,8 +1130,7 @@
 
 Script_appear:
 ; script command 0x6f
-; parameters:
-;     object id (SingleByteParam)
+; parameters: object_id
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1191,8 +1142,7 @@
 
 Script_disappear:
 ; script command 0x6e
-; parameters:
-;     object id (SingleByteParam)
+; parameters: object_id
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1229,9 +1179,7 @@
 
 Script_follow:
 ; script command 0x70
-; parameters:
-;     object2 (SingleByteParam)
-;     object1 (SingleByteParam)
+; parameters: object2, object1
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1250,10 +1198,7 @@
 
 Script_moveobject:
 ; script command 0x72
-; parameters:
-;     object id (SingleByteParam)
-;     x (SingleByteParam)
-;     y (SingleByteParam)
+; parameters: object id, x, y
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1269,8 +1214,7 @@
 
 Script_writeobjectxy:
 ; script command 0x73
-; parameters:
-;     object id (SingleByteParam)
+; parameters: object_id
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1284,9 +1228,7 @@
 
 Script_follownotexact:
 ; script command 0x77
-; parameters:
-;     object2 (SingleByteParam)
-;     object1 (SingleByteParam)
+; parameters: object2, object1
 
 	call GetScriptByte
 	call GetScriptObject
@@ -1299,8 +1241,7 @@
 
 Script_loademote:
 ; script command 0x74
-; parameters:
-;     bubble (SingleByteParam)
+; parameters: bubble
 
 	call GetScriptByte
 	cp -1
@@ -1313,10 +1254,7 @@
 
 Script_showemote:
 ; script command 0x75
-; parameters:
-;     bubble (SingleByteParam)
-;     object id (SingleByteParam)
-;     time (DecimalParam)
+; parameters: bubble, object_id, time
 
 	call GetScriptByte
 	ld [ScriptVar], a
@@ -1352,8 +1290,7 @@
 
 Script_earthquake:
 ; script command 0x78
-; parameters:
-;     param (DecimalParam)
+; parameters: param
 
 	ld hl, EarthquakeMovement
 	ld de, wEarthquakeMovementDataBuffer
@@ -1407,9 +1344,7 @@
 
 Script_loadwildmon:
 ; script command 0x5d
-; parameters:
-;     pokemon (PokemonParam)
-;     level (DecimalParam)
+; parameters: pokemon, level
 
 	ld a, (1 << 7)
 	ld [wBattleScriptFlags], a
@@ -1421,9 +1356,7 @@
 
 Script_loadtrainer:
 ; script command 0x5e
-; parameters:
-;     trainer_group (TrainerGroupParam)
-;     trainer_id (TrainerIdParam)
+; parameters: trainer_group, trainer_id
 
 	ld a, (1 << 7) | 1
 	ld [wBattleScriptFlags], a
@@ -1445,8 +1378,7 @@
 
 Script_catchtutorial:
 ; script command 0x61
-; parameters:
-;     byte (SingleByteParam)
+; parameters: byte
 
 	call GetScriptByte
 	ld [BattleType], a
@@ -1498,8 +1430,7 @@
 
 Script_scall:
 ; script command 0x0
-; parameters:
-;     pointer (ScriptPointerLabelParam)
+; parameters: pointer
 
 	ld a, [ScriptBank]
 	ld b, a
@@ -1511,8 +1442,7 @@
 
 Script_farscall:
 ; script command 0x1
-; parameters:
-;     pointer (ScriptPointerLabelBeforeBank)
+; parameters: pointer
 
 	call GetScriptByte
 	ld b, a
@@ -1524,8 +1454,7 @@
 
 Script_ptcall:
 ; script command 0x2
-; parameters:
-;     pointer (PointerLabelToScriptPointer)
+; parameters: pointer
 
 	call GetScriptByte
 	ld l, a
@@ -1577,8 +1506,7 @@
 
 Script_jump:
 ; script command 0x3
-; parameters:
-;     pointer (ScriptPointerLabelParam)
+; parameters: pointer
 
 	call GetScriptByte
 	ld l, a
@@ -1590,8 +1518,7 @@
 
 Script_farjump:
 ; script command 0x4
-; parameters:
-;     pointer (ScriptPointerLabelBeforeBank)
+; parameters: pointer
 
 	call GetScriptByte
 	ld b, a
@@ -1603,8 +1530,7 @@
 
 Script_ptjump:
 ; script command 0x5
-; parameters:
-;     pointer (PointerLabelToScriptPointer)
+; parameters: pointer
 
 	call GetScriptByte
 	ld l, a
@@ -1619,8 +1545,7 @@
 
 Script_iffalse:
 ; script command 0x8
-; parameters:
-;     pointer (ScriptPointerLabelParam)
+; parameters: pointer
 
 	ld a, [ScriptVar]
 	and a
@@ -1629,8 +1554,7 @@
 
 Script_iftrue:
 ; script command 0x9
-; parameters:
-;     pointer (ScriptPointerLabelParam)
+; parameters: pointer
 
 	ld a, [ScriptVar]
 	and a
@@ -1639,9 +1563,7 @@
 
 Script_if_equal:
 ; script command 0x6
-; parameters:
-;     byte (SingleByteParam)
-;     pointer (ScriptPointerLabelParam)
+; parameters: byte, pointer
 
 	call GetScriptByte
 	ld hl, ScriptVar
@@ -1651,9 +1573,7 @@
 
 Script_if_not_equal:
 ; script command 0x7
-; parameters:
-;     byte (SingleByteParam)
-;     pointer (ScriptPointerLabelParam)
+; parameters: byte, pointer
 
 	call GetScriptByte
 	ld hl, ScriptVar
@@ -1663,9 +1583,7 @@
 
 Script_if_greater_than:
 ; script command 0xa
-; parameters:
-;     byte (SingleByteParam)
-;     pointer (ScriptPointerLabelParam)
+; parameters: byte, pointer
 
 	ld a, [ScriptVar]
 	ld b, a
@@ -1676,9 +1594,7 @@
 
 Script_if_less_than:
 ; script command 0xb
-; parameters:
-;     byte (SingleByteParam)
-;     pointer (ScriptPointerLabelParam)
+; parameters: byte, pointer
 
 	call GetScriptByte
 	ld b, a
@@ -1689,8 +1605,7 @@
 
 Script_jumpstd:
 ; script command 0xc
-; parameters:
-;     predefined_script (MultiByteParam)
+; parameters: predefined_script
 
 	call StdScript
 	jr ScriptJump
@@ -1697,8 +1612,7 @@
 
 Script_callstd:
 ; script command 0xd
-; parameters:
-;     predefined_script (MultiByteParam)
+; parameters: predefined_script
 
 	call StdScript
 	ld d, h
@@ -1738,8 +1652,7 @@
 
 Script_priorityjump:
 ; script command 0x8d
-; parameters:
-;     pointer (ScriptPointerLabelParam)
+; parameters: pointer
 
 	ld a, [ScriptBank]
 	ld [wPriorityScriptBank], a
@@ -1766,9 +1679,7 @@
 
 Script_checkmapscene:
 ; script command 0x11
-; parameters:
-;     map_group (SingleByteParam)
-;     map_id (SingleByteParam)
+; parameters: map_group, map_id
 
 	call GetScriptByte
 	ld b, a
@@ -1789,8 +1700,7 @@
 
 Script_setscene:
 ; script command 0x14
-; parameters:
-;     scene_id (SingleByteParam)
+; parameters: scene_id
 
 	ld a, [MapGroup]
 	ld b, a
@@ -1800,10 +1710,7 @@
 
 Script_setmapscene:
 ; script command 0x12
-; parameters:
-;     map_group (MapGroupParam)
-;     map_id (MapIdParam)
-;     scene_id (SingleByteParam)
+; parameters: map_group, map_id, scene_id
 
 	call GetScriptByte
 	ld b, a
@@ -1821,8 +1728,7 @@
 
 Script_copybytetovar:
 ; script command 0x19
-; parameters:
-;     address (RAMAddressParam)
+; parameters: address
 
 	call GetScriptByte
 	ld l, a
@@ -1834,8 +1740,7 @@
 
 Script_copyvartobyte:
 ; script command 0x1a
-; parameters:
-;     address (RAMAddressParam)
+; parameters: address
 
 	call GetScriptByte
 	ld l, a
@@ -1847,9 +1752,7 @@
 
 Script_loadvar:
 ; script command 0x1b
-; parameters:
-;     address (RAMAddressParam)
-;     value (SingleByteParam)
+; parameters: address, value
 
 	call GetScriptByte
 	ld l, a
@@ -1861,8 +1764,7 @@
 
 Script_writebyte:
 ; script command 0x15
-; parameters:
-;     value (SingleByteParam)
+; parameters: value
 
 	call GetScriptByte
 	ld [ScriptVar], a
@@ -1870,8 +1772,7 @@
 
 Script_addvar:
 ; script command 0x16
-; parameters:
-;     value (SingleByteParam)
+; parameters: value
 
 	call GetScriptByte
 	ld hl, ScriptVar
@@ -1881,8 +1782,7 @@
 
 Script_random:
 ; script command 0x17
-; parameters:
-;     input (SingleByteParam)
+; parameters: input
 
 	call GetScriptByte
 	ld [ScriptVar], a
@@ -1935,8 +1835,7 @@
 
 Script_checkcode:
 ; script command 0x1c
-; parameters:
-;     variable_id (SingleByteParam)
+; parameters: variable_id
 
 	call GetScriptByte
 	call GetVarAction
@@ -1946,8 +1845,7 @@
 
 Script_writevarcode:
 ; script command 0x1d
-; parameters:
-;     variable_id (SingleByteParam)
+; parameters: variable_id
 
 	call GetScriptByte
 	call GetVarAction
@@ -1957,9 +1855,7 @@
 
 Script_writecode:
 ; script command 0x1e
-; parameters:
-;     variable_id (SingleByteParam)
-;     value (SingleByteParam)
+; parameters: variable_id, value
 
 	call GetScriptByte
 	call GetVarAction
@@ -1975,18 +1871,16 @@
 Script_checkver:
 ; script command 0x18
 
-	ld a, [Version]
+	ld a, [.gs_version]
 	ld [ScriptVar], a
 	ret
 
-Version:
-	db VERSION
+.gs_version:
+	db GS_VERSION
 
 Script_pokenamemem:
 ; script command 0x40
-; parameters:
-;     pokemon (PokemonParam); leave $0 to draw from script var
-;     memory (SingleByteParam)
+; parameters: pokemon (0 aka USE_SCRIPT_VAR to use ScriptVar), memory
 
 	call GetScriptByte
 	and a
@@ -1999,7 +1893,7 @@
 
 ConvertMemToText:
 	call GetScriptByte
-	cp 3
+	cp NUM_MEM_BUFFERS
 	jr c, .ok
 	xor a
 .ok
@@ -2013,12 +1907,10 @@
 
 Script_itemtotext:
 ; script command 0x41
-; parameters:
-;     item (ItemLabelByte); use 0 to draw from ScriptVar
-;     memory (SingleByteParam)
+; parameters: item (0 aka USE_SCRIPT_VAR to use ScriptVar), memory
 
 	call GetScriptByte
-	and a
+	and a ; USE_SCRIPT_VAR
 	jr nz, .ok
 	ld a, [ScriptVar]
 .ok
@@ -2029,8 +1921,7 @@
 
 Script_mapnametotext:
 ; script command 0x42
-; parameters:
-;     memory (SingleByteParam)
+; parameters: memory
 
 	ld a, [MapGroup]
 	ld b, a
@@ -2046,9 +1937,7 @@
 
 Script_landmarktotext:
 ; script command 0xa5
-; parameters:
-;     id (SingleByteParam)
-;     memory (SingleByteParam)
+; parameters: id, memory
 
 	call GetScriptByte
 	jr ConvertLandmarkToText
@@ -2055,10 +1944,7 @@
 
 Script_trainertotext:
 ; script command 0x43
-; parameters:
-;     trainer_id (TrainerGroupParam)
-;     trainer_group (TrainerIdParam)
-;     memory (SingleByteParam)
+; parameters: trainer_id, trainer_group, memory
 
 	call GetScriptByte
 	ld c, a
@@ -2069,10 +1955,7 @@
 
 Script_name:
 ; script command 0xa7
-; parameters:
-;     type (SingleByteParam)
-;     id (SingleByteParam)
-;     memory (SingleByteParam)
+; parameters: type, id, memory
 
 	call GetScriptByte
 	ld [wNamedObjectTypeBuffer], a
@@ -2086,9 +1969,7 @@
 
 Script_trainerclassname:
 ; script command 0xa6
-; parameters:
-;     id (SingleByteParam)
-;     memory (SingleByteParam)
+; parameters: id, memory
 
 	ld a, TRAINER_NAME
 	ld [wNamedObjectTypeBuffer], a
@@ -2096,9 +1977,7 @@
 
 Script_readmoney:
 ; script command 0x3d
-; parameters:
-;     account (SingleByteParam)
-;     memory (SingleByteParam)
+; parameters: account, memory
 
 	call ResetStringBuffer1
 	call GetMoneyAccount
@@ -2110,8 +1989,7 @@
 
 Script_readcoins:
 ; script command 0x3e
-; parameters:
-;     memory (SingleByteParam)
+; parameters: memory
 
 	call ResetStringBuffer1
 	ld hl, StringBuffer1
@@ -2121,10 +1999,9 @@
 	ld de, StringBuffer1
 	jp ConvertMemToText
 
-Script_RAM2MEM:
+Script_vartomem:
 ; script command 0x3f
-; parameters:
-;     memory (SingleByteParam)
+; parameters: memory
 
 	call ResetStringBuffer1
 	ld de, ScriptVar
@@ -2143,9 +2020,7 @@
 
 Script_stringtotext:
 ; script command 0x44
-; parameters:
-;     text_pointer (EncodedTextLabelParam)
-;     memory (SingleByteParam)
+; parameters: text_pointer, memory
 
 	call GetScriptByte
 	ld e, a
@@ -2159,8 +2034,7 @@
 
 Script_givepokeitem:
 ; script command 0x2f
-; parameters:
-;     pointer (PointerParamToItemAndLetter)
+; parameters: pointer
 
 	call GetScriptByte
 	ld l, a
@@ -2181,8 +2055,7 @@
 
 Script_checkpokeitem:
 ; script command 0x30
-; parameters:
-;     pointer (PointerParamToItemAndLetter)
+; parameters: pointer
 
 	call GetScriptByte
 	ld e, a
@@ -2195,9 +2068,7 @@
 
 Script_giveitem:
 ; script command 0x1f
-; parameters:
-;     item (ItemLabelByte)
-;     quantity (SingleByteParam)
+; parameters: item, quantity
 
 	call GetScriptByte
 	cp ITEM_FROM_MEM
@@ -2220,9 +2091,7 @@
 
 Script_takeitem:
 ; script command 0x20
-; parameters:
-;     item (ItemLabelByte)
-;     quantity (DecimalParam)
+; parameters: item, quantity
 
 	xor a
 	ld [ScriptVar], a
@@ -2241,8 +2110,7 @@
 
 Script_checkitem:
 ; script command 0x21
-; parameters:
-;     item (ItemLabelByte)
+; parameters: item
 
 	xor a
 	ld [ScriptVar], a
@@ -2257,9 +2125,7 @@
 
 Script_givemoney:
 ; script command 0x22
-; parameters:
-;     account (SingleByteParam)
-;     money (MoneyByteParam)
+; parameters: account, money
 
 	call GetMoneyAccount
 	call LoadMoneyAmountToMem
@@ -2268,9 +2134,7 @@
 
 Script_takemoney:
 ; script command 0x23
-; parameters:
-;     account (SingleByteParam)
-;     money (MoneyByteParam)
+; parameters: account, money
 
 	call GetMoneyAccount
 	call LoadMoneyAmountToMem
@@ -2279,9 +2143,7 @@
 
 Script_checkmoney:
 ; script command 0x24
-; parameters:
-;     account (SingleByteParam)
-;     money (MoneyByteParam)
+; parameters: account, money
 
 	call GetMoneyAccount
 	call LoadMoneyAmountToMem
@@ -2288,15 +2150,15 @@
 	farcall CompareMoney
 
 CompareMoneyAction:
-	jr c, .two
-	jr z, .one
-	ld a, 0
+	jr c, .less
+	jr z, .exact
+	ld a, HAVE_MORE
 	jr .done
-.one
-	ld a, 1
+.exact
+	ld a, HAVE_AMOUNT
 	jr .done
-.two
-	ld a, 2
+.less
+	ld a, HAVE_LESS
 .done
 	ld [ScriptVar], a
 	ret
@@ -2304,9 +2166,9 @@
 GetMoneyAccount:
 	call GetScriptByte
 	and a
-	ld de, Money
+	ld de, Money ; YOUR_MONEY
 	ret z
-	ld de, wMomsMoney
+	ld de, wMomsMoney ; MOMS_MONEY
 	ret
 
 LoadMoneyAmountToMem:
@@ -2325,8 +2187,7 @@
 
 Script_givecoins:
 ; script command 0x25
-; parameters:
-;     coins (CoinByteParam)
+; parameters: coins
 
 	call LoadCoinAmountToMem
 	farcall GiveCoins
@@ -2334,8 +2195,7 @@
 
 Script_takecoins:
 ; script command 0x26
-; parameters:
-;     coins (CoinByteParam)
+; parameters: coins
 
 	call LoadCoinAmountToMem
 	farcall TakeCoins
@@ -2343,8 +2203,7 @@
 
 Script_checkcoins:
 ; script command 0x27
-; parameters:
-;     coins (CoinByteParam)
+; parameters: coins
 
 	call LoadCoinAmountToMem
 	farcall CheckCoins
@@ -2360,8 +2219,7 @@
 
 Script_checktime:
 ; script command 0x2b
-; parameters:
-;     time (SingleByteParam)
+; parameters: time
 
 	xor a
 	ld [ScriptVar], a
@@ -2375,8 +2233,7 @@
 
 Script_checkpoke:
 ; script command 0x2c
-; parameters:
-;     pkmn (PokemonParam)
+; parameters: pokemon
 
 	xor a
 	ld [ScriptVar], a
@@ -2391,8 +2248,7 @@
 
 Script_addcellnum:
 ; script command 0x28
-; parameters:
-;     person (SingleByteParam)
+; parameters: person
 
 	xor a
 	ld [ScriptVar], a
@@ -2406,8 +2262,7 @@
 
 Script_delcellnum:
 ; script command 0x29
-; parameters:
-;     person (SingleByteParam)
+; parameters: person
 
 	xor a
 	ld [ScriptVar], a
@@ -2421,8 +2276,7 @@
 
 Script_checkcellnum:
 ; script command 0x2a
-; parameters:
-;     person (SingleByteParam)
+; parameters: person
 ; returns false if the cell number is not in your phone
 
 	xor a
@@ -2437,8 +2291,7 @@
 
 Script_specialphonecall:
 ; script command 0x9c
-; parameters:
-;     call_id (MultiByteParam)
+; parameters: call_id
 
 	call GetScriptByte
 	ld [wSpecialPhoneCallID], a
@@ -2460,13 +2313,7 @@
 
 Script_givepoke:
 ; script command 0x2d
-; parameters:
-;     pokemon (PokemonParam)
-;     level (DecimalParam)
-;     item (ItemLabelByte)
-;     trainer (DecimalParam)
-;     trainer_name_pointer (MultiByteParam)
-;     pkmn_nickname (MultiByteParam)
+; parameters: pokemon, level, item, trainer, trainer_name_pointer, pkmn_nickname
 
 	call GetScriptByte
 	ld [CurPartySpecies], a
@@ -2494,9 +2341,7 @@
 
 Script_giveegg:
 ; script command 0x2e
-; parameters:
-;     pkmn (PokemonParam)
-;     level (DecimalParam)
+; parameters: pokemon, level
 ; if no room in the party, return 0 in ScriptVar; else, return 2
 
 	xor a ; PARTYMON
@@ -2514,8 +2359,7 @@
 
 Script_setevent:
 ; script command 0x33
-; parameters:
-;     bit_number (MultiByteParam)
+; parameters: bit_number
 
 	call GetScriptByte
 	ld e, a
@@ -2527,8 +2371,7 @@
 
 Script_clearevent:
 ; script command 0x32
-; parameters:
-;     bit_number (MultiByteParam)
+; parameters: bit_number
 
 	call GetScriptByte
 	ld e, a
@@ -2540,8 +2383,7 @@
 
 Script_checkevent:
 ; script command 0x31
-; parameters:
-;     bit_number (MultiByteParam)
+; parameters: bit_number
 
 	call GetScriptByte
 	ld e, a
@@ -2559,8 +2401,7 @@
 
 Script_setflag:
 ; script command 0x36
-; parameters:
-;     bit_number (MultiByteParam)
+; parameters: bit_number
 
 	call GetScriptByte
 	ld e, a
@@ -2572,8 +2413,7 @@
 
 Script_clearflag:
 ; script command 0x35
-; parameters:
-;     bit_number (MultiByteParam)
+; parameters: bit_number
 
 	call GetScriptByte
 	ld e, a
@@ -2585,14 +2425,13 @@
 
 Script_checkflag:
 ; script command 0x34
-; parameters:
-;     bit_number (MultiByteParam)
+; parameters: bit_number
 
 	call GetScriptByte
 	ld e, a
 	call GetScriptByte
 	ld d, a
-	ld b, 2 ; check
+	ld b, CHECK_FLAG
 	call _EngineFlagAction
 	ld a, c
 	and a
@@ -2622,8 +2461,7 @@
 
 Script_xycompare:
 ; script command 0x39
-; parameters:
-;     pointer (MultiByteParam)
+; parameters: pointer
 
 	call GetScriptByte
 	ld [wXYComparePointer], a
@@ -2633,15 +2471,10 @@
 
 Script_warpfacing:
 ; script command 0xa3
-; parameters:
-;     facing (SingleByteParam)
-;     map_group (MapGroupParam)
-;     map_id (MapIdParam)
-;     x (SingleByteParam)
-;     y (SingleByteParam)
+; parameters: facing, map_group, map_id, x, y
 
 	call GetScriptByte
-	and $3
+	maskbits NUM_DIRECTIONS
 	ld c, a
 	ld a, [wPlayerSpriteSetupFlags]
 	set 5, a
@@ -2651,11 +2484,7 @@
 
 Script_warp:
 ; script command 0x3c
-; parameters:
-;     map_group (MapGroupParam)
-;     map_id (MapIdParam)
-;     x (SingleByteParam)
-;     y (SingleByteParam)
+; parameters: map_group, map_id, x, y
 
 ; This seems to be some sort of error handling case.
 	call GetScriptByte
@@ -2692,10 +2521,7 @@
 
 Script_warpmod:
 ; script command 0x3a
-; parameters:
-;     warp_id (SingleByteParam)
-;     map_group (MapGroupParam)
-;     map_id (MapIdParam)
+; parameters: warp_id, map_group, map_id
 
 	call GetScriptByte
 	ld [BackupWarpNumber], a
@@ -2707,9 +2533,7 @@
 
 Script_blackoutmod:
 ; script command 0x3b
-; parameters:
-;     map_group (MapGroupParam)
-;     map_id (MapIdParam)
+; parameters: map_group, map_id
 
 	call GetScriptByte
 	ld [wLastSpawnMapGroup], a
@@ -2726,8 +2550,7 @@
 
 Script_writecmdqueue:
 ; script command 0x7d
-; parameters:
-;     queue_pointer (MultiByteParam)
+; parameters: queue_pointer
 
 	call GetScriptByte
 	ld e, a
@@ -2740,8 +2563,7 @@
 
 Script_delcmdqueue:
 ; script command 0x7e
-; parameters:
-;     byte (SingleByteParam)
+; parameters: byte
 
 	xor a
 	ld [ScriptVar], a
@@ -2755,15 +2577,14 @@
 
 Script_changemap:
 ; script command 0x79
-; parameters:
-;     map_data_pointer (MapDataPointerParam)
+; parameters: map_data_pointer
 
 	call GetScriptByte
-	ld [MapBlockDataBank], a
+	ld [MapBlocksBank], a
 	call GetScriptByte
-	ld [MapBlockDataPointer], a
+	ld [MapBlocksPointer], a
 	call GetScriptByte
-	ld [MapBlockDataPointer + 1], a
+	ld [MapBlocksPointer + 1], a
 	call ChangeMap
 	call BufferScreen
 	ret
@@ -2770,10 +2591,7 @@
 
 Script_changeblock:
 ; script command 0x7a
-; parameters:
-;     x (SingleByteParam)
-;     y (SingleByteParam)
-;     block (SingleByteParam)
+; parameters: x, y, block
 
 	call GetScriptByte
 	add 4
@@ -2806,14 +2624,14 @@
 	farcall EnableEvents
 	ret
 
-Script_enableevents: ; unreferenced
+Script_enableevents:
+; unused
 	farcall EnableEvents
 	ret
 
 Script_newloadmap:
 ; script command 0x8a
-; parameters:
-;     which_method (SingleByteParam)
+; parameters: which_method
 
 	call GetScriptByte
 	ld [hMapEntryMethod], a
@@ -2836,8 +2654,7 @@
 
 Script_refreshscreen:
 ; script command 0x48
-; parameters:
-;     dummy (SingleByteParam)
+; parameters: dummy
 
 	call RefreshScreen
 	call GetScriptByte
@@ -2845,14 +2662,13 @@
 
 Script_loadbytec2cf:
 ; script command 0x4a
-; parameters:
-;     byte (SingleByteParam)
+; parameters: byte
 
 	call GetScriptByte
 	ld [wc2cf], a
 	ret
 
-	ld c, c ; XXX
+	db closetext_command ; unused
 
 Script_closetext:
 ; script command 0x49
@@ -2864,8 +2680,7 @@
 
 Script_passtoengine:
 ; script command 0x89
-; parameters:
-;     data_pointer (PointerLabelBeforeBank)
+; parameters: data_pointer
 
 	call GetScriptByte
 	push af
@@ -2879,8 +2694,7 @@
 
 Script_pause:
 ; script command 0x8b
-; parameters:
-;     length (DecimalParam)
+; parameters: length
 
 	call GetScriptByte
 	and a
@@ -2896,8 +2710,7 @@
 
 Script_deactivatefacing:
 ; script command 0x8c
-; parameters:
-;     time (SingleByteParam)
+; parameters: time
 
 	call GetScriptByte
 	and a
@@ -2911,8 +2724,7 @@
 
 Script_ptpriorityjump:
 ; script command 0x8f
-; parameters:
-;     pointer (ScriptPointerLabelParam)
+; parameters: pointer
 
 	call StopScript
 	jp Script_jump
@@ -2993,8 +2805,8 @@
 
 	ld hl, wGameTimerPause
 	res 0, [hl]
-	farcall TrainerRankings_HallOfFame
-	farcall TrainerRankings_HallOfFame2
+	farcall StubbedTrainerRankings_HallOfFame
+	farcall StubbedTrainerRankings_HallOfFame2
 	farcall HallOfFame
 	ld hl, wGameTimerPause
 	set 0, [hl]
@@ -3013,8 +2825,7 @@
 
 Script_wait:
 ; script command 0xa8
-; parameters:
-;     unknown (SingleByteParam)
+; parameters: unknown
 
 	push bc
 	call GetScriptByte
@@ -3037,7 +2848,7 @@
 	ret
 
 
-; unreferenced
+; unused
 	ld a, [.byte]
 	ld [ScriptVar], a
 	ret
--- a/engine/scrolling_menu.asm
+++ b/engine/scrolling_menu.asm
@@ -84,7 +84,7 @@
 	jr .loop
 ; 24640
 
-.unreferenced ; unreferenced
+.unreferenced ; unused
 	ld a, -1
 	and a
 	ret
--- a/engine/search.asm
+++ b/engine/search.asm
@@ -1,4 +1,4 @@
-SpecialBeastsCheck: ; 0x4a6e8
+Special_BeastsCheck: ; 0x4a6e8
 ; Check if the player owns all three legendary beasts.
 ; They must exist in either party or PC, and have the player's OT and ID.
 ; Return the result in ScriptVar.
@@ -29,7 +29,7 @@
 	ret
 
 
-SpecialMonCheck: ; 0x4a711
+Special_MonCheck: ; 0x4a711
 ; Check if the player owns any monsters of the species in ScriptVar.
 ; Return the result in ScriptVar.
 
--- a/engine/sgb_layouts.asm
+++ b/engine/sgb_layouts.asm
@@ -1,7 +1,6 @@
-Predef_LoadSGBLayout: ; 864c
-; LoadSGBLayout
+LoadSGBLayout: ; 864c
 	call CheckCGB
-	jp nz, Predef_LoadSGBLayoutCGB
+	jp nz, LoadSGBLayoutCGB
 
 	ld a, b
 	cp SCGB_RAM
@@ -18,7 +17,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .Finish
+	ld de, _LoadSGBLayout_ReturnFromJumpTable
 	push de
 	jp hl
 ; 866f
@@ -31,12 +30,12 @@
 	dw .SGB_Pokedex
 	dw .SGB_SlotMachine
 	dw .SGB06
-	dw .SGB07
+	dw .SGB_GSIntro
 	dw .SGB_Diploma
 	dw .SGB_MapPals
 	dw .SGB_PartyMenu
 	dw .SGB_Evolution
-	dw .SGB0c
+	dw .SGB_GSTitleScreen
 	dw .SGB0d
 	dw .SGB_MoveList
 	dw .SGB0f
@@ -49,7 +48,7 @@
 	dw .SGB_PokedexUnownMode
 	dw .SGB_BillsPC
 	dw .SGB_UnownPuzzle
-	dw .SGB19
+	dw .SGB_GamefreakLogo
 	dw .SGB_PlayerOrMonFrontpicPals
 	dw .SGB_TradeTube
 	dw .SGB_TrainerOrMonFrontpicPals
@@ -58,18 +57,18 @@
 ; 86ad
 
 .SGB_BattleGrayscale: ; 86ad
-	ld hl, PalPacket_9c66
-	ld de, BlkPacket_9aa6
+	ld hl, PalPacket_BattleGrayscale
+	ld de, BlkPacket_Battle
 	ret
 ; 86b4
 
 .SGB_BattleColors: ; 86b4
-	ld hl, BlkPacket_9aa6
+	ld hl, BlkPacket_Battle
 	call PushSGBPals_
 
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 
 	ld a, [PlayerHPPal]
@@ -107,32 +106,32 @@
 	ld [wSGBPals + 12], a
 
 	ld hl, PalPacket_9cf6
-	ld de, wSGBPals + $10
-	ld bc, $10
+	ld de, wSGBPals + PALPACKET_LENGTH
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 
 	call GetBattlemonBackpicPalettePointer
 
 	ld a, [hli]
-	ld [wSGBPals + $13], a
+	ld [wSGBPals + 19], a
 	ld a, [hli]
-	ld [wSGBPals + $14], a
+	ld [wSGBPals + 20], a
 	ld a, [hli]
-	ld [wSGBPals + $15], a
+	ld [wSGBPals + 21], a
 	ld a, [hl]
-	ld [wSGBPals + $16], a
+	ld [wSGBPals + 22], a
 	call GetEnemyFrontpicPalettePointer
 	ld a, [hli]
-	ld [wSGBPals + $19], a
+	ld [wSGBPals + 25], a
 	ld a, [hli]
-	ld [wSGBPals + $1a], a
+	ld [wSGBPals + 26], a
 	ld a, [hli]
-	ld [wSGBPals + $1b], a
+	ld [wSGBPals + 27], a
 	ld a, [hl]
-	ld [wSGBPals + $1c], a
+	ld [wSGBPals + 28], a
 
 	ld hl, wSGBPals
-	ld de, wSGBPals + $10
+	ld de, wSGBPals + PALPACKET_LENGTH
 	ld a, SCGB_BATTLE_COLORS
 	ld [SGBPredef], a
 	ret
@@ -141,7 +140,7 @@
 .SGB_MoveList: ; 873c
 	ld hl, PalPacket_9bd6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 
 	ld hl, wSGBPals + 1
@@ -150,15 +149,15 @@
 	inc hl
 
 	ld a, [PlayerHPPal]
-	add $2f
+	add PREDEFPAL_HP_GREEN
 	ld [hl], a
 	ld hl, wSGBPals
-	ld de, BlkPacket_9ad6
+	ld de, BlkPacket_MoveList
 	ret
 ; 875c
 
 .SGB_PokegearPals: ; 875c
-	ld hl, PalPacket_9c76
+	ld hl, PalPacket_Pokegear
 	ld de, BlkPacket_9a86
 	ret
 ; 8763
@@ -166,7 +165,7 @@
 .SGB_StatsScreenHPPals: ; 8763
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld a, [wCurHPPal]
 	ld l, a
@@ -195,12 +194,12 @@
 	ld a, [hl]
 	ld [wSGBPals + 12], a
 	ld hl, wSGBPals
-	ld de, BlkPacket_9ac6
+	ld de, BlkPacket_StatsScreen
 	ret
 ; 87ab
 
 .SGB_PartyMenu: ; 87ab
-	ld hl, PalPacket_9c56
+	ld hl, PalPacket_PartyMenu
 	ld de, wSGBPals + 1
 	ret
 ; 87b2
@@ -208,16 +207,16 @@
 .SGB_Pokedex: ; 87b2
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld hl, wSGBPals + 3
-	ld [hl], $9f
+	ld [hl], LOW(palred 31 + palgreen 20 + palblue 10)
 	inc hl
-	ld [hl], $2a
+	ld [hl], HIGH(palred 31 + palgreen 20 + palblue 10)
 	inc hl
-	ld [hl], $5a
+	ld [hl], LOW(palred 26 + palgreen 10 + palblue 6)
 	inc hl
-	ld [hl], $19
+	ld [hl], HIGH(palred 26 + palgreen 10 + palblue 6)
 	ld a, [CurPartySpecies]
 	call GetMonPalettePointer_
 	ld a, [hli]
@@ -229,7 +228,7 @@
 	ld a, [hl]
 	ld [wSGBPals + 12], a
 	ld hl, wSGBPals
-	ld de, BlkPacket_9ae6
+	ld de, BlkPacket_Pokedex_PC
 	ret
 ; 87e9
 
@@ -236,16 +235,16 @@
 .SGB_BillsPC: ; 87e9
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld hl, wSGBPals + 3
-	ld [hl], $9f
+	ld [hl], LOW(palred 31 + palgreen 20 + palblue 10)
 	inc hl
-	ld [hl], $2a
+	ld [hl], HIGH(palred 31 + palgreen 20 + palblue 10)
 	inc hl
-	ld [hl], $5a
+	ld [hl], LOW(palred 26 + palgreen 10 + palblue 6)
 	inc hl
-	ld [hl], $19
+	ld [hl], HIGH(palred 26 + palgreen 10 + palblue 6)
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
 	call GetPlayerOrMonPalettePointer
@@ -258,13 +257,13 @@
 	ld a, [hl]
 	ld [wSGBPals + 12], a
 	ld hl, wSGBPals
-	ld de, BlkPacket_9ae6
+	ld de, BlkPacket_Pokedex_PC
 	ret
 ; 8823
 
 .SGB_PokedexUnownMode: ; 8823
 	call .SGB_Pokedex
-	ld de, BlkPacket_9af6
+	ld de, BlkPacket_PokedexUnownMode
 	ret
 ; 882a
 
@@ -271,16 +270,16 @@
 .SGB_PokedexSearchOption: ; 882a
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld hl, wSGBPals + 3
-	ld [hl], $9f
+	ld [hl], LOW(palred 31 + palgreen 20 + palblue 10)
 	inc hl
-	ld [hl], $2a
+	ld [hl], HIGH(palred 31 + palgreen 20 + palblue 10)
 	inc hl
-	ld [hl], $5a
+	ld [hl], LOW(palred 26 + palgreen 10 + palblue 6)
 	inc hl
-	ld [hl], $19
+	ld [hl], HIGH(palred 26 + palgreen 10 + palblue 6)
 	ld hl, wSGBPals
 	ld de, BlkPacket_9a86
 	ret
@@ -287,33 +286,33 @@
 ; 884b
 
 .SGB_PackPals: ; 884b
-	ld hl, PalPacket_9c36
+	ld hl, PalPacket_Pack
 	ld de, BlkPacket_9a86
 	ret
 ; 8852
 
 .SGB_SlotMachine: ; 8852
-	ld hl, PalPacket_9c96
-	ld de, BlkPacket_9b06
+	ld hl, PalPacket_SlotMachine
+	ld de, BlkPacket_SlotMachine
 	ret
 ; 8859
 
 .SGB06: ; 8859
-	ld hl, PalPacket_9ca6
-	ld de, BlkPacket_9b76
+	ld hl, PalPacket_SCGB_06
+	ld de, BlkPacket_SCGB_06
 	ret
 ; 8860
 
 .SGB_Diploma:
 .SGB_MysteryGift: ; 8860
-	ld hl, PalPacket_9cb6
+	ld hl, PalPacket_Diploma
 	ld de, BlkPacket_9a86
 	ret
 ; 8867
 
-.SGB07: ; 8867
+.SGB_GSIntro: ; 8867
 	ld b, 0
-	ld hl, .BlkPacketTable_SGB07
+	ld hl, .BlkPacketTable_GSIntro
 rept 4
 	add hl, bc
 endr
@@ -327,15 +326,15 @@
 	ret
 ; 8878
 
-.BlkPacketTable_SGB07: ; 8878
-	dw BlkPacket_9a86, PalPacket_9be6
-	dw BlkPacket_9a96, PalPacket_9c06
-	dw BlkPacket_9a86, PalPacket_9c16
+.BlkPacketTable_GSIntro: ; 8878
+	dw BlkPacket_9a86, PalPacket_GSIntroShellderLapras
+	dw BlkPacket_GSIntroJigglypuffPikachu, PalPacket_GSIntroJigglypuffPikachu
+	dw BlkPacket_9a86, PalPacket_GSIntroStartersTransition
 ; 8884
 
-.SGB0c: ; 8884
-	ld hl, PalPacket_9b96
-	ld de, BlkPacket_9b56
+.SGB_GSTitleScreen: ; 8884
+	ld hl, PalPacket_GSTitleScreen
+	ld de, BlkPacket_GSTitleScreen
 	ld a, SCGB_DIPLOMA
 	ld [SGBPredef], a
 	ret
@@ -342,13 +341,13 @@
 ; 8890
 
 .SGB13: ; 8890
-	ld hl, PalPacket_9ba6
-	ld de, BlkPacket_9b86
+	ld hl, PalPacket_SCGB_13
+	ld de, BlkPacket_SCGB_13
 	ret
 ; 8897
 
 .SGB0f: ; 8897
-	ld hl, PalPacket_9c46
+	ld hl, PalPacket_SCGB_0F
 	ld de, BlkPacket_9a86
 	ret
 ; 889e
@@ -355,10 +354,10 @@
 
 .SGB11: ; 889e
 	ld hl, BlkPacket_9a86
-	ld de, PlayerLightScreenCount
-	ld bc, $10
+	ld de, PlayerLightScreenCount ; ???
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
-	ld hl, PalPacket_9bb6
+	ld hl, PalPacket_SCGB_11
 	ld de, BlkPacket_9a86
 	ret
 ; 88b1
@@ -366,7 +365,7 @@
 .SGB_MapPals: ; 88b1
 	ld hl, PalPacket_9bd6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	call .GetMapPalsIndex
 	ld hl, wSGBPals + 1
@@ -381,7 +380,7 @@
 	push bc
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	pop bc
 	ld a, c
@@ -389,15 +388,13 @@
 	jr z, .partymon
 	; Egg
 	ld hl, wSGBPals + 3
-	; RGB 7, 7, 7
-	ld [hl], $e7
+	ld [hl], LOW(palred 7 + palgreen 7 + palblue 7)
 	inc hl
-	ld [hl], $1c
+	ld [hl], HIGH(palred 7 + palgreen 7 + palblue 7)
 	inc hl
-	; RGB 2, 3, 3
-	ld [hl], $62
+	ld [hl], LOW(palred 2 + palgreen 3 + palblue 3)
 	inc hl
-	ld [hl], $c
+	ld [hl], HIGH(palred 2 + palgreen 3 + palblue 3)
 	jr .done
 
 .partymon
@@ -426,13 +423,13 @@
 
 .SGB0d:
 .SGB_TrainerCard: ; 891a
-	ld hl, PalPacket_9cb6
+	ld hl, PalPacket_Diploma
 	ld de, BlkPacket_9a86
 	ret
 ; 8921
 
 .SGB_UnownPuzzle: ; 8921
-	ld hl, PalPacket_9bc6
+	ld hl, PalPacket_UnownPuzzle
 	ld de, BlkPacket_9a86
 	ret
 ; 8928
@@ -440,11 +437,11 @@
 .SGB12: ; 8928
 	ld hl, PalPacket_9bd6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld hl, BlkPacket_9a86
-	ld de, wSGBPals + $10
-	ld bc, $10
+	ld de, wSGBPals + PALPACKET_LENGTH
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	call .GetMapPalsIndex
 	ld hl, wSGBPals + 1
@@ -463,7 +460,7 @@
 	ld a, [wMenuBorderBottomCoord]
 	ld [hl], a
 	ld hl, wSGBPals
-	ld de, wSGBPals + $10
+	ld de, wSGBPals + PALPACKET_LENGTH
 	ret
 ; 8969
 
@@ -470,7 +467,7 @@
 .SGB1e: ; 8969
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld a, [CurPartySpecies]
 	ld l, a
@@ -500,8 +497,8 @@
 	ret
 ; 89a6
 
-.SGB19: ; 89a6
-	ld hl, PalPacket_9cd6
+.SGB_GamefreakLogo: ; 89a6
+	ld hl, PalPacket_GamefreakLogo
 	ld de, BlkPacket_9a86
 	ret
 ; 89ad
@@ -509,7 +506,7 @@
 .SGB_PlayerOrMonFrontpicPals: ; 89ad
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
@@ -528,7 +525,7 @@
 ; 89d9
 
 .SGB_TradeTube: ; 89d9
-	ld hl, PalPacket_9cc6
+	ld hl, PalPacket_TradeTube
 	ld de, BlkPacket_9a86
 	ret
 ; 89e0
@@ -536,7 +533,7 @@
 .SGB_TrainerOrMonFrontpicPals: ; 89e0
 	ld hl, PalPacket_9ce6
 	ld de, wSGBPals
-	ld bc, $10
+	ld bc, PALPACKET_LENGTH
 	call CopyBytes
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
@@ -558,7 +555,7 @@
 	ld a, [TimeOfDayPal]
 	cp NITE_F
 	jr c, .morn_day
-	ld a, $19
+	ld a, PREDEFPAL_NITE
 	ret
 
 .morn_day
@@ -576,59 +573,31 @@
 	ld a, [MapGroup]
 	ld e, a
 	ld d, 0
-	ld hl, .SGBRoofPalInds
+	ld hl, MapGroupRoofSGBPalInds
 	add hl, de
 	ld a, [hl]
 	ret
 
 .route
-	ld a, $00
+	ld a, PREDEFPAL_00
 	ret
 
 .cave
-	ld a, $18
+	ld a, PREDEFPAL_DUNGEONS
 	ret
 
 .perm5
-	ld a, $06
+	ld a, PREDEFPAL_VERMILION
 	ret
 
 .gate
-	ld a, $03
+	ld a, PREDEFPAL_PEWTER
 	ret
 ; 8a45
 
-.SGBRoofPalInds: ; 8a45
-	db $00 ; Unused
-	db $12 ; Olivine
-	db $14 ; Mahogany
-	db $18 ; Various Dungeons
-	db $11 ; Ecruteak
-	db $15 ; Blackthorn
-	db $09 ; Cinnabar
-	db $04 ; Cerulean
-	db $0f ; Azalea
-	db $16 ; Lake Of Rage
-	db $0e ; Violet
-	db $10 ; Goldenrod
-	db $06 ; Vermilion
-	db $01 ; Palette
-	db $03 ; Pewter
-	db $06 ; Fast Ship
-	db $0b ; Indigo Plateau
-	db $08 ; Fuchsia
-	db $05 ; Lavender
-	db $17 ; Silver Cave Outside
-	db $08 ; Pokemon Center 2F
-	db $07 ; Celadon
-	db $13 ; Cianwood
-	db $02 ; Viridian
-	db $0c ; New Bark
-	db $0a ; Saffron
-	db $0d ; Cherrygrove
-; 8a60
+INCLUDE "data/maps/sgb_roof_pal_inds.asm"
 
-.Finish: ; 8a60
+_LoadSGBLayout_ReturnFromJumpTable: ; 8a60
 	push de
 	call PushSGBPals_
 	pop hl
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1,11 +1,13 @@
-SLOTS_NOBIAS EQU -1
-SLOTS_NOMATCH EQU -1
-SLOTS_SEVEN EQU $00
+SLOTS_NO_BIAS  EQU -1
+SLOTS_NO_MATCH EQU -1
+
+SLOTS_SEVEN    EQU $00
 SLOTS_POKEBALL EQU $04
-SLOTS_CHERRY EQU $08
-SLOTS_PIKACHU EQU $0c
+SLOTS_CHERRY   EQU $08
+SLOTS_PIKACHU  EQU $0c
 SLOTS_SQUIRTLE EQU $10
-SLOTS_STARYU EQU $14
+SLOTS_STARYU   EQU $14
+
 REEL_SIZE EQU 15
 
 ; Constants for slot_reel offsets (see macros/wram.asm)
@@ -85,7 +87,7 @@
 	call PlaySFX
 	call WaitSFX
 	call ClearBGPalettes
-	farcall TrainerRankings_EndSlotsWinStreak
+	farcall StubbedTrainerRankings_EndSlotsWinStreak
 	ld hl, Options
 	res NO_TEXT_SCROLL, [hl]
 	ld hl, rLCDC
@@ -148,7 +150,7 @@
 	ld [hl], $40
 	xor a ; SLOTS_INIT
 	ld [wJumptableIndex], a
-	ld a, SLOTS_NOBIAS
+	ld a, SLOTS_NO_BIAS
 	ld [wSlotBias], a
 	ld de, MUSIC_GAME_CORNER
 	call PlayMusic
@@ -183,7 +185,7 @@
 	ld [wCurrSpriteOAMAddr], a
 	callfar DoNextFrameForFirst16Sprites
 	call .PrintCoinsAndPayout
-	call .DummyFunc
+	call .Stubbed_Function927d3
 	call DelayFrame
 	and a
 	ret
@@ -192,7 +194,7 @@
 	scf
 	ret
 
-.DummyFunc: ; 927d3 (24:67d3)
+.Stubbed_Function927d3: ; 927d3 (24:67d3)
 ; dummied out
 	ret
 	ld a, [wReel1ReelAction]
@@ -232,8 +234,8 @@
 
 ; 92811 (24:6811)
 
-Function92811: ; 92811
-; unreferenced - debug function?
+Unreferenced_Function92811: ; 92811
+; debug function?
 	ld a, [wSlotBias]
 	add 0
 	daa
@@ -252,8 +254,7 @@
 
 ; 9282c
 
-Function9282c: ; 9282c
-; unreferenced
+Unreferenced_Function9282c: ; 9282c
 ; animate OAM tiles?
 	ld hl, wcf66
 	ld a, [hl]
@@ -260,15 +261,15 @@
 	inc [hl]
 	and $7
 	ret nz
-	ld hl, Sprites + 16 * 4 + 2
-	ld c, 40 - 16
+	ld hl, Sprite17TileID
+	ld c, NUM_SPRITE_OAM_STRUCTS - 16
 .loop
 	ld a, [hl]
-	xor $20
-	ld [hli], a
+	xor %00100000
+	ld [hli], a ; tile id
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .loop
 	ret
@@ -309,7 +310,7 @@
 	xor a
 	ld [wFirstTwoReelsMatching], a
 	ld [wFirstTwoReelsMatchingSevens], a
-	ld a, SLOTS_NOMATCH
+	ld a, SLOTS_NO_MATCH
 	ld [wSlotMatched], a
 	ret
 
@@ -417,7 +418,7 @@
 
 SlotsAction_FlashIfWin: ; 92955 (24:6955)
 	ld a, [wSlotMatched]
-	cp SLOTS_NOMATCH
+	cp SLOTS_NO_MATCH
 	jr nz, .GotIt
 	call SlotsAction_Next
 	call SlotsAction_Next
@@ -587,7 +588,7 @@
 	ld a, [wSlotBias]
 	and a
 	jr z, .skip
-	cp SLOTS_NOBIAS
+	cp SLOTS_NO_BIAS
 	jr nz, .dont_jump
 .skip
 	call .CheckReel1ForASeven
@@ -670,7 +671,7 @@
 	ld bc, wReel1
 	ld hl, REEL_OAM_ADDR
 	add hl, bc
-	ld de, Sprites + 16 * 4
+	ld de, Sprite17
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -688,7 +689,7 @@
 	ld bc, wReel2
 	ld hl, REEL_OAM_ADDR
 	add hl, bc
-	ld de, Sprites + 24 * 4
+	ld de, Sprite25
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -706,7 +707,7 @@
 	ld bc, wReel3
 	ld hl, REEL_OAM_ADDR
 	add hl, bc
-	ld de, Sprites + 32 * 4
+	ld de, Sprite33
 	ld [hl], e
 	inc hl
 	ld [hl], d
@@ -821,41 +822,40 @@
 	ld l, a
 .loop
 	ld a, [wCurrReelYCoord]
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, [wCurrReelXCoord]
-	ld [hli], a
+	ld [hli], a ; x
 	ld a, [de]
-	ld [hli], a
+	ld [hli], a ; tile id
 	srl a
 	srl a
-	set 7, a
-	ld [hli], a
+	set OAM_PRIORITY, a
+	ld [hli], a ; attributes
 
 	ld a, [wCurrReelYCoord]
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, [wCurrReelXCoord]
-	add 1 * 8
-	ld [hli], a
+	add 1 * TILE_WIDTH
+	ld [hli], a ; x
 	ld a, [de]
 	inc a
 	inc a
-	ld [hli], a
+	ld [hli], a ; tile id
 	srl a
 	srl a
-	set 7, a
-	ld [hli], a
+	set OAM_PRIORITY, a
+	ld [hli], a ; attributes
 	inc de
 	ld a, [wCurrReelYCoord]
-	sub 2 * 8
+	sub 2 * TILE_WIDTH
 	ld [wCurrReelYCoord], a
-	cp 2 * 8
+	cp 2 * TILE_WIDTH
 	jr nz, .loop
 	ret
 
 ; 92bbe (24:6bbe)
 
-; unreferenced
-Function92bbe: ; 92bbe
+Unreferenced_Function92bbe: ; 92bbe
 	push hl
 	srl a
 	srl a
@@ -997,7 +997,7 @@
 ; even if the current bet won't allow lining it up.
 
 	ld a, [wSlotBias]
-	cp SLOTS_NOBIAS
+	cp SLOTS_NO_BIAS
 	jr z, .NoBias
 	ld hl, REEL_MANIP_COUNTER
 	add hl, bc
@@ -1043,7 +1043,7 @@
 	jr z, .NoBias
 .nope
 	ld a, [wSlotBias]
-	cp SLOTS_NOBIAS
+	cp SLOTS_NO_BIAS
 	jr z, .NoBias
 	ld hl, REEL_MANIP_COUNTER
 	add hl, bc
@@ -1079,7 +1079,7 @@
 
 .NoMatch:
 	ld a, [wSlotBias]
-	cp SLOTS_NOBIAS
+	cp SLOTS_NO_BIAS
 	jr z, .NoBias
 	ld hl, REEL_MANIP_COUNTER
 	add hl, bc
@@ -1532,7 +1532,7 @@
 ; 92f1d
 
 Slots_CheckMatchedAllThreeReels: ; 92f1d
-	ld a, SLOTS_NOMATCH
+	ld a, SLOTS_NO_MATCH
 	ld [wSlotMatched], a
 	call Slots_GetCurrentReelState
 	call Slots_CopyReelState
@@ -1552,7 +1552,7 @@
 
 .return
 	ld a, [wSlotMatched]
-	cp SLOTS_NOMATCH
+	cp SLOTS_NO_MATCH
 	jr nz, .matched_nontrivial
 	and a
 	ret
@@ -1753,7 +1753,7 @@
 	db $14, SLOTS_SQUIRTLE ; 5/128
 	db $28, SLOTS_PIKACHU  ; 5/64
 	db $30, SLOTS_CHERRY   ; 1/32
-	db $ff, SLOTS_NOBIAS   ; everything else
+	db $ff, SLOTS_NO_BIAS   ; everything else
 ; 93031
 
 .Lucky: ; 93031
@@ -1763,7 +1763,7 @@
 	db $10, SLOTS_SQUIRTLE ;  1/32
 	db $1e, SLOTS_PIKACHU  ;  7/128
 	db $50, SLOTS_CHERRY   ; 25/128
-	db $ff, SLOTS_NOBIAS   ; everything else
+	db $ff, SLOTS_NO_BIAS   ; everything else
 ; 9303f
 
 Slots_IlluminateBetLights: ; 9303f (24:703f)
@@ -1868,15 +1868,14 @@
 ; 0x930d6
 
 .MenuDataHeader: ; 0x930d6
-	db $40 ; flags
-	db 10, 14 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 10, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x930de
 
 .MenuData2: ; 0x930de
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
 	db " 3@"
 	db " 2@"
@@ -1924,7 +1923,7 @@
 
 Slots_GetPayout: ; 93124 (24:7124)
 	ld a, [wSlotMatched]
-	cp SLOTS_NOMATCH
+	cp SLOTS_NO_MATCH
 	jr z, .no_win
 	srl a
 	ld e, a
@@ -1937,7 +1936,7 @@
 	ld a, [hl]
 	ld [wPayout], a
 	ld d, a
-	farcall TrainerRankings_AddToSlotsPayouts
+	farcall StubbedTrainerRankings_AddToSlotsPayouts
 	ret
 
 .PayoutTable:
@@ -1957,11 +1956,11 @@
 
 Slots_PayoutText: ; 93158 (24:7158)
 	ld a, [wSlotMatched]
-	cp SLOTS_NOMATCH
+	cp SLOTS_NO_MATCH
 	jr nz, .MatchedSomething
 	ld hl, .Text_Darn
 	call PrintText
-	farcall TrainerRankings_EndSlotsWinStreak
+	farcall StubbedTrainerRankings_EndSlotsWinStreak
 	ret
 
 .MatchedSomething:
@@ -1985,7 +1984,7 @@
 .return
 	ld hl, .Text_PrintPayout
 	call PrintText
-	farcall TrainerRankings_AddToSlotsWinStreak
+	farcall StubbedTrainerRankings_AddToSlotsWinStreak
 	ret
 
 ; 93195 (24:7195)
@@ -2047,7 +2046,7 @@
 	call Random
 	and %0010100
 	ret z ; 25% chance to stick with seven symbol bias
-	ld a, SLOTS_NOBIAS
+	ld a, SLOTS_NO_BIAS
 	ld [wSlotBias], a
 	ret
 
@@ -2055,7 +2054,7 @@
 	call Random
 	and %0011100
 	ret z ; 12.5% chance to stick with seven symbol bias
-	ld a, SLOTS_NOBIAS
+	ld a, SLOTS_NO_BIAS
 	ld [wSlotBias], a
 	ret
 
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -14,185 +14,9 @@
 	ret
 ; c029
 
-SpecialsPointers:: ; c029
-	add_special WarpToSpawnPoint
+INCLUDE "data/special_pointers.asm"
 
-; Communications
-	add_special Special_SetBitsForLinkTradeRequest
-	add_special Special_WaitForLinkedFriend
-	add_special Special_CheckLinkTimeout
-	add_special Special_TryQuickSave
-	add_special Special_CheckBothSelectedSameRoom
-	add_special Special_FailedLinkToPast
-	add_special Special_CloseLink
-	add_special WaitForOtherPlayerToExit
-	add_special Special_SetBitsForBattleRequest
-	add_special Special_SetBitsForTimeCapsuleRequest
-	add_special Special_CheckTimeCapsuleCompatibility
-	add_special Special_EnterTimeCapsule
-	add_special Special_TradeCenter
-	add_special Special_Colosseum
-	add_special Special_TimeCapsule
-	add_special Special_CableClubCheckWhichChris
-	add_special Special_CheckMysteryGift
-	add_special Special_GetMysteryGiftItem
-	add_special Special_UnlockMysteryGift
-
-; Map Events
-	add_special BugContestJudging
-	add_special CheckPartyFullAfterContest
-	add_special ContestDropOffMons
-	add_special ContestReturnMons
-	add_special Special_GiveParkBalls
-	add_special Special_CheckMagikarpLength
-	add_special Special_MagikarpHouseSign
-	add_special HealParty
-	add_special PokemonCenterPC
-	add_special Special_KrissHousePC
-	add_special Special_DayCareMan
-	add_special Special_DayCareLady
-	add_special Special_DayCareManOutside
-	add_special MoveDeletion
-	add_special Special_BankOfMom
-	add_special Special_MagnetTrain
-	add_special SpecialNameRival
-	add_special Special_SetDayOfWeek
-	add_special Special_TownMap
-	add_special Special_UnownPrinter
-	add_special MapRadio
-	add_special Special_UnownPuzzle
-	add_special Special_SlotMachine
-	add_special Special_CardFlip
-	add_special Special_DummyNonfunctionalGameCornerGame
-	add_special Special_ClearBGPalettesBufferScreen
-	add_special FadeOutPalettes
-	add_special Special_BattleTowerFade
-	add_special Special_FadeBlackQuickly
-	add_special FadeInPalettes
-	add_special Special_FadeInQuickly
-	add_special Special_ReloadSpritesNoPalettes
-	add_special ClearBGPalettes
-	add_special UpdateTimePals
-	add_special ClearTileMap
-	add_special UpdateSprites
-	add_special ReplaceKrisSprite
-	add_special Special_GameCornerPrizeMonCheckDex
-	add_special SpecialSeenMon
-	add_special WaitSFX
-	add_special PlayMapMusic
-	add_special RestartMapMusic
-	add_special HealMachineAnim
-	add_special Special_SurfStartStep
-	add_special Special_FindGreaterThanThatLevel
-	add_special Special_FindAtLeastThatHappy
-	add_special Special_FindThatSpecies
-	add_special Special_FindThatSpeciesYourTrainerID
-	add_special Special_CheckUnusedTwoDayTimer ; unreferenced
-	add_special Special_DayCareMon1
-	add_special Special_DayCareMon2
-	add_special Special_SelectRandomBugContestContestants
-	add_special Special_ActivateFishingSwarm
-	add_special ToggleMaptileDecorations
-	add_special ToggleDecorationsVisibility
-	add_special SpecialGiveShuckle
-	add_special SpecialReturnShuckle
-	add_special Special_BillsGrandfather
-	add_special SpecialCheckPokerus
-	add_special Special_DisplayCoinCaseBalance
-	add_special Special_DisplayMoneyAndCoinBalance
-	add_special PlaceMoneyTopRight
-	add_special Special_CheckForLuckyNumberWinners
-	add_special Special_CheckLuckyNumberShowFlag
-	add_special Special_ResetLuckyNumberShowFlag
-	add_special Special_PrintTodaysLuckyNumber
-	add_special Special_SelectApricornForKurt
-	add_special SpecialNameRater
-	add_special Special_DisplayLinkRecord
-	add_special GetFirstPokemonHappiness
-	add_special CheckFirstMonIsEgg
-	add_special RandomUnseenWildMon
-	add_special RandomPhoneWildMon
-	add_special RandomPhoneMon
-	add_special MapCallbackSprites_LoadUsedSpritesGFX
-	add_special PlaySlowCry
-	add_special SpecialSnorlaxAwake
-	add_special Special_YoungerHaircutBrother
-	add_special Special_OlderHaircutBrother
-	add_special Special_DaisyMassage
-	add_special PlayCurMonCry
-	add_special ProfOaksPCBoot
-	add_special SpecialGameboyCheck
-	add_special SpecialTrainerHouse
-	add_special PhotoStudio
-	add_special InitRoamMons
-	add_special Special_FadeOutMusic
-	add_special Diploma
-	add_special PrintDiploma
-
-	; Crystal
-	add_special Function11ac3e
-	add_special Function11b444
-	add_special Function11b5e8
-	add_special Function11b7e5
-	add_special Function11b879
-	add_special Function11b920
-	add_special Function11b93b
-	add_special BattleTowerRoomMenu
-	add_special Function1700ba
-	add_special Function170114
-	add_special BattleTowerBattle
-	add_special Function1704e1
-	add_special EmptySpecial_17021d
-	add_special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
-	add_special Function11ba38
-	add_special SpecialCheckForBattleTowerRules
-	add_special Special_GiveOddEgg
-	add_special Reset
-	add_special Function1011f1
-	add_special Function101220
-	add_special Function101225
-	add_special Function101231
-	add_special Special_MoveTutor
-	add_special SpecialOmanyteChamber
-	add_special Function11c1ab
-	add_special BattleTowerAction
-	add_special Special_DisplayUnownWords
-	add_special Special_Menu_ChallengeExplanationCancel
-	add_special Function17d2b6
-	add_special Function17d2ce
-	add_special BattleTowerMobileError
-	add_special AskMobileOrCable
-	add_special SpecialHoOhChamber
-	add_special Function102142
-	add_special Special_CelebiShrineEvent
-	add_special CheckCaughtCelebi
-	add_special SpecialPokeSeer
-	add_special SpecialBuenasPassword
-	add_special SpecialBuenaPrize
-	add_special SpecialDratini
-	add_special Special_SampleKenjiBreakCountdown
-	add_special SpecialBeastsCheck
-	add_special SpecialMonCheck
-	add_special Special_SetPlayerPalette
-	add_special ret_170bd2
-	add_special Mobile_SelectThreeMons
-	add_special Function1037eb
-	add_special Function10383c
-	add_special TrainerRankings_Healings
-	add_special RefreshSprites
-	add_special Function1037c2
-	add_special Mobile_DummyReturnFalse
-	add_special Function103780
-	add_special Function10387b
-	add_special AskRememberPassword
-	add_special LoadMapPalettes
-	add_special FindItemInPCOrBag
-	add_special Special_InitialSetDSTFlag
-	add_special Special_InitialClearDSTFlag
-	add_special SpecialNone
-; c224
-
-SpecialNone: ; c224
+DummySpecial_c224: ; c224
 	ret
 ; c225
 
@@ -219,7 +43,7 @@
 	ret
 ; c252
 
-SpecialSeenMon: ; c252
+UnusedSpecial_SeenMon: ; c252
 	ld a, [ScriptVar]
 	dec a
 	call SetSeenMon
@@ -265,7 +89,7 @@
 	ret
 ; c29d
 
-SpecialNameRival: ; 0xc29d
+Special_NameRival: ; 0xc29d
 	ld b, $2 ; rival
 	ld de, RivalName
 	farcall _NamingScreen
@@ -279,7 +103,7 @@
 DefaultRivalName: ; 0xc2b2
 	db "SILVER@"
 
-SpecialNameRater: ; c2b9
+Special_NameRater: ; c2b9
 	farcall NameRater
 	ret
 ; c2c0
@@ -363,7 +187,7 @@
 	db "@"
 ; 0xc34a
 
-BugContestJudging: ; c34a
+Special_BugContestJudging: ; c34a
 	farcall _BugContestJudging
 	ld a, b
 	ld [ScriptVar], a
@@ -370,7 +194,7 @@
 	ret
 ; c355
 
-MapRadio: ; c355
+Special_MapRadio: ; c355
 	ld a, [ScriptVar]
 	ld e, a
 	farcall PlayRadio
@@ -483,7 +307,7 @@
 	ret
 ; c3ef
 
-Special_CheckUnusedTwoDayTimer: ; c3ef
+UnusedSpecial_CheckUnusedTwoDayTimer: ; c3ef
 	farcall CheckUnusedTwoDayTimer
 	ld a, [wUnusedTwoDayTimer]
 	ld [ScriptVar], a
@@ -517,7 +341,7 @@
 ; c419
 
 
-SpecialCheckPokerus: ; c419
+Special_CheckPokerus: ; c419
 ; Check if a monster in your party has Pokerus
 	farcall CheckPokerus
 	jp ScriptReturnCarry
@@ -536,7 +360,7 @@
 	jp ScriptReturnCarry
 ; c43d
 
-SpecialSnorlaxAwake: ; 0xc43d
+Special_SnorlaxAwake: ; 0xc43d
 ; Check if the Poké Flute channel is playing, and if the player is standing
 ; next to Snorlax.
 
@@ -587,13 +411,13 @@
 	db -1
 
 
-PlayCurMonCry: ; c472
+Special_PlayCurMonCry: ; c472
 	ld a, [CurPartySpecies]
-	jp PlayCry
+	jp PlayMonCry
 ; c478
 
 
-SpecialGameboyCheck: ; c478
+Special_GameboyCheck: ; c478
 	ld a, [hCGB]
 	and a
 	jr nz, .cgb
@@ -603,13 +427,13 @@
 	jr nz, .sgb
 
 .gb
-	xor a
+	xor a ; GBCHECK_GB
 	jr .done
 .sgb
-	ld a, 1
+	ld a, GBCHECK_SGB
 	jr .done
 .cgb
-	ld a, 2
+	ld a, GBCHECK_CGB
 .done
 	ld [ScriptVar], a
 	ret
@@ -625,7 +449,7 @@
 	ret
 ; c49f
 
-Diploma: ; c49f
+Special_Diploma: ; c49f
 	call FadeToMenu
 	farcall _Diploma
 	call ExitAllMenus
@@ -632,7 +456,7 @@
 	ret
 ; c4ac
 
-PrintDiploma: ; c4ac
+Special_PrintDiploma: ; c4ac
 	call FadeToMenu
 	farcall _PrintDiploma
 	call ExitAllMenus
@@ -639,7 +463,7 @@
 	ret
 ; c4b9
 
-SpecialTrainerHouse: ; 0xc4b9
+Special_TrainerHouse: ; 0xc4b9
 	ld a, BANK(sMysteryGiftTrainerHouseFlag)
 	call GetSRAMBank
 	ld a, [sMysteryGiftTrainerHouseFlag]
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -27,7 +27,7 @@
 	dw .SlotsChansey
 	dw .SlotsChanseyEgg
 	dw .MailCursor
-	dw .ForUnusedCursor
+	dw .UnusedCursor
 	dw .DummyGameCursor
 	dw .PokegearArrow
 	dw .TradePokeBall
@@ -39,11 +39,11 @@
 	dw .FlyFrom
 	dw .FlyLeaf
 	dw .FlyTo
-	dw .sprite_anim_seq_19
-	dw .sprite_anim_seq_1A
-	dw .sprite_anim_seq_1B
-	dw .sprite_anim_seq_1C
-	dw .IntroSuicune 
+	dw .GSIntroHoOh
+	dw .EZChatCursor
+	dw .MobileTradeSentPulse
+	dw .MobileTradeOTPulse
+	dw .IntroSuicune
 	dw .IntroPichuWooper
 	dw .Celebi
 	dw .IntroUnown
@@ -202,7 +202,7 @@
 	ret
 ; 8d35a
 
-.sprite_anim_seq_19 ; 8d35a (23:535a)
+.GSIntroHoOh ; 8d35a (23:535a)
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
 	ld a, [hl]
@@ -403,7 +403,7 @@
 	ld [hl], a
 	ret
 
-.ForUnusedCursor ; 8d46e (23:546e)
+.UnusedCursor ; 8d46e (23:546e)
 	callfar ret_e00ed
 	ret
 
@@ -430,7 +430,7 @@
 ; 8d493
 
 .TradePokeBall_zero ; 8d493
-	ld a, SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_0
+	ld a, SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_WOBBLE
 	call _ReinitSpriteAnimFrame
 
 	ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
@@ -748,11 +748,11 @@
 	ld [hl], a
 	ret
 
-.sprite_anim_seq_1B ; 8d630 (23:5630)
+.MobileTradeSentPulse ; 8d630 (23:5630)
 	farcall Function108bc7
 	ret
 
-.sprite_anim_seq_1C ; 8d637 (23:5637)
+.MobileTradeOTPulse ; 8d637 (23:5637)
 	farcall Function108be0
 	ret
 
@@ -845,7 +845,7 @@
 	ld [hl], a
 	ret
 
-.sprite_anim_seq_1A ; 8d6b7 (23:56b7)
+.EZChatCursor ; 8d6b7 (23:56b7)
 	farcall AnimateEZChatCursor
 	ret
 
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -36,7 +36,7 @@
 
 DoNextFrameForAllSprites: ; 8cf7a
 	ld hl, wSpriteAnimationStructs
-	ld e, 10 ; There are 10 structs here.
+	ld e, NUM_SPRITE_ANIM_STRUCTS
 
 .loop
 	ld a, [hl]
@@ -53,7 +53,7 @@
 	jr c, .done
 
 .next
-	ld bc, $10
+	ld bc, SPRITEANIMSTRUCT_LENGTH
 	add hl, bc
 	dec e
 	jr nz, .loop
@@ -76,7 +76,7 @@
 
 DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
 	ld hl, wSpriteAnimationStructs
-	ld e, 10
+	ld e, NUM_SPRITE_ANIM_STRUCTS
 
 .loop
 	ld a, [hl]
@@ -93,7 +93,7 @@
 	jr c, .done
 
 .next
-	ld bc, $10
+	ld bc, SPRITEANIMSTRUCT_LENGTH
 	add hl, bc
 	dec e
 	jr nz, .loop
@@ -100,11 +100,11 @@
 
 	ld a, [wCurrSpriteOAMAddr]
 	ld l, a
-	ld h, HIGH(Sprites + 16 * 4)
+	ld h, HIGH(Sprite17)
 
 .loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> Sprites + $40)
 	ld a, l
-	cp LOW(Sprites + 16 * 4)
+	cp LOW(Sprite17)
 	jr nc, .done
 	xor a
 	ld [hli], a
@@ -119,12 +119,12 @@
 	push de
 	push af
 	ld hl, wSpriteAnimationStructs
-	ld e, 10
+	ld e, NUM_SPRITE_ANIM_STRUCTS
 .loop
 	ld a, [hl]
 	and a
 	jr z, .found
-	ld bc, $10
+	ld bc, SPRITEANIMSTRUCT_LENGTH
 	add hl, bc
 	dec e
 	jr nz, .loop
@@ -222,8 +222,8 @@
 DeinitializeAllSprites: ; 8d03d (23:503d)
 ; Clear the index field of every struct in the wSpriteAnimationStructs array.
 	ld hl, wSpriteAnimationStructs
-	ld bc, $10
-	ld e, 10
+	ld bc, SPRITEANIMSTRUCT_LENGTH
+	ld e, NUM_SPRITE_ANIM_STRUCTS
 	xor a
 .loop
 	ld [hl], a
@@ -391,7 +391,7 @@
 	push bc
 	ld hl, wSpriteAnimDict
 	ld b, a
-	ld c, 10
+	ld c, NUM_SPRITE_ANIM_STRUCTS
 .loop
 	ld a, [hli]
 	cp b
@@ -527,8 +527,7 @@
 	ret
 ; 8d1ac
 
-BrokenGetStdGraphics: ; 8d1ac
-; dummied out
+Unreferenced_BrokenGetStdGraphics: ; 8d1ac
 	push hl
 	ld l, a
 	ld h, 0
@@ -576,11 +575,12 @@
 
 
 Sprites_Cosine: ; 8e72a
-	add $10
+; a = d * cos(a * pi/32)
+	add %010000
 Sprites_Sine: ; 8e72c
-; floor(d * sin(a * pi/32))
-	and $3f
-	cp $20
+; a = d * sin(a * pi/32)
+	and %111111
+	cp %100000
 	jr nc, .negative
 	call .ApplySineWave
 	ld a, h
@@ -587,10 +587,10 @@
 	ret
 
 .negative
-	and $1f
+	and %011111
 	call .ApplySineWave
 	ld a, h
-	xor $ff ; cpl
+	xor $ff
 	inc a
 	ret
 ; 8e741
@@ -610,7 +610,6 @@
 	srl a
 	jr nc, .even
 	add hl, de
-
 .even
 	sla e
 	rl d
@@ -650,8 +649,8 @@
 ; 8e7c6
 
 .AnimateFrame: ; 8e7c6
-	ld hl, Sprites
-	ld c, $8
+	ld hl, Sprite01
+	ld c, 8 ; number of animated circles
 .anim_loop
 	ld a, c
 	and a
@@ -669,8 +668,8 @@
 	call Sprites_Sine
 	pop hl
 	pop de
-	add 13 * 8
-	ld [hli], a
+	add 13 * TILE_WIDTH
+	ld [hli], a ; y
 
 	pop af
 	push de
@@ -678,13 +677,13 @@
 	call Sprites_Cosine
 	pop hl
 	pop de
-	add 10 * 8 + 4
-	ld [hli], a
+	add 10 * TILE_WIDTH + 4
+	ld [hli], a ; x
 
 	ld a, $0
-	ld [hli], a
+	ld [hli], a ; tile id
 	ld a, PAL_BATTLE_OB_BLUE
-	ld [hli], a
+	ld [hli], a ; attributes
 	jr .anim_loop
 ; 8e7f4
 
--- a/engine/start_menu.asm
+++ b/engine/start_menu.asm
@@ -152,21 +152,19 @@
 
 
 .MenuDataHeader:
-	db $40 ; tile backup
-	db 0, 10 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData
 	db 1 ; default selection
 
 .ContestMenuDataHeader:
-	db $40 ; tile backup
-	db 2, 10 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 2, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData
 	db 1 ; default selection
 
 .MenuData:
-	db %10101000 ; x padding, wrap around, start can close
+	db STATICMENU_CURSOR | STATICMENU_WRAP | STATICMENU_ENABLE_START ; flags
 	dn 0, 0 ; rows, columns
 	dw MenuItemsList
 	dw .MenuString
@@ -190,13 +188,13 @@
 .SaveString:    	db "SAVE@"
 .OptionString:  	db "OPTION@"
 .ExitString:    	db "EXIT@"
-.PokegearString:	db $24, "GEAR@"
+.PokegearString:	db "<POKE>GEAR@"
 .QuitString:    	db "QUIT@"
 
 .PokedexDesc:  db   "#MON"
 	next "database@"
 
-.PartyDesc:    db   "Party ", $4a
+.PartyDesc:    db   "Party <PKMN>"
 	next "status@"
 
 .PackDesc:     db   "Contains"
@@ -503,7 +501,7 @@
 
 	call FadeToMenu
 	farcall Pack
-	ld a, [wcf66]
+	ld a, [wPackUsedItem]
 	and a
 	jr nz, .used_item
 	call CloseSubmenu
@@ -800,7 +798,7 @@
 	call GetCurNick
 	ld hl, StringBuffer1
 	ld de, wMonOrItemNameBuffer
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ld a, [wMenuCursorY]
 	cp 1
@@ -976,14 +974,13 @@
 
 
 GiveTakeItemMenuData: ; 12c9b
-	db %01010000
-	db 12, 12 ; start coords
-	db 17, 19 ; end coords
+	db MENU_SPRITE_ANIMS | MENU_BACKUP_TILES ; flags
+	menu_coords 12, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .Items
 	db 1 ; default option
 
 .Items:
-	db %10000000 ; x padding
+	db STATICMENU_CURSOR ; flags
 	db 2 ; # items
 	db "GIVE@"
 	db "TAKE@"
@@ -1165,15 +1162,14 @@
 
 
 .MenuDataHeader:
-	db $40 ; flags
-	db 10, 12 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 12, 10, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData2
 	db 1 ; default option
 ; 0x12dd1
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
 	db "READ@"
 	db "TAKE@"
@@ -1255,7 +1251,7 @@
 	jr z, .Fail
 	cp $0
 	jr z, .Error
-	farcall TrainerRankings_Fly
+	farcall StubbedTrainerRankings_Fly
 	ld b, $4
 	ld a, $2
 	ret
@@ -1268,7 +1264,7 @@
 	ld a, $0
 	ret
 
-.Unused:
+.Unreferenced:
 	ld a, $1
 	ret
 ; 12e55
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -1,3 +1,9 @@
+const_value set 1
+	const PINK_PAGE  ; 1
+	const GREEN_PAGE ; 2
+	const BLUE_PAGE  ; 3
+NUM_STAT_PAGES EQU const_value +- 1
+
 BattleStatsScreenInit: ; 4dc7b (13:5c7b)
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
@@ -58,12 +64,12 @@
 	; stupid interns
 	ld [wcf64], a
 	ld a, [wcf64]
-	and $fc
-	or $1
+	and %11111100
+	or 1
 	ld [wcf64], a
 .loop ; 4dce3
 	ld a, [wJumptableIndex]
-	and $7f
+	and $ff ^ (1 << 7)
 	ld hl, StatsScreenPointerTable
 	rst JumpTable
 	call StatsScreen_WaitAnim ; check for keys?
@@ -79,13 +85,13 @@
 	; stupid interns
 	ld [wcf64], a
 	ld a, [wcf64]
-	and $fc
-	or $1
+	and %11111100
+	or 1
 	ld [wcf64], a
 .loop
 	farcall Mobile_SetOverworldDelay
 	ld a, [wJumptableIndex]
-	and $7f
+	and $ff ^ (1 << 7)
 	ld hl, StatsScreenPointerTable
 	rst JumpTable
 	call StatsScreen_WaitAnim
@@ -277,7 +283,7 @@
 StatsScreen_JoypadAction: ; 4de54 (13:5e54)
 	push af
 	ld a, [wcf64]
-	and $3
+	maskbits NUM_STAT_PAGES
 	ld c, a
 	pop af
 	bit B_BUTTON_F, a
@@ -335,20 +341,20 @@
 
 .a_button
 	ld a, c
-	cp $3
+	cp BLUE_PAGE ; last page
 	jr z, .b_button
 .d_right
 	inc c
-	ld a, $3
+	ld a, BLUE_PAGE ; last page
 	cp c
 	jr nc, .set_page
-	ld c, $1
+	ld c, PINK_PAGE ; first page
 	jr .set_page
 
 .d_left
 	dec c
 	jr nz, .set_page
-	ld c, $3
+	ld c, BLUE_PAGE ; last page
 	jr .set_page
 
 .done
@@ -447,13 +453,12 @@
 	dw wBufferMonNick
 ; 4df7f
 
-Function4df7f: ; 4df7f
-; unreferenced
+Unreferenced_Function4df7f: ; 4df7f
 	hlcoord 7, 0
 	ld bc, SCREEN_WIDTH
 	ld d, SCREEN_HEIGHT
 .loop
-	ld a, "|"
+	ld a, $31 ; vertical divider
 	ld [hl], a
 	add hl, bc
 	dec d
@@ -464,7 +469,7 @@
 StatsScreen_PlaceHorizontalDivider: ; 4df8f (13:5f8f)
 	hlcoord 0, 7
 	ld b, SCREEN_WIDTH
-	ld a, "_"
+	ld a, $62 ; horizontal divider (empty HP/exp bar)
 .loop
 	ld [hli], a
 	dec b
@@ -483,7 +488,7 @@
 	farcall CheckShininess
 	ret nc
 	hlcoord 19, 0
-	ld [hl], "<SHINY>"
+	ld [hl], "⁂"
 	ret
 
 StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
@@ -507,7 +512,7 @@
 
 .ClearBox: ; 4dfda (13:5fda)
 	ld a, [wcf64]
-	and $3
+	maskbits NUM_STAT_PAGES
 	ld c, a
 	call StatsScreen_LoadPageIndicators
 	hlcoord 0, 8
@@ -517,7 +522,7 @@
 
 .LoadPals: ; 4dfed (13:5fed)
 	ld a, [wcf64]
-	and $3
+	maskbits NUM_STAT_PAGES
 	ld c, a
 	farcall LoadStatsScreenPals
 	call DelayFrame
@@ -527,7 +532,7 @@
 
 .PageTilemap: ; 4e002 (13:6002)
 	ld a, [wcf64]
-	and $3
+	maskbits NUM_STAT_PAGES
 	dec a
 	ld hl, .Jumptable
 	rst JumpTable
@@ -534,6 +539,7 @@
 	ret
 
 .Jumptable: ; 4e00d (13:600d)
+; entries correspond to *_PAGE constants
 	dw .PinkPage
 	dw .GreenPage
 	dw .BluePage
@@ -543,7 +549,7 @@
 	ld b, $0
 	predef DrawPlayerHP
 	hlcoord 8, 9
-	ld [hl], $41
+	ld [hl], $41 ; right HP/exp bar end cap
 	ld de, .Status_Type
 	hlcoord 0, 12
 	call PlaceString
@@ -555,7 +561,7 @@
 	and $f0
 	jr z, .NotImmuneToPkrs
 	hlcoord 8, 8
-	ld [hl], "."
+	ld [hl], "." ; Pokérus immunity dot
 .NotImmuneToPkrs:
 	ld a, [MonType]
 	cp BOXMON
@@ -581,7 +587,7 @@
 	hlcoord 9, 8
 	ld de, SCREEN_WIDTH
 	ld b, 10
-	ld a, "|"
+	ld a, $31 ; vertical divider
 .vertical_divider
 	ld [hl], a
 	add hl, de
@@ -613,9 +619,9 @@
 	ld de, TempMonExp + 2
 	predef FillInExpBar
 	hlcoord 10, 16
-	ld [hl], $40
+	ld [hl], $40 ; left exp bar end cap
 	hlcoord 19, 16
-	ld [hl], $41
+	ld [hl], $41 ; right exp bar end cap
 	ret
 
 .PrintNextLevel: ; 4e0d3 (13:60d3)
@@ -741,7 +747,7 @@
 	hlcoord 10, 8
 	ld de, SCREEN_WIDTH
 	ld b, 10
-	ld a, "|"
+	ld a, $31 ; vertical divider
 .BluePageVerticalDivider:
 	ld [hl], a
 	add hl, de
@@ -823,7 +829,7 @@
 	call SetPalettes
 	call .AnimateMon
 	ld a, [CurPartySpecies]
-	call PlayCry2
+	call PlayMonCry2
 	ret
 
 .AnimateMon: ; 4e253 (13:6253)
@@ -864,7 +870,7 @@
 	ret c
 	call StatsScreen_LoadTextBoxSpaceGFX
 	ld de, vTiles2 tile $00
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	hlcoord 0, 0
 	ld d, $0
 	ld e, ANIM_MON_MENU
@@ -951,7 +957,7 @@
 	ld [rVBK], a
 	ld de, TextBoxSpaceGFX
 	lb bc, BANK(TextBoxSpaceGFX), 1
-	ld hl, vTiles2 tile $7f
+	ld hl, vTiles2 tile " "
 	call Get2bpp
 	pop af
 	ld [rVBK], a
@@ -962,9 +968,8 @@
 	ret
 ; 4e32a (13:632a)
 
-; unreferenced
-Unknown_4e32a: ; 4e32a
-; A blank tile?
+Unreferenced_4e32a: ; 4e32a
+; A blank space tile?
 	ds 16
 ; 4e33a
 
@@ -1069,7 +1074,7 @@
 	ld [wBoxAlignment], a
 	call StatsScreen_LoadTextBoxSpaceGFX
 	ld de, vTiles2 tile $00
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	pop de
 	hlcoord 0, 0
 	ld d, $0
@@ -1080,22 +1085,22 @@
 
 StatsScreen_LoadPageIndicators: ; 4e4cd (13:64cd)
 	hlcoord 13, 5
-	ld a, $36
+	ld a, $36 ; first of 4 small square tiles
 	call .load_square
 	hlcoord 15, 5
-	ld a, $36
+	ld a, $36 ; " " " "
 	call .load_square
 	hlcoord 17, 5
-	ld a, $36
+	ld a, $36 ; " " " "
 	call .load_square
 	ld a, c
-	cp $2
-	ld a, $3a
-	hlcoord 13, 5
+	cp GREEN_PAGE
+	ld a, $3a ; first of 4 large square tiles
+	hlcoord 13, 5 ; PINK_PAGE (< GREEN_PAGE)
 	jr c, .load_square
-	hlcoord 15, 5
+	hlcoord 15, 5 ; GREEN_PAGE (= GREEN_PAGE)
 	jr z, .load_square
-	hlcoord 17, 5
+	hlcoord 17, 5 ; BLUE_PAGE (> GREEN_PAGE)
 .load_square ; 4e4f7 (13:64f7)
 	push bc
 	ld [hli], a
@@ -1112,8 +1117,8 @@
 
 CopyNickname: ; 4e505 (13:6505)
 	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
-	jr .okay ; uuterly pointless
+	ld bc, MON_NAME_LENGTH
+	jr .okay ; utterly pointless
 .okay
 	ld a, [MonType]
 	cp BOXMON
@@ -1157,7 +1162,7 @@
 	ld hl, MON_STATUS
 	add hl, bc
 	ld a, [hl]
-	and (1 << FRZ) | SLP
+	and 1 << FRZ | SLP
 	jr nz, .fainted_frz_slp
 	and a
 	ret
--- /dev/null
+++ b/engine/tileset_anims.asm
@@ -1,0 +1,1060 @@
+_AnimateTileset:: ; fc000
+; Iterate over a given pointer array of
+; animation functions (one per frame).
+
+; Typically in wra1, vra0
+
+	ld a, [TilesetAnim]
+	ld e, a
+	ld a, [TilesetAnim + 1]
+	ld d, a
+
+	ld a, [hTileAnimFrame]
+	ld l, a
+	inc a
+	ld [hTileAnimFrame], a
+
+	ld h, 0
+	add hl, hl
+	add hl, hl
+	add hl, de
+
+; 2-byte parameter
+; All functions take input de.
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+
+; Function address
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	jp hl
+; fc01b
+
+Tileset0Anim: ; 0xfc01b
+TilesetJohtoModernAnim: ; 0xfc01b
+TilesetKantoAnim: ; 0xfc01b
+	dw vTiles2 tile $14, AnimateWaterTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  TileAnimationPalette
+	dw NULL,  WaitTileAnimation
+	dw NULL,  AnimateFlowerTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  StandingTileFrame8
+	dw NULL,  DoneTileAnimation
+; 0xfc047
+
+TilesetParkAnim: ; 0xfc047
+	dw vTiles2 tile $14, AnimateWaterTile
+	dw NULL,  WaitTileAnimation
+	dw vTiles2 tile $5f, AnimateFountain
+	dw NULL,  WaitTileAnimation
+	dw NULL,  TileAnimationPalette
+	dw NULL,  WaitTileAnimation
+	dw NULL,  AnimateFlowerTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  StandingTileFrame8
+	dw NULL,  DoneTileAnimation
+; 0xfc073
+
+TilesetForestAnim: ; 0xfc073
+	dw NULL,  ForestTreeLeftAnimation
+	dw NULL,  ForestTreeRightAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  ForestTreeLeftAnimation2
+	dw NULL,  ForestTreeRightAnimation2
+	dw NULL,  AnimateFlowerTile
+	dw vTiles2 tile $14, AnimateWaterTile
+	dw NULL,  TileAnimationPalette
+	dw NULL,  StandingTileFrame8
+	dw NULL,  DoneTileAnimation
+; 0xfc0a3
+
+TilesetJohtoAnim: ; 0xfc0a3
+	dw vTiles2 tile $14, AnimateWaterTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  TileAnimationPalette
+	dw NULL,  WaitTileAnimation
+	dw NULL,  AnimateFlowerTile
+	dw WhirlpoolFrames1, AnimateWhirlpoolTile
+	dw WhirlpoolFrames2, AnimateWhirlpoolTile
+	dw WhirlpoolFrames3, AnimateWhirlpoolTile
+	dw WhirlpoolFrames4, AnimateWhirlpoolTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  StandingTileFrame8
+	dw NULL,  DoneTileAnimation
+; 0xfc0d7
+
+UnusedTilesetAnim_fc0d7: ; 0xfc0d7
+	dw vTiles2 tile $03, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw vTiles2 tile $03, WriteTileFromBuffer
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  AnimateFlowerTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  DoneTileAnimation
+; 0xfc103
+
+UnusedTilesetAnim_fc103: ; 0xfc103
+	dw vTiles2 tile $14, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw vTiles2 tile $14, WriteTileFromBuffer
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  DoneTileAnimation
+; 0xfc12f
+
+TilesetPortAnim: ; 0xfc12f
+	dw vTiles2 tile $14, AnimateWaterTile
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  TileAnimationPalette
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  StandingTileFrame8
+	dw NULL,  DoneTileAnimation
+; 0xfc15f
+
+TilesetEliteFourRoomAnim: ; 0xfc15f
+	dw NULL,  LavaBubbleAnim2
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  LavaBubbleAnim1
+	dw NULL,  WaitTileAnimation
+	dw NULL,  StandingTileFrame8
+	dw NULL,  DoneTileAnimation
+; 0xfc17f
+
+UnusedTilesetAnim_fc17f: ; 0xfc17f
+	dw vTiles2 tile $53, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw vTiles2 tile $53, WriteTileFromBuffer
+	dw vTiles2 tile $03, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw vTiles2 tile $03, WriteTileFromBuffer
+	dw vTiles2 tile $53, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw vTiles2 tile $53, WriteTileFromBuffer
+	dw NULL,  DoneTileAnimation
+; 0xfc1af
+
+UnusedTilesetAnim_fc1af: ; 0xfc1af
+	dw vTiles2 tile $54, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw vTiles2 tile $54, WriteTileFromBuffer
+	dw NULL,  WaitTileAnimation
+	dw vTiles2 tile $03, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw vTiles2 tile $03, WriteTileFromBuffer
+	dw NULL,  WaitTileAnimation
+	dw vTiles2 tile $54, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileDown
+	dw wTileAnimBuffer, ScrollTileDown
+	dw vTiles2 tile $54, WriteTileFromBuffer
+	dw NULL,  DoneTileAnimation
+; 0xfc1e7
+
+TilesetCaveAnim: ; 0xfc1e7
+TilesetDarkCaveAnim: ; 0xfc1e7
+	dw vTiles2 tile $14, WriteTileToBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw vTiles2 tile $14, WriteTileFromBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw NULL,  TileAnimationPalette
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw vTiles2 tile $40, WriteTileToBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileDown
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileDown
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileDown
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw vTiles2 tile $40, WriteTileFromBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw NULL,  DoneTileAnimation
+; 0xfc233
+
+TilesetIcePathAnim: ; 0xfc233
+	dw vTiles2 tile $35, WriteTileToBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw vTiles2 tile $35, WriteTileFromBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw NULL,  TileAnimationPalette
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw vTiles2 tile $31, WriteTileToBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileDown
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileDown
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw wTileAnimBuffer, ScrollTileDown
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw vTiles2 tile $31, WriteTileFromBuffer
+	dw NULL,  FlickeringCaveEntrancePalette
+	dw NULL,  DoneTileAnimation
+; 0xfc27f
+
+TilesetTowerAnim: ; 0xfc27f
+	dw TowerPillarTilePointer9,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer10, AnimateTowerPillarTile
+	dw TowerPillarTilePointer7,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer8,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer5,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer6,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer3,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer4,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer1,  AnimateTowerPillarTile
+	dw TowerPillarTilePointer2,  AnimateTowerPillarTile
+	dw NULL,  StandingTileFrame
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  DoneTileAnimation
+; 0xfc2bf
+
+UnusedTilesetAnim_fc2bf: ; 0xfc2bf
+	dw vTiles2 tile $4f, WriteTileToBuffer
+	dw wTileAnimBuffer, ScrollTileRightLeft
+	dw vTiles2 tile $4f, WriteTileFromBuffer
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  WaitTileAnimation
+	dw NULL,  DoneTileAnimation
+; 0xfc2e7
+
+TilesetBattleTowerOutsideAnim: ; 0xfc2e7
+TilesetHouseAnim: ; 0xfc2e7
+TilesetPlayersHouseAnim: ; 0xfc2e7
+TilesetPokecenterAnim: ; 0xfc2e7
+TilesetGateAnim: ; 0xfc2e7
+TilesetLabAnim: ; 0xfc2e7
+TilesetFacilityAnim: ; 0xfc2e7
+TilesetMartAnim: ; 0xfc2e7
+TilesetMansionAnim: ; 0xfc2e7
+TilesetGameCornerAnim: ; 0xfc2e7
+TilesetTraditionalHouseAnim: ; 0xfc2e7
+TilesetTrainStationAnim: ; 0xfc2e7
+TilesetChampionsRoomAnim: ; 0xfc2e7
+TilesetLighthouseAnim: ; 0xfc2e7
+TilesetPlayersRoomAnim: ; 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
+	dw NULL,  WaitTileAnimation
+	dw NULL,  DoneTileAnimation
+; 0xfc2fb
+
+DoneTileAnimation: ; fc2fb
+; Reset the animation command loop.
+	xor a
+	ld [hTileAnimFrame], a
+
+WaitTileAnimation: ; fc2fe
+; Do nothing this frame.
+	ret
+; fc2ff
+
+StandingTileFrame8: ; fc2ff
+	ld a, [TileAnimationTimer]
+	inc a
+	and %111
+	ld [TileAnimationTimer], a
+	ret
+; fc309
+
+
+ScrollTileRightLeft: ; fc309
+; Scroll right for 4 ticks, then left for 4 ticks.
+	ld a, [TileAnimationTimer]
+	inc a
+	and %111
+	ld [TileAnimationTimer], a
+	and %100
+	jr nz, ScrollTileLeft
+	jr ScrollTileRight
+; fc318
+
+ScrollTileUpDown: ; fc318
+; Scroll up for 4 ticks, then down for 4 ticks.
+	ld a, [TileAnimationTimer]
+	inc a
+	and %111
+	ld [TileAnimationTimer], a
+	and %100
+	jr nz, ScrollTileDown
+	jr ScrollTileUp
+; fc327
+
+ScrollTileLeft: ; fc327
+	ld h, d
+	ld l, e
+	ld c, 4
+.loop
+rept 4
+	ld a, [hl]
+	rlca
+	ld [hli], a
+endr
+	dec c
+	jr nz, .loop
+	ret
+; fc33b
+
+ScrollTileRight: ; fc33b
+	ld h, d
+	ld l, e
+	ld c, 4
+.loop
+rept 4
+	ld a, [hl]
+	rrca
+	ld [hli], a
+endr
+	dec c
+	jr nz, .loop
+	ret
+; fc34f
+
+ScrollTileUp: ; fc34f
+	ld h, d
+	ld l, e
+	ld d, [hl]
+	inc hl
+	ld e, [hl]
+	ld bc, TILE_WIDTH * 2 - 2
+	add hl, bc
+	ld a, TILE_WIDTH / 2
+.loop
+	ld c, [hl]
+	ld [hl], e
+	dec hl
+	ld b, [hl]
+	ld [hl], d
+	dec hl
+	ld e, [hl]
+	ld [hl], c
+	dec hl
+	ld d, [hl]
+	ld [hl], b
+	dec hl
+	dec a
+	jr nz, .loop
+	ret
+; fc36a
+
+ScrollTileDown: ; fc36a
+	ld h, d
+	ld l, e
+	ld de, TILE_WIDTH * 2 - 2
+	push hl
+	add hl, de
+	ld d, [hl]
+	inc hl
+	ld e, [hl]
+	pop hl
+	ld a, TILE_WIDTH / 2
+.loop
+	ld b, [hl]
+	ld [hl], d
+	inc hl
+	ld c, [hl]
+	ld [hl], e
+	inc hl
+	ld d, [hl]
+	ld [hl], b
+	inc hl
+	ld e, [hl]
+	ld [hl], c
+	inc hl
+	dec a
+	jr nz, .loop
+	ret
+; fc387
+
+
+AnimateFountain: ; fc387
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+	ld hl, .frames
+	ld a, [TileAnimationTimer]
+	and %111
+	add a
+	add l
+	ld l, a
+	jr nc, .okay
+	inc h
+.okay
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld sp, hl
+	ld l, e
+	ld h, d
+	jp WriteTile
+
+.frames
+	dw .frame1
+	dw .frame2
+	dw .frame3
+	dw .frame4
+	dw .frame3
+	dw .frame4
+	dw .frame5
+	dw .frame1
+
+.frame1 INCBIN "gfx/tilesets/fountain/1.2bpp"
+.frame2 INCBIN "gfx/tilesets/fountain/2.2bpp"
+.frame3 INCBIN "gfx/tilesets/fountain/3.2bpp"
+.frame4 INCBIN "gfx/tilesets/fountain/4.2bpp"
+.frame5 INCBIN "gfx/tilesets/fountain/5.2bpp"
+; fc402
+
+
+AnimateWaterTile: ; fc402
+; Draw a water tile for the current frame in VRAM tile at de.
+
+; Save sp in bc (see WriteTile).
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+	ld a, [TileAnimationTimer]
+
+; 4 tile graphics, updated every other frame.
+	and %110
+
+; 2 x 8 = 16 bytes per tile
+	add a
+	add a
+	add a
+
+	add LOW(WaterTileFrames)
+	ld l, a
+	ld a, 0
+	adc HIGH(WaterTileFrames)
+	ld h, a
+
+; Stack now points to the start of the tile for this frame.
+	ld sp, hl
+
+	ld l, e
+	ld h, d
+
+	jp WriteTile
+; fc41c
+
+WaterTileFrames: ; fc41c
+	INCBIN "gfx/tilesets/water/water.2bpp"
+; fc45c
+
+
+ForestTreeLeftAnimation: ; fc45c
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+; Only during the Celebi event.
+	ld a, [wCelebiEvent]
+	bit 2, a
+	jr nz, .asm_fc46c
+	ld hl, ForestTreeLeftFrames
+	jr .asm_fc47d
+
+.asm_fc46c
+	ld a, [TileAnimationTimer]
+	call GetForestTreeFrame
+	add a
+	add a
+	add a
+	add LOW(ForestTreeLeftFrames)
+	ld l, a
+	ld a, 0
+	adc HIGH(ForestTreeLeftFrames)
+	ld h, a
+
+.asm_fc47d
+	ld sp, hl
+	ld hl, vTiles2 tile $0c
+	jp WriteTile
+; fc484
+
+
+ForestTreeLeftFrames: ; fc484
+	INCBIN "gfx/tilesets/forest-tree/1.2bpp"
+	INCBIN "gfx/tilesets/forest-tree/2.2bpp"
+; fc4a4
+
+ForestTreeRightFrames: ; fc4a4
+	INCBIN "gfx/tilesets/forest-tree/3.2bpp"
+	INCBIN "gfx/tilesets/forest-tree/4.2bpp"
+; fc4c4
+
+
+ForestTreeRightAnimation: ; fc4c4
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+; Only during the Celebi event.
+	ld a, [wCelebiEvent]
+	bit 2, a
+	jr nz, .asm_fc4d4
+	ld hl, ForestTreeRightFrames
+	jr .asm_fc4eb
+
+.asm_fc4d4
+	ld a, [TileAnimationTimer]
+	call GetForestTreeFrame
+	add a
+	add a
+	add a
+	add LOW(ForestTreeLeftFrames)
+	ld l, a
+	ld a, 0
+	adc HIGH(ForestTreeLeftFrames)
+	ld h, a
+	push bc
+	ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
+	add hl, bc
+	pop bc
+
+.asm_fc4eb
+	ld sp, hl
+	ld hl, vTiles2 tile $0f
+	jp WriteTile
+; fc4f2
+
+
+ForestTreeLeftAnimation2: ; fc4f2
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+; Only during the Celebi event.
+	ld a, [wCelebiEvent]
+	bit 2, a
+	jr nz, .asm_fc502
+	ld hl, ForestTreeLeftFrames
+	jr .asm_fc515
+
+.asm_fc502
+	ld a, [TileAnimationTimer]
+	call GetForestTreeFrame
+	xor 2
+	add a
+	add a
+	add a
+	add LOW(ForestTreeLeftFrames)
+	ld l, a
+	ld a, 0
+	adc HIGH(ForestTreeLeftFrames)
+	ld h, a
+
+.asm_fc515
+	ld sp, hl
+	ld hl, vTiles2 tile $0c
+	jp WriteTile
+; fc51c
+
+
+ForestTreeRightAnimation2: ; fc51c
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+; Only during the Celebi event.
+	ld a, [wCelebiEvent]
+	bit 2, a
+	jr nz, .asm_fc52c
+	ld hl, ForestTreeRightFrames
+	jr .asm_fc545
+
+.asm_fc52c
+	ld a, [TileAnimationTimer]
+	call GetForestTreeFrame
+	xor 2
+	add a
+	add a
+	add a
+	add LOW(ForestTreeLeftFrames)
+	ld l, a
+	ld a, 0
+	adc HIGH(ForestTreeLeftFrames)
+	ld h, a
+	push bc
+	ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
+	add hl, bc
+	pop bc
+
+.asm_fc545
+	ld sp, hl
+	ld hl, vTiles2 tile $0f
+	jp WriteTile
+; fc54c
+
+
+GetForestTreeFrame: ; fc54c
+; Return 0 if a is even, or 2 if odd.
+	and a
+	jr z, .even
+	cp 1
+	jr z, .odd
+	cp 2
+	jr z, .even
+	cp 3
+	jr z, .odd
+	cp 4
+	jr z, .even
+	cp 5
+	jr z, .odd
+	cp 6
+	jr z, .even
+.odd
+	ld a, 2
+	scf
+	ret
+.even
+	xor a
+	ret
+; fc56d
+
+
+AnimateFlowerTile: ; fc56d
+; No parameters.
+
+; Save sp in bc (see WriteTile).
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+; Alternate tile graphic every other frame
+	ld a, [TileAnimationTimer]
+	and %10
+	ld e, a
+
+; CGB has different color mappings for flowers.
+	ld a, [hCGB]
+	and 1
+
+	add e
+	swap a
+	ld e, a
+	ld d, 0
+	ld hl, FlowerTileFrames
+	add hl, de
+	ld sp, hl
+
+	ld hl, vTiles2 tile $03
+
+	jp WriteTile
+; fc58c
+
+FlowerTileFrames: ; fc58c
+	INCBIN "gfx/tilesets/flower/dmg_1.2bpp"
+	INCBIN "gfx/tilesets/flower/cgb_1.2bpp"
+	INCBIN "gfx/tilesets/flower/dmg_2.2bpp"
+	INCBIN "gfx/tilesets/flower/cgb_2.2bpp"
+; fc5cc
+
+
+LavaBubbleAnim1: ; fc5cc
+; Splash in the bottom-right corner of the fountain.
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+	ld a, [TileAnimationTimer]
+	and %110
+	srl a
+	inc a
+	inc a
+	and %011
+	swap a
+	ld e, a
+	ld d, 0
+	ld hl, LavaBubbleFrames
+	add hl, de
+	ld sp, hl
+	ld hl, vTiles2 tile $5b
+	jp WriteTile
+; fc5eb
+
+
+LavaBubbleAnim2: ; fc5eb
+; Splash in the top-left corner of the fountain.
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+	ld a, [TileAnimationTimer]
+	and %110
+	add a
+	add a
+	add a
+	ld e, a
+	ld d, 0
+	ld hl, LavaBubbleFrames
+	add hl, de
+	ld sp, hl
+	ld hl, vTiles2 tile $38
+	jp WriteTile
+; fc605
+
+
+LavaBubbleFrames: ; fc605
+	INCBIN "gfx/tilesets/lava/1.2bpp"
+	INCBIN "gfx/tilesets/lava/2.2bpp"
+	INCBIN "gfx/tilesets/lava/3.2bpp"
+	INCBIN "gfx/tilesets/lava/4.2bpp"
+; fc645
+
+
+AnimateTowerPillarTile: ; fc645
+; Read from struct at de:
+; 	Destination (VRAM)
+;	Address of the first tile in the frame array
+
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+	ld a, [TileAnimationTimer]
+	and %111
+
+; Get frame index a
+	ld hl, .frames
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+
+; Destination
+	ld l, e
+	ld h, d
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+
+; Add the frame index to the starting address
+	add [hl]
+	inc hl
+	ld h, [hl]
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+
+	ld sp, hl
+	ld l, e
+	ld h, d
+	jr WriteTile
+
+.frames
+	db $00, $10, $20, $30, $40, $30, $20, $10
+; fc673
+
+
+StandingTileFrame: ; fc673
+	ld hl, TileAnimationTimer
+	inc [hl]
+	ret
+; fc678
+
+
+AnimateWhirlpoolTile: ; fc678
+; Update whirlpool tile using struct at de.
+
+; Struct:
+; 	VRAM address
+;	Address of the first tile
+
+; Only does one of 4 tiles at a time.
+
+; Save sp in bc (see WriteTile).
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+; de = VRAM address
+	ld l, e
+	ld h, d
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+; Tile address is now at hl.
+
+; Get the tile for this frame.
+	ld a, [TileAnimationTimer]
+	and %11 ; 4 frames x2
+	swap a  ; * 16 bytes per tile
+
+	add [hl]
+	inc hl
+	ld h, [hl]
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+
+; Stack now points to the desired frame.
+	ld sp, hl
+
+	ld l, e
+	ld h, d
+
+	jr WriteTile
+; fc696
+
+
+WriteTileFromBuffer: ; fc696
+; Write tiledata at wTileAnimBuffer to de.
+; wTileAnimBuffer is loaded to sp for WriteTile.
+
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+	ld hl, wTileAnimBuffer
+	ld sp, hl
+
+	ld h, d
+	ld l, e
+	jr WriteTile
+; fc6a2
+
+
+WriteTileToBuffer: ; fc6a2
+; Write tiledata de to wTileAnimBuffer.
+; de is loaded to sp for WriteTile.
+
+	ld hl, sp+0
+	ld b, h
+	ld c, l
+
+	ld h, d
+	ld l, e
+	ld sp, hl
+
+	ld hl, wTileAnimBuffer
+
+	; fallthrough
+
+WriteTile: ; fc6ac
+; Write one 8x8 tile ($10 bytes) from sp to hl.
+
+; Warning: sp is saved in bc so we can abuse pop.
+; sp is restored to address bc. Save sp in bc before calling.
+
+	pop de
+	ld [hl], e
+	inc hl
+	ld [hl], d
+
+rept 7
+	pop de
+	inc hl
+	ld [hl], e
+	inc hl
+	ld [hl], d
+endr
+
+; restore sp
+	ld h, b
+	ld l, c
+	ld sp, hl
+	ret
+; fc6d7
+
+
+TileAnimationPalette: ; fc6d7
+; Transition between color values 0-2 for color 0 in palette 3.
+
+; No palette changes on DMG.
+	ld a, [hCGB]
+	and a
+	ret z
+
+; We don't want to mess with non-standard palettes.
+	ld a, [rBGP] ; BGP
+	cp %11100100
+	ret nz
+
+; Only update on even frames.
+	ld a, [TileAnimationTimer]
+	ld l, a
+	and 1 ; odd
+	ret nz
+
+; Ready for BGPD input...
+
+	ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_WATER
+	ld [rBGPI], a
+
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(wBGPals1)
+	ld [rSVBK], a
+
+; Update color 0 in order 0 1 2 1
+	ld a, l
+	and %110 ; frames 0 2 4 6
+	jr z, .color0
+	cp %100 ; frame 4
+	jr z, .color2
+
+.color1
+	ld hl, wBGPals1 palette PAL_BG_WATER + 2
+	ld a, [hli]
+	ld [rBGPD], a
+	ld a, [hli]
+	ld [rBGPD], a
+	jr .end
+
+.color0
+	ld hl, wBGPals1 palette PAL_BG_WATER
+	ld a, [hli]
+	ld [rBGPD], a
+	ld a, [hli]
+	ld [rBGPD], a
+	jr .end
+
+.color2
+	ld hl, wBGPals1 palette PAL_BG_WATER + 4
+	ld a, [hli]
+	ld [rBGPD], a
+	ld a, [hli]
+	ld [rBGPD], a
+
+.end
+	pop af
+	ld [rSVBK], a
+	ret
+; fc71e
+
+
+FlickeringCaveEntrancePalette: ; fc71e
+; No palette changes on DMG.
+	ld a, [hCGB]
+	and a
+	ret z
+; We don't want to mess with non-standard palettes.
+	ld a, [rBGP]
+	cp %11100100
+	ret nz
+; We only want to be here if we're in a dark cave.
+	ld a, [wTimeOfDayPalset]
+	cp %11111111 ; 3,3,3,3
+	ret nz
+
+	ld a, [rSVBK]
+	push af
+	ld a, BANK(wBGPals1)
+	ld [rSVBK], a
+; Ready for BGPD input...
+	ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_YELLOW
+	ld [rBGPI], a
+	ld a, [hVBlankCounter]
+	and %10
+	jr nz, .bit1set
+	ld hl, wBGPals1 palette PAL_BG_YELLOW
+	jr .okay
+
+.bit1set
+	ld hl, wBGPals1 palette PAL_BG_YELLOW + 2
+
+.okay
+	ld a, [hli]
+	ld [rBGPD], a
+	ld a, [hli]
+	ld [rBGPD], a
+
+	pop af
+	ld [rSVBK], a
+	ret
+; fc750
+
+
+TowerPillarTilePointer1:  dw vTiles2 tile $2d, TowerPillarTile1
+TowerPillarTilePointer2:  dw vTiles2 tile $2f, TowerPillarTile2
+TowerPillarTilePointer3:  dw vTiles2 tile $3d, TowerPillarTile3
+TowerPillarTilePointer4:  dw vTiles2 tile $3f, TowerPillarTile4
+TowerPillarTilePointer5:  dw vTiles2 tile $3c, TowerPillarTile5
+TowerPillarTilePointer6:  dw vTiles2 tile $2c, TowerPillarTile6
+TowerPillarTilePointer7:  dw vTiles2 tile $4d, TowerPillarTile7
+TowerPillarTilePointer8:  dw vTiles2 tile $4f, TowerPillarTile8
+TowerPillarTilePointer9:  dw vTiles2 tile $5d, TowerPillarTile9
+TowerPillarTilePointer10: dw vTiles2 tile $5f, TowerPillarTile10
+
+TowerPillarTile1:  INCBIN "gfx/tilesets/tower-pillar/1.2bpp"
+TowerPillarTile2:  INCBIN "gfx/tilesets/tower-pillar/2.2bpp"
+TowerPillarTile3:  INCBIN "gfx/tilesets/tower-pillar/3.2bpp"
+TowerPillarTile4:  INCBIN "gfx/tilesets/tower-pillar/4.2bpp"
+TowerPillarTile5:  INCBIN "gfx/tilesets/tower-pillar/5.2bpp"
+TowerPillarTile6:  INCBIN "gfx/tilesets/tower-pillar/6.2bpp"
+TowerPillarTile7:  INCBIN "gfx/tilesets/tower-pillar/7.2bpp"
+TowerPillarTile8:  INCBIN "gfx/tilesets/tower-pillar/8.2bpp"
+TowerPillarTile9:  INCBIN "gfx/tilesets/tower-pillar/9.2bpp"
+TowerPillarTile10: INCBIN "gfx/tilesets/tower-pillar/10.2bpp"
+; fca98
+
+
+WhirlpoolFrames1: dw vTiles2 tile $32, WhirlpoolTiles1
+WhirlpoolFrames2: dw vTiles2 tile $33, WhirlpoolTiles2
+WhirlpoolFrames3: dw vTiles2 tile $42, WhirlpoolTiles3
+WhirlpoolFrames4: dw vTiles2 tile $43, WhirlpoolTiles4
+; fcaa8
+
+WhirlpoolTiles1: INCBIN "gfx/tilesets/whirlpool/1.2bpp"
+WhirlpoolTiles2: INCBIN "gfx/tilesets/whirlpool/2.2bpp"
+WhirlpoolTiles3: INCBIN "gfx/tilesets/whirlpool/3.2bpp"
+WhirlpoolTiles4: INCBIN "gfx/tilesets/whirlpool/4.2bpp"
+; fcba8
--- /dev/null
+++ b/engine/tileset_palettes.asm
@@ -1,0 +1,151 @@
+LoadSpecialMapPalette: ; 494ac
+	ld a, [wTileset]
+	cp TILESET_POKECOM_CENTER
+	jr z, .pokecom_2f
+	cp TILESET_BATTLE_TOWER
+	jr z, .battle_tower
+	cp TILESET_ICE_PATH
+	jr z, .ice_path
+	cp TILESET_HOUSE
+	jr z, .house
+	cp TILESET_RADIO_TOWER
+	jr z, .radio_tower
+	cp TILESET_MANSION
+	jr z, .mansion_mobile
+	jr .do_nothing
+
+.pokecom_2f
+	call LoadPokeComPalette
+	scf
+	ret
+
+.battle_tower
+	call LoadBattleTowerPalette
+	scf
+	ret
+
+.ice_path
+	ld a, [wEnvironment]
+	and $7
+	cp INDOOR ; Hall of Fame
+	jr z, .do_nothing
+	call LoadIcePathPalette
+	scf
+	ret
+
+.house
+	call LoadHousePalette
+	scf
+	ret
+
+.radio_tower
+	call LoadRadioTowerPalette
+	scf
+	ret
+
+.mansion_mobile
+	call LoadMansionPalette
+	scf
+	ret
+
+.do_nothing
+	and a
+	ret
+; 494f2
+
+LoadPokeComPalette: ; 494f2
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1
+	ld hl, PokeComPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 49501
+
+PokeComPalette: ; 49501
+INCLUDE "gfx/tilesets/pokecom_center.pal"
+; 49541
+
+LoadBattleTowerPalette: ; 49541
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1
+	ld hl, BattleTowerPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 49550
+
+BattleTowerPalette: ; 49550
+INCLUDE "gfx/tilesets/battle_tower.pal"
+; 49590
+
+LoadIcePathPalette: ; 49590
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1
+	ld hl, IcePathPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 4959f
+
+IcePathPalette: ; 4959f
+INCLUDE "gfx/tilesets/ice_path.pal"
+; 495df
+
+LoadHousePalette: ; 495df
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1
+	ld hl, HousePalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 495ee
+
+HousePalette: ; 495ee
+INCLUDE "gfx/tilesets/house.pal"
+; 4962e
+
+LoadRadioTowerPalette: ; 4962e
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1
+	ld hl, RadioTowerPalette
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ret
+; 4963d
+
+RadioTowerPalette: ; 4963d
+INCLUDE "gfx/tilesets/radio_tower.pal"
+; 4967d
+
+MansionPalette1: ; 4967d
+INCLUDE "gfx/tilesets/mansion_1.pal"
+; 496c5
+
+LoadMansionPalette: ; 496c5
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1
+	ld hl, MansionPalette1
+	ld bc, 8 palettes
+	call FarCopyWRAM
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1 palette PAL_BG_YELLOW
+	ld hl, MansionPalette2
+	ld bc, 1 palettes
+	call FarCopyWRAM
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1 palette PAL_BG_WATER
+	ld hl, MansionPalette1 + 6 palettes
+	ld bc, 1 palettes
+	call FarCopyWRAM
+	ld a, BANK(wBGPals1)
+	ld de, wBGPals1 palette PAL_BG_ROOF
+	ld hl, MansionPalette1 + 8 palettes
+	ld bc, 1 palettes
+	call FarCopyWRAM
+	ret
+; 496fe
+
+MansionPalette2: ; 496fe
+INCLUDE "gfx/tilesets/mansion_2.pal"
+; 49706
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -133,7 +133,7 @@
 Special_SampleKenjiBreakCountdown: ; 11485
 ; Generate a random number between 3 and 6
 	call Random
-	and 3
+	and %11
 	add 3
 	ld [wKenjiBreakTimer], a
 	ret
@@ -140,9 +140,9 @@
 ; 11490
 
 StartBugContestTimer: ; 11490
-	ld a, 20
+	ld a, BUG_CONTEST_MINUTES
 	ld [wBugContestMinsRemaining], a
-	ld a, 0
+	ld a, BUG_CONTEST_SECONDS
 	ld [wBugContestSecsRemaining], a
 	call UpdateTime
 	ld hl, wBugContestStartTime
@@ -225,13 +225,13 @@
 	ret
 ; 1151c
 
-; XXX
+; unused
 	ld hl, wDailyFlags
 	set 2, [hl]
 	ret
 ; 11522
 
-; XXX
+; unused
 	and a
 	ld hl, wDailyFlags
 	bit 2, [hl]
@@ -252,7 +252,7 @@
 	ld a, FRIDAY
 	sub c
 	jr z, .friday_saturday
-	jr nc, .earlier ; should've done "ret nc"
+	jr nc, .earlier ; could have done "ret nc"
 
 .friday_saturday
 	add 7
--- a/engine/time_capsule.asm
+++ b/engine/time_capsule.asm
@@ -144,4 +144,4 @@
 	jr .loop
 ; fb656
 
-INCLUDE "data/time_capsule/special_stats.asm"
+INCLUDE "data/pokemon/rby_base_special.asm"
--- a/engine/time_capsule_2.asm
+++ b/engine/time_capsule_2.asm
@@ -36,4 +36,4 @@
 ; fb91c
 
 
-INCLUDE "data/time_capsule/mon_order.asm"
+INCLUDE "data/pokemon/rby_order.asm"
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -1,5 +1,5 @@
-Predef35: ; 8c000
-Predef36:
+DummyPredef35: ; 8c000
+DummyPredef36:
 	ret
 
 UpdateTimeOfDayPal:: ; 8c001
@@ -47,8 +47,8 @@
 ; save wram bank
 	ld a, [rSVBK]
 	ld b, a
-; wram bank 5
-	ld a, $5
+
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 ; push palette
@@ -78,8 +78,8 @@
 ; save wram bank
 	ld a, [rSVBK]
 	ld d, a
-; wram bank 5
-	ld a, 5
+
+	ld a, BANK(wOBPals1)
 	ld [rSVBK], a
 
 ; pop palette
@@ -119,7 +119,7 @@
 	ret
 ; 8c079
 
-FadeInPalettes:: ; 8c079
+Special_FadeInPalettes:: ; 8c079
 	ld c, $12
 	call GetTimePalFade
 	ld b, $4
@@ -127,7 +127,7 @@
 	ret
 ; 8c084
 
-FadeOutPalettes:: ; 8c084
+Special_FadeOutPalettes:: ; 8c084
 	call FillWhiteBGColor
 	ld c, $9
 	call GetTimePalFade
@@ -173,7 +173,7 @@
 FillWhiteBGColor: ; 8c0c1
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	ld hl, wBGPals1
--- a/engine/timeset.asm
+++ b/engine/timeset.asm
@@ -1,3 +1,6 @@
+TIMESET_UP_ARROW   EQUS "\"♂\"" ; $ef
+TIMESET_DOWN_ARROW EQUS "\"♀\"" ; $f5
+
 InitClock: ; 90672 (24:4672)
 ; Ask the player to set the time.
 	ld a, [hInMenu]
@@ -397,11 +400,11 @@
 ; 0x908fb
 
 TimeSetBackgroundGFX: ; 908fb
-INCBIN "gfx/timeset/background.1bpp"
+INCBIN "gfx/new_game/timeset_bg.1bpp"
 TimeSetUpArrowGFX: ; 90903
-INCBIN "gfx/timeset/up_arrow.1bpp"
+INCBIN "gfx/new_game/up_arrow.1bpp"
 TimeSetDownArrowGFX: ; 9090b
-INCBIN "gfx/timeset/down_arrow.1bpp"
+INCBIN "gfx/new_game/down_arrow.1bpp"
 ; 90913
 
 Special_SetDayOfWeek: ; 90913
@@ -410,11 +413,11 @@
 	ld a, $1
 	ld [hInMenu], a
 	ld de, TimeSetUpArrowGFX
-	ld hl, vTiles1 tile $6f
+	ld hl, vTiles0 tile TIMESET_UP_ARROW
 	lb bc, BANK(TimeSetUpArrowGFX), 1
 	call Request1bpp
 	ld de, TimeSetDownArrowGFX
-	ld hl, vTiles1 tile $75
+	ld hl, vTiles0 tile TIMESET_DOWN_ARROW
 	lb bc, BANK(TimeSetDownArrowGFX), 1
 	call Request1bpp
 	xor a
@@ -431,9 +434,9 @@
 	ld c, 9
 	call TextBox
 	hlcoord 14, 3
-	ld [hl], "♂" ; gets overwritten with special up arrow
+	ld [hl], TIMESET_UP_ARROW
 	hlcoord 14, 6
-	ld [hl], "♀" ; gets overwritten with special down arrow
+	ld [hl], TIMESET_DOWN_ARROW
 	hlcoord 10, 5
 	call .PlaceWeekdayString
 	call ApplyTilemap
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -139,7 +139,7 @@
 	ld a, [rSVBK]
 	push af
 ; WRAM bank 5
-	ld a, 5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 ; Update palette colors
@@ -162,13 +162,13 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, 5 ; BANK(LYOverrides)
+	ld a, BANK(LYOverrides)
 	ld [rSVBK], a
 
 ; Make alternating lines come in from opposite sides
 
-; ( This part is actually totally pointless, you can't
-;   see anything until these values are overwritten!  )
+; (This part is actually totally pointless, you can't
+;  see anything until these values are overwritten!)
 
 	ld b, 80 / 2 ; alternate for 80 lines
 	ld hl, LYOverrides
@@ -237,11 +237,11 @@
 	inc [hl]
 
 ; Only do this once every eight frames
-	and (1 << 3) - 1
+	and %111
 	ret nz
 
 	ld a, c
-	and 3 << 3
+	and %11000
 	sla a
 	swap a
 	ld e, a
@@ -323,7 +323,7 @@
 ; 10ef06
 
 InitializeBackground: ; 10ef06
-	ld hl, Sprites
+	ld hl, Sprite01
 	ld d, -$22
 	ld e, $0
 	ld c, 5
@@ -344,17 +344,17 @@
 	ld b, $40
 .loop2
 	ld a, d
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, b
-	ld [hli], a
+	ld [hli], a ; x
 	add $8
 	ld b, a
 	ld a, e
-	ld [hli], a
+	ld [hli], a ; tile id
 	inc e
 	inc e
-	ld a, $80
-	ld [hli], a
+	ld a, 0 | PRIORITY
+	ld [hli], a ; attributes
 	dec c
 	jr nz, .loop2
 	ret
@@ -366,9 +366,9 @@
 
 ; Stop at y=6
 ; y is really from the bottom of the sprite, which is two tiles high
-	ld hl, Sprites
+	ld hl, Sprite01YCoord
 	ld a, [hl]
-	cp 6 + $10
+	cp 6 + 2 * TILE_WIDTH
 	ret z
 
 ; Move all 30 parts of the crystal down by 2
@@ -376,10 +376,10 @@
 .loop
 	ld a, [hl]
 	add 2
-	ld [hli], a
+	ld [hli], a ; y
+rept SPRITEOAMSTRUCT_LENGTH +- 1
 	inc hl
-	inc hl
-	inc hl
+endr
 	dec c
 	jr nz, .loop
 
@@ -399,4 +399,4 @@
 ; 10fede
 
 TitleScreenPalettes:
-INCLUDE "data/palettes/title.pal"
+INCLUDE "gfx/title/title.pal"
--- a/engine/tmhm.asm
+++ b/engine/tmhm.asm
@@ -23,7 +23,7 @@
 	ld b, CHECK_FLAG
 	push de
 	ld d, 0
-	predef FlagPredef
+	predef SmallFarFlagAction
 	pop de
 	ret
 
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -146,7 +146,7 @@
 	and a
 	jr z, .nope
 
-	farcall TrainerRankings_TMsHMsTaught
+	farcall StubbedTrainerRankings_TMsHMsTaught
 	ld a, [CurItem]
 	call IsHM
 	ret c
@@ -447,8 +447,7 @@
 	ret
 ; 2ca95 (b:4a95)
 
-Function2ca95: ; 2ca95
-; unreferenced
+Unreferenced_Function2ca95: ; 2ca95
 	pop hl
 	ld bc, 3
 	add hl, bc
@@ -499,8 +498,7 @@
 	ret
 ; 2cadf (b:4adf)
 
-Function2cadf: ; 2cadf
-; unreferenced
+Unreferenced_Function2cadf: ; 2cadf
 	call ConvertCurItemIntoCurTMHM
 	call .CheckHaveRoomForTMHM
 	ld hl, .NoRoomText
--- a/engine/trade_animation.asm
+++ b/engine/trade_animation.asm
@@ -1,3 +1,14 @@
+TRADEANIM_RIGHT_ARROW EQU $ed
+TRADEANIM_LEFT_ARROW  EQU $ee
+
+; TradeAnim_TubeAnimJumptable.Jumptable indexes
+	const_def
+	const TRADEANIMSTATE_0 ; 0
+	const TRADEANIMSTATE_1 ; 1
+	const TRADEANIMSTATE_2 ; 2
+	const TRADEANIMSTATE_3 ; 3
+TRADEANIMJUMPTABLE_LENGTH EQU const_value
+
 TradeAnimation: ; 28f24
 	xor a
 	ld [wcf66], a
@@ -165,13 +176,13 @@
 	ld de, vTiles2 tile $31
 	call Decompress
 	ld hl, TradeArrowGFX
-	ld de, vTiles1 tile $6d
-	ld bc, $10
+	ld de, vTiles0 tile TRADEANIM_RIGHT_ARROW
+	ld bc, 1 tiles
 	ld a, BANK(TradeArrowGFX)
 	call FarCopyBytes
-	ld hl, TradeArrowGFX + $10
-	ld de, vTiles1 tile $6e
-	ld bc, $10
+	ld hl, TradeArrowGFX + 1 tiles
+	ld de, vTiles0 tile TRADEANIM_LEFT_ARROW
+	ld bc, 1 tiles
 	ld a, BANK(TradeArrowGFX)
 	call FarCopyBytes
 	xor a
@@ -317,7 +328,7 @@
 ; 29129
 
 TradeAnim_TubeToOT1: ; 29129
-	ld a, $ed ; >>>>>>>>
+	ld a, TRADEANIM_RIGHT_ARROW
 	call TradeAnim_PlaceTrademonStatsOnTubeAnim
 	ld a, [wLinkTradeSendmonSpecies]
 	ld [wd265], a
@@ -327,11 +338,11 @@
 	jr TradeAnim_InitTubeAnim
 
 TradeAnim_TubeToPlayer1: ; 2913c
-	ld a, $ee ; <<<<<<<<
+	ld a, TRADEANIM_LEFT_ARROW
 	call TradeAnim_PlaceTrademonStatsOnTubeAnim
 	ld a, [wLinkTradeGetmonSpecies]
 	ld [wd265], a
-	ld a, $2
+	ld a, TRADEANIMSTATE_2
 	depixel 9, 18, 4, 4
 	ld b, $4
 TradeAnim_InitTubeAnim: ; 2914e
@@ -387,8 +398,8 @@
 	call DmgToCgbObjPal0
 
 	call TradeAnim_IncrementJumptableIndex
-	ld a, $5c
-	ld [wcf64], a
+	ld a, 92
+	ld [wFrameCounter], a
 	ret
 
 ; 291af
@@ -400,7 +411,7 @@
 	ld [hSCX], a
 	cp $50
 	ret nz
-	ld a, $1
+	ld a, TRADEANIMSTATE_1
 	call TradeAnim_TubeAnimJumptable
 	call TradeAnim_IncrementJumptableIndex
 	ret
@@ -414,7 +425,7 @@
 	ld [hSCX], a
 	cp $a0
 	ret nz
-	ld a, $2
+	ld a, TRADEANIMSTATE_2
 	call TradeAnim_TubeAnimJumptable
 	call TradeAnim_IncrementJumptableIndex
 	ret
@@ -440,7 +451,7 @@
 	ld [hSCX], a
 	cp $b0
 	ret nz
-	ld a, $1
+	ld a, TRADEANIMSTATE_1
 	call TradeAnim_TubeAnimJumptable
 	call TradeAnim_IncrementJumptableIndex
 	ret
@@ -454,7 +465,7 @@
 	ld [hSCX], a
 	cp $60
 	ret nz
-	xor a
+	xor a ; TRADEANIMSTATE_0
 	call TradeAnim_TubeAnimJumptable
 	call TradeAnim_IncrementJumptableIndex
 	ret
@@ -475,8 +486,8 @@
 
 TradeAnim_TubeToOT6:
 TradeAnim_TubeToPlayer6: ; 29220
-	ld a, $80
-	ld [wcf64], a
+	ld a, 128
+	ld [wFrameCounter], a
 	call TradeAnim_IncrementJumptableIndex
 	ret
 
@@ -511,7 +522,7 @@
 TradeAnim_TubeToPlayer2:
 TradeAnim_TubeToPlayer7: ; 2925d
 	call TradeAnim_FlashBGPals
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -541,7 +552,7 @@
 ; 29281
 
 TradeAnim_TubeAnimJumptable: ; 29281
-	and 3
+	maskbits TRADEANIMJUMPTABLE_LENGTH
 	ld e, a
 	ld d, 0
 	ld hl, .Jumptable
@@ -554,6 +565,7 @@
 ; 2928f
 
 .Jumptable: ; 2928f
+; entries correspond to TRADEANIMSTATE_* constants
 	dw .Zero
 	dw .One
 	dw .Two
@@ -835,7 +847,7 @@
 	jr c, .skip_cry
 	ld e, c
 	ld d, b
-	call PlayCryHeader
+	call PlayCry
 .skip_cry
 
 	call TradeAnim_AdvanceScriptPointer
@@ -1114,8 +1126,8 @@
 	ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
 	call _InitSpriteAnimStruct
 	call TradeAnim_AdvanceScriptPointer
-	ld a, $20
-	ld [wcf64], a
+	ld a, 32
+	ld [wFrameCounter], a
 	ret
 
 ; 2962c
@@ -1131,8 +1143,8 @@
 	add hl, bc
 	ld [hl], $dc
 	call TradeAnim_AdvanceScriptPointer
-	ld a, $38
-	ld [wcf64], a
+	ld a, 56
+	ld [wFrameCounter], a
 	ret
 
 ; 29649
@@ -1142,8 +1154,8 @@
 	ld a, SPRITE_ANIM_INDEX_TRADE_POOF
 	call _InitSpriteAnimStruct
 	call TradeAnim_AdvanceScriptPointer
-	ld a, $10
-	ld [wcf64], a
+	ld a, 16
+	ld [wFrameCounter], a
 	ld de, SFX_BALL_POOF
 	call PlaySFX
 	ret
@@ -1157,8 +1169,8 @@
 	ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
 	call _InitSpriteAnimStruct
 	call TradeAnim_AdvanceScriptPointer
-	ld a, $40
-	ld [wcf64], a
+	ld a, 64
+	ld [wFrameCounter], a
 	ret
 
 ; 29676
@@ -1500,15 +1512,15 @@
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, vTiles0 tile $62
-	lb bc, BANK(TradeBallGFX), $6
+	lb bc, BANK(TradeBallGFX), 6
 	call Request2bpp
 	ld de, TradePoofGFX
 	ld hl, vTiles0 tile $68
-	lb bc, BANK(TradePoofGFX), $c
+	lb bc, BANK(TradePoofGFX), 12
 	call Request2bpp
 	ld de, TradeCableGFX
 	ld hl, vTiles0 tile $74
-	lb bc, BANK(TradeCableGFX), $4
+	lb bc, BANK(TradeCableGFX), 4
 	call Request2bpp
 	xor a
 	ld hl, wSpriteAnimDict
@@ -1524,7 +1536,7 @@
 	callfar LoadMenuMonIcon
 	ld de, TradeBubbleGFX
 	ld hl, vTiles0 tile $72
-	lb bc, BANK(TradeBubbleGFX), $4
+	lb bc, BANK(TradeBubbleGFX), 4
 	call Request2bpp
 	xor a
 	ld hl, wSpriteAnimDict
@@ -1535,7 +1547,7 @@
 ; 29879
 
 TradeAnim_WaitAnim: ; 29879
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -1549,7 +1561,7 @@
 ; 29886
 
 TradeAnim_WaitAnim2: ; 29886
-	ld hl, wcf64
+	ld hl, wFrameCounter
 	ld a, [hl]
 	and a
 	jr z, .done
@@ -1563,8 +1575,8 @@
 ; 29893
 
 
-DebugTrade: ; 29893
-; This function is unreferenced.
+Unreferenced_DebugTrade: ; 29893
+; This function is not referenced.
 ; It was meant for use in Japanese versions, so the
 ; constant used for copy length was changed by accident.
 
@@ -1573,7 +1585,7 @@
 	ld a, [hli]
 	ld [wPlayerTrademonSpecies], a
 	ld de, wPlayerTrademonSenderName
-	ld c, 11 + 2 ; jp: 6 + 2
+	ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2
 .loop1
 	ld a, [hli]
 	ld [de], a
@@ -1584,7 +1596,7 @@
 	ld a, [hli]
 	ld [wOTTrademonSpecies], a
 	ld de, wOTTrademonSenderName
-	ld c, 11 + 2 ; jp: 6 + 2
+	ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2
 .loop2
 	ld a, [hli]
 	ld [de], a
@@ -1595,9 +1607,15 @@
 
 ; 298b5
 
+debugtrade: MACRO
+; species, ot name, ot id (?)
+	db \1, \2
+	dw \3
+ENDM
+
 .DebugTradeData: ; 298b5
-	db VENUSAUR, "ゲーフり@@", $23, $01 ; GAME FREAK
-	db CHARIZARD, "クりーチャ@", $56, $04 ; Creatures Inc.
+	debugtrade VENUSAUR, "ゲーフり@@", $0123 ; GAME FREAK
+	debugtrade CHARIZARD, "クりーチャ@", $0456 ; Creatures Inc.
 ; 298c7
 
 
--- a/engine/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -1,3 +1,13 @@
+; TrainerCard.Jumptable indexes
+	const_def
+	const TRAINERCARDSTATE_PAGE1_LOADGFX ; 0
+	const TRAINERCARDSTATE_PAGE1_JOYPAD  ; 1
+	const TRAINERCARDSTATE_PAGE2_LOADGFX ; 2
+	const TRAINERCARDSTATE_PAGE2_JOYPAD  ; 3
+	const TRAINERCARDSTATE_PAGE3_LOADGFX ; 4
+	const TRAINERCARDSTATE_PAGE3_JOYPAD  ; 5
+	const TRAINERCARDSTATE_QUIT          ; 6
+
 TrainerCard: ; 25105
 	ld a, [VramState]
 	push af
@@ -6,7 +16,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call .InitRAM
 .loop
 	call UpdateTime
@@ -61,11 +71,11 @@
 	call SetPalettes
 	call WaitBGMap
 	ld hl, wJumptableIndex
-	xor a
-	ld [hli], a
-	ld [hli], a
-	ld [hli], a
-	ld [hl], a
+	xor a ; TRAINERCARDSTATE_PAGE1_LOADGFX
+	ld [hli], a ; wJumptableIndex
+	ld [hli], a ; wTrainerCardBadgeFrameCounter
+	ld [hli], a ; wTrainerCardBadgeTileID
+	ld [hl], a  ; wTrainerCardBadgeAttributes
 	ret
 
 .RunJumptable: ; 2518e (9:518e)
@@ -72,6 +82,7 @@
 	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable: ; 2519d (9:519d)
+; entries correspond to TRAINERCARDSTATE_* constants
 	dw TrainerCard_Page1_LoadGFX
 	dw TrainerCard_Page1_Joypad
 	dw TrainerCard_Page2_LoadGFX
@@ -113,16 +124,15 @@
 	ret
 
 .pressed_right_a
-	ld a, $2
+	ld a, TRAINERCARDSTATE_PAGE2_LOADGFX
 	ld [wJumptableIndex], a
 	ret
 
-.KantoCheck:
-; unreferenced
+.Unreferenced_KantoCheck:
 	ld a, [wKantoBadges]
 	and a
 	ret z
-	ld a, $4
+	ld a, TRAINERCARDSTATE_PAGE3_LOADGFX
 	ld [wJumptableIndex], a
 	ret
 
@@ -136,11 +146,11 @@
 	call WaitBGMap
 	ld de, LeaderGFX
 	ld hl, vTiles2 tile $29
-	lb bc, BANK(LeaderGFX), $56
+	lb bc, BANK(LeaderGFX), 86
 	call Request2bpp
 	ld de, BadgeGFX
 	ld hl, vTiles0 tile $00
-	lb bc, BANK(BadgeGFX), $2c
+	lb bc, BANK(BadgeGFX), 44
 	call Request2bpp
 	call TrainerCard_Page2_3_InitObjectsAndStrings
 	call TrainerCard_IncrementJumptable
@@ -159,21 +169,20 @@
 	ret
 
 .d_left
-	ld a, $0
+	ld a, TRAINERCARDSTATE_PAGE1_LOADGFX
 	ld [wJumptableIndex], a
 	ret
 
-.KantoCheck:
-; unreferenced
+.Unreferenced_KantoCheck:
 	ld a, [wKantoBadges]
 	and a
 	ret z
-	ld a, $4
+	ld a, TRAINERCARDSTATE_PAGE3_LOADGFX
 	ld [wJumptableIndex], a
 	ret
 
 .Quit:
-	ld a, $6
+	ld a, TRAINERCARDSTATE_QUIT
 	ld [wJumptableIndex], a
 	ret
 
@@ -185,11 +194,11 @@
 	call WaitBGMap
 	ld de, LeaderGFX2
 	ld hl, vTiles2 tile $29
-	lb bc, BANK(LeaderGFX2), $56
+	lb bc, BANK(LeaderGFX2), 86
 	call Request2bpp
 	ld de, BadgeGFX2
 	ld hl, vTiles0 tile $00
-	lb bc, BANK(BadgeGFX2), $2c
+	lb bc, BANK(BadgeGFX2), 44
 	call Request2bpp
 	call TrainerCard_Page2_3_InitObjectsAndStrings
 	call TrainerCard_IncrementJumptable
@@ -208,12 +217,12 @@
 	ret
 
 .left
-	ld a, $2
+	ld a, TRAINERCARDSTATE_PAGE2_LOADGFX
 	ld [wJumptableIndex], a
 	ret
 
 .right
-	ld a, $0
+	ld a, TRAINERCARDSTATE_PAGE1_LOADGFX
 	ld [wJumptableIndex], a
 	ret
 
@@ -256,10 +265,10 @@
 	next "MONEY@"
 
 .ID_No: ; 252f9
-	db $27, $28, $ff ; ID NO
+	db $27, $28, -1 ; ID NO
 
 .HorizontalDivider: ; 252fc
-	db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________>
+	db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, -1 ; ____________>
 ; 2530a
 
 TrainerCard_Page1_PrintDexCaught_GameTime: ; 2530a (9:530a)
@@ -281,7 +290,7 @@
 	ld de, .StatusTilemap
 	call TrainerCardSetup_PlaceTilemapString
 	ld a, [wStatusFlags]
-	bit 0, a
+	bit 0, a ; ENGINE_POKEDEX
 	ret nz
 	hlcoord 1, 9
 	lb bc, 2, 17
@@ -296,7 +305,7 @@
 	db "  BADGES▶@"
 
 .StatusTilemap: ; 25366
-	db $29, $2a, $2b, $2c, $2d, $ff
+	db $29, $2a, $2b, $2c, $2d, -1
 ; 2536c
 
 TrainerCard_Page2_3_InitObjectsAndStrings: ; 2536c (9:536c)
@@ -324,7 +333,7 @@
 	dec c
 	jr nz, .loop2
 	xor a
-	ld [wcf64], a
+	ld [wTrainerCardBadgeFrameCounter], a
 	ld hl, TrainerCard_JohtoBadgesOAM
 	call TrainerCard_Page2_3_OAMUpdate
 	ret
@@ -332,13 +341,13 @@
 ; 253a2 (9:53a2)
 
 .BadgesTilemap: ; 253a2
-	db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES"
+	db $79, $7a, $7b, $7c, $7d, -1 ; "BADGES"
 ; 253a8
 
 TrainerCardSetup_PlaceTilemapString: ; 253a8 (9:53a8)
 .loop
 	ld a, [de]
-	cp $ff
+	cp -1
 	ret z
 	ld [hli], a
 	inc de
@@ -345,7 +354,7 @@
 	jr .loop
 
 TrainerCard_InitBorder: ; 253b0 (9:53b0)
-	ld e, 20
+	ld e, SCREEN_WIDTH
 .loop1
 	ld a, $23
 	ld [hli], a
@@ -354,7 +363,7 @@
 
 	ld a, $23
 	ld [hli], a
-	ld e, 17
+	ld e, SCREEN_HEIGHT - 1
 	ld a, " "
 .loop2
 	ld [hli], a
@@ -369,7 +378,7 @@
 	ld a, $23
 	ld [hli], a
 
-	ld e, 18
+	ld e, SCREEN_HEIGHT
 	ld a, " "
 .loop4
 	ld [hli], a
@@ -386,7 +395,7 @@
 	ld a, $24
 	ld [hli], a
 
-	ld e, 17
+	ld e, SCREEN_HEIGHT - 1
 	ld a, " "
 .loop5
 	ld [hli], a
@@ -394,7 +403,7 @@
 	jr nz, .loop5
 	ld a, $23
 	ld [hli], a
-	ld e, 20
+	ld e, SCREEN_WIDTH
 .loop6
 	ld a, $23
 	ld [hli], a
@@ -453,12 +462,12 @@
 
 TrainerCard_Page2_3_AnimateBadges: ; 25438 (9:5438)
 	ld a, [hVBlankCounter]
-	and $7
+	and %111
 	ret nz
-	ld a, [wcf64]
+	ld a, [wTrainerCardBadgeFrameCounter]
 	inc a
-	and $7
-	ld [wcf64], a
+	and %111
+	ld [wTrainerCardBadgeFrameCounter], a
 	jr TrainerCard_Page2_3_OAMUpdate
 
 TrainerCard_Page2_3_OAMUpdate: ; 25448 (9:5448)
@@ -470,8 +479,8 @@
 	ld d, a
 	ld a, [de]
 	ld c, a
-	ld de, Sprites
-	ld b, 8
+	ld de, Sprite01
+	ld b, NUM_JOHTO_BADGES
 .loop
 	srl c
 	push bc
@@ -482,8 +491,8 @@
 	ld a, [hli] ; x
 	ld c, a
 	ld a, [hli] ; pal
-	ld [wcf66], a
-	ld a, [wcf64]
+	ld [wTrainerCardBadgeAttributes], a
+	ld a, [wTrainerCardBadgeFrameCounter]
 	add l
 	ld l, a
 	ld a, 0
@@ -490,7 +499,7 @@
 	adc h
 	ld h, a
 	ld a, [hl]
-	ld [wcf65], a
+	ld [wTrainerCardBadgeTileID], a
 	call .PrepOAM
 	pop hl
 .skip_badge
@@ -502,8 +511,8 @@
 	ret
 
 .PrepOAM: ; 2547b (9:547b)
-	ld a, [wcf65]
-	and $80
+	ld a, [wTrainerCardBadgeTileID]
+	and 1 << 7
 	jr nz, .xflip
 	ld hl, .facing1
 	jr .loop2
@@ -512,27 +521,27 @@
 	ld hl, .facing2
 .loop2
 	ld a, [hli]
-	cp $ff
+	cp -1
 	ret z
 	add b
-	ld [de], a
+	ld [de], a ; y
 	inc de
 
 	ld a, [hli]
 	add c
-	ld [de], a
+	ld [de], a ; x
 	inc de
 
-	ld a, [wcf65]
-	and $7f
+	ld a, [wTrainerCardBadgeTileID]
+	and $ff ^ (1 << 7)
 	add [hl]
-	ld [de], a
+	ld [de], a ; tile id
 	inc hl
 	inc de
 
-	ld a, [wcf66]
+	ld a, [wTrainerCardBadgeAttributes]
 	add [hl]
-	ld [de], a
+	ld [de], a ; attributes
 	inc hl
 	inc de
 	jr .loop2
@@ -540,18 +549,17 @@
 ; 254a7 (9:54a7)
 
 .facing1 ; 254a7
-	; y, x, tile, OAM attributes
-	db 0, 0, 0, 0
-	db 0, 8, 1, 0
-	db 8, 0, 2, 0
-	db 8, 8, 3, 0
+	dsprite  0,  0,  0,  0, $00, 0
+	dsprite  0,  0,  1,  0, $01, 0
+	dsprite  1,  0,  0,  0, $02, 0
+	dsprite  1,  0,  1,  0, $03, 0
 	db -1
 
 .facing2 ; 254b8
-	db 0, 0, 1, X_FLIP
-	db 0, 8, 0, X_FLIP
-	db 8, 0, 3, X_FLIP
-	db 8, 8, 2, X_FLIP
+	dsprite  0,  0,  0,  0, $01, 0 | X_FLIP
+	dsprite  0,  0,  1,  0, $00, 0 | X_FLIP
+	dsprite  1,  0,  0,  0, $03, 0 | X_FLIP
+	dsprite  1,  0,  1,  0, $02, 0 | X_FLIP
 	db -1
 
 TrainerCard_JohtoBadgesOAM: ; 254c9
@@ -565,44 +573,44 @@
 
 	; Zephyrbadge
 	db $68, $18, 0
-	db $00, $20, $24, $20 | $80
-	db $00, $20, $24, $20 | $80
+	db $00, $20, $24, $20 | (1 << 7)
+	db $00, $20, $24, $20 | (1 << 7)
 
 	; Hivebadge
 	db $68, $38, 0
-	db $04, $20, $24, $20 | $80
-	db $04, $20, $24, $20 | $80
+	db $04, $20, $24, $20 | (1 << 7)
+	db $04, $20, $24, $20 | (1 << 7)
 
 	; Plainbadge
 	db $68, $58, 0
-	db $08, $20, $24, $20 | $80
-	db $08, $20, $24, $20 | $80
+	db $08, $20, $24, $20 | (1 << 7)
+	db $08, $20, $24, $20 | (1 << 7)
 
 	; Fogbadge
 	db $68, $78, 0
-	db $0c, $20, $24, $20 | $80
-	db $0c, $20, $24, $20 | $80
+	db $0c, $20, $24, $20 | (1 << 7)
+	db $0c, $20, $24, $20 | (1 << 7)
 
 	; Mineralbadge
 	db $80, $38, 0
-	db $10, $20, $24, $20 | $80
-	db $10, $20, $24, $20 | $80
+	db $10, $20, $24, $20 | (1 << 7)
+	db $10, $20, $24, $20 | (1 << 7)
 
 	; Stormbadge
 	db $80, $18, 0
-	db $14, $20, $24, $20 | $80
-	db $14, $20, $24, $20 | $80
+	db $14, $20, $24, $20 | (1 << 7)
+	db $14, $20, $24, $20 | (1 << 7)
 
 	; Glacierbadge
 	db $80, $58, 0
-	db $18, $20, $24, $20 | $80
-	db $18, $20, $24, $20 | $80
+	db $18, $20, $24, $20 | (1 << 7)
+	db $18, $20, $24, $20 | (1 << 7)
 
 	; Risingbadge
 	; X-flips on alternate cycles.
 	db $80, $78, 0
-	db $1c, $20, $24, $20 | $80
-	db $1c | $80, $20, $24, $20 | $80
+	db $1c,            $20, $24, $20 | (1 << 7)
+	db $1c | (1 << 7), $20, $24, $20 | (1 << 7)
 ; 25523
 
 CardStatusGFX: INCBIN "gfx/trainer_card/card_status.2bpp"
--- a/engine/types.asm
+++ b/engine/types.asm
@@ -35,7 +35,7 @@
 	ld [hl], a
 	inc bc
 	add hl, bc
-	ld bc, 5
+	ld bc, NAME_LENGTH_JAPANESE - 1
 	jp ByteFill
 ; 5093a
 
@@ -91,11 +91,9 @@
 	ld h, [hl]
 	ld l, a
 	ld de, StringBuffer1
-	ld bc, 13
+	ld bc, MOVE_NAME_LENGTH
 	jp CopyBytes
 ; 5097b
 
 
-INCLUDE "data/type_names.asm"
-
-; 50a28
+INCLUDE "data/types/names.asm"
--- a/engine/unown_dex.asm
+++ /dev/null
@@ -1,52 +1,0 @@
-UpdateUnownDex: ; fba18
-	ld a, [UnownLetter]
-	ld c, a
-	ld b, NUM_UNOWN
-	ld hl, UnownDex
-.loop
-	ld a, [hli]
-	and a
-	jr z, .done
-	cp c
-	ret z
-	dec b
-	jr nz, .loop
-	ret
-
-.done
-	dec hl
-	ld [hl], c
-	ret
-; fba2e
-
-PrintUnownWord: ; fba2e (3e:7a2e)
-	hlcoord 4, 15
-	ld bc, 12
-	ld a, " "
-	call ByteFill
-	ld a, [wDexCurrentUnownIndex]
-	ld e, a
-	ld d, 0
-	ld hl, UnownDex
-	add hl, de
-	ld a, [hl]
-	ld e, a
-	ld d, 0
-	ld hl, UnownWords
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	hlcoord 4, 15
-.loop
-	ld a, [de]
-	cp -1
-	ret z
-	inc de
-	ld [hli], a
-	jr .loop
-; fba5a (3e:7a5a)
-
-
-INCLUDE "data/unown_words.asm"
--- a/engine/unown_puzzle.asm
+++ b/engine/unown_puzzle.asm
@@ -157,7 +157,7 @@
 	ld a, $f3
 	ld [hli], a
 	ld bc, 10
-	ld a, $ef
+	ld a, PUZZLE_VOID
 	call ByteFill
 	hlcoord 15, 16
 	ld a, $f3
@@ -218,7 +218,7 @@
 	ld a, [hl]
 	cp 1 puzcoord 0
 	ret c
-	sub $6
+	sub 6
 	ld [hl], a
 	jr .done_joypad
 
@@ -235,7 +235,7 @@
 	ret z
 	cp 5 puzcoord 0
 	ret nc
-	add $6
+	add 6
 	ld [hl], a
 	jr .done_joypad
 
@@ -549,51 +549,51 @@
 	ld hl, .OAM_NotHoldingPiece
 
 .load
-	ld de, Sprites
+	ld de, Sprite01
 .loop
 	ld a, [hli]
 	cp -1
 	ret z
 	add b
-	ld [de], a
+	ld [de], a ; y
 	inc de
 	ld a, [hli]
 	add c
-	ld [de], a
+	ld [de], a ; x
 	inc de
 	ld a, [wd002]
 	add [hl]
-	ld [de], a
+	ld [de], a ; tile id
 	inc hl
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; attributes
 	inc de
 	jr .loop
 ; e150f
 
 .OAM_HoldingPiece: ; e150f
-	dsprite -1, -4, -1, -4, $00, $00
-	dsprite -1, -4,  0, -4, $01, $00
-	dsprite -1, -4,  0,  4, $02, $00
-	dsprite  0, -4, -1, -4, $0c, $00
-	dsprite  0, -4,  0, -4, $0d, $00
-	dsprite  0, -4,  0,  4, $0e, $00
-	dsprite  0,  4, -1, -4, $18, $00
-	dsprite  0,  4,  0, -4, $19, $00
-	dsprite  0,  4,  0,  4, $1a, $00
+	dsprite -1, -4, -1, -4, $00, 0
+	dsprite -1, -4,  0, -4, $01, 0
+	dsprite -1, -4,  0,  4, $02, 0
+	dsprite  0, -4, -1, -4, $0c, 0
+	dsprite  0, -4,  0, -4, $0d, 0
+	dsprite  0, -4,  0,  4, $0e, 0
+	dsprite  0,  4, -1, -4, $18, 0
+	dsprite  0,  4,  0, -4, $19, 0
+	dsprite  0,  4,  0,  4, $1a, 0
 	db -1
 
 .OAM_NotHoldingPiece: ; e1534
-	dsprite -1, -4, -1, -4, $00, $00
-	dsprite -1, -4,  0, -4, $01, $00
-	dsprite -1, -4,  0,  4, $00, $20 ; xflip
-	dsprite  0, -4, -1, -4, $02, $00
-	dsprite  0, -4,  0, -4, $03, $00
-	dsprite  0, -4,  0,  4, $02, $20 ; xflip
-	dsprite  0,  4, -1, -4, $00, $40 ; yflip
-	dsprite  0,  4,  0, -4, $01, $40 ; yflip
-	dsprite  0,  4,  0,  4, $00, $60 ; xflip, yflip
+	dsprite -1, -4, -1, -4, $00, 0
+	dsprite -1, -4,  0, -4, $01, 0
+	dsprite -1, -4,  0,  4, $00, 0 | X_FLIP
+	dsprite  0, -4, -1, -4, $02, 0
+	dsprite  0, -4,  0, -4, $03, 0
+	dsprite  0, -4,  0,  4, $02, 0 | X_FLIP
+	dsprite  0,  4, -1, -4, $00, 0 | Y_FLIP
+	dsprite  0,  4,  0, -4, $01, 0 | Y_FLIP
+	dsprite  0,  4,  0,  4, $00, 0 | X_FLIP | Y_FLIP
 	db -1
 
 UnownPuzzleCoordData: ; e1559
@@ -763,7 +763,7 @@
 ; e16c7
 
 UnownPuzzle_AddPuzzlePieceBorders: ; e16c7
-	ld hl, GFXHeaders
+	ld hl, PuzzlePieceBorderData
 	ld a, 8
 .loop
 	push af
@@ -819,7 +819,7 @@
 	ret
 ; e1703
 
-GFXHeaders: ; e1703
+PuzzlePieceBorderData: ; e1703
 	dw .TileBordersGFX + 0 tiles, vTiles0 tile $00
 	dw .TileBordersGFX + 1 tiles, vTiles0 tile $01
 	dw .TileBordersGFX + 2 tiles, vTiles0 tile $02
@@ -835,7 +835,7 @@
 
 LoadUnownPuzzlePiecesGFX: ; e17a3
 	ld a, [ScriptVar]
-	and 3
+	maskbits NUM_UNOWN_PUZZLES
 	ld e, a
 	ld d, 0
 	ld hl, .LZPointers
@@ -851,6 +851,7 @@
 ; e17bd
 
 .LZPointers: ; e17bd
+; entries correspond to UNOWNPUZZLE_* constants
 	dw KabutoPuzzleLZ
 	dw OmanytePuzzleLZ
 	dw AerodactylPuzzleLZ
--- a/engine/unused_title.asm
+++ b/engine/unused_title.asm
@@ -32,7 +32,7 @@
 
 	ld hl, UnusedTitleBG_Tilemap
 	debgcoord 0, 0
-	ld bc, 32 * 32
+	ld bc, BG_MAP_WIDTH * BG_MAP_HEIGHT
 .copy
 	ld a, 0
 	ld [rVBK], a
@@ -49,8 +49,8 @@
 	jr nz, .copy
 
 	ld hl, UnusedTitleFG_OAM
-	ld de, Sprites
-	ld bc, $a0
+	ld de, Sprite01
+	ld bc, SPRITEOAMSTRUCT_LENGTH * NUM_SPRITE_OAM_STRUCTS
 	call CopyBytes
 
 	call EnableLCD
@@ -63,7 +63,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $5
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	ld hl, UnusedTitleBG_Palettes
@@ -103,60 +103,12 @@
 ; 10d0b1
 
 UnusedTitleBG_Tilemap: ; 10d0b1
-; 32x32 (tile, attributes)
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $01,$00, $02,$01, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $03,$00, $04,$00, $05,$01, $06,$01, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $07,$05, $08,$05, $09,$05, $0a,$05, $0b,$00, $0c,$00, $0d,$00, $0e,$00, $0f,$01, $10,$01, $11,$01, $12,$01, $13,$05, $14,$05, $15,$05, $16,$05, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $17,$04, $18,$04, $19,$04, $1a,$04, $1b,$00, $1c,$00, $1d,$02, $1e,$02, $1f,$07, $20,$07, $21,$01, $22,$01, $23,$04, $24,$04, $25,$04, $26,$04, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $27,$04, $28,$04, $29,$04, $2a,$04, $2b,$00, $2c,$00, $2d,$03, $2e,$01, $2f,$01, $30,$01, $31,$01, $32,$01, $33,$04, $34,$04, $35,$04, $36,$04, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $37,$04, $38,$04, $39,$04, $3a,$04, $3b,$00, $3c,$00, $3d,$01, $00,$00, $00,$00, $3e,$07, $3f,$01, $40,$01, $41,$04, $42,$04, $43,$04, $44,$04, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $45,$04, $46,$04, $47,$04, $48,$04, $49,$00, $3c,$00, $4a,$01, $00,$00, $00,$00, $4b,$07, $3f,$01, $4c,$01, $4d,$06, $4e,$06, $4f,$06, $50,$06, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $51,$04, $52,$06, $53,$06, $54,$06, $55,$00, $3c,$00, $56,$01, $00,$00, $00,$00, $57,$07, $58,$01, $59,$01, $5a,$06, $5b,$06, $5c,$06, $5d,$06, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $5e,$06, $5f,$06, $60,$06, $61,$06, $62,$00, $63,$00, $64,$03, $65,$01, $66,$01, $67,$07, $68,$01, $69,$01, $26,$04, $6a,$06, $26,$04, $26,$04, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $6b,$00, $6c,$05, $6d,$05, $6e,$05, $6f,$00, $70,$02, $71,$02, $72,$01, $73,$00, $74,$02, $75,$01, $76,$01, $77,$05, $78,$05, $79,$05, $6b,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $7a,$00, $7b,$00, $7c,$00, $7d,$00, $0f,$01, $7e,$01, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $a2,$00, $80,$00, $81,$00, $82,$00, $83,$00, $84,$07, $85,$01, $86,$01, $87,$01, $88,$01, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $89,$00, $8a,$00, $8b,$00, $8c,$07, $8d,$01, $8e,$01, $8f,$01, $90,$01, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $91,$01, $92,$01, $93,$01, $94,$01, $95,$01, $00,$00, $00,$00, $00,$00, $96,$05, $97,$05, $98,$05, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $99,$05, $9a,$05, $9b,$05, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $9c,$05, $9d,$05, $9e,$05, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $9f,$05, $a0,$05, $a1,$05, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $6b,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
-	db $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00, $00,$00
+; 32x32 (alternating tiles and attributes)
+INCBIN "gfx/title/old_bg.tilemap"
 ; 10d8b1
 
 UnusedTitleBG_Palettes: ; 10d8b1
-INCLUDE "data/palettes/unused_title/bg.pal"
-
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-
-	RGB 31, 31, 31
-	RGB 20, 04, 20
-	RGB 16, 08, 16
-	RGB 24, 00, 24
-
-rept 54
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-endr
+INCLUDE "gfx/title/old_bg.pal"
 ; 10dab1
 
 UnusedTitleFG_GFX: ; 10dab1
@@ -164,26 +116,51 @@
 ; 10eab1
 
 UnusedTitleFG_Palettes: ; 10eab1
-INCLUDE "data/palettes/unused_title/ob.pal"
+INCLUDE "gfx/title/old_fg.pal"
 ; 10ecb1
 
 UnusedTitleFG_OAM: ; 10ecb1
-	db $18, $38, $00, $01,  $18, $40, $02, $01,  $18, $48, $04, $01,  $18, $50, $06, $01
-	db $18, $58, $08, $01,  $18, $60, $0a, $01,  $18, $68, $0c, $01,  $18, $70, $0e, $01
-
-	db $28, $38, $10, $00,  $28, $40, $12, $00,  $28, $48, $14, $00,  $28, $50, $16, $00
-	db $28, $58, $18, $00,  $28, $60, $1a, $00,  $28, $68, $1c, $00,  $28, $70, $1e, $00
-
-	db $38, $38, $20, $00,  $38, $40, $22, $00,  $38, $48, $24, $00,  $38, $50, $26, $00
-	db $38, $58, $28, $00,  $38, $60, $2a, $00,  $38, $68, $2c, $00,  $38, $70, $2e, $00
-
-	db $48, $38, $30, $02,  $48, $40, $32, $02,  $48, $48, $34, $02,  $48, $50, $36, $02
-	db $48, $58, $38, $02,  $48, $60, $3a, $02,  $48, $68, $3c, $02,  $48, $70, $3e, $02
-
-	db $58, $38, $40, $01,  $58, $40, $42, $01,  $58, $48, $44, $01,  $58, $50, $46, $01
-	db $58, $58, $48, $01,  $58, $60, $4a, $01,  $58, $68, $4c, $01,  $58, $70, $4e, $01
+	dsprite  3,  0,  7,  0, $00, 1
+	dsprite  3,  0,  8,  0, $02, 1
+	dsprite  3,  0,  9,  0, $04, 1
+	dsprite  3,  0, 10,  0, $06, 1
+	dsprite  3,  0, 11,  0, $08, 1
+	dsprite  3,  0, 12,  0, $0a, 1
+	dsprite  3,  0, 13,  0, $0c, 1
+	dsprite  3,  0, 14,  0, $0e, 1
+	dsprite  5,  0,  7,  0, $10, 0
+	dsprite  5,  0,  8,  0, $12, 0
+	dsprite  5,  0,  9,  0, $14, 0
+	dsprite  5,  0, 10,  0, $16, 0
+	dsprite  5,  0, 11,  0, $18, 0
+	dsprite  5,  0, 12,  0, $1a, 0
+	dsprite  5,  0, 13,  0, $1c, 0
+	dsprite  5,  0, 14,  0, $1e, 0
+	dsprite  7,  0,  7,  0, $20, 0
+	dsprite  7,  0,  8,  0, $22, 0
+	dsprite  7,  0,  9,  0, $24, 0
+	dsprite  7,  0, 10,  0, $26, 0
+	dsprite  7,  0, 11,  0, $28, 0
+	dsprite  7,  0, 12,  0, $2a, 0
+	dsprite  7,  0, 13,  0, $2c, 0
+	dsprite  7,  0, 14,  0, $2e, 0
+	dsprite  9,  0,  7,  0, $30, 2
+	dsprite  9,  0,  8,  0, $32, 2
+	dsprite  9,  0,  9,  0, $34, 2
+	dsprite  9,  0, 10,  0, $36, 2
+	dsprite  9,  0, 11,  0, $38, 2
+	dsprite  9,  0, 12,  0, $3a, 2
+	dsprite  9,  0, 13,  0, $3c, 2
+	dsprite  9,  0, 14,  0, $3e, 2
+	dsprite 11,  0,  7,  0, $40, 1
+	dsprite 11,  0,  8,  0, $42, 1
+	dsprite 11,  0,  9,  0, $44, 1
+	dsprite 11,  0, 10,  0, $46, 1
+	dsprite 11,  0, 11,  0, $48, 1
+	dsprite 11,  0, 12,  0, $4a, 1
+	dsprite 11,  0, 13,  0, $4c, 1
+	dsprite 11,  0, 14,  0, $4e, 1
 ; 10ed51
-
 
 Function10ed51: ; 10ed51
 	call _TitleScreen
--- a/engine/variables.asm
+++ b/engine/variables.asm
@@ -35,9 +35,10 @@
 ; 80671 (20:4671)
 
 .VarActionTable: ; 80671
-; RETVAR_STRBUF2: copy [de] to StringBuffer2
-; RETVAR_ADDR_DE: return address in de
-; RETVAR_EXECUTE: call function
+; entries correspond to VAR_* constants
+	; RETVAR_STRBUF2: copy [de] to StringBuffer2
+	; RETVAR_ADDR_DE: return address in de
+	; RETVAR_EXECUTE: call function
 	dwb StringBuffer2,                  RETVAR_STRBUF2
 	dwb PartyCount,                     RETVAR_STRBUF2
 	dwb .BattleResult,                  RETVAR_EXECUTE
@@ -125,7 +126,7 @@
 	ret z
 	inc b
 	ld a, b
-	cp 26
+	cp NUM_UNOWN
 	jr c, .loop
 	ret
 ; 80715
--- a/engine/warp_connection.asm
+++ b/engine/warp_connection.asm
@@ -11,7 +11,7 @@
 	farcall ClearCmdQueue
 	ld a, MAPCALLBACK_CMDQUEUE
 	call RunMapCallback
-	call GetMapHeaderTimeOfDayNybble
+	call GetMapTimeOfDay
 	ld [wMapTimeOfDay], a
 	ret
 
@@ -174,8 +174,11 @@
 	call GetAnyMapEnvironment
 	call CheckIndoorMap
 	ret nz
+
+; MOUNT_MOON_SQUARE and TIN_TOWER_ROOF are outdoor maps within indoor maps.
+; Dig and Escape Rope should not take you to them.
 	ld a, [wPrevMapGroup]
-	cp GROUP_MOUNT_MOON_SQUARE
+	cp GROUP_MOUNT_MOON_SQUARE ; GROUP_TIN_TOWER_ROOF
 	jr nz, .not_mt_moon_or_tin_tower
 	ld a, [wPrevMapNumber]
 	cp MAP_MOUNT_MOON_SQUARE
@@ -183,6 +186,7 @@
 	cp MAP_TIN_TOWER_ROOF
 	ret z
 .not_mt_moon_or_tin_tower
+
 	ld a, [wPrevWarp]
 	ld [wDigWarpNumber], a
 	ld a, [wPrevMapGroup]
@@ -206,6 +210,8 @@
 	ld b, a
 	ld a, [wNextMapNumber]
 	ld c, a
+
+; Respawn in Pokémon Centers.
 	call GetAnyMapTileset
 	ld a, c
 	cp TILESET_POKECENTER
@@ -214,6 +220,7 @@
 	jr z, .pokecenter_pokecom
 	ret
 .pokecenter_pokecom
+
 	ld a, [wPrevMapGroup]
 	ld [wLastSpawnMapGroup], a
 	ld a, [wPrevMapNumber]
@@ -254,7 +261,7 @@
 	pop af
 	ld [rVBK], a
 
-	ld a, "<BLACK>"
+	ld a, "■"
 	ld bc, vBGMap1 - vBGMap0
 	hlbgcoord 0, 0
 	call ByteFill
@@ -298,12 +305,12 @@
 	ld [hMapAnims], a
 	xor a
 	ld [hTileAnimFrame], a
-	farcall RefreshSprites
+	farcall Special_RefreshSprites
 	call LoadFontsExtra
 	farcall LoadOverworldFont
 	ret
 
-LoadMapPalettes: ; 1047eb
+Special_LoadMapPalettes: ; 1047eb
 	ld b, SCGB_MAPPALS
 	jp GetSGBLayout
 ; 1047f0
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -212,7 +212,7 @@
 GetMapEncounterRate: ; 2a111
 	ld hl, wMornEncounterRate
 	call CheckOnWater
-	ld a, 3
+	ld a, wWaterEncounterRate - wMornEncounterRate
 	jr z, .ok
 	ld a, [TimeOfDay]
 .ok
@@ -508,7 +508,7 @@
 ; 2a2a0
 
 
-InitRoamMons: ; 2a2a0
+Special_InitRoamMons: ; 2a2a0
 ; initialize wRoamMon structs
 
 ; species
@@ -571,7 +571,7 @@
 	ld hl, wRoamMon1MapGroup
 	ld c, a
 	ld b, 0
-	ld a, 7 ; length of the RoamMon struct
+	ld a, 7 ; length of the roam_struct
 	call AddNTimes
 	ld a, d
 	cp [hl]
@@ -678,9 +678,9 @@
 	ld l, e
 ; Choose which map to warp to.
 	call Random
-	and $1f ; 1/8n chance it moves to a completely random map, where n is the number of roaming connections from the current map.
+	and %00011111 ; 1/8n chance it moves to a completely random map, where n is the number of roaming connections from the current map.
 	jr z, JumpRoamMon
-	and 3
+	and %11
 	cp [hl]
 	jr nc, .update_loop ; invalid index, try again
 	inc hl
@@ -739,11 +739,11 @@
 JumpRoamMon: ; 2a3cd
 .loop
 	ld hl, RoamMaps
-.innerloop1 ; This loop is completely unnecessary.
-	call Random ; Choose a random number
-	and $f ; Take the lower nybble only.  This gives a number between 0 and 15.
-	cp $10 ; If the number is greater than or equal to 16, loop back and try again.
-	jr nc, .innerloop1 ; I'm sure you can guess why this check is bogus.
+.innerloop1                   ; This loop happens to be unnecessary.
+	call Random               ; Choose a random number.
+	maskbits NUM_ROAMMON_MAPS ; Mask the number to limit it between 0 and 15.
+	cp NUM_ROAMMON_MAPS       ; If the number is not less than 16, try again.
+	jr nc, .innerloop1        ; I'm sure you can guess why this check is bogus.
 	inc a
 	ld b, a
 .innerloop2 ; Loop to get hl to the address of the chosen roam map.
@@ -804,7 +804,7 @@
 
 ; Finds a rare wild Pokemon in the route of the trainer calling, then checks if it's been Seen already.
 ; The trainer will then tell you about the Pokemon if you haven't seen it.
-RandomUnseenWildMon: ; 2a4ab
+Special_RandomUnseenWildMon: ; 2a4ab
 	farcall GetCallerLocation
 	ld d, b
 	ld e, c
@@ -821,11 +821,11 @@
 	ld bc, 5 + 4 * 2 ; Location of the level of the 5th wild Pokemon in that map
 	add hl, bc
 	ld a, [TimeOfDay]
-	ld bc, 7 * 2
+	ld bc, NUM_GRASSMON * 2
 	call AddNTimes
 .randloop1
 	call Random
-	and $3
+	and %11
 	jr z, .randloop1
 	dec a
 	ld c, a
@@ -877,7 +877,7 @@
 	db "@"
 ; 0x2a51f
 
-RandomPhoneWildMon: ; 2a51f
+Special_RandomPhoneWildMon: ; 2a51f
 	farcall GetCallerLocation
 	ld d, b
 	ld e, c
@@ -893,7 +893,7 @@
 	add hl, bc
 	ld a, [TimeOfDay]
 	inc a
-	ld bc, 7 * 2
+	ld bc, NUM_GRASSMON * 2
 .loop
 	dec a
 	jr z, .done
@@ -902,7 +902,7 @@
 
 .done
 	call Random
-	and $3
+	and %11
 	ld c, a
 	ld b, $0
 	add hl, bc
@@ -913,11 +913,11 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, StringBuffer4
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	jp CopyBytes
 ; 2a567
 
-RandomPhoneMon: ; 2a567
+Special_RandomPhoneMon: ; 2a567
 ; Get a random monster owned by the trainer who's calling.
 	farcall GetCallerLocation
 	ld hl, TrainerGroups
@@ -952,16 +952,17 @@
 	ld a, BANK(Trainers)
 	call GetFarByte
 	inc hl
-	ld bc, 2
-	cp 0
+	ld bc, 2 ; level, species
+	cp TRAINERTYPE_NORMAL
 	jr z, .got_mon_length
-	ld bc, 2 + NUM_MOVES
-	cp 1
+	ld bc, 2 + NUM_MOVES ; level, species, moves
+	cp TRAINERTYPE_MOVES
 	jr z, .got_mon_length
-	ld bc, 2 + 1
-	cp 2
+	ld bc, 2 + 1 ; level, species, item
+	cp TRAINERTYPE_ITEM
 	jr z, .got_mon_length
-	ld bc, 2 + 1 + NUM_MOVES
+	; TRAINERTYPE_ITEM_MOVES
+	ld bc, 2 + 1 + NUM_MOVES ; level, species, item, moves
 .got_mon_length
 
 	ld e, 0
@@ -977,7 +978,7 @@
 
 .rand
 	call Random
-	and 7
+	maskbits PARTY_LENGTH
 	cp e
 	jr nc, .rand
 
@@ -996,7 +997,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, StringBuffer4
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	jp CopyBytes
 ; 2a5e9
 
--- /dev/null
+++ b/gfx/battle/exp_bar.pal
@@ -1,0 +1,3 @@
+; blue
+	RGB 30, 26, 15
+	RGB 04, 17, 31
--- /dev/null
+++ b/gfx/battle/hp_bar.pal
@@ -1,0 +1,9 @@
+; green
+	RGB 30, 26, 15
+	RGB 00, 23, 00
+; yellow
+	RGB 30, 26, 15
+	RGB 31, 21, 00
+; red
+	RGB 30, 26, 15
+	RGB 31, 00, 00
--- /dev/null
+++ b/gfx/battle_anims/battle_anims.pal
@@ -1,0 +1,30 @@
+; gray
+	RGB 31, 31, 31
+	RGB 25, 25, 25
+	RGB 13, 13, 13
+	RGB 00, 00, 00
+; yellow
+	RGB 31, 31, 31
+	RGB 31, 31, 07
+	RGB 31, 16, 01
+	RGB 00, 00, 00
+; red
+	RGB 31, 31, 31
+	RGB 31, 19, 24
+	RGB 30, 10, 06
+	RGB 00, 00, 00
+; green
+	RGB 31, 31, 31
+	RGB 12, 25, 01
+	RGB 05, 14, 00
+	RGB 00, 00, 00
+; blue
+	RGB 31, 31, 31
+	RGB 08, 12, 31
+	RGB 01, 04, 31
+	RGB 00, 00, 00
+; brown
+	RGB 31, 31, 31
+	RGB 24, 18, 07
+	RGB 20, 15, 03
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/card_flip/card_flip.pal
@@ -1,0 +1,44 @@
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 29, 25, 00
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 13, 30
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 08, 17, 30
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 08, 31, 08
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 17, 07, 31
+	RGB 06, 19, 08
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 00, 00
+	RGB 31, 00, 00
--- /dev/null
+++ b/gfx/credits/credits.pal
@@ -1,0 +1,19 @@
+; pichu
+	RGB 31,00,31, 31,25,00, 11,14,31, 07,07,07
+	RGB 31,05,05, 11,14,31, 11,14,31, 31,31,31
+	RGB 31,05,05, 00,00,00, 31,31,31, 31,31,31
+
+; smoochum
+	RGB 31,31,31, 31,27,00, 26,06,31, 07,07,07
+	RGB 03,13,31, 20,00,24, 26,06,31, 31,31,31
+	RGB 03,13,31, 00,00,00, 31,31,31, 31,31,31
+
+; ditto
+	RGB 31,31,31, 23,12,28, 31,22,00, 07,07,07
+	RGB 03,20,00, 31,22,00, 31,22,00, 31,31,31
+	RGB 03,20,00, 00,00,00, 31,31,31, 31,31,31
+
+; igglybuff
+	RGB 31,31,31, 31,10,31, 31,00,09, 07,07,07
+	RGB 31,14,00, 31,00,09, 31,00,09, 31,31,31
+	RGB 31,14,00, 31,31,31, 31,31,31, 31,31,31
binary files a/gfx/credits/pichu.png b/gfx/credits/pichu.png differ
binary files a/gfx/credits/theend.png b/gfx/credits/theend.png differ
--- /dev/null
+++ b/gfx/debug/bg.pal
@@ -1,0 +1,43 @@
+	; white
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	; red
+	RGB 31, 00, 00
+	RGB 31, 00, 00
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+
+	; green
+	RGB 00, 31, 00
+	RGB 00, 31, 00
+	RGB 00, 31, 00
+	RGB 00, 00, 00
+
+	; blue
+	RGB 00, 00, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/debug/ob.pal
@@ -1,0 +1,42 @@
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+	; red
+	RGB 31, 31, 31
+	RGB 31, 00, 00
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+
+	; green
+	RGB 31, 31, 31
+	RGB 00, 31, 00
+	RGB 00, 31, 00
+	RGB 00, 00, 00
+
+	; blue
+	RGB 31, 31, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/diploma/diploma.pal
@@ -1,0 +1,39 @@
+	RGB 27, 31, 27
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 07, 06
+	RGB 20, 02, 03
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 10, 31, 09
+	RGB 04, 14, 01
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 08, 12, 31
+	RGB 01, 04, 31
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 31, 07
+	RGB 31, 16, 01
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 22, 16, 08
+	RGB 13, 07, 01
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 15, 31, 31
+	RGB 05, 17, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 11, 11, 19
+	RGB 07, 07, 12
+	RGB 00, 00, 00
--- a/gfx/font.asm
+++ b/gfx/font.asm
@@ -23,15 +23,6 @@
 
 StatsScreenPageTilesGFX: ; f89b0
 INCBIN "gfx/stats/stats_tiles.2bpp"
-; f8a90
-
-ShinyIconGFX: ; f8a90
-; also part of StatsScreenPageTilesGFX
-INCBIN "gfx/stats/shiny.2bpp"
-
-ExpBarEndsGFX: ; f8aa0
-; not referenced on its own, but part of StatsScreenPageTilesGFX
-INCBIN "gfx/stats/exp_bar_ends.2bpp"
 ; f8ac0
 
 EnemyHPBarBorderGFX: ; f8ac0
@@ -54,8 +45,8 @@
 INCBIN "gfx/font/unused_weekday_kanji.2bpp"
 ; f8f24
 
-OverworldPhoneIconGFX: ; f8f24
-INCBIN "gfx/font/overworld_phone_icon.2bpp"
+PokegearPhoneIconGFX: ; f8f24
+INCBIN "gfx/font/phone_icon.2bpp"
 ; f8f34
 
 UnusedBoldFontGFX: ; unused bold letters + unown chars
@@ -66,7 +57,15 @@
 INCBIN "gfx/frames/space.1bpp"
 ; f9214
 
-MobilePhoneTilesGFX: ; f9214
+FontsExtra_SolidBlackGFX: ; f9214
+INCBIN "gfx/font/black.1bpp"
+; f921c
+
+UnusedUpArrowGFX: ; unused up arrow + whitespace
+INCBIN "gfx/font/unused_up_arrow.1bpp"
+; f9234
+
+MobilePhoneTilesGFX: ; f9234
 INCBIN "gfx/mobile/phone_tiles.2bpp"
 ; f9344
 
@@ -81,158 +80,3 @@
 Footprints: ; f9434
 INCLUDE "gfx/footprints.asm"
 ; fb434
-
-; This and the following two functions are unreferenced.
-; Debug, perhaps?
-Unknown_fb434:
-	db 0
-
-Functionfb435: ; 4b435
-	ld a, [Unknown_fb434]
-	and a
-	jp nz, Get1bpp_2
-	jp Get1bpp
-; fb43f
-
-Functionfb43f: ; fb43f
-	ld a, [Unknown_fb434]
-	and a
-	jp nz, Get2bpp_2
-	jp Get2bpp
-; End unreferenced block
-; fb449
-
-_LoadStandardFont:: ; fb449
-	ld de, Font
-	ld hl, vTiles1
-	lb bc, BANK(Font), $80
-	ld a, [rLCDC]
-	bit rLCDC_ENABLE, a
-	jp z, Copy1bpp
-
-	ld de, Font
-	ld hl, vTiles1
-	lb bc, BANK(Font), $20
-	call Get1bpp_2
-	ld de, Font + $20 * LEN_1BPP_TILE
-	ld hl, vTiles1 tile $20
-	lb bc, BANK(Font), $20
-	call Get1bpp_2
-	ld de, Font + $40 * LEN_1BPP_TILE
-	ld hl, vTiles1 tile $40
-	lb bc, BANK(Font), $20
-	call Get1bpp_2
-	ld de, Font + $60 * LEN_1BPP_TILE
-	ld hl, vTiles1 tile $60
-	lb bc, BANK(Font), $20
-	call Get1bpp_2
-	ret
-; fb48a
-
-_LoadFontsExtra1:: ; fb48a
-	ld de, MobilePhoneTilesGFX
-	ld hl, vTiles2 tile "<BLACK>" ; $60
-	lb bc, BANK(MobilePhoneTilesGFX), 1
-	call Get1bpp_2
-	ld de, OverworldPhoneIconGFX
-	ld hl, vTiles2 tile "<PHONE>" ; $62
-	lb bc, BANK(OverworldPhoneIconGFX), 1
-	call Get2bpp_2
-	ld de, FontExtra + 3 * LEN_2BPP_TILE
-	ld hl, vTiles2 tile $63
-	lb bc, BANK(FontExtra), $16
-	call Get2bpp_2
-	jr LoadFrame
-; fb4b0
-
-_LoadFontsExtra2:: ; fb4b0
-	ld de, FontsExtra2_UpArrowGFX
-	ld hl, vTiles2 tile "▲" ; $61
-	ld b, BANK(FontsExtra2_UpArrowGFX)
-	ld c, 1
-	call Get2bpp_2
-	ret
-; fb4be
-
-_LoadFontsBattleExtra:: ; fb4be
-	ld de, FontBattleExtra
-	ld hl, vTiles2 tile $60
-	lb bc, BANK(FontBattleExtra), $19
-	call Get2bpp_2
-	jr LoadFrame
-; fb4cc
-
-LoadFrame: ; fb4cc
-	ld a, [TextBoxFrame]
-	and 7
-	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), 6
-	call Get1bpp_2
-	ld hl, vTiles2 tile " " ; $7f
-	ld de, TextBoxSpaceGFX
-	lb bc, BANK(TextBoxSpaceGFX), 1
-	call Get1bpp_2
-	ret
-; fb4f2
-
-LoadBattleFontsHPBar: ; fb4f2
-	ld de, FontBattleExtra
-	ld hl, vTiles2 tile $60
-	lb bc, BANK(FontBattleExtra), $c
-	call Get2bpp_2
-	ld hl, vTiles2 tile $70
-	ld de, FontBattleExtra tile $10
-	lb bc, BANK(FontBattleExtra), 3
-	call Get2bpp_2
-	call LoadFrame
-
-LoadHPBar: ; fb50d
-	ld de, EnemyHPBarBorderGFX
-	ld hl, vTiles2 tile $6c
-	lb bc, BANK(EnemyHPBarBorderGFX), 4
-	call Get1bpp_2
-	ld de, HPExpBarBorderGFX
-	ld hl, vTiles2 tile $73
-	lb bc, BANK(HPExpBarBorderGFX), 6
-	call Get1bpp_2
-	ld de, ExpBarGFX
-	ld hl, vTiles2 tile $55
-	lb bc, BANK(ExpBarGFX), 9
-	call Get2bpp_2
-	ld de, MobilePhoneTilesGFX + 9 * LEN_2BPP_TILE
-	ld hl, vTiles2 tile $5e
-	lb bc, BANK(MobilePhoneTilesGFX), 2
-	call Get2bpp_2
-	ret
-; fb53e
-
-StatsScreen_LoadFont: ; fb53e
-	call _LoadFontsBattleExtra
-	ld de, EnemyHPBarBorderGFX
-	ld hl, vTiles2 tile $6c
-	lb bc, BANK(EnemyHPBarBorderGFX), 4
-	call Get1bpp_2
-	ld de, HPExpBarBorderGFX
-	ld hl, vTiles2 tile $78
-	lb bc, BANK(HPExpBarBorderGFX), 1
-	call Get1bpp_2
-	ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE
-	ld hl, vTiles2 tile $76
-	lb bc, BANK(HPExpBarBorderGFX), 2
-	call Get1bpp_2
-	ld de, ExpBarGFX
-	ld hl, vTiles2 tile $55
-	lb bc, BANK(ExpBarGFX), 8
-	call Get2bpp_2
-LoadStatsScreenPageTilesGFX: ; fb571
-	ld de, StatsScreenPageTilesGFX
-	ld hl, vTiles2 tile $31
-	lb bc, BANK(StatsScreenPageTilesGFX), $11
-	call Get2bpp_2
-	ret
-; fb57e
--- /dev/null
+++ b/gfx/font/bg_text.pal
@@ -1,0 +1,4 @@
+	RGB 31, 31, 31
+	RGB 08, 19, 28
+	RGB 05, 05, 16
+	RGB 00, 00, 00
binary files /dev/null b/gfx/font/black.png differ
binary files a/gfx/font/font_battle_extra.png b/gfx/font/font_battle_extra.png differ
binary files a/gfx/font/font_extra.png b/gfx/font/font_extra.png differ
binary files a/gfx/font/overworld_phone_icon.png /dev/null differ
binary files /dev/null b/gfx/font/overworld_space.png differ
binary files /dev/null b/gfx/font/phone_icon.png differ
binary files a/gfx/font/space.png /dev/null differ
binary files /dev/null b/gfx/font/unused_up_arrow.png differ
binary files a/gfx/icon/bat.png /dev/null differ
binary files a/gfx/icon/bigmon.png /dev/null differ
binary files a/gfx/icon/bird.png /dev/null differ
binary files a/gfx/icon/blob.png /dev/null differ
binary files a/gfx/icon/bug.png /dev/null differ
binary files a/gfx/icon/bulbasaur.png /dev/null differ
binary files a/gfx/icon/caterpillar.png /dev/null differ
binary files a/gfx/icon/charmander.png /dev/null differ
binary files a/gfx/icon/clefairy.png /dev/null differ
binary files a/gfx/icon/diglett.png /dev/null differ
binary files a/gfx/icon/egg.png /dev/null differ
binary files a/gfx/icon/equine.png /dev/null differ
binary files a/gfx/icon/fighter.png /dev/null differ
binary files a/gfx/icon/fish.png /dev/null differ
binary files a/gfx/icon/fox.png /dev/null differ
binary files a/gfx/icon/geodude.png /dev/null differ
binary files a/gfx/icon/ghost.png /dev/null differ
binary files a/gfx/icon/gyarados.png /dev/null differ
binary files a/gfx/icon/ho_oh.png /dev/null differ
binary files a/gfx/icon/humanshape.png /dev/null differ
binary files a/gfx/icon/item.png /dev/null differ
binary files a/gfx/icon/jellyfish.png /dev/null differ
binary files a/gfx/icon/jigglypuff.png /dev/null differ
binary files a/gfx/icon/lapras.png /dev/null differ
binary files a/gfx/icon/lugia.png /dev/null differ
binary files a/gfx/icon/mail.png /dev/null differ
binary files a/gfx/icon/mail2.png /dev/null differ
binary files a/gfx/icon/monster.png /dev/null differ
binary files a/gfx/icon/moth.png /dev/null differ
binary files a/gfx/icon/oddish.png /dev/null differ
binary files a/gfx/icon/pikachu.png /dev/null differ
binary files a/gfx/icon/poliwag.png /dev/null differ
binary files a/gfx/icon/serpent.png /dev/null differ
binary files a/gfx/icon/shell.png /dev/null differ
binary files a/gfx/icon/slowpoke.png /dev/null differ
binary files a/gfx/icon/snorlax.png /dev/null differ
binary files a/gfx/icon/squirtle.png /dev/null differ
binary files a/gfx/icon/staryu.png /dev/null differ
binary files a/gfx/icon/sudowoodo.png /dev/null differ
binary files a/gfx/icon/unown.png /dev/null differ
binary files a/gfx/icon/voltorb.png /dev/null differ
--- a/gfx/icons.asm
+++ b/gfx/icons.asm
@@ -1,40 +1,40 @@
 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
+PoliwagIcon:      INCBIN "gfx/icons/poliwag.2bpp" ; 0x8ec0d
+JigglypuffIcon:   INCBIN "gfx/icons/jigglypuff.2bpp" ; 0x8ec8d
+DiglettIcon:      INCBIN "gfx/icons/diglett.2bpp" ; 0x8ed0d
+PikachuIcon:      INCBIN "gfx/icons/pikachu.2bpp" ; 0x8ed8d
+StaryuIcon:       INCBIN "gfx/icons/staryu.2bpp" ; 0x8ee0d
+FishIcon:         INCBIN "gfx/icons/fish.2bpp" ; 0x8ee8d
+BirdIcon:         INCBIN "gfx/icons/bird.2bpp" ; 0x8ef0d
+MonsterIcon:      INCBIN "gfx/icons/monster.2bpp" ; 0x8ef8d
+ClefairyIcon:     INCBIN "gfx/icons/clefairy.2bpp" ; 0x8f00d
+OddishIcon:       INCBIN "gfx/icons/oddish.2bpp" ; 0x8f08d
+BugIcon:          INCBIN "gfx/icons/bug.2bpp" ; 0x8f10d
+GhostIcon:        INCBIN "gfx/icons/ghost.2bpp" ; 0x8f18d
+LaprasIcon:       INCBIN "gfx/icons/lapras.2bpp" ; 0x8f20d
+HumanshapeIcon:   INCBIN "gfx/icons/humanshape.2bpp" ; 0x8f28d
+FoxIcon:          INCBIN "gfx/icons/fox.2bpp" ; 0x8f30d
+EquineIcon:       INCBIN "gfx/icons/equine.2bpp" ; 0x8f38d
+ShellIcon:        INCBIN "gfx/icons/shell.2bpp" ; 0x8f40d
+BlobIcon:         INCBIN "gfx/icons/blob.2bpp" ; 0x8f48d
+SerpentIcon:      INCBIN "gfx/icons/serpent.2bpp" ; 0x8f50d
+VoltorbIcon:      INCBIN "gfx/icons/voltorb.2bpp" ; 0x8f58d
+SquirtleIcon:     INCBIN "gfx/icons/squirtle.2bpp" ; 0x8f60d
+BulbasaurIcon:    INCBIN "gfx/icons/bulbasaur.2bpp" ; 0x8f68d
+CharmanderIcon:   INCBIN "gfx/icons/charmander.2bpp" ; 0x8f70d
+CaterpillarIcon:  INCBIN "gfx/icons/caterpillar.2bpp" ; 0x8f78d
+UnownIcon:        INCBIN "gfx/icons/unown.2bpp" ; 0x8f80d
+GeodudeIcon:      INCBIN "gfx/icons/geodude.2bpp" ; 0x8f88d
+FighterIcon:      INCBIN "gfx/icons/fighter.2bpp" ; 0x8f90d
+EggIcon:          INCBIN "gfx/icons/egg.2bpp" ; 0x8f98d
+JellyfishIcon:    INCBIN "gfx/icons/jellyfish.2bpp" ; 0x8fa0d
+MothIcon:         INCBIN "gfx/icons/moth.2bpp" ; 0x8fa8d
+BatIcon:          INCBIN "gfx/icons/bat.2bpp" ; 0x8fb0d
+SnorlaxIcon:      INCBIN "gfx/icons/snorlax.2bpp" ; 0x8fb8d
+HoOhIcon:         INCBIN "gfx/icons/ho_oh.2bpp" ; 0x8fc0d
+LugiaIcon:        INCBIN "gfx/icons/lugia.2bpp" ; 0x8fc8d
+GyaradosIcon:     INCBIN "gfx/icons/gyarados.2bpp" ; 0x8fd0d
+SlowpokeIcon:     INCBIN "gfx/icons/slowpoke.2bpp" ; 0x8fd8d
+SudowoodoIcon:    INCBIN "gfx/icons/sudowoodo.2bpp" ; 0x8fe0d
+BigmonIcon:       INCBIN "gfx/icons/bigmon.2bpp" ; 0x8fe8d
binary files /dev/null b/gfx/icons/bat.png differ
binary files /dev/null b/gfx/icons/bigmon.png differ
binary files /dev/null b/gfx/icons/bird.png differ
binary files /dev/null b/gfx/icons/blob.png differ
binary files /dev/null b/gfx/icons/bug.png differ
binary files /dev/null b/gfx/icons/bulbasaur.png differ
binary files /dev/null b/gfx/icons/caterpillar.png differ
binary files /dev/null b/gfx/icons/charmander.png differ
binary files /dev/null b/gfx/icons/clefairy.png differ
binary files /dev/null b/gfx/icons/diglett.png differ
binary files /dev/null b/gfx/icons/egg.png differ
binary files /dev/null b/gfx/icons/equine.png differ
binary files /dev/null b/gfx/icons/fighter.png differ
binary files /dev/null b/gfx/icons/fish.png differ
binary files /dev/null b/gfx/icons/fox.png differ
binary files /dev/null b/gfx/icons/geodude.png differ
binary files /dev/null b/gfx/icons/ghost.png differ
binary files /dev/null b/gfx/icons/gyarados.png differ
binary files /dev/null b/gfx/icons/ho_oh.png differ
binary files /dev/null b/gfx/icons/humanshape.png differ
binary files /dev/null b/gfx/icons/item.png differ
binary files /dev/null b/gfx/icons/jellyfish.png differ
binary files /dev/null b/gfx/icons/jigglypuff.png differ
binary files /dev/null b/gfx/icons/lapras.png differ
binary files /dev/null b/gfx/icons/lugia.png differ
binary files /dev/null b/gfx/icons/mail.png differ
binary files /dev/null b/gfx/icons/mail_big.png differ
binary files /dev/null b/gfx/icons/monster.png differ
binary files /dev/null b/gfx/icons/moth.png differ
binary files /dev/null b/gfx/icons/oddish.png differ
binary files /dev/null b/gfx/icons/pikachu.png differ
binary files /dev/null b/gfx/icons/poliwag.png differ
binary files /dev/null b/gfx/icons/serpent.png differ
binary files /dev/null b/gfx/icons/shell.png differ
binary files /dev/null b/gfx/icons/slowpoke.png differ
binary files /dev/null b/gfx/icons/snorlax.png differ
binary files /dev/null b/gfx/icons/squirtle.png differ
binary files /dev/null b/gfx/icons/staryu.png differ
binary files /dev/null b/gfx/icons/sudowoodo.png differ
binary files /dev/null b/gfx/icons/unown.png differ
binary files /dev/null b/gfx/icons/voltorb.png differ
--- /dev/null
+++ b/gfx/intro/fade.pal
@@ -1,0 +1,41 @@
+; Fade to white.
+
+	RGB 24, 12, 09
+	RGB 31, 31, 31
+	RGB 12, 00, 31
+	RGB 00, 00, 00
+
+	RGB 31, 19, 05
+	RGB 31, 31, 31
+	RGB 15, 05, 31
+	RGB 07, 07, 07
+
+	RGB 31, 21, 09
+	RGB 31, 31, 31
+	RGB 18, 09, 31
+	RGB 11, 11, 11
+
+	RGB 31, 23, 13
+	RGB 31, 31, 31
+	RGB 21, 13, 31
+	RGB 15, 15, 15
+
+	RGB 31, 25, 17
+	RGB 31, 31, 31
+	RGB 25, 17, 31
+	RGB 19, 19, 19
+
+	RGB 31, 27, 21
+	RGB 31, 31, 31
+	RGB 27, 21, 31
+	RGB 23, 23, 23
+
+	RGB 31, 29, 25
+	RGB 31, 31, 31
+	RGB 29, 26, 31
+	RGB 27, 27, 27
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
--- /dev/null
+++ b/gfx/intro/gamefreak_logo.pal
@@ -1,0 +1,23 @@
+; Ditto's color as it turns into the Game Freak logo.
+; Fade from pink to orange.
+; One color per step.
+
+	RGB 23, 12, 28
+	RGB 23, 12, 27
+	RGB 23, 13, 26
+	RGB 23, 13, 24
+
+	RGB 24, 14, 22
+	RGB 24, 14, 20
+	RGB 24, 15, 18
+	RGB 24, 15, 16
+
+	RGB 25, 16, 14
+	RGB 25, 16, 12
+	RGB 25, 17, 10
+	RGB 25, 17, 08
+
+	RGB 26, 18, 06
+	RGB 26, 18, 04
+	RGB 26, 19, 02
+	RGB 26, 19, 00
binary files a/gfx/intro/gender_screen.png /dev/null differ
--- /dev/null
+++ b/gfx/intro/intro_1.pal
@@ -1,0 +1,79 @@
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB  0,  4,  5
+	RGB  1,  8,  5
+	RGB  4, 12,  9
+	RGB 24, 12,  9
+
+	RGB  0,  4,  5
+	RGB  9,  6,  8
+	RGB  8, 16,  5
+	RGB  5, 10,  4
+
+	RGB 31, 31, 31
+	RGB  9,  6,  8
+	RGB 18,  9,  9
+	RGB 13,  8,  9
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB  2,  5, 22
+	RGB  1,  5, 12
+
+	RGB 31, 31, 31
+	RGB 31, 10, 25
+	RGB 31, 21,  0
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 21, 31
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
--- /dev/null
+++ b/gfx/intro/intro_2.pal
@@ -1,0 +1,79 @@
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 10,  0, 10
+	RGB 19,  0, 19
+	RGB 31,  0, 31
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
--- /dev/null
+++ b/gfx/intro/intro_3.pal
@@ -1,0 +1,79 @@
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
--- /dev/null
+++ b/gfx/intro/intro_4.pal
@@ -1,0 +1,79 @@
+	RGB 24, 12,  9
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 24, 12,  9
+	RGB 31, 31, 31
+	RGB  8,  9, 31
+	RGB  0,  0,  0
+
+	RGB 24, 12,  9
+	RGB 12, 20, 31
+	RGB 19,  8, 31
+	RGB  0,  0,  0
+
+	RGB 12, 20, 31
+	RGB  8,  9, 31
+	RGB 19,  8, 31
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 12, 20, 31
+	RGB  8,  9, 31
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
--- /dev/null
+++ b/gfx/intro/intro_5.pal
@@ -1,0 +1,79 @@
+	RGB 24, 12,  9
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 24, 12,  9
+	RGB 31, 31, 31
+	RGB  8,  9, 31
+	RGB  0,  0,  0
+
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+	RGB 24, 12,  9
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 12,  0, 31
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 21,  9,  0
+	RGB 21,  9,  0
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
+
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 11, 11, 11
+	RGB  0,  0,  0
--- a/gfx/load_pics.asm
+++ /dev/null
@@ -1,494 +1,0 @@
-GetUnownLetter: ; 51040
-; Return Unown letter in UnownLetter based on DVs at hl
-
-; Take the middle 2 bits of each DV and place them in order:
-;	atk  def  spd  spc
-;	.ww..xx.  .yy..zz.
-
-	; atk
-	ld a, [hl]
-	and %01100000
-	sla a
-	ld b, a
-	; def
-	ld a, [hli]
-	and %00000110
-	swap a
-	srl a
-	or b
-	ld b, a
-
-	; spd
-	ld a, [hl]
-	and %01100000
-	swap a
-	sla a
-	or b
-	ld b, a
-	; spc
-	ld a, [hl]
-	and %00000110
-	srl a
-	or b
-
-; Divide by 10 to get 0-25
-	ld [hDividend + 3], a
-	xor a
-	ld [hDividend], a
-	ld [hDividend + 1], a
-	ld [hDividend + 2], a
-	ld a, 10
-	ld [hDivisor], a
-	ld b, 4
-	call Divide
-
-; Increment to get 1-26
-	ld a, [hQuotient + 2]
-	inc a
-	ld [UnownLetter], a
-	ret
-
-GetMonFrontpic: ; 51077
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call IsAPokemon
-	ret c
-	ld a, [rSVBK]
-	push af
-	call _GetFrontpic
-	pop af
-	ld [rSVBK], a
-	ret
-
-GetAnimatedFrontpicPredef: ; 5108b
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call IsAPokemon
-	ret c
-	ld a, [rSVBK]
-	push af
-	xor a
-	ld [hBGMapMode], a
-	call _GetFrontpic
-	call GetAnimatedFrontpic
-	pop af
-	ld [rSVBK], a
-	ret
-
-_GetFrontpic: ; 510a5
-	push de
-	call GetBaseData
-	ld a, [BasePicSize]
-	and $f
-	ld b, a
-	push bc
-	call GetFrontpicPointer
-	ld a, BANK(wDecompressEnemyFrontpic)
-	ld [rSVBK], a
-	ld a, b
-	ld de, wDecompressEnemyFrontpic
-	call FarDecompress
-	pop bc
-	ld hl, wDecompressScratch
-	ld de, wDecompressEnemyFrontpic
-	call PadFrontpic
-	pop hl
-	push hl
-	ld de, wDecompressScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop hl
-	ret
-
-GetFrontpicPointer: ; 510d7
-GLOBAL PokemonPicPointers, UnownPicPointers
-
-	ld a, [CurPartySpecies]
-	cp UNOWN
-	jr z, .unown
-	ld a, [CurPartySpecies]
-	ld d, BANK(PokemonPicPointers)
-	jr .ok
-
-.unown
-	ld a, [UnownLetter]
-	ld d, BANK(UnownPicPointers)
-
-.ok
-	ld hl, PokemonPicPointers ; UnownPicPointers
-	dec a
-	ld bc, 6
-	call AddNTimes
-	ld a, d
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, d
-	call GetFarHalfword
-	pop bc
-	ret
-
-GetAnimatedFrontpic: ; 51103
-	ld a, BANK(vTiles3)
-	ld [rVBK], a
-	push hl
-	ld de, wDecompressScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop hl
-	ld de, 7 * 7 tiles
-	add hl, de
-	push hl
-	ld a, BANK(BasePicSize)
-	ld hl, BasePicSize
-	call GetFarWRAMByte
-	pop hl
-	and $f
-	ld de, wDecompressEnemyFrontpic + 5 * 5 tiles
-	ld c, 5 * 5
-	cp 5
-	jr z, .got_dims
-	ld de, wDecompressEnemyFrontpic + 6 * 6 tiles
-	ld c, 6 * 6
-	cp 6
-	jr z, .got_dims
-	ld de, wDecompressEnemyFrontpic + 7 * 7 tiles
-	ld c, 7 * 7
-.got_dims
-
-	push hl
-	push bc
-	call LoadFrontpicTiles
-	pop bc
-	pop hl
-	ld de, wDecompressScratch
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	xor a
-	ld [rVBK], a
-	ret
-
-LoadFrontpicTiles: ; 5114f
-	ld hl, wDecompressScratch
-	swap c
-	ld a, c
-	and $f
-	ld b, a
-	ld a, c
-	and $f0
-	ld c, a
-	push bc
-	call LoadFrontpic
-	pop bc
-.loop
-	push bc
-	ld c, $0
-	call LoadFrontpic
-	pop bc
-	dec b
-	jr nz, .loop
-	ret
-
-GetMonBackpic: ; 5116c
-	ld a, [CurPartySpecies]
-	call IsAPokemon
-	ret c
-
-	ld a, [CurPartySpecies]
-	ld b, a
-	ld a, [UnownLetter]
-	ld c, a
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	push de
-
-	; These are assumed to be at the same
-	; address in their respective banks.
-	GLOBAL PokemonPicPointers,  UnownPicPointers
-	ld hl, PokemonPicPointers ; UnownPicPointers
-	ld a, b
-	ld d, BANK(PokemonPicPointers)
-	cp UNOWN
-	jr nz, .ok
-	ld a, c
-	ld d, BANK(UnownPicPointers)
-.ok
-	dec a
-	ld bc, 6
-	call AddNTimes
-	ld bc, 3
-	add hl, bc
-	ld a, d
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, d
-	call GetFarHalfword
-	ld de, wDecompressScratch
-	pop af
-	call FarDecompress
-	ld hl, wDecompressScratch
-	ld c, 6 * 6
-	call FixBackpicAlignment
-	pop hl
-	ld de, wDecompressScratch
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop af
-	ld [rSVBK], a
-	ret
-
-FixPicBank: ; 511c5
-; This is a thing for some reason.
-
-PICS_FIX EQU $36
-GLOBAL PICS_FIX
-
-	push hl
-	push bc
-	sub BANK(Pics_1) - PICS_FIX
-	ld c, a
-	ld b, 0
-	ld hl, .PicsBanks
-	add hl, bc
-	ld a, [hl]
-	pop bc
-	pop hl
-	ret
-
-.PicsBanks: ; 511d4
-	db BANK(Pics_1) + 0
-	db BANK(Pics_1) + 1
-	db BANK(Pics_1) + 2
-	db BANK(Pics_1) + 3
-	db BANK(Pics_1) + 4
-	db BANK(Pics_1) + 5
-	db BANK(Pics_1) + 6
-	db BANK(Pics_1) + 7
-	db BANK(Pics_1) + 8
-	db BANK(Pics_1) + 9
-	db BANK(Pics_1) + 10
-	db BANK(Pics_1) + 11
-	db BANK(Pics_1) + 12
-	db BANK(Pics_1) + 13
-	db BANK(Pics_1) + 14
-	db BANK(Pics_1) + 15
-	db BANK(Pics_1) + 16
-	db BANK(Pics_1) + 17
-	db BANK(Pics_1) + 18
-	db BANK(Pics_1) + 19
-	db BANK(Pics_1) + 20
-	db BANK(Pics_1) + 21
-	db BANK(Pics_1) + 22
-	db BANK(Pics_1) + 23
-
-Function511ec: ; 511ec
-	ld a, c
-	push de
-	ld hl, PokemonPicPointers
-	dec a
-	ld bc, 6
-	call AddNTimes
-	ld a, BANK(PokemonPicPointers)
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, BANK(PokemonPicPointers)
-	call GetFarHalfword
-	pop af
-	pop de
-	call FarDecompress
-	ret
-
-GetTrainerPic: ; 5120d
-	ld a, [TrainerClass]
-	and a
-	ret z
-	cp NUM_TRAINER_CLASSES
-	ret nc
-	call WaitBGMap
-	xor a
-	ld [hBGMapMode], a
-	ld hl, TrainerPicPointers
-	ld a, [TrainerClass]
-	dec a
-	ld bc, 3
-	call AddNTimes
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	push de
-	ld a, BANK(TrainerPicPointers)
-	call GetFarByte
-	call FixPicBank
-	push af
-	inc hl
-	ld a, BANK(TrainerPicPointers)
-	call GetFarHalfword
-	pop af
-	ld de, wDecompressScratch
-	call FarDecompress
-	pop hl
-	ld de, wDecompressScratch
-	ld c, 7 * 7
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-	pop af
-	ld [rSVBK], a
-	call WaitBGMap
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-DecompressPredef: ; 5125d
-; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
-
-	ld a, [rSVBK]
-	push af
-	ld a, 6
-	ld [rSVBK], a
-
-	push de
-	push bc
-	ld a, b
-	ld de, wDecompressScratch
-	call FarDecompress
-	pop bc
-	ld de, wDecompressScratch
-	pop hl
-	ld a, [hROMBank]
-	ld b, a
-	call Get2bpp
-
-	pop af
-	ld [rSVBK], a
-	ret
-
-FixBackpicAlignment: ; 5127c
-	push de
-	push bc
-	ld a, [wBoxAlignment]
-	and a
-	jr z, .keep_dims
-	ld a, c
-	cp 7 * 7
-	ld de, 7 * 7 tiles
-	jr z, .got_dims
-	cp 6 * 6
-	ld de, 6 * 6 tiles
-	jr z, .got_dims
-	ld de, 5 * 5 tiles
-
-.got_dims
-	ld a, [hl]
-	ld b, $0
-	ld c, $8
-.loop
-	rra
-	rl b
-	dec c
-	jr nz, .loop
-	ld a, b
-	ld [hli], a
-	dec de
-	ld a, e
-	or d
-	jr nz, .got_dims
-
-.keep_dims
-	pop bc
-	pop de
-	ret
-
-PadFrontpic: ; 512ab
-	ld a, b
-	cp 6
-	jr z, .six
-	cp 5
-	jr z, .five
-
-.seven_loop
-	ld c, $70
-	call LoadFrontpic
-	dec b
-	jr nz, .seven_loop
-	ret
-
-.six
-	ld c, $70
-	xor a
-	call .Fill
-.six_loop
-	ld c, $10
-	xor a
-	call .Fill
-	ld c, $60
-	call LoadFrontpic
-	dec b
-	jr nz, .six_loop
-	ret
-
-.five
-	ld c, $70
-	xor a
-	call .Fill
-.five_loop
-	ld c, $20
-	xor a
-	call .Fill
-	ld c, $50
-	call LoadFrontpic
-	dec b
-	jr nz, .five_loop
-	ld c, $70
-	xor a
-	call .Fill
-	ret
-
-.Fill:
-	ld [hli], a
-	dec c
-	jr nz, .Fill
-	ret
-
-LoadFrontpic: ; 512f2
-	ld a, [wBoxAlignment]
-	and a
-	jr nz, .x_flip
-.left_loop
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .left_loop
-	ret
-
-.x_flip
-	push bc
-.right_loop
-	ld a, [de]
-	inc de
-	ld b, a
-	xor a
-	rept 8
-	rr b
-	rla
-	endr
-	ld [hli], a
-	dec c
-	jr nz, .right_loop
-	pop bc
-	ret
--- /dev/null
+++ b/gfx/mail/mail.pal
@@ -1,0 +1,49 @@
+	RGB 20, 31, 11
+	RGB 31, 19, 00
+	RGB 31, 10, 09
+	RGB 00, 00, 00
+
+	RGB 15, 20, 31
+	RGB 30, 26, 00
+	RGB 31, 12, 00
+	RGB 00, 00, 00
+
+	RGB 24, 17, 31
+	RGB 30, 26, 00
+	RGB 08, 11, 31
+	RGB 00, 00, 00
+
+	RGB 31, 25, 17
+	RGB 31, 18, 04
+	RGB 28, 12, 05
+	RGB 00, 00, 00
+
+	RGB 19, 26, 31
+	RGB 31, 05, 08
+	RGB 31, 09, 31
+	RGB 00, 00, 00
+
+	RGB 31, 19, 28
+	RGB 31, 21, 00
+	RGB 12, 22, 00
+	RGB 00, 00, 00
+
+	RGB 19, 17, 23
+	RGB 30, 26, 00
+	RGB 31, 12, 00
+	RGB 00, 00, 00
+
+	RGB 07, 26, 31
+	RGB 26, 26, 27
+	RGB 31, 11, 11
+	RGB 00, 00, 00
+
+	RGB 21, 31, 21
+	RGB 30, 26, 00
+	RGB 31, 12, 00
+	RGB 00, 00, 00
+
+	RGB 07, 26, 31
+	RGB 31, 31, 00
+	RGB 00, 21, 00
+	RGB 00, 00, 00
binary files a/gfx/mobile/mobile_adapter.png b/gfx/mobile/mobile_adapter.png differ
binary files a/gfx/mobile/phone_tiles.png b/gfx/mobile/phone_tiles.png differ
--- /dev/null
+++ b/gfx/mystery_gift/mg_mobile.pal
@@ -1,0 +1,24 @@
+	RGB 03, 07, 09
+	RGB 26, 31, 00
+	RGB 20, 16, 03
+	RGB 31, 31, 31
+
+	RGB 13, 24, 29
+	RGB 11, 16, 30
+	RGB 07, 11, 22
+	RGB 05, 06, 18
+
+	RGB 31, 31, 31
+	RGB 20, 26, 31
+	RGB 13, 24, 29
+	RGB 11, 16, 30
+
+	RGB 31, 31, 31
+	RGB 20, 26, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 20, 16, 08
+	RGB 31, 00, 00
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/mystery_gift/mystery_gift.pal
@@ -1,0 +1,9 @@
+	RGB 31, 31, 31
+	RGB 16, 31, 14
+	RGB 05, 14, 21
+	RGB 05, 13, 10
+
+	RGB 31, 31, 31
+	RGB 11, 21, 25
+	RGB 05, 14, 21
+	RGB 00, 03, 19
binary files a/gfx/mystery_gift/mystery_gift.png b/gfx/mystery_gift/mystery_gift.png differ
binary files /dev/null b/gfx/naming_screen/border.png differ
binary files /dev/null b/gfx/naming_screen/cursor.png differ
binary files /dev/null b/gfx/naming_screen/end.png differ
binary files /dev/null b/gfx/naming_screen/middle_line.png differ
binary files /dev/null b/gfx/naming_screen/underline.png differ
binary files a/gfx/namingscreen/border.png /dev/null differ
binary files a/gfx/namingscreen/cursor.png /dev/null differ
binary files a/gfx/namingscreen/end.png /dev/null differ
binary files a/gfx/namingscreen/middle_line.png /dev/null differ
binary files a/gfx/namingscreen/underline.png /dev/null differ
binary files /dev/null b/gfx/new_game/down_arrow.png differ
--- /dev/null
+++ b/gfx/new_game/gender_screen.pal
@@ -1,0 +1,4 @@
+	RGB 31, 31, 31
+	RGB 09, 30, 31
+	RGB 01, 11, 31
+	RGB 00, 00, 00
binary files /dev/null b/gfx/new_game/gender_screen.png differ
binary files /dev/null b/gfx/new_game/shrink1.2bpp.lz.d4443930 differ
binary files /dev/null b/gfx/new_game/shrink1.png differ
binary files /dev/null b/gfx/new_game/shrink2.2bpp.lz.3f58480a differ
binary files /dev/null b/gfx/new_game/shrink2.png differ
binary files /dev/null b/gfx/new_game/timeset_bg.png differ
binary files /dev/null b/gfx/new_game/up_arrow.png differ
binary files a/gfx/overworld/chris_fish.png b/gfx/overworld/chris_fish.png differ
--- /dev/null
+++ b/gfx/overworld/heal_machine.pal
@@ -1,0 +1,4 @@
+	RGB 31, 31, 31
+	RGB 31, 19, 10
+	RGB 31, 07, 01
+	RGB 00, 00, 00
binary files a/gfx/overworld/kris_fish.png b/gfx/overworld/kris_fish.png differ
--- /dev/null
+++ b/gfx/overworld/npc_sprites.pal
@@ -1,0 +1,39 @@
+; morn
+	RGB 28,31,16, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 28,31,16, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 28,31,16, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 28,31,16, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 28,31,16, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
+	RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; rock
+
+; day
+	RGB 27,31,27, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 27,31,27, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 27,31,27, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 27,31,27, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 27,31,27, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
+	RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; rock
+
+; nite
+	RGB 15,14,24, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 15,14,24, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 15,14,24, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 15,14,24, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 15,14,24, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; tree
+	RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; rock
+
+; dark
+	RGB 01,01,02, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 01,01,02, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 01,01,02, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 01,01,02, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 01,01,02, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; tree
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; rock
--- /dev/null
+++ b/gfx/overworld/trainer_battle_day.pal
@@ -1,0 +1,4 @@
+	RGB 31, 18, 29
+	RGB 31, 11, 15
+	RGB 31, 05, 05
+	RGB 07, 07, 07
--- /dev/null
+++ b/gfx/overworld/trainer_battle_nite.pal
@@ -1,0 +1,4 @@
+	RGB 31, 18, 29
+	RGB 31, 05, 05
+	RGB 31, 05, 05
+	RGB 31, 05, 05
--- a/gfx/overworld_font.asm
+++ /dev/null
@@ -1,17 +1,0 @@
-LoadOverworldFont:: ; 106594
-	ld de, .font
-	ld hl, vTiles1
-	lb bc, BANK(.font), $80
-	call Get2bpp
-	ld de, .space
-	ld hl, vTiles2 tile $7f
-	lb bc, BANK(.space), 1
-	call Get2bpp
-	ret
-; 1065ad
-
-.font
-INCBIN "gfx/font/overworld.2bpp"
-
-.space
-INCBIN "gfx/font/space.2bpp"
--- /dev/null
+++ b/gfx/pack/pack.pal
@@ -1,0 +1,29 @@
+	RGB 31, 31, 31
+	RGB 15, 15, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 15, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+
+	RGB 31, 11, 31
+	RGB 15, 15, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 15, 31
+	RGB 00, 00, 31
+	RGB 31, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 15, 31
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 07, 19, 07
+	RGB 07, 19, 07
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/pack/pack_f.pal
@@ -1,0 +1,29 @@
+	RGB 31, 31, 31
+	RGB 31, 14, 31
+	RGB 31, 07, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 14, 31
+	RGB 31, 07, 31
+	RGB 00, 00, 00
+
+	RGB 15, 15, 31
+	RGB 31, 14, 31
+	RGB 31, 07, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 14, 31
+	RGB 31, 07, 31
+	RGB 31, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 14, 31
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 07, 19, 07
+	RGB 07, 19, 07
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/pc/orange.pal
@@ -1,0 +1,4 @@
+	RGB 31, 15, 00
+	RGB 23, 12, 00
+	RGB 15, 07, 00
+	RGB 00, 00, 00
--- a/gfx/pics.asm
+++ b/gfx/pics.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 ; PokemonPicPointers and UnownPicPointers are assumed to start at the same
--- /dev/null
+++ b/gfx/pokedex/cursor.pal
@@ -1,0 +1,4 @@
+	RGB 00, 00, 00
+	RGB 11, 23, 00
+	RGB 07, 17, 00
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/pokedex/question_mark.pal
@@ -1,0 +1,4 @@
+	RGB 11, 23, 00
+	RGB 07, 17, 00
+	RGB 06, 16, 03
+	RGB 05, 12, 01
--- /dev/null
+++ b/gfx/pokegear/pokegear.pal
@@ -1,0 +1,30 @@
+; border
+	RGB 28, 31, 20
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 00, 00, 00
+; earth
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+; mountain
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 15, 07, 00
+	RGB 00, 00, 00
+; city (boy)
+	RGB 28, 31, 20
+	RGB 31, 15, 00
+	RGB 15, 07, 00
+	RGB 00, 00, 00
+; point of interest
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 00, 00, 31
+	RGB 31, 00, 00
+; mountain point of interest
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 15, 07, 00
+	RGB 31, 00, 00
--- /dev/null
+++ b/gfx/pokegear/pokegear_f.pal
@@ -1,0 +1,30 @@
+; border
+	RGB 28, 31, 20
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 00, 00, 00
+; earth
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 00, 00, 31
+	RGB 00, 00, 00
+; mountain
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 15, 07, 00
+	RGB 00, 00, 00
+; city (girl)
+	RGB 28, 31, 20
+	RGB 10, 18, 31
+	RGB 13, 06, 31
+	RGB 00, 00, 00
+; point of interest
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 00, 00, 31
+	RGB 31, 00, 00
+; mountain point of interest
+	RGB 28, 31, 20
+	RGB 00, 31, 00
+	RGB 15, 07, 00
+	RGB 31, 00, 00
binary files a/gfx/pokegear/town_map.png b/gfx/pokegear/town_map.png differ
--- /dev/null
+++ b/gfx/pokegear/town_map_palette_map.asm
@@ -1,0 +1,30 @@
+	const_def
+	const PAL_TOWNMAP_BORDER   ; 0
+	const PAL_TOWNMAP_EARTH    ; 1
+	const PAL_TOWNMAP_MOUNTAIN ; 2
+	const PAL_TOWNMAP_CITY     ; 3
+	const PAL_TOWNMAP_POI      ; 4
+	const PAL_TOWNMAP_POI_MTN  ; 5
+
+townmappals: MACRO
+rept _NARG / 2
+	dn PAL_TOWNMAP_\2, PAL_TOWNMAP_\1
+	shift
+	shift
+endr
+ENDM
+
+; gfx/pokegear/town_map.png
+	townmappals EARTH,    EARTH,    EARTH,    MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER,   BORDER
+	townmappals EARTH,    EARTH,    CITY,     EARTH,    POI,      POI_MTN,  POI,      POI_MTN
+	townmappals EARTH,    EARTH,    EARTH,    MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER,   BORDER
+	townmappals EARTH,    EARTH,    BORDER,   EARTH,    EARTH,    BORDER,   BORDER,   BORDER
+	townmappals EARTH,    EARTH,    EARTH,    MOUNTAIN, MOUNTAIN, MOUNTAIN, BORDER,   BORDER
+	townmappals BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER
+; gfx/pokegear/pokegear.png
+	townmappals BORDER,   BORDER,   BORDER,   BORDER,   POI,      POI,      POI,      BORDER
+	townmappals BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER
+	townmappals CITY,     CITY,     CITY,     CITY,     CITY,     CITY,     CITY,     CITY
+	townmappals CITY,     CITY,     CITY,     CITY,     CITY,     CITY,     CITY,     BORDER
+	townmappals CITY,     CITY,     CITY,     CITY,     CITY,     CITY,     CITY,     CITY
+	townmappals BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER,   BORDER
binary files a/gfx/pokemon/egg/front.png b/gfx/pokemon/egg/front.png differ
--- /dev/null
+++ b/gfx/pokemon/egg/shiny.pal
@@ -1,0 +1,4 @@
+
+	RGB 30, 26, 11
+	RGB 23, 16, 00
+
--- /dev/null
+++ b/gfx/sgb/blk_packets.asm
@@ -1,0 +1,90 @@
+; macros taken from pokered's data/sgb_packets.asm
+; names taken from pandocs
+; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_Palette_Commands
+
+attr_blk: MACRO
+	db (SGB_ATTR_BLK << 3) + ((\1 * 6) / 16 + 1)
+	db \1
+ENDM
+
+attr_blk_data: MACRO
+	db \1 ; which regions are affected
+	db \2 + (\3 << 2) + (\4 << 4) ; palette for each region
+	db \5, \6, \7, \8 ; x1, y1, x2, y2
+ENDM
+
+
+BlkPacket_9a86:
+	attr_blk 1
+	attr_blk_data %011, 0,0,0, 00,00, 19,17
+	ds 8
+
+BlkPacket_GSIntroJigglypuffPikachu:
+	attr_blk 1
+	attr_blk_data %111, 1,1,0, 00,10, 19,13
+	ds 8
+
+BlkPacket_Battle:
+	attr_blk 5
+	attr_blk_data %111, 2,2,0, 00,12, 19,17 ; text box: pal 2
+	attr_blk_data %011, 1,1,0, 01,00, 10,03 ; enemy HP bar: pal 1
+	attr_blk_data %011, 0,0,0, 10,08, 19,10 ; player HP+exp bar: pal 0
+	attr_blk_data %011, 2,2,0, 00,04, 08,11 ; player mon: pal 2
+	attr_blk_data %011, 3,3,0, 11,00, 19,07 ; enemy mon : pal 3
+
+BlkPacket_StatsScreen:
+	attr_blk 1
+	attr_blk_data %111, 1,1,0, 00,01, 07,07 ; mon: pal 1
+	ds 8
+
+BlkPacket_MoveList:
+	attr_blk 1
+	attr_blk_data %111, 1,1,0, 11,01, 19,02
+	ds 8
+
+BlkPacket_Pokedex_PC:
+	attr_blk 1
+	attr_blk_data %111, 1,1,0, 01,01, 08,08 ; mon: pal 1
+	ds 8
+
+BlkPacket_PokedexUnownMode:
+	attr_blk 1
+	attr_blk_data %111, 1,1,0, 07,05, 13,11 ; unown: pal 1
+	ds 8
+
+BlkPacket_SlotMachine:
+	attr_blk 5
+	attr_blk_data %011, 1,1,0, 00,00, 19,11 ; "3" rows and top of screen: pal 1
+	attr_blk_data %011, 2,2,0, 00,04, 19,09 ; "2" rows: pal 2
+	attr_blk_data %010, 3,3,0, 00,06, 19,07 ; "1" row: pal 3
+	attr_blk_data %011, 0,0,0, 04,04, 15,09 ; slot reels: pal 0
+	attr_blk_data %011, 0,0,0, 00,12, 19,17 ; text box: pal 0
+
+UnreferencedBlkPacket_9b26:
+	attr_blk 7
+	attr_blk_data %111, 0,0,1, 00,00, 02,12
+	attr_blk_data %010, 0,0,0, 12,00, 18,01
+	attr_blk_data %010, 0,0,0, 12,02, 18,03
+	attr_blk_data %010, 0,0,0, 12,04, 18,05
+	attr_blk_data %010, 0,0,0, 12,06, 18,07
+	attr_blk_data %010, 0,0,0, 12,08, 18,09
+	attr_blk_data %010, 0,0,0, 12,10, 18,11
+	ds 4
+
+BlkPacket_GSTitleScreen:
+	attr_blk 3
+	attr_blk_data %111, 0,0,2, 00,00, 19,04
+	attr_blk_data %011, 3,3,0, 00,06, 19,17
+	attr_blk_data %011, 1,1,0, 15,01, 18,04
+	ds 12
+
+BlkPacket_SCGB_06:
+	attr_blk 1
+	attr_blk_data %111, 0,0,1, 00,00, 19,05
+	ds 8
+
+BlkPacket_SCGB_13:
+	attr_blk 2
+	attr_blk_data %111, 2,2,0, 00,04, 19,13
+	attr_blk_data %011, 1,1,0, 00,06, 19,11
+	ds 2
--- /dev/null
+++ b/gfx/sgb/pal_packets.asm
@@ -1,0 +1,98 @@
+; macros taken from pokered's data/sgb_packets.asm
+; names taken from pandocs
+; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_Palette_Commands
+
+sgb_pal_set: MACRO
+	db (SGB_PAL_SET << 3) + 1
+	dw PREDEFPAL_\1, PREDEFPAL_\2, PREDEFPAL_\3, PREDEFPAL_\4
+	ds 7
+ENDM
+
+sgb_pal01: MACRO
+	db (SGB_PAL01 << 3) + 1
+ENDM
+
+sgb_pal23: MACRO
+	db (SGB_PAL23 << 3) + 1
+ENDM
+
+
+PalPacket_GSTitleScreen:
+	sgb_pal_set GS_TITLE_SCREEN_0, GS_TITLE_SCREEN_1, GS_TITLE_SCREEN_2, GS_TITLE_SCREEN_3
+
+PalPacket_SCGB_13:
+	sgb_pal_set GREENMON_NITE, CGB_BADGE, RB_BROWNMON, 00
+
+PalPacket_SCGB_11:
+	sgb_pal_set SCGB_11_0, SCGB_11_1, SCGB_11_2, SCGB_11_3
+
+PalPacket_UnownPuzzle:
+	sgb_pal_set UNOWN_PUZZLE, UNOWN_PUZZLE, UNOWN_PUZZLE, UNOWN_PUZZLE
+
+PalPacket_9bd6:
+	sgb_pal_set 00, 00, 00, 00
+
+PalPacket_GSIntroShellderLapras:
+	sgb_pal_set GS_INTRO_SHELLDER_LAPRAS, 00, 00, 00
+
+UnreferencedPalPacket_9bf6:
+	sgb_pal_set 37, 00, 00, 00
+
+PalPacket_GSIntroJigglypuffPikachu:
+	sgb_pal_set GS_INTRO_JIGGLYPUFF_PIKACHU_BG, GS_INTRO_JIGGLYPUFF_PIKACHU_OB, 00, 00
+
+PalPacket_GSIntroStartersTransition:
+	sgb_pal_set GS_INTRO_STARTERS_TRANSITION, 00, 00, 00
+
+PalPacket_Function8b4d:
+	sgb_pal_set 3B, 00, 00, 00
+
+PalPacket_Pack:
+	sgb_pal_set PACK, 00, 00, 00
+
+PalPacket_SCGB_0F:
+	sgb_pal_set GS_INTRO_JIGGLYPUFF_PIKACHU_OB, 00, 00, 00
+
+PalPacket_PartyMenu:
+	sgb_pal_set PARTY_ICON, HP_GREEN, HP_YELLOW, HP_RED
+
+PalPacket_BattleGrayscale:
+	sgb_pal_set BLACKOUT, BLACKOUT, BLACKOUT, BLACKOUT
+
+PalPacket_Pokegear:
+	sgb_pal_set POKEGEAR, 00, 00, 00
+
+UnreferencedPalPacket_9c86:
+	sgb_pal_set PACK, 00, 00, 00
+
+PalPacket_SlotMachine:
+	sgb_pal_set SLOT_MACHINE_0, SLOT_MACHINE_1, SLOT_MACHINE_2, SLOT_MACHINE_3
+
+PalPacket_SCGB_06:
+	sgb_pal_set 33, 34, DIPLOMA, RB_PURPLEMON
+
+PalPacket_Diploma:
+	sgb_pal_set DIPLOMA, 00, 00, 00
+
+PalPacket_TradeTube:
+	sgb_pal_set TRADE_TUBE, 00, 00, 00
+
+PalPacket_GamefreakLogo:
+	sgb_pal_set GS_INTRO_GAMEFREAK_LOGO, 00, 00, 00
+
+
+PalPacket_9ce6:
+	sgb_pal01
+	RGB 31, 31, 31
+rept 6
+	RGB 00, 00, 00
+endr
+	ds 1
+
+PalPacket_9cf6:
+	sgb_pal23
+	RGB 31, 31, 31
+rept 6
+	RGB 00, 00, 00
+endr
+	ds 1
--- /dev/null
+++ b/gfx/sgb/predef.pal
@@ -1,0 +1,79 @@
+	RGB 31,31,31, 22,25,19, 16,21,30, 00,00,00 ; PREDEFPAL_00
+	RGB 31,31,31, 27,28,31, 15,20,31, 00,00,00 ; PREDEFPAL_PALLET
+	RGB 31,31,31, 24,28,19, 15,20,31, 00,00,00 ; PREDEFPAL_VIRIDIAN
+	RGB 31,31,31, 24,24,24, 15,20,31, 00,00,00 ; PREDEFPAL_PEWTER
+	RGB 31,31,31, 21,23,31, 15,20,31, 00,00,00 ; PREDEFPAL_CERULEAN
+	RGB 31,31,31, 24,21,27, 15,20,31, 00,00,00 ; PREDEFPAL_LAVENDER
+	RGB 31,31,31, 31,24,16, 15,20,31, 00,00,00 ; PREDEFPAL_VERMILION
+	RGB 31,31,31, 25,30,26, 15,20,31, 00,00,00 ; PREDEFPAL_CELADON
+	RGB 31,31,31, 31,25,31, 15,20,31, 00,00,00 ; PREDEFPAL_FUCHSIA
+	RGB 31,31,31, 31,20,19, 15,20,31, 00,00,00 ; PREDEFPAL_CINNABAR
+	RGB 31,31,31, 31,26,19, 15,20,31, 00,00,00 ; PREDEFPAL_SAFFRON
+	RGB 31,31,31, 27,28,27, 15,20,31, 00,00,00 ; PREDEFPAL_INDIGO
+	RGB 31,31,31, 24,30,23, 15,20,31, 00,00,00 ; PREDEFPAL_NEW_BARK
+	RGB 31,31,31, 29,24,29, 15,20,31, 00,00,00 ; PREDEFPAL_CHERRYGROVE
+	RGB 31,31,31, 26,23,29, 15,20,31, 00,00,00 ; PREDEFPAL_VIOLET
+	RGB 31,31,31, 25,23,20, 15,20,31, 00,00,00 ; PREDEFPAL_AZALEA
+	RGB 31,31,31, 29,26,18, 15,20,31, 00,00,00 ; PREDEFPAL_GOLDENROD
+	RGB 31,31,31, 31,21,18, 15,20,31, 00,00,00 ; PREDEFPAL_ECRUTEAK
+	RGB 31,31,31, 26,25,31, 15,20,31, 00,00,00 ; PREDEFPAL_OLIVINE
+	RGB 31,31,31, 22,21,31, 15,20,31, 00,00,00 ; PREDEFPAL_CIANWOOD
+	RGB 31,31,31, 22,25,21, 15,20,31, 00,00,00 ; PREDEFPAL_MAHOGANY
+	RGB 31,31,31, 21,21,22, 15,20,31, 00,00,00 ; PREDEFPAL_BLACKTHORN
+	RGB 31,31,31, 31,20,20, 15,20,31, 00,00,00 ; PREDEFPAL_LAKE_OF_RAGE
+	RGB 31,31,31, 26,26,26, 15,20,31, 00,00,00 ; PREDEFPAL_SILVER_CAVE
+	RGB 31,31,31, 21,14,09, 15,20,20, 00,00,00 ; PREDEFPAL_DUNGEONS
+	RGB 31,31,31, 12,28,22, 15,20,20, 00,00,00 ; PREDEFPAL_NITE
+	RGB 31,31,31, 07,07,07, 02,03,03, 00,00,00 ; PREDEFPAL_BLACKOUT
+	RGB 31,31,31, 30,22,17, 16,14,19, 00,00,00 ; PREDEFPAL_DIPLOMA
+	RGB 31,31,31, 18,20,27, 11,15,23, 00,00,00 ; PREDEFPAL_TRADE_TUBE
+	RGB 31,31,31, 31,20,10, 26,10,06, 00,00,00 ; PREDEFPAL_POKEDEX
+	RGB 31,31,31, 21,25,29, 14,19,25, 00,00,00 ; PREDEFPAL_RB_CYANMON
+	RGB 31,31,31, 27,22,24, 21,15,23, 00,00,00 ; PREDEFPAL_RB_PURPLEMON
+	RGB 31,31,31, 28,20,15, 21,14,09, 00,00,00 ; PREDEFPAL_RB_BROWNMON
+	RGB 31,31,31, 20,26,16, 09,20,11, 00,00,00 ; PREDEFPAL_RB_GREENMON
+	RGB 31,31,31, 30,22,24, 28,15,21, 00,00,00 ; PREDEFPAL_RB_PINKMON
+	RGB 31,31,31, 31,28,14, 26,20,00, 00,00,00 ; PREDEFPAL_RB_YELLOWMON
+	RGB 31,31,31, 26,21,22, 15,15,18, 00,00,00 ; PREDEFPAL_CGB_BADGE
+	RGB 31,31,31, 23,19,13, 14,12,17, 00,00,00 ; PREDEFPAL_MEWMON_NITE
+	RGB 31,31,31, 16,18,21, 10,12,18, 00,00,00 ; PREDEFPAL_BLUEMON_NITE
+	RGB 31,31,31, 22,15,16, 17,02,05, 00,00,00 ; PREDEFPAL_REDMON_NITE
+	RGB 31,31,31, 15,20,20, 05,16,16, 00,00,00 ; PREDEFPAL_CYANMON_NITE
+	RGB 31,31,31, 23,15,19, 14,04,12, 00,00,00 ; PREDEFPAL_PURPLEMON_NITE
+	RGB 31,31,31, 20,17,18, 18,13,11, 00,00,00 ; PREDEFPAL_BROWNMON_NITE
+	RGB 31,31,31, 23,21,16, 12,12,10, 00,00,00 ; PREDEFPAL_GREENMON_NITE
+	RGB 31,31,31, 21,25,29, 30,22,24, 00,00,00 ; PREDEFPAL_PINKMON_NITE
+	RGB 31,31,31, 26,23,16, 29,14,09, 00,00,00 ; PREDEFPAL_YELLOWMON_NITE
+	RGB 31,31,31, 18,18,18, 10,10,10, 00,00,00 ; PREDEFPAL_PARTY_ICON
+	RGB 31,31,31, 30,26,15, 00,23,00, 00,00,00 ; PREDEFPAL_HP_GREEN
+	RGB 31,31,31, 30,26,15, 31,23,00, 00,00,00 ; PREDEFPAL_HP_YELLOW
+	RGB 31,31,31, 30,26,15, 31,00,00, 00,00,00 ; PREDEFPAL_HP_RED
+	RGB 31,31,31, 29,26,19, 27,20,14, 00,00,00 ; PREDEFPAL_POKEGEAR
+	RGB 31,31,31, 24,20,10, 21,00,04, 00,00,00 ; PREDEFPAL_33
+	RGB 31,31,31, 31,20,10, 21,00,04, 00,00,00 ; PREDEFPAL_34
+	RGB 31,31,31, 30,26,16, 16,12,09, 00,00,00 ; PREDEFPAL_GS_INTRO_GAMEFREAK_LOGO
+	RGB 31,31,31, 15,28,26, 12,22,26, 03,16,14 ; PREDEFPAL_GS_INTRO_SHELLDER_LAPRAS
+	RGB 31,31,31, 15,28,26, 23,24,24, 00,00,00 ; PREDEFPAL_37
+	RGB 31,31,24, 07,27,19, 26,20,10, 19,12,08 ; PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
+	RGB 31,31,31, 31,28,14, 31,13,31, 00,00,00 ; PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
+	RGB 31,31,31, 16,18,21, 10,12,18, 00,00,00 ; PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
+	RGB 31,31,31, 23,21,16, 12,12,10, 00,00,00 ; PREDEFPAL_3B
+	RGB 31,31,31, 31,14,00, 07,11,15, 00,00,00 ; PREDEFPAL_PACK
+	RGB 31,31,31, 26,21,22, 26,10,06, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_0
+	RGB 31,31,31, 30,27,04, 24,20,11, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_1
+	RGB 31,31,31, 31,13,25, 24,20,11, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_2
+	RGB 31,31,31, 16,19,29, 24,20,11, 00,00,00 ; PREDEFPAL_SLOT_MACHINE_3
+	RGB 31,31,31, 30,22,24, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_0
+	RGB 31,31,31, 21,25,29, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_1
+	RGB 31,31,31, 20,26,16, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_2
+	RGB 31,31,31, 31,28,14, 18,18,18, 16,10,07 ; PREDEFPAL_SCGB_11_3
+	RGB 31,31,31, 18,18,18, 26,10,06, 00,00,00 ; PREDEFPAL_45
+	RGB 31,31,31, 30,22,24, 28,15,21, 00,00,00 ; PREDEFPAL_46
+	RGB 31,31,31, 26,20,00, 16,19,29, 00,00,00 ; PREDEFPAL_47
+	RGB 31,31,31, 16,02,30, 15,20,31, 00,00,00 ; PREDEFPAL_GS_TITLE_SCREEN_0
+	RGB 31,31,31, 16,13,04, 15,20,31, 00,00,00 ; PREDEFPAL_GS_TITLE_SCREEN_1
+	RGB 31,31,31, 28,04,02, 15,20,31, 00,00,00 ; PREDEFPAL_GS_TITLE_SCREEN_2
+	RGB 31,31,31, 18,23,31, 15,20,31, 00,00,00 ; PREDEFPAL_GS_TITLE_SCREEN_3
+	RGB 31,31,31, 24,20,11, 18,13,11, 00,00,00 ; PREDEFPAL_UNOWN_PUZZLE
+	RGB 31,31,31, 31,31,31, 25,30,00, 25,30,00 ; PREDEFPAL_4D
+	RGB 00,00,00, 08,11,11, 21,21,21, 31,31,31 ; PREDEFPAL_GAMEFREAK_LOGO
--- /dev/null
+++ b/gfx/sgb/sgb_border.bin
@@ -1,0 +1,2 @@
+TTTTTTT$%&T&T%T$TTTTTTTTT$455T4T3TTTT!"##T"T!T T	
+
	
) !"##T"T!T122T688888888888888888888'2TT2T1TTT7TTTTT7TTT%&T&T7&T&T%T3455T4T7455T4T3T7TTT7TTT7"T!T T7 !"2T1T0T7012TTT7TTT7&T%T$T7$%&4T3TT7347TT7TTTTT7TTT!"##T"T7"##T"T!T122T72TT2T1TTT.////////////////////-TTTTTTT9	()*+,9TTT%&T&T%T$TTTT$%&T&T%T3455T4T$TTTTTT$455T4T3T !"##T"T!T T
\ No newline at end of file
--- /dev/null
+++ b/gfx/sgb/sgb_border.pal
@@ -1,0 +1,79 @@
+	RGB 24, 06, 06
+	RGB 24, 24, 26
+	RGB 14, 15, 20
+	RGB 04, 07, 10
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 18, 24, 18
+	RGB 31, 26, 15
+	RGB 26, 19, 10
+	RGB 12, 07, 05
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 18, 06, 31
+	RGB 31, 31, 29
+	RGB 31, 12, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 12, 31, 06
+	RGB 22, 26, 30
+	RGB 16, 17, 21
+	RGB 00, 03, 00
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
+	RGB 31, 31, 25
binary files a/gfx/sgb/sgb_border.png b/gfx/sgb/sgb_border.png differ
binary files a/gfx/shrink/shrink1.2bpp.lz.d4443930 /dev/null differ
binary files a/gfx/shrink/shrink1.png /dev/null differ
binary files a/gfx/shrink/shrink2.2bpp.lz.3f58480a /dev/null differ
binary files a/gfx/shrink/shrink2.png /dev/null differ
--- /dev/null
+++ b/gfx/slots/slots.pal
@@ -1,0 +1,79 @@
+	RGB 31, 31, 31
+	RGB 24, 25, 28
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 30, 10, 06
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 31, 00
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 15, 31
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 15, 21, 31
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 11
+	RGB 31, 31, 06
+	RGB 24, 24, 09
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 16, 19, 29
+	RGB 25, 22, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 30, 10, 06
+	RGB 31, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 12, 25, 01
+	RGB 05, 14, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 12, 25, 01
+	RGB 30, 10, 06
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 06
+	RGB 20, 15, 03
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 06
+	RGB 15, 21, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 06
+	RGB 20, 15, 03
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 24, 21
+	RGB 31, 13, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/splash/logo.pal
@@ -1,0 +1,4 @@
+	RGB 31, 31, 31
+	RGB 13, 11, 00
+	RGB 23, 12, 28
+	RGB 00, 00, 00
binary files a/gfx/stats/exp_bar_ends.png /dev/null differ
--- /dev/null
+++ b/gfx/stats/pages.pal
@@ -1,0 +1,15 @@
+; 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
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/stats/party_menu_bg.pal
@@ -1,0 +1,4 @@
+	RGB 31, 31, 31
+	RGB 17, 19, 31
+	RGB 14, 16, 31
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/stats/party_menu_bg_mobile.pal
@@ -1,0 +1,4 @@
+	RGB 31, 31, 31
+	RGB 31, 19, 24
+	RGB 30, 10, 06
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/stats/party_menu_ob.pal
@@ -1,0 +1,69 @@
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 10, 14, 20
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 27, 31, 27
+	RGB 31, 19, 10
+	RGB 31, 07, 04
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 07, 07, 07
+
+	RGB 31, 31, 31
+	RGB 31, 31, 07
+	RGB 31, 16, 01
+	RGB 07, 07, 07
+
+	RGB 31, 31, 31
+	RGB 31, 19, 24
+	RGB 30, 10, 06
+	RGB 07, 07, 07
+
+	RGB 31, 31, 31
+	RGB 12, 25, 01
+	RGB 05, 14, 00
+	RGB 07, 07, 07
+
+	RGB 31, 31, 31
+	RGB 08, 12, 31
+	RGB 01, 04, 31
+	RGB 07, 07, 07
+
+	RGB 31, 31, 31
+	RGB 24, 18, 07
+	RGB 20, 15, 03
+	RGB 07, 07, 07
binary files a/gfx/stats/shiny.png /dev/null differ
--- /dev/null
+++ b/gfx/stats/stats.pal
@@ -1,0 +1,6 @@
+; pink
+	RGB 31, 19, 31
+; green
+	RGB 21, 31, 14
+; blue
+	RGB 17, 31, 31
binary files a/gfx/stats/stats_tiles.png b/gfx/stats/stats_tiles.png differ
--- /dev/null
+++ b/gfx/tilesets.asm
@@ -1,0 +1,435 @@
+tilecoll: MACRO
+; used in data/tilesets/*_collision.asm
+	db COLL_\1, COLL_\2, COLL_\3, COLL_\4
+ENDM
+
+
+SECTION "Tileset Data 1", ROMX
+
+TilesetKantoGFX: ; 0x18000
+INCBIN "gfx/tilesets/kanto.2bpp.lz"
+; 0x18606
+
+TilesetKantoMeta: ; 0x18606
+INCBIN "data/tilesets/kanto_metatiles.bin"
+; 0x18e06
+
+TilesetKantoColl: ; 0x18e06
+INCLUDE "data/tilesets/kanto_collision.asm"
+; 0x19006
+
+Tileset0GFX: ; 0x19006
+TilesetJohtoGFX: ; 0x19006
+INCBIN "gfx/tilesets/johto.2bpp.lz"
+; 0x19c0e
+
+Tileset0Meta: ; 0x19c0e
+TilesetJohtoMeta: ; 0x19c0e
+INCBIN "data/tilesets/johto_metatiles.bin"
+; 0x1a40e
+
+Tileset0Coll: ; 0x1a40e
+TilesetJohtoColl: ; 0x1a40e
+INCLUDE "data/tilesets/johto_collision.asm"
+; 0x1a60e
+
+TilesetIcePathGFX: ; 0x1a60e
+INCBIN "gfx/tilesets/ice_path.2bpp.lz"
+; 0x1af3e
+
+TilesetIcePathMeta: ; 0x1af3e
+INCBIN "data/tilesets/ice_path_metatiles.bin"
+; 0x1b33e
+
+TilesetIcePathColl: ; 0x1b33e
+INCLUDE "data/tilesets/ice_path_collision.asm"
+; 0x1b43e
+
+TilesetPlayersRoomGFX: ; 0x1b43e
+INCBIN "gfx/tilesets/players_room.2bpp.lz"
+; 0x1b8fe
+
+TilesetPlayersRoomMeta: ; 0x1b8fe
+INCBIN "data/tilesets/players_room_metatiles.bin"
+; 0x1bcfe
+
+TilesetPlayersRoomColl: ; 0x1bcfe
+INCLUDE "data/tilesets/players_room_collision.asm"
+; 0x1bdfe
+
+
+SECTION "Tileset Data 2", ROMX
+
+TilesetPokecenterGFX: ; 0x1c30c
+INCBIN "gfx/tilesets/pokecenter.2bpp.lz"
+; 0x1c73c
+
+TilesetPokecenterMeta: ; 0x1c73c
+INCBIN "data/tilesets/pokecenter_metatiles.bin"
+; 0x1cb3c
+
+TilesetPokecenterColl: ; 0x1cb3c
+INCLUDE "data/tilesets/pokecenter_collision.asm"
+; 0x1cc3c
+
+TilesetPortGFX: ; 0x1cc3c
+INCBIN "gfx/tilesets/port.2bpp.lz"
+; 0x1d04c
+
+TilesetPortMeta: ; 0x1d04c
+INCBIN "data/tilesets/port_metatiles.bin"
+; 0x1d44c
+
+TilesetPortColl: ; 0x1d44c
+INCLUDE "data/tilesets/port_collision.asm"
+; 0x1d54c
+
+TilesetPlayersHouseGFX: ; 0x1d54c
+INCBIN "gfx/tilesets/players_house.2bpp.lz"
+; 0x1d92c
+
+TilesetPlayersHouseMeta: ; 0x1d92c
+INCBIN "data/tilesets/players_house_metatiles.bin"
+; 0x1dd2c
+
+TilesetPlayersHouseColl: ; 0x1dd2c
+INCLUDE "data/tilesets/players_house_collision.asm"
+; 0x1de2c
+
+TilesetMansionGFX: ; 0x1de2c
+INCBIN "gfx/tilesets/mansion.2bpp.lz"
+; 0x1e58c
+
+TilesetMansionMeta: ; 0x1e58c
+INCBIN "data/tilesets/mansion_metatiles.bin"
+; 0x1e98c
+
+TilesetMansionColl: ; 0x1e98c
+INCLUDE "data/tilesets/mansion_collision.asm"
+; 0x1ea8c
+
+TilesetCaveGFX: ; 0x1ea8c
+INCBIN "gfx/tilesets/cave.2bpp.lz"
+; 0x1ee1c
+
+TilesetCaveMeta: ; 0x1ee1c
+TilesetDarkCaveMeta: ; 0x1ee1c
+INCBIN "data/tilesets/cave_metatiles.bin"
+; 0x1f21c
+
+TilesetCaveColl: ; 0x1f21c
+TilesetDarkCaveColl: ; 0x1f21c
+INCLUDE "data/tilesets/cave_collision.asm"
+; 0x1f31c
+
+
+SECTION "Tileset Data 3", ROMX
+
+TilesetTowerGFX: ; 0x20181
+INCBIN "gfx/tilesets/tower.2bpp.lz"
+; 0x206e1
+
+TilesetTowerMeta: ; 0x206e1
+INCBIN "data/tilesets/tower_metatiles.bin"
+; 0x20ae1
+
+TilesetTowerColl: ; 0x20ae1
+INCLUDE "data/tilesets/tower_collision.asm"
+; 0x20be1
+
+TilesetLabGFX: ; 0x20be1
+INCBIN "gfx/tilesets/lab.2bpp.lz"
+; 0x213e1
+
+TilesetLabMeta: ; 0x213e1
+INCBIN "data/tilesets/lab_metatiles.bin"
+; 0x217e1
+
+TilesetLabColl: ; 0x217e1
+INCLUDE "data/tilesets/lab_collision.asm"
+; 0x218e1
+
+TilesetMartGFX: ; 0x218e1
+INCBIN "gfx/tilesets/mart.2bpp.lz"
+; 0x22031
+
+TilesetMartMeta: ; 0x22031
+INCBIN "data/tilesets/mart_metatiles.bin"
+; 0x22431
+
+TilesetMartColl: ; 0x22431
+INCLUDE "data/tilesets/mart_collision.asm"
+; 0x22531
+
+TilesetGameCornerGFX: ; 0x22531
+INCBIN "gfx/tilesets/game_corner.2bpp.lz"
+; 0x22af1
+
+TilesetGameCornerMeta: ; 0x22af1
+INCBIN "data/tilesets/game_corner_metatiles.bin"
+; 0x22ef1
+
+TilesetGameCornerColl: ; 0x22ef1
+INCLUDE "data/tilesets/game_corner_collision.asm"
+; 0x22ff1
+
+TilesetTrainStationGFX: ; 0x22ff1
+INCBIN "gfx/tilesets/train_station.2bpp.lz"
+; 0x23391
+
+TilesetTrainStationMeta: ; 0x23391
+INCBIN "data/tilesets/train_station_metatiles.bin"
+; 0x23791
+
+TilesetTrainStationColl: ; 0x23791
+INCLUDE "data/tilesets/train_station_collision.asm"
+; 0x23891
+
+TilesetForestMeta: ; 0x23891
+INCBIN "data/tilesets/forest_metatiles.bin"
+; 0x23b11
+
+
+SECTION "Tileset Data 4", ROMX
+
+TilesetEliteFourRoomGFX: ; 0x30000
+INCBIN "gfx/tilesets/elite_four_room.2bpp.lz"
+; 0x304e0
+
+TilesetEliteFourRoomMeta: ; 0x304e0
+INCBIN "data/tilesets/elite_four_room_metatiles.bin"
+; 0x308e0
+
+TilesetEliteFourRoomColl: ; 0x308e0
+INCLUDE "data/tilesets/elite_four_room_collision.asm"
+; 0x309e0
+
+TilesetParkGFX: ; 0x309e0
+INCBIN "gfx/tilesets/park.2bpp.lz"
+; 0x30e80
+
+TilesetParkMeta: ; 0x30e80
+INCBIN "data/tilesets/park_metatiles.bin"
+; 0x31280
+
+TilesetParkColl: ; 0x31280
+INCLUDE "data/tilesets/park_collision.asm"
+; 0x31380
+
+TilesetRadioTowerGFX: ; 0x31380
+INCBIN "gfx/tilesets/radio_tower.2bpp.lz"
+; 0x318e0
+
+TilesetRadioTowerMeta: ; 0x318e0
+INCBIN "data/tilesets/radio_tower_metatiles.bin"
+; 0x31ce0
+
+TilesetRadioTowerColl: ; 0x31ce0
+INCLUDE "data/tilesets/radio_tower_collision.asm"
+; 0x31de0
+
+TilesetUndergroundGFX: ; 0x31de0
+INCBIN "gfx/tilesets/underground.2bpp.lz"
+; 0x321b0
+
+TilesetUndergroundMeta: ; 0x321b0
+INCBIN "data/tilesets/underground_metatiles.bin"
+; 0x325b0
+
+TilesetUndergroundColl: ; 0x325b0
+INCLUDE "data/tilesets/underground_collision.asm"
+; 0x326b0
+
+TilesetDarkCaveGFX: ; 0x326b0
+INCBIN "gfx/tilesets/dark_cave.2bpp.lz"
+; 0x329f0
+
+UnusedTilesetDarkCaveMeta: ; 0x329f0
+INCBIN "data/tilesets/unused_dark_cave_metatiles.bin"
+; 0x331f0
+
+UnusedTilesetDarkCaveColl: ; 0x331f0
+INCLUDE "data/tilesets/unused_dark_cave_collision.asm"
+; 0x333f0
+
+
+SECTION "Tileset Data 5", ROMX
+
+TilesetPokeComCenterGFX: ; 0xb4000
+INCBIN "gfx/tilesets/pokecom_center.2bpp.lz"
+; 0xb48a0
+
+TilesetPokeComCenterMeta: ; 0xb48a0
+INCBIN "data/tilesets/pokecom_center_metatiles.bin"
+; 0xb4ca0
+
+TilesetPokeComCenterColl: ; 0xb4ca0
+INCLUDE "data/tilesets/pokecom_center_collision.asm"
+; 0xb4da0
+
+TilesetBattleTowerGFX: ; 0xb4da0
+INCBIN "gfx/tilesets/battle_tower.2bpp.lz"
+; 0xb50e0
+
+TilesetBattleTowerMeta: ; 0xb50e0
+INCBIN "data/tilesets/battle_tower_metatiles.bin"
+; 0xb54e0
+
+TilesetBattleTowerColl: ; 0xb54e0
+INCLUDE "data/tilesets/battle_tower_collision.asm"
+; 0xb55e0
+
+TilesetGateGFX: ; 0xb55e0
+INCBIN "gfx/tilesets/gate.2bpp.lz"
+; 0xb59e0
+
+TilesetGateMeta: ; 0xb59e0
+INCBIN "data/tilesets/gate_metatiles.bin"
+; 0xb5de0
+
+TilesetGateColl: ; 0xb5de0
+INCLUDE "data/tilesets/gate_collision.asm"
+; 0xb5ee0
+
+TilesetJohtoModernGFX: ; 0xb5ee0
+TilesetBattleTowerOutsideGFX: ; 0xb5ee0
+INCBIN "gfx/tilesets/johto_modern.2bpp.lz"
+; 0xb6ae8
+
+TilesetJohtoModernMeta: ; 0xb6ae8
+INCBIN "data/tilesets/johto_modern_metatiles.bin"
+; 0xb72e8
+
+TilesetJohtoModernColl: ; 0xb72e8
+INCLUDE "data/tilesets/johto_modern_collision.asm"
+; 0xb74e8
+
+TilesetTraditionalHouseGFX: ; 0xb74e8
+INCBIN "gfx/tilesets/traditional_house.2bpp.lz"
+; 0xb79a8
+
+TilesetTraditionalHouseMeta: ; 0xb79a8
+INCBIN "data/tilesets/traditional_house_metatiles.bin"
+; 0xb7da8
+
+TilesetTraditionalHouseColl: ; 0xb7da8
+INCLUDE "data/tilesets/traditional_house_collision.asm"
+; 0xb7ea8
+
+
+SECTION "Tileset Data 6", ROMX
+
+TilesetForestGFX: ; 0xdc000
+INCBIN "gfx/tilesets/forest.2bpp.lz"
+; 0xdc3d0
+
+TilesetChampionsRoomGFX: ; 0xdc3d0
+INCBIN "gfx/tilesets/champions_room.2bpp.lz"
+; 0xdcc50
+
+TilesetChampionsRoomMeta: ; 0xdcc50
+INCBIN "data/tilesets/champions_room_metatiles.bin"
+; 0xdd050
+
+TilesetChampionsRoomColl: ; 0xdd050
+INCLUDE "data/tilesets/champions_room_collision.asm"
+; 0xdd150
+
+TilesetHouseGFX: ; 0xdd150
+INCBIN "gfx/tilesets/house.2bpp.lz"
+; 0xdd600
+
+TilesetHouseMeta: ; 0xdd600
+INCBIN "data/tilesets/house_metatiles.bin"
+; 0xdda00
+
+TilesetHouseColl: ; 0xdda00
+INCLUDE "data/tilesets/house_collision.asm"
+; 0xddb00
+
+TilesetLighthouseGFX: ; 0xddb00
+INCBIN "gfx/tilesets/lighthouse.2bpp.lz"
+; 0xddf70
+
+TilesetLighthouseMeta: ; 0xddf70
+INCBIN "data/tilesets/lighthouse_metatiles.bin"
+; 0xde370
+
+TilesetLighthouseColl: ; 0xde370
+INCLUDE "data/tilesets/lighthouse_collision.asm"
+; 0xde470
+
+TilesetForestColl: ; 0xde470
+INCLUDE "data/tilesets/forest_collision.asm"
+; 0xde570
+
+TilesetFacilityGFX: ; 0xde570
+INCBIN "gfx/tilesets/facility.2bpp.lz"
+; 0xde990
+
+TilesetFacilityMeta: ; 0xde990
+INCBIN "data/tilesets/facility_metatiles.bin"
+; 0xded90
+
+TilesetFacilityColl: ; 0xded90
+INCLUDE "data/tilesets/facility_collision.asm"
+; 0xdee90
+
+TilesetBattleTowerOutsideMeta: ; 0xdee90
+INCBIN "data/tilesets/battle_tower_outside_metatiles.bin"
+; 0xdf690
+
+TilesetBattleTowerOutsideColl: ; 0xdf690
+INCLUDE "data/tilesets/battle_tower_outside_collision.asm"
+; 0xdf890
+
+TilesetBetaWordRoomMeta: ; 0xdf890
+INCBIN "data/tilesets/beta_word_room_metatiles.bin"
+; 0xdfc90
+
+TilesetBetaWordRoomColl: ; 0xdfc90
+TilesetHoOhWordRoomColl: ; 0xdfc90
+TilesetKabutoWordRoomColl: ; 0xdfc90
+TilesetOmanyteWordRoomColl: ; 0xdfc90
+TilesetAerodactylWordRoomColl: ; 0xdfc90
+INCLUDE "data/tilesets/beta_word_room_collision.asm"
+; 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 "data/tilesets/ruins_of_alph_metatiles.bin"
+; 0x1dd5a9
+
+TilesetRuinsOfAlphColl: ; 0x1dd5a9
+INCLUDE "data/tilesets/ruins_of_alph_collision.asm"
+; 0x1dd6a9
+
+
+SECTION "Tileset Data 8", ROMX
+
+TilesetHoOhWordRoomMeta: ; 0x1e0000
+INCBIN "data/tilesets/ho_oh_word_room_metatiles.bin"
+; 0x1e0400
+
+TilesetKabutoWordRoomMeta: ; 0x1e0400
+INCBIN "data/tilesets/kabuto_word_room_metatiles.bin"
+; 0x1e0800
+
+TilesetOmanyteWordRoomMeta: ; 0x1e0800
+INCBIN "data/tilesets/omanyte_word_room_metatiles.bin"
+; 0x1e0c00
+
+TilesetAerodactylWordRoomMeta: ; 0x1e0c00
+INCBIN "data/tilesets/aerodactyl_word_room_metatiles.bin"
+; 0x1e1000
binary files a/gfx/tilesets/aerodactyl_word_room.png b/gfx/tilesets/aerodactyl_word_room.png differ
--- /dev/null
+++ b/gfx/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
--- /dev/null
+++ b/gfx/tilesets/battle_tower.pal
@@ -1,0 +1,40 @@
+; 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
+	RGB 00, 00, 00
binary files a/gfx/tilesets/battle_tower.png b/gfx/tilesets/battle_tower.png differ
binary files a/gfx/tilesets/battle_tower_outside.png b/gfx/tilesets/battle_tower_outside.png differ
--- /dev/null
+++ b/gfx/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/gfx/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 a/gfx/tilesets/beta_word_room.png b/gfx/tilesets/beta_word_room.png differ
--- /dev/null
+++ b/gfx/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
--- /dev/null
+++ b/gfx/tilesets/bg_tiles.pal
@@ -1,0 +1,61 @@
+; morn
+	RGB 28,31,16, 21,21,21, 13,13,13, 07,07,07 ; gray
+	RGB 28,31,16, 31,19,24, 30,10,06, 07,07,07 ; red
+	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; green
+	RGB 31,31,31, 08,12,31, 01,04,31, 07,07,07 ; water
+	RGB 28,31,16, 31,31,07, 31,16,01, 07,07,07 ; yellow
+	RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; brown
+	RGB 28,31,16, 15,31,31, 05,17,31, 07,07,07 ; roof
+	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
+
+; day
+	RGB 27,31,27, 21,21,21, 13,13,13, 07,07,07 ; gray
+	RGB 27,31,27, 31,19,24, 30,10,06, 07,07,07 ; red
+	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; green
+	RGB 31,31,31, 08,12,31, 01,04,31, 07,07,07 ; water
+	RGB 27,31,27, 31,31,07, 31,16,01, 07,07,07 ; yellow
+	RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; brown
+	RGB 27,31,27, 15,31,31, 05,17,31, 07,07,07 ; roof
+	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
+
+; nite
+	RGB 15,14,24, 11,11,19, 07,07,12, 00,00,00 ; gray
+	RGB 15,14,24, 14,07,17, 13,00,08, 00,00,00 ; red
+	RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; green
+	RGB 15,14,24, 05,05,17, 03,03,10, 00,00,00 ; water
+	RGB 30,30,11, 16,14,18, 16,14,10, 00,00,00 ; yellow
+	RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; brown
+	RGB 15,14,24, 13,12,23, 11,09,20, 00,00,00 ; roof
+	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
+
+; dark
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; gray
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; red
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; green
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; water
+	RGB 30,30,11, 00,00,00, 00,00,00, 00,00,00 ; yellow
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; brown
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; roof
+	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
+
+; indoor
+	RGB 30,28,26, 19,19,19, 13,13,13, 07,07,07 ; gray
+	RGB 30,28,26, 31,19,24, 30,10,06, 07,07,07 ; red
+	RGB 18,24,09, 15,20,01, 09,13,00, 07,07,07 ; green
+	RGB 30,28,26, 15,16,31, 09,09,31, 07,07,07 ; water
+	RGB 30,28,26, 31,31,07, 31,16,01, 07,07,07 ; yellow
+	RGB 26,24,17, 21,17,07, 16,13,03, 07,07,07 ; brown
+	RGB 30,28,26, 17,19,31, 14,16,31, 07,07,07 ; roof
+	RGB 31,31,16, 31,31,16, 14,09,00, 00,00,00 ; text
+
+; 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
+	RGB 00, 00, 00
binary files a/gfx/tilesets/cave.png b/gfx/tilesets/cave.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/celadon_mansion.2bpp.lz.63b414d4 /dev/null differ
binary files a/gfx/tilesets/celadon_mansion.png /dev/null differ
binary files /dev/null b/gfx/tilesets/champions_room.2bpp.lz.93800351 differ
binary files /dev/null b/gfx/tilesets/champions_room.png differ
--- /dev/null
+++ b/gfx/tilesets/champions_room_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/gfx/tilesets/dark_cave.2bpp.lz.25b9c4b6 differ
binary files /dev/null b/gfx/tilesets/dark_cave.png differ
--- /dev/null
+++ b/gfx/tilesets/dark_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/gfx/tilesets/elite_four_room.2bpp.lz.c1f2ed8f differ
binary files /dev/null b/gfx/tilesets/elite_four_room.png differ
--- /dev/null
+++ b/gfx/tilesets/elite_four_room_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/gfx/tilesets/facility.2bpp.lz.454cfd8b differ
binary files /dev/null b/gfx/tilesets/facility.png differ
--- /dev/null
+++ b/gfx/tilesets/facility_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/gfx/tilesets/forest.2bpp.lz.6b0ac896 differ
binary files /dev/null b/gfx/tilesets/forest.png differ
--- /dev/null
+++ b/gfx/tilesets/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 a/gfx/tilesets/game_corner.png b/gfx/tilesets/game_corner.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/gate.png b/gfx/tilesets/gate.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/gym_1.2bpp.lz.c1f2ed8f /dev/null differ
binary files a/gfx/tilesets/gym_1.png /dev/null differ
binary files a/gfx/tilesets/ho_oh_word_room.png b/gfx/tilesets/ho_oh_word_room.png differ
--- /dev/null
+++ b/gfx/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
binary files /dev/null b/gfx/tilesets/house.2bpp.lz.c848ef13 differ
--- /dev/null
+++ b/gfx/tilesets/house.pal
@@ -1,0 +1,40 @@
+; 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
+	RGB 00, 00, 00
binary files /dev/null b/gfx/tilesets/house.png differ
binary files a/gfx/tilesets/house_1.2bpp.lz.c848ef13 /dev/null differ
binary files a/gfx/tilesets/house_1.png /dev/null differ
--- /dev/null
+++ b/gfx/tilesets/house_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
--- /dev/null
+++ b/gfx/tilesets/ice_path.pal
@@ -1,0 +1,40 @@
+; 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
+	RGB 00, 00, 00
binary files a/gfx/tilesets/ice_path.png b/gfx/tilesets/ice_path.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/ilex_forest.2bpp.lz.6b0ac896 /dev/null differ
binary files a/gfx/tilesets/ilex_forest.png /dev/null differ
binary files /dev/null b/gfx/tilesets/johto.2bpp.lz.0c7e555a differ
binary files /dev/null b/gfx/tilesets/johto.png differ
binary files a/gfx/tilesets/johto_1.2bpp.lz.0c7e555a /dev/null differ
binary files a/gfx/tilesets/johto_1.png /dev/null differ
binary files a/gfx/tilesets/johto_2.2bpp.lz.391603fb /dev/null differ
binary files a/gfx/tilesets/johto_2.png /dev/null differ
binary files /dev/null b/gfx/tilesets/johto_modern.2bpp.lz.391603fb differ
binary files /dev/null b/gfx/tilesets/johto_modern.png differ
--- /dev/null
+++ b/gfx/tilesets/johto_modern_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
--- /dev/null
+++ b/gfx/tilesets/johto_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 a/gfx/tilesets/kabuto_word_room.png b/gfx/tilesets/kabuto_word_room.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/kanto.png b/gfx/tilesets/kanto.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/kurts_house.2bpp.lz.dd51d079 /dev/null differ
binary files a/gfx/tilesets/kurts_house.png /dev/null differ
binary files a/gfx/tilesets/lab.png b/gfx/tilesets/lab.png differ
--- /dev/null
+++ b/gfx/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/gfx/tilesets/lava/1.png differ
binary files /dev/null b/gfx/tilesets/lava/2.png differ
binary files /dev/null b/gfx/tilesets/lava/3.png differ
binary files /dev/null b/gfx/tilesets/lava/4.png differ
binary files a/gfx/tilesets/lighthouse.png b/gfx/tilesets/lighthouse.png differ
--- /dev/null
+++ b/gfx/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/gfx/tilesets/mansion.2bpp.lz.63b414d4 differ
binary files /dev/null b/gfx/tilesets/mansion.png differ
--- /dev/null
+++ b/gfx/tilesets/mansion_1.pal
@@ -1,0 +1,44 @@
+	RGB 30, 28, 26
+	RGB 19, 19, 19
+	RGB 13, 13, 13
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 31, 19, 24
+	RGB 30, 10, 06
+	RGB 07, 07, 07
+
+	RGB 18, 24, 09
+	RGB 15, 20, 01
+	RGB 09, 13, 00
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 15, 16, 31
+	RGB 09, 09, 31
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 31, 31, 07
+	RGB 31, 16, 01
+	RGB 07, 07, 07
+
+	RGB 26, 24, 17
+	RGB 21, 17, 07
+	RGB 16, 13, 03
+	RGB 07, 07, 07
+
+	RGB 30, 28, 26
+	RGB 17, 19, 31
+	RGB 14, 16, 31
+	RGB 07, 07, 07
+
+	RGB 31, 31, 16
+	RGB 31, 31, 16
+	RGB 14, 09, 00
+	RGB 00, 00, 00
+
+	RGB 05, 05, 16
+	RGB 08, 19, 28
+	RGB 00, 00, 00
+	RGB 31, 31, 31
--- /dev/null
+++ b/gfx/tilesets/mansion_2.pal
@@ -1,0 +1,4 @@
+	RGB 25, 24, 23
+	RGB 20, 19, 19
+	RGB 14, 16, 31
+	RGB 07, 07, 07
--- /dev/null
+++ b/gfx/tilesets/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
binary files a/gfx/tilesets/mart.png b/gfx/tilesets/mart.png differ
--- /dev/null
+++ b/gfx/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
binary files a/gfx/tilesets/olivine_gym.2bpp.lz.93800351 /dev/null differ
binary files a/gfx/tilesets/olivine_gym.png /dev/null differ
binary files a/gfx/tilesets/omanyte_word_room.png b/gfx/tilesets/omanyte_word_room.png differ
--- /dev/null
+++ b/gfx/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
--- /dev/null
+++ b/gfx/tilesets/palette_maps.asm
@@ -1,0 +1,149 @@
+tilepal: MACRO
+; used in gfx/tilesets/*_palette_map.asm
+; vram bank, pals
+x = \1 << OAM_TILE_BANK
+rept (_NARG +- 1) / 2
+	dn (x | PAL_BG_\3), (x | PAL_BG_\2)
+	shift
+	shift
+endr
+ENDM
+
+
+TilesetKantoPalMap: ; 0x4c075
+INCLUDE "gfx/tilesets/kanto_palette_map.asm"
+; 0x4c0e5
+
+Tileset0PalMap: ; 0x4c0e5
+TilesetJohtoPalMap: ; 0x4c0e5
+INCLUDE "gfx/tilesets/johto_palette_map.asm"
+; 0x4c155
+
+TilesetJohtoModernPalMap: ; 0x4c155
+INCLUDE "gfx/tilesets/johto_modern_palette_map.asm"
+; 0x4c1c5
+
+TilesetHousePalMap: ; 0x4c1c5
+INCLUDE "gfx/tilesets/house_palette_map.asm"
+; 0x4c235
+
+TilesetPlayersHousePalMap: ; 0x4c235
+INCLUDE "gfx/tilesets/players_house_palette_map.asm"
+; 0x4c2a5
+
+TilesetPokecenterPalMap: ; 0x4c2a5
+INCLUDE "gfx/tilesets/pokecenter_palette_map.asm"
+; 0x4c315
+
+TilesetGatePalMap: ; 0x4c315
+INCLUDE "gfx/tilesets/gate_palette_map.asm"
+; 0x4c385
+
+TilesetPortPalMap: ; 0x4c385
+INCLUDE "gfx/tilesets/port_palette_map.asm"
+; 0x4c3f5
+
+TilesetLabPalMap: ; 0x4c3f5
+INCLUDE "gfx/tilesets/lab_palette_map.asm"
+; 0x4c465
+
+TilesetFacilityPalMap: ; 0x4c465
+INCLUDE "gfx/tilesets/facility_palette_map.asm"
+; 0x4c4d5
+
+TilesetMartPalMap: ; 0x4c4d5
+INCLUDE "gfx/tilesets/mart_palette_map.asm"
+; 0x4c545
+
+TilesetMansionPalMap: ; 0x4c545
+INCLUDE "gfx/tilesets/mansion_palette_map.asm"
+; 0x4c5b5
+
+TilesetGameCornerPalMap: ; 0x4c5b5
+INCLUDE "gfx/tilesets/game_corner_palette_map.asm"
+; 0x4c625
+
+TilesetEliteFourRoomPalMap: ; 0x4c625
+INCLUDE "gfx/tilesets/elite_four_room_palette_map.asm"
+; 0x4c695
+
+TilesetTraditionalHousePalMap: ; 0x4c695
+INCLUDE "gfx/tilesets/traditional_house_palette_map.asm"
+; 0x4c705
+
+TilesetTowerPalMap: ; 0x4c705
+INCLUDE "gfx/tilesets/tower_palette_map.asm"
+; 0x4c775
+
+TilesetCavePalMap: ; 0x4c775
+TilesetDarkCavePalMap: ; 0x4c775
+INCLUDE "gfx/tilesets/cave_palette_map.asm"
+; 0x4c7e5
+
+TilesetParkPalMap: ; 0x4c7e5
+INCLUDE "gfx/tilesets/park_palette_map.asm"
+; 0x4c855
+
+TilesetRuinsOfAlphPalMap: ; 0x4c855
+TilesetBetaWordRoomPalMap: ; 0x4c855
+TilesetHoOhWordRoomPalMap: ; 0x4c855
+TilesetKabutoWordRoomPalMap: ; 0x4c855
+TilesetOmanyteWordRoomPalMap: ; 0x4c855
+TilesetAerodactylWordRoomPalMap: ; 0x4c855
+INCLUDE "gfx/tilesets/ruins_of_alph_palette_map.asm"
+; 0x4c8c5
+
+TilesetRadioTowerPalMap: ; 0x4c8c5
+INCLUDE "gfx/tilesets/radio_tower_palette_map.asm"
+; 0x4c935
+
+TilesetTrainStationPalMap: ; 0x4c935
+INCLUDE "gfx/tilesets/train_station_palette_map.asm"
+; 0x4c9a5
+
+TilesetUndergroundPalMap: ; 0x4c9a5
+INCLUDE "gfx/tilesets/underground_palette_map.asm"
+; 0x4ca15
+
+TilesetChampionsRoomPalMap: ; 0x4ca15
+INCLUDE "gfx/tilesets/champions_room_palette_map.asm"
+; 0x4ca85
+
+TilesetLighthousePalMap: ; 0x4ca85
+INCLUDE "gfx/tilesets/lighthouse_palette_map.asm"
+; 0x4caf5
+
+TilesetPlayersRoomPalMap: ; 0x4caf5
+INCLUDE "gfx/tilesets/players_room_palette_map.asm"
+; 0x4cb65
+
+UnusedMuseumPalMap: ; 0x4cb65
+INCLUDE "gfx/tilesets/unused_museum_palette_map.asm"
+; 4cbd5
+
+TilesetIcePathPalMap: ; 0x4cbd5
+INCLUDE "gfx/tilesets/ice_path_palette_map.asm"
+; 0x4cc45
+
+TilesetForestPalMap: ; 0x4cc45
+INCLUDE "gfx/tilesets/forest_palette_map.asm"
+; 0x4ccb5
+
+TilesetPokeComCenterPalMap: ; 0x4ccb5
+INCLUDE "gfx/tilesets/pokecom_center_palette_map.asm"
+; 0x4cd25
+
+TilesetBattleTowerPalMap: ; 0x4cd25
+INCLUDE "gfx/tilesets/battle_tower_palette_map.asm"
+; 0x4cd95
+
+TilesetBattleTowerOutsidePalMap: ; 0x4cd95
+INCLUDE "gfx/tilesets/battle_tower_outside_palette_map.asm"
+; 0x4ce05
+
+; unused
+; 0x4ce05
+rept 26
+	db $06
+endr
+; 0x4ce1f
binary files a/gfx/tilesets/park.png b/gfx/tilesets/park.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/players_house.png b/gfx/tilesets/players_house.png differ
binary files a/gfx/tilesets/players_house_2f.2bpp.lz.35e51007 /dev/null differ
binary files a/gfx/tilesets/players_house_2f.png /dev/null differ
--- /dev/null
+++ b/gfx/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/gfx/tilesets/players_room.2bpp.lz.35e51007 differ
binary files /dev/null b/gfx/tilesets/players_room.png differ
--- /dev/null
+++ b/gfx/tilesets/players_room_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 a/gfx/tilesets/pokecenter.png b/gfx/tilesets/pokecenter.png differ
--- /dev/null
+++ b/gfx/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
--- /dev/null
+++ b/gfx/tilesets/pokecom_center.pal
@@ -1,0 +1,40 @@
+; 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
+	RGB 00, 00, 00
binary files a/gfx/tilesets/pokecom_center.png b/gfx/tilesets/pokecom_center.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/port.png b/gfx/tilesets/port.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/power_plant.2bpp.lz.454cfd8b /dev/null differ
binary files a/gfx/tilesets/power_plant.png /dev/null differ
--- /dev/null
+++ b/gfx/tilesets/radio_tower.pal
@@ -1,0 +1,39 @@
+	RGB 27, 31, 27
+	RGB 21, 21, 21
+	RGB 13, 13, 13
+	RGB 07, 07, 07
+
+	RGB 27, 31, 27
+	RGB 31, 19, 24
+	RGB 30, 10, 06
+	RGB 07, 07, 07
+
+	RGB 08, 12, 31
+	RGB 12, 25, 01
+	RGB 05, 14, 00
+	RGB 07, 07, 07
+
+	RGB 31, 31, 31
+	RGB 08, 12, 31
+	RGB 01, 04, 31
+	RGB 07, 07, 07
+
+	RGB 27, 31, 27
+	RGB 12, 25, 01
+	RGB 05, 14, 00
+	RGB 07, 07, 07
+
+	RGB 27, 31, 27
+	RGB 24, 18, 07
+	RGB 20, 15, 03
+	RGB 07, 07, 07
+
+	RGB 27, 31, 27
+	RGB 15, 31, 31
+	RGB 05, 17, 31
+	RGB 07, 07, 07
+
+	RGB 31, 31, 16
+	RGB 31, 31, 16
+	RGB 14, 09, 00
+	RGB 00, 00, 00
binary files a/gfx/tilesets/radio_tower.png b/gfx/tilesets/radio_tower.png differ
--- /dev/null
+++ b/gfx/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
--- /dev/null
+++ b/gfx/tilesets/roofs.pal
@@ -1,0 +1,107 @@
+; group 0 (unused)
+	RGB 21,21,21, 11,11,11 ; morn/day
+	RGB 21,21,21, 11,11,11; nite
+
+; group 1 (Olivine)
+	RGB 14,17,31, 07,11,15 ; morn/day
+	RGB 09,09,17, 05,07,13; nite
+
+; group 2 (Mahogany)
+	RGB 12,19,00, 06,10,00 ; morn/day
+	RGB 06,09,07, 04,05,06; nite
+
+; group 3 (dungeons)
+	RGB 21,21,21, 11,11,11 ; morn/day
+	RGB 21,21,21, 17,08,07; nite
+
+; group 4 (Ecruteak)
+	RGB 31,19,00, 27,10,05 ; morn/day
+	RGB 15,07,02, 11,04,02; nite
+
+; group 5 (Blackthorn)
+	RGB 11,10,16, 05,06,07 ; morn/day
+	RGB 03,04,08, 00,00,00; nite
+
+; group 6 (Cinnabar)
+	RGB 31,10,00, 18,06,00 ; morn/day
+	RGB 18,05,09, 17,08,07; nite
+
+; group 7 (Cerulean)
+	RGB 17,27,31, 05,15,31 ; morn/day
+	RGB 07,08,22, 07,07,16; nite
+
+; group 8 (Azalea)
+	RGB 22,20,10, 17,14,03 ; morn/day
+	RGB 11,11,05, 10,09,07; nite
+
+; group 9 (Lake of Rage)
+	RGB 31,08,04, 09,09,08 ; morn/day
+	RGB 18,05,09, 09,09,08; nite
+
+; group 10 (Violet)
+	RGB 24,14,31, 13,07,21 ; morn/day
+	RGB 12,03,18, 09,03,15; nite
+
+; group 11 (Goldenrod)
+	RGB 25,25,00, 20,17,08 ; morn/day
+	RGB 12,12,00, 10,09,05; nite
+
+; group 12 (Vermilion)
+	RGB 27,23,01, 23,11,00 ; morn/day
+	RGB 15,11,01, 11,10,01; nite
+
+; group 13 (Pallet)
+	RGB 27,28,31, 17,19,22 ; morn/day
+	RGB 14,14,18, 10,09,13; nite
+
+; group 14 (Pewter)
+	RGB 19,19,16, 10,12,15 ; morn/day
+	RGB 09,09,11, 04,05,07; nite
+
+; group 15 (Mount Moon Square)
+	RGB 14,17,31, 07,11,15 ; morn/day
+	RGB 09,13,19, 07,07,16; nite
+
+; group 16 (Indigo)
+	RGB 21,21,21, 13,13,13 ; morn/day
+	RGB 11,11,19, 07,07,12; nite
+
+; group 17 (Fuchsia)
+	RGB 31,18,29, 17,13,20 ; morn/day
+	RGB 14,06,12, 11,03,10; nite
+
+; group 18 (Lavender)
+	RGB 23,15,31, 16,05,31 ; morn/day
+	RGB 12,07,17, 08,06,10; nite
+
+; group 19 (Silver Cave)
+	RGB 21,21,25, 16,16,16 ; morn/day
+	RGB 13,13,13, 07,07,07; nite
+
+; group 20 (Cable Club)
+	RGB 21,21,21, 11,11,11 ; morn/day
+	RGB 21,21,21, 11,11,11; nite
+
+; group 21 (Celadon)
+	RGB 19,31,15, 31,22,02 ; morn/day
+	RGB 12,13,09, 09,12,03; nite
+
+; group 22 (Cianwood)
+	RGB 15,10,31, 07,05,15 ; morn/day
+	RGB 06,05,17, 02,02,08; nite
+
+; group 23 (Viridian)
+	RGB 21,31,07, 13,25,04 ; morn/day
+	RGB 09,14,08, 06,10,04; nite
+
+; group 24 (New Bark)
+	RGB 20,31,14, 11,23,05 ; morn/day
+	RGB 09,13,08, 06,09,04; nite
+
+; group 25 (Saffron)
+	RGB 31,26,00, 31,15,00 ; morn/day
+	RGB 13,13,01, 08,08,01; nite
+
+; group 26 (Cherrygrove)
+	RGB 31,14,28, 31,05,21 ; morn/day
+	RGB 14,07,17, 13,00,08; nite
binary files a/gfx/tilesets/ruins_of_alph.png b/gfx/tilesets/ruins_of_alph.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/safari/1.png /dev/null differ
binary files a/gfx/tilesets/safari/2.png /dev/null differ
binary files a/gfx/tilesets/safari/3.png /dev/null differ
binary files a/gfx/tilesets/safari/4.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/1.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/10.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/2.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/3.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/4.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/5.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/6.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/7.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/8.png /dev/null differ
binary files a/gfx/tilesets/sprout-pillar/9.png /dev/null differ
binary files a/gfx/tilesets/sprout_tower.2bpp.lz.bc56789c /dev/null differ
binary files a/gfx/tilesets/sprout_tower.png /dev/null differ
binary files /dev/null b/gfx/tilesets/tower-pillar/1.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/10.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/2.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/3.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/4.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/5.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/6.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/7.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/8.png differ
binary files /dev/null b/gfx/tilesets/tower-pillar/9.png differ
binary files /dev/null b/gfx/tilesets/tower.2bpp.lz.bc56789c differ
binary files /dev/null b/gfx/tilesets/tower.png differ
--- /dev/null
+++ b/gfx/tilesets/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
binary files /dev/null b/gfx/tilesets/traditional_house.2bpp.lz.dd51d079 differ
binary files /dev/null b/gfx/tilesets/traditional_house.png differ
--- /dev/null
+++ b/gfx/tilesets/traditional_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 a/gfx/tilesets/train_station.png b/gfx/tilesets/train_station.png differ
--- /dev/null
+++ b/gfx/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 a/gfx/tilesets/underground.png b/gfx/tilesets/underground.png differ
--- /dev/null
+++ b/gfx/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
--- /dev/null
+++ b/gfx/tilesets/unused_museum_palette_map.asm
@@ -1,0 +1,32 @@
+; Matches pokered's "gate" tileset (notable for its Pewter Museum tiles)
+; https://tcrf.net/Pok%C3%A9mon_Gold_and_Silver#Unused_Tile_Palette_Assignment_Data
+
+	tilepal 0, WATER, RED, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
+	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
+	tilepal 0, BROWN, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
+	tilepal 0, ROOF, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF
+	tilepal 0, ROOF, ROOF, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
+	tilepal 0, ROOF, GRAY, ROOF, BROWN, ROOF, ROOF, GRAY, GRAY
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, ROOF
+	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
+	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, WATER, RED, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
+	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
+	tilepal 1, BROWN, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
+	tilepal 1, ROOF, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF
+	tilepal 1, ROOF, ROOF, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
+	tilepal 1, ROOF, GRAY, ROOF, BROWN, ROOF, ROOF, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, ROOF
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
+	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
binary files a/gfx/tilesets/whirl_islands.2bpp.lz.25b9c4b6 /dev/null differ
binary files a/gfx/tilesets/whirl_islands.png /dev/null differ
binary files a/gfx/timeset/background.png /dev/null differ
binary files a/gfx/timeset/down_arrow.png /dev/null differ
binary files a/gfx/timeset/up_arrow.png /dev/null differ
--- /dev/null
+++ b/gfx/title/old_bg.pal
@@ -1,0 +1,56 @@
+	RGB 00, 00, 00
+	RGB 25, 15, 28
+	RGB 22, 11, 28
+	RGB 19, 08, 26
+
+	RGB 00, 00, 00
+	RGB 17, 07, 22
+	RGB 13, 07, 16
+	RGB 19, 08, 26
+
+	RGB 25, 15, 28
+	RGB 22, 11, 28
+	RGB 19, 08, 26
+	RGB 17, 07, 22
+
+	RGB 22, 11, 28
+	RGB 19, 08, 26
+	RGB 17, 07, 22
+	RGB 13, 07, 16
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 12, 12, 12
+
+	RGB 00, 00, 00
+	RGB 01, 11, 23
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 00, 00, 00
+	RGB 22, 10, 31
+	RGB 19, 08, 26
+	RGB 17, 07, 22
+
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+
+	RGB 31, 31, 31
+	RGB 20, 04, 20
+	RGB 16, 08, 16
+	RGB 24, 00, 24
+
+rept 54
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+endr
binary files /dev/null b/gfx/title/old_bg.tilemap differ
--- /dev/null
+++ b/gfx/title/old_fg.pal
@@ -1,0 +1,319 @@
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 12, 12, 12
+
+	RGB 00, 00, 00
+	RGB 01, 11, 23
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 00, 00, 00
+	RGB 31, 22, 00
+	RGB 31, 27, 00
+	RGB 31, 31, 00
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 12, 12, 12
+
+	RGB 00, 00, 00
+	RGB 01, 11, 23
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 16, 31, 00
+	RGB 22, 31, 00
+	RGB 27, 31, 00
+	RGB 31, 31, 00
+
+	RGB 31, 00, 18
+	RGB 31, 31, 31
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 20, 20, 20
+	RGB 12, 12, 12
+
+	RGB 00, 00, 00
+	RGB 01, 11, 23
+	RGB 16, 16, 24
+	RGB 02, 13, 21
+
+	RGB 16, 31, 00
+	RGB 22, 31, 00
+	RGB 27, 31, 00
+	RGB 31, 31, 00
+
+	RGB 24, 18, 31
+	RGB 31, 31, 00
+	RGB 31, 31, 01
+	RGB 31, 31, 03
+
+	RGB 31, 31, 05
+	RGB 31, 31, 08
+	RGB 31, 31, 10
+	RGB 31, 31, 12
+
+	RGB 31, 31, 14
+	RGB 31, 31, 16
+	RGB 31, 31, 18
+	RGB 31, 31, 20
+
+	RGB 31, 31, 22
+	RGB 31, 31, 25
+	RGB 31, 31, 27
+	RGB 31, 31, 29
+
+	RGB 24, 06, 06
+	RGB 01, 01, 01
+	RGB 03, 03, 03
+	RGB 05, 05, 05
+
+	RGB 08, 08, 08
+	RGB 10, 10, 10
+	RGB 12, 12, 12
+	RGB 14, 14, 14
+
+	RGB 16, 16, 16
+	RGB 18, 18, 18
+	RGB 20, 20, 20
+	RGB 22, 22, 22
+
+	RGB 25, 25, 25
+	RGB 27, 27, 27
+	RGB 29, 29, 29
+	RGB 31, 31, 31
+
+	RGB 18, 24, 18
+	RGB 31, 29, 01
+	RGB 31, 27, 03
+	RGB 31, 25, 05
+
+	RGB 31, 22, 08
+	RGB 31, 20, 10
+	RGB 31, 18, 12
+	RGB 31, 16, 14
+
+	RGB 31, 14, 16
+	RGB 31, 12, 18
+	RGB 31, 10, 20
+	RGB 31, 08, 22
+
+	RGB 31, 05, 25
+	RGB 31, 03, 27
+	RGB 31, 01, 29
+	RGB 31, 00, 31
+
+	RGB 18, 06, 31
+	RGB 00, 31, 31
+	RGB 00, 31, 29
+	RGB 00, 31, 27
+
+	RGB 00, 31, 25
+	RGB 00, 31, 22
+	RGB 00, 31, 20
+	RGB 00, 31, 18
+
+	RGB 00, 31, 16
+	RGB 00, 31, 14
+	RGB 00, 31, 12
+	RGB 00, 31, 10
+
+	RGB 00, 31, 08
+	RGB 00, 31, 05
+	RGB 00, 31, 03
+	RGB 00, 31, 01
+
+	RGB 12, 31, 06
+	RGB 00, 00, 31
+	RGB 00, 01, 31
+	RGB 00, 03, 31
+
+	RGB 00, 05, 31
+	RGB 00, 08, 31
+	RGB 00, 10, 31
+	RGB 00, 12, 31
+
+	RGB 00, 14, 31
+	RGB 00, 16, 31
+	RGB 00, 18, 31
+	RGB 00, 20, 31
+
+	RGB 00, 22, 31
+	RGB 00, 25, 31
+	RGB 00, 27, 31
+	RGB 00, 29, 31
+
+	RGB 00, 00, 00
+	RGB 06, 00, 04
+	RGB 19, 02, 09
+	RGB 28, 04, 11
+
+	RGB 31, 07, 16
+	RGB 31, 17, 23
+	RGB 31, 26, 30
+	RGB 07, 05, 10
+
+	RGB 14, 10, 18
+	RGB 20, 20, 25
+	RGB 25, 27, 31
+	RGB 09, 05, 06
+
+	RGB 23, 16, 13
+	RGB 30, 23, 22
+	RGB 31, 28, 28
+	RGB 31, 31, 31
+
+	RGB 06, 31, 31
+	RGB 04, 00, 04
+	RGB 11, 02, 04
+	RGB 17, 02, 04
+
+	RGB 24, 05, 04
+	RGB 28, 07, 04
+	RGB 31, 11, 04
+	RGB 02, 01, 15
+
+	RGB 04, 11, 22
+	RGB 12, 25, 25
+	RGB 20, 31, 31
+	RGB 09, 04, 03
+
+	RGB 22, 11, 08
+	RGB 27, 19, 16
+	RGB 30, 28, 26
+	RGB 31, 31, 31
+
+	RGB 06, 18, 06
+	RGB 04, 04, 02
+	RGB 07, 07, 02
+	RGB 18, 18, 04
+
+	RGB 24, 24, 06
+	RGB 27, 27, 11
+	RGB 31, 31, 20
+	RGB 02, 03, 10
+
+	RGB 04, 05, 13
+	RGB 06, 10, 25
+	RGB 08, 15, 31
+	RGB 04, 00, 06
+
+	RGB 11, 07, 14
+	RGB 21, 16, 23
+	RGB 29, 26, 31
+	RGB 31, 31, 31
+
+	RGB 06, 00, 18
+	RGB 00, 04, 03
+	RGB 02, 09, 05
+	RGB 11, 19, 07
+
+	RGB 16, 24, 08
+	RGB 22, 31, 09
+	RGB 24, 31, 18
+	RGB 03, 01, 03
+
+	RGB 10, 04, 10
+	RGB 20, 08, 20
+	RGB 31, 17, 31
+	RGB 01, 03, 06
+
+	RGB 05, 09, 10
+	RGB 15, 21, 21
+	RGB 23, 25, 25
+	RGB 31, 31, 31
+
+	RGB 00, 18, 31
+	RGB 00, 05, 07
+	RGB 00, 08, 13
+	RGB 00, 12, 17
+
+	RGB 01, 20, 24
+	RGB 04, 27, 31
+	RGB 14, 31, 31
+	RGB 04, 02, 02
+
+	RGB 15, 01, 03
+	RGB 26, 04, 07
+	RGB 31, 13, 16
+	RGB 00, 05, 02
+
+	RGB 01, 11, 03
+	RGB 06, 21, 06
+	RGB 13, 31, 16
+	RGB 31, 31, 31
+
+	RGB 00, 06, 06
+	RGB 00, 01, 08
+	RGB 00, 05, 14
+	RGB 00, 08, 19
+
+	RGB 02, 14, 26
+	RGB 04, 21, 31
+	RGB 06, 26, 31
+	RGB 13, 00, 00
+
+	RGB 27, 07, 00
+	RGB 31, 17, 05
+	RGB 31, 25, 16
+	RGB 02, 04, 00
+
+	RGB 07, 11, 03
+	RGB 17, 19, 05
+	RGB 27, 31, 16
+	RGB 31, 31, 31
+
+	RGB 02, 00, 00
+	RGB 04, 01, 06
+	RGB 11, 03, 14
+	RGB 16, 04, 19
+
+	RGB 20, 07, 22
+	RGB 26, 12, 27
+	RGB 26, 20, 31
+	RGB 04, 07, 00
+
+	RGB 16, 20, 07
+	RGB 24, 28, 15
+	RGB 29, 31, 24
+	RGB 05, 02, 02
+
+	RGB 15, 04, 02
+	RGB 24, 11, 10
+	RGB 31, 22, 20
+	RGB 31, 31, 31
+
+	RGB 00, 00, 14
+	RGB 12, 00, 00
+	RGB 27, 05, 00
+	RGB 31, 15, 05
+
+	RGB 31, 26, 13
+	RGB 31, 30, 21
+	RGB 05, 07, 16
+	RGB 04, 16, 20
+
+	RGB 04, 24, 26
+	RGB 08, 31, 31
+	RGB 23, 31, 31
+	RGB 00, 00, 00
+
+	RGB 05, 05, 05
+	RGB 17, 17, 15
+	RGB 28, 28, 24
+	RGB 31, 31, 31
--- /dev/null
+++ b/gfx/title/title.pal
@@ -1,0 +1,81 @@
+; BG
+	RGB 00, 00, 00
+	RGB 19, 00, 00
+	RGB 15, 08, 31
+	RGB 15, 08, 31
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 15, 16, 31
+	RGB 31, 01, 13
+
+	RGB 00, 00, 00
+	RGB 07, 07, 07
+	RGB 31, 31, 31
+	RGB 02, 03, 30
+
+	RGB 00, 00, 00
+	RGB 13, 13, 13
+	RGB 31, 31, 18
+	RGB 02, 03, 30
+
+	RGB 00, 00, 00
+	RGB 19, 19, 19
+	RGB 29, 28, 12
+	RGB 02, 03, 30
+
+	RGB 00, 00, 00
+	RGB 25, 25, 25
+	RGB 28, 25, 06
+	RGB 02, 03, 30
+
+	RGB 00, 00, 00
+	RGB 31, 31, 31
+	RGB 26, 21, 00
+	RGB 02, 03, 30
+
+	RGB 00, 00, 00
+	RGB 11, 11, 19
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+
+; OBJ
+	RGB 00, 00, 00
+	RGB 10, 00, 15
+	RGB 17, 05, 22
+	RGB 19, 09, 31
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/title/unused_gs_bg.pal
@@ -1,0 +1,24 @@
+	RGB 31, 31, 31
+	RGB 18, 23, 31
+	RGB 15, 20, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 22, 00, 31
+	RGB 15, 20, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 31, 00, 00
+	RGB 15, 20, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 25, 22, 00
+	RGB 15, 20, 31
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 23, 26, 31
+	RGB 18, 23, 31
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/title/unused_gs_fg.pal
@@ -1,0 +1,9 @@
+	RGB 31, 31, 31
+	RGB 07, 06, 03
+	RGB 07, 06, 03
+	RGB 07, 06, 03
+
+	RGB 31, 31, 31
+	RGB 31, 31, 00
+	RGB 26, 22, 00
+	RGB 00, 00, 00
--- /dev/null
+++ b/gfx/trade/border.pal
@@ -1,0 +1,29 @@
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 31, 00, 00
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 15, 23, 30
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 16, 16, 16
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 25, 07, 04
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 03, 22, 08
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 07, 09, 31
+	RGB 29, 28, 09
+	RGB 31, 31, 31
binary files a/gfx/trainer_card/leaders.png b/gfx/trainer_card/leaders.png differ
--- /dev/null
+++ b/gfx/unknown/49757.pal
@@ -1,0 +1,39 @@
+	RGB 31, 31, 63
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 31, 63
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 31, 00, 00
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 30, 16, 26
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 16, 16, 16
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 31, 12, 12
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 07, 08, 31
+	RGB 31, 31, 31
+
+	RGB 04, 02, 15
+	RGB 21, 00, 21
+	RGB 29, 28, 09
+	RGB 31, 31, 31
--- /dev/null
+++ b/gfx/unknown/4985a.asm
@@ -1,0 +1,8 @@
+	db $ab,$03, $57,$24, $ac,$0e, $13,$32
+	db $be,$30, $5b,$4c, $47,$60, $ed,$f2
+	db $ab,$03, $55,$26, $aa,$0a, $13,$3a
+	db $be,$28, $33,$24, $6e,$71, $df,$b0
+	db $a8,$00, $e5,$e0, $9a,$fc, $f4,$2c
+	db $fe,$4c, $a3,$5e, $c6,$3a, $ab,$4d
+	db $a8,$00, $b5,$b0, $de,$e8, $fc,$1c
+	db $ba,$66, $f7,$0e, $ba,$5e, $43,$bd
--- /dev/null
+++ b/gfx/unknown/b789.pal
@@ -1,0 +1,19 @@
+	RGB 31, 31, 31
+	RGB 30, 22, 24
+	RGB 18, 18, 18
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 10, 11, 31
+	RGB 18, 18, 18
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 12, 31, 11
+	RGB 18, 18, 18
+	RGB 00, 00, 00
+
+	RGB 31, 31, 31
+	RGB 29, 26, 05
+	RGB 18, 18, 18
+	RGB 00, 00, 00
--- a/home.asm
+++ b/home.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "NULL", ROM0
@@ -44,6 +44,7 @@
 INCLUDE "home/map.asm"
 
 InexplicablyEmptyFunction:: ; 2d43
+; unused
 ; Inexplicably empty.
 ; Seen in PredefPointers.
 rept 16
@@ -57,8 +58,7 @@
 INCLUDE "home/window.asm"
 INCLUDE "home/flag.asm"
 
-Function2ebb:: ; 2ebb
-; unreferenced
+Unreferenced_Function2ebb:: ; 2ebb
 	ld a, [wMonStatusFlags]
 	bit 1, a
 	ret z
@@ -79,8 +79,7 @@
 	ret
 ; 2ecb
 
-Function2ecb:: ; 2ecb
-; unreferenced
+Unreferenced_Function2ecb:: ; 2ecb
 	push hl
 	ld hl, wMonStatusFlags
 	bit 1, [hl]
@@ -182,12 +181,12 @@
 
 HideSprites:: ; 3016
 ; Set all OAM y-positions to 160 to hide them offscreen
-	ld hl, Sprites
-	ld de, 4 ; length of an OAM struct
-	ld b, (SpritesEnd - Sprites) / 4 ; number of OAM structs
-	ld a, 160 ; y
+	ld hl, Sprite01YCoord
+	ld de, SPRITEOAMSTRUCT_LENGTH
+	ld b, NUM_SPRITE_OAM_STRUCTS
+	ld a, SCREEN_WIDTH_PX
 .loop
-	ld [hl], a
+	ld [hl], a ; y
 	add hl, de
 	dec b
 	jr nz, .loop
@@ -552,7 +551,7 @@
 	jr .CopyTilemapAtOnce
 ; 323f
 
-; XXX
+; unused
 	farcall HDMATransferAttrMapAndTileMapToWRAMBank3
 	ret
 ; 3246
@@ -712,7 +711,7 @@
 	ret z
 
 .sgb
-	predef_jump Predef_LoadSGBLayout ; LoadSGBLayout
+	predef_jump LoadSGBLayout
 ; 334e
 
 SetHPPal:: ; 334e
@@ -843,7 +842,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call .WarpAction
 
 	pop bc
@@ -900,7 +899,7 @@
 ; 35b0
 
 .check_on_warp ; 35b0
-	ld hl, wCurrMapWarpHeaderPointer
+	ld hl, wCurrMapWarpsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1127,8 +1126,7 @@
 	jp PrintNum
 ; 384d
 
-Function384d:: ; 384d
-; XXX
+Unreferenced_Function384d:: ; 384d
 ; GetNthMove
 	ld hl, wListMoves_MoveIndicesBuffer
 	ld c, a
@@ -1209,7 +1207,7 @@
 	ld de, StringBuffer1
 
 	push de
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	pop de
 
@@ -1321,8 +1319,7 @@
 	jp AddNTimes
 ; 392d
 
-Function392d:: ; 392d
-; XXX
+Unreferenced_Function392d:: ; 392d
 ; GetDexNumber
 ; Probably used in gen 1 to convert index number to dex number
 ; Not required in gen 2 because index number == dex number
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -141,7 +141,7 @@
 ; 3be3
 
 
-PlayCryHeader:: ; 3be3
+PlayCry:: ; 3be3
 ; Play cry header de.
 
 	push hl
@@ -176,11 +176,11 @@
 	ld a, [hl]
 	ld [CryLength + 1], a
 
-	ld a, BANK(_PlayCryHeader)
+	ld a, BANK(_PlayCry)
 	ld [hROMBank], a
 	ld [MBC3RomBank], a
 
-	call _PlayCryHeader
+	call _PlayCry
 
 	pop af
 	ld [hROMBank], a
@@ -319,7 +319,7 @@
 ; 3cae
 
 FadeInMusic:: ; 3cae
-	ld a, 4 | 1 << 7
+	ld a, 4 | (1 << MUSIC_FADE_IN_F)
 	ld [MusicFade], a
 	ret
 ; 3cb4
@@ -340,7 +340,7 @@
 	push bc
 	push af
 
-	call GetMapMusic
+	call GetMapMusic_MaybeSpecial
 	ld a, [wMapMusic]
 	cp e
 	jr z, .done
@@ -368,7 +368,7 @@
 	push bc
 	push af
 
-	call GetMapMusic
+	call GetMapMusic_MaybeSpecial
 	ld a, [wMapMusic]
 	cp e
 	jr z, .done
@@ -402,7 +402,7 @@
 	ld a, [PlayerState]
 	cp PLAYER_BIKE
 	jr z, .play
-	call GetMapMusic
+	call GetMapMusic_MaybeSpecial
 .play
 	push de
 	ld de, MUSIC_NONE
@@ -495,27 +495,26 @@
 	ret
 ; 3d97
 
-GetMapMusic:: ; 3d97
+GetMapMusic_MaybeSpecial:: ; 3d97
 	call SpecialMapMusic
 	ret c
-	call GetMapHeaderMusic
+	call GetMapMusic
 	ret
 ; 3d9f
 
-Function3d9f:: ; 3d9f
+Unreferenced_Function3d9f:: ; 3d9f
 ; Places a BCD number at the
 ; upper center of the screen.
-; Unreferenced.
-	ld a, 4 * 8
-	ld [Sprites + 38 * 4], a
-	ld [Sprites + 39 * 4], a
-	ld a, 10 * 8
-	ld [Sprites + 38 * 4 + 1], a
-	ld a, 11 * 8
-	ld [Sprites + 39 * 4 + 1], a
+	ld a, 4 * TILE_WIDTH
+	ld [Sprite39YCoord], a
+	ld [Sprite40YCoord], a
+	ld a, 10 * TILE_WIDTH
+	ld [Sprite39XCoord], a
+	ld a, 11 * TILE_WIDTH
+	ld [Sprite40XCoord], a
 	xor a
-	ld [Sprites + 38 * 4 + 3], a
-	ld [Sprites + 39 * 4 + 3], a
+	ld [Sprite39Attributes], a
+	ld [Sprite40Attributes], a
 	ld a, [wc296]
 	cp 100
 	jr nc, .max
@@ -525,17 +524,17 @@
 	swap a
 	and $f
 	add "0"
-	ld [Sprites + 38 * 4 + 2], a
+	ld [Sprite39TileID], a
 	ld a, b
 	and $f
 	add "0"
-	ld [Sprites + 39 * 4 + 2], a
+	ld [Sprite40TileID], a
 	ret
 
 .max
 	ld a, "9"
-	ld [Sprites + 38 * 4 + 2], a
-	ld [Sprites + 39 * 4 + 2], a
+	ld [Sprite39TileID], a
+	ld [Sprite40TileID], a
 	ret
 ; 3dde
 
--- a/home/cry.asm
+++ b/home/cry.asm
@@ -3,7 +3,7 @@
 	ld a, 1
 	ld [wStereoPanningMask], a
 	pop af
-	call _PlayCry
+	call _PlayMonCry
 	call WaitSFX
 	ret
 ; 37c4
@@ -15,16 +15,16 @@
 	ld a, 1
 	ld [wStereoPanningMask], a
 	pop af
-	jp _PlayCry
+	jp _PlayMonCry
 ; 37ce
 
-PlayCry:: ; 37ce
-	call PlayCry2
+PlayMonCry:: ; 37ce
+	call PlayMonCry2
 	call WaitSFX
 	ret
 ; 37d5
 
-PlayCry2:: ; 37d5
+PlayMonCry2:: ; 37d5
 ; Don't wait for the cry to end.
 	push af
 	xor a
@@ -31,11 +31,11 @@
 	ld [wStereoPanningMask], a
 	ld [CryTracks], a
 	pop af
-	call _PlayCry
+	call _PlayMonCry
 	ret
 ; 37e2
 
-_PlayCry:: ; 37e2
+_PlayMonCry:: ; 37e2
 	push hl
 	push de
 	push bc
@@ -45,7 +45,7 @@
 
 	ld e, c
 	ld d, b
-	call PlayCryHeader
+	call PlayCry
 
 .done
 	pop bc
@@ -54,7 +54,7 @@
 	ret
 ; 37f3
 
-LoadCryHeader:: ; 37f3
+LoadCry:: ; 37f3
 ; Load cry header bc.
 
 	call GetCryIndex
--- a/home/fade.asm
+++ b/home/fade.asm
@@ -1,8 +1,7 @@
 ; Functions to fade the screen in and out.
 
 
-Function48c:: ; 48c
-; XXX
+Unreferenced_Function48c:: ; 48c
 ; TimeOfDayFade
 	ld a, [TimeOfDayPal]
 	ld b, a
--- a/home/game_time.asm
+++ b/home/game_time.asm
@@ -16,7 +16,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, 1
+	ld a, BANK(GameTime)
 	ld [rSVBK], a
 
 	call UpdateGameTimer
--- a/home/init.asm
+++ b/home/init.asm
@@ -32,7 +32,7 @@
 .load
 	ld [hCGB], a
 	ld a, $1
-	ld [hFFEA], a
+	ld [hSystemBooted], a
 ; 17d
 
 
@@ -55,7 +55,7 @@
 	ld [rOBP1], a
 	ld [rTMA], a
 	ld [rTAC], a
-	ld [$d000], a
+	ld [WRAM1_Begin], a
 
 	ld a, %100 ; Start timer at 4096Hz
 	ld [rTAC], a
@@ -84,7 +84,7 @@
 ; Clear HRAM
 	ld a, [hCGB]
 	push af
-	ld a, [hFFEA]
+	ld a, [hSystemBooted]
 	push af
 	xor a
 	ld hl, HRAM_Begin
@@ -91,7 +91,7 @@
 	ld bc, HRAM_End - HRAM_Begin
 	call ByteFill
 	pop af
-	ld [hFFEA], a
+	ld [hSystemBooted], a
 	pop af
 	ld [hCGB], a
 
@@ -136,8 +136,8 @@
 	; BG on
 	ld [rLCDC], a
 
-	ld a, -1
-	ld [hLinkPlayerNumber], a
+	ld a, CONNECTION_NOT_ESTABLISHED
+	ld [hSerialConnectionStatus], a
 
 	farcall InitCGBPals
 
@@ -182,11 +182,11 @@
 	ld [rVBK], a
 	call .clear
 
-	xor a
+	xor a ; 0
 	ld [rVBK], a
 .clear
-	ld hl, vTiles0
-	ld bc, $2000
+	ld hl, VRAM_Begin
+	ld bc, VRAM_End - VRAM_Begin
 	xor a
 	call ByteFill
 	ret
--- a/home/lcd.asm
+++ b/home/lcd.asm
@@ -1,8 +1,7 @@
 ; LCD handling
 
 
-Function547:: ; 547
-; Unreferenced
+Unreferenced_Function547:: ; 547
 	ld a, [hLCDCPointer]
 	cp rSCX - $ff00
 	ret nz
--- a/home/map.asm
+++ b/home/map.asm
@@ -2,8 +2,8 @@
 
 Clearwc7e8:: ; 210f
 	ld hl, wc7e8
-	ld bc, 24
-	ld a, $0
+	ld bc, wc7e8_End - wc7e8
+	ld a, 0
 	call ByteFill
 	ret
 ; 211b
@@ -72,7 +72,7 @@
 
 .next
 	pop hl
-	ld de, 4 ; size of an entry in the scene script table
+	ld de, 4 ; scene_script size
 	add hl, de
 	jr .loop
 
@@ -249,7 +249,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call .GetDestinationWarpNumber
 
 	pop de
@@ -270,7 +270,7 @@
 	ret z
 
 	ld c, a
-	ld hl, wCurrMapWarpHeaderPointer
+	ld hl, wCurrMapWarpsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -321,7 +321,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call .CopyWarpData
 
 	pop af
@@ -332,7 +332,7 @@
 
 .CopyWarpData: ; 22b4
 	push bc
-	ld hl, wCurrMapWarpHeaderPointer
+	ld hl, wCurrMapWarpsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -384,7 +384,7 @@
 	ret
 ; 2300
 
-; XXX
+; unused
 	cp INDOOR
 	ret z
 	cp GATE
@@ -394,35 +394,35 @@
 ; 2309
 
 LoadMapAttributes:: ; 2309
-	call CopyMapHeaders
-	call SwitchToMapScriptHeaderBank
+	call CopyMapDefAndData
+	call SwitchToMapScriptsBank
 	call ReadMapScripts
-	xor a
-	call ReadMapEventHeader
+	xor a ; do not skip object_events
+	call ReadMapEvents
 	ret
 ; 2317
 
 LoadMapAttributes_SkipPeople:: ; 2317
-	call CopyMapHeaders
-	call SwitchToMapScriptHeaderBank
+	call CopyMapDefAndData
+	call SwitchToMapScriptsBank
 	call ReadMapScripts
-	ld a, $1
-	call ReadMapEventHeader
+	ld a, TRUE ; skip object events
+	call ReadMapEvents
 	ret
 ; 2326
 
-CopyMapHeaders:: ; 2326
-	call PartiallyCopyMapHeader
-	call SwitchToMapBank
-	call GetSecondaryMapHeaderPointer
-	call CopySecondMapHeader
+CopyMapDefAndData:: ; 2326
+	call PartialCopyMapDef
+	call SwitchToMapDataBank
+	call GetMapDataPointer
+	call CopyMapData
 	call GetMapConnections
 	ret
 ; 2336
 
-ReadMapEventHeader:: ; 2336
+ReadMapEvents:: ; 2336
 	push af
-	ld hl, MapEventHeaderPointer
+	ld hl, MapEventsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -433,7 +433,7 @@
 	call ReadBGEvents
 
 	pop af
-	and a
+	and a ; skip object events?
 	ret nz
 
 	call ReadObjectEvents
@@ -441,7 +441,7 @@
 ; 234f
 
 ReadMapScripts:: ; 234f
-	ld hl, MapScriptHeaderPointer
+	ld hl, MapScriptsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -450,9 +450,9 @@
 	ret
 ; 235c
 
-CopySecondMapHeader:: ; 235c
-	ld de, MapHeader
-	ld c, 12 ; size of the second map header
+CopyMapData:: ; 235c
+	ld de, wMapData
+	ld c, wMapDataEnd - wMapData
 .loop
 	ld a, [hli]
 	ld [de], a
@@ -516,14 +516,14 @@
 	ld c, a
 	ld [wCurrMapSceneScriptCount], a ; current map scene script count
 	ld a, l
-	ld [wCurrMapSceneScriptHeaderPointer], a ; map scene script pointer
+	ld [wCurrMapSceneScriptsPointer], a ; map scene script pointer
 	ld a, h
-	ld [wCurrMapSceneScriptHeaderPointer + 1], a
+	ld [wCurrMapSceneScriptsPointer + 1], a
 	ld a, c
 	and a
 	ret z
 
-	ld bc, 4 ; size of a map scene script header entry
+	ld bc, 4 ; scene_script size
 	call AddNTimes
 	ret
 ; 23c3
@@ -533,9 +533,9 @@
 	ld c, a
 	ld [wCurrMapCallbackCount], a
 	ld a, l
-	ld [wCurrMapCallbackHeaderPointer], a
+	ld [wCurrMapCallbacksPointer], a
 	ld a, h
-	ld [wCurrMapCallbackHeaderPointer + 1], a
+	ld [wCurrMapCallbacksPointer + 1], a
 	ld a, c
 	and a
 	ret z
@@ -550,9 +550,9 @@
 	ld c, a
 	ld [wCurrMapWarpCount], a
 	ld a, l
-	ld [wCurrMapWarpHeaderPointer], a
+	ld [wCurrMapWarpsPointer], a
 	ld a, h
-	ld [wCurrMapWarpHeaderPointer + 1], a
+	ld [wCurrMapWarpsPointer + 1], a
 	ld a, c
 	and a
 	ret z
@@ -566,9 +566,9 @@
 	ld c, a
 	ld [wCurrMapCoordEventCount], a
 	ld a, l
-	ld [wCurrMapCoordEventHeaderPointer], a
+	ld [wCurrMapCoordEventsPointer], a
 	ld a, h
-	ld [wCurrMapCoordEventHeaderPointer + 1], a
+	ld [wCurrMapCoordEventsPointer + 1], a
 
 	ld a, c
 	and a
@@ -584,9 +584,9 @@
 	ld c, a
 	ld [wCurrMapBGEventCount], a
 	ld a, l
-	ld [wCurrMapBGEventHeaderPointer], a
+	ld [wCurrMapBGEventsPointer], a
 	ld a, h
-	ld [wCurrMapBGEventHeaderPointer + 1], a
+	ld [wCurrMapBGEventsPointer + 1], a
 
 	ld a, c
 	and a
@@ -606,12 +606,12 @@
 	inc de
 	ld [wCurrMapObjectEventCount], a
 	ld a, e
-	ld [wCurrMapObjectEventHeaderPointer], a
+	ld [wCurrMapObjectEventsPointer], a
 	ld a, d
-	ld [wCurrMapObjectEventHeaderPointer + 1], a
+	ld [wCurrMapObjectEventsPointer + 1], a
 
 	ld a, [wCurrMapObjectEventCount]
-	call CopyMapObjectHeaders
+	call CopyMapObjectEvents
 
 ; get NUM_OBJECTS - [wCurrMapObjectEventCount]
 	ld a, [wCurrMapObjectEventCount]
@@ -643,7 +643,7 @@
 	ret
 ; 2457
 
-CopyMapObjectHeaders:: ; 2457
+CopyMapObjectEvents:: ; 2457
 	and a
 	ret z
 
@@ -690,10 +690,10 @@
 ; 248a
 
 RestoreFacingAfterWarp:: ; 248a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	rst Bankswitch
 
-	ld hl, MapEventHeaderPointer
+	ld hl, MapEventsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -759,12 +759,12 @@
 	add hl, bc
 	ld c, 3
 	add hl, bc
-	ld a, [MapBlockDataBank]
+	ld a, [MapBlocksBank]
 	rst Bankswitch
 
-	ld a, [MapBlockDataPointer]
+	ld a, [MapBlocksPointer]
 	ld e, a
-	ld a, [MapBlockDataPointer+1]
+	ld a, [MapBlocksPointer + 1]
 	ld d, a
 	ld a, [MapHeight]
 	ld b, a
@@ -802,7 +802,7 @@
 	ld b, a
 	ld a, [NorthConnectedMapNumber]
 	ld c, a
-	call GetAnyMapBlockdataBank
+	call GetAnyMapBlocksBank
 
 	ld a, [NorthConnectionStripPointer]
 	ld l, a
@@ -825,7 +825,7 @@
 	ld b, a
 	ld a, [SouthConnectedMapNumber]
 	ld c, a
-	call GetAnyMapBlockdataBank
+	call GetAnyMapBlocksBank
 
 	ld a, [SouthConnectionStripPointer]
 	ld l, a
@@ -848,7 +848,7 @@
 	ld b, a
 	ld a, [WestConnectedMapNumber]
 	ld c, a
-	call GetAnyMapBlockdataBank
+	call GetAnyMapBlocksBank
 
 	ld a, [WestConnectionStripPointer]
 	ld l, a
@@ -871,7 +871,7 @@
 	ld b, a
 	ld a, [EastConnectedMapNumber]
 	ld c, a
-	call GetAnyMapBlockdataBank
+	call GetAnyMapBlocksBank
 
 	ld a, [EastConnectionStripPointer]
 	ld l, a
@@ -992,20 +992,20 @@
 	ld a, [ScriptRunning]
 	and a
 	ret nz
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	jr CallScript
 ; 263b
 
 RunMapCallback:: ; 263b
-; Will run the first callback found in the map header with execution index equal to a.
+; Will run the first callback found with execution index equal to a.
 	ld b, a
 	ld a, [hROMBank]
 	push af
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call .FindCallback
 	jr nc, .done
 
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	ld b, a
 	ld d, h
 	ld e, l
@@ -1022,7 +1022,7 @@
 	ld c, a
 	and a
 	ret z
-	ld hl, wCurrMapCallbackHeaderPointer
+	ld hl, wCurrMapCallbacksPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1352,7 +1352,7 @@
 	dec c
 	jr nz, .loop
 	ld a, SCREEN_WIDTH
-	ld [hFFDC], a
+	ld [hBGMapTileCount], a
 	ret
 ; 27f8
 
@@ -1371,7 +1371,7 @@
 	inc d
 ; cap d at HIGH(vBGMap0)
 	ld a, d
-	and $3
+	and %11
 	or HIGH(vBGMap0)
 	ld d, a
 
@@ -1379,11 +1379,11 @@
 	dec c
 	jr nz, .loop
 	ld a, SCREEN_HEIGHT
-	ld [hFFDC], a
+	ld [hBGMapTileCount], a
 	ret
 ; 2816
 
-; unreferenced
+Unreferenced_Function2816::
 	ld hl, BGMapBuffer
 	ld bc, BGMapBufferEnd - BGMapBuffer
 	xor a
@@ -1401,7 +1401,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
 
 	ld a, e
@@ -1429,10 +1429,11 @@
 	pop af
 	ld [rSVBK], a
 
+; These tilesets support dynamic per-mapgroup roof tiles.
 	ld a, [wTileset]
-	cp TILESET_JOHTO_1
+	cp TILESET_JOHTO
 	jr z, .load_roof
-	cp TILESET_JOHTO_2
+	cp TILESET_JOHTO_MODERN
 	jr z, .load_roof
 	cp TILESET_BATTLE_TOWER_OUTSIDE
 	jr z, .load_roof
@@ -1859,7 +1860,7 @@
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call CheckIfFacingTileCoordIsBGEvent
 	pop hl
 	ld a, h
@@ -1869,7 +1870,7 @@
 
 CheckIfFacingTileCoordIsBGEvent:: ; 2aaa
 ; Checks to see if you are facing a BG event.  If so, copies it into EngineBuffer1 and sets carry.
-	ld hl, wCurrMapBGEventHeaderPointer
+	ld hl, wCurrMapBGEventsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1915,7 +1916,7 @@
 	ld c, a
 	ld a, [hROMBank]
 	push af
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call .CoordEventCheck
 	pop hl
 	ld a, h
@@ -1924,7 +1925,7 @@
 
 .CoordEventCheck:
 ; Checks to see if you are standing on a coord event.  If yes, copies the event to EngineBuffer1 and sets carry.
-	ld hl, wCurrMapCoordEventHeaderPointer
+	ld hl, wCurrMapCoordEventsPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1983,7 +1984,7 @@
 	xor a
 	ld [hBGMapMode], a
 	call LoadStandardMenuDataHeader
-	farcall FadeOutPalettes
+	farcall Special_FadeOutPalettes
 	call ClearSprites
 	call DisableSpriteUpdates
 	ret
@@ -2009,7 +2010,7 @@
 	call GetSGBLayout
 	farcall LoadOW_BGPal7
 	call WaitBGMap2
-	farcall FadeInPalettes
+	farcall Special_FadeInPalettes
 	call EnableSpriteUpdates
 	ret
 ; 2b74
@@ -2042,7 +2043,7 @@
 ReloadTilesetAndPalettes:: ; 2bae
 	call DisableLCD
 	call ClearSprites
-	farcall RefreshSprites
+	farcall Special_RefreshSprites
 	call LoadStandardFont
 	call LoadFontsExtra
 	ld a, [hROMBank]
@@ -2051,7 +2052,7 @@
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
-	call SwitchToAnyMapBank
+	call SwitchToAnyMapDataBank
 	farcall UpdateTimeOfDayPal
 	call OverworldTextModeSwitch
 	call LoadTilesetGFX
@@ -2064,21 +2065,20 @@
 	ret
 ; 2be5
 
-GetMapHeaderPointer:: ; 2be5
+GetMapDefPointer:: ; 2be5
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
-GetAnyMapHeaderPointer:: ; 0x2bed
+GetAnyMapDefPointer:: ; 0x2bed
 ; Prior to calling this function, you must have switched banks so that
 ; MapGroupPointers is visible.
 
 ; inputs:
 ; b = map group, c = map number
-; XXX de = ???
 
 ; outputs:
-; hl points to the map header
+; hl points to the map_def
 	push bc ; save map number for later
 
 	; get pointer to map group
@@ -2094,7 +2094,7 @@
 	ld l, a
 	pop bc ; restore map number
 
-	; find the cth map header
+	; find the cth map_def
 	dec c
 	ld b, 0
 	ld a, 9
@@ -2102,21 +2102,21 @@
 	ret
 ; 0x2c04
 
-GetMapHeaderMember:: ; 0x2c04
-; Extract data from the current map's header.
+GetMapDefField:: ; 0x2c04
+; Extract data from the current map's map_def.
 
 ; inputs:
-; de = offset of desired data within the mapheader
+; de = offset of desired data within the map_def (a MAPDEF_* constant)
 
 ; outputs:
-; bc = data from the current map's header
-; (e.g., de = $0003 would return a pointer to the secondary map header)
+; bc = data from the current map's map_def
+; (e.g., de = MAPDEF_TILESET would return a pointer to the tileset id)
 
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
-GetAnyMapHeaderMember:: ; 0x2c0c
+GetAnyMapDefField:: ; 0x2c0c
 	; bankswitch
 	ld a, [hROMBank]
 	push af
@@ -2123,7 +2123,7 @@
 	ld a, BANK(MapGroupPointers)
 	rst Bankswitch
 
-	call GetAnyMapHeaderPointer
+	call GetAnyMapDefPointer
 	add hl, de
 	ld c, [hl]
 	inc hl
@@ -2135,27 +2135,27 @@
 	ret
 ; 0x2c1c
 
-SwitchToMapBank:: ; 2c1c
+SwitchToMapDataBank:: ; 2c1c
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
-SwitchToAnyMapBank:: ; 2c24
-	call GetAnyMapBank
+SwitchToAnyMapDataBank:: ; 2c24
+	call GetAnyMapDataBank
 	rst Bankswitch
 	ret
 ; 2c29
 
-GetMapBank:: ; 2c29
+GetMapDataBank:: ; 2c29
 	ld a, [MapGroup]
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
-GetAnyMapBank:: ; 2c31
+GetAnyMapDataBank:: ; 2c31
 	push hl
 	push de
-	ld de, MAPHEADER_MAPHEADER2_BANK
-	call GetAnyMapHeaderMember
+	ld de, MAPDEF_MAPDATA_BANK
+	call GetAnyMapDefField
 	ld a, c
 	pop de
 	pop hl
@@ -2162,17 +2162,17 @@
 	ret
 ; 2c3d
 
-PartiallyCopyMapHeader:: ; 2c3d
-; Copy second map header bank, tileset, environment, and second map header address
-; from the current map's map header.
+PartialCopyMapDef:: ; 2c3d
+; Copy map data bank, tileset, environment, and map data address
+; from the current map's map_def.
 	ld a, [hROMBank]
 	push af
 	ld a, BANK(MapGroupPointers)
 	rst Bankswitch
 
-	call GetMapHeaderPointer
-	ld de, wSecondMapHeaderBank
-	ld bc, MapHeader - wSecondMapHeaderBank
+	call GetMapDefPointer
+	ld de, wPartialMapDef
+	ld bc, wPartialMapDefEnd - wPartialMapDef
 	call CopyBytes
 
 	pop af
@@ -2180,18 +2180,18 @@
 	ret
 ; 2c52
 
-SwitchToMapScriptHeaderBank:: ; 2c52
-	ld a, [MapScriptHeaderBank]
+SwitchToMapScriptsBank:: ; 2c52
+	ld a, [MapScriptsBank]
 	rst Bankswitch
 	ret
 ; 2c57
 
-GetMapScriptHeaderBank:: ; 2c57
-	ld a, [MapScriptHeaderBank]
+GetMapScriptsBank:: ; 2c57
+	ld a, [MapScriptsBank]
 	ret
 ; 2c5b
 
-GetAnyMapBlockdataBank:: ; 2c5b
+GetAnyMapBlocksBank:: ; 2c5b
 ; Return the blockdata bank for group b map c.
 	push hl
 	push de
@@ -2198,18 +2198,18 @@
 	push bc
 
 	push bc
-	ld de, MAPHEADER_MAPHEADER2
-	call GetAnyMapHeaderMember
+	ld de, MAPDEF_MAPDATA
+	call GetAnyMapDefField
 	ld l, c
 	ld h, b
 	pop bc
 
 	push hl
-	ld de, MAPHEADER_MAPHEADER2_BANK
-	call GetAnyMapHeaderMember
+	ld de, MAPDEF_MAPDATA_BANK
+	call GetAnyMapDefField
 	pop hl
 
-	ld de, MAPHEADER_MAPHEADER2 ; blockdata bank
+	ld de, MAPDEF_MAPDATA ; blockdata bank
 	add hl, de
 	ld a, c
 	call GetFarByte
@@ -2221,12 +2221,12 @@
 	ret
 ; 2c7d
 
-GetSecondaryMapHeaderPointer:: ; 0x2c7d
-; returns the current map's secondary map header pointer in hl.
+GetMapDataPointer:: ; 0x2c7d
+; returns the current map's data pointer in hl.
 	push bc
 	push de
-	ld de, MAPHEADER_MAPHEADER2
-	call GetMapHeaderMember
+	ld de, MAPDEF_MAPDATA
+	call GetMapDefField
 	ld l, c
 	ld h, b
 	pop de
@@ -2238,8 +2238,8 @@
 	push hl
 	push de
 	push bc
-	ld de, MAPHEADER_ENVIRONMENT
-	call GetMapHeaderMember
+	ld de, MAPDEF_ENVIRONMENT
+	call GetMapDefField
 	ld a, c
 	pop bc
 	pop de
@@ -2247,7 +2247,7 @@
 	ret
 ; 2c98
 
-	ret ; XXX
+	ret ; unused
 ; 2c99
 
 GetAnyMapEnvironment:: ; 2c99
@@ -2254,8 +2254,8 @@
 	push hl
 	push de
 	push bc
-	ld de, MAPHEADER_ENVIRONMENT
-	call GetAnyMapHeaderMember
+	ld de, MAPDEF_ENVIRONMENT
+	call GetAnyMapDefField
 	ld a, c
 	pop bc
 	pop de
@@ -2264,8 +2264,8 @@
 ; 2ca7
 
 GetAnyMapTileset:: ; 2ca7
-	ld de, MAPHEADER_TILESET
-	call GetAnyMapHeaderMember
+	ld de, MAPDEF_TILESET
+	call GetAnyMapDefField
 	ld a, c
 	ret
 ; 2caf
@@ -2276,8 +2276,8 @@
 	push de
 	push bc
 
-	ld de, MAPHEADER_LOCATION
-	call GetAnyMapHeaderMember
+	ld de, MAPDEF_LOCATION
+	call GetAnyMapDefField
 	ld a, c
 
 	pop bc
@@ -2286,11 +2286,11 @@
 	ret
 ; 0x2cbd
 
-GetMapHeaderMusic:: ; 2cbd
+GetMapMusic:: ; 2cbd
 	push hl
 	push bc
-	ld de, MAPHEADER_MUSIC
-	call GetMapHeaderMember
+	ld de, MAPDEF_MUSIC
+	call GetMapDefField
 	ld a, c
 	cp MUSIC_MAHOGANY_MART
 	jr z, .mahoganymart
@@ -2331,13 +2331,13 @@
 	jr .done
 ; 2cff
 
-GetMapHeaderTimeOfDayNybble:: ; 2cff
+GetMapTimeOfDay:: ; 2cff
 	call GetPhoneServiceTimeOfDayByte
 	and $f
 	ret
 ; 2d05
 
-GetMapHeaderPhoneServiceNybble:: ; 2d05
+GetMapPhoneService:: ; 2d05
 	call GetPhoneServiceTimeOfDayByte
 	and $f0
 	swap a
@@ -2348,8 +2348,8 @@
 	push hl
 	push bc
 
-	ld de, MAPHEADER_PALETTE
-	call GetMapHeaderMember
+	ld de, MAPDEF_PALETTE
+	call GetMapDefField
 	ld a, c
 
 	pop bc
@@ -2362,8 +2362,8 @@
 	push hl
 	push bc
 
-	ld de, MAPHEADER_FISHGROUP
-	call GetMapHeaderMember
+	ld de, MAPDEF_FISHGROUP
+	call GetMapDefField
 	ld a, c
 
 	pop bc
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -316,7 +316,7 @@
 	ret
 ; 194d
 
-; XXX
+; unused
 	ld [hMapObjectIndexBuffer], a
 	call GetMapObject
 	call CopyObjectStruct
@@ -383,7 +383,7 @@
 	ret
 ; 19b8
 
-; XXX
+Unreferenced_Function19b8:
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -28,8 +28,7 @@
 	jp PrintText
 ; 1d57
 
-ret_1d57:: ; 1d57
-; unreferenced
+; unused
 	ret
 ; 1d58
 
@@ -40,9 +39,8 @@
 ; 1d5f
 
 .MenuDataHeader: ; 1d5f
-	db $40 ; tile backup
-	db 12, 0 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw vTiles0
 	db 0 ; default option
 ; 1d67
@@ -60,9 +58,8 @@
 ; 1d75
 
 .MenuDataHeader: ; 1d75
-	db $40 ; tile backup
-	db 0, 0 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw 0
 	db 1 ; default option
 ; 1d7d
@@ -183,15 +180,14 @@
 ; 1e1d
 
 YesNoMenuDataHeader:: ; 1e1d
-	db $40 ; tile backup
-	db 5, 10 ; start coords
-	db 9, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 5, 15, 9
 	dw .MenuData2
 	db 1 ; default option
 ; 1e25
 
 .MenuData2: ; 1e25
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2
 	db "YES@"
 	db "NO@"
@@ -453,8 +449,7 @@
 	ret
 ; 1f9e
 
-Function1f9e:: ; 1f9e
-; unreferenced
+Unreferenced_Function1f9e:: ; 1f9e
 	call GetMenuDataPointerTableEntry
 	inc hl
 	inc hl
@@ -499,7 +494,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, $7
+	ld a, BANK(wWindowStack)
 	ld [rSVBK], a
 
 	xor a
@@ -517,7 +512,7 @@
 ; 1ff0
 
 .bytefill ; 1ff0
-	ld bc, $0010
+	ld bc, $10
 	xor a
 	call ByteFill
 	ret
--- a/home/mobile.asm
+++ b/home/mobile.asm
@@ -127,8 +127,7 @@
 	reti
 ; 3ed7
 
-Function3ed7:: ; 3ed7
-; unreferenced
+Unreferenced_Function3ed7:: ; 3ed7
 	ld [$dc02], a
 	ld a, [hROMBank]
 	push af
@@ -160,8 +159,7 @@
 	ret
 ; 3efd
 
-Function3efd:: ; 3efd
-; unreferenced
+Unreferenced_Function3efd:: ; 3efd
 	push hl
 	hlcoord 0, 12
 	ld b, 4
--- a/home/names.asm
+++ b/home/names.asm
@@ -1,13 +1,13 @@
 NamesPointers:: ; 33ab
-; entries correspond to GetName constants (see constants/misc_constants.asm)
-	dba PokemonNames
-	dba MoveNames
-	dbw 0, 0
-	dba ItemNames
-	dbw 0, PartyMonOT
-	dbw 0, OTPartyMonOT
-	dba TrainerClassNames
-	dbw $4, $4b52 ; within PackMenuGFX
+; entries correspond to GetName constants (see constants/text_constants.asm)
+	dba PokemonNames        ; MON_NAME (not used; jumps to GetPokemonName)
+	dba MoveNames           ; MOVE_NAME
+	dbw 0, NULL             ; DUMMY_NAME
+	dba ItemNames           ; ITEM_NAME
+	dbw 0, PartyMonOT       ; PARTY_OT_NAME
+	dbw 0, OTPartyMonOT     ; ENEMY_OT_NAME
+	dba TrainerClassNames   ; TRAINER_NAME
+	dbw 4, MoveDescriptions ; MOVE_DESC_NAME_BROKEN (wrong bank)
 ; 33c3
 
 GetName:: ; 33c3
@@ -20,13 +20,13 @@
 	push de
 
 	ld a, [wNamedObjectTypeBuffer]
-	cp PKMN_NAME
+	cp MON_NAME
 	jr nz, .NotPokeName
 
 	ld a, [CurSpecies]
 	ld [wd265], a
 	call GetPokemonName
-	ld hl, PKMN_NAME_LENGTH
+	ld hl, MON_NAME_LENGTH
 	add hl, de
 	ld e, l
 	ld d, h
@@ -140,9 +140,9 @@
 ; Terminator
 	ld de, StringBuffer1
 	push de
-	ld bc, PKMN_NAME_LENGTH - 1
+	ld bc, MON_NAME_LENGTH - 1
 	call CopyBytes
-	ld hl, StringBuffer1 + PKMN_NAME_LENGTH - 1
+	ld hl, StringBuffer1 + MON_NAME_LENGTH - 1
 	ld [hl], "@"
 	pop de
 
--- a/home/palettes.asm
+++ b/home/palettes.asm
@@ -319,7 +319,7 @@
 ; d91
 
 
-Special_ReloadSpritesNoPalettes:: ; d91
+ReloadSpritesNoPalettes:: ; d91
 	ld a, [hCGB]
 	and a
 	ret z
--- a/home/pokedex_flags.asm
+++ b/home/pokedex_flags.asm
@@ -31,7 +31,7 @@
 
 PokedexFlagAction:: ; 33a1
 	ld d, 0
-	predef FlagPredef
+	predef SmallFarFlagAction
 	ld a, c
 	and a
 	ret
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -14,9 +14,9 @@
 	bit 0, a
 	jr nz, .printer
 
-	ld a, [hLinkPlayerNumber]
-	inc a ; is it equal to -1?
-	jr z, .init_player_number
+	ld a, [hSerialConnectionStatus]
+	inc a ; is it equal to CONNECTION_NOT_ESTABLISHED?
+	jr z, .establish_connection
 
 	ld a, [rSB]
 	ld [hSerialReceive], a
@@ -24,8 +24,8 @@
 	ld a, [hSerialSend]
 	ld [rSB], a
 
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr z, .player2
 
 	ld a, 0 << rSC_ON
@@ -42,22 +42,22 @@
 	call PrinterReceive
 	jr .end
 
-.init_player_number
+.establish_connection
 	ld a, [rSB]
-	cp $1
+	cp USING_EXTERNAL_CLOCK
 	jr z, .player1
-	cp $2
+	cp USING_INTERNAL_CLOCK
 	jr nz, .player2
 
 .player1
 	ld [hSerialReceive], a
-	ld [hLinkPlayerNumber], a
-	cp $2
+	ld [hSerialConnectionStatus], a
+	cp USING_INTERNAL_CLOCK
 	jr z, ._player2
 
 	xor a
 	ld [rSB], a
-	ld a, $3
+	ld a, 3
 	ld [rDIV], a
 
 .wait_bit_7
@@ -76,9 +76,9 @@
 	ld [rSB], a
 
 .player2
-	ld a, $1
-	ld [hFFCA], a
-	ld a, $fe
+	ld a, TRUE
+	ld [hSerialReceivedNewData], a
+	ld a, SERIAL_NO_DATA_BYTE
 	ld [hSerialSend], a
 
 .end
@@ -89,13 +89,13 @@
 	reti
 ; 75f
 
-Function75f:: ; 75f
+Serial_ExchangeBytes:: ; 75f
 	ld a, $1
-	ld [hFFCC], a
+	ld [hSerialIgnoringInitialData], a
 .loop
 	ld a, [hl]
 	ld [hSerialSend], a
-	call Function78a
+	call Serial_ExchangeByte
 	push bc
 	ld b, a
 	inc hl
@@ -103,16 +103,16 @@
 .wait
 	dec a
 	jr nz, .wait
-	ld a, [hFFCC]
+	ld a, [hSerialIgnoringInitialData]
 	and a
 	ld a, b
 	pop bc
 	jr z, .load
 	dec hl
-	cp $fd
+	cp SERIAL_PREAMBLE_BYTE
 	jr nz, .loop
 	xor a
-	ld [hFFCC], a
+	ld [hSerialIgnoringInitialData], a
 	jr .loop
 
 .load
@@ -125,24 +125,24 @@
 	ret
 ; 78a
 
-Function78a:: ; 78a
+Serial_ExchangeByte:: ; 78a
 .loop
 	xor a
-	ld [hFFCA], a
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld [hSerialReceivedNewData], a
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr nz, .not_player_2
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 .not_player_2
 .loop2
-	ld a, [hFFCA]
+	ld a, [hSerialReceivedNewData]
 	and a
 	jr nz, .reset_ffca
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr nz, .not_player_1_or_wLinkTimeoutFrames_zero
 	call CheckwLinkTimeoutFramesNonzero
 	jr z, .not_player_1_or_wLinkTimeoutFrames_zero
@@ -162,8 +162,8 @@
 
 .not_player_1_or_wLinkTimeoutFrames_zero
 	ld a, [rIE]
-	and $f
-	cp $8
+	and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
+	cp 1 << SERIAL
 	jr nz, .loop2
 	ld a, [wcf5d]
 	dec a
@@ -173,8 +173,8 @@
 	dec a
 	ld [wcf5d + 1], a
 	jr nz, .loop2
-	ld a, [hLinkPlayerNumber]
-	cp $1
+	ld a, [hSerialConnectionStatus]
+	cp USING_EXTERNAL_CLOCK
 	jr z, .reset_ffca
 
 	ld a, 255
@@ -184,19 +184,20 @@
 
 .reset_ffca
 	xor a
-	ld [hFFCA], a
+	ld [hSerialReceivedNewData], a
 	ld a, [rIE]
-	and $f
-	sub $8
+	and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
+	sub 1 << SERIAL
 	jr nz, .rIE_not_equal_8
 
+	; LOW($5000)
 	ld [wcf5d], a
-	ld a, $50
+	ld a, HIGH($5000)
 	ld [wcf5d + 1], a
 
 .rIE_not_equal_8
 	ld a, [hSerialReceive]
-	cp $fe
+	cp SERIAL_NO_DATA_BYTE
 	ret nz
 	call CheckwLinkTimeoutFramesNonzero
 	jr z, .wLinkTimeoutFrames_zero
@@ -216,9 +217,9 @@
 
 .wLinkTimeoutFrames_zero
 	ld a, [rIE]
-	and $f
-	cp $8
-	ld a, $fe
+	and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
+	cp 1 << SERIAL
+	ld a, SERIAL_NO_DATA_BYTE
 	ret z
 	ld a, [hl]
 	ld [hSerialSend], a
@@ -243,29 +244,31 @@
 ; 833
 
 SerialDisconnected:: ; 833
-	dec a
+	dec a ; a is always 0 when this is called
 	ld [wLinkTimeoutFrames], a
 	ld [wLinkTimeoutFrames + 1], a
 	ret
 ; 83b
 
-Function83b:: ; 83b
+; This is used to exchange the button press and selected menu item on the link menu.
+; The data is sent thrice and read twice to increase reliability.
+Serial_ExchangeLinkMenuSelection:: ; 83b
 	ld hl, wPlayerLinkAction
 	ld de, wOtherPlayerLinkMode
-	ld c, $2
-	ld a, $1
-	ld [hFFCC], a
+	ld c, 2
+	ld a, TRUE
+	ld [hSerialIgnoringInitialData], a
 .asm_847
 	call DelayFrame
 	ld a, [hl]
 	ld [hSerialSend], a
-	call Function78a
+	call Serial_ExchangeByte
 	ld b, a
 	inc hl
-	ld a, [hFFCC]
+	ld a, [hSerialIgnoringInitialData]
 	and a
-	ld a, $0
-	ld [hFFCC], a
+	ld a, FALSE
+	ld [hSerialIgnoringInitialData], a
 	jr nz, .asm_847
 	ld a, b
 	ld [de], a
@@ -275,7 +278,7 @@
 	ret
 ; 862
 
-Function862:: ; 862
+Serial_PrintWaitingTextAndSyncAndExchangeNybble:: ; 862
 	call LoadTileMapToTempTileMap
 	callfar PlaceWaitingText
 	call WaitLinkTransfer
@@ -282,8 +285,7 @@
 	jp Call_LoadTempTileMapToTileMap
 ; 871
 
-
-Function871:: ; 871
+Serial_SyncAndExchangeNybble:: ; 871
 	call LoadTileMapToTempTileMap
 	callfar PlaceWaitingText
 	jp WaitLinkTransfer
@@ -356,12 +358,12 @@
 	ld a, [wPlayerLinkAction]
 	add b
 	ld [hSerialSend], a
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	jr nz, .player_1
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 
 .player_1
@@ -388,28 +390,27 @@
 ; Let the other system know that the data has been received.
 	xor a
 	ld [hSerialSend], a
-	ld a, [hLinkPlayerNumber]
-	cp $2
+	ld a, [hSerialConnectionStatus]
+	cp USING_INTERNAL_CLOCK
 	ret nz
-	ld a, $1
+	ld a, (0 << rSC_ON) | 1
 	ld [rSC], a
-	ld a, $81
+	ld a, (1 << rSC_ON) | 1
 	ld [rSC], a
 	ret
 ; 919
 
-Function919:: ; 919
-; XXX
+Unreferenced_Function919:: ; 919
 	ld a, [wLinkMode]
 	and a
 	ret nz
-	ld a, $2
+	ld a, USING_INTERNAL_CLOCK
 	ld [rSB], a
 	xor a
 	ld [hSerialReceive], a
-	ld a, $0
+	ld a, 0 << rSC_ON
 	ld [rSC], a
-	ld a, $80
+	ld a, 1 << rSC_ON
 	ld [rSC], a
 	ret
 ; 92e
--- a/home/sine.asm
+++ b/home/sine.asm
@@ -1,6 +1,6 @@
 Cosine:: ; 1b0f
 ; Return d * cos(a) in hl
-	add $10 ; 90 degrees
+	add %010000 ; 90 degrees
 
 Sine:: ; 1b11
 ; Return d * sin(a) in hl
--- a/home/text.asm
+++ b/home/text.asm
@@ -47,10 +47,8 @@
 
 
 TextBox:: ; fe8
-; Draw a text box at hl with room for
-; b lines of c characters each.
-; Places a border around the textbox,
-; then switches the palette to the
+; Draw a text box at hl with room for b lines of c characters each.
+; Places a border around the textbox, then switches the palette to the
 ; text black-and-white scheme.
 	push bc
 	push hl
@@ -146,7 +144,7 @@
 ; 1048
 
 TestText:: ; 1048
-	text "ゲームフりーク!"
+	text "ゲームフりーク!"
 	done
 ; 1052
 
@@ -216,20 +214,20 @@
 ._\@:
 ENDM
 
-	dict "<DAY>",     Char15
+	dict TX_DAY,      DayOfWeekChar
 	dict "<LINE>",    LineChar
 	dict "<NEXT>",    NextLineChar
 	dict TX_FAR,      TextFar
-	dict $00,         NullChar
-	dict $4c,         Char4C
-	dict $4b,         Char4B
+	dict TX_START,    NullChar
+	dict "<SCROLL>",  _ContTextNoPause
+	dict "<_CONT>",   _ContText
 	dict "<PARA>",    Paragraph
 	dict "<MOM>",     PrintMomsName
 	dict "<PLAYER>",  PrintPlayerName
 	dict "<RIVAL>",   PrintRivalName
-	dict $35,         Char35
-	dict $36,         Char36
-	dict $37,         Char37
+	dict "<ROUTE>",   PlaceJPRoute
+	dict "<WATASHI>", PlaceWatashi
+	dict "<KOKO_WA>", PlaceKokoWa
 	dict "<RED>",     PrintRedsName
 	dict "<GREEN>",   PrintGreensName
 	dict "#",         PlacePOKe
@@ -236,11 +234,11 @@
 	dict "<PC>",      PCChar
 	dict "<ROCKET>",  RocketChar
 	dict "<TM>",      TMChar
-	dict "<TRNER>",   TrainerChar
+	dict "<TRAINER>", TrainerChar
 	dict "<KOUGEKI>", PlaceKougeki
-	dict "<LNBRK>",   Char22
+	dict "<LNBRK>",   LineBreakChar
 	dict "<CONT>",    ContText
-	dict "<......>",  SixDotsChar
+	dict "<……>",      SixDotsChar
 	dict "<DONE>",    DoneText
 	dict "<PROMPT>",  PromptText
 	dict "<PKMN>",    PlacePKMN
@@ -265,7 +263,7 @@
 	jp NextChar
 
 .not_diacritic
-	cp $60 ; Regular characters
+	cp FIRST_REGULAR_TEXT_CHAR
 	jr nc, .place
 
 	cp "パ"
@@ -272,13 +270,13 @@
 	jr nc, .handakuten
 
 .dakuten
-	cp $20
-	jr nc, .daku1
+	cp FIRST_HIRAGANA_DAKUTEN_CHAR
+	jr nc, .hiragana_dakuten
 	add "カ" - "ガ"
-	jr .daku2
-.daku1
+	jr .katakana_dakuten
+.hiragana_dakuten
 	add "か" - "が"
-.daku2
+.katakana_dakuten
 	ld b, "゙" ; dakuten
 	call Diacritic
 	jr .place
@@ -285,12 +283,12 @@
 
 .handakuten
 	cp "ぱ"
-	jr nc, .han1
+	jr nc, .hiragana_handakuten
 	add "ハ" - "パ"
-	jr .han2
-.han1
+	jr .katakana_handakuten
+.hiragana_handakuten
 	add "は" - "ぱ"
-.han2
+.katakana_handakuten
 	ld b, "゚" ; handakuten
 	call Diacritic
 
@@ -301,7 +299,7 @@
 ; 0x117b
 
 
-Char15:: ; 117b
+DayOfWeekChar:: ; 117b
 	ld c, l
 	ld b, h
 	farcall Function17f036
@@ -330,20 +328,20 @@
 SixDotsChar:  print_name SixDotsCharText ; 11d3
 PlacePKMN:    print_name PlacePKMNText   ; 11da
 PlacePOKE:    print_name PlacePOKEText   ; 11e1
-Char35:       print_name Char35Text      ; 11e8
-Char36:       print_name Char36Text      ; 11ef
-Char37:       print_name Char37Text      ; 11f6
+PlaceJPRoute: print_name PlaceJPRouteText ; 11e8
+PlaceWatashi: print_name PlaceWatashiText ; 11ef
+PlaceKokoWa:  print_name PlaceKokoWaText ; 11f6
 
 
 PlaceMoveTargetsName:: ; 11fd
 	ld a, [hBattleTurn]
 	xor 1
-	jr PlaceMoveTargetsName_5A
+	jr PlaceMoveUsersName.place
 
 PlaceMoveUsersName:: ; 1203
 	ld a, [hBattleTurn]
 
-PlaceMoveTargetsName_5A: ; 1205
+.place: ; 1205
 	push de
 	and a
 	jr nz, .enemy
@@ -352,7 +350,7 @@
 	jr PlaceCommandCharacter
 
 .enemy
-	ld de, EnemyText ; Enemy
+	ld de, EnemyText
 	call PlaceString
 	ld h, b
 	ld l, c
@@ -377,7 +375,7 @@
 	call PlaceString
 	ld h, b
 	ld l, c
-	ld de, String12a2
+	ld de, String_Space
 	call PlaceString
 	push bc
 	callfar Battle_GetTrainerName
@@ -402,9 +400,9 @@
 	ld l, c
 	ld a, [wPlayerGender]
 	bit 0, a
-	ld de, String_kun
+	ld de, KunSuffixText
 	jr z, PlaceCommandCharacter
-	ld de, String_chan
+	ld de, ChanSuffixText
 	jr PlaceCommandCharacter
 
 
@@ -416,22 +414,23 @@
 	jp NextChar
 ; 0x1273
 
-TMCharText:: db "TM@" ; 1273
-TrainerCharText:: db "TRAINER@" ; 1276
-PCCharText:: db "PC@" ; 127e
-RocketCharText:: db "ROCKET@" ; 1281
-PlacePOKeText:: db "POKé@" ; 1288
-KougekiText:: db "こうげき@" ; 128d
-SixDotsCharText:: db "……@" ; 1292
-EnemyText:: db "Enemy @" ; 1295
-PlacePKMNText:: db "<PK><MN>@" ; PK MN ; 129c
-PlacePOKEText:: db "<PO><KE>@" ; PO KE ; 129f
-String12a2:: db " @" ; 12a2
-Char35Text::
-Char36Text::
-Char37Text:: db "@" ; 12a4
-String_kun:: db "@" ; 12a5
-String_chan:: db "@" ; 12a6
+TMCharText::      db "TM@"
+TrainerCharText:: db "TRAINER@"
+PCCharText::      db "PC@"
+RocketCharText::  db "ROCKET@"
+PlacePOKeText::   db "POKé@"
+KougekiText::     db "こうげき@"
+SixDotsCharText:: db "……@"
+EnemyText::       db "Enemy @"
+PlacePKMNText::   db "<PK><MN>@"
+PlacePOKEText::   db "<PO><KE>@"
+String_Space::    db " @"
+; These strings have been dummied out.
+PlaceJPRouteText::
+PlaceWatashiText::
+PlaceKokoWaText:: db "@"
+KunSuffixText::   db "@"
+ChanSuffixText::  db "@"
 ; 12a7
 
 NextLineChar:: ; 12a7
@@ -442,7 +441,7 @@
 	jp NextChar
 ; 12b0
 
-Char22:: ; 12b0
+LineBreakChar:: ; 12b0
 	pop hl
 	ld bc, SCREEN_WIDTH
 	add hl, bc
@@ -525,7 +524,7 @@
 ; 131f
 
 
-Char4B:: ; 131f
+_ContText:: ; 131f
 	ld a, [wLinkMode]
 	or a
 	jr nz, .communication
@@ -541,8 +540,9 @@
 	ld a, [wLinkMode]
 	or a
 	call z, UnloadBlinkingCursor
+	; fallthrough
 
-Char4C:: ; 1337
+_ContTextNoPause:: ; 1337
 	push de
 	call TextScroll
 	call TextScroll
@@ -563,7 +563,7 @@
 	pop de
 	jp NextChar
 
-.cont	db $4b, "@"
+.cont: db "<_CONT>@"
 ; 1356
 
 
@@ -598,7 +598,8 @@
 	ld de, .stop
 	dec de
 	ret
-.stop	db "@"
+
+.stop: db "@"
 ; 1383
 
 NullChar:: ; 1383
@@ -690,7 +691,7 @@
 	ld hl, .stop
 	ret
 
-.stop	db "@"
+.stop: db "@"
 ; 13e5
 
 
@@ -734,30 +735,30 @@
 ; 1410
 
 TextCommands:: ; 1410
-; entries correspond to macros/text.asm enumeration
-	dw Text_TX
-	dw Text_TX_RAM
-	dw Text_TX_BCD
-	dw Text_TX_MOVE
-	dw Text_TX_BOX
-	dw Text_TX_LOW
-	dw Text_WAIT_BUTTON
-	dw Text_TX_SCROLL
-	dw Text_START_ASM
-	dw Text_TX_NUM
-	dw Text_TX_EXIT
-	dw Text_PlaySound ; $0b
-	dw Text_TX_DOTS
-	dw Text_0D
-	dw Text_PlaySound ; $0e
-	dw Text_PlaySound ; $0f
-	dw Text_PlaySound ; $10
-	dw Text_PlaySound ; $11
-	dw Text_PlaySound ; $12
-	dw Text_PlaySound ; $13
-	dw Text_TX_STRINGBUFFER
-	dw Text_TX_DAY
-	dw Text_TX_FAR
+; entries correspond to TX_* constants (see macros/scripts/text.asm)
+	dw Text_TX               ; TX_START
+	dw Text_TX_RAM           ; TX_RAM
+	dw Text_TX_BCD           ; TX_BCD
+	dw Text_TX_MOVE          ; TX_MOVE
+	dw Text_TX_BOX           ; TX_BOX
+	dw Text_TX_LOW           ; TX_LOW
+	dw Text_WAIT_BUTTON      ; WAIT_BUTTON
+	dw Text_TX_SCROLL        ; TX_SCROLL
+	dw Text_START_ASM        ; START_ASM
+	dw Text_TX_NUM           ; TX_NUM
+	dw Text_TX_EXIT          ; TX_EXIT
+	dw Text_PlaySound        ; TX_SOUND_DEX_FANFARE_50_79
+	dw Text_TX_DOTS          ; TX_DOTS
+	dw Text_LINK_WAIT_BUTTON ; TX_LINK_WAIT_BUTTON
+	dw Text_PlaySound        ; TX_SOUND_DEX_FANFARE_20_49
+	dw Text_PlaySound        ; TX_SOUND_ITEM
+	dw Text_PlaySound        ; TX_SOUND_CAUGHT_MON
+	dw Text_PlaySound        ; TX_SOUND_DEX_FANFARE_80_109
+	dw Text_PlaySound        ; TX_SOUND_FANFARE
+	dw Text_PlaySound        ; TX_SOUND_SLOT_MACHINE_START
+	dw Text_TX_STRINGBUFFER  ; TX_STRINGBUFFER
+	dw Text_TX_DAY           ; TX_DAY
+	dw Text_TX_FAR           ; TX_FAR
 ; 143e
 
 Text_TX:: ; 143e
@@ -899,9 +900,9 @@
 
 	ld a, [wLinkMode]
 	cp LINK_COLOSSEUM
-	jp z, Text_0D
+	jp z, Text_LINK_WAIT_BUTTON
 	cp LINK_MOBILE
-	jp z, Text_0D
+	jp z, Text_LINK_WAIT_BUTTON
 
 	push hl
 	call LoadBlinkingCursor
@@ -1015,14 +1016,13 @@
 	ret
 ; 1522
 
-Function1522:: ; 1522
-; XXX
+Unreferenced_Function1522:: ; 1522
 ; TX_CRY
 	push de
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	call PlayCry
+	call PlayMonCry
 	pop de
 	pop hl
 	pop bc
@@ -1030,13 +1030,13 @@
 ; 152d
 
 TextSFX:: ; 152d
-	dbw TX_SOUND_0B, SFX_DEX_FANFARE_50_79
-	dbw TX_SOUND_12, SFX_FANFARE
-	dbw TX_SOUND_0E, SFX_DEX_FANFARE_20_49
-	dbw TX_SOUND_0F, SFX_ITEM
-	dbw TX_SOUND_10, SFX_CAUGHT_MON
-	dbw TX_SOUND_11, SFX_DEX_FANFARE_80_109
-	dbw TX_SOUND_13, SFX_SLOT_MACHINE_START
+	dbw TX_SOUND_DEX_FANFARE_50_79,  SFX_DEX_FANFARE_50_79
+	dbw TX_SOUND_FANFARE,            SFX_FANFARE
+	dbw TX_SOUND_DEX_FANFARE_20_49,  SFX_DEX_FANFARE_20_49
+	dbw TX_SOUND_ITEM,               SFX_ITEM
+	dbw TX_SOUND_CAUGHT_MON,         SFX_CAUGHT_MON
+	dbw TX_SOUND_DEX_FANFARE_80_109, SFX_DEX_FANFARE_80_109
+	dbw TX_SOUND_SLOT_MACHINE_START, SFX_SLOT_MACHINE_START
 	db -1
 ; 1543
 
@@ -1069,7 +1069,7 @@
 	ret
 ; 1562
 
-Text_0D:: ; 1562
+Text_LINK_WAIT_BUTTON:: ; 1562
 ; wait for key down
 ; display arrow
 	push hl
--- a/home/trainers.asm
+++ b/home/trainers.asm
@@ -2,7 +2,7 @@
 	ld a, [hROMBank]
 	push af
 
-	call SwitchToMapScriptHeaderBank
+	call SwitchToMapScriptsBank
 	call CheckTrainerBattle
 
 	pop bc
@@ -110,7 +110,7 @@
 	ld [EngineBuffer3], a
 
 LoadTrainer_continue:: ; 367e
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	ld [EngineBuffer1], a
 
 	ld a, [hLastTalked]
@@ -120,8 +120,8 @@
 	add hl, bc
 	ld a, [EngineBuffer1]
 	call GetFarHalfword
-	ld de, wTempTrainerHeader
-	ld bc, wTempTrainerHeaderEnd - wTempTrainerHeader
+	ld de, wTempTrainer
+	ld bc, wTempTrainerEnd - wTempTrainer
 	ld a, [EngineBuffer1]
 	call FarCopyBytes
 	xor a
@@ -221,7 +221,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call GetFarHalfword
 	ld d, h
 	ld e, l
@@ -240,7 +240,7 @@
 	cp BATTLETYPE_CANLOSE
 	jr .canlose ; ??????????
 
-; unreferenced
+; unused
 	ld hl, wWinTextPointer
 	jr .ok
 
@@ -255,7 +255,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	call GetMapScriptHeaderBank
+	call GetMapScriptsBank
 	call FarPrintText
 	call WaitBGMap
 	call WaitPressAorB_BlinkCursor
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -190,7 +190,7 @@
 	jr c, .done
 
 	call UpdateBGMap
-	call Serve2bppRequest@VBlank
+	call Serve2bppRequest_VBlank
 
 	call hPushOAM
 .done
@@ -280,7 +280,7 @@
 	jr c, .done
 
 	call UpdateBGMap
-	call Serve2bppRequest@VBlank
+	call Serve2bppRequest_VBlank
 
 	call hPushOAM
 .done
--- a/home/video.asm
+++ b/home/video.asm
@@ -20,10 +20,10 @@
 
 
 UpdateBGMapBuffer:: ; 15e3
-; Copy [hFFDC] 16x8 tiles from BGMapBuffer
+; Copy [hBGMapTileCount] 16x8 tiles from BGMapBuffer
 ; to bg map addresses in BGMapBufferPtrs.
 
-; [hFFDC] must be even since this is done in pairs.
+; [hBGMapTileCount] must be even since this is done in pairs.
 
 ; Return carry on success.
 
@@ -76,10 +76,10 @@
 endr
 
 ; We've done 2 16x8 blocks
-	ld a, [hFFDC]
+	ld a, [hBGMapTileCount]
 	dec a
 	dec a
-	ld [hFFDC], a
+	ld [hBGMapTileCount], a
 
 	jr nz, .next
 
@@ -379,7 +379,7 @@
 	jr _Serve2bppRequest
 
 
-Serve2bppRequest@VBlank:: ; 1778
+Serve2bppRequest_VBlank:: ; 1778
 
 	ld a, [Requested2bpp]
 	and a
@@ -466,7 +466,7 @@
 
 	ld a, [rSVBK]
 	push af
-	ld a, 1
+	ld a, BANK(TilesetAnim)
 	ld [rSVBK], a
 
 	ld a, [rVBK]
--- a/home/window.asm
+++ b/home/window.asm
@@ -99,7 +99,7 @@
 	ld [hOAMUpdate], a
 	ret
 
-; XXX
+; unused
 	scf
 	ret
 ; 2e50
--- a/hram.asm
+++ b/hram.asm
@@ -1,3 +1,7 @@
+; HRAM uses constants instead of labels so that
+; "ld a, [hAddress]" and "ld [hAddress], a" will
+; use the more efficient "ldh" instruction.
+
 hPushOAM           EQU $ff80 ; 10 bytes
 
 hROMBankBackup     EQU $ff8a
@@ -33,9 +37,10 @@
 hInMenu            EQU $ffaa
 
 hPrinter           EQU $ffac
-hGraphicStartTile           EQU $ffad
+hGraphicStartTile  EQU $ffad
 hMoveMon           EQU $ffae
-hMapObjectIndexBuffer EQU $ffaf
+
+hMapObjectIndexBuffer    EQU $ffaf
 hObjectStructIndexBuffer EQU $ffb0
 
 hConnectionStripLength EQU $ffaf
@@ -81,16 +86,17 @@
 hMGJoypadPressed   EQU $ffc3
 hMGJoypadReleased  EQU $ffc4
 
-hLCDCPointer              EQU $ffc6
+hLCDCPointer       EQU $ffc6
 hLYOverrideStart   EQU $ffc7
 hLYOverrideEnd     EQU $ffc8
-hMobileReceive     EQU $ffc9
-hFFCA              EQU $ffca
-hLinkPlayerNumber  EQU $ffcb
-hFFCC              EQU $ffcc
-hSerialSend        EQU $ffcd
-hSerialReceive     EQU $ffce
 
+hMobileReceive             EQU $ffc9
+hSerialReceivedNewData     EQU $ffca
+hSerialConnectionStatus    EQU $ffcb
+hSerialIgnoringInitialData EQU $ffcc
+hSerialSend                EQU $ffcd
+hSerialReceive             EQU $ffce
+
 hSCX               EQU $ffcf
 hSCY               EQU $ffd0
 hWX                EQU $ffd1
@@ -104,7 +110,7 @@
 hSPBuffer          EQU $ffd9
 
 hBGMapUpdate       EQU $ffdb
-hFFDC              EQU $ffdc
+hBGMapTileCount    EQU $ffdc
 
 hMapAnims          EQU $ffde
 hTileAnimFrame     EQU $ffdf
@@ -121,5 +127,5 @@
 hSGB               EQU $ffe7
 hDMATransfer       EQU $ffe8
 hMobile            EQU $ffe9
-hFFEA              EQU $ffea
+hSystemBooted      EQU $ffea
 hClockResetTrigger EQU $ffeb
--- a/includes.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "version.asm"
-INCLUDE "constants.asm"
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -6908,7 +6908,7 @@
 	dec a
 	jp .asm_112e46
 
-; XXX
+; unused
 	ret
 
 .asm_112d4d
@@ -8611,7 +8611,7 @@
 	ld [$cc0d], a
 	ld a, l
 	ld [$cc0c], a
-	cp $8e ; XXX ; LOW(Unknown_113b8e + $100) ???
+	cp $8e ; XXX LOW(Unknown_113b8e + $100) ???
 	jp nz, .asm_113751
 	ld de, $cc18
 	ld hl, $cbe7
@@ -9515,8 +9515,7 @@
 	jp Function111f97
 ; 113ec7
 
-Function113ec7: ; 113ec7
-; Unreferenced
+Unreferenced_Function113ec7: ; 113ec7
 	ld hl, $c822
 	ld a, [hl]
 	push af
--- a/macros.asm
+++ b/macros.asm
@@ -1,5 +1,4 @@
 INCLUDE "macros/enum.asm"
-INCLUDE "macros/charmap.asm"
 INCLUDE "macros/predef.asm"
 INCLUDE "macros/rst.asm"
 INCLUDE "macros/data.asm"
@@ -6,8 +5,6 @@
 INCLUDE "macros/code.asm"
 INCLUDE "macros/coords.asm"
 INCLUDE "macros/color.asm"
-INCLUDE "macros/base_stats.asm"
-INCLUDE "macros/tilesets.asm"
 
 INCLUDE "macros/scripts/audio.asm"
 INCLUDE "macros/scripts/maps.asm"
--- a/macros/base_stats.asm
+++ /dev/null
@@ -1,67 +1,0 @@
-; Used in data/pokemon/base_stats/*.asm
-
-define: MACRO
-if !DEF(\1)
-\1 EQUS \2
-endc
-ENDM
-
-const_value = 0
-
-add_tm: MACRO
-if !DEF(TM01)
-TM01 = const_value
-	enum_start 1
-endc
-	define _\@_1, "TM_\1"
-	const _\@_1
-	enum \1_TMNUM
-ENDM
-
-add_hm: MACRO
-if !DEF(HM01)
-HM01 = const_value
-endc
-	define _\@_1, "HM_\1"
-	const _\@_1
-	enum \1_TMNUM
-ENDM
-
-add_mt: MACRO
-	enum \1_TMNUM
-ENDM
-
-; N TMs/HMs need (N+7)/8 bytes for their bit flags.
-; The rgbasm integers tms1, tms2, tms3 each hold 3 bytes, or 24 bits.
-tmhm: MACRO
-tms1 = 0
-tms2 = 0
-tms3 = 0
-rept _NARG
-	if DEF(\1_TMNUM)
-	if \1_TMNUM < 24 + 1
-tms1 = tms1 | (1 << ((\1_TMNUM) - 1))
-	elif \1_TMNUM < 48 + 1
-tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24))
-	else
-tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48))
-	endc
-	else
-		fail "\1 is not a TM, HM, or move tutor move"
-	endc
-	shift
-endr
-
-rept 3
-	db tms1 & $ff
-tms1 = tms1 >> 8
-endr
-rept 3
-	db tms2 & $ff
-tms2 = tms2 >> 8
-endr
-rept 2
-	db tms3 & $ff
-tms3 = tms3 >> 8
-endr
-ENDM
--- a/macros/charmap.asm
+++ /dev/null
@@ -1,372 +1,0 @@
-; Control characters
-	charmap "<START>",   $00
-	charmap "<PLAY_G>",  $14 ; gendered PlayerName; same as "<PLAYER>" in English
-	charmap "<DAY>",     $15
-	charmap "¯",         $1f ; soft linebreak
-	charmap "<LNBRK>",   $22
-	charmap "<KOUGEKI>", $23 ; "こうげき"
-	charmap "<POKE>",    $24 ; "<PO><KE>"
-	charmap "%",         $25
-	charmap "<RED>",     $38 ; RedsName
-	charmap "<GREEN>",   $39 ; GreensName
-	charmap "<ENEMY>",   $3f
-	charmap "<MOM>",     $49 ; MomsName
-	charmap "<PKMN>",    $4a ; "<PK><MN>"
-	charmap "<NEXT>",    $4e
-	charmap "<LINE>",    $4f
-
-	charmap "@",         $50 ; string terminator
-	charmap "<PARA>",    $51
-	charmap "<PLAYER>",  $52 ; PlayerName
-	charmap "<RIVAL>",   $53
-	charmap "#",         $54 ; "POKé"
-	charmap "<CONT>",    $55
-	charmap "<......>",  $56 ; "……"
-	charmap "<DONE>",    $57
-	charmap "<PROMPT>",  $58
-	charmap "<TARGET>",  $59
-	charmap "<USER>",    $5a
-	charmap "<PC>",      $5b ; "PC"
-	charmap "<TM>",      $5c ; "TM"
-	charmap "<TRNER>",   $5d ; "TRAINER"
-	charmap "<ROCKET>",  $5e ; "ROCKET"
-	charmap "<DEXEND>",  $5f
-
-; Actual characters (from gfx/font/font_extra.png)
-
-	charmap "<BOLD_A>",  $60 ; unused
-	charmap "<BOLD_B>",  $61 ; unused
-	charmap "<BOLD_C>",  $62 ; unused
-	charmap "<BOLD_D>",  $63 ; unused
-	charmap "<BOLD_E>",  $64 ; unused
-	charmap "<BOLD_F>",  $65 ; unused
-	charmap "<BOLD_G>",  $66 ; unused
-	charmap "<BOLD_H>",  $67 ; unused
-	charmap "<BOLD_I>",  $68 ; unused
-	charmap "<BOLD_V>",  $69
-	charmap "<BOLD_S>",  $6a
-	charmap "<BOLD_L>",  $6b ; unused
-	charmap "<BOLD_M>",  $6c ; unused
-	charmap "<COLON>",   $6d ; colon with tinier dots than ":"
-	charmap "ぃ",         $6e ; hiragana small i, unused
-	charmap "ぅ",         $6f ; hiragana small u, unused
-	charmap "<PO>",      $70
-	charmap "<KE>",      $71
-	charmap "<``>",      $72 ; opening quote
-	charmap "<''>",      $73 ; closing quote
-	charmap "·",         $74 ; middle dot, unused
-	charmap "…",         $75 ; ellipsis
-	charmap "ぁ",         $76 ; hiragana small a, unused
-	charmap "ぇ",         $77 ; hiragana small e, unused
-	charmap "ぉ",         $78 ; hiragana small o, unused
-
-	charmap "┌",         $79
-	charmap "─",         $7a
-	charmap "┐",         $7b
-	charmap "│",         $7c
-	charmap "└",         $7d
-	charmap "┘",         $7e
-	charmap " ",         $7f
-
-; Actual characters (from gfx/font/font_battle_extra.png)
-
-	charmap "<LV>",      $6e
-
-	charmap "<ど>",       $70 ; hiragana small do, unused
-	charmap "◀",         $71
-	charmap "『",         $72 ; Japanese opening quote, unused
-	charmap "<ID>",      $73
-	charmap "№",         $74
-
-; Actual characters (from other graphics files)
-
-	charmap "|",         $31 ; from gfx/stats/stats_tiles
-
-	charmap "<SHINY>",   $3f ; gfx/stats/shiny
-
-	charmap "<BLACK>",   $60 ; from gfx/mobile/phone_tiles.2bpp
-	charmap "▲",         $61 ; gfx/font/up_arrow.png
-	charmap "<PHONE>",   $62 ; gfx/font/overworld_phone_icon.2bpp
-	charmap "_",         $62 ; from gfx/battle/hp_exp_bar_border.1bpp
-
-	charmap "′",         $6e ; gfx/font/feet_inches.png
-	charmap "″",         $6f ; gfx/font/feet_inches.png
-
-; Actual characters (from gfx/font/font.png)
-
-	charmap "A",         $80
-	charmap "B",         $81
-	charmap "C",         $82
-	charmap "D",         $83
-	charmap "E",         $84
-	charmap "F",         $85
-	charmap "G",         $86
-	charmap "H",         $87
-	charmap "I",         $88
-	charmap "J",         $89
-	charmap "K",         $8a
-	charmap "L",         $8b
-	charmap "M",         $8c
-	charmap "N",         $8d
-	charmap "O",         $8e
-	charmap "P",         $8f
-	charmap "Q",         $90
-	charmap "R",         $91
-	charmap "S",         $92
-	charmap "T",         $93
-	charmap "U",         $94
-	charmap "V",         $95
-	charmap "W",         $96
-	charmap "X",         $97
-	charmap "Y",         $98
-	charmap "Z",         $99
-
-	charmap "(",         $9a
-	charmap ")",         $9b
-	charmap ":",         $9c
-	charmap ";",         $9d
-	charmap "[",         $9e
-	charmap "]",         $9f
-
-	charmap "a",         $a0
-	charmap "b",         $a1
-	charmap "c",         $a2
-	charmap "d",         $a3
-	charmap "e",         $a4
-	charmap "f",         $a5
-	charmap "g",         $a6
-	charmap "h",         $a7
-	charmap "i",         $a8
-	charmap "j",         $a9
-	charmap "k",         $aa
-	charmap "l",         $ab
-	charmap "m",         $ac
-	charmap "n",         $ad
-	charmap "o",         $ae
-	charmap "p",         $af
-	charmap "q",         $b0
-	charmap "r",         $b1
-	charmap "s",         $b2
-	charmap "t",         $b3
-	charmap "u",         $b4
-	charmap "v",         $b5
-	charmap "w",         $b6
-	charmap "x",         $b7
-	charmap "y",         $b8
-	charmap "z",         $b9
-
-	charmap "Ä",         $c0
-	charmap "Ö",         $c1
-	charmap "Ü",         $c2
-	charmap "ä",         $c3
-	charmap "ö",         $c4
-	charmap "ü",         $c5
-
-	charmap "'d",        $d0
-	charmap "'l",        $d1
-	charmap "'m",        $d2
-	charmap "'r",        $d3
-	charmap "'s",        $d4
-	charmap "'t",        $d5
-	charmap "'v",        $d6
-
-	charmap "←",         $df
-	charmap "'",         $e0
-	charmap "<PK>",      $e1
-	charmap "<MN>",      $e2
-	charmap "-",         $e3
-
-	charmap "?",         $e6
-	charmap "!",         $e7
-	charmap ".",         $e8
-	charmap "&",         $e9
-
-	charmap "é",         $ea
-	charmap "→",         $eb
-	charmap "▷",         $ec
-	charmap "▶",         $ed
-	charmap "▼",         $ee
-	charmap "♂",         $ef
-	charmap "¥",         $f0
-	charmap "×",         $f1
-	charmap "<DOT>",     $f2 ; same as "." in English
-	charmap "/",         $f3
-	charmap ",",         $f4
-	charmap "♀",         $f5
-
-	charmap "0",         $f6
-	charmap "1",         $f7
-	charmap "2",         $f8
-	charmap "3",         $f9
-	charmap "4",         $fa
-	charmap "5",         $fb
-	charmap "6",         $fc
-	charmap "7",         $fd
-	charmap "8",         $fe
-	charmap "9",         $ff
-
-; Japanese kana, for those bits of text that were not translated to English
-
-	charmap "ガ", $5
-	charmap "ギ", $6
-	charmap "グ", $7
-	charmap "ゲ", $8
-	charmap "ゴ", $9
-	charmap "ザ", $a
-	charmap "ジ", $b
-	charmap "ズ", $c
-	charmap "ゼ", $d
-	charmap "ゾ", $e
-	charmap "ダ", $f
-	charmap "ヂ", $10
-	charmap "ヅ", $11
-	charmap "デ", $12
-	charmap "ド", $13
-
-	charmap "バ", $19
-	charmap "ビ", $1a
-	charmap "ブ", $1b
-	charmap "ボ", $1c
-;	charmap "ベ", $1d
-
-	charmap "が", $26
-	charmap "ぎ", $27
-	charmap "ぐ", $28
-	charmap "げ", $29
-	charmap "ご", $2a
-	charmap "ざ", $2b
-	charmap "じ", $2c
-	charmap "ず", $2d
-	charmap "ぜ", $2e
-	charmap "ぞ", $2f
-	charmap "だ", $30
-	charmap "ぢ", $31
-	charmap "づ", $32
-	charmap "で", $33
-	charmap "ど", $34
-
-	charmap "ば", $3a
-	charmap "び", $3b
-	charmap "ぶ", $3c
-	charmap "べ", $3d
-	charmap "ぼ", $3e
-
-	charmap "パ", $40
-	charmap "ピ", $41
-	charmap "プ", $42
-	charmap "ポ", $43
-	charmap "ぱ", $44
-	charmap "ぴ", $45
-	charmap "ぷ", $46
-	charmap "ぺ", $47
-	charmap "ぽ", $48
-
-	charmap "ア", $80
-	charmap "イ", $81
-	charmap "ウ", $82
-	charmap "エ", $83
-	charmap "ォ", $84
-	charmap "カ", $85
-	charmap "キ", $86
-	charmap "ク", $87
-	charmap "ケ", $88
-	charmap "コ", $89
-	charmap "サ", $8a
-	charmap "シ", $8b
-	charmap "ス", $8c
-	charmap "セ", $8d
-	charmap "ソ", $8e
-	charmap "タ", $8f
-	charmap "チ", $90
-	charmap "ツ", $91
-	charmap "テ", $92
-	charmap "ト", $93
-	charmap "ナ", $94
-	charmap "ニ", $95
-	charmap "ヌ", $96
-	charmap "ネ", $97
-	charmap "ノ", $98
-	charmap "ハ", $99
-	charmap "ヒ", $9a
-	charmap "フ", $9b
-	charmap "ホ", $9c
-	charmap "マ", $9d
-	charmap "ミ", $9e
-	charmap "ム", $9f
-	charmap "メ", $a0
-	charmap "モ", $a1
-	charmap "ヤ", $a2
-	charmap "ユ", $a3
-	charmap "ヨ", $a4
-	charmap "ラ", $a5
-	charmap "ル", $a6
-	charmap "レ", $a7
-	charmap "ロ", $a8
-	charmap "ワ", $a9
-	charmap "ヲ", $aa
-	charmap "ン", $ab
-	charmap "ッ", $ac
-	charmap "ャ", $ad
-	charmap "ュ", $ae
-	charmap "ョ", $af
-	charmap "ィ", $b0
-
-	charmap "あ", $b1
-	charmap "い", $b2
-	charmap "う", $b3
-	charmap "え", $b4
-	charmap "お", $b5
-
-	charmap "か", $b6
-	charmap "き", $b7
-	charmap "く", $b8
-	charmap "け", $b9
-	charmap "こ", $ba
-	charmap "さ", $bb
-	charmap "し", $bc
-	charmap "す", $bd
-	charmap "せ", $be
-	charmap "そ", $bf
-	charmap "た", $c0
-	charmap "ち", $c1
-	charmap "つ", $c2
-	charmap "て", $c3
-	charmap "と", $c4
-	charmap "な", $c5
-	charmap "に", $c6
-	charmap "ぬ", $c7
-	charmap "ね", $c8
-	charmap "の", $c9
-	charmap "は", $ca
-	charmap "ひ", $cb
-	charmap "ふ", $cc
-	charmap "へ", $cd
-	charmap "ほ", $ce
-
-	charmap "ま", $cf
-	charmap "み", $d0
-	charmap "む", $d1
-	charmap "め", $d2
-	charmap "も", $d3
-	charmap "や", $d4
-	charmap "ゆ", $d5
-	charmap "よ", $d6
-	charmap "ら", $d7
-	charmap "り", $d8
-	charmap "る", $d9
-	charmap "れ", $da
-	charmap "ろ", $db
-	charmap "わ", $dc
-	charmap "を", $dd
-	charmap "ん", $de
-	charmap "っ", $df
-	charmap "ゃ", $e0
-	charmap "ゅ", $e1
-	charmap "ょ", $e2
-
-	charmap "ー", $e3
-
-	charmap "゚", $e4
-	charmap "゙", $e5
-
-	charmap "ァ", $e9
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -35,10 +35,9 @@
 	jp hl
 ENDM
 
-; Many mobile functions were dummied out in localization.
-mobile EQUS "ret"
-
 maskbits: MACRO
+; masks just enough bits to cover the argument
+; e.g. "maskbits 26" becomes "and %00011111" (since 26 - 1 = %00011001)
 ; example usage in rejection sampling:
 ; .loop
 ; 	call Random
@@ -47,8 +46,8 @@
 ; 	jr nc, .loop
 x = 1
 rept 8
-if \1 > x
-x = (x + 1) * 2 +- 1
+if x + 1 < (\1)
+x = x << 1 | 1
 endc
 endr
 	and x
--- a/macros/color.asm
+++ b/macros/color.asm
@@ -1,6 +1,6 @@
 RGB: MACRO
 rept _NARG / 3
-	dw ((\3) << 10) + ((\2) << 5) + (\1)
+	dw palred (\1) + palgreen (\2) + palblue (\3)
 	shift
 	shift
 	shift
@@ -7,9 +7,9 @@
 endr
 ENDM
 
+palred   EQUS "(1 << 0) *"
+palgreen EQUS "(1 << 5) *"
+palblue  EQUS "(1 << 10) *"
+
 palettes EQUS "* 8"
 palette  EQUS "+ 8 *"
-
-palred   EQUS "$0001 *"
-palgreen EQUS "$0020 *"
-palblue  EQUS "$0400 *"
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -85,20 +85,24 @@
 
 dbpixel: MACRO
 if _NARG >= 4
+; x tile, x pxl, y tile, y pxl
 	db \1 * 8 + \3, \2 * 8 + \4
 else
+; x, y
 	db \1 * 8, \2 * 8
 endc
 ENDM
 
 dsprite: MACRO
-; conditional segment is there because not every instance of
-; this macro is directly OAM
-if _NARG >= 7 ; y tile, y pxl, x tile, x pxl, vtile offset, flags, palette
-	db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, (\6 << 3) + (\7 & PALETTE_MASK)
-else
+; y tile, y pxl, x tile, x pxl, vtile offset, flags, attributes
 	db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
-endc
+ENDM
+
+
+menu_coords: MACRO
+; x1, y1, x2, y2
+	db \2, \1 ; start coords
+	db \4, \3 ; end coords
 ENDM
 
 
--- a/macros/enum.asm
+++ b/macros/enum.asm
@@ -38,3 +38,12 @@
 \1 EQU (1 << const_value)
 const_value = const_value + 1
 ENDM
+
+
+; Enumerate strings
+
+define: MACRO
+if !DEF(\1)
+\1 EQUS \2
+endc
+ENDM
--- a/macros/predef.asm
+++ b/macros/predef.asm
@@ -1,8 +1,3 @@
-add_predef: MACRO
-\1Predef::
-	dab \1
-ENDM
-
 predef_id: MACRO
 ; Some functions load the predef id
 ; without immediately calling Predef.
--- a/macros/scripts/battle_commands.asm
+++ b/macros/scripts/battle_commands.asm
@@ -3,7 +3,7 @@
 \1 EQUS "db \1_command"
 ENDM
 
-; BattleCommandPointers indexes (see data/battle_command_pointers.asm)
+; BattleCommandPointers indexes (see data/battle/effect_command_pointers.asm)
 	enum_start 1
 	command checkturn               ; 01
 	command checkobedience          ; 02
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -101,11 +101,6 @@
 	dw (\1Special - SpecialsPointers) / 3
 ENDM
 
-add_special: MACRO
-\1Special::
-	dba \1
-ENDM
-
 	enum ptcallasm_command ; $10
 ptcallasm: MACRO
 	db ptcallasm_command
@@ -424,9 +419,9 @@
 	db \1 ; memory
 ENDM
 
-	enum RAM2MEM_command ; $3f
-RAM2MEM: MACRO
-	db RAM2MEM_command
+	enum vartomem_command ; $3f
+vartomem: MACRO
+	db vartomem_command
 	db \1 ; memory
 ENDM
 
@@ -483,7 +478,11 @@
 	enum refreshscreen_command ; $48
 refreshscreen: MACRO
 	db refreshscreen_command
+if _NARG == 1
 	db \1 ; dummy
+else
+	db 0
+endc
 ENDM
 
 	enum closetext_command ; $49
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -9,6 +9,12 @@
 	dw \1, 0
 ENDM
 
+callback: MACRO
+;\1: type: a MAPCALLBACK_* constant
+;\2: script pointer
+	dbw \1, \2
+ENDM
+
 warp_def: MACRO
 ;\1: x: left to right, starts at 0
 ;\2: y: top to bottom, starts at 0
@@ -23,9 +29,10 @@
 ;\2: y: top to bottom, starts at 0
 ;\3: scene id: controlled by setscene/setmapscene
 ;\4: script pointer
-	db \3, \2, \1, $0
+	db \3, \2, \1
+	db 0 ; filler
 	dw \4
-	db $0, $0
+	db 0, 0 ; filler
 ENDM
 
 bg_event: MACRO
@@ -91,6 +98,12 @@
 endc
 ENDM
 
+hiddenitem: MACRO
+;\1: flag: an EVENT_* constant
+;\2: item: from constants/item_constants.asm
+	dwb \1, \2
+ENDM
+
 elevfloor: MACRO
 ;\1: floor: a FLOOR_* constant
 ;\2: warp destination: starts at 1
@@ -99,10 +112,22 @@
 	map \3
 ENDM
 
+conditional_event: MACRO
+;\1: flag: an EVENT_* constant
+;\2: script pointer
+	dw \1, \2
+ENDM
+
+cmdqueue: MACRO
+;\1: type: a CMDQUEUE_* constant
+;\2: data pointer
+	dbw \1, \2
+	dw 0 ; filler
+ENDM
+
 stonetable: MACRO
 ;\1: warp id
 ;\2: object_event id
 ;\3: script pointer
-	db \1, \2
-	dw \3
+	dbbw \1, \2, \3
 ENDM
--- a/macros/scripts/text.asm
+++ b/macros/scripts/text.asm
@@ -1,4 +1,4 @@
-text   EQUS "db \"<START>\"," ; Start writing text.
+text   EQUS "db TX_START,"    ; Start writing text.
 next   EQUS "db \"<NEXT>\","  ; Move a line down.
 line   EQUS "db \"<LINE>\","  ; Start writing at the bottom line.
 page   EQUS "db \"@\","       ; Start a new Pokédex page.
@@ -8,8 +8,13 @@
 prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
 
 ; TextCommands indexes (see home/text.asm)
-	enum_start $01
+	enum_start
 
+	enum TX_START ; $00
+text_start: MACRO
+	db TX_START
+ENDM
+
 	enum TX_RAM ; $01
 text_from_ram: MACRO
 	db TX_RAM
@@ -68,9 +73,9 @@
 	db TX_EXIT
 ENDM
 
-	enum TX_SOUND_0B ; $0b
+	enum TX_SOUND_DEX_FANFARE_50_79 ; $0b
 sound_dex_fanfare_50_79: MACRO
-	db TX_SOUND_0B
+	db TX_SOUND_DEX_FANFARE_50_79
 ENDM
 
 	enum TX_DOTS ; $0c
@@ -84,34 +89,34 @@
 	db TX_LINK_WAIT_BUTTON
 ENDM
 
-	enum TX_SOUND_0E ; $0e
+	enum TX_SOUND_DEX_FANFARE_20_49 ; $0e
 sound_dex_fanfare_20_49: MACRO
-	db TX_SOUND_0E
+	db TX_SOUND_DEX_FANFARE_20_49
 ENDM
 
-	enum TX_SOUND_0F ; $0f
+	enum TX_SOUND_ITEM ; $0f
 sound_item: MACRO
-	db TX_SOUND_0F
+	db TX_SOUND_ITEM
 ENDM
 
-	enum TX_SOUND_10 ; $10
+	enum TX_SOUND_CAUGHT_MON ; $10
 sound_caught_mon: MACRO
-	db TX_SOUND_10
+	db TX_SOUND_CAUGHT_MON
 ENDM
 
-	enum TX_SOUND_11 ; $11
+	enum TX_SOUND_DEX_FANFARE_80_109 ; $11
 sound_dex_fanfare_80_109: MACRO
-	db TX_SOUND_11
+	db TX_SOUND_DEX_FANFARE_80_109
 ENDM
 
-	enum TX_SOUND_12 ; $12
+	enum TX_SOUND_FANFARE ; $12
 sound_fanfare: MACRO
-	db TX_SOUND_12
+	db TX_SOUND_FANFARE
 ENDM
 
-	enum TX_SOUND_13 ; $13
+	enum TX_SOUND_SLOT_MACHINE_START ; $13
 sound_slot_machine_start: MACRO
-	db TX_SOUND_13
+	db TX_SOUND_SLOT_MACHINE_START
 ENDM
 
 	enum TX_STRINGBUFFER ; $14
--- a/macros/tilesets.asm
+++ /dev/null
@@ -1,15 +1,0 @@
-; Used in tilesets/*.asm
-
-tilepal: MACRO
-; vram bank, pals
-x = \1 << OAM_TILE_BANK
-rept (_NARG +- 1) / 2
-	dn (x | PAL_BG_\3), (x | PAL_BG_\2)
-	shift
-	shift
-endr
-ENDM
-
-tilecoll: MACRO
-	db COLL_\1, COLL_\2, COLL_\3, COLL_\4
-ENDM
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -110,7 +110,7 @@
 \1Mon1::            box_struct \1Mon1
 \1Mon2::            ds BOXMON_STRUCT_LENGTH * (MONS_PER_BOX +- 1)
 \1MonOT::           ds NAME_LENGTH * MONS_PER_BOX
-\1MonNicknames::    ds PKMN_NAME_LENGTH * MONS_PER_BOX
+\1MonNicknames::    ds MON_NAME_LENGTH * MONS_PER_BOX
 \1MonNicknamesEnd::
 \1End::             ds 2 ; padding
 ENDM
@@ -179,13 +179,13 @@
 \1Name:: ds NAME_LENGTH +- 1
 \1TrainerClass:: ds 1
 \1Pkmn1:: party_struct \1Pkmn1
-\1Pkmn1Name:: ds PKMN_NAME_LENGTH
+\1Pkmn1Name:: ds MON_NAME_LENGTH
 \1Pkmn1NameEnd::
 \1Pkmn2:: party_struct \1Pkmn2
-\1Pkmn2Name:: ds PKMN_NAME_LENGTH
+\1Pkmn2Name:: ds MON_NAME_LENGTH
 \1Pkmn2NameEnd::
 \1Pkmn3:: party_struct \1Pkmn3
-\1Pkmn3Name:: ds PKMN_NAME_LENGTH
+\1Pkmn3Name:: ds MON_NAME_LENGTH
 \1Pkmn3NameEnd::
 \1TrainerData:: ds BATTLETOWER_TRAINERDATALENGTH
 \1TrainerEnd::
@@ -222,7 +222,7 @@
 \1ID::       dw
 \1DVs::      dw
 \1Level::    db
-\1Nickname:: ds PKMN_NAME_LENGTH +- 1
+\1Nickname:: ds MON_NAME_LENGTH +- 1
 \1End::
 ENDM
 
@@ -247,8 +247,8 @@
 
 trademon: MACRO
 \1Species::     db ; wc6d0 | wc702
-\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703
-\1Nickname::    ds PKMN_NAME_LENGTH ; wc6dc | wc70e
+\1SpeciesName:: ds MON_NAME_LENGTH ; wc6d1 | wc703
+\1Nickname::    ds MON_NAME_LENGTH ; wc6dc | wc70e
 \1SenderName::  ds NAME_LENGTH ; wc6e7 | wc719
 \1OTName::      ds NAME_LENGTH ; wc6f2 | wc724
 \1DVs::         dw ; wc6fd | wc72f
@@ -337,6 +337,19 @@
 \1ObjectScript::    dw
 \1ObjectEventFlag:: dw
 	ds 2
+ENDM
+
+sprite_oam_struct: MACRO
+\1YCoord::     db
+\1XCoord::     db
+\1TileID::     db
+\1Attributes:: db
+; bit 7: priority
+; bit 6: y flip
+; bit 5: x flip
+; bit 4: pal # (non-cgb)
+; bit 3: vram bank (cgb only)
+; bit 2-0: pal # (cgb only)
 ENDM
 
 sprite_anim_struct: MACRO
--- a/main.asm
+++ b/main.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 
 
 SECTION "bank1", ROMX
@@ -49,7 +49,7 @@
 INCLUDE "engine/pack.asm"
 INCLUDE "engine/time.asm"
 INCLUDE "engine/tmhm.asm"
-INCLUDE "engine/namingscreen.asm"
+INCLUDE "engine/naming_screen.asm"
 INCLUDE "engine/events/misc_scripts.asm"
 INCLUDE "engine/events/heal_machine_anim.asm"
 INCLUDE "engine/events/whiteout.asm"
@@ -85,14 +85,12 @@
 INCLUDE "engine/events/print_unown.asm"
 INCLUDE "engine/events/print_photo.asm"
 INCLUDE "engine/breeding.asm"
+INCLUDE "gfx/tilesets.asm"
 
 
-INCLUDE "tilesets/data.asm"
-
-
 SECTION "Roofs", ROMX
 
-INCLUDE "tilesets/roofs.asm"
+INCLUDE "engine/mapgroup_roofs.asm"
 
 
 SECTION "Clock Reset", ROMX
@@ -172,12 +170,12 @@
 SECTION "Battle Core", ROMX
 
 INCLUDE "engine/battle/core.asm"
-INCLUDE "data/battle_command_pointers.asm"
+INCLUDE "data/battle/effect_command_pointers.asm"
 
 
 SECTION "bank10", ROMX
 
-INCLUDE "engine/pokedex.asm"
+INCLUDE "engine/pokedex/pokedex.asm"
 INCLUDE "data/moves/moves.asm"
 INCLUDE "engine/evolve.asm"
 
@@ -186,7 +184,7 @@
 
 INCLUDE "engine/events/fruit_trees.asm"
 INCLUDE "engine/battle/ai/move.asm"
-INCLUDE "engine/pokedex_2.asm"
+INCLUDE "engine/pokedex/pokedex_2.asm"
 INCLUDE "data/pokemon/dex_entry_pointers.asm"
 INCLUDE "engine/mail.asm"
 
@@ -196,7 +194,7 @@
 INCLUDE "engine/init_gender.asm"
 INCLUDE "engine/routines/drawkrispackgfx.asm"
 INCLUDE "engine/events/move_tutor.asm"
-INCLUDE "engine/crystal_colors.asm"
+INCLUDE "engine/crystal_layouts.asm"
 INCLUDE "engine/events/celebi.asm"
 INCLUDE "engine/main_menu.asm"
 INCLUDE "mobile/mobile_menu.asm"
@@ -208,15 +206,7 @@
 SECTION "bank13", ROMX
 
 INCLUDE "engine/map_palettes.asm"
-INCLUDE "tilesets/palette_maps.asm"
-
-; unreferenced
-; 0x4ce05
-rept 26
-	db $06
-endr
-; 0x4ce1f
-
+INCLUDE "gfx/tilesets/palette_maps.asm"
 INCLUDE "data/collision_permissions.asm"
 INCLUDE "engine/routines/emptyallsrambanks.asm"
 INCLUDE "engine/routines/savemenu_copytilemapatonce.asm"
@@ -226,14 +216,14 @@
 INCLUDE "engine/routines/phonering_copytilemapatonce.asm"
 
 Shrink1Pic: ; 4d249
-INCBIN "gfx/shrink/shrink1.2bpp.lz"
+INCBIN "gfx/new_game/shrink1.2bpp.lz"
 
 Shrink2Pic: ; 4d2d9
-INCBIN "gfx/shrink/shrink2.2bpp.lz"
+INCBIN "gfx/new_game/shrink2.2bpp.lz"
 
 INCLUDE "engine/link_2.asm"
 INCLUDE "engine/delete_save_change_clock.asm"
-INCLUDE "tilesets/tilesets.asm"
+INCLUDE "data/tilesets.asm"
 INCLUDE "engine/routines/flagpredef.asm"
 INCLUDE "engine/routines/trademonfrontpic.asm"
 INCLUDE "engine/events/pokerus/check_pokerus.asm"
@@ -244,7 +234,7 @@
 INCLUDE "engine/events/catch_tutorial.asm"
 INCLUDE "engine/evolution_animation.asm"
 INCLUDE "engine/init_hof_credits.asm"
-INCLUDE "mobile/get_trainer_class.asm"
+INCLUDE "engine/events/battle_tower/get_trainer_class.asm"
 INCLUDE "engine/battle/sliding_intro.asm"
 INCLUDE "mobile/print_opp_message.asm"
 INCLUDE "engine/battle/checkbattlescene.asm"
@@ -263,30 +253,17 @@
 INCLUDE "engine/events/sacred_ash.asm"
 INCLUDE "engine/tempmon.asm"
 INCLUDE "engine/types.asm"
-INCLUDE "text/unused_gen_1_trainers.asm"
+INCLUDE "engine/routines/unreferenced_getgen1trainerclassname.asm"
 INCLUDE "engine/mon_stats.asm"
 INCLUDE "engine/routines/initlist.asm"
 INCLUDE "engine/experience.asm"
 INCLUDE "engine/routines/switchpartymons.asm"
-INCLUDE "gfx/load_pics.asm"
+INCLUDE "engine/load_pics.asm"
 INCLUDE "engine/move_mon_wo_mail.asm"
 INCLUDE "data/pokemon/base_stats.asm"
 INCLUDE "data/pokemon/names.asm"
+INCLUDE "data/unused/unknown_53d84.asm"
 
-Unknown_53d84: ; unreferenced
-	db $1a, $15
-	db $33, $16
-	db $4b, $17
-	db $62, $18
-	db $79, $19
-	db $90, $1a
-	db $a8, $1b
-	db $c4, $1c
-	db $e0, $1d
-	db $f6, $1e
-	db $ff, $1f
-	db $ff, $20
-
 UnknownEggPic:: ; 53d9c
 ; Another egg pic. This is shifted up a few pixels.
 INCBIN "gfx/unknown/unknown_egg.2bpp.lz"
@@ -294,7 +271,7 @@
 
 SECTION "Crystal Phone Text", ROMX
 
-INCLUDE "text/phone/extra.asm"
+INCLUDE "data/phone/text/extra.asm"
 
 
 SECTION "bank20", ROMX
@@ -302,7 +279,7 @@
 INCLUDE "engine/player_movement.asm"
 INCLUDE "engine/engine_flags.asm"
 INCLUDE "engine/variables.asm"
-INCLUDE "text/battle.asm"
+INCLUDE "data/battle/battle_text.asm"
 INCLUDE "engine/debug.asm"
 
 
@@ -318,10 +295,10 @@
 INCLUDE "engine/events/kurt.asm"
 INCLUDE "engine/player_gfx.asm"
 INCLUDE "mobile/mobile_22.asm"
-INCLUDE "engine/events/crystal_unown.asm"
+INCLUDE "engine/events/unown_walls.asm"
 INCLUDE "engine/events/buena.asm"
 INCLUDE "engine/events/dratini.asm"
-INCLUDE "engine/events/battle_tower_rules.asm"
+INCLUDE "engine/events/battle_tower/rules.asm"
 INCLUDE "mobile/mobile_22_2.asm"
 
 
@@ -354,28 +331,31 @@
 
 SECTION "Phone Text", ROMX
 
-INCLUDE "text/phone/anthony_overworld.asm"
-INCLUDE "text/phone/todd_overworld.asm"
-INCLUDE "text/phone/gina_overworld.asm"
-INCLUDE "text/phone/irwin_overworld.asm"
-INCLUDE "text/phone/arnie_overworld.asm"
-INCLUDE "text/phone/alan_overworld.asm"
-INCLUDE "text/phone/dana_overworld.asm"
-INCLUDE "text/phone/chad_overworld.asm"
-INCLUDE "text/phone/derek_overworld.asm"
-INCLUDE "text/phone/tully_overworld.asm"
-INCLUDE "text/phone/brent_overworld.asm"
-INCLUDE "text/phone/tiffany_overworld.asm"
-INCLUDE "text/phone/vance_overworld.asm"
-INCLUDE "text/phone/wilton_overworld.asm"
-INCLUDE "text/phone/kenji_overworld.asm"
-INCLUDE "text/phone/parry_overworld.asm"
-INCLUDE "text/phone/erin_overworld.asm"
+INCLUDE "data/phone/text/anthony_overworld.asm"
+INCLUDE "data/phone/text/todd_overworld.asm"
+INCLUDE "data/phone/text/gina_overworld.asm"
+INCLUDE "data/phone/text/irwin_overworld.asm"
+INCLUDE "data/phone/text/arnie_overworld.asm"
+INCLUDE "data/phone/text/alan_overworld.asm"
+INCLUDE "data/phone/text/dana_overworld.asm"
+INCLUDE "data/phone/text/chad_overworld.asm"
+INCLUDE "data/phone/text/derek_overworld.asm"
+INCLUDE "data/phone/text/tully_overworld.asm"
+INCLUDE "data/phone/text/brent_overworld.asm"
+INCLUDE "data/phone/text/tiffany_overworld.asm"
+INCLUDE "data/phone/text/vance_overworld.asm"
+INCLUDE "data/phone/text/wilton_overworld.asm"
+INCLUDE "data/phone/text/kenji_overworld.asm"
+INCLUDE "data/phone/text/parry_overworld.asm"
+INCLUDE "data/phone/text/erin_overworld.asm"
 
 
 SECTION "bank2E", ROMX
 
-INCLUDE "engine/events_3.asm"
+INCLUDE "engine/events/map_name_sign.asm"
+INCLUDE "engine/events/checkforhiddenitems.asm"
+INCLUDE "engine/events/treemons.asm"
+INCLUDE "engine/events/loadfishinggfx.asm"
 INCLUDE "engine/radio.asm"
 INCLUDE "engine/mail_2.asm"
 
@@ -402,7 +382,7 @@
 
 INCLUDE "engine/events/bug_contest/display_stats.asm"
 INCLUDE "engine/battle_anims/anim_commands.asm"
-INCLUDE "engine/battle_anims/engine.asm"
+INCLUDE "engine/battle_anims/core.asm"
 INCLUDE "data/battle_anims/objects.asm"
 INCLUDE "engine/battle_anims/functions.asm"
 INCLUDE "engine/battle_anims/helpers.asm"
@@ -450,15 +430,6 @@
 SECTION "bank38", ROMX
 
 INCLUDE "engine/events/print_unown_2.asm"
-
-Unknown_e00ed:
-; Graphics for an unused Game Corner
-; game were meant to be here.
-
-ret_e00ed: ; e00ed (38:40ed)
-; How many coins?
-	ret
-
 INCLUDE "engine/card_flip.asm"
 INCLUDE "engine/unown_puzzle.asm"
 INCLUDE "engine/dummy_game.asm"
@@ -476,13 +447,13 @@
 
 SECTION "bank3E", ROMX
 
-INCLUDE "gfx/font.asm"
+INCLUDE "engine/load_font.asm"
 INCLUDE "engine/time_capsule.asm"
 INCLUDE "engine/events/name_rater.asm"
 INCLUDE "engine/routines/playslowcry.asm"
-INCLUDE "engine/routines/newpokedexentry.asm"
+INCLUDE "engine/pokedex/newpokedexentry.asm"
 INCLUDE "engine/time_capsule_2.asm"
-INCLUDE "engine/unown_dex.asm"
+INCLUDE "engine/pokedex/unown_dex.asm"
 INCLUDE "engine/events/magikarp.asm"
 INCLUDE "engine/battle/hidden_power.asm"
 INCLUDE "engine/battle/misc.asm"
@@ -490,7 +461,7 @@
 
 SECTION "bank3F", ROMX
 
-INCLUDE "tilesets/animations.asm"
+INCLUDE "engine/tileset_anims.asm"
 INCLUDE "engine/npctrade.asm"
 INCLUDE "engine/events/mom_phone.asm"
 
@@ -506,7 +477,7 @@
 INCLUDE "engine/mystery_gift.asm"
 INCLUDE "engine/battle/used_move_text.asm"
 INCLUDE "mobile/mobile_41.asm"
-INCLUDE "gfx/overworld_font.asm"
+INCLUDE "engine/routines/loadoverworldfont.asm"
 
 
 SECTION "Mobile 42", ROMX
@@ -534,7 +505,7 @@
 
 SECTION "Battle Tower", ROMX
 
-INCLUDE "mobile/battle_tower_47.asm"
+INCLUDE "engine/events/battle_tower/trainer_text.asm"
 
 
 SECTION "bank5B", ROMX
@@ -550,7 +521,7 @@
 
 SECTION "Crystal Phone Text 2", ROMX
 
-INCLUDE "text/phone/extra2.asm"
+INCLUDE "data/phone/text/extra2.asm"
 
 
 SECTION "UpdateBattleHUDs", ROMX
@@ -570,31 +541,32 @@
 
 SECTION "Common Text 1", ROMX
 
-INCLUDE "text/stdtext.asm"
-INCLUDE "text/phone/jack_overworld.asm"
-INCLUDE "text/phone/beverly_overworld.asm"
-INCLUDE "text/phone/huey_overworld.asm"
-INCLUDE "text/phone/gaven_overworld.asm"
-INCLUDE "text/phone/beth_overworld.asm"
-INCLUDE "text/phone/jose_overworld.asm"
-INCLUDE "text/phone/reena_overworld.asm"
-INCLUDE "text/phone/joey_overworld.asm"
-INCLUDE "text/phone/wade_overworld.asm"
-INCLUDE "text/phone/ralph_overworld.asm"
-INCLUDE "text/phone/liz_overworld.asm"
+INCLUDE "data/std_text.asm"
+INCLUDE "data/phone/text/jack_overworld.asm"
+INCLUDE "data/phone/text/beverly_overworld.asm"
+INCLUDE "data/phone/text/huey_overworld.asm"
+INCLUDE "data/phone/text/gaven_overworld.asm"
+INCLUDE "data/phone/text/beth_overworld.asm"
+INCLUDE "data/phone/text/jose_overworld.asm"
+INCLUDE "data/phone/text/reena_overworld.asm"
+INCLUDE "data/phone/text/joey_overworld.asm"
+INCLUDE "data/phone/text/wade_overworld.asm"
+INCLUDE "data/phone/text/ralph_overworld.asm"
+INCLUDE "data/phone/text/liz_overworld.asm"
 
 
 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"
+INCLUDE "data/phone/text/mom.asm"
+INCLUDE "data/phone/text/bill.asm"
+INCLUDE "data/phone/text/elm.asm"
+INCLUDE "data/phone/text/trainers1.asm"
 
 
 SECTION "Miscellaneous Text", ROMX
 
 INCLUDE "data/items/names.asm"
+INCLUDE "engine/routines/printitemdescription.asm"
 INCLUDE "data/items/descriptions.asm"
 INCLUDE "data/moves/names.asm"
 INCLUDE "engine/landmarks.asm"
@@ -612,7 +584,7 @@
 
 INCLUDE "engine/routines/printhoursmins.asm"
 INCLUDE "engine/diploma.asm"
-INCLUDE "engine/pokedex_3.asm"
+INCLUDE "engine/pokedex/pokedex_3.asm"
 INCLUDE "engine/events/catch_tutorial_input.asm"
 INCLUDE "engine/routines/townmap_convertlinebreakcharacters.asm"
 
@@ -624,12 +596,12 @@
 
 SECTION "Battle Tower Text", ROMX
 
-INCLUDE "text/battle_tower.asm"
+INCLUDE "data/battle_tower/trainer_text.asm"
 
 
 SECTION "Battle Tower Trainer Data", ROMX
 
-INCLUDE "data/battle_tower_2.asm"
+INCLUDE "data/battle_tower/unknown.asm"
 
 
 SECTION "Mobile News Data", ROMX
@@ -639,13 +611,13 @@
 
 SECTION "Crystal Events", ROMX
 
-INCLUDE "engine/events/battle_tower.asm"
+INCLUDE "engine/events/battle_tower/load_trainer.asm"
 INCLUDE "engine/events/odd_egg.asm"
 
 
 SECTION "Mobile Stadium 2", ROMX
 
-if DEF(CRYSTAL11)
+if DEF(_CRYSTAL11)
 INCBIN "mobile/stadium/stadium2_2.bin"
 else
 INCBIN "mobile/stadium/stadium2_1.bin"
--- a/maps.asm
+++ /dev/null
@@ -1,498 +1,0 @@
-INCLUDE "includes.asm"
-
-
-SECTION "Map Headers", ROMX
-
-INCLUDE "maps/map_headers.asm"
-INCLUDE "maps/second_map_headers.asm"
-
-
-INCLUDE "maps/blockdata.asm"
-
-
-SECTION "Map Scripts 1", ROMX
-
-INCLUDE "maps/GoldenrodGym.asm"
-INCLUDE "maps/GoldenrodBikeShop.asm"
-INCLUDE "maps/GoldenrodHappinessRater.asm"
-INCLUDE "maps/GoldenrodBillsHouse.asm"
-INCLUDE "maps/GoldenrodMagnetTrainStation.asm"
-INCLUDE "maps/GoldenrodFlowerShop.asm"
-INCLUDE "maps/GoldenrodPPSpeechHouse.asm"
-INCLUDE "maps/GoldenrodNameRater.asm"
-INCLUDE "maps/GoldenrodDeptStore1F.asm"
-INCLUDE "maps/GoldenrodDeptStore2F.asm"
-INCLUDE "maps/GoldenrodDeptStore3F.asm"
-INCLUDE "maps/GoldenrodDeptStore4F.asm"
-INCLUDE "maps/GoldenrodDeptStore5F.asm"
-INCLUDE "maps/GoldenrodDeptStore6F.asm"
-INCLUDE "maps/GoldenrodDeptStoreElevator.asm"
-INCLUDE "maps/GoldenrodDeptStoreRoof.asm"
-INCLUDE "maps/GoldenrodGameCorner.asm"
-
-
-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/UnionCave1F.asm"
-INCLUDE "maps/UnionCaveB1F.asm"
-INCLUDE "maps/UnionCaveB2F.asm"
-INCLUDE "maps/SlowpokeWellB1F.asm"
-INCLUDE "maps/SlowpokeWellB2F.asm"
-INCLUDE "maps/OlivineLighthouse1F.asm"
-INCLUDE "maps/OlivineLighthouse2F.asm"
-INCLUDE "maps/OlivineLighthouse3F.asm"
-INCLUDE "maps/OlivineLighthouse4F.asm"
-
-
-SECTION "Map Scripts 3", ROMX
-
-INCLUDE "maps/NationalPark.asm"
-INCLUDE "maps/NationalParkBugContest.asm"
-INCLUDE "maps/RadioTower1F.asm"
-INCLUDE "maps/RadioTower2F.asm"
-INCLUDE "maps/RadioTower3F.asm"
-INCLUDE "maps/RadioTower4F.asm"
-
-
-SECTION "Map Scripts 4", ROMX
-
-INCLUDE "maps/RadioTower5F.asm"
-INCLUDE "maps/OlivineLighthouse5F.asm"
-INCLUDE "maps/OlivineLighthouse6F.asm"
-INCLUDE "maps/GoldenrodPokecenter1F.asm"
-INCLUDE "maps/GoldenrodPokeComCenter2FMobile.asm"
-INCLUDE "maps/IlexForestAzaleaGate.asm"
-INCLUDE "maps/Route34IlexForestGate.asm"
-INCLUDE "maps/DayCare.asm"
-
-
-SECTION "Map Scripts 5", ROMX
-
-INCLUDE "maps/Route11.asm"
-INCLUDE "maps/VioletMart.asm"
-INCLUDE "maps/VioletGym.asm"
-INCLUDE "maps/EarlsPokemonAcademy.asm"
-INCLUDE "maps/VioletNicknameSpeechHouse.asm"
-INCLUDE "maps/VioletPokecenter1F.asm"
-INCLUDE "maps/VioletKylesHouse.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
-
-INCLUDE "maps/Route8.asm"
-INCLUDE "maps/MahoganyMart1F.asm"
-INCLUDE "maps/TeamRocketBaseB1F.asm"
-INCLUDE "maps/TeamRocketBaseB2F.asm"
-INCLUDE "maps/TeamRocketBaseB3F.asm"
-INCLUDE "maps/IlexForest.asm"
-
-
-SECTION "Map Scripts 7", ROMX
-
-INCLUDE "maps/LakeOfRage.asm"
-INCLUDE "maps/CeladonDeptStore1F.asm"
-INCLUDE "maps/CeladonDeptStore2F.asm"
-INCLUDE "maps/CeladonDeptStore3F.asm"
-INCLUDE "maps/CeladonDeptStore4F.asm"
-INCLUDE "maps/CeladonDeptStore5F.asm"
-INCLUDE "maps/CeladonDeptStore6F.asm"
-INCLUDE "maps/CeladonDeptStoreElevator.asm"
-INCLUDE "maps/CeladonMansion1F.asm"
-INCLUDE "maps/CeladonMansion2F.asm"
-INCLUDE "maps/CeladonMansion3F.asm"
-INCLUDE "maps/CeladonMansionRoof.asm"
-INCLUDE "maps/CeladonMansionRoofHouse.asm"
-INCLUDE "maps/CeladonPokecenter1F.asm"
-INCLUDE "maps/CeladonPokecenter2FBeta.asm"
-INCLUDE "maps/CeladonGameCorner.asm"
-INCLUDE "maps/CeladonGameCornerPrizeRoom.asm"
-INCLUDE "maps/CeladonGym.asm"
-INCLUDE "maps/CeladonCafe.asm"
-INCLUDE "maps/Route16FuchsiaSpeechHouse.asm"
-INCLUDE "maps/Route16Gate.asm"
-INCLUDE "maps/Route7SaffronGate.asm"
-INCLUDE "maps/Route1718Gate.asm"
-
-
-SECTION "Map Scripts 8", ROMX
-
-INCLUDE "maps/DiglettsCave.asm"
-INCLUDE "maps/MountMoon.asm"
-INCLUDE "maps/UndergroundPath.asm"
-INCLUDE "maps/RockTunnel1F.asm"
-INCLUDE "maps/RockTunnelB1F.asm"
-INCLUDE "maps/SafariZoneFuchsiaGateBeta.asm"
-INCLUDE "maps/SafariZoneBeta.asm"
-INCLUDE "maps/VictoryRoad.asm"
-INCLUDE "maps/OlivinePort.asm"
-INCLUDE "maps/VermilionPort.asm"
-INCLUDE "maps/FastShip1F.asm"
-INCLUDE "maps/FastShipCabins_NNW_NNE_NE.asm"
-INCLUDE "maps/FastShipCabins_SW_SSW_NW.asm"
-INCLUDE "maps/FastShipCabins_SE_SSE_CaptainsCabin.asm"
-INCLUDE "maps/FastShipB1F.asm"
-INCLUDE "maps/OlivinePortPassage.asm"
-INCLUDE "maps/VermilionPortPassage.asm"
-INCLUDE "maps/MountMoonSquare.asm"
-INCLUDE "maps/MountMoonGiftShop.asm"
-INCLUDE "maps/TinTowerRoof.asm"
-
-
-SECTION "Map Scripts 9", ROMX
-
-INCLUDE "maps/Route34.asm"
-INCLUDE "maps/ElmsLab.asm"
-INCLUDE "maps/KrissHouse1F.asm"
-INCLUDE "maps/KrissHouse2F.asm"
-INCLUDE "maps/KrissNeighborsHouse.asm"
-INCLUDE "maps/ElmsHouse.asm"
-INCLUDE "maps/Route26HealSpeechHouse.asm"
-INCLUDE "maps/Route26DayofWeekSiblingsHouse.asm"
-INCLUDE "maps/Route27SandstormHouse.asm"
-INCLUDE "maps/Route2946Gate.asm"
-
-
-SECTION "Map Scripts 10", ROMX
-
-INCLUDE "maps/Route22.asm"
-INCLUDE "maps/GoldenrodUnderground.asm"
-INCLUDE "maps/GoldenrodUndergroundSwitchRoomEntrances.asm"
-INCLUDE "maps/GoldenrodDeptStoreB1F.asm"
-INCLUDE "maps/GoldenrodUndergroundWarehouse.asm"
-INCLUDE "maps/MountMortar1FOutside.asm"
-INCLUDE "maps/MountMortar1FInside.asm"
-INCLUDE "maps/MountMortar2FInside.asm"
-INCLUDE "maps/MountMortarB1F.asm"
-INCLUDE "maps/IcePath1F.asm"
-INCLUDE "maps/IcePathB1F.asm"
-INCLUDE "maps/IcePathB2FMahoganySide.asm"
-INCLUDE "maps/IcePathB2FBlackthornSide.asm"
-INCLUDE "maps/IcePathB3F.asm"
-INCLUDE "maps/LavenderPokecenter1F.asm"
-INCLUDE "maps/LavenderPokecenter2FBeta.asm"
-INCLUDE "maps/MrFujisHouse.asm"
-INCLUDE "maps/LavenderTownSpeechHouse.asm"
-INCLUDE "maps/LavenderNameRater.asm"
-INCLUDE "maps/LavenderMart.asm"
-INCLUDE "maps/SoulHouse.asm"
-INCLUDE "maps/LavRadioTower1F.asm"
-INCLUDE "maps/Route8SaffronGate.asm"
-INCLUDE "maps/Route12SuperRodHouse.asm"
-
-
-SECTION "Map Scripts 11", ROMX
-
-INCLUDE "maps/EcruteakHouse.asm"
-INCLUDE "maps/WiseTriosRoom.asm"
-INCLUDE "maps/EcruteakPokecenter1F.asm"
-INCLUDE "maps/EcruteakLugiaSpeechHouse.asm"
-INCLUDE "maps/DanceTheatre.asm"
-INCLUDE "maps/EcruteakMart.asm"
-INCLUDE "maps/EcruteakGym.asm"
-INCLUDE "maps/EcruteakItemfinderHouse.asm"
-INCLUDE "maps/ViridianGym.asm"
-INCLUDE "maps/ViridianNicknameSpeechHouse.asm"
-INCLUDE "maps/TrainerHouse1F.asm"
-INCLUDE "maps/TrainerHouseB1F.asm"
-INCLUDE "maps/ViridianMart.asm"
-INCLUDE "maps/ViridianPokecenter1F.asm"
-INCLUDE "maps/ViridianPokecenter2FBeta.asm"
-INCLUDE "maps/Route2NuggetSpeechHouse.asm"
-INCLUDE "maps/Route2Gate.asm"
-INCLUDE "maps/VictoryRoadGate.asm"
-
-
-SECTION "Map Scripts 12", ROMX
-
-INCLUDE "maps/OlivinePokecenter1F.asm"
-INCLUDE "maps/OlivineGym.asm"
-INCLUDE "maps/OlivineTimsHouse.asm"
-INCLUDE "maps/OlivineHouseBeta.asm"
-INCLUDE "maps/OlivinePunishmentSpeechHouse.asm"
-INCLUDE "maps/OlivineGoodRodHouse.asm"
-INCLUDE "maps/OlivineCafe.asm"
-INCLUDE "maps/OlivineMart.asm"
-INCLUDE "maps/Route38EcruteakGate.asm"
-INCLUDE "maps/Route39Barn.asm"
-INCLUDE "maps/Route39Farmhouse.asm"
-INCLUDE "maps/ManiasHouse.asm"
-INCLUDE "maps/CianwoodGym.asm"
-INCLUDE "maps/CianwoodPokecenter1F.asm"
-INCLUDE "maps/CianwoodPharmacy.asm"
-INCLUDE "maps/CianwoodCityPhotoStudio.asm"
-INCLUDE "maps/CianwoodLugiaSpeechHouse.asm"
-INCLUDE "maps/PokeSeersHouse.asm"
-INCLUDE "maps/BattleTower1F.asm"
-INCLUDE "maps/BattleTowerBattleRoom.asm"
-INCLUDE "maps/BattleTowerElevator.asm"
-INCLUDE "maps/BattleTowerHallway.asm"
-INCLUDE "maps/Route40BattleTowerGate.asm"
-INCLUDE "maps/BattleTowerOutside.asm"
-
-
-SECTION "Map Scripts 13", ROMX
-
-INCLUDE "maps/IndigoPlateauPokecenter1F.asm"
-INCLUDE "maps/WillsRoom.asm"
-INCLUDE "maps/KogasRoom.asm"
-INCLUDE "maps/BrunosRoom.asm"
-INCLUDE "maps/KarensRoom.asm"
-INCLUDE "maps/LancesRoom.asm"
-INCLUDE "maps/HallOfFame.asm"
-
-
-SECTION "Map Scripts 14", ROMX
-
-INCLUDE "maps/CeruleanCity.asm"
-INCLUDE "maps/SproutTower1F.asm"
-INCLUDE "maps/SproutTower2F.asm"
-INCLUDE "maps/SproutTower3F.asm"
-INCLUDE "maps/TinTower1F.asm"
-INCLUDE "maps/TinTower2F.asm"
-INCLUDE "maps/TinTower3F.asm"
-INCLUDE "maps/TinTower4F.asm"
-INCLUDE "maps/TinTower5F.asm"
-INCLUDE "maps/TinTower6F.asm"
-INCLUDE "maps/TinTower7F.asm"
-INCLUDE "maps/TinTower8F.asm"
-INCLUDE "maps/TinTower9F.asm"
-INCLUDE "maps/BurnedTower1F.asm"
-INCLUDE "maps/BurnedTowerB1F.asm"
-
-
-SECTION "Map Scripts 15", ROMX
-
-INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm"
-INCLUDE "maps/CeruleanPoliceStation.asm"
-INCLUDE "maps/CeruleanTradeSpeechHouse.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/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/MrPsychicsHouse.asm"
-INCLUDE "maps/SaffronTrainStation.asm"
-INCLUDE "maps/SilphCo1F.asm"
-INCLUDE "maps/CopycatsHouse1F.asm"
-INCLUDE "maps/CopycatsHouse2F.asm"
-INCLUDE "maps/Route5UndergroundPathEntrance.asm"
-INCLUDE "maps/Route5SaffronCityGate.asm"
-INCLUDE "maps/Route5CleanseTagSpeechHouse.asm"
-
-
-SECTION "Map Scripts 16", ROMX
-
-INCLUDE "maps/PewterCity.asm"
-INCLUDE "maps/WhirlIslandNW.asm"
-INCLUDE "maps/WhirlIslandNE.asm"
-INCLUDE "maps/WhirlIslandSW.asm"
-INCLUDE "maps/WhirlIslandCave.asm"
-INCLUDE "maps/WhirlIslandSE.asm"
-INCLUDE "maps/WhirlIslandB1F.asm"
-INCLUDE "maps/WhirlIslandB2F.asm"
-INCLUDE "maps/WhirlIslandLugiaChamber.asm"
-INCLUDE "maps/SilverCaveRoom1.asm"
-INCLUDE "maps/SilverCaveRoom2.asm"
-INCLUDE "maps/SilverCaveRoom3.asm"
-INCLUDE "maps/SilverCaveItemRooms.asm"
-INCLUDE "maps/DarkCaveVioletEntrance.asm"
-INCLUDE "maps/DarkCaveBlackthornEntrance.asm"
-INCLUDE "maps/DragonsDen1F.asm"
-INCLUDE "maps/DragonsDenB1F.asm"
-INCLUDE "maps/DragonShrine.asm"
-INCLUDE "maps/TohjoFalls.asm"
-INCLUDE "maps/AzaleaPokecenter1F.asm"
-INCLUDE "maps/CharcoalKiln.asm"
-INCLUDE "maps/AzaleaMart.asm"
-INCLUDE "maps/KurtsHouse.asm"
-INCLUDE "maps/AzaleaGym.asm"
-
-
-SECTION "Map Scripts 17", ROMX
-
-INCLUDE "maps/MahoganyTown.asm"
-INCLUDE "maps/Route32.asm"
-INCLUDE "maps/VermilionHouseFishingSpeechHouse.asm"
-INCLUDE "maps/VermilionPokecenter1F.asm"
-INCLUDE "maps/VermilionPokecenter2FBeta.asm"
-INCLUDE "maps/PokemonFanClub.asm"
-INCLUDE "maps/VermilionMagnetTrainSpeechHouse.asm"
-INCLUDE "maps/VermilionMart.asm"
-INCLUDE "maps/VermilionHouseDiglettsCaveSpeechHouse.asm"
-INCLUDE "maps/VermilionGym.asm"
-INCLUDE "maps/Route6SaffronGate.asm"
-INCLUDE "maps/Route6UndergroundPathEntrance.asm"
-INCLUDE "maps/Pokecenter2F.asm"
-INCLUDE "maps/TradeCenter.asm"
-INCLUDE "maps/Colosseum.asm"
-INCLUDE "maps/TimeCapsule.asm"
-INCLUDE "maps/MobileTradeRoomMobile.asm"
-INCLUDE "maps/MobileBattleRoom.asm"
-
-
-SECTION "Map Scripts 18", ROMX
-
-INCLUDE "maps/Route36.asm"
-INCLUDE "maps/FuchsiaCity.asm"
-INCLUDE "maps/BlackthornGym1F.asm"
-INCLUDE "maps/BlackthornGym2F.asm"
-INCLUDE "maps/BlackthornDragonSpeechHouse.asm"
-INCLUDE "maps/BlackthornEmysHouse.asm"
-INCLUDE "maps/BlackthornMart.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/SafariZoneWardensHome.asm"
-INCLUDE "maps/Route15FuchsiaGate.asm"
-INCLUDE "maps/CherrygroveMart.asm"
-INCLUDE "maps/CherrygrovePokecenter1F.asm"
-INCLUDE "maps/CherrygroveGymSpeechHouse.asm"
-INCLUDE "maps/GuideGentsHouse.asm"
-INCLUDE "maps/CherrygroveEvolutionSpeechHouse.asm"
-INCLUDE "maps/Route30BerrySpeechHouse.asm"
-INCLUDE "maps/MrPokemonsHouse.asm"
-INCLUDE "maps/Route31VioletGate.asm"
-
-
-SECTION "Map Scripts 19", ROMX
-
-INCLUDE "maps/AzaleaTown.asm"
-INCLUDE "maps/GoldenrodCity.asm"
-INCLUDE "maps/SaffronCity.asm"
-INCLUDE "maps/MahoganyRedGyaradosSpeechHouse.asm"
-INCLUDE "maps/MahoganyGym.asm"
-INCLUDE "maps/MahoganyPokecenter1F.asm"
-INCLUDE "maps/Route42EcruteakGate.asm"
-INCLUDE "maps/LakeOfRageHiddenPowerHouse.asm"
-INCLUDE "maps/LakeOfRageMagikarpHouse.asm"
-INCLUDE "maps/Route43MahoganyGate.asm"
-INCLUDE "maps/Route43Gate.asm"
-INCLUDE "maps/RedsHouse1F.asm"
-INCLUDE "maps/RedsHouse2F.asm"
-INCLUDE "maps/BluesHouse.asm"
-INCLUDE "maps/OaksLab.asm"
-
-
-SECTION "Map Scripts 20", ROMX
-
-INCLUDE "maps/CherrygroveCity.asm"
-INCLUDE "maps/Route35.asm"
-INCLUDE "maps/Route43.asm"
-INCLUDE "maps/Route44.asm"
-INCLUDE "maps/Route45.asm"
-INCLUDE "maps/Route19.asm"
-INCLUDE "maps/Route25.asm"
-
-
-SECTION "Map Scripts 21", ROMX
-
-INCLUDE "maps/CianwoodCity.asm"
-INCLUDE "maps/Route27.asm"
-INCLUDE "maps/Route29.asm"
-INCLUDE "maps/Route30.asm"
-INCLUDE "maps/Route38.asm"
-INCLUDE "maps/Route13.asm"
-INCLUDE "maps/PewterNidoranSpeechHouse.asm"
-INCLUDE "maps/PewterGym.asm"
-INCLUDE "maps/PewterMart.asm"
-INCLUDE "maps/PewterPokecenter1F.asm"
-INCLUDE "maps/PewterPokecenter2FBeta.asm"
-INCLUDE "maps/PewterSnoozeSpeechHouse.asm"
-
-
-SECTION "Map Scripts 22", ROMX
-
-INCLUDE "maps/EcruteakCity.asm"
-INCLUDE "maps/BlackthornCity.asm"
-INCLUDE "maps/Route26.asm"
-INCLUDE "maps/Route28.asm"
-INCLUDE "maps/Route31.asm"
-INCLUDE "maps/Route39.asm"
-INCLUDE "maps/Route40.asm"
-INCLUDE "maps/Route41.asm"
-INCLUDE "maps/Route12.asm"
-
-
-SECTION "Map Scripts 23", ROMX
-
-INCLUDE "maps/NewBarkTown.asm"
-INCLUDE "maps/VioletCity.asm"
-INCLUDE "maps/OlivineCity.asm"
-INCLUDE "maps/Route37.asm"
-INCLUDE "maps/Route42.asm"
-INCLUDE "maps/Route46.asm"
-INCLUDE "maps/ViridianCity.asm"
-INCLUDE "maps/CeladonCity.asm"
-INCLUDE "maps/Route15.asm"
-INCLUDE "maps/VermilionCity.asm"
-INCLUDE "maps/Route9.asm"
-INCLUDE "maps/CinnabarPokecenter1F.asm"
-INCLUDE "maps/CinnabarPokecenter2FBeta.asm"
-INCLUDE "maps/Route19FuchsiaGate.asm"
-INCLUDE "maps/SeafoamGym.asm"
-
-
-SECTION "Map Scripts 24", ROMX
-
-INCLUDE "maps/Route33.asm"
-INCLUDE "maps/Route2.asm"
-INCLUDE "maps/Route1.asm"
-INCLUDE "maps/PalletTown.asm"
-INCLUDE "maps/Route21.asm"
-INCLUDE "maps/CinnabarIsland.asm"
-INCLUDE "maps/Route20.asm"
-INCLUDE "maps/Route18.asm"
-INCLUDE "maps/Route17.asm"
-INCLUDE "maps/Route16.asm"
-INCLUDE "maps/Route7.asm"
-INCLUDE "maps/Route14.asm"
-INCLUDE "maps/LavenderTown.asm"
-INCLUDE "maps/Route6.asm"
-INCLUDE "maps/Route5.asm"
-INCLUDE "maps/Route24.asm"
-INCLUDE "maps/Route3.asm"
-INCLUDE "maps/Route4.asm"
-INCLUDE "maps/Route10South.asm"
-INCLUDE "maps/Route23.asm"
-INCLUDE "maps/SilverCavePokecenter1F.asm"
-INCLUDE "maps/Route28FamousSpeechHouse.asm"
-
-
-SECTION "Map Scripts 25", ROMX
-
-INCLUDE "maps/SilverCaveOutside.asm"
-INCLUDE "maps/Route10North.asm"
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -7,7 +7,7 @@
 	const AZALEAGYM_TWIN2
 	const AZALEAGYM_GYM_GUY
 
-AzaleaGym_MapScriptHeader:
+AzaleaGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -23,7 +23,7 @@
 	waitbutton
 	closetext
 	winlosstext BugsyText_ResearchIncomplete, 0
-	loadtrainer BUGSY, 1
+	loadtrainer BUGSY, BUGSY1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_BUGSY
@@ -146,7 +146,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext BUGSY, 1, $1
+	trainertotext BUGSY, BUGSY1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 BugsyText_INeverLose:
@@ -361,7 +361,7 @@
 	cont "#MON is bright!"
 	done
 
-AzaleaGym_MapEventHeader:
+AzaleaGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/AzaleaMart.asm
+++ b/maps/AzaleaMart.asm
@@ -3,7 +3,7 @@
 	const AZALEAMART_COOLTRAINER_M
 	const AZALEAMART_BUG_CATCHER
 
-AzaleaMart_MapScriptHeader:
+AzaleaMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	cont "times."
 	done
 
-AzaleaMart_MapEventHeader:
+AzaleaMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/AzaleaPokecenter1F.asm
+++ b/maps/AzaleaPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const AZALEAPOKECENTER1F_FISHING_GURU
 	const AZALEAPOKECENTER1F_POKEFAN_F
 
-AzaleaPokecenter1F_MapScriptHeader:
+AzaleaPokecenter1F_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -76,7 +76,7 @@
 	line "APRICORNS."
 	done
 
-AzaleaPokecenter1F_MapEventHeader:
+AzaleaPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -12,7 +12,7 @@
 	const AZALEATOWN_AZALEA_ROCKET3
 	const AZALEATOWN_KURT_OUTSIDE
 
-AzaleaTown_MapScriptHeader:
+AzaleaTown_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .DummyScene0
@@ -21,7 +21,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .Flypoint
+	callback MAPCALLBACK_NEWMAP, .Flypoint
 
 .DummyScene0:
 	end
@@ -37,7 +37,7 @@
 	return
 
 AzaleaTownRivalBattleScene1:
-	moveobject AZALEATOWN_SILVER, $b, $b
+	moveobject AZALEATOWN_SILVER, 11, 11
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
 	special Special_FadeOutMusic
@@ -102,7 +102,7 @@
 	applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleExitMovement
 	playsound SFX_EXIT_BUILDING
 	disappear AZALEATOWN_SILVER
-	setscene $0
+	setscene 0
 	waitsfx
 	playmapmusic
 	end
@@ -170,7 +170,7 @@
 	setflag ENGINE_HAVE_EXAMINED_GS_BALL
 	clearevent EVENT_ILEX_FOREST_LASS
 	setevent EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
-	setscene $0
+	setscene 0
 	closetext
 	end
 
@@ -211,7 +211,7 @@
 	fruittree FRUITTREE_AZALEA_TOWN
 
 AzaleaTownHiddenFullHeal:
-	dwb EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL, FULL_HEAL
 
 AzaleaTownRivalBattleApproachMovement1:
 	step LEFT
@@ -376,11 +376,11 @@
 AzaleaTownSlowpokeText1:
 	text "SLOWPOKE: …"
 
-	para "<......> <......> <......>"
+	para "<……> <……> <……>"
 	done
 
 AzaleaTownSlowpokeText2:
-	text "<......> <......>Yawn?"
+	text "<……> <……>Yawn?"
 	done
 
 WoosterText:
@@ -455,7 +455,7 @@
 	line "gate."
 	done
 
-AzaleaTown_MapEventHeader:
+AzaleaTown_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BattleTower1F.asm
+++ b/maps/BattleTower1F.asm
@@ -5,7 +5,7 @@
 	const BATTLETOWER1F_BUG_CATCHER
 	const BATTLETOWER1F_GRANNY
 
-BattleTower1F_MapScriptHeader:
+BattleTower1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .Scene0
@@ -16,10 +16,10 @@
 
 .Scene0:
 	writebyte BATTLETOWERACTION_CHECKSAVEFILEISYOURS
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	iffalse .SkipEverything
 	writebyte BATTLETOWERACTION_GET_CHALLENGE_STATE ; copybytetovar sBattleTowerChallengeState
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_equal $0, .SkipEverything
 	if_equal $2, .priorityjump1
 	if_equal $3, .SkipEverything
@@ -34,11 +34,11 @@
 .priorityjump1
 	priorityjump BattleTower_LeftWithoutSaving
 	writebyte BATTLETOWERACTION_CHALLENGECANCELED
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_06
-	special BattleTowerAction
+	special Special_BattleTowerAction
 .SkipEverything:
-	setscene $1
+	setscene 1
 .Scene1:
 	end
 
@@ -55,63 +55,63 @@
 
 ReceptionistScript_0x9e3e2:
 	writebyte BATTLETOWERACTION_GET_CHALLENGE_STATE ; copybytetovar sBattleTowerChallengeState
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_equal $3, Script_BeatenAllTrainers2 ; maps/BattleTowerBattleRoom.asm
 	opentext
 	writetext Text_BattleTowerWelcomesYou
 	buttonsound
 	writebyte BATTLETOWERACTION_CHECK_EXPLANATION_READ ; if new save file: bit 1, [sBattleTowerSaveFileFlags]
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_not_equal $0, Script_Menu_ChallengeExplanationCancel
 	jump Script_BattleTowerIntroductionYesNo
 
 Script_Menu_ChallengeExplanationCancel: ; 0x9e3fc
 	writetext Text_WantToGoIntoABattleRoom
-	writebyte $1
+	writebyte TRUE
 	special Special_Menu_ChallengeExplanationCancel
-	if_equal $1, Script_ChooseChallenge
-	if_equal $2, Script_BattleTowerExplanation
+	if_equal 1, Script_ChooseChallenge
+	if_equal 2, Script_BattleTowerExplanation
 	jump Script_BattleTowerHopeToServeYouAgain
 
 Script_ChooseChallenge: ; 0x9e40f
 	writebyte BATTLETOWERACTION_RESETDATA ; ResetBattleTowerTrainerSRAM
-	special BattleTowerAction
-	special SpecialCheckForBattleTowerRules
-	if_not_equal $0, Script_WaitButton
+	special Special_BattleTowerAction
+	special Special_CheckForBattleTowerRules
+	if_not_equal FALSE, Script_WaitButton
 	writetext Text_SaveBeforeEnteringBattleRoom
 	yesorno
 	iffalse Script_Menu_ChallengeExplanationCancel
-	setscene $0
+	setscene 0
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
-	setscene $1
+	setscene 1
 	writebyte BATTLETOWERACTION_SET_EXPLANATION_READ ; set 1, [sBattleTowerSaveFileFlags]
-	special BattleTowerAction
-	special BattleTowerRoomMenu
+	special Special_BattleTowerAction
+	special Special_BattleTowerRoomMenu
 	if_equal $a, Script_Menu_ChallengeExplanationCancel
 	if_not_equal $0, Script_MobileError
 	writebyte BATTLETOWERACTION_11
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writetext Text_RightThisWayToYourBattleRoom
 	waitbutton
 	closetext
 	writebyte BATTLETOWERACTION_CHOOSEREWARD
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	jump Script_WalkToBattleTowerElevator
 
 Script_ResumeBattleTowerChallenge:
 	closetext
 	writebyte BATTLETOWERACTION_LOADLEVELGROUP ; load choice of level group
-	special BattleTowerAction
+	special Special_BattleTowerAction
 Script_WalkToBattleTowerElevator:
 	musicfadeout MUSIC_NONE, 8
-	setmapscene BATTLE_TOWER_BATTLE_ROOM, $0
-	setmapscene BATTLE_TOWER_ELEVATOR, $0
-	setmapscene BATTLE_TOWER_HALLWAY, $0
+	setmapscene BATTLE_TOWER_BATTLE_ROOM, 0
+	setmapscene BATTLE_TOWER_ELEVATOR, 0
+	setmapscene BATTLE_TOWER_HALLWAY, 0
 	follow BATTLETOWER1F_RECEPTIONIST, PLAYER
 	applymovement BATTLETOWER1F_RECEPTIONIST, MovementData_BattleTower1FWalkToElevator
 	writebyte BATTLETOWERACTION_0A
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	warpsound
 	disappear BATTLETOWER1F_RECEPTIONIST
 	stopfollow
@@ -121,15 +121,15 @@
 
 Script_GivePlayerHisPrize: ; 0x9e47a
 	writebyte BATTLETOWERACTION_1C
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_GIVEREWARD
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_equal POTION, Script_YourPackIsStuffedFull
-	itemtotext $0, $1
+	itemtotext USE_SCRIPT_VAR, MEM_BUFFER_1
 	giveitem ITEM_FROM_MEM, 5
 	writetext Text_PlayerGotFive
 	writebyte BATTLETOWERACTION_1D
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	closetext
 	end
 
@@ -147,7 +147,7 @@
 	writetext Text_BattleTowerIntroduction_2
 Script_BattleTowerSkipExplanation:
 	writebyte BATTLETOWERACTION_SET_EXPLANATION_READ
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	jump Script_Menu_ChallengeExplanationCancel
 
 Script_BattleTowerHopeToServeYouAgain:
@@ -157,7 +157,7 @@
 	end
 
 UnreferencedScript_0x9e4b6:
-	special BattleTowerMobileError
+	special Special_BattleTowerMobileError
 	closetext
 	end
 
@@ -173,8 +173,8 @@
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
 	writebyte BATTLETOWERACTION_SET_EXPLANATION_READ
-	special BattleTowerAction
-	special Function1700ba
+	special Special_BattleTowerAction
+	special Special_Function1700ba
 	if_equal $a, Script_Menu_ChallengeExplanationCancel
 	if_not_equal $0, Script_MobileError
 	writetext Text_ReceivedAListOfLeadersOnTheHonorRoll
@@ -187,15 +187,15 @@
 
 UnreferencedScript_0x9e4ea:
 	writebyte BATTLETOWERACTION_LEVEL_CHECK
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_not_equal $0, Script_APkmnLevelExceeds
 	writebyte BATTLETOWERACTION_UBERS_CHECK
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_not_equal $0, Script_MayNotEnterABattleRoomUnderL70
-	special SpecialCheckForBattleTowerRules
-	if_not_equal $0, Script_WaitButton
+	special Special_CheckForBattleTowerRules
+	if_not_equal FALSE, Script_WaitButton
 	writebyte BATTLETOWERACTION_05
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_equal $0, .zero
 	writetext Text_CantBeRegistered_PreviousRecordDeleted
 	jump continue
@@ -208,14 +208,14 @@
 	writetext Text_SaveBeforeReentry
 	yesorno
 	iffalse Script_Menu_ChallengeExplanationCancel
-	setscene $0
+	setscene 0
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
-	setscene $1
+	setscene 1
 	writebyte BATTLETOWERACTION_06
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_12
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writetext Text_RightThisWayToYourBattleRoom
 	waitbutton
 	jump Script_ResumeBattleTowerChallenge
@@ -236,7 +236,7 @@
 	jump Script_Menu_ChallengeExplanationCancel
 
 Script_MobileError:
-	special BattleTowerMobileError
+	special Special_BattleTowerMobileError
 	closetext
 	end
 
@@ -793,7 +793,7 @@
 	line "any fire #MON…"
 	done
 
-BattleTower1F_MapEventHeader:
+BattleTower1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -2,7 +2,7 @@
 	const BATTLETOWERBATTLEROOM_YOUNGSTER
 	const BATTLETOWERBATTLEROOM_RECEPTIONIST
 
-BattleTowerBattleRoom_MapScriptHeader:
+BattleTowerBattleRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .EnterBattleRoom
@@ -14,7 +14,7 @@
 .EnterBattleRoom: ; 0x9f419
 	disappear BATTLETOWERBATTLEROOM_YOUNGSTER
 	priorityjump Script_BattleRoom
-	setscene $1
+	setscene 1
 .DummyScene:
 	end
 
@@ -23,21 +23,21 @@
 ; beat all 7 opponents in a row
 Script_BattleRoomLoop: ; 0x9f425
 	writebyte BATTLETOWERBATTLEROOM_YOUNGSTER
-	special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
+	special Special_LoadOpponentTrainerAndPokemonWithOTSprite
 	appear BATTLETOWERBATTLEROOM_YOUNGSTER
 	warpsound
 	waitsfx
 	applymovement BATTLETOWERBATTLEROOM_YOUNGSTER, MovementData_BattleTowerBattleRoomOpponentWalksIn
 	opentext
-	battletowertext 1
+	battletowertext BATTLETOWERTEXT_INTRO
 	buttonsound
 	closetext
-	special BattleTowerBattle ; calls predef startbattle
-	special FadeOutPalettes
+	special Special_BattleTowerBattle ; calls predef startbattle
+	special Special_FadeOutPalettes
 	reloadmap
 	if_not_equal $0, Script_FailedBattleTowerChallenge
 	copybytetovar wNrOfBeatenBattleTowerTrainers ; wcf64
-	if_equal BATTLETOWER_NROFTRAINERS, Script_BeatenAllTrainers
+	if_equal BATTLETOWER_STREAK_LENGTH, Script_BeatenAllTrainers
 	applymovement BATTLETOWERBATTLEROOM_YOUNGSTER, MovementData_BattleTowerBattleRoomOpponentWalksOut
 	warpsound
 	disappear BATTLETOWERBATTLEROOM_YOUNGSTER
@@ -48,10 +48,10 @@
 	waitbutton
 	closetext
 	playmusic MUSIC_HEAL
-	special FadeOutPalettes
-	special LoadMapPalettes
+	special Special_FadeOutPalettes
+	special Special_LoadMapPalettes
 	pause 60
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	special RestartMapMusic
 	opentext
 	writetext Text_NextUpOpponentNo
@@ -68,14 +68,14 @@
 	yesorno
 	iffalse Script_DontSaveAndEndTheSession
 	writebyte BATTLETOWERACTION_SAVELEVELGROUP ; save level group
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_SAVEOPTIONS ; choose reward
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_SAVE_AND_QUIT ; quicksave
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	playsound SFX_SAVE
 	waitsfx
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	special Reset
 Script_DontSaveAndEndTheSession: ; 0x9f4a3
 	writetext Text_CancelYourBattleRoomChallenge
@@ -82,12 +82,12 @@
 	yesorno
 	iffalse Script_ContinueAndBattleNextOpponent
 	writebyte BATTLETOWERACTION_CHALLENGECANCELED
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_06
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	closetext
-	special FadeOutPalettes
-	warpfacing UP, BATTLE_TOWER_1F, $7, $7
+	special Special_FadeOutPalettes
+	warpfacing UP, BATTLE_TOWER_1F, 7, 7
 	opentext
 	jump Script_BattleTowerHopeToServeYouAgain
 
@@ -94,9 +94,9 @@
 Script_FailedBattleTowerChallenge:
 	pause 60
 	special Special_BattleTowerFade
-	warpfacing UP, BATTLE_TOWER_1F, $7, $7
+	warpfacing UP, BATTLE_TOWER_1F, 7, 7
 	writebyte BATTLETOWERACTION_CHALLENGECANCELED
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	opentext
 	writetext Text_ThanksForVisiting
 	waitbutton
@@ -106,7 +106,7 @@
 Script_BeatenAllTrainers: ; 0x9f4d9
 	pause 60
 	special Special_BattleTowerFade
-	warpfacing UP, BATTLE_TOWER_1F, $7, $7
+	warpfacing UP, BATTLE_TOWER_1F, 7, 7
 Script_BeatenAllTrainers2:
 	opentext
 	writetext Text_CongratulationsYouveBeatenAllTheTrainers
@@ -114,7 +114,7 @@
 
 UnreferencedScript_0x9f4eb:
 	writebyte BATTLETOWERACTION_CHALLENGECANCELED
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	opentext
 	writetext Text_TooMuchTimeElapsedNoRegister
 	waitbutton
@@ -123,9 +123,9 @@
 
 UnreferencedScript_0x9f4f7:
 	writebyte BATTLETOWERACTION_CHALLENGECANCELED
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	writebyte BATTLETOWERACTION_06
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	opentext
 	writetext Text_ThanksForVisiting
 	writetext Text_WeHopeToServeYouAgain
@@ -133,14 +133,12 @@
 	closetext
 	end
 
-
 Text_ReturnedAfterSave_Mobile:
 	text "You'll be returned"
 	line "after you SAVE."
 	done
 
-
-BattleTowerBattleRoom_MapEventHeader:
+BattleTowerBattleRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BattleTowerElevator.asm
+++ b/maps/BattleTowerElevator.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const BATTLETOWERELEVATOR_RECEPTIONIST
 
-BattleTowerElevator_MapScriptHeader:
+BattleTowerElevator_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .Scene0
@@ -12,7 +12,7 @@
 
 .Scene0:
 	priorityjump .RideElevator
-	setscene $1
+	setscene 1
 
 .Scene1:
 	end
@@ -22,7 +22,7 @@
 	applymovement BATTLETOWERELEVATOR_RECEPTIONIST, MovementData_BattleTowerElevatorReceptionistWalksIn
 	applymovement PLAYER, MovementData_BattleTowerElevatorPlayerWalksIn
 	writebyte BATTLETOWERACTION_0A
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	playsound SFX_ELEVATOR
 	earthquake 60
 	waitsfx
@@ -44,7 +44,7 @@
 	turn_head DOWN
 	step_end
 
-BattleTowerElevator_MapEventHeader:
+BattleTowerElevator_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BattleTowerHallway.asm
+++ b/maps/BattleTowerHallway.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const BATTLETOWERHALLWAY_RECEPTIONIST
 
-BattleTowerHallway_MapScriptHeader:
+BattleTowerHallway_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .Scene0
@@ -12,7 +12,7 @@
 
 .Scene0:
 	priorityjump .ChooseBattleRoom
-	setscene $1
+	setscene 1
 .Scene1:
 	end
 
@@ -21,7 +21,6 @@
 	callasm .asm_load_battle_room
 	jump .WalkToChosenBattleRoom
 
-
 .asm_load_battle_room
 	ld a, [rSVBK]
 	push af
@@ -35,7 +34,6 @@
 	ld [rSVBK], a
 	ret
 
-
 ; enter different rooms for different levels to battle against
 ; at least it should look like that
 ; because all warps lead to the same room
@@ -78,7 +76,7 @@
 	warpcheck
 	end
 
-BattleTowerHallway_MapEventHeader:
+BattleTowerHallway_MapEvents:
 	; filler
 	db 0, 0
 
@@ -99,4 +97,4 @@
 
 .ObjectEvents:
 	db 1
-	object_event 11, 2, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BattleTowerHallway_MapEventHeader, -1
+	object_event 11, 2, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BattleTowerHallway_MapEvents, -1
--- a/maps/BattleTowerOutside.asm
+++ b/maps/BattleTowerOutside.asm
@@ -4,14 +4,14 @@
 	const BATTLETOWEROUTSIDE_SAILOR
 	const BATTLETOWEROUTSIDE_LASS
 
-BattleTowerOutside_MapScriptHeader:
+BattleTowerOutside_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_TILES, .Callback1
-	dbw MAPCALLBACK_OBJECTS, .Callback2
+	callback MAPCALLBACK_TILES, .Callback1
+	callback MAPCALLBACK_OBJECTS, .Callback2
 
 .Callback1:
 	return
@@ -126,7 +126,7 @@
 	text "It's open!"
 	done
 
-BattleTowerOutside_MapEventHeader:
+BattleTowerOutside_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BetaAzaleaTown.blk
+++ /dev/null
@@ -1,10 +1,0 @@
-aaaaaaaaFDaaaaaaaaaaaaaaaaaFDaaaaaaaaaaaaaaaaaFHIIaaaaaaBaaaFaaaaaaFaFaaaHJGFee>aacaaaFaaaadeefaaaaFGbaaaaaaaaFDaaaaaaaFaaDaU
-aaaaaaaHIY
-aaaaaaa~zU
-aaaaaaa5Y
-aaaaa@AAAA5z
-vvvUaaaaaaaaaaa552955zvvvvvvvvvv
-aa55551111111111111
-
-a555555555555555552
-a
\ No newline at end of file
--- a/maps/BetaBlackthornCity.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-hqqqqqqqqqqqqqqqqqqqhqorrrrrrrrrnqqqqqqqhqiaKeWaKeWahqqqqqqqhqieKaWWWaeWhqorrnqqhqiaWWKWeaWehqi !hqqhqiKWWeeaWWahqi$%hqqhqieKeaWWeeehqi$%hqqhqiaKaWeeWaahqi$%hqqlrmKeWWaWeWahqi()hqqKaWKaWaeWlrmtuhqqWWWWWWKaWWWWWWhqqhqqlrrG
\ No newline at end of file
--- a/maps/BetaBlank.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaCave.blk
+++ /dev/null
@@ -1,8 +1,0 @@
-








-
-
-
-
-
-
-	
\ No newline at end of file
--- a/maps/BetaCave2.blk
+++ /dev/null
@@ -1,5 +1,0 @@
-



-(+
-)*
-
-						
\ No newline at end of file
--- a/maps/BetaCaveTestMap.blk
+++ /dev/null
@@ -1,18 +1,0 @@
-	










		
-;<		;6<
-	
-	589:
-	
-	
-				
-	
-	5


-	
-


	
-	
-5

		
-	
-
	
-	
-		5
6		
-



																																																																		
\ No newline at end of file
--- a/maps/BetaCeladonMansion.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-?	+,/
\ No newline at end of file
--- a/maps/BetaCherrygroveCity.blk
+++ /dev/null
@@ -1,9 +1,0 @@
-
-aaaaaaaa
-
-a6
-a6YEa6Y,-6YG./a52vUa551
-
-aaaaa5555
-
-aaaa
\ No newline at end of file
--- a/maps/BetaCianwoodCity.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-aaaaXaaTyaaX5ETy5Tv455aTvvyfaXYaaXYEaaeaaa
\ No newline at end of file
--- a/maps/BetaCinnabarIslandPokemonLabHallway.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
-
\ No newline at end of file
--- a/maps/BetaCinnabarIslandPokemonLabRoom1.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
-

\ No newline at end of file
--- a/maps/BetaCinnabarIslandPokemonLabRoom2.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaCinnabarIslandPokemonLabRoom3.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaElevator.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-&$$$%$$$$$$$$$$$$$$$$$$
\ No newline at end of file
--- a/maps/BetaEmptyHouse.blk
+++ /dev/null
@@ -1,15 +1,0 @@
-												
-					
-									
-		
-										
-		
-													
-												
-			
-											
-							
-			
-		%					
-			
-











\ No newline at end of file
--- a/maps/BetaGoldenrodCity.blk
+++ /dev/null
@@ -1,10 +1,0 @@
-
-
-
-FD
-
-JHU !Y$#Y"HEzv%&IIIIIIIIJII55)*		@-.EAAAAAAAAAAFIHIJEEvvU55YY@AEYDFYHFzU5
-
-B
@55
-
-F~D
\ No newline at end of file
--- a/maps/BetaHerosHouse.blk
+++ /dev/null
@@ -1,1 +1,0 @@
- !"
\ No newline at end of file
--- a/maps/BetaHouse.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-*+,*-.12/0/
\ No newline at end of file
--- a/maps/BetaHouse2.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-?',9..',9
\ No newline at end of file
--- a/maps/BetaIlexForest.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-hqqqqqihqqqqqilrrsm
\ No newline at end of file
--- a/maps/BetaLakeOfRage.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-\^af\a\^afG^f\\f>^fTU^abfd?fdTvyY>dG\fd\X55Ya^d?f^Tvy55Y<d`f\\Ty555Y`f]\?\aX555Y\\^?Tvvy555Y^<fTvy555555Y^bd\bf^X5555555Ydf\ffTy5555555Y\b\af\fX55555Ya^d<d\daX555Yfd\\G`f^^\<G^\<bad>>e\adfa
\ No newline at end of file
--- a/maps/BetaMahoganyTown.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-`N=`RZW,-G./WEZWWG?
\ No newline at end of file
--- a/maps/BetaNewBarkTown.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-^]?II~IDGaaHTvEX5@~~{XDGGXHIIIIIIIaXvvvvvvvvv1
\ No newline at end of file
--- a/maps/BetaOlivineCity.blk
+++ /dev/null
@@ -1,4 +1,0 @@
-FDIJHIIIFDFZFDFDFFZFFZFFDFFZFAABFZFFDF|}FTvvvvvvvvvUDF|}FXYX55YDF|}FXYX55YHIIIJ|}FXYX556vvv
-
-JXYX5545552
-Xzvvvvy55255552vvvy555
555550555552995555~5555:5555
\ No newline at end of file
--- a/maps/BetaPewterMuseumOfScience1F.blk
+++ /dev/null
@@ -1,2 +1,0 @@
-	
- 
!&!&
\ No newline at end of file
--- a/maps/BetaPewterMuseumOfScience2F.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-012!
\ No newline at end of file
--- a/maps/BetaPokecenterMainHouse.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-	
'
\ No newline at end of file
--- a/maps/BetaPokecenterTradeStation.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-'
\ No newline at end of file
--- a/maps/BetaRocketHideout1.blk
+++ /dev/null
@@ -1,5 +1,0 @@
-													
-:?










<?
)		
-			
-
?

)

==







>>
"!
89
*>
*






89

:?:?
)




;?;?
)
?
<?<?
)
?

)






?



-
)
*






,-.,//////////-
\ No newline at end of file
--- a/maps/BetaRocketHideout2.blk
+++ /dev/null
@@ -1,4 +1,0 @@
-													
-













			
-
			
-

>:)






><)
>>






)89





>>







8:
::?



?<
<<?

*
?


)

 
 
*









),/////////////-
\ No newline at end of file
--- a/maps/BetaRocketHideout3.blk
+++ /dev/null
@@ -1,5 +1,0 @@
-					+=1,////?
					
-===	:?5////4???
<?105//
)==		 
>>:)5//////>89<)			
-,/////->>>>				18899///=			
-5///->:?1	=
-><?
>?
?
,/////-,////-
\ No newline at end of file
--- a/maps/BetaRoute23EarlyVersion.blk
+++ /dev/null
@@ -1,7 +1,0 @@
-
- !
-
-ohi
-omhi!nm7:~nm'nm'nm'nm'nm'nm'nm'nm
-^
-noo 


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

,+
\ No newline at end of file
--- a/maps/BetaSSAquaInsideCutOut.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaSproutTower1.blk
+++ /dev/null
@@ -1,3 +1,0 @@
-																													
-						
-				
		
																			
\ No newline at end of file
--- a/maps/BetaSproutTower2.blk
+++ /dev/null
@@ -1,9 +1,0 @@
-			
-	
-		


		
-					
-	

	
-									
-				
-							
-
\ No newline at end of file
--- a/maps/BetaSproutTower3.blk
+++ /dev/null
@@ -1,7 +1,0 @@
-			
-												
-	


	
-							
-		
-				
-
\ No newline at end of file
--- a/maps/BetaSproutTower5.blk
+++ /dev/null
@@ -1,9 +1,0 @@
-		
-		
-
		
-	
-	
-	
		
			
-		
-			
-		



								
\ No newline at end of file
--- a/maps/BetaSproutTower6.blk
+++ /dev/null
@@ -1,4 +1,0 @@
-			
-				




								


						




-		
		
-			
\ No newline at end of file
--- a/maps/BetaSproutTower7.blk
+++ /dev/null
@@ -1,8 +1,0 @@
-	
-
-					
-			
-				

					


-			


-							
-			
\ No newline at end of file
--- a/maps/BetaSproutTower8.blk
+++ /dev/null
@@ -1,5 +1,0 @@
-		
-				

						
-			
-							
-		




								
\ No newline at end of file
--- a/maps/BetaSproutTower9.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-				
									
\ No newline at end of file
--- a/maps/BetaSproutTowerCutOut1.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaSproutTowerCutOut2.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaSproutTowerCutOut3.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-
\ No newline at end of file
--- a/maps/BetaTeakCity.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-?eeeeeeeeeeeb !bb$%b>$%`&;',-&'`$%`*"+#/*+aE$%dg,-b()#/tuWZWVWVWVWZ@AABGTU !FXY$%&'XYa$%*+VVZVVVVVVZaa()EatuIIJ~{@AAAAA		HII
\ No newline at end of file
--- a/maps/BetaUnknown.blk
+++ /dev/null
@@ -1,1 +1,0 @@
-(
\ No newline at end of file
--- a/maps/BetaVioletCity.blk
+++ /dev/null
@@ -1,7 +1,0 @@
-??&;'TU&;'b?*"+XY*"+?=G^bXYTU]]]]]]]]]]]]]XYXYXYb`b !`GbD$%F`
-&;'
-bD()F`G*"+
-eeebDtuF`
-
-AEA
-bpk`bsm`=]E`G`G?e`b`?eeeeeeeeeef`b
\ No newline at end of file
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const BILLSHOUSE_GRAMPS
 
-BillsHouse_MapScriptHeader:
+BillsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -353,7 +353,7 @@
 	line "evolves."
 	done
 
-BillsHouse_MapEventHeader:
+BillsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornCity.asm
+++ b/maps/BlackthornCity.asm
@@ -9,14 +9,14 @@
 	const BLACKTHORNCITY_SANTOS
 	const BLACKTHORNCITY_COOLTRAINER_F2
 
-BlackthornCity_MapScriptHeader:
+BlackthornCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
-	dbw MAPCALLBACK_OBJECTS, .Santos
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_OBJECTS, .Santos
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_BLACKTHORN
@@ -312,7 +312,7 @@
 	cont "problem."
 	done
 
-BlackthornCity_MapEventHeader:
+BlackthornCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornDragonSpeechHouse.asm
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const BLACKTHORNDRAGONSPEECHHOUSE_GRANNY
 	const BLACKTHORNDRAGONSPEECHHOUSE_EKANS
 
-BlackthornDragonSpeechHouse_MapScriptHeader:
+BlackthornDragonSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -47,7 +47,7 @@
 	text "DRATINI: Draa!"
 	done
 
-BlackthornDragonSpeechHouse_MapEventHeader:
+BlackthornDragonSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornEmysHouse.asm
+++ b/maps/BlackthornEmysHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const BLACKTHORNEMYSHOUSE_EMY
 
-BlackthornEmysHouse_MapScriptHeader:
+BlackthornEmysHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 EmysHouseBookshelf:
 	jumpstd magazinebookshelf
 
-BlackthornEmysHouse_MapEventHeader:
+BlackthornEmysHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -5,26 +5,26 @@
 	const BLACKTHORNGYM1F_COOLTRAINER_F
 	const BLACKTHORNGYM1F_GYM_GUY
 
-BlackthornGym1F_MapScriptHeader:
+BlackthornGym1F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .Boulders
+	callback MAPCALLBACK_TILES, .Boulders
 
 .Boulders:
 	checkevent EVENT_BOULDER_IN_BLACKTHORN_GYM_1
 	iffalse .skip1
-	changeblock $8, $2, $3b
+	changeblock 8, 2, $3b ; fallen boulder 2
 .skip1
 	checkevent EVENT_BOULDER_IN_BLACKTHORN_GYM_2
 	iffalse .skip2
-	changeblock $2, $4, $3a
+	changeblock 2, 4, $3a ; fallen boulder 1
 .skip2
 	checkevent EVENT_BOULDER_IN_BLACKTHORN_GYM_3
 	iffalse .skip3
-	changeblock $8, $6, $3b
+	changeblock 8, 6, $3b ; fallen boulder 2
 .skip3
 	return
 
@@ -39,7 +39,7 @@
 	waitbutton
 	closetext
 	winlosstext ClairWinText, 0
-	loadtrainer CLAIR, 1
+	loadtrainer CLAIR, CLAIR1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_CLAIR
@@ -70,7 +70,7 @@
 	buttonsound
 	giveitem TM_DRAGONBREATH
 	iffalse .BagFull
-	itemtotext TM_DRAGONBREATH, $0
+	itemtotext TM_DRAGONBREATH, MEM_BUFFER_0
 	writetext BlackthornGymText_ReceivedTM24
 	playsound SFX_ITEM
 	waitsfx
@@ -146,7 +146,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext CLAIR, 1, $1
+	trainertotext CLAIR, CLAIR1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 ClairIntroText:
@@ -386,7 +386,7 @@
 	cont "#MON CHAMPION!"
 	done
 
-BlackthornGym1F_MapEventHeader:
+BlackthornGym1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -8,37 +8,36 @@
 	const BLACKTHORNGYM2F_BOULDER5
 	const BLACKTHORNGYM2F_BOULDER6
 
-BlackthornGym2F_MapScriptHeader:
+BlackthornGym2F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_CMDQUEUE, .Boulders
+	callback MAPCALLBACK_CMDQUEUE, .SetUpStoneTable
 
-.Boulders:
-	writecmdqueue .BoulderCmdQueue
+.SetUpStoneTable:
+	writecmdqueue .CommandQueue
 	return
 
-.BoulderCmdQueue:
-	dbw CMDQUEUE_STONETABLE, .BoulderTable ; check if any stones are sitting on a warp
-	dw 0 ; filler
+.CommandQueue:
+	cmdqueue CMDQUEUE_STONETABLE, .StoneTable ; check if any stones are sitting on a warp
 
-.BoulderTable:
-	stonetable 5, BLACKTHORNGYM2F_BOULDER1, .Disappear4
-	stonetable 3, BLACKTHORNGYM2F_BOULDER2, .Disappear5
-	stonetable 4, BLACKTHORNGYM2F_BOULDER3, .Disappear6
+.StoneTable:
+	stonetable 5, BLACKTHORNGYM2F_BOULDER1, .Boulder1
+	stonetable 3, BLACKTHORNGYM2F_BOULDER2, .Boulder2
+	stonetable 4, BLACKTHORNGYM2F_BOULDER3, .Boulder3
 	db -1 ; end
 
-.Disappear4:
+.Boulder1:
 	disappear BLACKTHORNGYM2F_BOULDER1
 	jump .Fall
 
-.Disappear5:
+.Boulder2:
 	disappear BLACKTHORNGYM2F_BOULDER2
 	jump .Fall
 
-.Disappear6:
+.Boulder3:
 	disappear BLACKTHORNGYM2F_BOULDER3
 	jump .Fall
 
@@ -56,7 +55,6 @@
 	earthquake 80
 	end
 
-
 BlackthornGymBoulder:
 	jumpstd strengthboulder
 
@@ -127,7 +125,7 @@
 	line "through!"
 	done
 
-BlackthornGym2F_MapEventHeader:
+BlackthornGym2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornMart.asm
+++ b/maps/BlackthornMart.asm
@@ -3,7 +3,7 @@
 	const BLACKTHORNMART_COOLTRAINER_M
 	const BLACKTHORNMART_BLACK_BELT
 
-BlackthornMart_MapScriptHeader:
+BlackthornMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -46,7 +46,7 @@
 	cont "REPEL sprays."
 	done
 
-BlackthornMart_MapEventHeader:
+BlackthornMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BlackthornPokecenter1F.asm
+++ b/maps/BlackthornPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const BLACKTHORNPOKECENTER1F_TWIN
 	const BLACKTHORNPOKECENTER1F_COOLTRAINER_M
 
-BlackthornPokecenter1F_MapScriptHeader:
+BlackthornPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -49,7 +49,7 @@
 	cont "forget an HM move."
 	done
 
-BlackthornPokecenter1F_MapEventHeader:
+BlackthornPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BluesHouse.asm
+++ b/maps/BluesHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const BLUESHOUSE_DAISY
 
-BluesHouse_MapScriptHeader:
+BluesHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -27,20 +27,20 @@
 	writetext DaisyWhichMonText
 	waitbutton
 	special Special_DaisyMassage
-	if_equal 0, .Refused
-	if_equal 1, .CantGroomEgg
+	if_equal $0, .Refused
+	if_equal $1, .CantGroomEgg
 	setflag ENGINE_TEA_IN_BLUES_HOUSE
 	writetext DaisyAlrightText
 	waitbutton
 	closetext
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	special RestartMapMusic
 	opentext
 	writetext GroomedMonLooksContentText
-	special PlayCurMonCry
+	special Special_PlayCurMonCry
 	buttonsound
 	writetext DaisyAllDoneText
 	waitbutton
@@ -144,7 +144,7 @@
 	cont "groom an EGG."
 	done
 
-BluesHouse_MapEventHeader:
+BluesHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BrunosRoom.asm
+++ b/maps/BrunosRoom.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const BRUNOSROOM_BRUNO
 
-BrunosRoom_MapScriptHeader:
+BrunosRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .LockDoor
@@ -9,7 +9,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .BrunosRoomDoors
+	callback MAPCALLBACK_TILES, .BrunosRoomDoors
 
 .LockDoor:
 	priorityjump .BrunosDoorLocksBehindYou
@@ -20,24 +20,24 @@
 
 .BrunosRoomDoors:
 	checkevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
-	iffalse .KeepDoorClosed
-	changeblock $4, $e, $2a
-.KeepDoorClosed:
+	iffalse .KeepEntranceOpen
+	changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
 	checkevent EVENT_BRUNOS_ROOM_EXIT_OPEN
-	iffalse .OpenDoor
-	changeblock $4, $2, $16
-.OpenDoor:
+	iffalse .KeepExitClosed
+	changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
 	return
 
 .BrunosDoorLocksBehindYou:
-	applymovement PLAYER, MovementData_0x1809f9
+	applymovement PLAYER, BrunosRoom_EnterMovement
 	refreshscreen $86
 	playsound SFX_STRENGTH
 	earthquake 80
-	changeblock $4, $e, $2a
+	changeblock 4, 14, $2a ; wall
 	reloadmappart
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
 	waitsfx
 	end
@@ -46,12 +46,12 @@
 	faceplayer
 	opentext
 	checkevent EVENT_BEAT_ELITE_4_BRUNO
-	iftrue UnknownScript_0x1809f3
+	iftrue BrunoScript_AfterBattle
 	writetext BrunoScript_BrunoBeforeText
 	waitbutton
 	closetext
 	winlosstext BrunoScript_BrunoBeatenText, 0
-	loadtrainer BRUNO, 1
+	loadtrainer BRUNO, BRUNO1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_BRUNO
@@ -60,7 +60,7 @@
 	waitbutton
 	closetext
 	playsound SFX_ENTER_DOOR
-	changeblock $4, $2, $16
+	changeblock 4, 2, $16 ; open door
 	reloadmappart
 	closetext
 	setevent EVENT_BRUNOS_ROOM_EXIT_OPEN
@@ -67,13 +67,13 @@
 	waitsfx
 	end
 
-UnknownScript_0x1809f3:
+BrunoScript_AfterBattle:
 	writetext BrunoScript_BrunoDefeatText
 	waitbutton
 	closetext
 	end
 
-MovementData_0x1809f9:
+BrunosRoom_EnterMovement:
 	step UP
 	step UP
 	step UP
@@ -124,7 +124,7 @@
 	line "challenge!"
 	done
 
-BrunosRoom_MapEventHeader:
+BrunosRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -5,7 +5,7 @@
 	const BURNEDTOWER1F_MORTY
 	const BURNEDTOWER1F_POKE_BALL
 
-BurnedTower1F_MapScriptHeader:
+BurnedTower1F_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .EusineScene
@@ -14,7 +14,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .HoleAndLadder
+	callback MAPCALLBACK_TILES, .HoleAndLadder
 
 .EusineScene:
 	priorityjump .MeetEusine
@@ -28,13 +28,13 @@
 
 .HoleAndLadder:
 	checkevent EVENT_HOLE_IN_BURNED_TOWER
-	iftrue .Next
-	changeblock $a, $8, $32 ; hole
-.Next:
+	iftrue .KeepHoleOpen
+	changeblock 10, 8, $32 ; floor
+.KeepHoleOpen:
 	checkevent EVENT_RELEASED_THE_BEASTS
-	iftrue .Done
-	changeblock $6, $e, $9 ; ladder
-.Done:
+	iftrue .HideBasement
+	changeblock 6, 14, $09 ; ladder
+.HideBasement:
 	return
 
 .MeetEusine:
@@ -45,8 +45,8 @@
 	writetext BurnedTower1FEusineIntroText
 	waitbutton
 	closetext
-	moveobject BURNEDTOWER1F_EUSINE, $9, $e
-	setscene $1
+	moveobject BURNEDTOWER1F_EUSINE, 9, 14
+	setscene 1
 	end
 
 BurnedTowerRivalBattleScript:
@@ -98,7 +98,7 @@
 	writetext BurnedTowerSilver_AfterText1
 	waitbutton
 	closetext
-	setscene $2
+	setscene 2
 	setevent EVENT_RIVAL_BURNED_TOWER
 	special Special_FadeOutMusic
 	pause 15
@@ -106,7 +106,7 @@
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playsound SFX_ENTER_DOOR
 	waitsfx
-	changeblock $a, $8, $25
+	changeblock 10, 8, $25 ; hole
 	reloadmappart
 	pause 15
 	applymovement PLAYER, BurnedTower1FMovement_PlayerStartsToFall
@@ -131,13 +131,11 @@
 	jumpstd smashrock
 
 BurnedTower1FHiddenEther:
-	dwb EVENT_BURNED_TOWER_1F_HIDDEN_ETHER, ETHER
+	hiddenitem EVENT_BURNED_TOWER_1F_HIDDEN_ETHER, ETHER
 
-
 BurnedTower1FHiddenUltraBall:
-	dwb EVENT_BURNED_TOWER_1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
+	hiddenitem EVENT_BURNED_TOWER_1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
 
-
 BurnedTower1FHPUp:
 	itemball HP_UP
 
@@ -162,7 +160,7 @@
 	step_end
 
 BurnedTowerSilver_BeforeText:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "…Oh, it's you."
 
@@ -279,7 +277,7 @@
 	line "TOWER with him."
 	done
 
-BurnedTower1F_MapEventHeader:
+BurnedTower1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -9,7 +9,7 @@
 	const BURNEDTOWERB1F_POKE_BALL
 	const BURNEDTOWERB1F_EUSINE
 
-BurnedTowerB1F_MapScriptHeader:
+BurnedTowerB1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -17,7 +17,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .LadderCallback
+	callback MAPCALLBACK_TILES, .LadderCallback
 
 .DummyScene0:
 	end
@@ -27,9 +27,9 @@
 
 .LadderCallback:
 	checkevent EVENT_RELEASED_THE_BEASTS
-	iftrue .NoChange
-	changeblock $6, $e, $2
-.NoChange:
+	iftrue .HideLadder
+	changeblock 6, 14, $02 ; floor
+.HideLadder:
 	return
 
 ReleaseTheBeasts:
@@ -81,11 +81,11 @@
 	disappear BURNEDTOWERB1F_SUICUNE1
 	waitsfx
 	special RestartMapMusic
-	setscene $1
+	setscene 1
 	setevent EVENT_RELEASED_THE_BEASTS
-	special InitRoamMons
-	setmapscene ECRUTEAK_GYM, $1
-	setmapscene CIANWOOD_CITY, $1
+	special Special_InitRoamMons
+	setmapscene ECRUTEAK_GYM, 1
+	setmapscene CIANWOOD_CITY, 1
 	clearevent EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
 	setevent EVENT_ECRUTEAK_GYM_GRAMPS
 	clearevent EVENT_ECRUTEAK_CITY_GRAMPS
@@ -92,11 +92,11 @@
 	setevent EVENT_BURNED_TOWER_MORTY
 	setevent EVENT_BURNED_TOWER_1F_EUSINE
 	appear BURNEDTOWERB1F_EUSINE
-	refreshscreen $0
-	changeblock $6, $e, $1b
+	refreshscreen
+	changeblock 6, 14, $1b ; ladder
 	reloadmappart
 	closetext
-	setscene $1
+	setscene 1
 	end
 
 BurnedTowerB1FEusine:
@@ -106,7 +106,7 @@
 	waitbutton
 	closetext
 	checkcode VAR_FACING
-	if_equal $1, .Movement
+	if_equal UP, .Movement
 	applymovement BURNEDTOWERB1F_EUSINE, BurnedTowerB1FEusineMovement1
 	jump UnknownScript_0x18622a
 
@@ -235,7 +235,7 @@
 	para "Farewell!"
 	done
 
-BurnedTowerB1F_MapEventHeader:
+BurnedTowerB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonCafe.asm
+++ b/maps/CeladonCafe.asm
@@ -5,7 +5,7 @@
 	const CELADONCAFE_FISHER3
 	const CELADONCAFE_TEACHER
 
-CeladonCafe_MapScriptHeader:
+CeladonCafe_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -96,7 +96,7 @@
 	giveitem LEFTOVERS
 	iffalse .PackFull
 	opentext
-	itemtotext LEFTOVERS, $0
+	itemtotext LEFTOVERS, MEM_BUFFER_0
 	writetext FoundLeftoversText
 	playsound SFX_ITEM
 	waitsfx
@@ -107,7 +107,7 @@
 
 .PackFull:
 	opentext
-	itemtotext LEFTOVERS, $0
+	itemtotext LEFTOVERS, MEM_BUFFER_0
 	writetext FoundLeftoversText
 	buttonsound
 	writetext NoRoomForLeftoversText
@@ -207,7 +207,7 @@
 	line "hold another item…"
 	done
 
-CeladonCafe_MapEventHeader:
+CeladonCafe_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonCity.asm
+++ b/maps/CeladonCity.asm
@@ -9,13 +9,13 @@
 	const CELADONCITY_TEACHER2
 	const CELADONCITY_LASS
 
-CeladonCity_MapScriptHeader:
+CeladonCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_CELADON
@@ -75,7 +75,7 @@
 	jumpstd pokecentersign
 
 CeladonCityHiddenPpUp:
-	dwb EVENT_CELADON_CITY_HIDDEN_PP_UP, PP_UP
+	hiddenitem EVENT_CELADON_CITY_HIDDEN_PP_UP, PP_UP
 
 CeladonCityFisherText:
 	text "This POLIWRATH is"
@@ -234,7 +234,7 @@
 	cont "STORE!"
 	done
 
-CeladonCity_MapEventHeader:
+CeladonCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStore1F.asm
+++ b/maps/CeladonDeptStore1F.asm
@@ -3,7 +3,7 @@
 	const CELADONDEPTSTORE1F_GENTLEMAN
 	const CELADONDEPTSTORE1F_TEACHER
 
-CeladonDeptStore1F_MapScriptHeader:
+CeladonDeptStore1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -73,7 +73,7 @@
 	line "    SQUARE"
 	done
 
-CeladonDeptStore1F_MapEventHeader:
+CeladonDeptStore1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStore2F.asm
+++ b/maps/CeladonDeptStore2F.asm
@@ -4,7 +4,7 @@
 	const CELADONDEPTSTORE2F_POKEFAN_M
 	const CELADONDEPTSTORE2F_YOUNGSTER
 
-CeladonDeptStore2F_MapScriptHeader:
+CeladonDeptStore2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -68,7 +68,7 @@
 	line "    MARKET"
 	done
 
-CeladonDeptStore2F_MapEventHeader:
+CeladonDeptStore2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStore3F.asm
+++ b/maps/CeladonDeptStore3F.asm
@@ -5,7 +5,7 @@
 	const CELADONDEPTSTORE3F_GAMEBOY_KID2
 	const CELADONDEPTSTORE3F_SUPER_NERD
 
-CeladonDeptStore3F_MapScriptHeader:
+CeladonDeptStore3F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -94,7 +94,7 @@
 	line "Stronger!"
 	done
 
-CeladonDeptStore3F_MapEventHeader:
+CeladonDeptStore3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStore4F.asm
+++ b/maps/CeladonDeptStore4F.asm
@@ -3,7 +3,7 @@
 	const CELADONDEPTSTORE4F_SUPER_NERD
 	const CELADONDEPTSTORE4F_YOUNGSTER
 
-CeladonDeptStore4F_MapScriptHeader:
+CeladonDeptStore4F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -50,7 +50,7 @@
 	para "4F: WISEMAN GIFTS"
 	done
 
-CeladonDeptStore4F_MapEventHeader:
+CeladonDeptStore4F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStore5F.asm
+++ b/maps/CeladonDeptStore5F.asm
@@ -5,7 +5,7 @@
 	const CELADONDEPTSTORE5F_SAILOR
 	const CELADONDEPTSTORE5F_TEACHER
 
-CeladonDeptStore5F_MapScriptHeader:
+CeladonDeptStore5F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -71,7 +71,7 @@
 	text "5F: DRUG STORE"
 	done
 
-CeladonDeptStore5F_MapEventHeader:
+CeladonDeptStore5F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -2,16 +2,16 @@
 	const CELADONDEPTSTORE6F_SUPER_NERD
 	const CELADONDEPTSTORE6F_YOUNGSTER
 
-CeladonDeptStore6F_MapScriptHeader:
+CeladonDeptStore6F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .Callback
+	callback MAPCALLBACK_TILES, .HideRooftopStairs
 
-.Callback:
-	changeblock $c, $0, $3
+.HideRooftopStairs:
+	changeblock 12, 0, $03 ; wall
 	return
 
 CeladonDeptStore6FSuperNerdScript:
@@ -24,41 +24,41 @@
 	opentext
 	writetext CeladonVendingText
 .Start:
-	special PlaceMoneyTopRight
+	special Special_PlaceMoneyTopRight
 	loadmenudata .MenuData
 	verticalmenu
 	closewindow
-	if_equal $1, .FreshWater
-	if_equal $2, .SodaPop
-	if_equal $3, .Lemonade
+	if_equal 1, .FreshWater
+	if_equal 2, .SodaPop
+	if_equal 3, .Lemonade
 	closetext
 	end
 
 .FreshWater:
-	checkmoney $0, 200
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 200
+	if_equal HAVE_LESS, .NotEnoughMoney
 	giveitem FRESH_WATER
 	iffalse .NotEnoughSpace
-	takemoney $0, 200
-	itemtotext FRESH_WATER, $0
+	takemoney YOUR_MONEY, 200
+	itemtotext FRESH_WATER, MEM_BUFFER_0
 	jump .VendItem
 
 .SodaPop:
-	checkmoney $0, 300
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 300
+	if_equal HAVE_LESS, .NotEnoughMoney
 	giveitem SODA_POP
 	iffalse .NotEnoughSpace
-	takemoney $0, 300
-	itemtotext SODA_POP, $0
+	takemoney YOUR_MONEY, 300
+	itemtotext SODA_POP, MEM_BUFFER_0
 	jump .VendItem
 
 .Lemonade:
-	checkmoney $0, 350
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 350
+	if_equal HAVE_LESS, .NotEnoughMoney
 	giveitem LEMONADE
 	iffalse .NotEnoughSpace
-	takemoney $0, 350
-	itemtotext LEMONADE, $0
+	takemoney YOUR_MONEY, 350
+	itemtotext LEMONADE, MEM_BUFFER_0
 	jump .VendItem
 
 .VendItem:
@@ -80,14 +80,13 @@
 	jump .Start
 
 .MenuData:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "FRESH WATER  ¥200@"
 	db "SODA POP     ¥300@"
@@ -94,7 +93,6 @@
 	db "LEMONADE     ¥350@"
 	db "CANCEL@"
 
-
 CeladonDeptStore6FDirectory:
 	jumptext CeladonDeptStore6FDirectoryText
 
@@ -112,7 +110,7 @@
 
 	para "@"
 	text_from_ram StringBuffer3
-	text ""
+	text_start
 	line "popped out."
 	done
 
@@ -147,7 +145,7 @@
 	line "VENDING MACHINES"
 	done
 
-CeladonDeptStore6F_MapEventHeader:
+CeladonDeptStore6F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonDeptStoreElevator.asm
+++ b/maps/CeladonDeptStoreElevator.asm
@@ -1,4 +1,4 @@
-CeladonDeptStoreElevator_MapScriptHeader:
+CeladonDeptStoreElevator_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -25,9 +25,9 @@
 	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
+	db -1 ; end
 
-CeladonDeptStoreElevator_MapEventHeader:
+CeladonDeptStoreElevator_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonGameCorner.asm
+++ b/maps/CeladonGameCorner.asm
@@ -9,7 +9,7 @@
 	const CELADONGAMECORNER_GYM_GUY
 	const CELADONGAMECORNER_GRAMPS
 
-CeladonGameCorner_MapScriptHeader:
+CeladonGameCorner_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -59,8 +59,8 @@
 	checkitem COIN_CASE
 	iffalse .NoCoinCase
 	checkcoins MAX_COINS - 1
-	if_equal $0, .FullCoinCase
-	stringtotext .coinname, $1
+	if_equal HAVE_MORE, .FullCoinCase
+	stringtotext .coinname, MEM_BUFFER_1
 	scall .GiveCoins
 	givecoins 18
 	setevent EVENT_GOT_COINS_FROM_GAMBLER_AT_CELADON
@@ -111,23 +111,23 @@
 	jumptext CeladonGameCornerPoster2Text
 
 CeladonGameCornerLuckySlotMachineScript:
-	random $6
-	if_equal $0, CeladonGameCornerSlotMachineScript
-	refreshscreen $0
-	writebyte $0
+	random 6
+	if_equal 0, CeladonGameCornerSlotMachineScript
+	refreshscreen
+	writebyte FALSE
 	special Special_SlotMachine
 	closetext
 	end
 
 CeladonGameCornerSlotMachineScript:
-	refreshscreen $0
-	writebyte $1
+	refreshscreen
+	writebyte TRUE
 	special Special_SlotMachine
 	closetext
 	end
 
 CeladonGameCornerCardFlipScript:
-	refreshscreen $0
+	refreshscreen
 	special Special_CardFlip
 	closetext
 	end
@@ -144,7 +144,7 @@
 	end
 
 MovementData_0x721cd:
-; Unreferenced.
+; unused
 	step RIGHT
 	turn_head LEFT
 	step_end
@@ -281,7 +281,7 @@
 	para "Huh? It's empty!"
 	done
 
-CeladonGameCorner_MapEventHeader:
+CeladonGameCorner_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -2,7 +2,7 @@
 	const CELADONGAMECORNERPRIZEROOM_GENTLEMAN
 	const CELADONGAMECORNERPRIZEROOM_PHARMACIST
 
-CeladonGameCornerPrizeRoom_MapScriptHeader:
+CeladonGameCornerPrizeRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,7 +15,7 @@
 CeladonGameCornerPrizeRoomPharmacistScript:
 	jumptextfaceplayer CeladonGameCornerPrizeRoomPharmacistText
 
-GoldenrodGameCornerTMVendor:
+CeladonGameCornerPrizeRoomTMVendor:
 	faceplayer
 	opentext
 	writetext CeladonPrizeRoom_PrizeVendorIntroText
@@ -28,15 +28,15 @@
 	loadmenudata CeladonPrizeRoom_TMMenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .doubleteam
-	if_equal $2, .psychic
-	if_equal $3, .hyperbeam
+	if_equal 1, .doubleteam
+	if_equal 2, .psychic
+	if_equal 3, .hyperbeam
 	jump CeladonPrizeRoom_cancel
 
 .doubleteam
 	checkcoins 1500
-	if_equal $2, CeladonPrizeRoom_notenoughcoins
-	itemtotext TM_DOUBLE_TEAM, $0
+	if_equal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+	itemtotext TM_DOUBLE_TEAM, MEM_BUFFER_0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
 	giveitem TM_DOUBLE_TEAM
@@ -46,8 +46,8 @@
 
 .psychic
 	checkcoins 3500
-	if_equal $2, CeladonPrizeRoom_notenoughcoins
-	itemtotext TM_PSYCHIC_M, $0
+	if_equal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+	itemtotext TM_PSYCHIC_M, MEM_BUFFER_0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
 	giveitem TM_PSYCHIC_M
@@ -57,8 +57,8 @@
 
 .hyperbeam
 	checkcoins 7500
-	if_equal $2, CeladonPrizeRoom_notenoughcoins
-	itemtotext TM_HYPER_BEAM, $0
+	if_equal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+	itemtotext TM_HYPER_BEAM, MEM_BUFFER_0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
 	giveitem TM_HYPER_BEAM
@@ -102,16 +102,14 @@
 	closetext
 	end
 
-
 CeladonPrizeRoom_TMMenuDataHeader:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 15, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "TM32    1500@"
 	db "TM29    3500@"
@@ -118,8 +116,7 @@
 	db "TM15    7500@"
 	db "CANCEL@"
 
-
-GoldenrodGameCornerPokemonVendor:
+CeladonGameCornerPrizeRoomPokemonVendor:
 	faceplayer
 	opentext
 	writetext CeladonPrizeRoom_PrizeVendorIntroText
@@ -132,17 +129,17 @@
 	loadmenudata .MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .pikachu
-	if_equal $2, .porygon
-	if_equal $3, .larvitar
+	if_equal 1, .pikachu
+	if_equal 2, .porygon
+	if_equal 3, .larvitar
 	jump CeladonPrizeRoom_cancel
 
 .pikachu
 	checkcoins 2222
-	if_equal $2, CeladonPrizeRoom_notenoughcoins
+	if_equal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, CeladonPrizeRoom_notenoughroom
-	pokenamemem PIKACHU, $0
+	if_equal PARTY_LENGTH, CeladonPrizeRoom_notenoughroom
+	pokenamemem PIKACHU, MEM_BUFFER_0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
 	waitsfx
@@ -157,10 +154,10 @@
 
 .porygon
 	checkcoins 5555
-	if_equal $2, CeladonPrizeRoom_notenoughcoins
+	if_equal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, CeladonPrizeRoom_notenoughroom
-	pokenamemem PORYGON, $0
+	if_equal PARTY_LENGTH, CeladonPrizeRoom_notenoughroom
+	pokenamemem PORYGON, MEM_BUFFER_0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
 	waitsfx
@@ -175,10 +172,10 @@
 
 .larvitar
 	checkcoins 8888
-	if_equal $2, CeladonPrizeRoom_notenoughcoins
+	if_equal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, CeladonPrizeRoom_notenoughroom
-	pokenamemem LARVITAR, $0
+	if_equal PARTY_LENGTH, CeladonPrizeRoom_notenoughroom
+	pokenamemem LARVITAR, MEM_BUFFER_0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
 	waitsfx
@@ -191,16 +188,14 @@
 	takecoins 8888
 	jump .loop
 
-
 .MenuDataHeader:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 17 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 17, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "PIKACHU    2222@"
 	db "PORYGON    5555@"
@@ -207,7 +202,6 @@
 	db "LARVITAR   8888@"
 	db "CANCEL@"
 
-
 CeladonGameCornerPrizeRoomGentlemanText:
 	text "I wanted PORYGON,"
 	line "but I was short by"
@@ -269,7 +263,7 @@
 	line "a COIN CASE."
 	done
 
-CeladonGameCornerPrizeRoom_MapEventHeader:
+CeladonGameCornerPrizeRoom_MapEvents:
 	; filler
 	db 0, 0
 
@@ -283,8 +277,8 @@
 
 .BGEvents:
 	db 2
-	bg_event 2, 1, BGEVENT_READ, GoldenrodGameCornerTMVendor
-	bg_event 4, 1, BGEVENT_READ, GoldenrodGameCornerPokemonVendor
+	bg_event 2, 1, BGEVENT_READ, CeladonGameCornerPrizeRoomTMVendor
+	bg_event 4, 1, BGEVENT_READ, CeladonGameCornerPrizeRoomPokemonVendor
 
 .ObjectEvents:
 	db 2
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -6,7 +6,7 @@
 	const CELADONGYM_TWIN1
 	const CELADONGYM_TWIN2
 
-CeladonGym_MapScriptHeader:
+CeladonGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -22,7 +22,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x72c3e, 0
-	loadtrainer ERIKA, 1
+	loadtrainer ERIKA, ERIKA1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_ERIKA
@@ -109,7 +109,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext ERIKA, 1, $1
+	trainertotext ERIKA, ERIKA1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 UnknownText_0x72b28:
@@ -267,7 +267,7 @@
 	line "much stronger!"
 	done
 
-CeladonGym_MapEventHeader:
+CeladonGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonMansion1F.asm
+++ b/maps/CeladonMansion1F.asm
@@ -4,7 +4,7 @@
 	const CELADONMANSION1F_CLEFAIRY
 	const CELADONMANSION1F_GROWLITHE2
 
-CeladonMansion1F_MapScriptHeader:
+CeladonMansion1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -74,7 +74,7 @@
 	line "MANAGER'S SUITE"
 	done
 
-CeladonMansion1F_MapEventHeader:
+CeladonMansion1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonMansion2F.asm
+++ b/maps/CeladonMansion2F.asm
@@ -1,4 +1,4 @@
-CeladonMansion2F_MapScriptHeader:
+CeladonMansion2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -49,7 +49,7 @@
 	line "MEETING ROOM"
 	done
 
-CeladonMansion2F_MapEventHeader:
+CeladonMansion2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonMansion3F.asm
+++ b/maps/CeladonMansion3F.asm
@@ -4,7 +4,7 @@
 	const CELADONMANSION3F_SUPER_NERD
 	const CELADONMANSION3F_FISHER
 
-CeladonMansion3F_MapScriptHeader:
+CeladonMansion3F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -16,7 +16,7 @@
 	opentext
 	writetext UnknownText_0x716ce
 	checkcode VAR_DEXCAUGHT
-	if_greater_than 248, UnknownScript_0x7167e
+	if_greater_than NUM_POKEMON - 2 - 1, UnknownScript_0x7167e ; ignore Mew and Celebi
 	waitbutton
 	closetext
 	end
@@ -28,7 +28,7 @@
 	waitsfx
 	writetext UnknownText_0x71760
 	buttonsound
-	special Diploma
+	special Special_Diploma
 	writetext UnknownText_0x71763
 	waitbutton
 	closetext
@@ -49,7 +49,7 @@
 	writetext UnknownText_0x717d8
 	yesorno
 	iffalse UnknownScript_0x716b0
-	special PrintDiploma
+	special Special_PrintDiploma
 	closetext
 	end
 
@@ -189,7 +189,7 @@
 	cont "a # DOLL."
 	done
 
-CeladonMansion3F_MapEventHeader:
+CeladonMansion3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonMansionRoof.asm
+++ b/maps/CeladonMansionRoof.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const CELADONMANSIONROOF_FISHER
 
-CeladonMansionRoof_MapScriptHeader:
+CeladonMansionRoof_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -33,7 +33,7 @@
 	line "moustache!"
 	done
 
-CeladonMansionRoof_MapEventHeader:
+CeladonMansionRoof_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonMansionRoofHouse.asm
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const CELADONMANSIONROOFHOUSE_PHARMACIST
 
-CeladonMansionRoofHouse_MapScriptHeader:
+CeladonMansionRoofHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -116,7 +116,7 @@
 	line "victim's HP."
 	done
 
-CeladonMansionRoofHouse_MapEventHeader:
+CeladonMansionRoofHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonPokecenter1F.asm
+++ b/maps/CeladonPokecenter1F.asm
@@ -5,7 +5,7 @@
 	const CELADONPOKECENTER1F_COOLTRAINER_F
 	const CELADONPOKECENTER1F_EUSINE
 
-CeladonPokecenter1F_MapScriptHeader:
+CeladonPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -30,9 +30,9 @@
 	writetext CeladonEusineText1
 	buttonsound
 	writebyte SUICUNE
-	special SpecialMonCheck
+	special Special_MonCheck
 	iffalse .NoSuicune
-	special SpecialBeastsCheck
+	special Special_BeastsCheck
 	iftrue .HoOh
 	writetext NoBeastsText
 	waitbutton
@@ -45,7 +45,7 @@
 	waitbutton
 	closetext
 	checkcode VAR_FACING
-	if_equal $1, .Location1
+	if_equal UP, .Location1
 	applymovement CELADONPOKECENTER1F_EUSINE, .Movement1
 	jump .Continue
 
@@ -133,7 +133,7 @@
 	para "#MON RAIKOU and"
 	line "ENTEI?"
 
-	para $56, $56, $56
+	para "<……><……><……>"
 
 	para "Okay…"
 
@@ -145,7 +145,7 @@
 	line "you, <PLAYER>!"
 	done
 
-CeladonPokecenter1F_MapEventHeader:
+CeladonPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeladonPokecenter2FBeta.asm
+++ b/maps/CeladonPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-CeladonPokecenter2FBeta_MapScriptHeader:
+CeladonPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-CeladonPokecenter2FBeta_MapEventHeader:
+CeladonPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanCity.asm
+++ b/maps/CeruleanCity.asm
@@ -6,13 +6,13 @@
 	const CERULEANCITY_FISHER
 	const CERULEANCITY_YOUNGSTER
 
-CeruleanCity_MapScriptHeader:
+CeruleanCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_CERULEAN
@@ -147,7 +147,7 @@
 	jumpstd martsign
 
 CeruleanCityHiddenBerserkGene:
-	dwb EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY, BERSERK_GENE
+	hiddenitem EVENT_FOUND_BERSERK_GENE_IN_CERULEAN_CITY, BERSERK_GENE
 
 CeruleanCityCooltrainerMText1:
 	text "KANTO's POWER"
@@ -275,7 +275,7 @@
 	text "It's locked…"
 	done
 
-CeruleanCity_MapEventHeader:
+CeruleanCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -6,7 +6,7 @@
 	const CERULEANGYM_SWIMMER_GUY
 	const CERULEANGYM_GYM_GUY
 
-CeruleanGym_MapScriptHeader:
+CeruleanGym_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -48,9 +48,9 @@
 	setevent EVENT_MET_ROCKET_GRUNT_AT_CERULEAN_GYM
 	clearevent EVENT_ROUTE_24_ROCKET
 	clearevent EVENT_ROUTE_25_MISTY_BOYFRIEND
-	setscene $0
-	setmapscene ROUTE_25, $1
-	setmapscene POWER_PLANT, $0
+	setscene 0
+	setmapscene ROUTE_25, 1
+	setmapscene POWER_PLANT, 0
 	waitsfx
 	special RestartMapMusic
 	pause 15
@@ -67,7 +67,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x18870c, 0
-	loadtrainer MISTY, 1
+	loadtrainer MISTY, MISTY1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_MISTY
@@ -135,9 +135,8 @@
 	end
 
 CeruleanGymHiddenMachinePart:
-	dwb EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM, MACHINE_PART
+	hiddenitem EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM, MACHINE_PART
 
-
 CeruleanGymStatue1:
 	checkevent EVENT_TRAINERS_IN_CERULEAN_GYM
 	iffalse CeruleanGymStatue
@@ -161,7 +160,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext MISTY, 1, $1
+	trainertotext MISTY, MISTY1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 MovementData_0x1884e3:
@@ -178,9 +177,9 @@
 
 MovementData_0x1884eb:
 	fix_facing
-	db $39 ; movement
+	set_sliding
 	jump_step UP
-	db $38 ; movement
+	remove_sliding
 	remove_fixed_facing
 	step_sleep 8
 	step_sleep 8
@@ -363,7 +362,7 @@
 	cont "great battle!"
 	done
 
-CeruleanGym_MapEventHeader:
+CeruleanGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanGymBadgeSpeechHouse.asm
+++ b/maps/CeruleanGymBadgeSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const CERULEANGYMBADGESPEECHHOUSE_POKEFAN_M
 
-CeruleanGymBadgeSpeechHouse_MapScriptHeader:
+CeruleanGymBadgeSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -16,7 +16,7 @@
 	line "KANTO GYM BADGES?"
 	done
 
-CeruleanGymBadgeSpeechHouse_MapEventHeader:
+CeruleanGymBadgeSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanMart.asm
+++ b/maps/CeruleanMart.asm
@@ -3,7 +3,7 @@
 	const CERULEANMART_COOLTRAINER_M
 	const CERULEANMART_COOLTRAINER_F
 
-CeruleanMart_MapScriptHeader:
+CeruleanMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	cont "CERULEAN's CAPE."
 	done
 
-CeruleanMart_MapEventHeader:
+CeruleanMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanPokecenter1F.asm
+++ b/maps/CeruleanPokecenter1F.asm
@@ -3,7 +3,7 @@
 	const CERULEANPOKECENTER1F_SUPER_NERD
 	const CERULEANPOKECENTER1F_GYM_GUY
 
-CeruleanPokecenter1F_MapScriptHeader:
+CeruleanPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -14,7 +14,7 @@
 	jumpstd pokecenternurse
 
 SuperNerdScript_0x188212:
-	special Mobile_DummyReturnFalse
+	special Special_Mobile_DummyReturnFalse
 	iftrue .mobile
 	jumptextfaceplayer UnknownText_0x188221
 
@@ -62,7 +62,7 @@
 	line "JOHTO accessible."
 	done
 
-CeruleanPokecenter1F_MapEventHeader:
+CeruleanPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanPokecenter2FBeta.asm
+++ b/maps/CeruleanPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-CeruleanPokecenter2FBeta_MapScriptHeader:
+CeruleanPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-CeruleanPokecenter2FBeta_MapEventHeader:
+CeruleanPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanPoliceStation.asm
+++ b/maps/CeruleanPoliceStation.asm
@@ -3,7 +3,7 @@
 	const CERULEANPOLICESTATION_POKEFAN_F
 	const CERULEANPOLICESTATION_DIGLETT
 
-CeruleanPoliceStation_MapScriptHeader:
+CeruleanPoliceStation_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -43,7 +43,7 @@
 	text "DIGLETT: Dug dug."
 	done
 
-CeruleanPoliceStation_MapEventHeader:
+CeruleanPoliceStation_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CeruleanTradeSpeechHouse.asm
+++ b/maps/CeruleanTradeSpeechHouse.asm
@@ -4,7 +4,7 @@
 	const CERULEANTRADESPEECHHOUSE_RHYDON
 	const CERULEANTRADESPEECHHOUSE_ZUBAT
 
-CeruleanTradeSpeechHouse_MapScriptHeader:
+CeruleanTradeSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -53,7 +53,7 @@
 	text "ZUBAT: Zuba zubaa."
 	done
 
-CeruleanTradeSpeechHouse_MapEventHeader:
+CeruleanTradeSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CharcoalKiln.asm
+++ b/maps/CharcoalKiln.asm
@@ -3,7 +3,7 @@
 	const CHARCOALKILN_YOUNGSTER
 	const CHARCOALKILN_MOLTRES
 
-CharcoalKiln_MapScriptHeader:
+CharcoalKiln_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -148,7 +148,7 @@
 	text "FARFETCH'D: Kwaa!"
 	done
 
-CharcoalKiln_MapEventHeader:
+CharcoalKiln_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -5,7 +5,7 @@
 	const CHERRYGROVECITY_YOUNGSTER
 	const CHERRYGROVECITY_FISHER
 
-CherrygroveCity_MapScriptHeader:
+CherrygroveCity_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -13,7 +13,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .DummyScene0:
 	end
@@ -69,7 +69,7 @@
 	opentext
 	writetext GuideGentGiftText
 	buttonsound
-	stringtotext .mapcardname, $1
+	stringtotext .mapcardname, MEM_BUFFER_1
 	scall .JumpstdReceiveItem
 	setflag ENGINE_MAP_CARD
 	writetext GotMapCardText
@@ -101,7 +101,7 @@
 	end
 
 CherrygroveSilverSceneSouth:
-	moveobject CHERRYGROVECITY_SILVER, $27, $7
+	moveobject CHERRYGROVECITY_SILVER, 39, 7
 CherrygroveSilverSceneNorth:
 	spriteface PLAYER, RIGHT
 	showemote EMOTE_SHOCK, PLAYER, 15
@@ -171,7 +171,7 @@
 	spriteface PLAYER, LEFT
 	applymovement CHERRYGROVECITY_SILVER, CherrygroveCity_RivalExitsStageLeft
 	disappear CHERRYGROVECITY_SILVER
-	setscene $0
+	setscene 0
 	special HealParty
 	playmapmusic
 	end
@@ -433,7 +433,7 @@
 	done
 
 UnknownText_0x19c4e2:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "You got a #MON"
 	line "at the LAB."
@@ -441,7 +441,7 @@
 	para "What a waste."
 	line "A wimp like you."
 
-	para "<......> <......> <......>"
+	para "<……> <……> <……>"
 
 	para "Don't you get what"
 	line "I'm saying?"
@@ -459,7 +459,7 @@
 	done
 
 CherrygroveRivalText_YouLost:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "My name's ???."
 
@@ -475,7 +475,7 @@
 	done
 
 CherrygroveRivalText_YouWon:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "My name's ???."
 
@@ -546,7 +546,7 @@
 	text "GUIDE GENT'S HOUSE"
 	done
 
-CherrygroveCity_MapEventHeader:
+CherrygroveCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CherrygroveEvolutionSpeechHouse.asm
+++ b/maps/CherrygroveEvolutionSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const CHERRYGROVEEVOLUTIONSPEECHHOUSE_LASS
 	const CHERRYGROVEEVOLUTIONSPEECHHOUSE_YOUNGSTER
 
-CherrygroveEvolutionSpeechHouse_MapScriptHeader:
+CherrygroveEvolutionSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -41,7 +41,7 @@
 	line "if one did that!"
 	done
 
-CherrygroveEvolutionSpeechHouse_MapEventHeader:
+CherrygroveEvolutionSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CherrygroveGymSpeechHouse.asm
+++ b/maps/CherrygroveGymSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const CHERRYGROVEGYMSPEECHHOUSE_POKEFAN_M
 	const CHERRYGROVEGYMSPEECHHOUSE_BUG_CATCHER
 
-CherrygroveGymSpeechHouse_MapScriptHeader:
+CherrygroveGymSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -44,7 +44,7 @@
 	line "them tougher!"
 	done
 
-CherrygroveGymSpeechHouse_MapEventHeader:
+CherrygroveGymSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CherrygroveMart.asm
+++ b/maps/CherrygroveMart.asm
@@ -3,7 +3,7 @@
 	const CHERRYGROVEMART_COOLTRAINER_M
 	const CHERRYGROVEMART_YOUNGSTER
 
-CherrygroveMart_MapScriptHeader:
+CherrygroveMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -71,7 +71,7 @@
 	line "ANTIDOTE with you."
 	done
 
-CherrygroveMart_MapEventHeader:
+CherrygroveMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CherrygrovePokecenter1F.asm
+++ b/maps/CherrygrovePokecenter1F.asm
@@ -4,7 +4,7 @@
 	const CHERRYGROVEPOKECENTER1F_GENTLEMAN
 	const CHERRYGROVEPOKECENTER1F_TEACHER
 
-CherrygrovePokecenter1F_MapScriptHeader:
+CherrygrovePokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -68,7 +68,7 @@
 	line "there already!"
 	done
 
-CherrygrovePokecenter1F_MapEventHeader:
+CherrygrovePokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -12,7 +12,7 @@
 	const CIANWOODCITY_EUSINE
 	const CIANWOODCITY_SUICUNE
 
-CianwoodCity_MapScriptHeader:
+CianwoodCity_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -20,7 +20,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPointAndSuicune
+	callback MAPCALLBACK_NEWMAP, .FlyPointAndSuicune
 
 .DummyScene0:
 	end
@@ -49,9 +49,9 @@
 	applymovement CIANWOODCITY_SUICUNE, MovementData_0x1a00e0
 	disappear CIANWOODCITY_SUICUNE
 	pause 10
-	setscene $0
+	setscene 0
 	clearevent EVENT_SAW_SUICUNE_ON_ROUTE_42
-	setmapscene ROUTE_42, $1
+	setmapscene ROUTE_42, 1
 	checkevent EVENT_FOUGHT_EUSINE
 	iftrue .Done
 	setevent EVENT_FOUGHT_EUSINE
@@ -145,26 +145,26 @@
 	jumpstd smashrock
 
 CianwoodCityHiddenRevive:
-	dwb EVENT_CIANWOOD_CITY_HIDDEN_REVIVE, REVIVE
+	hiddenitem EVENT_CIANWOOD_CITY_HIDDEN_REVIVE, REVIVE
 
 CianwoodCityHiddenMaxEther:
-	dwb EVENT_CIANWOOD_CITY_HIDDEN_MAX_ETHER, MAX_ETHER
+	hiddenitem EVENT_CIANWOOD_CITY_HIDDEN_MAX_ETHER, MAX_ETHER
 
 MovementData_0x1a00da:
-	db $39 ; movement
+	set_sliding
 	fast_jump_step DOWN
 	fast_jump_step DOWN
 	fast_jump_step RIGHT
-	db $38 ; movement
+	remove_sliding
 	step_end
 
 MovementData_0x1a00e0:
-	db $39 ; movement
+	set_sliding
 	fast_jump_step RIGHT
 	fast_jump_step UP
 	fast_jump_step RIGHT
 	fast_jump_step RIGHT
-	db $38 ; movement
+	remove_sliding
 	step_end
 
 MovementData_0x1a00e7:
@@ -380,7 +380,7 @@
 	line "AHEAD"
 	done
 
-CianwoodCity_MapEventHeader:
+CianwoodCity_MapEvents:
 	; filler
 	db 0, 0
 
@@ -390,7 +390,7 @@
 	warp_def 8, 43, 1, CIANWOOD_GYM
 	warp_def 23, 43, 1, CIANWOOD_POKECENTER_1F
 	warp_def 15, 47, 1, CIANWOOD_PHARMACY
-	warp_def 9, 31, 1, CIANWOOD_CITY_PHOTO_STUDIO
+	warp_def 9, 31, 1, CIANWOOD_PHOTO_STUDIO
 	warp_def 15, 37, 1, CIANWOOD_LUGIA_SPEECH_HOUSE
 	warp_def 5, 17, 1, POKE_SEERS_HOUSE
 
--- a/maps/CianwoodCityPhotoStudio.asm
+++ /dev/null
@@ -1,68 +1,0 @@
-const_value set 2
-	const CIANWOODCITYPHOTOSTUDIO_FISHING_GURU
-
-CianwoodCityPhotoStudio_MapScriptHeader:
-.SceneScripts:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-FishingGuruScript_0x9e0e0:
-	faceplayer
-	opentext
-	writetext UnknownText_0x9e0f9
-	yesorno
-	iffalse UnknownScript_0x9e0f3
-	writetext UnknownText_0x9e142
-	waitbutton
-	special PhotoStudio
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x9e0f3:
-	writetext UnknownText_0x9e156
-	waitbutton
-	closetext
-	end
-
-UnknownText_0x9e0f9:
-	text "You have magnifi-"
-	line "cent #MON with"
-	cont "you."
-
-	para "How about a photo"
-	line "for a souvenir?"
-	done
-
-UnknownText_0x9e142:
-	text "OK! Big smile now!"
-	done
-
-UnknownText_0x9e156:
-	text "Oh, that's too"
-	line "bad. I thought it"
-
-	para "would be a great"
-	line "memento…"
-	done
-
-CianwoodCityPhotoStudio_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 2
-	warp_def 2, 7, 5, CIANWOOD_CITY
-	warp_def 3, 7, 5, CIANWOOD_CITY
-
-.CoordEvents:
-	db 0
-
-.BGEvents:
-	db 0
-
-.ObjectEvents:
-	db 1
-	object_event 2, 3, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, FishingGuruScript_0x9e0e0, -1
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -9,7 +9,7 @@
 	const CIANWOODGYM_BOULDER3
 	const CIANWOODGYM_BOULDER4
 
-CianwoodGym_MapScriptHeader:
+CianwoodGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -40,7 +40,7 @@
 	waitbutton
 	closetext
 	winlosstext ChuckLossText, 0
-	loadtrainer CHUCK, 1
+	loadtrainer CHUCK, CHUCK1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_CHUCK
@@ -138,7 +138,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext CHUCK, 1, $1
+	trainertotext CHUCK, CHUCK1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 CianwoodGymMovement_ChuckChucksBoulder:
@@ -305,7 +305,7 @@
 	cont "shattered…"
 	done
 
-CianwoodGym_MapEventHeader:
+CianwoodGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CianwoodLugiaSpeechHouse.asm
+++ b/maps/CianwoodLugiaSpeechHouse.asm
@@ -3,7 +3,7 @@
 	const CIANWOODLUGIASPEECHHOUSE_LASS
 	const CIANWOODLUGIASPEECHHOUSE_TWIN
 
-CianwoodLugiaSpeechHouse_MapScriptHeader:
+CianwoodLugiaSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -61,7 +61,7 @@
 	cont "get past them."
 	done
 
-CianwoodLugiaSpeechHouse_MapEventHeader:
+CianwoodLugiaSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CianwoodPharmacy.asm
+++ b/maps/CianwoodPharmacy.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const CIANWOODPHARMACY_PHARMACIST
 
-CianwoodPharmacy_MapScriptHeader:
+CianwoodPharmacy_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -72,7 +72,7 @@
 	line "an emergency."
 	done
 
-CianwoodPharmacy_MapEventHeader:
+CianwoodPharmacy_MapEvents:
 	; filler
 	db 0, 0
 
--- /dev/null
+++ b/maps/CianwoodPhotoStudio.asm
@@ -1,0 +1,68 @@
+const_value set 2
+	const CIANWOODPHOTOSTUDIO_FISHING_GURU
+
+CianwoodPhotoStudio_MapScripts:
+.SceneScripts:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+FishingGuruScript_0x9e0e0:
+	faceplayer
+	opentext
+	writetext UnknownText_0x9e0f9
+	yesorno
+	iffalse UnknownScript_0x9e0f3
+	writetext UnknownText_0x9e142
+	waitbutton
+	special Special_PhotoStudio
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x9e0f3:
+	writetext UnknownText_0x9e156
+	waitbutton
+	closetext
+	end
+
+UnknownText_0x9e0f9:
+	text "You have magnifi-"
+	line "cent #MON with"
+	cont "you."
+
+	para "How about a photo"
+	line "for a souvenir?"
+	done
+
+UnknownText_0x9e142:
+	text "OK! Big smile now!"
+	done
+
+UnknownText_0x9e156:
+	text "Oh, that's too"
+	line "bad. I thought it"
+
+	para "would be a great"
+	line "memento…"
+	done
+
+CianwoodPhotoStudio_MapEvents:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 2
+	warp_def 2, 7, 5, CIANWOOD_CITY
+	warp_def 3, 7, 5, CIANWOOD_CITY
+
+.CoordEvents:
+	db 0
+
+.BGEvents:
+	db 0
+
+.ObjectEvents:
+	db 1
+	object_event 2, 3, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, FishingGuruScript_0x9e0e0, -1
--- a/maps/CianwoodPokecenter1F.asm
+++ b/maps/CianwoodPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const CIANWOODPOKECENTER1F_GYM_GUY
 	const CIANWOODPOKECENTER1F_SUPER_NERD
 
-CianwoodPokecenter1F_MapScriptHeader:
+CianwoodPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -131,7 +131,7 @@
 	line "off my #MON!"
 	done
 
-CianwoodPokecenter1F_MapEventHeader:
+CianwoodPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CinnabarIsland.asm
+++ b/maps/CinnabarIsland.asm
@@ -1,13 +1,13 @@
 const_value set 2
 	const CINNABARISLAND_BLUE
 
-CinnabarIsland_MapScriptHeader:
+CinnabarIsland_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_CINNABAR
@@ -35,7 +35,7 @@
 	jumpstd pokecentersign
 
 CinnabarIslandHiddenRareCandy:
-	dwb EVENT_CINNABAR_ISLAND_HIDDEN_RARE_CANDY, RARE_CANDY
+	hiddenitem EVENT_CINNABAR_ISLAND_HIDDEN_RARE_CANDY, RARE_CANDY
 
 CinnabarIslandBlueTeleport:
 	teleport_from
@@ -127,7 +127,7 @@
 	line "Burning Desire"
 	done
 
-CinnabarIsland_MapEventHeader:
+CinnabarIsland_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CinnabarPokecenter1F.asm
+++ b/maps/CinnabarPokecenter1F.asm
@@ -3,7 +3,7 @@
 	const CINNABARPOKECENTER1F_COOLTRAINER_F
 	const CINNABARPOKECENTER1F_FISHER
 
-CinnabarPokecenter1F_MapScriptHeader:
+CinnabarPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -34,7 +34,7 @@
 	cont "erupted."
 	done
 
-CinnabarPokecenter1F_MapEventHeader:
+CinnabarPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CinnabarPokecenter2FBeta.asm
+++ b/maps/CinnabarPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-CinnabarPokecenter2FBeta_MapScriptHeader:
+CinnabarPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-CinnabarPokecenter2FBeta_MapEventHeader:
+CinnabarPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -2,7 +2,7 @@
 	const COLOSSEUM_CHRIS1
 	const COLOSSEUM_CHRIS2
 
-Colosseum_MapScriptHeader:
+Colosseum_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .InitializeColosseum
@@ -11,8 +11,8 @@
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_OBJECTS, .SetWhichChris
-	dbw MAPCALLBACK_NEWMAP, .PreparePokecenter2F
+	callback MAPCALLBACK_OBJECTS, .SetWhichChris
+	callback MAPCALLBACK_NEWMAP, .PreparePokecenter2F
 
 .InitializeColosseum:
 	priorityjump .InitializeAndPreparePokecenter2F
@@ -37,12 +37,12 @@
 	return
 
 .PreparePokecenter2F:
-	setmapscene POKECENTER_2F, $2
+	setmapscene POKECENTER_2F, 2
 	return
 
 .InitializeAndPreparePokecenter2F:
-	setscene $1
-	setmapscene POKECENTER_2F, $2
+	setscene 1
+	setmapscene POKECENTER_2F, 2
 	end
 
 MapColosseumSignpost1Script:
@@ -62,7 +62,7 @@
 	line "ready."
 	done
 
-Colosseum_MapEventHeader:
+Colosseum_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CopycatsHouse1F.asm
+++ b/maps/CopycatsHouse1F.asm
@@ -3,7 +3,7 @@
 	const COPYCATSHOUSE1F_POKEFAN_F
 	const COPYCATSHOUSE1F_CLEFAIRY
 
-CopycatsHouse1F_MapScriptHeader:
+CopycatsHouse1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -72,7 +72,7 @@
 	text "BLISSEY: Bliisii!"
 	done
 
-CopycatsHouse1F_MapEventHeader:
+CopycatsHouse1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -6,13 +6,13 @@
 	const COPYCATSHOUSE2F_BIRDDOLL
 	const COPYCATSHOUSE2F_COPYCAT2 ; if player is female
 
-CopycatsHouse2F_MapScriptHeader:
+CopycatsHouse2F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Callback
+	callback MAPCALLBACK_OBJECTS, .Callback
 
 .Callback:
 	checkflag ENGINE_PLAYER_IS_FEMALE
@@ -46,7 +46,7 @@
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
 .Default_Merge_1:
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	checkevent EVENT_RETURNED_MACHINE_PART
 	iftrue .TalkAboutLostItem
 	opentext
@@ -70,7 +70,7 @@
 .Default_Merge_3a:
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	opentext
 	writetext CopycatText_QuickMimicking
 	waitbutton
@@ -99,7 +99,7 @@
 .Default_Merge_3b:
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	opentext
 	writetext CopycatText_Worried
 	waitbutton
@@ -142,7 +142,7 @@
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
 .GotPass_Merge_1:
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
 	iftrue .GotPass_Female_2
@@ -164,7 +164,7 @@
 .GotPass_Merge_3:
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	opentext
 	writetext CopycatText_ItsAScream
 	waitbutton
@@ -360,7 +360,7 @@
 	para "It's only a doll…"
 	done
 
-CopycatsHouse2F_MapEventHeader:
+CopycatsHouse2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -9,7 +9,7 @@
 	const DANCETHEATRE_COOLTRAINER_M
 	const DANCETHEATRE_GRANNY
 
-DanceTheatre_MapScriptHeader:
+DanceTheatre_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -337,7 +337,7 @@
 	cont "with flowers."
 	done
 
-DanceTheatre_MapEventHeader:
+DanceTheatre_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DarkCaveBlackthornEntrance.asm
+++ b/maps/DarkCaveBlackthornEntrance.asm
@@ -3,7 +3,7 @@
 	const DARKCAVEBLACKTHORNENTRANCE_POKE_BALL1
 	const DARKCAVEBLACKTHORNENTRANCE_POKE_BALL2
 
-DarkCaveBlackthornEntrance_MapScriptHeader:
+DarkCaveBlackthornEntrance_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -61,7 +61,7 @@
 	cont "type moves."
 	done
 
-DarkCaveBlackthornEntrance_MapEventHeader:
+DarkCaveBlackthornEntrance_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DarkCaveVioletEntrance.asm
+++ b/maps/DarkCaveVioletEntrance.asm
@@ -8,7 +8,7 @@
 	const DARKCAVEVIOLETENTRANCE_POKE_BALL3
 	const DARKCAVEVIOLETENTRANCE_POKE_BALL4
 
-DarkCaveVioletEntrance_MapScriptHeader:
+DarkCaveVioletEntrance_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -31,10 +31,9 @@
 	jumpstd smashrock
 
 DarkCaveVioletEntranceHiddenElixer:
-	dwb EVENT_DARK_CAVE_VIOLET_ENTRANCE_HIDDEN_ELIXER, ELIXER
+	hiddenitem EVENT_DARK_CAVE_VIOLET_ENTRANCE_HIDDEN_ELIXER, ELIXER
 
-
-DarkCaveVioletEntrance_MapEventHeader:
+DarkCaveVioletEntrance_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DayCare.asm
+++ b/maps/DayCare.asm
@@ -2,13 +2,13 @@
 	const DAYCARE_GRAMPS
 	const DAYCARE_GRANNY
 
-DayCare_MapScriptHeader:
+DayCare_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .EggCheckCallback
+	callback MAPCALLBACK_OBJECTS, .EggCheckCallback
 
 .EggCheckCallback:
 	checkflag ENGINE_DAY_CARE_MAN_HAS_EGG
@@ -155,7 +155,7 @@
 	line "this."
 	done
 
-DayCare_MapEventHeader:
+DayCare_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DiglettsCave.asm
+++ b/maps/DiglettsCave.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const DIGLETTSCAVE_POKEFAN_M
 
-DiglettsCave_MapScriptHeader:
+DiglettsCave_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -12,9 +12,8 @@
 	jumptextfaceplayer DiglettsCavePokefanMText
 
 DiglettsCaveHiddenMaxRevive:
-	dwb EVENT_DIGLETTS_CAVE_HIDDEN_MAX_REVIVE, MAX_REVIVE
+	hiddenitem EVENT_DIGLETTS_CAVE_HIDDEN_MAX_REVIVE, MAX_REVIVE
 
-
 DiglettsCavePokefanMText:
 	text "A bunch of DIGLETT"
 	line "popped out of the"
@@ -23,7 +22,7 @@
 	line "shocking."
 	done
 
-DiglettsCave_MapEventHeader:
+DiglettsCave_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DragonShrine.asm
+++ b/maps/DragonShrine.asm
@@ -4,7 +4,7 @@
 	const DRAGONSHRINE_ELDER3
 	const DRAGONSHRINE_CLAIR
 
-DragonShrine_MapScriptHeader:
+DragonShrine_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DragonShrineTest
@@ -21,67 +21,67 @@
 	end
 
 .DragonShrineTestScript:
-	applymovement PLAYER, MovementData_0x18d2bf
-	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2c7
+	applymovement PLAYER, DragonShrinePlayerWalkInMovement
+	applymovement DRAGONSHRINE_ELDER1, DragonShrineElderStepDownMovement
 	opentext
-	writetext UnknownText_0x18d2ea
+	writetext DragonShrineElderGreetingText
 	buttonsound
 .Question1:
 	setevent EVENT_RECEIVED_BALLS_FROM_KURT
-	writetext UnknownText_0x18d3bc
+	writetext DragonShrineQuestion1Text
 	buttonsound
-	loadmenudata MenuDataHeader_0x18d215
+	loadmenudata DragonShrineQuestion1_MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .RightAnswer
-	if_equal $2, .WrongAnswer
-	if_equal $3, .RightAnswer
+	if_equal 1, .RightAnswer
+	if_equal 2, .WrongAnswer
+	if_equal 3, .RightAnswer
 	end
 
 .Question2:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_2
-	writetext UnknownText_0x18d3d3
+	writetext DragonShrineQuestion2Text
 	buttonsound
-	loadmenudata MenuDataHeader_0x18d234
+	loadmenudata DragonShrineQuestion2_MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .RightAnswer
-	if_equal $2, .RightAnswer
-	if_equal $3, .WrongAnswer
+	if_equal 1, .RightAnswer
+	if_equal 2, .RightAnswer
+	if_equal 3, .WrongAnswer
 .Question3:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_3
-	writetext UnknownText_0x18d3f3
+	writetext DragonShrineQuestion3Text
 	buttonsound
-	loadmenudata MenuDataHeader_0x18d258
+	loadmenudata DragonShrineQuestion3_MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .WrongAnswer
-	if_equal $2, .RightAnswer
-	if_equal $3, .RightAnswer
+	if_equal 1, .WrongAnswer
+	if_equal 2, .RightAnswer
+	if_equal 3, .RightAnswer
 .Question4:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_4
-	writetext UnknownText_0x18d420
+	writetext DragonShrineQuestion4Text
 	buttonsound
-	loadmenudata MenuDataHeader_0x18d283
+	loadmenudata DragonShrineQuestion4_MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .RightAnswer
-	if_equal $2, .WrongAnswer
-	if_equal $3, .RightAnswer
+	if_equal 1, .RightAnswer
+	if_equal 2, .WrongAnswer
+	if_equal 3, .RightAnswer
 .Question5:
 	setevent EVENT_DRAGON_SHRINE_QUESTION_5
-	writetext UnknownText_0x18d44a
+	writetext DragonShrineQuestion5Text
 	buttonsound
-	loadmenudata MenuDataHeader_0x18d2a5
+	loadmenudata DragonShrineQuestion5_MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .WrongAnswer
-	if_equal $2, .RightAnswer
-	if_equal $3, .WrongAnswer
+	if_equal 1, .WrongAnswer
+	if_equal 2, .RightAnswer
+	if_equal 3, .WrongAnswer
 .RightAnswer:
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_5
 	iftrue .PassedTheTest
-	writetext UnknownText_0x18d82d
+	writetext DragonShrineRightAnswerText
 	buttonsound
 	checkevent EVENT_DRAGON_SHRINE_QUESTION_4
 	iftrue .Question5
@@ -95,12 +95,12 @@
 	closetext
 	spriteface DRAGONSHRINE_ELDER1, LEFT
 	opentext
-	writetext UnknownText_0x18d7f6
+	writetext DragonShrineWrongAnswerText1
 	waitbutton
 	closetext
 	spriteface DRAGONSHRINE_ELDER1, DOWN
 	opentext
-	writetext UnknownText_0x18d816
+	writetext DragonShrineWrongAnswerText2
 	waitbutton
 	closetext
 	setevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
@@ -116,7 +116,7 @@
 	checkevent EVENT_RECEIVED_BALLS_FROM_KURT
 	iftrue .Question1
 .PassedTheTest:
-	writetext UnknownText_0x18d47c
+	writetext DragonShrinePassedTestText
 	waitbutton
 	closetext
 	playsound SFX_ENTER_DOOR
@@ -126,39 +126,39 @@
 	waitsfx
 	spriteface PLAYER, DOWN
 	pause 30
-	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2d4
+	applymovement DRAGONSHRINE_CLAIR, DragonShrineClairWalkInMovement
 	spriteface DRAGONSHRINE_CLAIR, RIGHT
 	spriteface PLAYER, LEFT
 	spriteface DRAGONSHRINE_ELDER1, LEFT
 	opentext
-	writetext UnknownText_0x18d916
+	writetext DragonShrineClairYouPassedText
 	waitbutton
 	closetext
 	special Special_FadeOutMusic
-	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2da
+	applymovement DRAGONSHRINE_CLAIR, DragonShrineClairBigStepLeftMovement
 	opentext
-	writetext UnknownText_0x18d974
+	writetext DragonShrineClairThatCantBeText
 	waitbutton
 	closetext
-	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2dd
+	applymovement DRAGONSHRINE_CLAIR, DragonShrineClairSlowStepLeftMovement
 	opentext
-	writetext UnknownText_0x18d983
+	writetext DragonShrineClairYoureLyingText
 	waitbutton
 	closetext
-	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2c9
+	applymovement DRAGONSHRINE_ELDER1, DragonShrineElderWalkToClairMovement
 	spriteface DRAGONSHRINE_CLAIR, UP
 	opentext
-	writetext UnknownText_0x18d520
+	writetext DragonShrineMustIInformLanceText
 	waitbutton
 	closetext
 	showemote EMOTE_SHOCK, DRAGONSHRINE_CLAIR, 15
 	opentext
-	writetext UnknownText_0x18d9ae
+	writetext DragonShrineIUnderstandText
 	waitbutton
 	closetext
 	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2e0
 	opentext
-	writetext UnknownText_0x18d9bf
+	writetext DragonShrineHereRisingBadgeText
 	waitbutton
 	setflag ENGINE_RISINGBADGE
 	playsound SFX_GET_BADGE
@@ -165,11 +165,11 @@
 	waitsfx
 	special RestartMapMusic
 	specialphonecall SPECIALCALL_MASTERBALL
-	setscene $1
-	setmapscene DRAGONS_DEN_B1F, $1
-	writetext UnknownText_0x18d9f2
+	setscene 1
+	setmapscene DRAGONS_DEN_B1F, 1
+	writetext DragonShrinePlayerReceivedRisingBadgeText
 	buttonsound
-	writetext UnknownText_0x18da0b
+	writetext DragonShrineRisingBadgeExplanationText
 	waitbutton
 	closetext
 	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2ce
@@ -177,11 +177,11 @@
 	applymovement DRAGONSHRINE_ELDER1, MovementData_0x18d2d1
 	spriteface PLAYER, UP
 	opentext
-	writetext UnknownText_0x18d5a3
+	writetext DragonShrineElderScoldsClairText
 	waitbutton
 	closetext
 	opentext
-	writetext UnknownText_0x18dab4
+	writetext DragonShrineSpeechlessText
 	waitbutton
 	closetext
 	applymovement DRAGONSHRINE_CLAIR, MovementData_0x18d2e3
@@ -191,7 +191,7 @@
 	setevent EVENT_GAVE_KURT_APRICORNS
 	end
 
-ElderScript_0x18d1a5:
+DragonShrineElder1Script:
 	faceplayer
 	opentext
 	checkevent EVENT_GAVE_KURT_APRICORNS
@@ -202,146 +202,135 @@
 	iffalse .GiveDratini
 	checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
 	iftrue .BeatRivalInMtMoon
-	writetext UnknownText_0x18d724
+	writetext DragonShrineClairsGrandfatherText
 	waitbutton
 	closetext
 	end
 
 .GiveDratini:
-	writetext UnknownText_0x18d604
+	writetext DragonShrineTakeThisDratiniText
 	waitbutton
 	checkcode VAR_PARTYCOUNT
 	if_equal 6, .PartyFull
-	writetext UnknownText_0x18d697
+	writetext DragonShrinePlayerReceivedDratiniText
 	playsound SFX_CAUGHT_MON
 	waitsfx
 	givepoke DRATINI, 15
 	checkevent EVENT_ANSWERED_DRAGON_MASTER_QUIZ_WRONG
-	special SpecialDratini
+	special Special_Dratini
 	setevent EVENT_GOT_DRATINI
 	setevent EVENT_JUST_RECEIVED_DRATINI
-	writetext UnknownText_0x18d6ca
+	writetext DragonShrineSymbolicDragonText
 	waitbutton
 	closetext
 	end
 
 .PartyFull:
-	writetext UnknownText_0x18d6ac
+	writetext DragonShrinePartyFullText
 	waitbutton
 	closetext
 	end
 
 .BeatRivalInMtMoon:
-	writetext UnknownText_0x18d782
+	writetext DragonShrineSilverIsInTrainingText
 	waitbutton
 	closetext
 	end
 
 .DontGiveDratiniYet:
-	writetext UnknownText_0x18d5e5
+	writetext DragonShrineComeAgainText
 	waitbutton
 	closetext
 	end
 
 .ReceivedDratini:
-	writetext UnknownText_0x18d6ca
+	writetext DragonShrineSymbolicDragonText
 	waitbutton
 	closetext
 	end
 
-ElderScript_0x18d205:
+DragonShrineElder2Script:
 	faceplayer
 	opentext
-	writetext UnknownText_0x18d840
+	writetext DragonShrineElder2Text
 	waitbutton
 	closetext
 	end
 
-ElderScript_0x18d20d:
+DragonShrineElder3Script:
 	faceplayer
 	opentext
-	writetext UnknownText_0x18d8b1
+	writetext DragonShrineElder3Text
 	waitbutton
 	closetext
 	end
 
-
-MenuDataHeader_0x18d215:
-	db $40 ; flags
-	db 04, 08 ; start coords
-	db 11, 19 ; end coords
+DragonShrineQuestion1_MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 8, 4, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	db 3 ; items
 	db "Pal@"
 	db "Underling@"
 	db "Friend@"
 
-
-MenuDataHeader_0x18d234:
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 11, 19 ; end coords
+DragonShrineQuestion2_MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 9, 4, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	db 3 ; items
 	db "Strategy@"
 	db "Raising@"
 	db "Cheating@"
 
-
-MenuDataHeader_0x18d258:
-	db $40 ; flags
-	db 04, 05 ; start coords
-	db 11, 19 ; end coords
+DragonShrineQuestion3_MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 5, 4, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	db 3 ; items
 	db "Weak person@"
 	db "Tough person@"
 	db "Anybody@"
 
-
-MenuDataHeader_0x18d283:
-	db $40 ; flags
-	db 04, 08 ; start coords
-	db 11, 19 ; end coords
+DragonShrineQuestion4_MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 8, 4, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	db 3 ; items
 	db "Love@"
 	db "Violence@"
 	db "Knowledge@"
 
-
-MenuDataHeader_0x18d2a5:
-	db $40 ; flags
-	db 04, 12 ; start coords
-	db 11, 19 ; end coords
+DragonShrineQuestion5_MenuDataHeader:
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 12, 4, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $81 ; flags
+	db STATICMENU_CURSOR | STATICMENU_DISABLE_B ; flags
 	db 3 ; items
 	db "Tough@"
 	db "Both@"
 	db "Weak@"
 
-
-MovementData_0x18d2bf:
+DragonShrinePlayerWalkInMovement:
 	slow_step UP
 	slow_step UP
 	slow_step UP
@@ -351,11 +340,11 @@
 	slow_step UP
 	step_end
 
-MovementData_0x18d2c7:
+DragonShrineElderStepDownMovement:
 	slow_step DOWN
 	step_end
 
-MovementData_0x18d2c9:
+DragonShrineElderWalkToClairMovement:
 	slow_step LEFT
 	slow_step LEFT
 	slow_step LEFT
@@ -372,7 +361,7 @@
 	turn_head DOWN
 	step_end
 
-MovementData_0x18d2d4:
+DragonShrineClairWalkInMovement:
 	slow_step UP
 	slow_step UP
 	slow_step UP
@@ -380,12 +369,12 @@
 	slow_step UP
 	step_end
 
-MovementData_0x18d2da:
+DragonShrineClairBigStepLeftMovement:
 	fix_facing
 	big_step LEFT
 	step_end
 
-MovementData_0x18d2dd:
+DragonShrineClairSlowStepLeftMovement:
 	slow_step LEFT
 	remove_fixed_facing
 	step_end
@@ -404,7 +393,7 @@
 	step DOWN
 	step_end
 
-UnknownText_0x18d2ea:
+DragonShrineElderGreetingText:
 	text "Hm… Good to see"
 	line "you here."
 
@@ -427,29 +416,29 @@
 	para "Ready?"
 	done
 
-UnknownText_0x18d3bc:
+DragonShrineQuestion1Text:
 	text "What are #MON"
 	line "to you?"
 	done
 
-UnknownText_0x18d3d3:
+DragonShrineQuestion2Text:
 	text "What helps you to"
 	line "win battles?"
 	done
 
-UnknownText_0x18d3f3:
+DragonShrineQuestion3Text:
 	text "What kind of"
 	line "trainer do you"
 	cont "wish to battle?"
 	done
 
-UnknownText_0x18d420:
+DragonShrineQuestion4Text:
 	text "What is most"
 	line "important for"
 	cont "raising #MON?"
 	done
 
-UnknownText_0x18d44a:
+DragonShrineQuestion5Text:
 	text "Strong #MON."
 	line "Weak #MON."
 
@@ -457,7 +446,7 @@
 	line "important?"
 	done
 
-UnknownText_0x18d47c:
+DragonShrinePassedTestText:
 	text "Hm… I see…"
 
 	para "You care deeply"
@@ -476,7 +465,7 @@
 	cont "#MON LEAGUE."
 	done
 
-UnknownText_0x18d520:
+DragonShrineMustIInformLanceText:
 	text "CLAIR!"
 
 	para "This child is"
@@ -491,7 +480,7 @@
 	line "LANCE of this?"
 	done
 
-UnknownText_0x18d5a3:
+DragonShrineElderScoldsClairText:
 	text "CLAIR…"
 
 	para "Reflect upon what"
@@ -501,12 +490,12 @@
 	line "child has."
 	done
 
-UnknownText_0x18d5e5:
+DragonShrineComeAgainText:
 	text "Come again, if you"
 	line "so desire."
 	done
 
-UnknownText_0x18d604:
+DragonShrineTakeThisDratiniText:
 	text "Hm… Good to see"
 	line "you here."
 
@@ -523,17 +512,17 @@
 	line "your worth."
 	done
 
-UnknownText_0x18d697:
+DragonShrinePlayerReceivedDratiniText:
 	text "<PLAYER> received"
 	line "DRATINI!"
 	done
 
-UnknownText_0x18d6ac:
+DragonShrinePartyFullText:
 	text "Hm? Your #MON"
 	line "party is full."
 	done
 
-UnknownText_0x18d6ca:
+DragonShrineSymbolicDragonText:
 	text "Dragon #MON are"
 	line "symbolic of our"
 	cont "clan."
@@ -545,7 +534,7 @@
 	line "one."
 	done
 
-UnknownText_0x18d724:
+DragonShrineClairsGrandfatherText:
 	text "CLAIR appears to"
 	line "have learned an"
 
@@ -556,7 +545,7 @@
 	line "grandfather."
 	done
 
-UnknownText_0x18d782:
+DragonShrineSilverIsInTrainingText:
 	text "A boy close to"
 	line "your age is in"
 	cont "training here."
@@ -568,21 +557,21 @@
 	line "little worrisome…"
 	done
 
-UnknownText_0x18d7f6:
+DragonShrineWrongAnswerText1:
 	text "Hah? I didn't"
 	line "quite catch that…"
 	done
 
-UnknownText_0x18d816:
+DragonShrineWrongAnswerText2:
 	text "What was it you"
 	line "said?"
 	done
 
-UnknownText_0x18d82d:
+DragonShrineRightAnswerText:
 	text "Oh, I understand…"
 	done
 
-UnknownText_0x18d840:
+DragonShrineElder2Text:
 	text "It's been quite"
 	line "some time since a"
 
@@ -594,7 +583,7 @@
 	line "Master LANCE."
 	done
 
-UnknownText_0x18d8b1:
+DragonShrineElder3Text:
 	text "You know young"
 	line "Master LANCE?"
 
@@ -606,7 +595,7 @@
 	line "blood."
 	done
 
-UnknownText_0x18d916:
+DragonShrineClairYouPassedText:
 	text "So how did it go?"
 
 	para "I guess there's no"
@@ -614,16 +603,16 @@
 
 	para "You did fail?"
 
-	para $56, $56, $56, $56, $56, $56
+	para "<……><……><……><……><……><……>"
 
 	para "…What? You passed?"
 	done
 
-UnknownText_0x18d974:
+DragonShrineClairThatCantBeText:
 	text "That can't be!"
 	done
 
-UnknownText_0x18d983:
+DragonShrineClairYoureLyingText:
 	text "You're lying!"
 
 	para "Even I haven't"
@@ -630,11 +619,11 @@
 	line "been approved!"
 	done
 
-UnknownText_0x18d9ae:
+DragonShrineIUnderstandText:
 	text "I-I understand…"
 	done
 
-UnknownText_0x18d9bf:
+DragonShrineHereRisingBadgeText:
 	text "Here, this is the"
 	line "RISINGBADGE…"
 
@@ -641,12 +630,12 @@
 	para "Hurry up! Take it!"
 	done
 
-UnknownText_0x18d9f2:
+DragonShrinePlayerReceivedRisingBadgeText:
 	text "<PLAYER> received"
 	line "RISINGBADGE."
 	done
 
-UnknownText_0x18da0b:
+DragonShrineRisingBadgeExplanationText:
 	text "RISINGBADGE will"
 	line "enable your"
 
@@ -664,11 +653,11 @@
 	line "question."
 	done
 
-UnknownText_0x18dab4:
-	text $56, $56, $56, $56, $56, $56
+DragonShrineSpeechlessText:
+	text "<……><……><……><……><……><……>"
 	done
 
-DragonShrine_MapEventHeader:
+DragonShrine_MapEvents:
 	; filler
 	db 0, 0
 
@@ -685,7 +674,7 @@
 
 .ObjectEvents:
 	db 4
-	object_event 5, 1, SPRITE_ELDER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ElderScript_0x18d1a5, EVENT_GAVE_KURT_APRICORNS
-	object_event 2, 4, SPRITE_ELDER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ElderScript_0x18d205, EVENT_GAVE_KURT_APRICORNS
-	object_event 7, 4, SPRITE_ELDER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ElderScript_0x18d20d, EVENT_GAVE_KURT_APRICORNS
+	object_event 5, 1, SPRITE_ELDER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DragonShrineElder1Script, EVENT_GAVE_KURT_APRICORNS
+	object_event 2, 4, SPRITE_ELDER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DragonShrineElder2Script, EVENT_GAVE_KURT_APRICORNS
+	object_event 7, 4, SPRITE_ELDER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DragonShrineElder3Script, EVENT_GAVE_KURT_APRICORNS
 	object_event 4, 8, SPRITE_CLAIR, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_DRAGON_SHRINE_CLAIR
--- a/maps/DragonsDen1F.asm
+++ b/maps/DragonsDen1F.asm
@@ -1,4 +1,4 @@
-DragonsDen1F_MapScriptHeader:
+DragonsDen1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-DragonsDen1F_MapEventHeader:
+DragonsDen1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -9,7 +9,7 @@
 	const DRAGONSDENB1F_POKE_BALL2
 	const DRAGONSDENB1F_POKE_BALL3
 
-DragonsDenB1F_MapScriptHeader:
+DragonsDenB1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -17,7 +17,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .CheckSilver
+	callback MAPCALLBACK_NEWMAP, .CheckSilver
 
 .DummyScene0:
 	end
@@ -57,7 +57,7 @@
 	buttonsound
 	giveitem TM_DRAGONBREATH
 	iffalse .BagFull
-	itemtotext TM_DRAGONBREATH, $0
+	itemtotext TM_DRAGONBREATH, MEM_BUFFER_0
 	writetext NotifyReceiveDragonbreath
 	playsound SFX_ITEM
 	waitsfx
@@ -80,7 +80,7 @@
 	pause 30
 	special RestartMapMusic
 	disappear DRAGONSDENB1F_CLAIR
-	setscene $0
+	setscene 0
 	end
 
 TrainerCooltrainermDarin:
@@ -135,7 +135,7 @@
 	iffalse .BagFull
 	disappear DRAGONSDENB1F_POKE_BALL1
 	opentext
-	itemtotext DRAGON_FANG, $0
+	itemtotext DRAGON_FANG, MEM_BUFFER_0
 	writetext Text_FoundDragonFang
 	playsound SFX_ITEM
 	waitsfx
@@ -145,7 +145,7 @@
 
 .BagFull:
 	opentext
-	itemtotext DRAGON_FANG, $0
+	itemtotext DRAGON_FANG, MEM_BUFFER_0
 	writetext Text_FoundDragonFang
 	buttonsound
 	writetext Text_NoRoomForDragonFang
@@ -183,13 +183,13 @@
 	itemball MAX_ELIXER
 
 DragonsDenB1FHiddenRevive:
-	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_REVIVE, REVIVE
+	hiddenitem EVENT_DRAGONS_DEN_B1F_HIDDEN_REVIVE, REVIVE
 
 DragonsDenB1FHiddenMaxPotion:
-	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
 DragonsDenB1FHiddenMaxElixer:
-	dwb EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_ELIXER, MAX_ELIXER
+	hiddenitem EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_ELIXER, MAX_ELIXER
 
 MovementDragonsDen_ClairWalksToYou:
 	slow_step RIGHT
@@ -406,7 +406,7 @@
 	cont "items."
 	done
 
-DragonsDenB1F_MapEventHeader:
+DragonsDenB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EarlsPokemonAcademy.asm
+++ b/maps/EarlsPokemonAcademy.asm
@@ -6,7 +6,7 @@
 	const EARLSPOKEMONACADEMY_YOUNGSTER2
 	const EARLSPOKEMONACADEMY_POKEDEX
 
-EarlsPokemonAcademy_MapScriptHeader:
+EarlsPokemonAcademy_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -69,11 +69,11 @@
 	loadmenudata .BlackboardMenuData
 	_2dmenu
 	closewindow
-	if_equal $1, .Poison
-	if_equal $2, .Paralysis
-	if_equal $3, .Sleep
-	if_equal $4, .Burn
-	if_equal $5, .Freeze
+	if_equal 1, .Poison
+	if_equal 2, .Paralysis
+	if_equal 3, .Sleep
+	if_equal 4, .Burn
+	if_equal 5, .Freeze
 	closetext
 	end
 
@@ -103,14 +103,13 @@
 	jump .Loop
 
 .BlackboardMenuData:
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 08, 11 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 11, 8
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	dn 3, 2 ; rows, columns
 	db 5 ; spacing
 	dba .Text
@@ -412,7 +411,7 @@
 	para "stickers!"
 	done
 
-EarlsPokemonAcademy_MapEventHeader:
+EarlsPokemonAcademy_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakCity.asm
+++ b/maps/EcruteakCity.asm
@@ -7,13 +7,13 @@
 	const ECRUTEAKCITY_YOUNGSTER
 	const ECRUTEAKCITY_GRAMPS3
 
-EcruteakCity_MapScriptHeader:
+EcruteakCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_ECRUTEAK
@@ -88,7 +88,7 @@
 	jumpstd martsign
 
 EcruteakCityHiddenHyperPotion:
-	dwb EVENT_ECRUTEAK_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
+	hiddenitem EVENT_ECRUTEAK_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
 
 UnusedMissingDaughterText:
 ; This text is neither used nor referenced in the final game.
@@ -259,7 +259,7 @@
 	line "as it is unsafe."
 	done
 
-EcruteakCity_MapEventHeader:
+EcruteakCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -7,7 +7,7 @@
 	const ECRUTEAKGYM_GYM_GUY
 	const ECRUTEAKGYM_GRAMPS
 
-EcruteakGym_MapScriptHeader:
+EcruteakGym_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .ForcedToLeave
@@ -32,7 +32,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x9a00a, 0
-	loadtrainer MORTY, 1
+	loadtrainer MORTY, MORTY1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_MORTY
@@ -43,7 +43,7 @@
 	setflag ENGINE_FOGBADGE
 	checkcode VAR_BADGES
 	scall EcruteakGymActivateRockets
-	setmapscene ECRUTEAK_HOUSE, $1
+	setmapscene ECRUTEAK_HOUSE, 1
 	setevent EVENT_RANG_CLEAR_BELL_1
 	setevent EVENT_RANG_CLEAR_BELL_2
 .FightDone:
@@ -91,10 +91,10 @@
 	follow PLAYER, ECRUTEAKGYM_GRAMPS
 	applymovement PLAYER, MovementData_0x99e5f
 	stopfollow
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	playsound SFX_ENTER_DOOR
 	waitsfx
-	warp ECRUTEAK_CITY, $6, $1b
+	warp ECRUTEAK_CITY, 6, 27
 	end
 
 TrainerSageJeffrey:
@@ -162,7 +162,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext MORTY, 1, $1
+	trainertotext MORTY, MORTY1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 MovementData_0x99e5d:
@@ -386,7 +386,7 @@
 	para "Hohohoho."
 	done
 
-EcruteakGym_MapEventHeader:
+EcruteakGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -4,7 +4,7 @@
 	const ECRUTEAKHOUSE_SAGE3
 	const ECRUTEAKHOUSE_GRAMPS
 
-EcruteakHouse_MapScriptHeader:
+EcruteakHouse_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -12,7 +12,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .InitializeSages
+	callback MAPCALLBACK_OBJECTS, .InitializeSages
 
 .DummyScene0:
 	end
@@ -35,7 +35,7 @@
 	setevent EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
 	checkitem CLEAR_BELL
 	iftrue .NoClearBell
-	setscene $0
+	setscene 0
 .NoClearBell:
 	return
 
@@ -47,7 +47,7 @@
 	checkevent EVENT_RANG_CLEAR_BELL_2
 	iftrue EcruteakHouse_CoordEvent_DontMove
 	applymovement ECRUTEAKHOUSE_SAGE2, MovementData_0x980c7
-	moveobject ECRUTEAKHOUSE_SAGE1, $4, $6
+	moveobject ECRUTEAKHOUSE_SAGE1, 4, 6
 	appear ECRUTEAKHOUSE_SAGE1
 	pause 5
 	disappear ECRUTEAKHOUSE_SAGE2
@@ -57,7 +57,7 @@
 	checkevent EVENT_RANG_CLEAR_BELL_1
 	iftrue EcruteakHouse_CoordEvent_DontMove
 	applymovement ECRUTEAKHOUSE_SAGE1, MovementData_0x980cc
-	moveobject ECRUTEAKHOUSE_SAGE2, $5, $6
+	moveobject ECRUTEAKHOUSE_SAGE2, 5, 6
 	appear ECRUTEAKHOUSE_SAGE2
 	pause 5
 	disappear ECRUTEAKHOUSE_SAGE1
@@ -100,7 +100,7 @@
 	writetext UnknownText_0x98250
 	waitbutton
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_RANG_CLEAR_BELL_2
 	clearevent EVENT_RANG_CLEAR_BELL_1
 	setevent EVENT_GAVE_KURT_APRICORNS
@@ -202,7 +202,7 @@
 	line "but I must ask you"
 	cont "to leave."
 
-	para $56, $56, $56
+	para "<……><……><……>"
 
 	para "Ah!"
 
@@ -277,7 +277,7 @@
 	line "never to return."
 	done
 
-EcruteakHouse_MapEventHeader:
+EcruteakHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakItemfinderHouse.asm
+++ b/maps/EcruteakItemfinderHouse.asm
@@ -2,7 +2,7 @@
 	const ECRUTEAKITEMFINDERHOUSE_COOLTRAINER_M
 	const ECRUTEAKITEMFINDERHOUSE_POKEDEX
 
-EcruteakItemfinderHouse_MapScriptHeader:
+EcruteakItemfinderHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -162,7 +162,7 @@
 	line "grassland."
 	done
 
-EcruteakItemfinderHouse_MapEventHeader:
+EcruteakItemfinderHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakLugiaSpeechHouse.asm
+++ b/maps/EcruteakLugiaSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const ECRUTEAKLUGIASPEECHHOUSE_GRAMPS
 	const ECRUTEAKLUGIASPEECHHOUSE_YOUNGSTER
 
-EcruteakLugiaSpeechHouse_MapScriptHeader:
+EcruteakLugiaSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -44,7 +44,7 @@
 	line "must be powerful."
 	done
 
-EcruteakLugiaSpeechHouse_MapEventHeader:
+EcruteakLugiaSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakMart.asm
+++ b/maps/EcruteakMart.asm
@@ -3,7 +3,7 @@
 	const ECRUTEAKMART_SUPER_NERD
 	const ECRUTEAKMART_GRANNY
 
-EcruteakMart_MapScriptHeader:
+EcruteakMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	line "right up."
 	done
 
-EcruteakMart_MapEventHeader:
+EcruteakMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/EcruteakPokecenter1F.asm
+++ b/maps/EcruteakPokecenter1F.asm
@@ -5,7 +5,7 @@
 	const ECRUTEAKPOKECENTER1F_GYM_GUY
 	const ECRUTEAKPOKECENTER1F_BILL
 
-EcruteakPokecenter1F_MapScriptHeader:
+EcruteakPokecenter1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .MeetBill
@@ -53,7 +53,7 @@
 	disappear ECRUTEAKPOKECENTER1F_BILL
 	clearevent EVENT_MET_BILL
 	setflag ENGINE_TIME_CAPSULE
-	setscene $1
+	setscene 1
 	waitsfx
 	end
 
@@ -61,7 +61,7 @@
 	jumpstd pokecenternurse
 
 EcruteakPokecenter1FPokefanMScript:
-	special Mobile_DummyReturnFalse
+	special Special_Mobile_DummyReturnFalse
 	iftrue .mobile
 	jumptextfaceplayer EcruteakPokecenter1FPokefanMText
 
@@ -206,7 +206,7 @@
 	line "acy. I know it!"
 	done
 
-EcruteakPokecenter1F_MapEventHeader:
+EcruteakPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ElmsHouse.asm
+++ b/maps/ElmsHouse.asm
@@ -2,7 +2,7 @@
 	const ELMSHOUSE_ELMS_WIFE
 	const ELMSHOUSE_ELMS_SON
 
-ElmsHouse_MapScriptHeader:
+ElmsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -83,7 +83,7 @@
 	cont "search papers."
 	done
 
-ElmsHouse_MapEventHeader:
+ElmsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -6,7 +6,7 @@
 	const ELMSLAB_POKE_BALL3
 	const ELMSLAB_OFFICER
 
-ElmsLab_MapScriptHeader:
+ElmsLab_MapScripts:
 .SceneScripts:
 	db 6
 	scene_script .MeetElm
@@ -18,7 +18,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .MoveElmCallback
+	callback MAPCALLBACK_OBJECTS, .MoveElmCallback
 
 .MeetElm:
 	priorityjump .WalkUpToElm
@@ -42,7 +42,7 @@
 .MoveElmCallback:
 	checkscene
 	iftrue .Skip
-	moveobject ELMSLAB_ELM, $3, $4
+	moveobject ELMSLAB_ELM, 3, 4
 .Skip:
 	return
 
@@ -84,7 +84,7 @@
 	opentext
 	writetext ElmText_ChooseAPokemon
 	waitbutton
-	setscene $1
+	setscene 1
 	closetext
 	end
 
@@ -161,7 +161,7 @@
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue LookAtElmPokeBallScript
 	spriteface ELMSLAB_ELM, DOWN
-	refreshscreen $0
+	refreshscreen
 	pokepic CYNDAQUIL
 	cry CYNDAQUIL
 	waitbutton
@@ -175,7 +175,7 @@
 	writetext ChoseStarterText
 	buttonsound
 	waitsfx
-	pokenamemem CYNDAQUIL, $0
+	pokenamemem CYNDAQUIL, MEM_BUFFER_0
 	writetext ReceivedStarterText
 	playsound SFX_CAUGHT_MON
 	waitsfx
@@ -191,7 +191,7 @@
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue LookAtElmPokeBallScript
 	spriteface ELMSLAB_ELM, DOWN
-	refreshscreen $0
+	refreshscreen
 	pokepic TOTODILE
 	cry TOTODILE
 	waitbutton
@@ -205,7 +205,7 @@
 	writetext ChoseStarterText
 	buttonsound
 	waitsfx
-	pokenamemem TOTODILE, $0
+	pokenamemem TOTODILE, MEM_BUFFER_0
 	writetext ReceivedStarterText
 	playsound SFX_CAUGHT_MON
 	waitsfx
@@ -219,7 +219,7 @@
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
 	iftrue LookAtElmPokeBallScript
 	spriteface ELMSLAB_ELM, DOWN
-	refreshscreen $0
+	refreshscreen
 	pokepic CHIKORITA
 	cry CHIKORITA
 	waitbutton
@@ -233,7 +233,7 @@
 	writetext ChoseStarterText
 	buttonsound
 	waitsfx
-	pokenamemem CHIKORITA, $0
+	pokenamemem CHIKORITA, MEM_BUFFER_0
 	writetext ReceivedStarterText
 	playsound SFX_CAUGHT_MON
 	waitsfx
@@ -274,8 +274,8 @@
 	closetext
 	setevent EVENT_GOT_A_POKEMON_FROM_ELM
 	setevent EVENT_RIVAL_CHERRYGROVE_CITY
-	setscene $5
-	setmapscene NEW_BARK_TOWN, $1
+	setscene 5
+	setmapscene NEW_BARK_TOWN, 1
 	end
 
 ElmDescribesMrPokemonScript:
@@ -308,11 +308,11 @@
 	end
 
 ElmsLabHealingMachine_HealParty:
-	special TrainerRankings_Healings
+	special Special_StubbedTrainerRankings_Healings
 	special HealParty
 	playmusic MUSIC_NONE
-	writebyte 1 ; Machine is in Elm's Lab
-	special HealMachineAnim
+	writebyte HEALMACHINE_ELMS_LAB
+	special Special_HealMachineAnim
 	pause 30
 	special RestartMapMusic
 	closetext
@@ -341,13 +341,13 @@
 	buttonsound
 	setevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
 	setflag ENGINE_BUG_CONTEST_ON
-	setmapscene ROUTE_29, $1
+	setmapscene ROUTE_29, 1
 	clearevent EVENT_ROUTE_30_YOUNGSTER_JOEY
 	setevent EVENT_ROUTE_30_BATTLE
 	writetext ElmAfterTheftText6
 	waitbutton
 	closetext
-	setscene $6
+	setscene 6
 	end
 
 ElmStudyingEggScript:
@@ -479,7 +479,7 @@
 	writetext AideText_AlwaysBusy
 	waitbutton
 	closetext
-	setscene $2
+	setscene 2
 	end
 
 AideScript_WalkBalls1:
@@ -500,7 +500,7 @@
 	opentext
 	writetext AideText_GiveYouBalls
 	buttonsound
-	itemtotext POKE_BALL, $1
+	itemtotext POKE_BALL, MEM_BUFFER_1
 	scall AideScript_ReceiveTheBalls
 	giveitem POKE_BALL, 5
 	writetext AideText_ExplainBalls
@@ -507,7 +507,7 @@
 	buttonsound
 	itemnotify
 	closetext
-	setscene $2
+	setscene 2
 	end
 
 AideScript_ReceiveTheBalls:
@@ -556,13 +556,13 @@
 	opentext
 	writetext ElmsLabOfficerText1
 	buttonsound
-	special SpecialNameRival
+	special Special_NameRival
 	writetext ElmsLabOfficerText2
 	waitbutton
 	closetext
 	applymovement ELMSLAB_OFFICER, OfficerLeavesMovement
 	disappear ELMSLAB_OFFICER
-	setscene $2
+	setscene 2
 	end
 
 ElmsLabWindow:
@@ -794,7 +794,7 @@
 	text "Oh, hey! I got an"
 	line "e-mail!"
 
-	para $56, $56, $56
+	para "<……><……><……>"
 	line "Hm… Uh-huh…"
 
 	para "Okay…"
@@ -1370,7 +1370,7 @@
 	line "screen…"
 	done
 
-ElmsLab_MapEventHeader:
+ElmsLab_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -4,7 +4,7 @@
 	const FASTSHIP1F_SAILOR3
 	const FASTSHIP1F_GENTLEMAN
 
-FastShip1F_MapScriptHeader:
+FastShip1F_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .DummyScene0
@@ -35,11 +35,11 @@
 	clearevent EVENT_FAST_SHIP_HAS_ARRIVED
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iftrue .SkipGrandpa
-	setscene $2
+	setscene 2
 	end
 
 .SkipGrandpa:
-	setscene $0
+	setscene 0
 	end
 
 SailorScript_0x75160:
@@ -68,11 +68,11 @@
 	closetext
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
 	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
-	setmapscene VERMILION_PORT, $1
-	warp VERMILION_PORT, $7, $11
+	setmapscene VERMILION_PORT, 1
+	warp VERMILION_PORT, 7, 17
 	end
 
 ._Olivine:
@@ -81,11 +81,11 @@
 	closetext
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
 	setevent EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
-	setmapscene OLIVINE_PORT, $1
-	warp OLIVINE_PORT, $7, $17
+	setmapscene OLIVINE_PORT, 1
+	warp OLIVINE_PORT, 7, 23
 	end
 
 .LetThePlayerOut:
@@ -120,7 +120,7 @@
 	jumptextfaceplayer FastShip1FSailorText
 
 WorriedGrandpaSceneRight:
-	moveobject FASTSHIP1F_GENTLEMAN, $14, $6
+	moveobject FASTSHIP1F_GENTLEMAN, 20, 6
 
 WorriedGrandpaSceneLeft:
 	appear FASTSHIP1F_GENTLEMAN
@@ -135,7 +135,7 @@
 	spriteface PLAYER, RIGHT
 	applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x75222
 	disappear FASTSHIP1F_GENTLEMAN
-	setscene $0
+	setscene 0
 	end
 
 MovementData_0x7520e:
@@ -285,7 +285,7 @@
 	cont "VERMILION CITY."
 	done
 
-FastShip1F_MapEventHeader:
+FastShip1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -12,7 +12,7 @@
 	const FASTSHIPB1F_YOUNGSTER1
 	const FASTSHIPB1F_YOUNGSTER2
 
-FastShipB1F_MapScriptHeader:
+FastShipB1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -31,7 +31,7 @@
 	checkevent EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
 	iftrue UnknownScript_0x76766
 	applymovement FASTSHIPB1F_SAILOR2, MovementData_0x76876
-	moveobject FASTSHIPB1F_SAILOR1, $1e, $6
+	moveobject FASTSHIPB1F_SAILOR1, 30, 6
 	appear FASTSHIPB1F_SAILOR1
 	pause 5
 	disappear FASTSHIPB1F_SAILOR2
@@ -41,7 +41,7 @@
 	checkevent EVENT_FAST_SHIP_B1F_SAILOR_LEFT
 	iftrue UnknownScript_0x76766
 	applymovement FASTSHIPB1F_SAILOR1, MovementData_0x76871
-	moveobject FASTSHIPB1F_SAILOR2, $1f, $6
+	moveobject FASTSHIPB1F_SAILOR2, 31, 6
 	appear FASTSHIPB1F_SAILOR2
 	pause 5
 	disappear FASTSHIPB1F_SAILOR1
@@ -448,7 +448,7 @@
 	cont "stone panels."
 	done
 
-FastShipB1F_MapEventHeader:
+FastShipB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -7,7 +7,7 @@
 	const FASTSHIPCABINS_NNW_NNE_NE_GENTLEMAN
 	const FASTSHIPCABINS_NNW_NNE_NE_PHARMACIST
 
-FastShipCabins_NNW_NNE_NE_MapScriptHeader:
+FastShipCabins_NNW_NNE_NE_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -98,9 +98,9 @@
 	waitbutton
 	closetext
 	setevent EVENT_FAST_SHIP_LAZY_SAILOR
-	setmapscene FAST_SHIP_B1F, $1
+	setmapscene FAST_SHIP_B1F, 1
 	checkcode VAR_FACING
-	if_equal $3, UnknownScript_0x75629
+	if_equal RIGHT, UnknownScript_0x75629
 	applymovement FASTSHIPCABINS_NNW_NNE_NE_SAILOR, MovementData_0x75637
 	playsound SFX_EXIT_BUILDING
 	disappear FASTSHIPCABINS_NNW_NNE_NE_SAILOR
@@ -266,7 +266,7 @@
 	line "lost it…"
 	done
 
-FastShipCabins_NNW_NNE_NE_MapEventHeader:
+FastShipCabins_NNW_NNE_NE_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -11,7 +11,7 @@
 	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_F
 	const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_SUPER_NERD2
 
-FastShipCabins_SE_SSE_CaptainsCabin_MapScriptHeader:
+FastShipCabins_SE_SSE_CaptainsCabin_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -18,7 +18,7 @@
 .MapCallbacks:
 	db 0
 
-Unused_0x75ea6:
+Unreferenced_0x75ea6:
 	end
 
 SSAquaCaptain:
@@ -49,10 +49,10 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2
 	applymovement PLAYER, MovementData_0x76004
-	moveobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, $3, $13
+	moveobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, 3, 19
 	appear FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1
 	spriteface PLAYER, UP
 	spriteface FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, UP
@@ -81,7 +81,7 @@
 	writetext SSAquaEntertainedGranddaughterText
 	buttonsound
 	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
-	setmapscene FAST_SHIP_1F, $0
+	setmapscene FAST_SHIP_1F, 0
 	jump SSAquaMetalCoatAndDocking
 
 SSAquaGrandpa:
@@ -94,7 +94,7 @@
 	writetext SSAquaCantFindGranddaughterText
 	waitbutton
 	closetext
-	setmapscene FAST_SHIP_1F, $0
+	setmapscene FAST_SHIP_1F, 0
 	end
 
 SSAquaMetalCoatAndDocking:
@@ -462,7 +462,7 @@
 	cont "VERMILION CITY."
 	done
 
-FastShipCabins_SE_SSE_CaptainsCabin_MapEventHeader:
+FastShipCabins_SE_SSE_CaptainsCabin_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -4,7 +4,7 @@
 	const FASTSHIPCABINS_SW_SSW_NW_BUENA
 	const FASTSHIPCABINS_SW_SSW_NW_ROCKER
 
-FastShipCabins_SW_SSW_NW_MapScriptHeader:
+FastShipCabins_SW_SSW_NW_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -49,7 +49,7 @@
 
 .Script:
 	end_if_just_battled
-	special Mobile_DummyReturnFalse
+	special Special_Mobile_DummyReturnFalse
 	iftrue .mobile
 	opentext
 	writetext UnknownText_0x75d65
@@ -70,8 +70,8 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
-	special TrainerRankings_Healings
+	special ReloadSpritesNoPalettes
+	special Special_StubbedTrainerRankings_Healings
 	special HealParty
 	playmusic MUSIC_HEAL
 	pause 60
@@ -222,7 +222,7 @@
 	cont "VERMILION CITY."
 	done
 
-FastShipCabins_SW_SSW_NW_MapEventHeader:
+FastShipCabins_SW_SSW_NW_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FightingDojo.asm
+++ b/maps/FightingDojo.asm
@@ -2,7 +2,7 @@
 	const FIGHTINGDOJO_BLACK_BELT
 	const FIGHTINGDOJO_POKE_BALL
 
-FightingDojo_MapScriptHeader:
+FightingDojo_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -42,7 +42,7 @@
 	line "side!"
 	done
 
-FightingDojo_MapEventHeader:
+FightingDojo_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FuchsiaBillSpeechHouse.asm
+++ b/maps/FuchsiaBillSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const FUCHSIABILLSPEECHHOUSE_POKEFAN_F
 	const FUCHSIABILLSPEECHHOUSE_YOUNGSTER
 
-FuchsiaBillSpeechHouse_MapScriptHeader:
+FuchsiaBillSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -27,7 +27,7 @@
 	cont "CYCLING ROAD."
 	done
 
-FuchsiaBillSpeechHouse_MapEventHeader:
+FuchsiaBillSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FuchsiaCity.asm
+++ b/maps/FuchsiaCity.asm
@@ -4,13 +4,13 @@
 	const FUCHSIACITY_TEACHER
 	const FUCHSIACITY_FRUIT_TREE
 
-FuchsiaCity_MapScriptHeader:
+FuchsiaCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_FUCHSIA
@@ -124,7 +124,7 @@
 	line "waste with you."
 	done
 
-FuchsiaCity_MapEventHeader:
+FuchsiaCity_MapEvents:
 	; filler
 	db 0, 0
 
@@ -139,8 +139,8 @@
 	warp_def 18, 3, 3, SAFARI_ZONE_FUCHSIA_GATE_BETA
 	warp_def 37, 22, 1, ROUTE_15_FUCHSIA_GATE
 	warp_def 37, 23, 2, ROUTE_15_FUCHSIA_GATE
-	warp_def 7, 35, 1, ROUTE_19___FUCHSIA_GATE
-	warp_def 8, 35, 2, ROUTE_19___FUCHSIA_GATE
+	warp_def 7, 35, 1, ROUTE_19_FUCHSIA_GATE
+	warp_def 8, 35, 2, ROUTE_19_FUCHSIA_GATE
 
 .CoordEvents:
 	db 0
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -6,7 +6,7 @@
 	const FUCHSIAGYM_FUCHSIA_GYM_4
 	const FUCHSIAGYM_GYM_GUY
 
-FuchsiaGym_MapScriptHeader:
+FuchsiaGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -23,7 +23,7 @@
 	waitbutton
 	closetext
 	winlosstext JanineText_ToughOne, 0
-	loadtrainer JANINE, 1
+	loadtrainer JANINE, JANINE1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_JANINE
@@ -35,7 +35,7 @@
 	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	opentext
 	writetext Text_ReceivedSoulBadge
 	playsound SFX_GET_BADGE
@@ -65,7 +65,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_1, Movement_NinjaSpin
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 .AliceUnmasked:
 	faceplayer
 	opentext
@@ -99,7 +99,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_2, Movement_NinjaSpin
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 .LindaUnmasked:
 	faceplayer
 	opentext
@@ -133,7 +133,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_3, Movement_NinjaSpin
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 .CindyUnmasked:
 	faceplayer
 	opentext
@@ -167,7 +167,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_4, Movement_NinjaSpin
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 .BarryUnmasked:
 	faceplayer
 	opentext
@@ -216,7 +216,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext JANINE, 1, $1
+	trainertotext JANINE, JANINE1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 Movement_NinjaSpin:
@@ -380,7 +380,7 @@
 	cont "from JOHTO!"
 	done
 
-FuchsiaGym_MapEventHeader:
+FuchsiaGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FuchsiaMart.asm
+++ b/maps/FuchsiaMart.asm
@@ -3,7 +3,7 @@
 	const FUCHSIAMART_FISHER
 	const FUCHSIAMART_COOLTRAINER_F
 
-FuchsiaMart_MapScriptHeader:
+FuchsiaMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -37,7 +37,7 @@
 	cont "town."
 	done
 
-FuchsiaMart_MapEventHeader:
+FuchsiaMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FuchsiaPokecenter1F.asm
+++ b/maps/FuchsiaPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const FUCHSIAPOKECENTER1F_COOLTRAINER_F
 	const FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR
 
-FuchsiaPokecenter1F_MapScriptHeader:
+FuchsiaPokecenter1F_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -33,7 +33,7 @@
 	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
 	faceplayer
 	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_JANINE
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	opentext
 	writetext UnknownText_0x19654e
 	waitbutton
@@ -41,7 +41,7 @@
 	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
 	faceplayer
 	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	end
 
 MovementData_0x196486:
@@ -88,7 +88,7 @@
 	line "like her now!"
 	done
 
-FuchsiaPokecenter1F_MapEventHeader:
+FuchsiaPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/FuchsiaPokecenter2FBeta.asm
+++ b/maps/FuchsiaPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-FuchsiaPokecenter2FBeta_MapScriptHeader:
+FuchsiaPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-FuchsiaPokecenter2FBeta_MapEventHeader:
+FuchsiaPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodBikeShop.asm
+++ b/maps/GoldenrodBikeShop.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const GOLDENRODBIKESHOP_CLERK
 
-GoldenrodBikeShop_MapScriptHeader:
+GoldenrodBikeShop_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -102,7 +102,7 @@
 	line "BICYCLE!"
 	done
 
-GoldenrodBikeShop_MapEventHeader:
+GoldenrodBikeShop_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -3,7 +3,7 @@
 	const GOLDENRODBILLSHOUSE_POKEFAN_F
 	const GOLDENRODBILLSHOUSE_TWIN
 
-GoldenrodBillsHouse_MapScriptHeader:
+GoldenrodBillsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -22,7 +22,7 @@
 	buttonsound
 	waitsfx
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x54c13
+	if_equal PARTY_LENGTH, UnknownScript_0x54c13
 	writetext UnknownText_0x54dae
 	playsound SFX_CAUGHT_MON
 	waitsfx
@@ -74,8 +74,8 @@
 	iftrue UnknownScript_0x54c58
 	writetext UnknownText_0x54f9e
 	askforphonenumber PHONE_BILL
-	if_equal $1, UnknownScript_0x54c64
-	if_equal $2, UnknownScript_0x54c5e
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x54c64
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x54c5e
 	waitsfx
 	addcellnum PHONE_BILL
 	writetext UnknownText_0x54fd9
@@ -242,7 +242,7 @@
 	line "system."
 	done
 
-GoldenrodBillsHouse_MapEventHeader:
+GoldenrodBillsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -15,14 +15,14 @@
 	const GOLDENRODCITY_ROCKET6
 	const GOLDENRODCITY_POKEFAN_M2
 
-GoldenrodCity_MapScriptHeader:
+GoldenrodCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .FlyPointAndFloria
-	dbw MAPCALLBACK_OBJECTS, .MoveTutor
+	callback MAPCALLBACK_NEWMAP, .FlyPointAndFloria
+	callback MAPCALLBACK_OBJECTS, .MoveTutor
 
 .FlyPointAndFloria:
 	setflag ENGINE_FLYPOINT_GOLDENROD
@@ -63,47 +63,45 @@
 	yesorno
 	iffalse .Refused2
 	checkcoins 4000
-	if_equal $2, .NotEnoughMoney
+	if_equal HAVE_LESS, .NotEnoughMoney
 	writetext UnknownText_0x1990ce
 	loadmenudata .MoveMenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .Flamethrower
-	if_equal $2, .Thunderbolt
-	if_equal $3, .IceBeam
+	if_equal MOVETUTOR_FLAMETHROWER, .Flamethrower
+	if_equal MOVETUTOR_THUNDERBOLT, .Thunderbolt
+	if_equal MOVETUTOR_ICE_BEAM, .IceBeam
 	jump .Incompatible
 
 .Flamethrower:
-	writebyte $1
+	writebyte MOVETUTOR_FLAMETHROWER
 	writetext UnknownText_0x1991cf
 	special Special_MoveTutor
-	if_equal $0, .TeachMove
+	if_equal FALSE, .TeachMove
 	jump .Incompatible
 
 .Thunderbolt:
-	writebyte $2
+	writebyte MOVETUTOR_THUNDERBOLT
 	writetext UnknownText_0x1991cf
 	special Special_MoveTutor
-	if_equal $0, .TeachMove
+	if_equal FALSE, .TeachMove
 	jump .Incompatible
 
 .IceBeam:
-	writebyte $3
+	writebyte MOVETUTOR_ICE_BEAM
 	writetext UnknownText_0x1991cf
 	special Special_MoveTutor
-	if_equal $0, .TeachMove
+	if_equal FALSE, .TeachMove
 	jump .Incompatible
 
-
 .MoveMenuDataHeader:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 15, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "FLAMETHROWER@"
 	db "THUNDERBOLT@"
@@ -110,7 +108,6 @@
 	db "ICE BEAM@"
 	db "CANCEL@"
 
-
 .Refused:
 	writetext UnknownText_0x1990b4
 	waitbutton
@@ -551,10 +548,10 @@
 	done
 
 UnknownText_0x1991cf:
-	text ""
+	text_start
 	done
 
-GoldenrodCity_MapEventHeader:
+GoldenrodCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStore1F.asm
+++ b/maps/GoldenrodDeptStore1F.asm
@@ -4,7 +4,7 @@
 	const GOLDENRODDEPTSTORE1F_BUG_CATCHER
 	const GOLDENRODDEPTSTORE1F_GENTLEMAN
 
-GoldenrodDeptStore1F_MapScriptHeader:
+GoldenrodDeptStore1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -78,7 +78,7 @@
 	para "ROOFTOP LOOKOUT"
 	done
 
-GoldenrodDeptStore1F_MapEventHeader:
+GoldenrodDeptStore1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStore2F.asm
+++ b/maps/GoldenrodDeptStore2F.asm
@@ -5,7 +5,7 @@
 	const GOLDENRODDEPTSTORE2F_COOLTRAINER_F
 	const GOLDENRODDEPTSTORE2F_GENTLEMAN
 
-GoldenrodDeptStore2F_MapScriptHeader:
+GoldenrodDeptStore2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -41,8 +41,8 @@
 GoldenrodDeptStore2FElevatorButton:
 	jumpstd elevatorbutton
 
-; possibly unused
-UnknownText_0x55b7c:
+; unused
+UnusedText_0x55b7c:
 	text "We intend to sell"
 	line "items for #MON"
 	cont "to hold."
@@ -52,8 +52,8 @@
 	cont "MON hold it."
 	done
 
-; possibly unused
-UnknownText_0x55bd3:
+; unused
+UnusedText_0x55bd3:
 	text "By giving #MON"
 	line "items to hold, I"
 
@@ -100,7 +100,7 @@
 	line "   MARKET"
 	done
 
-GoldenrodDeptStore2F_MapEventHeader:
+GoldenrodDeptStore2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStore3F.asm
+++ b/maps/GoldenrodDeptStore3F.asm
@@ -3,7 +3,7 @@
 	const GOLDENRODDEPTSTORE3F_SUPER_NERD
 	const GOLDENRODDEPTSTORE3F_ROCKER
 
-GoldenrodDeptStore3F_MapScriptHeader:
+GoldenrodDeptStore3F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -56,7 +56,7 @@
 	line "   COLLECTION"
 	done
 
-GoldenrodDeptStore3F_MapEventHeader:
+GoldenrodDeptStore3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStore4F.asm
+++ b/maps/GoldenrodDeptStore4F.asm
@@ -4,7 +4,7 @@
 	const GOLDENRODDEPTSTORE4F_BUG_CATCHER
 	const GOLDENRODDEPTSTORE4F_GAMEBOY_KID
 
-GoldenrodDeptStore4F_MapScriptHeader:
+GoldenrodDeptStore4F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -77,7 +77,7 @@
 	para "4F MEDICINE BOX"
 	done
 
-GoldenrodDeptStore4F_MapEventHeader:
+GoldenrodDeptStore4F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -6,13 +6,13 @@
 	const GOLDENRODDEPTSTORE5F_CARRIE
 	const GOLDENRODDEPTSTORE5F_RECEPTIONIST
 
-GoldenrodDeptStore5F_MapScriptHeader:
+GoldenrodDeptStore5F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .CheckIfSunday
+	callback MAPCALLBACK_OBJECTS, .CheckIfSunday
 
 .CheckIfSunday:
 	checkcode VAR_WEEKDAY
@@ -65,11 +65,11 @@
 	if_not_equal SUNDAY, .EventIsOver
 	checkflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	iftrue .EventIsOver
-	special GetFirstPokemonHappiness
+	special Special_GetFirstPokemonHappiness
 	writetext UnknownText_0x56143
 	buttonsound
-	if_greater_than $95, .VeryHappy
-	if_greater_than $31, .SomewhatHappy
+	if_greater_than 150 - 1, .VeryHappy
+	if_greater_than 50 - 1, .SomewhatHappy
 	jump .NotVeryHappy
 
 .VeryHappy:
@@ -106,8 +106,8 @@
 Carrie:
 	faceplayer
 	opentext
-	special SpecialGameboyCheck
-	if_not_equal $2, .NotGBC ; This is a dummy check from Gold and Silver.  In normal gameplay, this would not be checked.
+	special Special_GameboyCheck
+	if_not_equal GBCHECK_CGB, .NotGBC ; This is a dummy check from Gold/Silver
 	writetext UnknownText_0x56241
 	waitbutton
 	closetext
@@ -217,7 +217,7 @@
 	para "5F TM CORNER"
 	done
 
-GoldenrodDeptStore5F_MapEventHeader:
+GoldenrodDeptStore5F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -2,7 +2,7 @@
 	const GOLDENRODDEPTSTORE6F_LASS
 	const GOLDENRODDEPTSTORE6F_SUPER_NERD
 
-GoldenrodDeptStore6F_MapScriptHeader:
+GoldenrodDeptStore6F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -13,41 +13,41 @@
 	opentext
 	writetext GoldenrodVendingText
 .Start:
-	special PlaceMoneyTopRight
+	special Special_PlaceMoneyTopRight
 	loadmenudata .MenuData
 	verticalmenu
 	closewindow
-	if_equal $1, .FreshWater
-	if_equal $2, .SodaPop
-	if_equal $3, .Lemonade
+	if_equal 1, .FreshWater
+	if_equal 2, .SodaPop
+	if_equal 3, .Lemonade
 	closetext
 	end
 
 .FreshWater:
-	checkmoney $0, 200
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 200
+	if_equal HAVE_LESS, .NotEnoughMoney
 	giveitem FRESH_WATER
 	iffalse .NotEnoughSpace
-	takemoney $0, 200
-	itemtotext FRESH_WATER, $0
+	takemoney YOUR_MONEY, 200
+	itemtotext FRESH_WATER, MEM_BUFFER_0
 	jump .VendItem
 
 .SodaPop:
-	checkmoney $0, 300
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 300
+	if_equal HAVE_LESS, .NotEnoughMoney
 	giveitem SODA_POP
 	iffalse .NotEnoughSpace
-	takemoney $0, 300
-	itemtotext SODA_POP, $0
+	takemoney YOUR_MONEY, 300
+	itemtotext SODA_POP, MEM_BUFFER_0
 	jump .VendItem
 
 .Lemonade:
-	checkmoney $0, 350
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 350
+	if_equal HAVE_LESS, .NotEnoughMoney
 	giveitem LEMONADE
 	iffalse .NotEnoughSpace
-	takemoney $0, 350
-	itemtotext LEMONADE, $0
+	takemoney YOUR_MONEY, 350
+	itemtotext LEMONADE, MEM_BUFFER_0
 	jump .VendItem
 
 .VendItem:
@@ -69,14 +69,13 @@
 	jump .Start
 
 .MenuData:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "FRESH WATER  ¥200@"
 	db "SODA POP     ¥300@"
@@ -83,7 +82,6 @@
 	db "LEMONADE     ¥350@"
 	db "CANCEL@"
 
-
 GoldenrodDeptStore6FLassScript:
 	jumptextfaceplayer GoldenrodDeptStore6FLassText
 
@@ -105,8 +103,8 @@
 	text "Clang! A can of"
 	line "@"
 	text_from_ram StringBuffer3
-	text $55
-	db "popped out!"
+	text_start
+	cont "popped out!"
 	done
 
 GoldenrodVendingNoMoneyText:
@@ -149,7 +147,7 @@
 	para "6F TRANQUIL SQUARE"
 	done
 
-GoldenrodDeptStore6F_MapEventHeader:
+GoldenrodDeptStore6F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStoreB1F.asm
+++ b/maps/GoldenrodDeptStoreB1F.asm
@@ -8,14 +8,14 @@
 	const GOLDENRODDEPTSTOREB1F_BLACK_BELT3
 	const GOLDENRODDEPTSTOREB1F_MACHOP
 
-GoldenrodDeptStoreB1F_MapScriptHeader:
+GoldenrodDeptStoreB1F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_TILES, UnknownScript_0x7d781
-	dbw MAPCALLBACK_NEWMAP, UnknownScript_0x7d7ac
+	callback MAPCALLBACK_TILES, UnknownScript_0x7d781
+	callback MAPCALLBACK_NEWMAP, UnknownScript_0x7d7ac
 
 UnknownScript_0x7d781:
 	checkevent EVENT_RECEIVED_CARD_KEY
@@ -23,7 +23,7 @@
 	jump UnknownScript_0x7d791
 
 UnknownScript_0x7d78a:
-	changeblock $10, $4, $d
+	changeblock 16, 4, $0d ; floor
 	jump UnknownScript_0x7d791
 
 UnknownScript_0x7d791:
@@ -31,15 +31,15 @@
 	iftrue .Layout2
 	checkevent EVENT_GOLDENROD_DEPT_STORE_B1F_LAYOUT_3
 	iftrue .Layout3
-	changeblock $a, $8, $d
+	changeblock 10, 8, $0d ; floor
 	return
 
 .Layout2:
-	changeblock $4, $a, $d
+	changeblock 4, 10, $0d ; floor
 	return
 
 .Layout3:
-	changeblock $a, $c, $d
+	changeblock 10, 12, $0d ; floor
 	return
 
 UnknownScript_0x7d7ac:
@@ -109,7 +109,7 @@
 	text "MACHOKE: Maaacho!"
 	done
 
-GoldenrodDeptStoreB1F_MapEventHeader:
+GoldenrodDeptStoreB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStoreElevator.asm
+++ b/maps/GoldenrodDeptStoreElevator.asm
@@ -1,4 +1,4 @@
-GoldenrodDeptStoreElevator_MapScriptHeader:
+GoldenrodDeptStoreElevator_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -43,7 +43,6 @@
 .Done:
 	end
 
-
 Elevator_0x566e0:
 	db 7 ; floors
 	elevfloor FLOOR_B1F, 2, GOLDENROD_DEPT_STORE_B1F
@@ -55,8 +54,7 @@
 	elevfloor FLOOR_6F,  2, GOLDENROD_DEPT_STORE_6F
 	db -1 ; end
 
-
-GoldenrodDeptStoreElevator_MapEventHeader:
+GoldenrodDeptStoreElevator_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodDeptStoreRoof.asm
+++ b/maps/GoldenrodDeptStoreRoof.asm
@@ -8,23 +8,23 @@
 	const GOLDENRODDEPTSTOREROOF_TEACHER
 	const GOLDENRODDEPTSTOREROOF_BUG_CATCHER
 
-GoldenrodDeptStoreRoof_MapScriptHeader:
+GoldenrodDeptStoreRoof_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_TILES, .CheckSaleChangeBlock
-	dbw MAPCALLBACK_OBJECTS, .CheckSaleChangeClerk
+	callback MAPCALLBACK_TILES, .CheckSaleChangeBlock
+	callback MAPCALLBACK_OBJECTS, .CheckSaleChangeClerk
 
 .CheckSaleChangeBlock:
 	checkflag ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON
-	iftrue .ChangeBlock
+	iftrue .SaleIsOn
 	return
 
-.ChangeBlock:
-	changeblock $0, $2, $3f
-	changeblock $0, $4, $f
+.SaleIsOn:
+	changeblock 0, 2, $3f ; cardboard boxes
+	changeblock 0, 4, $0f ; vendor booth
 	return
 
 .CheckSaleChangeClerk:
@@ -211,7 +211,7 @@
 	line "empty…"
 	done
 
-GoldenrodDeptStoreRoof_MapEventHeader:
+GoldenrodDeptStoreRoof_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodFlowerShop.asm
+++ b/maps/GoldenrodFlowerShop.asm
@@ -2,7 +2,7 @@
 	const GOLDENRODFLOWERSHOP_TEACHER
 	const GOLDENRODFLOWERSHOP_FLORIA
 
-GoldenrodFlowerShop_MapScriptHeader:
+GoldenrodFlowerShop_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -159,7 +159,7 @@
 	line "#MON!"
 	done
 
-GoldenrodFlowerShop_MapEventHeader:
+GoldenrodFlowerShop_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -12,13 +12,13 @@
 	const GOLDENRODGAMECORNER_POKEFAN_M2
 	const GOLDENRODGAMECORNER_POKEFAN_M3
 
-GoldenrodGameCorner_MapScriptHeader:
+GoldenrodGameCorner_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Callback
+	callback MAPCALLBACK_OBJECTS, .Callback
 
 .Callback:
 	checkevent EVENT_BEAT_ELITE_FOUR
@@ -64,15 +64,15 @@
 	loadmenudata GoldenrodGameCornerTMVendorMenuData
 	verticalmenu
 	closewindow
-	if_equal $1, .Thunder
-	if_equal $2, .Blizzard
-	if_equal $3, .FireBlast
+	if_equal 1, .Thunder
+	if_equal 2, .Blizzard
+	if_equal 3, .FireBlast
 	jump GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 
 .Thunder:
 	checkcoins 5500
-	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
-	itemtotext TM_THUNDER, $0
+	if_equal HAVE_LESS, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
+	itemtotext TM_THUNDER, MEM_BUFFER_0
 	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
 	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	giveitem TM_THUNDER
@@ -82,8 +82,8 @@
 
 .Blizzard:
 	checkcoins 5500
-	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
-	itemtotext TM_BLIZZARD, $0
+	if_equal HAVE_LESS, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
+	itemtotext TM_BLIZZARD, MEM_BUFFER_0
 	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
 	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	giveitem TM_BLIZZARD
@@ -93,8 +93,8 @@
 
 .FireBlast:
 	checkcoins 5500
-	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
-	itemtotext TM_FIRE_BLAST, $0
+	if_equal HAVE_LESS, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
+	itemtotext TM_FIRE_BLAST, MEM_BUFFER_0
 	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
 	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	giveitem TM_FIRE_BLAST
@@ -138,16 +138,14 @@
 	closetext
 	end
 
-
 GoldenrodGameCornerTMVendorMenuData:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 15, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "TM25    5500@"
 	db "TM14    5500@"
@@ -154,7 +152,6 @@
 	db "TM38    5500@"
 	db "CANCEL@"
 
-
 GoldenrodGameCornerPrizeMonVendorScript:
 	faceplayer
 	opentext
@@ -168,17 +165,17 @@
 	loadmenudata .MenuDataHeader
 	verticalmenu
 	closewindow
-	if_equal $1, .abra
-	if_equal $2, .cubone
-	if_equal $3, .wobbuffet
+	if_equal 1, .abra
+	if_equal 2, .cubone
+	if_equal 3, .wobbuffet
 	jump GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 
 .abra
 	checkcoins 100
-	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
+	if_equal HAVE_LESS, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
-	pokenamemem ABRA, $0
+	if_equal PARTY_LENGTH, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
+	pokenamemem ABRA, MEM_BUFFER_0
 	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
 	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	waitsfx
@@ -193,10 +190,10 @@
 
 .cubone
 	checkcoins 800
-	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
+	if_equal HAVE_LESS, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
-	pokenamemem CUBONE, $0
+	if_equal PARTY_LENGTH, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
+	pokenamemem CUBONE, MEM_BUFFER_0
 	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
 	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	waitsfx
@@ -211,10 +208,10 @@
 
 .wobbuffet
 	checkcoins 1500
-	if_equal $2, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
+	if_equal HAVE_LESS, GoldenrodGameCornerPrizeVendor_NotEnoughCoinsScript
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
-	pokenamemem WOBBUFFET, $0
+	if_equal PARTY_LENGTH, GoldenrodGameCornerPrizeMonVendor_NoRoomForPrizeScript
+	pokenamemem WOBBUFFET, MEM_BUFFER_0
 	scall GoldenrodGameCornerPrizeVendor_ConfirmPurchaseScript
 	iffalse GoldenrodGameCornerPrizeVendor_CancelPurchaseScript
 	waitsfx
@@ -227,16 +224,14 @@
 	takecoins 1500
 	jump .loop
 
-
 .MenuDataHeader:
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 17 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 17, TEXTBOX_Y - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "ABRA        100@"
 	db "CUBONE      800@"
@@ -243,7 +238,6 @@
 	db "WOBBUFFET  1500@"
 	db "CANCEL@"
 
-
 GoldenrodGameCornerPharmacistScript:
 	faceplayer
 	opentext
@@ -301,7 +295,7 @@
 GoldenrodGameCornerSlotsMachineScript:
 	random 6
 	if_equal 0, GoldenrodGameCornerLuckySlotsMachineScript
-	refreshscreen $0
+	refreshscreen
 	writebyte FALSE
 	special Special_SlotMachine
 	closetext
@@ -308,7 +302,7 @@
 	end
 
 GoldenrodGameCornerLuckySlotsMachineScript:
-	refreshscreen $0
+	refreshscreen
 	writebyte TRUE
 	special Special_SlotMachine
 	closetext
@@ -315,7 +309,7 @@
 	end
 
 GoldenrodGameCornerCardFlipMachineScript:
-	refreshscreen $0
+	refreshscreen
 	special Special_CardFlip
 	closetext
 	end
@@ -442,7 +436,7 @@
 	para "It smells sweet."
 	done
 
-GoldenrodGameCorner_MapEventHeader:
+GoldenrodGameCorner_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -6,7 +6,7 @@
 	const GOLDENRODGYM_BUENA2
 	const GOLDENRODGYM_GYM_GUY
 
-GoldenrodGym_MapScriptHeader:
+GoldenrodGym_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -30,12 +30,12 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x541a5, 0
-	loadtrainer WHITNEY, 1
+	loadtrainer WHITNEY, WHITNEY1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_WHITNEY
 	setevent EVENT_MADE_WHITNEY_CRY
-	setscene $1
+	setscene 1
 	setevent EVENT_BEAT_BEAUTY_VICTORIA
 	setevent EVENT_BEAT_BEAUTY_SAMANTHA
 	setevent EVENT_BEAT_LASS_CARRIE
@@ -112,7 +112,7 @@
 	waitbutton
 	closetext
 	applymovement GOLDENRODGYM_LASS2, BridgetWalksAwayMovement
-	setscene $0
+	setscene 0
 	clearevent EVENT_MADE_WHITNEY_CRY
 	end
 
@@ -171,7 +171,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext WHITNEY, 1, $1
+	trainertotext WHITNEY, WHITNEY1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 BridgetWalksUpMovement:
@@ -379,7 +379,7 @@
 	cont "the ladies here."
 	done
 
-GoldenrodGym_MapEventHeader:
+GoldenrodGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodHappinessRater.asm
+++ b/maps/GoldenrodHappinessRater.asm
@@ -3,7 +3,7 @@
 	const GOLDENRODHAPPINESSRATER_POKEFAN_M
 	const GOLDENRODHAPPINESSRATER_TWIN
 
-GoldenrodHappinessRater_MapScriptHeader:
+GoldenrodHappinessRater_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -13,14 +13,14 @@
 TeacherScript_0x54953:
 	faceplayer
 	opentext
-	special GetFirstPokemonHappiness
+	special Special_GetFirstPokemonHappiness
 	writetext UnknownText_0x549a3
 	buttonsound
-	if_greater_than $f9, UnknownScript_0x54973
-	if_greater_than $c7, UnknownScript_0x54979
-	if_greater_than $95, UnknownScript_0x5497f
-	if_greater_than $63, UnknownScript_0x54985
-	if_greater_than $31, UnknownScript_0x5498b
+	if_greater_than 250 - 1, UnknownScript_0x54973
+	if_greater_than 200 - 1, UnknownScript_0x54979
+	if_greater_than 150 - 1, UnknownScript_0x5497f
+	if_greater_than 100 - 1, UnknownScript_0x54985
+	if_greater_than  50 - 1, UnknownScript_0x5498b
 	jump UnknownScript_0x54991
 
 UnknownScript_0x54973:
@@ -136,7 +136,7 @@
 	cont "acts really glad!"
 	done
 
-GoldenrodHappinessRater_MapEventHeader:
+GoldenrodHappinessRater_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -2,7 +2,7 @@
 	const GOLDENRODMAGNETTRAINSTATION_OFFICER
 	const GOLDENRODMAGNETTRAINSTATION_GENTLEMAN
 
-GoldenrodMagnetTrainStation_MapScriptHeader:
+GoldenrodMagnetTrainStation_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -34,12 +34,12 @@
 	closetext
 	applymovement GOLDENRODMAGNETTRAINSTATION_OFFICER, MovementData_0x55146
 	applymovement PLAYER, MovementData_0x5514f
-	writebyte $0
+	writebyte FALSE
 	special Special_MagnetTrain
 	warpcheck
 	newloadmap MAPSETUP_TRAIN
 	applymovement PLAYER, .MovementBoardTheTrain
-	wait $14
+	wait 20
 	end
 
 .MovementBoardTheTrain:
@@ -164,7 +164,7 @@
 	cont "to KANTO."
 	done
 
-GoldenrodMagnetTrainStation_MapEventHeader:
+GoldenrodMagnetTrainStation_MapEvents:
 	; filler
 	db 0, 0
 
@@ -172,8 +172,8 @@
 	db 4
 	warp_def 8, 17, 5, GOLDENROD_CITY
 	warp_def 9, 17, 5, GOLDENROD_CITY
-	warp_def 6, 5, 4, SAFFRON_TRAIN_STATION
-	warp_def 11, 5, 3, SAFFRON_TRAIN_STATION
+	warp_def 6, 5, 4, SAFFRON_MAGNET_TRAIN_STATION
+	warp_def 11, 5, 3, SAFFRON_MAGNET_TRAIN_STATION
 
 .CoordEvents:
 	db 1
--- a/maps/GoldenrodNameRater.asm
+++ b/maps/GoldenrodNameRater.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const GOLDENRODNAMERATER_NAME_RATER
 
-GoldenrodNameRater_MapScriptHeader:
+GoldenrodNameRater_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 GoldenrodNameRater:
 	faceplayer
 	opentext
-	special SpecialNameRater
+	special Special_NameRater
 	waitbutton
 	closetext
 	end
@@ -22,9 +22,9 @@
 GoldenrodNameRaterRadio:
 	jumpstd radio2
 
-INCLUDE "text/unused_sweet_honey.asm"
+INCLUDE "data/unused/sweet_honey_text.asm"
 
-GoldenrodNameRater_MapEventHeader:
+GoldenrodNameRater_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodPPSpeechHouse.asm
+++ b/maps/GoldenrodPPSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const GOLDENRODPPSPEECHHOUSE_FISHER
 	const GOLDENRODPPSPEECHHOUSE_LASS
 
-GoldenrodPPSpeechHouse_MapScriptHeader:
+GoldenrodPPSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -51,7 +51,7 @@
 	cont "an item."
 	done
 
-GoldenrodPPSpeechHouse_MapEventHeader:
+GoldenrodPPSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodPokeComCenter2FMobile.asm
+++ b/maps/GoldenrodPokeComCenter2FMobile.asm
@@ -3,7 +3,7 @@
 	const GOLDENRODPOKECOMCENTER2FMOBILE_SCIENTIST2
 	const GOLDENRODPOKECOMCENTER2FMOBILE_SCIENTIST3
 
-GoldenrodPokeComCenter2FMobile_MapScriptHeader:
+GoldenrodPokeComCenter2FMobile_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -28,8 +28,8 @@
 	loadmenudata MenuDataHeader_0x62602
 	verticalmenu
 	closewindow
-	if_equal $1, UnknownScript_0x625f0
-	if_equal $2, UnknownScript_0x625f8
+	if_equal 1, UnknownScript_0x625f0
+	if_equal 2, UnknownScript_0x625f8
 	jump UnknownScript_0x62600
 
 UnknownScript_0x625f0:
@@ -48,22 +48,19 @@
 	closetext
 	end
 
-
 MenuDataHeader_0x62602:
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 08, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 15, 8
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
-	db "# つうしん クラブ@" ; # COM CLUB
+	db "# つうしん クラブ@" ; # COM CLUB
 	db "モバイルセンター@" ; MOBILE CENTER
 	db "やめる@" ; QUIT
 
-
 MapGoldenrodPokeComCenter2FMobileSignpost1Script:
 	opentext
 	writetext UnknownText_0x62989
@@ -73,8 +70,8 @@
 	loadmenudata MenuDataHeader_0x6264c
 	verticalmenu
 	closewindow
-	if_equal $1, UnknownScript_0x6263a
-	if_equal $2, UnknownScript_0x62642
+	if_equal 1, UnknownScript_0x6263a
+	if_equal 2, UnknownScript_0x62642
 	jump UnknownScript_0x6264a
 
 UnknownScript_0x6263a:
@@ -93,22 +90,19 @@
 	closetext
 	end
 
-
 MenuDataHeader_0x6264c:
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 08, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 15, 8
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2:
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 3 ; items
-	db "でんわ", $1f,"つかうとき@" ; Use phone
-	db "でんわ", $4a,"つながらないとき@" ; Don't use phone
+	db "でんわ<WO>つかうとき@" ; Use phone
+	db "でんわ<GA>つながらないとき@" ; Don't use phone
 	db "やめる@" ; QUIT
 
-
 MapGoldenrodPokeComCenter2FMobileSignpost2Script:
 	jumptext UnknownText_0x62b26
 
@@ -245,7 +239,7 @@
 	line "OFFICE received an"
 	cont "e-mail. It says…"
 
-	para "<......> <......> <......>"
+	para "<……> <……> <……>"
 
 	para "To the #COM"
 	line "CENTER staff…"
@@ -265,10 +259,10 @@
 	para "the world can link"
 	line "without barriers!"
 
-	para "<......> <......> <......>"
+	para "<……> <……> <……>"
 	done
 
-GoldenrodPokeComCenter2FMobile_MapEventHeader:
+GoldenrodPokeComCenter2FMobile_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodPokecenter1F.asm
+++ b/maps/GoldenrodPokecenter1F.asm
@@ -5,7 +5,7 @@
 	const GOLDENRODPOKECENTER1F_LASS
 	const GOLDENRODPOKECENTER1F_POKEFAN_F
 
-GoldenrodPokecenter1F_MapScriptHeader:
+GoldenrodPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -17,7 +17,7 @@
 
 GoldenrodPokecenter1F_GSBallSceneLeft:
 	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
 	end
 
@@ -25,7 +25,7 @@
 	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	iftrue .cancel
 	playsound SFX_EXIT_BUILDING
-	moveobject GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
+	moveobject GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, 0, 7
 	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	playmusic MUSIC_SHOW_ME_AROUND
@@ -49,7 +49,7 @@
 
 GoldenrodPokecenter1F_GSBallSceneRight:
 	writebyte BATTLETOWERACTION_CHECKMOBILEEVENT
-	special BattleTowerAction
+	special Special_BattleTowerAction
 	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
 	end
 
@@ -57,7 +57,7 @@
 	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	iftrue .cancel
 	playsound SFX_EXIT_BUILDING
-	moveobject GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, $0, $7
+	moveobject GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST, 0, 7
 	disappear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	appear GOLDENRODPOKECENTER1F_LINK_RECEPTIONIST
 	playmusic MUSIC_SHOW_ME_AROUND
@@ -804,7 +804,7 @@
 	line "the EON MAIL."
 	done
 
-GoldenrodPokecenter1F_MapEventHeader:
+GoldenrodPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodUnderground.asm
+++ b/maps/GoldenrodUnderground.asm
@@ -9,15 +9,15 @@
 	const GOLDENRODUNDERGROUND_SUPER_NERD6
 	const GOLDENRODUNDERGROUND_GRANNY
 
-GoldenrodUnderground_MapScriptHeader:
+GoldenrodUnderground_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 3
-	dbw MAPCALLBACK_NEWMAP, .ResetSwitches
-	dbw MAPCALLBACK_TILES, .CheckBasementKey
-	dbw MAPCALLBACK_OBJECTS, .CheckDayOfWeek
+	callback MAPCALLBACK_NEWMAP, .ResetSwitches
+	callback MAPCALLBACK_TILES, .CheckBasementKey
+	callback MAPCALLBACK_OBJECTS, .CheckDayOfWeek
 
 .ResetSwitches:
 	clearevent EVENT_SWITCH_1
@@ -35,7 +35,7 @@
 	clearevent EVENT_SWITCH_12
 	clearevent EVENT_SWITCH_13
 	clearevent EVENT_SWITCH_14
-	writebyte $0
+	writebyte 0
 	copyvartobyte UndergroundSwitchPositions
 	return
 
@@ -45,7 +45,7 @@
 	return
 
 .LockBasementDoor:
-	changeblock $12, $6, $3d
+	changeblock 18, 6, $3d ; locked door
 	return
 
 .CheckDayOfWeek:
@@ -192,12 +192,12 @@
 .DoHaircut:
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
 	iftrue .AlreadyGotHaircut
-	special PlaceMoneyTopRight
+	special Special_PlaceMoneyTopRight
 	writetext UnknownText_0x7c5f9
 	yesorno
 	iffalse .Refused
-	checkmoney $0, 500
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 500
+	if_equal HAVE_LESS, .NotEnoughMoney
 	writetext UnknownText_0x7c69a
 	buttonsound
 	special Special_YoungerHaircutBrother
@@ -227,15 +227,15 @@
 	jump .then
 
 .then
-	takemoney $0, 500
-	special PlaceMoneyTopRight
+	takemoney YOUR_MONEY, 500
+	special Special_PlaceMoneyTopRight
 	writetext UnknownText_0x7c6b8
 	waitbutton
 	closetext
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	special RestartMapMusic
 	opentext
 	writetext UnknownText_0x7c6d8
@@ -275,12 +275,12 @@
 .DoHaircut:
 	checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
 	iftrue .AlreadyGotHaircut
-	special PlaceMoneyTopRight
+	special Special_PlaceMoneyTopRight
 	writetext UnknownText_0x7c75c
 	yesorno
 	iffalse .Refused
-	checkmoney $0, 300
-	if_equal $2, .NotEnoughMoney
+	checkmoney YOUR_MONEY, 300
+	if_equal HAVE_LESS, .NotEnoughMoney
 	writetext UnknownText_0x7c7f1
 	buttonsound
 	special Special_OlderHaircutBrother
@@ -310,15 +310,15 @@
 	jump .then
 
 .then
-	takemoney $0, 300
-	special PlaceMoneyTopRight
+	takemoney YOUR_MONEY, 300
+	special Special_PlaceMoneyTopRight
 	writetext UnknownText_0x7c80e
 	waitbutton
 	closetext
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	special RestartMapMusic
 	opentext
 	writetext UnknownText_0x7c82a
@@ -349,7 +349,7 @@
 
 UnknownScript_0x7c2bb:
 	writetext HaircutBrosText_SlightlyHappier
-	special PlayCurMonCry
+	special Special_PlayCurMonCry
 	waitbutton
 	closetext
 	end
@@ -356,7 +356,7 @@
 
 UnknownScript_0x7c2c4:
 	writetext HaircutBrosText_Happier
-	special PlayCurMonCry
+	special Special_PlayCurMonCry
 	waitbutton
 	closetext
 	end
@@ -363,7 +363,7 @@
 
 UnknownScript_0x7c2cd:
 	writetext HaircutBrosText_MuchHappier
-	special PlayCurMonCry
+	special Special_PlayCurMonCry
 	waitbutton
 	closetext
 	end
@@ -384,7 +384,7 @@
 	writetext UnknownText_0x7c5d6
 	waitbutton
 	closetext
-	changeblock $12, $6, $2e
+	changeblock 18, 6, $2e ; unlocked door
 	reloadmappart
 	closetext
 	setevent EVENT_USED_BASEMENT_KEY
@@ -409,13 +409,13 @@
 	jumptext UnknownText_0x7c91a
 
 GoldenrodUndergroundHiddenParlyzHeal:
-	dwb EVENT_GOLDENROD_UNDERGROUND_HIDDEN_PARLYZ_HEAL, PARLYZ_HEAL
+	hiddenitem EVENT_GOLDENROD_UNDERGROUND_HIDDEN_PARLYZ_HEAL, PARLYZ_HEAL
 
 GoldenrodUndergroundHiddenSuperPotion:
-	dwb EVENT_GOLDENROD_UNDERGROUND_HIDDEN_SUPER_POTION, SUPER_POTION
+	hiddenitem EVENT_GOLDENROD_UNDERGROUND_HIDDEN_SUPER_POTION, SUPER_POTION
 
 GoldenrodUndergroundHiddenAntidote:
-	dwb EVENT_GOLDENROD_UNDERGROUND_HIDDEN_ANTIDOTE, ANTIDOTE
+	hiddenitem EVENT_GOLDENROD_UNDERGROUND_HIDDEN_ANTIDOTE, ANTIDOTE
 
 SupernerdEricSeenText:
 	text "I got booted out"
@@ -646,7 +646,7 @@
 	line "THIS POINT"
 	done
 
-GoldenrodUnderground_MapEventHeader:
+GoldenrodUnderground_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodUndergroundSwitchRoomEntrances.asm
+++ b/maps/GoldenrodUndergroundSwitchRoomEntrances.asm
@@ -1,3 +1,4 @@
+; block ids
 UNDERGROUND_DOOR_CLOSED1 EQU $2a
 UNDERGROUND_DOOR_CLOSED2 EQU $3e
 UNDERGROUND_DOOR_CLOSED3 EQU $3f
@@ -43,7 +44,7 @@
 	const GOLDENRODUNDERGROUNDSWITCHROOMENTRANCES_POKE_BALL2
 	const GOLDENRODUNDERGROUNDSWITCHROOMENTRANCES_SILVER
 
-GoldenrodUndergroundSwitchRoomEntrances_MapScriptHeader:
+GoldenrodUndergroundSwitchRoomEntrances_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -51,7 +52,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .UpdateDoorPositions
+	callback MAPCALLBACK_TILES, .UpdateDoorPositions
 
 .DummyScene0:
 	end
@@ -630,10 +631,10 @@
 	itemball FULL_HEAL
 
 GoldenrodUndergroundSwitchRoomEntrancesHiddenMaxPotion:
-	dwb EVENT_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES_HIDDEN_MAX_POTION, MAX_POTION
 
 GoldenrodUndergroundSwitchRoomEntrancesHiddenRevive:
-	dwb EVENT_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES_HIDDEN_REVIVE, REVIVE
+	hiddenitem EVENT_GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES_HIDDEN_REVIVE, REVIVE
 
 UndergroundSilverApproachMovement1:
 	step DOWN
@@ -929,7 +930,7 @@
 	line "EMERGENCY."
 	done
 
-GoldenrodUndergroundSwitchRoomEntrances_MapEventHeader:
+GoldenrodUndergroundSwitchRoomEntrances_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GoldenrodUndergroundWarehouse.asm
+++ b/maps/GoldenrodUndergroundWarehouse.asm
@@ -7,13 +7,13 @@
 	const GOLDENRODUNDERGROUNDWAREHOUSE_POKE_BALL2
 	const GOLDENRODUNDERGROUNDWAREHOUSE_POKE_BALL3
 
-GoldenrodUndergroundWarehouse_MapScriptHeader:
+GoldenrodUndergroundWarehouse_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .ResetSwitches
+	callback MAPCALLBACK_NEWMAP, .ResetSwitches
 
 .ResetSwitches:
 	clearevent EVENT_SWITCH_1
@@ -31,7 +31,7 @@
 	clearevent EVENT_SWITCH_12
 	clearevent EVENT_SWITCH_13
 	clearevent EVENT_SWITCH_14
-	writebyte $0
+	writebyte 0
 	copyvartobyte UndergroundSwitchPositions
 	return
 
@@ -210,7 +210,7 @@
 	line "MON nationwide!"
 	done
 
-GoldenrodUndergroundWarehouse_MapEventHeader:
+GoldenrodUndergroundWarehouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/GuideGentsHouse.asm
+++ b/maps/GuideGentsHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const GUIDEGENTSHOUSE_GRAMPS
 
-GuideGentsHouse_MapScriptHeader:
+GuideGentsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -27,7 +27,7 @@
 	line "with kindness!"
 	done
 
-GuideGentsHouse_MapEventHeader:
+GuideGentsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/HallOfFame.asm
+++ b/maps/HallOfFame.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const HALLOFFAME_LANCE
 
-HallOfFame_MapScriptHeader:
+HallOfFame_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .EnterHallOfFame
@@ -28,10 +28,10 @@
 	closetext
 	spriteface HALLOFFAME_LANCE, UP
 	applymovement PLAYER, HallOfFame_SlowlyApproachMachine
-	setscene $1
+	setscene 1
 	pause 15
-	writebyte 2 ; Machine is in the Hall of Fame
-	special HealMachineAnim
+	writebyte HEALMACHINE_HALL_OF_FAME
+	special Special_HealMachineAnim
 	setevent EVENT_BEAT_ELITE_FOUR
 	setevent EVENT_TELEPORT_GUY
 	setevent EVENT_RIVAL_SPROUT_TOWER
@@ -38,7 +38,7 @@
 	clearevent EVENT_RED_IN_MT_SILVER
 	setevent EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
 	clearevent EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
-	setmapscene SPROUT_TOWER_3F, $1
+	setmapscene SPROUT_TOWER_3F, 1
 	special HealParty
 	checkevent EVENT_GOT_SS_TICKET_FROM_ELM
 	iftrue .SkipPhoneCall
@@ -110,7 +110,7 @@
 	line "as CHAMPIONS!"
 	done
 
-HallOfFame_MapEventHeader:
+HallOfFame_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IcePath1F.asm
+++ b/maps/IcePath1F.asm
@@ -3,7 +3,7 @@
 	const ICEPATH1F_POKE_BALL2
 	const ICEPATH1F_POKE_BALL3
 
-IcePath1F_MapScriptHeader:
+IcePath1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 IcePath1FProtein:
 	itemball PROTEIN
 
-IcePath1F_MapEventHeader:
+IcePath1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IcePathB1F.asm
+++ b/maps/IcePathB1F.asm
@@ -5,13 +5,13 @@
 	const ICEPATHB1F_BOULDER4
 	const ICEPATHB1F_POKE_BALL
 
-IcePathB1F_MapScriptHeader:
+IcePathB1F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_CMDQUEUE, .SetUpStoneTable
+	callback MAPCALLBACK_CMDQUEUE, .SetUpStoneTable
 
 .SetUpStoneTable:
 	writecmdqueue .CommandQueue
@@ -18,8 +18,7 @@
 	return
 
 .CommandQueue:
-	dbw CMDQUEUE_STONETABLE, .StoneTable ; check if any stones are sitting on a warp
-	dw 0 ; filler
+	cmdqueue CMDQUEUE_STONETABLE, .StoneTable ; check if any stones are sitting on a warp
 
 .StoneTable:
 	stonetable 3, ICEPATHB1F_BOULDER1, .Boulder1
@@ -26,7 +25,7 @@
 	stonetable 4, ICEPATHB1F_BOULDER2, .Boulder2
 	stonetable 5, ICEPATHB1F_BOULDER3, .Boulder3
 	stonetable 6, ICEPATHB1F_BOULDER4, .Boulder4
-	db -1
+	db -1 ; end
 
 .Boulder1:
 	disappear ICEPATHB1F_BOULDER1
@@ -62,7 +61,6 @@
 	earthquake 80
 	end
 
-
 IcePathB1FBoulder:
 	jumpstd strengthboulder
 
@@ -70,16 +68,14 @@
 	itemball IRON
 
 IcePathB1FHiddenMaxPotion:
-	dwb EVENT_ICE_PATH_B1F_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_ICE_PATH_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
-
 IcePathBoulderFellThroughText:
 	text "The boulder fell"
 	line "through."
 	done
 
-
-IcePathB1F_MapEventHeader:
+IcePathB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IcePathB2FBlackthornSide.asm
+++ b/maps/IcePathB2FBlackthornSide.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ICEPATHB2FBLACKTHORNSIDE_POKE_BALL
 
-IcePathB2FBlackthornSide_MapScriptHeader:
+IcePathB2FBlackthornSide_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -12,10 +12,9 @@
 	itemball TM_REST
 
 IcePathB2FBlackthornSideHiddenIceHeal:
-	dwb EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_HIDDEN_ICE_HEAL, ICE_HEAL
+	hiddenitem EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_HIDDEN_ICE_HEAL, ICE_HEAL
 
-
-IcePathB2FBlackthornSide_MapEventHeader:
+IcePathB2FBlackthornSide_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IcePathB2FMahoganySide.asm
+++ b/maps/IcePathB2FMahoganySide.asm
@@ -6,7 +6,7 @@
 	const ICEPATHB2FMAHOGANYSIDE_POKE_BALL1
 	const ICEPATHB2FMAHOGANYSIDE_POKE_BALL2
 
-IcePathB2FMahoganySide_MapScriptHeader:
+IcePathB2FMahoganySide_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -13,8 +13,8 @@
 .MapCallbacks:
 	db 0
 
-BoulderScript_0x7e5a3:
-	jumptext UnknownText_0x7e5ad
+IcePathB2FMahoganySideBoulder:
+	jumptext IcePathB2FMahoganySideBoulderText
 
 IcePathB2FMahoganySideFullHeal:
 	itemball FULL_HEAL
@@ -23,15 +23,14 @@
 	itemball MAX_POTION
 
 IcePathB2FMahoganySideHiddenCarbos:
-	dwb EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_HIDDEN_CARBOS, CARBOS
+	hiddenitem EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_HIDDEN_CARBOS, CARBOS
 
-
-UnknownText_0x7e5ad:
+IcePathB2FMahoganySideBoulderText:
 	text "It's immovably"
 	line "imbedded in ice."
 	done
 
-IcePathB2FMahoganySide_MapEventHeader:
+IcePathB2FMahoganySide_MapEvents:
 	; filler
 	db 0, 0
 
@@ -53,9 +52,9 @@
 
 .ObjectEvents:
 	db 6
-	object_event 11, 3, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1A
-	object_event 4, 7, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2A
-	object_event 3, 12, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3A
-	object_event 12, 13, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4A
+	object_event 11, 3, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IcePathB2FMahoganySideBoulder, EVENT_BOULDER_IN_ICE_PATH_1A
+	object_event 4, 7, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IcePathB2FMahoganySideBoulder, EVENT_BOULDER_IN_ICE_PATH_2A
+	object_event 3, 12, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IcePathB2FMahoganySideBoulder, EVENT_BOULDER_IN_ICE_PATH_3A
+	object_event 12, 13, SPRITE_BOULDER, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IcePathB2FMahoganySideBoulder, EVENT_BOULDER_IN_ICE_PATH_4A
 	object_event 8, 9, SPRITE_POKE_BALL, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, IcePathB2FMahoganySideFullHeal, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_FULL_HEAL
 	object_event 0, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, IcePathB2FMahoganySideMaxPotion, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
--- a/maps/IcePathB3F.asm
+++ b/maps/IcePathB3F.asm
@@ -2,7 +2,7 @@
 	const ICEPATHB3F_POKE_BALL
 	const ICEPATHB3F_ROCK
 
-IcePathB3F_MapScriptHeader:
+IcePathB3F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,7 +15,7 @@
 IcePathB3FRock:
 	jumpstd smashrock
 
-IcePathB3F_MapEventHeader:
+IcePathB3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -11,13 +11,13 @@
 	const ILEXFOREST_POKE_BALL3
 	const ILEXFOREST_POKE_BALL4
 
-IlexForest_MapScriptHeader:
+IlexForest_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .FarfetchdCallback
+	callback MAPCALLBACK_OBJECTS, .FarfetchdCallback
 
 .FarfetchdCallback:
 	checkevent EVENT_GOT_HM01_CUT
@@ -37,52 +37,52 @@
 	return
 
 .PositionOne:
-	moveobject ILEXFOREST_FARFETCHD, $e, $1f
+	moveobject ILEXFOREST_FARFETCHD, 14, 31
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionTwo:
-	moveobject ILEXFOREST_FARFETCHD, $f, $19
+	moveobject ILEXFOREST_FARFETCHD, 15, 25
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionThree:
-	moveobject ILEXFOREST_FARFETCHD, $14, $18
+	moveobject ILEXFOREST_FARFETCHD, 20, 24
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionFour:
-	moveobject ILEXFOREST_FARFETCHD, $1d, $16
+	moveobject ILEXFOREST_FARFETCHD, 29, 22
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionFive:
-	moveobject ILEXFOREST_FARFETCHD, $1c, $1f
+	moveobject ILEXFOREST_FARFETCHD, 28, 31
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionSix:
-	moveobject ILEXFOREST_FARFETCHD, $18, $23
+	moveobject ILEXFOREST_FARFETCHD, 24, 35
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionSeven:
-	moveobject ILEXFOREST_FARFETCHD, $16, $1f
+	moveobject ILEXFOREST_FARFETCHD, 22, 31
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionEight:
-	moveobject ILEXFOREST_FARFETCHD, $f, $1d
+	moveobject ILEXFOREST_FARFETCHD, 15, 29
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionNine:
-	moveobject ILEXFOREST_FARFETCHD, $a, $23
+	moveobject ILEXFOREST_FARFETCHD, 10, 35
 	appear ILEXFOREST_FARFETCHD
 	return
 
 .PositionTen:
-	moveobject ILEXFOREST_FARFETCHD, $6, $1c
+	moveobject ILEXFOREST_FARFETCHD, 6, 28
 	appear ILEXFOREST_FARFETCHD
 	return
 
@@ -125,7 +125,7 @@
 	waitbutton
 	closetext
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos1_Pos2
-	moveobject ILEXFOREST_FARFETCHD, $f, $19
+	moveobject ILEXFOREST_FARFETCHD, 15, 25
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 2
@@ -135,7 +135,7 @@
 	scall .CryAndCheckFacing
 	if_equal DOWN, .Position2_Down
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos2_Pos3
-	moveobject ILEXFOREST_FARFETCHD, $14, $18
+	moveobject ILEXFOREST_FARFETCHD, 20, 24
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 3
@@ -143,7 +143,7 @@
 
 .Position2_Down:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos2_Pos8
-	moveobject ILEXFOREST_FARFETCHD, $f, $1d
+	moveobject ILEXFOREST_FARFETCHD, 15, 29
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 8
@@ -153,7 +153,7 @@
 	scall .CryAndCheckFacing
 	if_equal LEFT, .Position3_Left
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos3_Pos4
-	moveobject ILEXFOREST_FARFETCHD, $1d, $16
+	moveobject ILEXFOREST_FARFETCHD, 29, 22
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 4
@@ -161,7 +161,7 @@
 
 .Position3_Left:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos3_Pos2
-	moveobject ILEXFOREST_FARFETCHD, $f, $19
+	moveobject ILEXFOREST_FARFETCHD, 15, 25
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 2
@@ -171,7 +171,7 @@
 	scall .CryAndCheckFacing
 	if_equal UP, .Position4_Up
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos4_Pos5
-	moveobject ILEXFOREST_FARFETCHD, $1c, $1f
+	moveobject ILEXFOREST_FARFETCHD, 28, 31
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 5
@@ -179,7 +179,7 @@
 
 .Position4_Up:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos4_Pos3
-	moveobject ILEXFOREST_FARFETCHD, $14, $18
+	moveobject ILEXFOREST_FARFETCHD, 20, 24
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 3
@@ -191,7 +191,7 @@
 	if_equal LEFT, .Position5_Left
 	if_equal RIGHT, .Position5_Right
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos5_Pos6
-	moveobject ILEXFOREST_FARFETCHD, $18, $23
+	moveobject ILEXFOREST_FARFETCHD, 24, 35
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 6
@@ -199,7 +199,7 @@
 
 .Position5_Left:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetchd_Pos5_Pos7
-	moveobject ILEXFOREST_FARFETCHD, $16, $1f
+	moveobject ILEXFOREST_FARFETCHD, 22, 31
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 7
@@ -207,7 +207,7 @@
 
 .Position5_Up:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos5_Pos4_Up
-	moveobject ILEXFOREST_FARFETCHD, $1d, $16
+	moveobject ILEXFOREST_FARFETCHD, 29, 22
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 4
@@ -215,7 +215,7 @@
 
 .Position5_Right:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos5_Pos4_Right
-	moveobject ILEXFOREST_FARFETCHD, $1d, $16
+	moveobject ILEXFOREST_FARFETCHD, 29, 22
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 4
@@ -225,7 +225,7 @@
 	scall .CryAndCheckFacing
 	if_equal RIGHT, .Position6_Right
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos6_Pos7
-	moveobject ILEXFOREST_FARFETCHD, $16, $1f
+	moveobject ILEXFOREST_FARFETCHD, 22, 31
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 7
@@ -233,7 +233,7 @@
 
 .Position6_Right:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos6_Pos5
-	moveobject ILEXFOREST_FARFETCHD, $1c, $1f
+	moveobject ILEXFOREST_FARFETCHD, 28, 31
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 5
@@ -244,7 +244,7 @@
 	if_equal DOWN, .Position7_Down
 	if_equal LEFT, .Position7_Left
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos7_Pos8
-	moveobject ILEXFOREST_FARFETCHD, $f, $1d
+	moveobject ILEXFOREST_FARFETCHD, 15, 29
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 8
@@ -252,7 +252,7 @@
 
 .Position7_Left:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos7_Pos6
-	moveobject ILEXFOREST_FARFETCHD, $18, $23
+	moveobject ILEXFOREST_FARFETCHD, 24, 35
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 6
@@ -260,7 +260,7 @@
 
 .Position7_Down:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos7_Pos5
-	moveobject ILEXFOREST_FARFETCHD, $1c, $1f
+	moveobject ILEXFOREST_FARFETCHD, 28, 31
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 5
@@ -272,7 +272,7 @@
 	if_equal LEFT, .Position8_Left
 	if_equal RIGHT, .Position8_Right
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos8_Pos9
-	moveobject ILEXFOREST_FARFETCHD, $a, $23
+	moveobject ILEXFOREST_FARFETCHD, 10, 35
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 9
@@ -280,7 +280,7 @@
 
 .Position8_Right:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos8_Pos7
-	moveobject ILEXFOREST_FARFETCHD, $16, $1f
+	moveobject ILEXFOREST_FARFETCHD, 22, 31
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 7
@@ -289,7 +289,7 @@
 .Position8_Up:
 .Position8_Left:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos8_Pos2
-	moveobject ILEXFOREST_FARFETCHD, $f, $19
+	moveobject ILEXFOREST_FARFETCHD, 15, 25
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 2
@@ -300,7 +300,7 @@
 	if_equal DOWN, .Position9_Down
 	if_equal RIGHT, .Position9_Right
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos9_Pos10
-	moveobject ILEXFOREST_FARFETCHD, $6, $1c
+	moveobject ILEXFOREST_FARFETCHD, 6, 28
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 10
@@ -311,7 +311,7 @@
 
 .Position9_Right:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos9_Pos8_Right
-	moveobject ILEXFOREST_FARFETCHD, $f, $1d
+	moveobject ILEXFOREST_FARFETCHD, 15, 29
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 8
@@ -319,7 +319,7 @@
 
 .Position9_Down:
 	applymovement ILEXFOREST_FARFETCHD, MovementData_Farfetched_Pos9_Pos8_Down
-	moveobject ILEXFOREST_FARFETCHD, $f, $1d
+	moveobject ILEXFOREST_FARFETCHD, 15, 29
 	disappear ILEXFOREST_FARFETCHD
 	appear ILEXFOREST_FARFETCHD
 	loadvar FarfetchdPosition, 8
@@ -414,15 +414,13 @@
 	itemball ETHER
 
 IlexForestHiddenEther:
-	dwb EVENT_ILEX_FOREST_HIDDEN_ETHER, ETHER
+	hiddenitem EVENT_ILEX_FOREST_HIDDEN_ETHER, ETHER
 
-
 IlexForestHiddenSuperPotion:
-	dwb EVENT_ILEX_FOREST_HIDDEN_SUPER_POTION, SUPER_POTION
+	hiddenitem EVENT_ILEX_FOREST_HIDDEN_SUPER_POTION, SUPER_POTION
 
-
 IlexForestHiddenFullHeal:
-	dwb EVENT_ILEX_FOREST_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_ILEX_FOREST_HIDDEN_FULL_HEAL, FULL_HEAL
 
 IlexForestBoulder:
 ; unused
@@ -472,7 +470,7 @@
 	startbattle
 	reloadmapafterbattle
 	pause 20
-	special CheckCaughtCelebi
+	special Special_CheckCaughtCelebi
 	iffalse .DidntCatchCelebi
 	appear ILEXFOREST_KURT
 	applymovement ILEXFOREST_KURT, MovementData_0x6ef4e
@@ -939,7 +937,7 @@
 	cont "places too."
 	done
 
-IlexForest_MapEventHeader:
+IlexForest_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IlexForestAzaleaGate.asm
+++ b/maps/IlexForestAzaleaGate.asm
@@ -2,7 +2,7 @@
 	const ILEXFORESTAZALEAGATE_OFFICER
 	const ILEXFORESTAZALEAGATE_GRANNY
 
-IlexForestAzaleaGate_MapScriptHeader:
+IlexForestAzaleaGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -30,7 +30,7 @@
 	line "mischief!"
 	done
 
-IlexForestAzaleaGate_MapEventHeader:
+IlexForestAzaleaGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/IndigoPlateauPokecenter1F.asm
+++ b/maps/IndigoPlateauPokecenter1F.asm
@@ -6,7 +6,7 @@
 	const INDIGOPLATEAUPOKECENTER1F_GRAMPS
 	const INDIGOPLATEAUPOKECENTER1F_ABRA
 
-IndigoPlateauPokecenter1F_MapScriptHeader:
+IndigoPlateauPokecenter1F_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -13,18 +13,18 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .PrepareElite4
+	callback MAPCALLBACK_NEWMAP, .PrepareElite4
 
 .DummyScene:
 	end
 
 .PrepareElite4:
-	setmapscene WILLS_ROOM, $0
-	setmapscene KOGAS_ROOM, $0
-	setmapscene BRUNOS_ROOM, $0
-	setmapscene KARENS_ROOM, $0
-	setmapscene LANCES_ROOM, $0
-	setmapscene HALL_OF_FAME, $0
+	setmapscene WILLS_ROOM, 0
+	setmapscene KOGAS_ROOM, 0
+	setmapscene BRUNOS_ROOM, 0
+	setmapscene KARENS_ROOM, 0
+	setmapscene LANCES_ROOM, 0
+	setmapscene HALL_OF_FAME, 0
 	clearevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
 	clearevent EVENT_WILLS_ROOM_EXIT_OPEN
 	clearevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
@@ -54,7 +54,7 @@
 	if_equal THURSDAY, PlateauRivalScriptDone
 	if_equal FRIDAY, PlateauRivalScriptDone
 	if_equal SATURDAY, PlateauRivalScriptDone
-	moveobject INDIGOPLATEAUPOKECENTER1F_SILVER, $11, $9
+	moveobject INDIGOPLATEAUPOKECENTER1F_SILVER, 17, 9
 	appear INDIGOPLATEAUPOKECENTER1F_SILVER
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
@@ -130,7 +130,7 @@
 	spriteface PLAYER, DOWN
 	applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalLeavesMovement
 	disappear INDIGOPLATEAUPOKECENTER1F_SILVER
-	setscene $0
+	setscene 0
 	playmapmusic
 	setflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
 PlateauRivalScriptDone:
@@ -158,9 +158,9 @@
 	waitbutton
 	closetext
 	playsound SFX_WARP_TO
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
-	warp NEW_BARK_TOWN, $d, $6
+	warp NEW_BARK_TOWN, 13, 6
 	end
 
 .No:
@@ -302,7 +302,7 @@
 	text "ABRA: Aabra…"
 	done
 
-IndigoPlateauPokecenter1F_MapEventHeader:
+IndigoPlateauPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/KarensRoom.asm
+++ b/maps/KarensRoom.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const KARENSROOM_KAREN
 
-KarensRoom_MapScriptHeader:
+KarensRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .LockDoor
@@ -9,7 +9,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .KarensRoomDoors
+	callback MAPCALLBACK_TILES, .KarensRoomDoors
 
 .LockDoor:
 	priorityjump .KarensDoorLocksBehindYou
@@ -20,24 +20,24 @@
 
 .KarensRoomDoors:
 	checkevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
-	iffalse .KeepDoorsClosed
-	changeblock $4, $e, $2a
-.KeepDoorsClosed:
+	iffalse .KeepEntranceOpen
+	changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
 	checkevent EVENT_KARENS_ROOM_EXIT_OPEN
-	iffalse .OpenDoors
-	changeblock $4, $2, $16
-.OpenDoors:
+	iffalse .KeepExitClosed
+	changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
 	return
 
 .KarensDoorLocksBehindYou:
-	applymovement PLAYER, MovementData_0x180c22
+	applymovement PLAYER, KarensMovementData_0x18078e
 	refreshscreen $86
 	playsound SFX_STRENGTH
 	earthquake 80
-	changeblock $4, $e, $2a
+	changeblock 4, 14, $2a ; wall
 	reloadmappart
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
 	waitsfx
 	end
@@ -46,12 +46,12 @@
 	faceplayer
 	opentext
 	checkevent EVENT_BEAT_ELITE_4_KAREN
-	iftrue UnknownScript_0x180c1c
+	iftrue KarenScript_AfterBattle
 	writetext KarenScript_KarenBeforeText
 	waitbutton
 	closetext
 	winlosstext KarenScript_KarenBeatenText, 0
-	loadtrainer KAREN, 1
+	loadtrainer KAREN, KAREN1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_KAREN
@@ -60,7 +60,7 @@
 	waitbutton
 	closetext
 	playsound SFX_ENTER_DOOR
-	changeblock $4, $2, $16
+	changeblock 4, 2, $16 ; open door
 	reloadmappart
 	closetext
 	setevent EVENT_KARENS_ROOM_EXIT_OPEN
@@ -67,13 +67,13 @@
 	waitsfx
 	end
 
-UnknownScript_0x180c1c:
+KarenScript_AfterBattle:
 	writetext KarenScript_KarenDefeatText
 	waitbutton
 	closetext
 	end
 
-MovementData_0x180c22:
+KarensMovementData_0x18078e:
 	step UP
 	step UP
 	step UP
@@ -132,7 +132,7 @@
 	line "PION is waiting."
 	done
 
-KarensRoom_MapEventHeader:
+KarensRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/KogasRoom.asm
+++ b/maps/KogasRoom.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const KOGASROOM_KOGA
 
-KogasRoom_MapScriptHeader:
+KogasRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .LockDoor
@@ -9,7 +9,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .KogasRoomDoors
+	callback MAPCALLBACK_TILES, .KogasRoomDoors
 
 .LockDoor:
 	priorityjump .KogasDoorLocksBehindYou
@@ -20,24 +20,24 @@
 
 .KogasRoomDoors:
 	checkevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
-	iffalse .KeepDoorsClosed
-	changeblock $4, $e, $2a
-.KeepDoorsClosed:
+	iffalse .KeepEntranceOpen
+	changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
 	checkevent EVENT_KOGAS_ROOM_EXIT_OPEN
-	iffalse .OpenDoors
-	changeblock $4, $2, $16
-.OpenDoors:
+	iffalse .KeepExitClosed
+	changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
 	return
 
 .KogasDoorLocksBehindYou:
-	applymovement PLAYER, MovementData_0x18078e
+	applymovement PLAYER, KogasMovementData_0x18078e
 	refreshscreen $86
 	playsound SFX_STRENGTH
 	earthquake 80
-	changeblock $4, $e, $2a
+	changeblock 4, 14, $2a ; wall
 	reloadmappart
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
 	waitsfx
 	end
@@ -46,12 +46,12 @@
 	faceplayer
 	opentext
 	checkevent EVENT_BEAT_ELITE_4_KOGA
-	iftrue UnknownScript_0x180788
+	iftrue KogaScript_AfterBattle
 	writetext KogaScript_KogaBeforeText
 	waitbutton
 	closetext
 	winlosstext KogaScript_KogaBeatenText, 0
-	loadtrainer KOGA, 1
+	loadtrainer KOGA, KOGA1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_KOGA
@@ -60,7 +60,7 @@
 	waitbutton
 	closetext
 	playsound SFX_ENTER_DOOR
-	changeblock $4, $2, $16
+	changeblock 4, 2, $16 ; open door
 	reloadmappart
 	closetext
 	setevent EVENT_KOGAS_ROOM_EXIT_OPEN
@@ -67,13 +67,13 @@
 	waitsfx
 	end
 
-UnknownScript_0x180788:
+KogaScript_AfterBattle:
 	writetext KogaScript_KogaDefeatText
 	waitbutton
 	closetext
 	end
 
-MovementData_0x18078e:
+KogasMovementData_0x18078e:
 	step UP
 	step UP
 	step UP
@@ -129,7 +129,7 @@
 	cont "abilities to test!"
 	done
 
-KogasRoom_MapEventHeader:
+KogasRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/KrissHouse1F.asm
+++ b/maps/KrissHouse1F.asm
@@ -5,7 +5,7 @@
 	const KRISSHOUSE1F_MOM4
 	const KRISSHOUSE1F_POKEFAN_F
 
-KrissHouse1F_MapScriptHeader:
+KrissHouse1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -38,12 +38,12 @@
 	opentext
 	writetext UnknownText_0x7a604
 	buttonsound
-	stringtotext GearName, $1
+	stringtotext GearName, MEM_BUFFER_1
 	scall UnknownScript_0x7a57e
 	setflag ENGINE_POKEGEAR
 	setflag ENGINE_PHONE_CARD
 	addcellnum PHONE_MOM
-	setscene $1
+	setscene 1
 	setevent EVENT_KRISS_HOUSE_MOM_1
 	clearevent EVENT_KRISS_HOUSE_MOM_2
 	writetext UnknownText_0x7a6bd
@@ -385,7 +385,7 @@
 	line "rolling too!"
 	done
 
-KrissHouse1F_MapEventHeader:
+KrissHouse1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -4,54 +4,53 @@
 	const KRISSHOUSE2F_DOLL_2
 	const KRISSHOUSE2F_BIG_DOLL
 
-KrissHouse2F_MapScriptHeader:
+KrissHouse2F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .InitializeRoom
-	dbw MAPCALLBACK_TILES, .SetSpawn
+	callback MAPCALLBACK_NEWMAP, .InitializeRoom
+	callback MAPCALLBACK_TILES, .SetSpawn
 
+; unused
 .Null:
 	end
 
 .InitializeRoom:
-	special ToggleDecorationsVisibility
+	special Special_ToggleDecorationsVisibility
 	setevent EVENT_IN_YOUR_ROOM
 	checkevent EVENT_INITIALIZED_EVENTS
-	iftrue .SkipInizialization
+	iftrue .SkipInitialization
 	jumpstd initializeevents
 	return
 
-.SkipInizialization:
+.SkipInitialization:
 	return
 
 .SetSpawn:
-	special ToggleMaptileDecorations
+	special Special_ToggleMaptileDecorations
 	return
 
-
 	db 0, 0, 0 ; filler
 
-
 Doll1:
-	describedecoration 1
+	describedecoration DECODESC_LEFT_DOLL
 
 Doll2:
-	describedecoration 2
+	describedecoration DECODESC_RIGHT_DOLL
 
 BigDoll:
-	describedecoration 3
+	describedecoration DECODESC_BIG_DOLL
 
 GameConsole:
-	describedecoration 4
+	describedecoration DECODESC_CONSOLE
 
 KrissHousePoster:
-	dw EVENT_KRISS_ROOM_POSTER, .Script
+	conditional_event EVENT_KRISS_ROOM_POSTER, .Script
 
 .Script:
-	describedecoration 0
+	describedecoration DECODESC_POSTER
 
 KrissHouseRadio:
 	checkevent EVENT_GOT_A_POKEMON_FROM_ELM
@@ -93,7 +92,7 @@
 	closetext
 	end
 .Warp:
-	warp NONE, $0, $0
+	warp NONE, 0, 0
 	end
 
 KrisRadioText1:
@@ -116,7 +115,7 @@
 	line "#MON CHANNEL…"
 	done
 
-KrissHouse2F_MapEventHeader:
+KrissHouse2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/KrissNeighborsHouse.asm
+++ b/maps/KrissNeighborsHouse.asm
@@ -2,7 +2,7 @@
 	const KRISSNEIGHBORSHOUSE_COOLTRAINER_F
 	const KRISSNEIGHBORSHOUSE_POKEFAN_F
 
-KrissNeighborsHouse_MapScriptHeader:
+KrissNeighborsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -31,7 +31,7 @@
 	pause 45
 	writetext KrisNeighborRadioText3
 	pause 45
-	musicfadeout MUSIC_NEW_BARK_TOWN, $10
+	musicfadeout MUSIC_NEW_BARK_TOWN, 16
 	writetext KrisNeighborRadioText4
 	pause 45
 	closetext
@@ -98,7 +98,7 @@
 	line "#MON CHANNEL…"
 	done
 
-KrissNeighborsHouse_MapEventHeader:
+KrissNeighborsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -5,13 +5,13 @@
 	const KURTSHOUSE_KURT2
 	const KURTSHOUSE_TWIN2
 
-KurtsHouse_MapScriptHeader:
+KurtsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .KurtCallback
+	callback MAPCALLBACK_OBJECTS, .KurtCallback
 
 .KurtCallback:
 	checkevent EVENT_CLEARED_SLOWPOKE_WELL
@@ -132,7 +132,7 @@
 	buttonsound
 	setevent EVENT_DRAGON_SHRINE_QUESTION_2
 	special Special_SelectApricornForKurt
-	if_equal $0, .Cancel
+	if_equal FALSE, .Cancel
 	if_equal BLU_APRICORN, .Blu
 	if_equal YLW_APRICORN, .Ylw
 	if_equal GRN_APRICORN, .Grn
@@ -311,7 +311,7 @@
 	clearevent EVENT_AZALEA_TOWN_KURT
 	waitsfx
 	special RestartMapMusic
-	setmapscene AZALEA_TOWN, $2
+	setmapscene AZALEA_TOWN, 2
 	end
 
 KurtScript_0x18e3bd:
@@ -676,7 +676,7 @@
 	cont "tector."
 	done
 
-KurtsHouse_MapEventHeader:
+KurtsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LakeOfRage.asm
+++ b/maps/LakeOfRage.asm
@@ -12,7 +12,7 @@
 	const LAKEOFRAGE_POKE_BALL1
 	const LAKEOFRAGE_POKE_BALL2
 
-LakeOfRage_MapScriptHeader:
+LakeOfRage_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -20,8 +20,8 @@
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
-	dbw MAPCALLBACK_OBJECTS, .Wesley
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_OBJECTS, .Wesley
 
 .DummyScene0:
 	end
@@ -62,7 +62,7 @@
 	disappear LAKEOFRAGE_LANCE
 	clearevent EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
 	setevent EVENT_DECIDED_TO_HELP_LANCE
-	setmapscene MAHOGANY_MART_1F, $1
+	setmapscene MAHOGANY_MART_1F, 1
 	end
 
 UnknownScript_0x7004e:
@@ -101,7 +101,7 @@
 	waitsfx
 	itemnotify
 	closetext
-	setscene $0
+	setscene 0
 	appear LAKEOFRAGE_LANCE
 	end
 
@@ -232,17 +232,14 @@
 	itemball TM_DETECT
 
 LakeOfRageHiddenFullRestore:
-	dwb EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_LAKE_OF_RAGE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
-
 LakeOfRageHiddenRareCandy:
-	dwb EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY, RARE_CANDY
+	hiddenitem EVENT_LAKE_OF_RAGE_HIDDEN_RARE_CANDY, RARE_CANDY
 
-
 LakeOfRageHiddenMaxPotion:
-	dwb EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_LAKE_OF_RAGE_HIDDEN_MAX_POTION, MAX_POTION
 
-
 MovementData_0x70155:
 	teleport_from
 	step_end
@@ -496,7 +493,7 @@
 	line "HOUSE"
 	done
 
-LakeOfRage_MapEventHeader:
+LakeOfRage_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LakeOfRageHiddenPowerHouse.asm
+++ b/maps/LakeOfRageHiddenPowerHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const LAKEOFRAGEHIDDENPOWERHOUSE_FISHER
 
-LakeOfRageHiddenPowerHouse_MapScriptHeader:
+LakeOfRageHiddenPowerHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -67,7 +67,7 @@
 	text "I am meditating…"
 	done
 
-LakeOfRageHiddenPowerHouse_MapEventHeader:
+LakeOfRageHiddenPowerHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LakeOfRageMagikarpHouse.asm
+++ b/maps/LakeOfRageMagikarpHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const LAKEOFRAGEMAGIKARPHOUSE_FISHING_GURU
 
-LakeOfRageMagikarpHouse_MapScriptHeader:
+LakeOfRageMagikarpHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,9 +45,10 @@
 	writetext UnknownText_0x19a93e
 	waitbutton
 	special Special_CheckMagikarpLength
-	if_equal $0, UnknownScript_0x19a71c
-	if_equal $1, UnknownScript_0x19a722
-	if_equal $2, UnknownScript_0x19a716
+	if_equal MAGIKARPLENGTH_NOT_MAGIKARP, UnknownScript_0x19a71c
+	if_equal MAGIKARPLENGTH_REFUSED, UnknownScript_0x19a722
+	if_equal MAGIKARPLENGTH_TOO_SHORT, UnknownScript_0x19a716
+	; MAGIKARPLENGTH_BEAT_RECORD
 	jump UnknownScript_0x19a6fe
 
 UnknownScript_0x19a6fe:
@@ -205,7 +206,7 @@
 	text_from_ram StringBuffer4
 	db "@@"
 
-LakeOfRageMagikarpHouse_MapEventHeader:
+LakeOfRageMagikarpHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -3,7 +3,7 @@
 	const LANCESROOM_MARY
 	const LANCESROOM_OAK
 
-LancesRoom_MapScriptHeader:
+LancesRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .LockDoor
@@ -11,7 +11,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .LancesRoomDoors
+	callback MAPCALLBACK_TILES, .LancesRoomDoors
 
 .LockDoor:
 	priorityjump .LancesDoorLocksBehindYou
@@ -22,13 +22,13 @@
 
 .LancesRoomDoors:
 	checkevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	iffalse .KeepDoorsClosed
-	changeblock $4, $16, $34
-.KeepDoorsClosed:
+	iffalse .KeepEntranceOpen
+	changeblock 4, 22, $34 ; wall
+.KeepEntranceOpen:
 	checkevent EVENT_LANCES_ROOM_EXIT_OPEN
-	iffalse .OpenDoors
-	changeblock $4, $0, $b
-.OpenDoors:
+	iffalse .KeepExitClosed
+	changeblock 4, 0, $0b ; open door
+.KeepExitClosed:
 	return
 
 .LancesDoorLocksBehindYou:
@@ -36,10 +36,10 @@
 	refreshscreen $86
 	playsound SFX_STRENGTH
 	earthquake 80
-	changeblock $4, $16, $34
+	changeblock 4, 22, $34 ; wall
 	reloadmappart
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
 	end
 
@@ -69,11 +69,11 @@
 	waitbutton
 	closetext
 	playsound SFX_ENTER_DOOR
-	changeblock $4, $0, $b
+	changeblock 4, 0, $0b ; open door
 	reloadmappart
 	closetext
 	setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
-	musicfadeout MUSIC_BEAUTY_ENCOUNTER, $10
+	musicfadeout MUSIC_BEAUTY_ENCOUNTER, 16
 	pause 30
 	showemote EMOTE_SHOCK, LANCESROOM_LANCE, 15
 	spriteface LANCESROOM_LANCE, DOWN
@@ -125,9 +125,9 @@
 	pause 30
 	closetext
 	applymovement LANCESROOM_MARY, LancesRoomMovementData_MaryRunsBackAndForth
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	pause 15
-	warpfacing UP, HALL_OF_FAME, $4, $d
+	warpfacing UP, HALL_OF_FAME, 4, 13
 	end
 
 LancesRoom_PlayerWalksInMovementData:
@@ -337,7 +337,7 @@
 	cont "the interview!"
 	done
 
-LancesRoom_MapEventHeader:
+LancesRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LavRadioTower1F.asm
+++ b/maps/LavRadioTower1F.asm
@@ -5,7 +5,7 @@
 	const LAVRADIOTOWER1F_GENTLEMAN
 	const LAVRADIOTOWER1F_SUPER_NERD2
 
-LavRadioTower1F_MapScriptHeader:
+LavRadioTower1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -36,7 +36,7 @@
 .UnknownScript_0x7ee80:
 	writetext UnknownText_0x7f0a1
 	buttonsound
-	stringtotext .expncardname, $1
+	stringtotext .expncardname, MEM_BUFFER_1
 	scall .UnknownScript_0x7ee94
 	setflag ENGINE_EXPN_CARD
 .UnknownScript_0x7ee8e:
@@ -221,7 +221,7 @@
 	line "reference library."
 	done
 
-LavRadioTower1F_MapEventHeader:
+LavRadioTower1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LavenderMart.asm
+++ b/maps/LavenderMart.asm
@@ -3,7 +3,7 @@
 	const LAVENDERMART_POKEFAN_M
 	const LAVENDERMART_ROCKER
 
-LavenderMart_MapScriptHeader:
+LavenderMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -47,7 +47,7 @@
 	line "I had some."
 	done
 
-LavenderMart_MapEventHeader:
+LavenderMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LavenderNameRater.asm
+++ b/maps/LavenderNameRater.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const LAVENDERNAMERATER_NAME_RATER
 
-LavenderNameRater_MapScriptHeader:
+LavenderNameRater_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -15,7 +15,7 @@
 LavenderNameRater:
 	faceplayer
 	opentext
-	special SpecialNameRater
+	special Special_NameRater
 	waitbutton
 	closetext
 	end
@@ -23,7 +23,7 @@
 LavenderNameRaterUnusedBookshelf:
 	jumpstd difficultbookshelf
 
-LavenderNameRater_MapEventHeader:
+LavenderNameRater_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LavenderPokecenter1F.asm
+++ b/maps/LavenderPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const LAVENDERPOKECENTER1F_TEACHER
 	const LAVENDERPOKECENTER1F_YOUNGSTER
 
-LavenderPokecenter1F_MapScriptHeader:
+LavenderPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -80,7 +80,7 @@
 	cont "smoothly again."
 	done
 
-LavenderPokecenter1F_MapEventHeader:
+LavenderPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/LavenderPokecenter2FBeta.asm
+++ b/maps/LavenderPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-LavenderPokecenter2FBeta_MapScriptHeader:
+LavenderPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-LavenderPokecenter2FBeta_MapEventHeader:
+LavenderPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- /dev/null
+++ b/maps/LavenderSpeechHouse.asm
@@ -1,0 +1,50 @@
+const_value set 2
+	const LAVENDERSPEECHHOUSE_POKEFAN_F
+
+LavenderSpeechHouse_MapScripts:
+.SceneScripts:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+LavenderSpeechHousePokefanFScript:
+	jumptextfaceplayer LavenderSpeechHousePokefanFText
+
+LavenderSpeechHouseBookshelf:
+	jumpstd picturebookshelf
+
+LavenderSpeechHousePokefanFText:
+	text "LAVENDER is a"
+	line "tiny, quiet town"
+
+	para "at the foot of the"
+	line "mountains."
+
+	para "It's gotten a bit"
+	line "busier since the"
+
+	para "RADIO TOWER was"
+	line "built."
+	done
+
+LavenderSpeechHouse_MapEvents:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 2
+	warp_def 2, 7, 3, LAVENDER_TOWN
+	warp_def 3, 7, 3, LAVENDER_TOWN
+
+.CoordEvents:
+	db 0
+
+.BGEvents:
+	db 2
+	bg_event 0, 1, BGEVENT_READ, LavenderSpeechHouseBookshelf
+	bg_event 1, 1, BGEVENT_READ, LavenderSpeechHouseBookshelf
+
+.ObjectEvents:
+	db 1
+	object_event 2, 3, SPRITE_POKEFAN_F, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, LavenderSpeechHousePokefanFScript, -1
--- a/maps/LavenderTown.asm
+++ b/maps/LavenderTown.asm
@@ -4,13 +4,13 @@
 	const LAVENDERTOWN_GRAMPS
 	const LAVENDERTOWN_YOUNGSTER
 
-LavenderTown_MapScriptHeader:
+LavenderTown_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_LAVENDER
@@ -105,7 +105,7 @@
 	line "#MON Rest Easy"
 	done
 
-LavenderTown_MapEventHeader:
+LavenderTown_MapEvents:
 	; filler
 	db 0, 0
 
@@ -113,7 +113,7 @@
 	db 7
 	warp_def 5, 5, 1, LAVENDER_POKECENTER_1F
 	warp_def 5, 9, 1, MR_FUJIS_HOUSE
-	warp_def 3, 13, 1, LAVENDER_TOWN_SPEECH_HOUSE
+	warp_def 3, 13, 1, LAVENDER_SPEECH_HOUSE
 	warp_def 7, 13, 1, LAVENDER_NAME_RATER
 	warp_def 1, 5, 2, LAVENDER_MART
 	warp_def 13, 11, 1, SOUL_HOUSE
--- a/maps/LavenderTownSpeechHouse.asm
+++ /dev/null
@@ -1,50 +1,0 @@
-const_value set 2
-	const LAVENDERTOWNSPEECHHOUSE_POKEFAN_F
-
-LavenderTownSpeechHouse_MapScriptHeader:
-.SceneScripts:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-LavenderTownSpeechHousePokefanFScript:
-	jumptextfaceplayer LavenderTownSpeechHousePokefanFText
-
-LavenderTownSpeechHouseBookshelf:
-	jumpstd picturebookshelf
-
-LavenderTownSpeechHousePokefanFText:
-	text "LAVENDER is a"
-	line "tiny, quiet town"
-
-	para "at the foot of the"
-	line "mountains."
-
-	para "It's gotten a bit"
-	line "busier since the"
-
-	para "RADIO TOWER was"
-	line "built."
-	done
-
-LavenderTownSpeechHouse_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 2
-	warp_def 2, 7, 3, LAVENDER_TOWN
-	warp_def 3, 7, 3, LAVENDER_TOWN
-
-.CoordEvents:
-	db 0
-
-.BGEvents:
-	db 2
-	bg_event 0, 1, BGEVENT_READ, LavenderTownSpeechHouseBookshelf
-	bg_event 1, 1, BGEVENT_READ, LavenderTownSpeechHouseBookshelf
-
-.ObjectEvents:
-	db 1
-	object_event 2, 3, SPRITE_POKEFAN_F, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, LavenderTownSpeechHousePokefanFScript, -1
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -7,7 +7,7 @@
 	const MAHOGANYGYM_ROCKER3
 	const MAHOGANYGYM_GYM_GUY
 
-MahoganyGym_MapScriptHeader:
+MahoganyGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -23,7 +23,7 @@
 	waitbutton
 	closetext
 	winlosstext PryceText_Impressed, 0
-	loadtrainer PRYCE, 1
+	loadtrainer PRYCE, PRYCE1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_PRYCE
@@ -146,7 +146,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext PRYCE, 1, $1
+	trainertotext PRYCE, PRYCE1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 PryceText_Intro:
@@ -372,7 +372,7 @@
 	line "eration gap!"
 	done
 
-MahoganyGym_MapEventHeader:
+MahoganyGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MahoganyMart1F.asm
+++ b/maps/MahoganyMart1F.asm
@@ -5,7 +5,7 @@
 	const MAHOGANYMART1F_DRAGON
 	const MAHOGANYMART1F_GRANNY
 
-MahoganyMart1F_MapScriptHeader:
+MahoganyMart1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -13,7 +13,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .MahoganyMart1FStaircase
+	callback MAPCALLBACK_TILES, .MahoganyMart1FStaircase
 
 .DummyScene0:
 	end
@@ -28,7 +28,7 @@
 	return
 
 .ShowStairs:
-	changeblock $6, $2, $1e
+	changeblock 6, 2, $1e ; stairs
 	return
 
 PharmacistScript_0x6c367:
@@ -89,7 +89,7 @@
 	waitbutton
 	showemote EMOTE_SHOCK, MAHOGANYMART1F_PHARMACIST, 10
 	playsound SFX_FAINT
-	changeblock $6, $2, $1e
+	changeblock 6, 2, $1e ; stairs
 	reloadmappart
 	closetext
 	setevent EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
@@ -101,7 +101,7 @@
 	applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c412
 	playsound SFX_EXIT_BUILDING
 	disappear MAHOGANYMART1F_LANCE
-	setscene $0
+	setscene 0
 	waitsfx
 	end
 
@@ -220,7 +220,7 @@
 	line "I'll go first."
 	done
 
-MahoganyMart1F_MapEventHeader:
+MahoganyMart1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MahoganyPokecenter1F.asm
+++ b/maps/MahoganyPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const MAHOGANYPOKECENTER1F_YOUNGSTER
 	const MAHOGANYPOKECENTER1F_COOLTRAINER_F
 
-MahoganyPokecenter1F_MapScriptHeader:
+MahoganyPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -53,7 +53,7 @@
 	cont "more slowly."
 	done
 
-MahoganyPokecenter1F_MapEventHeader:
+MahoganyPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MahoganyRedGyaradosSpeechHouse.asm
+++ b/maps/MahoganyRedGyaradosSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const MAHOGANYREDGYARADOSSPEECHHOUSE_BLACK_BELT
 	const MAHOGANYREDGYARADOSSPEECHHOUSE_TEACHER
 
-MahoganyRedGyaradosSpeechHouse_MapScriptHeader:
+MahoganyRedGyaradosSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -60,7 +60,7 @@
 	line "It's creepy."
 	done
 
-MahoganyRedGyaradosSpeechHouse_MapEventHeader:
+MahoganyRedGyaradosSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -4,7 +4,7 @@
 	const MAHOGANYTOWN_FISHER
 	const MAHOGANYTOWN_LASS
 
-MahoganyTown_MapScriptHeader:
+MahoganyTown_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -12,7 +12,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .DummyScene0:
 	end
@@ -53,17 +53,17 @@
 UnknownScript_0x190040:
 	opentext
 	writetext UnknownText_0x1900b0
-	special PlaceMoneyTopRight
+	special Special_PlaceMoneyTopRight
 	yesorno
 	iffalse UnknownScript_0x190072
-	checkmoney $0, 300
-	if_equal $2, UnknownScript_0x19006c
+	checkmoney YOUR_MONEY, 300
+	if_equal HAVE_LESS, UnknownScript_0x19006c
 	giveitem RAGECANDYBAR
 	iffalse UnknownScript_0x190078
 	waitsfx
 	playsound SFX_TRANSACTION
-	takemoney $0, 300
-	special PlaceMoneyTopRight
+	takemoney YOUR_MONEY, 300
+	special Special_PlaceMoneyTopRight
 	writetext UnknownText_0x19014a
 	waitbutton
 	closetext
@@ -244,7 +244,7 @@
 	line "Winter's Harshness"
 	done
 
-MahoganyTown_MapEventHeader:
+MahoganyTown_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ManiasHouse.asm
+++ b/maps/ManiasHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const MANIASHOUSE_ROCKER
 
-ManiasHouse_MapScriptHeader:
+ManiasHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -18,7 +18,7 @@
 	writetext ManiaText_AskLookAfterShuckle
 	yesorno
 	iffalse .refusetotakeshuckie
-	special SpecialGiveShuckle
+	special Special_GiveShuckle
 	iffalse .partyfull
 	writetext ManiaText_TakeCareOfShuckle
 	buttonsound
@@ -54,11 +54,12 @@
 	writetext ManiaText_CanIHaveMyMonBack
 	yesorno
 	iffalse .refused
-	special SpecialReturnShuckle
-	if_equal $0, .wrong
-	if_equal $1, .refused
-	if_equal $3, .superhappy
-	if_equal $4, .default_postevent
+	special Special_ReturnShuckle
+	if_equal SHUCKIE_WRONG_MON, .wrong
+	if_equal SHUCKIE_REFUSED, .refused
+	if_equal SHUCKIE_HAPPY, .superhappy
+	if_equal SHUCKIE_FAINTED, .default_postevent
+	; SHUCKIE_RETURNED
 	writetext ManiaText_ThankYou
 	waitbutton
 	closetext
@@ -198,7 +199,7 @@
 	line "in battle?"
 	done
 
-ManiasHouse_MapEventHeader:
+ManiasHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -1,4 +1,4 @@
-MobileBattleRoom_MapScriptHeader:
+MobileBattleRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .InitializeMobileBattleRoom
@@ -15,15 +15,15 @@
 	end
 
 .InitializeAndPreparePokecenter2F:
-	setscene $1
-	setmapscene POKECENTER_2F, $5
+	setscene 1
+	setmapscene POKECENTER_2F, 5
 	end
 
 MapMobileBattleRoomSignpost0Script:
-	refreshscreen $0
-	special Function1037c2
+	refreshscreen
+	special Special_Function1037c2
 	if_equal $1, .one
-	special Function1037eb
+	special Special_Function1037eb
 	iffalse .false
 	if_equal $1, .one_
 	if_equal $2, .two_
@@ -33,24 +33,24 @@
 	writetext MobileBattleRoom_HealText
 	pause 20
 	closetext
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	playmusic MUSIC_HEAL
-	special LoadMapPalettes
+	special Special_LoadMapPalettes
 	pause 60
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	special RestartMapMusic
-	refreshscreen $0
+	refreshscreen
 .two_
-	special TrainerRankings_Healings
+	special Special_StubbedTrainerRankings_Healings
 	special HealParty
-	special Function10383c
+	special Special_Function10383c
 	iftrue .false
 .one
-	special Function10387b
+	special Special_Function10387b
 	writetext MobileBattleRoom_EstablishingCommsText
 	waitbutton
 	reloadmappart
-	special Function101225
+	special Special_Function101225
 .false
 	closetext
 	end
@@ -66,7 +66,7 @@
 	cont "before battle."
 	done
 
-MobileBattleRoom_MapEventHeader:
+MobileBattleRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MobileTradeRoomMobile.asm
+++ b/maps/MobileTradeRoomMobile.asm
@@ -1,4 +1,4 @@
-MobileTradeRoomMobile_MapScriptHeader:
+MobileTradeRoomMobile_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .InitializeMobileTradeRoomMobile
@@ -15,17 +15,17 @@
 	end
 
 .InitializeAndPreparePokecenter2F:
-	setscene $1
-	setmapscene POKECENTER_2F, $4
+	setscene 1
+	setmapscene POKECENTER_2F, 4
 	end
 
 MapMobileTradeRoomMobileSignpost0Script:
-	refreshscreen $0
-	special Function1037c2
+	refreshscreen
+	special Special_Function1037c2
 	writetext MobileTradeRoomMobile_EstablishingCommsText
 	waitbutton
 	reloadmappart
-	special Function101231
+	special Special_Function101231
 	closetext
 	end
 
@@ -34,7 +34,7 @@
 	line "communications…"
 	done
 
-MobileTradeRoomMobile_MapEventHeader:
+MobileTradeRoomMobile_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMoon.asm
+++ b/maps/MountMoon.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const MOUNTMOON_SILVER
 
-MountMoon_MapScriptHeader:
+MountMoon_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .RivalEncounter
@@ -66,7 +66,7 @@
 	closetext
 	applymovement MOUNTMOON_SILVER, MountMoonSilverMovementAfter
 	disappear MOUNTMOON_SILVER
-	setscene $1
+	setscene 1
 	setevent EVENT_BEAT_RIVAL_IN_MT_MOON
 	playmapmusic
 	end
@@ -88,7 +88,7 @@
 	step_end
 
 MountMoonSilverTextBefore:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "It's been a while,"
 	line "<PLAYER>."
@@ -108,7 +108,7 @@
 	done
 
 MountMoonSilverTextWin:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "I thought I raised"
 	line "my #MON to be"
@@ -121,7 +121,7 @@
 	done
 
 MountMoonSilverTextAfter:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "…You won, fair"
 	line "and square."
@@ -147,7 +147,7 @@
 	done
 
 MountMoonSilverTextLoss:
-	text "<......> <......> <......>"
+	text "<……> <……> <……>"
 
 	para "I've repaid my"
 	line "debt to you."
@@ -160,7 +160,7 @@
 	cont "greatest trainer."
 	done
 
-MountMoon_MapEventHeader:
+MountMoon_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMoonGiftShop.asm
+++ b/maps/MountMoonGiftShop.asm
@@ -4,7 +4,7 @@
 	const MOUNTMOONGIFTSHOP_LASS1 ; morning only
 	const MOUNTMOONGIFTSHOP_LASS2 ; day only
 
-MountMoonGiftShop_MapScriptHeader:
+MountMoonGiftShop_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -27,7 +27,7 @@
 	cont "come out to play."
 	done
 
-MountMoonGiftShop_MapEventHeader:
+MountMoonGiftShop_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -3,7 +3,7 @@
 	const MOUNTMOONSQUARE_FAIRY2
 	const MOUNTMOONSQUARE_ROCK
 
-MountMoonSquare_MapScriptHeader:
+MountMoonSquare_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -10,8 +10,8 @@
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .DisappearMoonStone
-	dbw MAPCALLBACK_OBJECTS, .DisappearRock
+	callback MAPCALLBACK_NEWMAP, .DisappearMoonStone
+	callback MAPCALLBACK_OBJECTS, .DisappearRock
 
 .DummyScene:
 	end
@@ -75,9 +75,8 @@
 	end
 
 MountMoonSquareHiddenMoonStone:
-	dwb EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE, MOON_STONE
+	hiddenitem EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE, MOON_STONE
 
-
 DontLitterSign:
 	jumptext DontLitterSignText
 
@@ -133,7 +132,7 @@
 	line "DON'T LITTER"
 	done
 
-MountMoonSquare_MapEventHeader:
+MountMoonSquare_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -10,7 +10,7 @@
 	const MOUNTMORTAR1FINSIDE_POKE_BALL6
 	const MOUNTMORTAR1FINSIDE_POKE_BALL7
 
-MountMortar1FInside_MapScriptHeader:
+MountMortar1FInside_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -64,9 +64,8 @@
 	itemball ULTRA_BALL
 
 MountMortar1FInsideHiddenMaxRepel:
-	dwb EVENT_MOUNT_MORTAR_1F_INSIDE_HIDDEN_MAX_REPEL, MAX_REPEL
+	hiddenitem EVENT_MOUNT_MORTAR_1F_INSIDE_HIDDEN_MAX_REPEL, MAX_REPEL
 
-
 PokemaniacMillerSeenText:
 	text "I'm not losing"
 	line "this time!"
@@ -117,7 +116,7 @@
 	line "WATERFALL?"
 	done
 
-MountMortar1FInside_MapEventHeader:
+MountMortar1FInside_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMortar1FOutside.asm
+++ b/maps/MountMortar1FOutside.asm
@@ -2,7 +2,7 @@
 	const MOUNTMORTAR1FOUTSIDE_POKE_BALL1
 	const MOUNTMORTAR1FOUTSIDE_POKE_BALL2
 
-MountMortar1FOutside_MapScriptHeader:
+MountMortar1FOutside_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -16,10 +16,9 @@
 	itemball REVIVE
 
 MountMortar1FOutsideHiddenHyperPotion:
-	dwb EVENT_MOUNT_MORTAR_1F_OUTSIDE_HIDDEN_HYPER_POTION, HYPER_POTION
+	hiddenitem EVENT_MOUNT_MORTAR_1F_OUTSIDE_HIDDEN_HYPER_POTION, HYPER_POTION
 
-
-MountMortar1FOutside_MapEventHeader:
+MountMortar1FOutside_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -7,7 +7,7 @@
 	const MOUNTMORTAR2FINSIDE_POKE_BALL6
 	const MOUNTMORTAR2FINSIDE_SUPER_NERD
 
-MountMortar2FInside_MapScriptHeader:
+MountMortar2FInside_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -44,9 +44,8 @@
 	itemball ESCAPE_ROPE
 
 MountMortar2FInsideHiddenFullRestore:
-	dwb EVENT_MOUNT_MORTAR_2F_INSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_MOUNT_MORTAR_2F_INSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
-
 SupernerdHughSeenText:
 	text "Yo! MARKUS!"
 	done
@@ -67,7 +66,7 @@
 	line "use STRENGTH?"
 	done
 
-MountMortar2FInside_MapEventHeader:
+MountMortar2FInside_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -7,7 +7,7 @@
 	const MOUNTMORTARB1F_POKE_BALL4
 	const MOUNTMORTARB1F_POKE_BALL5
 
-MountMortarB1F_MapScriptHeader:
+MountMortarB1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -35,7 +35,7 @@
 	buttonsound
 	waitsfx
 	checkcode VAR_PARTYCOUNT
-	if_equal $6, UnknownScript_0x7e237
+	if_equal PARTY_LENGTH, UnknownScript_0x7e237
 	writetext UnknownText_0x7e355
 	playsound SFX_CAUGHT_MON
 	waitsfx
@@ -72,9 +72,8 @@
 	itemball PP_UP
 
 MountMortarB1FHiddenMaxRevive:
-	dwb EVENT_MOUNT_MORTAR_B1F_HIDDEN_MAX_REVIVE, MAX_REVIVE
+	hiddenitem EVENT_MOUNT_MORTAR_B1F_HIDDEN_MAX_REVIVE, MAX_REVIVE
 
-
 UnknownText_0x7e24d:
 	text "Hey!"
 
@@ -135,7 +134,7 @@
 	line "in your party!"
 	done
 
-MountMortarB1F_MapEventHeader:
+MountMortarB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MoveDeletersHouse.asm
+++ b/maps/MoveDeletersHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const MOVEDELETERSHOUSE_SUPER_NERD
 
-MoveDeletersHouse_MapScriptHeader:
+MoveDeletersHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 MoveDeleter:
 	faceplayer
 	opentext
-	special MoveDeletion
+	special Special_MoveDeletion
 	waitbutton
 	closetext
 	end
@@ -19,7 +19,7 @@
 MoveDeletersHouseBookshelf:
 	jumpstd difficultbookshelf
 
-MoveDeletersHouse_MapEventHeader:
+MoveDeletersHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MrFujisHouse.asm
+++ b/maps/MrFujisHouse.asm
@@ -5,7 +5,7 @@
 	const MRFUJISHOUSE_NIDORINO
 	const MRFUJISHOUSE_PIDGEY
 
-MrFujisHouse_MapScriptHeader:
+MrFujisHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -79,7 +79,7 @@
 	text "PIDGEY: Pijji!"
 	done
 
-MrFujisHouse_MapEventHeader:
+MrFujisHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -2,7 +2,7 @@
 	const MRPOKEMONSHOUSE_GENTLEMAN
 	const MRPOKEMONSHOUSE_OAK
 
-MrPokemonsHouse_MapScriptHeader:
+MrPokemonsHouse_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .MeetMrPokemon
@@ -111,9 +111,9 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	playmusic MUSIC_HEAL
-	special TrainerRankings_Healings
+	special Special_StubbedTrainerRankings_Healings
 	special HealParty
 	pause 60
 	special Special_FadeInQuickly
@@ -125,9 +125,9 @@
 	setevent EVENT_RIVAL_NEW_BARK_TOWN
 	setevent EVENT_KRISS_HOUSE_1F_NEIGHBOR
 	clearevent EVENT_KRISS_NEIGHBORS_HOUSE_NEIGHBOR
-	setscene $1
-	setmapscene CHERRYGROVE_CITY, $1
-	setmapscene ELMS_LAB, $3
+	setscene 1
+	setmapscene CHERRYGROVE_CITY, 1
+	setmapscene ELMS_LAB, 3
 	specialphonecall SPECIALCALL_ROBBED
 	clearevent EVENT_COP_IN_ELMS_LAB
 	checkevent EVENT_GOT_TOTODILE_FROM_ELM
@@ -169,7 +169,7 @@
 	step DOWN
 	step LEFT
 	turn_head DOWN
-	db $3f ; movement
+	step_sleep 2
 	step_end
 
 MrPokemonIntroText1:
@@ -372,7 +372,7 @@
 	line "another country…"
 	done
 
-MrPokemonsHouse_MapEventHeader:
+MrPokemonsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/MrPsychicsHouse.asm
+++ b/maps/MrPsychicsHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const MRPSYCHICSHOUSE_FISHING_GURU
 
-MrPsychicsHouse_MapScriptHeader:
+MrPsychicsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -47,7 +47,7 @@
 	line "target's SPCL.DEF."
 	done
 
-MrPsychicsHouse_MapEventHeader:
+MrPsychicsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -14,7 +14,7 @@
 	const NATIONALPARK_GAMEBOY_KID
 	const NATIONALPARK_POKE_BALL2
 
-NationalPark_MapScriptHeader:
+NationalPark_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -94,9 +94,9 @@
 	scall UnknownScript_0x5c100
 UnknownScript_0x5c074:
 	askforphonenumber PHONE_SCHOOLBOY_JACK
-	if_equal $1, UnknownScript_0x5c110
-	if_equal $2, UnknownScript_0x5c10c
-	trainertotext SCHOOLBOY, JACK1, $0
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x5c110
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x5c10c
+	trainertotext SCHOOLBOY, JACK1, MEM_BUFFER_0
 	scall UnknownScript_0x5c104
 	jump UnknownScript_0x5c108
 
@@ -224,9 +224,9 @@
 	scall UnknownScript_0x5c193
 UnknownScript_0x5c163:
 	askforphonenumber PHONE_POKEFAN_BEVERLY
-	if_equal $1, UnknownScript_0x5c1a3
-	if_equal $2, UnknownScript_0x5c19f
-	trainertotext POKEFANF, BEVERLY1, $0
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x5c1a3
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x5c19f
+	trainertotext POKEFANF, BEVERLY1, MEM_BUFFER_0
 	scall UnknownScript_0x5c197
 	jump UnknownScript_0x5c19b
 
@@ -305,9 +305,8 @@
 	itemball TM_DIG
 
 NationalParkHiddenFullHeal:
-	dwb EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
 
-
 NationalParkLassText:
 	text "Look! Check out my"
 	line "bag!"
@@ -514,7 +513,7 @@
 	cont "pressing START."
 	done
 
-NationalPark_MapEventHeader:
+NationalPark_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/NationalParkBugContest.asm
+++ b/maps/NationalParkBugContest.asm
@@ -12,7 +12,7 @@
 	const NATIONALPARKBUGCONTEST_POKE_BALL1
 	const NATIONALPARKBUGCONTEST_POKE_BALL2
 
-NationalParkBugContest_MapScriptHeader:
+NationalParkBugContest_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -115,9 +115,8 @@
 	itemball TM_DIG
 
 NationalParkBugContestHiddenFullHeal:
-	dwb EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_NATIONAL_PARK_HIDDEN_FULL_HEAL, FULL_HEAL
 
-
 UnknownText_0x5c94c:
 	text "DON: I'm going to"
 	line "win! Don't bother"
@@ -221,7 +220,7 @@
 	cont "pressing START."
 	done
 
-NationalParkBugContest_MapEventHeader:
+NationalParkBugContest_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -3,7 +3,7 @@
 	const NEWBARKTOWN_FISHER
 	const NEWBARKTOWN_SILVER
 
-NewBarkTown_MapScriptHeader:
+NewBarkTown_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -11,7 +11,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .DummyScene0:
 	end
@@ -249,7 +249,7 @@
 	done
 
 NewBarkTownRivalText1:
-	text "<......>"
+	text "<……>"
 
 	para "So this is the"
 	line "famous ELM #MON"
@@ -281,7 +281,7 @@
 	text "ELM'S HOUSE"
 	done
 
-NewBarkTown_MapEventHeader:
+NewBarkTown_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OaksLab.asm
+++ b/maps/OaksLab.asm
@@ -4,7 +4,7 @@
 	const OAKSLAB_SCIENTIST2
 	const OAKSLAB_SCIENTIST3
 
-OaksLab_MapScriptHeader:
+OaksLab_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -26,14 +26,14 @@
 	setevent EVENT_TALKED_TO_OAK_IN_KANTO
 .CheckBadges:
 	checkcode VAR_BADGES
-	if_equal 16, .OpenMtSilver
-	if_equal  8, .Complain
+	if_equal NUM_BADGES, .OpenMtSilver
+	if_equal NUM_JOHTO_BADGES, .Complain
 	jump .AhGood
 
 .CheckPokedex:
 	writetext OakLabDexCheckText
 	waitbutton
-	special ProfOaksPCBoot
+	special Special_ProfOaksPCBoot
 	writetext OakLabGoodbyeText
 	waitbutton
 	closetext
@@ -256,7 +256,7 @@
 	line "TOWN 8-)"
 	done
 
-OaksLab_MapEventHeader:
+OaksLab_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineCafe.asm
+++ b/maps/OlivineCafe.asm
@@ -3,7 +3,7 @@
 	const OLIVINECAFE_FISHING_GURU
 	const OLIVINECAFE_SAILOR2
 
-OlivineCafe_MapScriptHeader:
+OlivineCafe_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -78,7 +78,7 @@
 	line "stop eating!"
 	done
 
-OlivineCafe_MapEventHeader:
+OlivineCafe_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -4,7 +4,7 @@
 	const OLIVINECITY_SAILOR2
 	const OLIVINECITY_OLIVINE_RIVAL
 
-OlivineCity_MapScriptHeader:
+OlivineCity_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -12,7 +12,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .DummyScene0:
 	end
@@ -41,11 +41,11 @@
 	applymovement PLAYER, MovementData_0x1a88f4
 	spriteface PLAYER, RIGHT
 	applymovement OLIVINECITY_OLIVINE_RIVAL, MovementData_0x1a88db
-	setscene $1
+	setscene 1
 	disappear OLIVINECITY_OLIVINE_RIVAL
 	special RestartMapMusic
 	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	end
 
 UnknownScript_0x1a886b:
@@ -66,10 +66,10 @@
 	spriteface PLAYER, RIGHT
 	applymovement OLIVINECITY_OLIVINE_RIVAL, MovementData_0x1a88e8
 	disappear OLIVINECITY_OLIVINE_RIVAL
-	setscene $1
+	setscene 1
 	special RestartMapMusic
 	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
-	special MapCallbackSprites_LoadUsedSpritesGFX
+	special Special_LoadUsedSpritesGFX
 	end
 
 OlivineCitySailor1Script:
@@ -78,8 +78,8 @@
 StandingYoungsterScript_0x1a88a6:
 	faceplayer
 	opentext
-	random $2
-	if_equal $0, UnknownScript_0x1a88b4
+	random 2
+	if_equal 0, UnknownScript_0x1a88b4
 	writetext UnknownText_0x1a8b04
 	waitbutton
 	closetext
@@ -287,7 +287,7 @@
 	text "BATTLE TOWER AHEAD"
 	done
 
-OlivineCity_MapEventHeader:
+OlivineCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineGoodRodHouse.asm
+++ b/maps/OlivineGoodRodHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const OLIVINEGOODRODHOUSE_FISHING_GURU
 
-OlivineGoodRodHouse_MapScriptHeader:
+OlivineGoodRodHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -82,7 +82,7 @@
 	line "Land the big one?"
 	done
 
-OlivineGoodRodHouse_MapEventHeader:
+OlivineGoodRodHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineGym.asm
+++ b/maps/OlivineGym.asm
@@ -2,7 +2,7 @@
 	const OLIVINEGYM_JASMINE
 	const OLIVINEGYM_GYM_GUY
 
-OlivineGym_MapScriptHeader:
+OlivineGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -18,7 +18,7 @@
 	waitbutton
 	closetext
 	winlosstext Jasmine_BetterTrainer, 0
-	loadtrainer JASMINE, 1
+	loadtrainer JASMINE, JASMINE1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_JASMINE
@@ -91,7 +91,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext JASMINE, 1, $1
+	trainertotext JASMINE, JASMINE1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 Jasmine_SteelTypeIntro:
@@ -197,7 +197,7 @@
 	cont "sionate."
 	done
 
-OlivineGym_MapEventHeader:
+OlivineGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineHouseBeta.asm
+++ b/maps/OlivineHouseBeta.asm
@@ -2,7 +2,7 @@
 	const OLIVINEHOUSEBETA_TEACHER
 	const OLIVINEHOUSEBETA_RHYDON
 
-OlivineHouseBeta_MapScriptHeader:
+OlivineHouseBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -39,7 +39,7 @@
 	text "RHYDON: Gugooh!"
 	done
 
-OlivineHouseBeta_MapEventHeader:
+OlivineHouseBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineLighthouse1F.asm
+++ b/maps/OlivineLighthouse1F.asm
@@ -2,7 +2,7 @@
 	const OLIVINELIGHTHOUSE1F_SAILOR
 	const OLIVINELIGHTHOUSE1F_POKEFAN_F
 
-OlivineLighthouse1F_MapScriptHeader:
+OlivineLighthouse1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -36,7 +36,7 @@
 	cont "those #MON."
 	done
 
-OlivineLighthouse1F_MapEventHeader:
+OlivineLighthouse1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -2,7 +2,7 @@
 	const OLIVINELIGHTHOUSE2F_SAILOR
 	const OLIVINELIGHTHOUSE2F_GENTLEMAN
 
-OlivineLighthouse2F_MapScriptHeader:
+OlivineLighthouse2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -41,9 +41,9 @@
 	scall UnknownScript_0x5b057
 UnknownScript_0x5afb3:
 	askforphonenumber PHONE_SAILOR_HUEY
-	if_equal $1, UnknownScript_0x5b067
-	if_equal $2, UnknownScript_0x5b063
-	trainertotext SAILOR, HUEY1, $0
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x5b067
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x5b063
+	trainertotext SAILOR, HUEY1, MEM_BUFFER_0
 	scall UnknownScript_0x5b05b
 	jump UnknownScript_0x5b05f
 
@@ -164,8 +164,8 @@
 	line "I lose!"
 	done
 
-; possibly unused
-UnknownText_0x5b0be:
+; unused
+UnusedText_0x5b0be:
 	text "What power!"
 	line "How would you like"
 
@@ -204,7 +204,7 @@
 	cont "before."
 	done
 
-OlivineLighthouse2F_MapEventHeader:
+OlivineLighthouse2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -4,7 +4,7 @@
 	const OLIVINELIGHTHOUSE3F_YOUNGSTER
 	const OLIVINELIGHTHOUSE3F_POKE_BALL
 
-OlivineLighthouse3F_MapScriptHeader:
+OlivineLighthouse3F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -112,7 +112,7 @@
 	cont "like ONIX."
 	done
 
-OlivineLighthouse3F_MapEventHeader:
+OlivineLighthouse3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineLighthouse4F.asm
+++ b/maps/OlivineLighthouse4F.asm
@@ -2,7 +2,7 @@
 	const OLIVINELIGHTHOUSE4F_SAILOR
 	const OLIVINELIGHTHOUSE4F_LASS
 
-OlivineLighthouse4F_MapScriptHeader:
+OlivineLighthouse4F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -81,7 +81,7 @@
 	line "back to the GYM."
 	done
 
-OlivineLighthouse4F_MapEventHeader:
+OlivineLighthouse4F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -5,7 +5,7 @@
 	const OLIVINELIGHTHOUSE5F_POKE_BALL2
 	const OLIVINELIGHTHOUSE5F_POKE_BALL3
 
-OlivineLighthouse5F_MapScriptHeader:
+OlivineLighthouse5F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -44,9 +44,8 @@
 	itemball TM_SWAGGER
 
 OlivineLighthouse5FHiddenHyperPotion:
-	dwb EVENT_OLIVINE_LIGHTHOUSE_5F_HIDDEN_HYPER_POTION, HYPER_POTION
+	hiddenitem EVENT_OLIVINE_LIGHTHOUSE_5F_HIDDEN_HYPER_POTION, HYPER_POTION
 
-
 SailorErnestSeenText:
 	text "I wanted to battle"
 	line "JASMINE, but she's"
@@ -91,7 +90,7 @@
 	cont "across the sea…"
 	done
 
-OlivineLighthouse5F_MapEventHeader:
+OlivineLighthouse5F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -3,7 +3,7 @@
 	const OLIVINELIGHTHOUSE6F_MONSTER
 	const OLIVINELIGHTHOUSE6F_POKE_BALL
 
-OlivineLighthouse6F_MapScriptHeader:
+OlivineLighthouse6F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -47,9 +47,9 @@
 	closetext
 	special RestartMapMusic
 	cry AMPHAROS
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	pause 10
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	opentext
 	writetext UnknownText_0x60f3d
 	waitbutton
@@ -109,7 +109,7 @@
 	iftrue UnknownScript_0x60c51
 	writetext UnknownText_0x60f03
 	writebyte AMPHAROS
-	special PlaySlowCry
+	special Special_PlaySlowCry
 	buttonsound
 	writetext UnknownText_0x60f19
 	waitbutton
@@ -121,10 +121,10 @@
 	cry AMPHAROS
 	waitbutton
 	closetext
-	special FadeOutPalettes
-	special FadeInPalettes
-	special FadeOutPalettes
-	special FadeInPalettes
+	special Special_FadeOutPalettes
+	special Special_FadeInPalettes
+	special Special_FadeOutPalettes
+	special Special_FadeInPalettes
 	end
 
 OlivineLighthouse6FSuperPotion:
@@ -257,7 +257,7 @@
 	line "Palulu!"
 	done
 
-OlivineLighthouse6F_MapEventHeader:
+OlivineLighthouse6F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineMart.asm
+++ b/maps/OlivineMart.asm
@@ -3,7 +3,7 @@
 	const OLIVINEMART_COOLTRAINER_F
 	const OLIVINEMART_LASS
 
-OlivineMart_MapScriptHeader:
+OlivineMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	line "It's a secret!"
 	done
 
-OlivineMart_MapEventHeader:
+OlivineMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivinePokecenter1F.asm
+++ b/maps/OlivinePokecenter1F.asm
@@ -4,7 +4,7 @@
 	const OLIVINEPOKECENTER1F_FISHER
 	const OLIVINEPOKECENTER1F_TEACHER
 
-OlivinePokecenter1F_MapScriptHeader:
+OlivinePokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -47,7 +47,7 @@
 	cont "rare #MON."
 	done
 
-OlivinePokecenter1F_MapEventHeader:
+OlivinePokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -7,7 +7,7 @@
 	const OLIVINEPORT_YOUNGSTER
 	const OLIVINEPORT_COOLTRAINER_F
 
-OlivinePort_MapScriptHeader:
+OlivinePort_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -26,7 +26,7 @@
 .LeaveFastShipScript:
 	applymovement PLAYER, MovementData_0x74a32
 	appear OLIVINEPORT_SAILOR1
-	setscene $0
+	setscene 0
 	setevent EVENT_GAVE_KURT_APRICORNS
 	blackoutmod OLIVINE_CITY
 	end
@@ -46,7 +46,7 @@
 	waitsfx
 	applymovement PLAYER, MovementData_0x74a30
 	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7490a
@@ -64,8 +64,8 @@
 UnknownScript_0x7490a:
 	clearevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
 	appear OLIVINEPORT_SAILOR1
-	setmapscene FAST_SHIP_1F, $1
-	warp FAST_SHIP_1F, $19, $1
+	setmapscene FAST_SHIP_1F, 1
+	warp FAST_SHIP_1F, 25, 1
 	end
 
 UnknownScript_0x74919:
@@ -234,9 +234,8 @@
 	end
 
 OlivinePortHiddenProtein:
-	dwb EVENT_OLIVINE_PORT_HIDDEN_PROTEIN, PROTEIN
+	hiddenitem EVENT_OLIVINE_PORT_HIDDEN_PROTEIN, PROTEIN
 
-
 MovementData_0x74a30:
 	step DOWN
 	step_end
@@ -385,7 +384,7 @@
 	line "allowed in."
 	done
 
-OlivinePort_MapEventHeader:
+OlivinePort_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivinePortPassage.asm
+++ b/maps/OlivinePortPassage.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const OLIVINEPORTPASSAGE_POKEFAN_M
 
-OlivinePortPassage_MapScriptHeader:
+OlivinePortPassage_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 	line "days."
 	done
 
-OlivinePortPassage_MapEventHeader:
+OlivinePortPassage_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivinePunishmentSpeechHouse.asm
+++ b/maps/OlivinePunishmentSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const OLIVINEPUNISHMENTSPEECHHOUSE_POKEFAN_M
 	const OLIVINEPUNISHMENTSPEECHHOUSE_LASS
 
-OlivinePunishmentSpeechHouse_MapScriptHeader:
+OlivinePunishmentSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -39,7 +39,7 @@
 	cont "always scares me."
 	done
 
-OlivinePunishmentSpeechHouse_MapEventHeader:
+OlivinePunishmentSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/OlivineTimsHouse.asm
+++ b/maps/OlivineTimsHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const OLIVINETIMSHOUSE_TIM
 
-OlivineTimsHouse_MapScriptHeader:
+OlivineTimsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 TimsHouseBookshelf:
 	jumpstd magazinebookshelf
 
-OlivineTimsHouse_MapEventHeader:
+OlivineTimsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PalletTown.asm
+++ b/maps/PalletTown.asm
@@ -2,13 +2,13 @@
 	const PALLETTOWN_TEACHER
 	const PALLETTOWN_FISHER
 
-PalletTown_MapScriptHeader:
+PalletTown_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_PALLET
@@ -69,7 +69,7 @@
 	text "BLUE'S HOUSE"
 	done
 
-PalletTown_MapEventHeader:
+PalletTown_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterCity.asm
+++ b/maps/PewterCity.asm
@@ -5,13 +5,13 @@
 	const PEWTERCITY_FRUIT_TREE1
 	const PEWTERCITY_FRUIT_TREE2
 
-PewterCity_MapScriptHeader:
+PewterCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_PEWTER
@@ -152,7 +152,7 @@
 	line "PEWTER CITY!"
 	done
 
-PewterCity_MapEventHeader:
+PewterCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterGym.asm
+++ b/maps/PewterGym.asm
@@ -3,7 +3,7 @@
 	const PEWTERGYM_YOUNGSTER
 	const PEWTERGYM_GYM_GUY
 
-PewterGym_MapScriptHeader:
+PewterGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x1a29bb, 0
-	loadtrainer BROCK, 1
+	loadtrainer BROCK, BROCK1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_BROCK
@@ -72,7 +72,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext BROCK, 1, $1
+	trainertotext BROCK, BROCK1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 UnknownText_0x1a28d0:
@@ -208,7 +208,7 @@
 	line "that seriously."
 	done
 
-PewterGym_MapEventHeader:
+PewterGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterMart.asm
+++ b/maps/PewterMart.asm
@@ -3,7 +3,7 @@
 	const PEWTERMART_YOUNGSTER
 	const PEWTERMART_SUPER_NERD
 
-PewterMart_MapScriptHeader:
+PewterMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	line "excellent."
 	done
 
-PewterMart_MapEventHeader:
+PewterMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterNidoranSpeechHouse.asm
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const PEWTERNIDORANSPEECHHOUSE_SUPER_NERD
 	const PEWTERNIDORANSPEECHHOUSE_NIDORAN_M
 
-PewterNidoranSpeechHouse_MapScriptHeader:
+PewterNidoranSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -28,7 +28,7 @@
 	text "NIDORAN: Gau gau!"
 	done
 
-PewterNidoranSpeechHouse_MapEventHeader:
+PewterNidoranSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterPokecenter1F.asm
+++ b/maps/PewterPokecenter1F.asm
@@ -5,7 +5,7 @@
 	const PEWTERPOKECENTER1F_BUG_CATCHER
 	const PEWTERPOKECENTER1F_CHRIS
 
-PewterPokecenter1F_MapScriptHeader:
+PewterPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -67,7 +67,7 @@
 	line "#MON is asleep."
 	done
 
-PewterPokecenter1F_MapEventHeader:
+PewterPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterPokecenter2FBeta.asm
+++ b/maps/PewterPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-PewterPokecenter2FBeta_MapScriptHeader:
+PewterPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-PewterPokecenter2FBeta_MapEventHeader:
+PewterPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PewterSnoozeSpeechHouse.asm
+++ b/maps/PewterSnoozeSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const PEWTERSNOOZESPEECHHOUSE_GRAMPS
 
-PewterSnoozeSpeechHouse_MapScriptHeader:
+PewterSnoozeSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -20,7 +20,7 @@
 	cont "…Zzzz…"
 	done
 
-PewterSnoozeSpeechHouse_MapEventHeader:
+PewterSnoozeSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PokeSeersHouse.asm
+++ b/maps/PokeSeersHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const POKESEERSHOUSE_GRANNY
 
-PokeSeersHouse_MapScriptHeader:
+PokeSeersHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,12 +11,12 @@
 SeerScript:
 	faceplayer
 	opentext
-	special SpecialPokeSeer
+	special Special_PokeSeer
 	waitbutton
 	closetext
 	end
 
-PokeSeersHouse_MapEventHeader:
+PokeSeersHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Pokecenter2F.asm
+++ b/maps/Pokecenter2F.asm
@@ -4,7 +4,7 @@
 	const POKECENTER2F_TIME_CAPSULE_RECEPTIONIST
 	const POKECENTER2F_OFFICER
 
-Pokecenter2F_MapScriptHeader:
+Pokecenter2F_MapScripts:
 .SceneScripts:
 	db 6
 	scene_script .Scene0
@@ -76,10 +76,10 @@
 	writetext Text_TradeReceptionistIntro
 	yesorno
 	iffalse .Cancel
-	special Mobile_DummyReturnFalse ; always returns false
+	special Special_Mobile_DummyReturnFalse ; always returns false
 	iffalse .NoMobile
 	writetext Text_TradeReceptionistMobile
-	special AskMobileOrCable
+	special Special_AskMobileOrCable
 	iffalse .Cancel
 	if_equal $1, .Mobile
 .NoMobile:
@@ -107,7 +107,7 @@
 	end
 
 .FriendNotReady:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	writetext Text_FriendNotReady
 	closetext
 	end
@@ -132,7 +132,7 @@
 .DidNotSave:
 	writetext Text_PleaseComeAgain
 .AbortLink:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 .Cancel:
 	closetext
 	end
@@ -153,17 +153,17 @@
 	iffalse .Mobile_DidNotSave
 	special Special_TryQuickSave
 	iffalse .Mobile_DidNotSave
-	special Function1011f1
+	special Special_Function1011f1
 	writetext Text_PleaseComeIn2
 	waitbutton
 	closetext
-	writebyte $0
+	writebyte FALSE
 	end
 
 .Mobile_DidNotSave:
 	writetext Text_PleaseComeAgain
 	closetext
-	writebyte $1
+	writebyte TRUE
 	end
 
 BattleTradeMobile_WalkIn:
@@ -178,10 +178,10 @@
 	writetext Text_BattleReceptionistIntro
 	yesorno
 	iffalse .Cancel
-	special Mobile_DummyReturnFalse ; always returns false
+	special Special_Mobile_DummyReturnFalse ; always returns false
 	iffalse .NoMobile
 	writetext Text_BattleReceptionistMobile
-	special AskMobileOrCable
+	special Special_AskMobileOrCable
 	iffalse .Cancel
 	if_equal $1, .Mobile
 .NoMobile:
@@ -209,7 +209,7 @@
 	end
 
 .FriendNotReady:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	writetext Text_FriendNotReady
 	closetext
 	end
@@ -234,7 +234,7 @@
 .DidNotSave:
 	writetext Text_PleaseComeAgain
 .AbortLink:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 .Cancel:
 	closetext
 	end
@@ -255,23 +255,23 @@
 	writetext Text_MustSaveGame
 	yesorno
 	iffalse .Mobile_DidNotSave
-	special Function103780
+	special Special_Function103780
 	iffalse .Mobile_DidNotSave
-	special Function1011f1
+	special Special_Function1011f1
 	writetext Text_PleaseComeIn2
 	waitbutton
 	closetext
-	writebyte $0
+	writebyte FALSE
 	end
 
 .Mobile_DidNotSave:
 	writetext Text_PleaseComeAgain
 	closetext
-	writebyte $1
+	writebyte TRUE
 	end
 
 .SelectThreeMons:
-	special Mobile_SelectThreeMons
+	special Special_Mobile_SelectThreeMons
 	iffalse .Mobile_DidNotSelect
 	if_equal $1, .Mobile_OK
 	if_equal $2, .Mobile_OK
@@ -283,11 +283,11 @@
 	waitbutton
 .Mobile_DidNotSelect:
 	closetext
-	writebyte $0
+	writebyte FALSE
 	end
 
 .Mobile_OK:
-	writebyte $1
+	writebyte TRUE
 	end
 
 Script_TimeCapsuleClosed:
@@ -342,7 +342,7 @@
 	end
 
 .FriendNotReady:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	writetext Text_FriendNotReady
 	closetext
 	end
@@ -354,7 +354,7 @@
 .DidNotSave:
 	writetext Text_PleaseComeAgain
 .Cancel:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	closetext
 	end
 
@@ -374,17 +374,17 @@
 	end
 
 Script_LeftCableTradeCenter:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	scall Script_WalkOutOfLinkTradeRoom
-	setscene $0
-	setmapscene TRADE_CENTER, $0
+	setscene 0
+	setmapscene TRADE_CENTER, 0
 	end
 
 Script_LeftMobileTradeRoom:
-	special Function101220
+	special Special_Function101220
 	scall Script_WalkOutOfMobileTradeRoom
-	setscene $0
-	setmapscene MOBILE_TRADE_ROOM_MOBILE, $0
+	setscene 0
+	setmapscene MOBILE_TRADE_ROOM_MOBILE, 0
 	end
 
 Script_WalkOutOfMobileTradeRoom:
@@ -394,17 +394,17 @@
 	end
 
 Script_LeftCableColosseum:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	scall Script_WalkOutOfLinkBattleRoom
-	setscene $0
-	setmapscene COLOSSEUM, $0
+	setscene 0
+	setmapscene COLOSSEUM, 0
 	end
 
 Script_LeftMobileBattleRoom:
-	special Function101220
+	special Special_Function101220
 	scall Script_WalkOutOfMobileBattleRoom
-	setscene $0
-	setmapscene MOBILE_BATTLE_ROOM, $0
+	setscene 0
+	setmapscene MOBILE_BATTLE_ROOM, 0
 	end
 
 Script_WalkOutOfMobileBattleRoom:
@@ -558,7 +558,7 @@
 	end
 
 Script_LeftTimeCapsule:
-	special WaitForOtherPlayerToExit
+	special Special_WaitForOtherPlayerToExit
 	checkflag ENGINE_KRIS_IN_CABLE_CLUB
 	iftrue .Female
 	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsLeftLooksRight
@@ -579,12 +579,12 @@
 	applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepDown
 	applymovement POKECENTER2F_TIME_CAPSULE_RECEPTIONIST, Pokecenter2FMovementData_ReceptionistStepsRightLooksDown_2
 .Done:
-	setscene $0
-	setmapscene TIME_CAPSULE, $0
+	setscene 0
+	setmapscene TIME_CAPSULE, 0
 	end
 
 MapPokecenter2FSignpost0Script:
-	refreshscreen $0
+	refreshscreen
 	special Special_DisplayLinkRecord
 	closetext
 	end
@@ -915,7 +915,7 @@
 Text_RejectNewMon:
 	text "Sorry--@"
 	text_from_ram StringBuffer1
-	text ""
+	text_start
 	line "can't be taken."
 	prompt
 
@@ -1022,7 +1022,7 @@
 	line "when you're ready."
 	done
 
-Pokecenter2F_MapEventHeader:
+Pokecenter2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PokemonFanClub.asm
+++ b/maps/PokemonFanClub.asm
@@ -6,7 +6,7 @@
 	const POKEMONFANCLUB_FAIRY
 	const POKEMONFANCLUB_ODDISH
 
-PokemonFanClub_MapScriptHeader:
+PokemonFanClub_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -296,7 +296,7 @@
 	line "brag right back!"
 	done
 
-PokemonFanClub_MapEventHeader:
+PokemonFanClub_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -7,7 +7,7 @@
 	const POWERPLANT_FISHER
 	const POWERPLANT_FOREST
 
-PowerPlant_MapScriptHeader:
+PowerPlant_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -42,7 +42,7 @@
 	closetext
 	spriteface PLAYER, DOWN
 	applymovement POWERPLANT_OFFICER1, MovementData_0x188eda
-	setscene $0
+	setscene 0
 	end
 
 OfficerScript_0x188df5:
@@ -148,8 +148,8 @@
 	setevent EVENT_MET_MANAGER_AT_POWER_PLANT
 	clearevent EVENT_CERULEAN_GYM_ROCKET
 	clearevent EVENT_FOUND_MACHINE_PART_IN_CERULEAN_GYM
-	setmapscene CERULEAN_GYM, $1
-	setscene $1
+	setmapscene CERULEAN_GYM, 1
+	setscene 1
 	end
 
 UnknownScript_0x188e8d:
@@ -388,7 +388,7 @@
 	line "electricity out!"
 	done
 
-PowerPlant_MapEventHeader:
+PowerPlant_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -6,7 +6,7 @@
 	const RADIOTOWER1F_GENTLEMAN
 	const RADIOTOWER1F_COOLTRAINER_F
 
-RadioTower1F_MapScriptHeader:
+RadioTower1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -148,7 +148,7 @@
 	waitsfx
 	writetext UnknownText_0x5d37b
 	buttonsound
-	stringtotext RadioCardText, $1
+	stringtotext RadioCardText, MEM_BUFFER_1
 	scall UnknownScript_0x5ce3e
 	writetext UnknownText_0x5d3c0
 	buttonsound
@@ -249,8 +249,8 @@
 	done
 
 UnknownText_0x5cf79:
-	text $56
-	line $56
+	text "<……>"
+	line "<……>"
 	done
 
 UnknownText_0x5cf7e:
@@ -472,7 +472,7 @@
 	cont "ent ID numbers!"
 	done
 
-RadioTower1F_MapEventHeader:
+RadioTower1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -11,7 +11,7 @@
 	const RADIOTOWER2F_BUENA
 	const RADIOTOWER2F_RECEPTIONIST
 
-RadioTower2F_MapScriptHeader:
+RadioTower2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -117,7 +117,7 @@
 	if_equal 30, UnknownScript_0x5d87f
 	playmusic MUSIC_BUENAS_PASSWORD
 	writetext UnknownText_0x5de35
-	special AskRememberPassword
+	special Special_AskRememberPassword
 	iffalse UnknownScript_0x5d81e
 	writetext UnknownText_0x5de84
 	waitbutton
@@ -133,8 +133,8 @@
 	waitbutton
 	closetext
 	spriteface RADIOTOWER2F_BUENA, DOWN
-	refreshscreen $0
-	special SpecialBuenasPassword
+	refreshscreen
+	special Special_BuenasPassword
 	closetext
 	iffalse UnknownScript_0x5d845
 	opentext
@@ -142,7 +142,7 @@
 	waitbutton
 	closetext
 	checkcode VAR_BLUECARDBALANCE
-	addvar $1
+	addvar 1
 	writevarcode VAR_BLUECARDBALANCE
 	waitsfx
 	playsound SFX_TRANSACTION
@@ -157,7 +157,7 @@
 	pause 20
 	special RestartMapMusic
 	checkcode VAR_BLUECARDBALANCE
-	if_equal $1e, UnknownScript_0x5d8a4
+	if_equal 30, UnknownScript_0x5d8a4
 	end
 
 UnknownScript_0x5d800:
@@ -281,8 +281,8 @@
 	writetext UnknownText_0x5e2bf
 UnknownScript_0x5d8d0:
 	askforphonenumber PHONE_BUENA
-	if_equal $1, UnknownScript_0x5d8f6
-	if_equal $2, UnknownScript_0x5d8ed
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x5d8f6
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x5d8ed
 	writetext UnknownText_0x5e2f3
 	playsound SFX_REGISTER_PHONE_NUMBER
 	waitsfx
@@ -316,7 +316,7 @@
 	iffalse UnknownScript_0x5d90f
 	writetext UnknownText_0x5e392
 	buttonsound
-	special SpecialBuenaPrize
+	special Special_BuenaPrize
 	closetext
 	end
 
@@ -710,7 +710,7 @@
 	line "#MON Radio"
 	done
 
-RadioTower2F_MapEventHeader:
+RadioTower2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -7,13 +7,13 @@
 	const RADIOTOWER3F_ROCKET3
 	const RADIOTOWER3F_SCIENTIST
 
-RadioTower3F_MapScriptHeader:
+RadioTower3F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .CardKeyShutterCallback
+	callback MAPCALLBACK_TILES, .CardKeyShutterCallback
 
 .CardKeyShutterCallback:
 	checkevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
@@ -21,8 +21,8 @@
 	return
 
 .Change:
-	changeblock $e, $2, $2a
-	changeblock $e, $4, $1
+	changeblock 14, 2, $2a ; open shutter
+	changeblock 14, 4, $01 ; floor
 	return
 
 RadioTower3FSuperNerdScript:
@@ -143,8 +143,8 @@
 	waitbutton
 	setevent EVENT_USED_THE_CARD_KEY_IN_THE_RADIO_TOWER
 	playsound SFX_ENTER_DOOR
-	changeblock $e, $2, $2a
-	changeblock $e, $4, $1
+	changeblock 14, 2, $2a ; open shutter
+	changeblock 14, 4, $01 ; floor
 	reloadmappart
 	closetext
 	waitsfx
@@ -328,7 +328,7 @@
 	line "Host DJ BEN"
 	done
 
-RadioTower3F_MapEventHeader:
+RadioTower3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -7,7 +7,7 @@
 	const RADIOTOWER4F_ROCKET_GIRL
 	const RADIOTOWER4F_SCIENTIST
 
-RadioTower4F_MapScriptHeader:
+RadioTower4F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -245,7 +245,7 @@
 	text "4F STUDIO 2"
 	done
 
-RadioTower4F_MapEventHeader:
+RadioTower4F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -5,7 +5,7 @@
 	const RADIOTOWER5F_ROCKER
 	const RADIOTOWER5F_POKE_BALL
 
-RadioTower5F_MapScriptHeader:
+RadioTower5F_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .DummyScene0
@@ -47,7 +47,7 @@
 	buttonsound
 	verbosegiveitem BASEMENT_KEY
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_3
 	end
 
@@ -96,7 +96,7 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear RADIOTOWER5F_ROCKET
 	disappear RADIOTOWER5F_ROCKET_GIRL
 	pause 15
@@ -115,7 +115,7 @@
 	clearevent EVENT_BLACKTHORN_CITY_SUPER_NERD_DOES_NOT_BLOCK_GYM
 	special PlayMapMusic
 	disappear RADIOTOWER5F_DIRECTOR
-	moveobject RADIOTOWER5F_DIRECTOR, $c, $0
+	moveobject RADIOTOWER5F_DIRECTOR, 12, 0
 	appear RADIOTOWER5F_DIRECTOR
 	applymovement RADIOTOWER5F_DIRECTOR, RadioTower5FDirectorWalksIn
 	spriteface PLAYER, RIGHT
@@ -126,8 +126,8 @@
 	writetext RadioTower5FDirectorDescribeClearBellText
 	waitbutton
 	closetext
-	setscene $2
-	setmapscene ECRUTEAK_HOUSE, $0
+	setscene 2
+	setmapscene ECRUTEAK_HOUSE, 0
 	setevent EVENT_GOT_CLEAR_BELL
 	setevent EVENT_TEAM_ROCKET_DISBANDED
 	jump .UselessJump
@@ -420,7 +420,7 @@
 	text "5F STUDIO 1"
 	done
 
-RadioTower5F_MapEventHeader:
+RadioTower5F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RedsHouse1F.asm
+++ b/maps/RedsHouse1F.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const REDSHOUSE1F_REDS_MOM
 
-RedsHouse1F_MapScriptHeader:
+RedsHouse1F_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -74,7 +74,7 @@
 	cont "in JOHTO…"
 	done
 
-RedsHouse1F_MapEventHeader:
+RedsHouse1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RedsHouse2F.asm
+++ b/maps/RedsHouse2F.asm
@@ -1,4 +1,4 @@
-RedsHouse2F_MapScriptHeader:
+RedsHouse2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -25,7 +25,7 @@
 	cont "in a long time…"
 	done
 
-RedsHouse2F_MapEventHeader:
+RedsHouse2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RockTunnel1F.asm
+++ b/maps/RockTunnel1F.asm
@@ -2,7 +2,7 @@
 	const ROCKTUNNEL1F_POKE_BALL1
 	const ROCKTUNNEL1F_POKE_BALL2
 
-RockTunnel1F_MapScriptHeader:
+RockTunnel1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -16,14 +16,12 @@
 	itemball TM_STEEL_WING
 
 RockTunnel1FHiddenXAccuracy:
-	dwb EVENT_ROCK_TUNNEL_1F_HIDDEN_X_ACCURACY, X_ACCURACY
+	hiddenitem EVENT_ROCK_TUNNEL_1F_HIDDEN_X_ACCURACY, X_ACCURACY
 
-
 RockTunnel1FHiddenXDefend:
-	dwb EVENT_ROCK_TUNNEL_1F_HIDDEN_X_DEFEND, X_DEFEND
+	hiddenitem EVENT_ROCK_TUNNEL_1F_HIDDEN_X_DEFEND, X_DEFEND
 
-
-RockTunnel1F_MapEventHeader:
+RockTunnel1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RockTunnelB1F.asm
+++ b/maps/RockTunnelB1F.asm
@@ -3,7 +3,7 @@
 	const ROCKTUNNELB1F_POKE_BALL2
 	const ROCKTUNNELB1F_POKE_BALL3
 
-RockTunnelB1F_MapScriptHeader:
+RockTunnelB1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -20,10 +20,9 @@
 	itemball REVIVE
 
 RockTunnelB1FHiddenMaxPotion:
-	dwb EVENT_ROCK_TUNNEL_B1F_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_ROCK_TUNNEL_B1F_HIDDEN_MAX_POTION, MAX_POTION
 
-
-RockTunnelB1F_MapEventHeader:
+RockTunnelB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -3,7 +3,7 @@
 	const ROUTE1_COOLTRAINER_F
 	const ROUTE1_FRUIT_TREE
 
-Route1_MapScriptHeader:
+Route1_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -80,7 +80,7 @@
 	line "VIRIDIAN CITY"
 	done
 
-Route1_MapEventHeader:
+Route1_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route10North.asm
+++ b/maps/Route10North.asm
@@ -1,4 +1,4 @@
-Route10North_MapScriptHeader:
+Route10North_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,7 +15,7 @@
 	text "KANTO POWER PLANT"
 	done
 
-Route10North_MapEventHeader:
+Route10North_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route10Pokecenter1F.asm
+++ b/maps/Route10Pokecenter1F.asm
@@ -4,7 +4,7 @@
 	const ROUTE10POKECENTER1F_GYM_GUY
 	const ROUTE10POKECENTER1F_COOLTRAINER_F
 
-Route10Pokecenter1F_MapScriptHeader:
+Route10Pokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -80,7 +80,7 @@
 	line "PLANT."
 	done
 
-Route10Pokecenter1F_MapEventHeader:
+Route10Pokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route10Pokecenter2FBeta.asm
+++ b/maps/Route10Pokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-Route10Pokecenter2FBeta_MapScriptHeader:
+Route10Pokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-Route10Pokecenter2FBeta_MapEventHeader:
+Route10Pokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -2,7 +2,7 @@
 	const ROUTE10SOUTH_POKEFAN_M1
 	const ROUTE10SOUTH_POKEFAN_M2
 
-Route10South_MapScriptHeader:
+Route10South_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -75,7 +75,7 @@
 	line "LAVENDER TOWN"
 	done
 
-Route10South_MapEventHeader:
+Route10South_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -5,7 +5,7 @@
 	const ROUTE11_YOUNGSTER4
 	const ROUTE11_FRUIT_TREE
 
-Route11_MapScriptHeader:
+Route11_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -63,9 +63,8 @@
 	fruittree FRUITTREE_ROUTE_11
 
 Route11HiddenRevive:
-	dwb EVENT_ROUTE_11_HIDDEN_REVIVE, REVIVE
+	hiddenitem EVENT_ROUTE_11_HIDDEN_REVIVE, REVIVE
 
-
 YoungsterOwenSeenText:
 	text "There's no cheat-"
 	line "ing in #MON."
@@ -146,7 +145,7 @@
 	text "ROUTE 11"
 	done
 
-Route11_MapEventHeader:
+Route11_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -6,7 +6,7 @@
 	const ROUTE12_POKE_BALL1
 	const ROUTE12_POKE_BALL2
 
-Route12_MapScriptHeader:
+Route12_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -70,9 +70,8 @@
 	itemball NUGGET
 
 Route12HiddenElixer:
-	dwb EVENT_ROUTE_12_HIDDEN_ELIXER, ELIXER
+	hiddenitem EVENT_ROUTE_12_HIDDEN_ELIXER, ELIXER
 
-
 FisherMartinSeenText:
 	text "Patience is the"
 	line "key to both fish-"
@@ -167,7 +166,7 @@
 	text "FISHING SPOT"
 	done
 
-Route12_MapEventHeader:
+Route12_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route12SuperRodHouse.asm
+++ b/maps/Route12SuperRodHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE12SUPERRODHOUSE_FISHING_GURU
 
-Route12SuperRodHouse_MapScriptHeader:
+Route12SuperRodHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -79,7 +79,7 @@
 	line "deceived me?"
 	done
 
-Route12SuperRodHouse_MapEventHeader:
+Route12SuperRodHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route13.asm
+++ b/maps/Route13.asm
@@ -5,7 +5,7 @@
 	const ROUTE13_POKEFAN_M2
 	const ROUTE13_POKEFAN_M3
 
-Route13_MapScriptHeader:
+Route13_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -77,9 +77,8 @@
 	jumptext Route13DirectionsSignText
 
 Route13HiddenCalcium:
-	dwb EVENT_ROUTE_13_HIDDEN_CALCIUM, CALCIUM
+	hiddenitem EVENT_ROUTE_13_HIDDEN_CALCIUM, CALCIUM
 
-
 PokefanmAlexSeenText:
 	text "Bow down before my"
 	line "regal #MON!"
@@ -192,7 +191,7 @@
 	line "CITY"
 	done
 
-Route13_MapEventHeader:
+Route13_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -4,7 +4,7 @@
 	const ROUTE14_POKEFAN_M2
 	const ROUTE14_KIM
 
-Route14_MapScriptHeader:
+Route14_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -115,7 +115,7 @@
 	line "got my #MON…"
 	done
 
-Route14_MapEventHeader:
+Route14_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -7,7 +7,7 @@
 	const ROUTE15_TEACHER2
 	const ROUTE15_POKE_BALL
 
-Route15_MapScriptHeader:
+Route15_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -201,7 +201,7 @@
 	line "LAVENDER TOWN"
 	done
 
-Route15_MapEventHeader:
+Route15_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route15FuchsiaGate.asm
+++ b/maps/Route15FuchsiaGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE15FUCHSIAGATE_OFFICER
 
-Route15FuchsiaGate_MapScriptHeader:
+Route15FuchsiaGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 	line "Don't give up!"
 	done
 
-Route15FuchsiaGate_MapEventHeader:
+Route15FuchsiaGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route16.asm
+++ b/maps/Route16.asm
@@ -1,16 +1,16 @@
-Route16_MapScriptHeader:
+Route16_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .AlwaysOnBike
+	callback MAPCALLBACK_NEWMAP, .AlwaysOnBike
 
 .AlwaysOnBike:
 	checkcode VAR_YCOORD
-	if_less_than $5, .CanWalk
+	if_less_than 5, .CanWalk
 	checkcode VAR_XCOORD
-	if_greater_than $d, .CanWalk
+	if_greater_than 13, .CanWalk
 	setflag ENGINE_ALWAYS_ON_BIKE
 	return
 
@@ -28,7 +28,7 @@
 	line "ALL THE WAY!"
 	done
 
-Route16_MapEventHeader:
+Route16_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route16FuchsiaSpeechHouse.asm
+++ b/maps/Route16FuchsiaSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE16FUCHSIASPEECHHOUSE_SUPER_NERD
 
-Route16FuchsiaSpeechHouse_MapScriptHeader:
+Route16FuchsiaSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -22,7 +22,7 @@
 	line "FUCHSIA CITY."
 	done
 
-Route16FuchsiaSpeechHouse_MapEventHeader:
+Route16FuchsiaSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route16Gate.asm
+++ b/maps/Route16Gate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE16GATE_OFFICER
 
-Route16Gate_MapScriptHeader:
+Route16Gate_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -60,7 +60,7 @@
 	line "BICYCLE."
 	done
 
-Route16Gate_MapEventHeader:
+Route16Gate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -4,13 +4,13 @@
 	const ROUTE17_BIKER3
 	const ROUTE17_BIKER4
 
-Route17_MapScriptHeader:
+Route17_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .AlwaysOnBike
+	callback MAPCALLBACK_NEWMAP, .AlwaysOnBike
 
 .AlwaysOnBike:
 	setflag ENGINE_ALWAYS_ON_BIKE
@@ -62,13 +62,11 @@
 	end
 
 Route17HiddenMaxEther:
-	dwb EVENT_ROUTE_17_HIDDEN_MAX_ETHER, MAX_ETHER
+	hiddenitem EVENT_ROUTE_17_HIDDEN_MAX_ETHER, MAX_ETHER
 
-
 Route17HiddenMaxElixer:
-	dwb EVENT_ROUTE_17_HIDDEN_MAX_ELIXER, MAX_ELIXER
+	hiddenitem EVENT_ROUTE_17_HIDDEN_MAX_ELIXER, MAX_ELIXER
 
-
 BikerRileySeenText:
 	text "Hey, you! You're"
 	line "from JOHTO, huh?"
@@ -134,14 +132,14 @@
 	cont "Take it easy!"
 	done
 
-Route17_MapEventHeader:
+Route17_MapEvents:
 	; filler
 	db 0, 0
 
 .Warps:
 	db 2
-	warp_def 17, 82, 1, ROUTE_17_18_GATE
-	warp_def 17, 83, 2, ROUTE_17_18_GATE
+	warp_def 17, 82, 1, ROUTE_17_ROUTE_18_GATE
+	warp_def 17, 83, 2, ROUTE_17_ROUTE_18_GATE
 
 .CoordEvents:
 	db 0
--- a/maps/Route1718Gate.asm
+++ /dev/null
@@ -1,75 +1,0 @@
-const_value set 2
-	const ROUTE1718GATE_OFFICER
-
-Route1718Gate_MapScriptHeader:
-.SceneScripts:
-	db 1
-	scene_script .DummyScene
-
-.MapCallbacks:
-	db 0
-
-.DummyScene:
-	end
-
-Route1718GateOfficerScript:
-	jumptextfaceplayer Route1718GateOfficerText
-
-UnknownScript_0x73611:
-	checkitem BICYCLE
-	iffalse UnknownScript_0x73617
-	end
-
-UnknownScript_0x73617:
-	showemote EMOTE_SHOCK, ROUTE1718GATE_OFFICER, 15
-	spriteface PLAYER, UP
-	opentext
-	writetext UnknownText_0x7364d
-	waitbutton
-	closetext
-	applymovement PLAYER, MovementData_0x73629
-	end
-
-MovementData_0x73629:
-	step RIGHT
-	turn_head LEFT
-	step_end
-
-Route1718GateOfficerText:
-	text "CYCLING ROAD"
-	line "Uphill Starts Here"
-	done
-
-UnknownText_0x7364d:
-	text "Hang on! Don't you"
-	line "have a BICYCLE?"
-
-	para "The CYCLING ROAD"
-	line "is beyond here."
-
-	para "You have to have a"
-	line "BICYCLE to go on."
-	done
-
-Route1718Gate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def 0, 4, 1, ROUTE_17
-	warp_def 0, 5, 2, ROUTE_17
-	warp_def 9, 4, 1, ROUTE_18
-	warp_def 9, 5, 2, ROUTE_18
-
-.CoordEvents:
-	db 2
-	coord_event 5, 4, 0, UnknownScript_0x73611
-	coord_event 5, 5, 0, UnknownScript_0x73611
-
-.BGEvents:
-	db 0
-
-.ObjectEvents:
-	db 1
-	object_event 5, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route1718GateOfficerScript, -1
--- /dev/null
+++ b/maps/Route17Route18Gate.asm
@@ -1,0 +1,75 @@
+const_value set 2
+	const ROUTE17ROUTE18GATE_OFFICER
+
+Route17Route18Gate_MapScripts:
+.SceneScripts:
+	db 1
+	scene_script .DummyScene
+
+.MapCallbacks:
+	db 0
+
+.DummyScene:
+	end
+
+Route17Route18GateOfficerScript:
+	jumptextfaceplayer Route17Route18GateOfficerText
+
+UnknownScript_0x73611:
+	checkitem BICYCLE
+	iffalse UnknownScript_0x73617
+	end
+
+UnknownScript_0x73617:
+	showemote EMOTE_SHOCK, ROUTE17ROUTE18GATE_OFFICER, 15
+	spriteface PLAYER, UP
+	opentext
+	writetext UnknownText_0x7364d
+	waitbutton
+	closetext
+	applymovement PLAYER, MovementData_0x73629
+	end
+
+MovementData_0x73629:
+	step RIGHT
+	turn_head LEFT
+	step_end
+
+Route17Route18GateOfficerText:
+	text "CYCLING ROAD"
+	line "Uphill Starts Here"
+	done
+
+UnknownText_0x7364d:
+	text "Hang on! Don't you"
+	line "have a BICYCLE?"
+
+	para "The CYCLING ROAD"
+	line "is beyond here."
+
+	para "You have to have a"
+	line "BICYCLE to go on."
+	done
+
+Route17Route18Gate_MapEvents:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def 0, 4, 1, ROUTE_17
+	warp_def 0, 5, 2, ROUTE_17
+	warp_def 9, 4, 1, ROUTE_18
+	warp_def 9, 5, 2, ROUTE_18
+
+.CoordEvents:
+	db 2
+	coord_event 5, 4, 0, UnknownScript_0x73611
+	coord_event 5, 5, 0, UnknownScript_0x73611
+
+.BGEvents:
+	db 0
+
+.ObjectEvents:
+	db 1
+	object_event 5, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route17Route18GateOfficerScript, -1
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -2,7 +2,7 @@
 	const ROUTE18_YOUNGSTER1
 	const ROUTE18_YOUNGSTER2
 
-Route18_MapScriptHeader:
+Route18_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -77,14 +77,14 @@
 	line "FUCHSIA CITY"
 	done
 
-Route18_MapEventHeader:
+Route18_MapEvents:
 	; filler
 	db 0, 0
 
 .Warps:
 	db 2
-	warp_def 2, 6, 3, ROUTE_17_18_GATE
-	warp_def 2, 7, 4, ROUTE_17_18_GATE
+	warp_def 2, 6, 3, ROUTE_17_ROUTE_18_GATE
+	warp_def 2, 7, 4, ROUTE_17_ROUTE_18_GATE
 
 .CoordEvents:
 	db 0
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -6,23 +6,23 @@
 	const ROUTE19_FISHER1
 	const ROUTE19_FISHER2
 
-Route19_MapScriptHeader:
+Route19_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .ClearRocks
+	callback MAPCALLBACK_TILES, .ClearRocks
 
 .ClearRocks:
 	checkevent EVENT_CINNABAR_ROCKS_CLEARED
 	iftrue .Done
-	changeblock $6, $6, $7a
-	changeblock $8, $6, $7a
-	changeblock $a, $6, $7a
-	changeblock $c, $8, $7a
-	changeblock $4, $8, $7a
-	changeblock $a, $a, $7a
+	changeblock  6,  6, $7a ; rock
+	changeblock  8,  6, $7a ; rock
+	changeblock 10,  6, $7a ; rock
+	changeblock 12,  8, $7a ; rock
+	changeblock  4,  8, $7a ; rock
+	changeblock 10, 10, $7a ; rock
 .Done:
 	return
 
@@ -234,13 +234,13 @@
 	para "FUCHSIA POLICE"
 	done
 
-Route19_MapEventHeader:
+Route19_MapEvents:
 	; filler
 	db 0, 0
 
 .Warps:
 	db 1
-	warp_def 7, 3, 3, ROUTE_19___FUCHSIA_GATE
+	warp_def 7, 3, 3, ROUTE_19_FUCHSIA_GATE
 
 .CoordEvents:
 	db 0
--- a/maps/Route19FuchsiaGate.asm
+++ b/maps/Route19FuchsiaGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE19FUCHSIAGATE_OFFICER
 
-Route19FuchsiaGate_MapScriptHeader:
+Route19FuchsiaGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	line "That's great!"
 	done
 
-Route19FuchsiaGate_MapEventHeader:
+Route19FuchsiaGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -8,7 +8,7 @@
 	const ROUTE2_POKE_BALL4
 	const ROUTE2_FRUIT_TREE
 
-Route2_MapScriptHeader:
+Route2_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -70,16 +70,16 @@
 	fruittree FRUITTREE_ROUTE_2
 
 Route2HiddenMaxEther:
-	dwb EVENT_ROUTE_2_HIDDEN_MAX_ETHER, MAX_ETHER
+	hiddenitem EVENT_ROUTE_2_HIDDEN_MAX_ETHER, MAX_ETHER
 
 Route2HiddenFullHeal:
-	dwb EVENT_ROUTE_2_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_ROUTE_2_HIDDEN_FULL_HEAL, FULL_HEAL
 
 Route2HiddenFullRestore:
-	dwb EVENT_ROUTE_2_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_ROUTE_2_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
 Route2HiddenRevive:
-	dwb EVENT_ROUTE_2_HIDDEN_REVIVE, REVIVE
+	hiddenitem EVENT_ROUTE_2_HIDDEN_REVIVE, REVIVE
 
 BugCatcherRobSeenText:
 	text "My bug #MON are"
@@ -146,7 +146,7 @@
 	text "DIGLETT'S CAVE"
 	done
 
-Route2_MapEventHeader:
+Route2_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -3,13 +3,13 @@
 	const ROUTE20_SWIMMER_GIRL2
 	const ROUTE20_SWIMMER_GUY
 
-Route20_MapScriptHeader:
+Route20_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .ClearRocks
+	callback MAPCALLBACK_NEWMAP, .ClearRocks
 
 .ClearRocks:
 	setevent EVENT_CINNABAR_ROCKS_CLEARED
@@ -112,7 +112,7 @@
 	line "LEADER: BLAINE"
 	done
 
-Route20_MapEventHeader:
+Route20_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -3,7 +3,7 @@
 	const ROUTE21_SWIMMER_GUY
 	const ROUTE21_FISHER
 
-Route21_MapScriptHeader:
+Route21_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -89,7 +89,7 @@
 	line "to fishing…"
 	done
 
-Route21_MapEventHeader:
+Route21_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route22.asm
+++ b/maps/Route22.asm
@@ -1,4 +1,4 @@
-Route22_MapScriptHeader:
+Route22_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,7 +15,7 @@
 	line "ENTRANCE"
 	done
 
-Route22_MapEventHeader:
+Route22_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route23.asm
+++ b/maps/Route23.asm
@@ -1,10 +1,10 @@
-Route23_MapScriptHeader:
+Route23_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_INDIGO_PLATEAU
@@ -22,7 +22,7 @@
 	para "#MON LEAGUE HQ"
 	done
 
-Route23_MapEventHeader:
+Route23_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route24.asm
+++ b/maps/Route24.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE24_ROCKET
 
-Route24_MapScriptHeader:
+Route24_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -29,7 +29,7 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear ROUTE24_ROCKET
 	pause 25
 	special Special_FadeInQuickly
@@ -118,7 +118,7 @@
 	cont "from, me?"
 	done
 
-Route24_MapEventHeader:
+Route24_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -11,7 +11,7 @@
 	const ROUTE25_COOLTRAINER_M2
 	const ROUTE25_POKE_BALL
 
-Route25_MapScriptHeader:
+Route25_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -48,7 +48,7 @@
 	applymovement ROUTE25_MISTY, MovementData_0x19f000
 	disappear ROUTE25_MISTY
 	clearevent EVENT_TRAINERS_IN_CERULEAN_GYM
-	setscene $0
+	setscene 0
 	special RestartMapMusic
 	end
 
@@ -74,7 +74,7 @@
 	applymovement ROUTE25_MISTY, MovementData_0x19f000
 	disappear ROUTE25_MISTY
 	clearevent EVENT_TRAINERS_IN_CERULEAN_GYM
-	setscene $0
+	setscene 0
 	special RestartMapMusic
 	end
 
@@ -191,9 +191,8 @@
 	itemball PROTEIN
 
 Route25HiddenPotion:
-	dwb EVENT_ROUTE_25_HIDDEN_POTION, POTION
+	hiddenitem EVENT_ROUTE_25_HIDDEN_POTION, POTION
 
-
 MovementData_0x19efe8:
 	big_step DOWN
 	step_end
@@ -430,7 +429,7 @@
 	text "BILL'S HOUSE"
 	done
 
-Route25_MapEventHeader:
+Route25_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -8,7 +8,7 @@
 	const ROUTE26_FRUIT_TREE
 	const ROUTE26_POKE_BALL
 
-Route26_MapScriptHeader:
+Route26_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -36,27 +36,27 @@
 	checkflag ENGINE_GAVEN
 	iftrue .WantsBattle
 	checkcellnum PHONE_COOLTRAINERM_GAVEN
-	iftrue .NumberAcceptedM
+	iftrue .NumberAccepted
 	checkevent EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
 	iftrue .AskedAlready
 	writetext CooltrainermGavenAfterText
 	buttonsound
 	setevent EVENT_GAVEN_ASKED_FOR_PHONE_NUMBER
-	scall .AskNumber1M
+	scall .AskNumber1
 	jump .AskForNumber
 
 .AskedAlready:
-	scall .AskNumber2M
+	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_COOLTRAINERM_GAVEN
-	if_equal $1, .PhoneFullM
-	if_equal $2, .NumberDeclinedM
-	trainertotext COOLTRAINERM, GAVEN3, $0
-	scall .RegisteredNumberM
-	jump .NumberAcceptedM
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext COOLTRAINERM, GAVEN3, MEM_BUFFER_0
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
 .WantsBattle:
-	scall .RematchM
+	scall .Rematch
 	winlosstext CooltrainermGaven3BeatenText, 0
 	copybytetovar wGavenFightCount
 	if_equal 2, .Fight2
@@ -91,31 +91,31 @@
 	clearflag ENGINE_GAVEN
 	end
 
-.AskNumber1M:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-.AskNumber2M:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-.RegisteredNumberM:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-.NumberAcceptedM:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-.NumberDeclinedM:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-.PhoneFullM:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-.RematchM:
+.Rematch:
 	jumpstd rematchm
 	end
 
@@ -140,27 +140,27 @@
 	checkflag ENGINE_BETH
 	iftrue .WantsBattle
 	checkcellnum PHONE_COOLTRAINERF_BETH
-	iftrue .NumberAcceptedF
+	iftrue .NumberAccepted
 	checkevent EVENT_BETH_ASKED_FOR_PHONE_NUMBER
 	iftrue .AskedAlready
 	writetext CooltrainerfBethAfterText
 	buttonsound
 	setevent EVENT_BETH_ASKED_FOR_PHONE_NUMBER
-	scall .AskNumber1F
+	scall .AskNumber1
 	jump .AskForNumber
 
 .AskedAlready:
-	scall .AskNumber2F
+	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_COOLTRAINERF_BETH
-	if_equal $1, .PhoneFullF
-	if_equal $2, .NumberDeclinedF
-	trainertotext COOLTRAINERF, BETH1, $0
-	scall .RegisteredNumberF
-	jump .NumberAcceptedF
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext COOLTRAINERF, BETH1, MEM_BUFFER_0
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
 .WantsBattle:
-	scall .RematchF
+	scall .Rematch
 	winlosstext CooltrainerfBeth1BeatenText, 0
 	copybytetovar wBethFightCount
 	if_equal 2, .Fight2
@@ -195,31 +195,31 @@
 	clearflag ENGINE_BETH
 	end
 
-.AskNumber1F:
+.AskNumber1:
 	jumpstd asknumber1f
 	end
 
-.AskNumber2F:
+.AskNumber2:
 	jumpstd asknumber2f
 	end
 
-.RegisteredNumberF:
+.RegisteredNumber:
 	jumpstd registerednumberf
 	end
 
-.NumberAcceptedF:
+.NumberAccepted:
 	jumpstd numberacceptedf
 	end
 
-.NumberDeclinedF:
+.NumberDeclined:
 	jumpstd numberdeclinedf
 	end
 
-.PhoneFullF:
+.PhoneFull:
 	jumpstd phonefullf
 	end
 
-.RematchF:
+.Rematch:
 	jumpstd rematchf
 	end
 
@@ -412,7 +412,7 @@
 	line "RECEPTION GATE"
 	done
 
-Route26_MapEventHeader:
+Route26_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route26DayofWeekSiblingsHouse.asm
+++ b/maps/Route26DayofWeekSiblingsHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE26DAYOFWEEKSIBLINGSHOUSE_POKEDEX
 
-Route26DayofWeekSiblingsHouse_MapScriptHeader:
+Route26DayofWeekSiblingsHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -70,7 +70,7 @@
 	line "ROUTE 37"
 	done
 
-Route26DayofWeekSiblingsHouse_MapEventHeader:
+Route26DayofWeekSiblingsHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route26HealSpeechHouse.asm
+++ b/maps/Route26HealSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE26HEALSPEECHHOUSE_TEACHER
 
-Route26HealSpeechHouse_MapScriptHeader:
+Route26HealSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,8 +15,8 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
-	special TrainerRankings_Healings
+	special ReloadSpritesNoPalettes
+	special Special_StubbedTrainerRankings_Healings
 	playmusic MUSIC_HEAL
 	special HealParty
 	pause 60
@@ -48,7 +48,7 @@
 	para "Keep at it!"
 	done
 
-Route26HealSpeechHouse_MapEventHeader:
+Route26HealSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -9,7 +9,7 @@
 	const ROUTE27_POKE_BALL2
 	const ROUTE27_FISHER
 
-Route27_MapScriptHeader:
+Route27_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -42,7 +42,7 @@
 	writetext Route27FisherText
 	waitbutton
 	closetext
-	setscene $1
+	setscene 1
 	end
 
 Route27FisherScript:
@@ -84,9 +84,9 @@
 	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_BIRDKEEPER_JOSE
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext BIRD_KEEPER, JOSE2, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext BIRD_KEEPER, JOSE2, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -217,9 +217,9 @@
 	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_COOLTRAINERF_REENA
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext COOLTRAINERF, REENA1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext COOLTRAINERF, REENA1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -467,7 +467,7 @@
 	line "KANTO AND JOHTO"
 	done
 
-Route27_MapEventHeader:
+Route27_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route27SandstormHouse.asm
+++ b/maps/Route27SandstormHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE27SANDSTORMHOUSE_GRANNY
 
-Route27SandstormHouse_MapScriptHeader:
+Route27SandstormHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -13,10 +13,10 @@
 	opentext
 	checkevent EVENT_GOT_TM37_SANDSTORM
 	iftrue .AlreadyGotItem
-	special GetFirstPokemonHappiness
+	special Special_GetFirstPokemonHappiness
 	writetext SandstormHouseWomanText1
 	buttonsound
-	if_greater_than $95, .Loyal
+	if_greater_than 150 - 1, .Loyal
 	jump .Disloyal
 
 .Loyal:
@@ -93,7 +93,7 @@
 	cont "and trainers."
 	done
 
-Route27SandstormHouse_MapEventHeader:
+Route27SandstormHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route28.asm
+++ b/maps/Route28.asm
@@ -1,4 +1,4 @@
-Route28_MapScriptHeader:
+Route28_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -9,14 +9,13 @@
 	jumptext Route28SignText
 
 Route28HiddenRareCandy:
-	dwb EVENT_ROUTE_28_HIDDEN_RARE_CANDY, RARE_CANDY
+	hiddenitem EVENT_ROUTE_28_HIDDEN_RARE_CANDY, RARE_CANDY
 
-
 Route28SignText:
 	text "ROUTE 28"
 	done
 
-Route28_MapEventHeader:
+Route28_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route28FamousSpeechHouse.asm
+++ b/maps/Route28FamousSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const ROUTE28FAMOUSSPEECHHOUSE_CELEBRITY
 	const ROUTE28FAMOUSSPEECHHOUSE_FEAROW
 
-Route28FamousSpeechHouse_MapScriptHeader:
+Route28FamousSpeechHouse_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -70,7 +70,7 @@
 	text "FEAROW: Feero!"
 	done
 
-Route28FamousSpeechHouse_MapEventHeader:
+Route28FamousSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -8,7 +8,7 @@
 	const ROUTE29_TUSCANY
 	const ROUTE29_POKE_BALL
 
-Route29_MapScriptHeader:
+Route29_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -16,7 +16,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Tuscany
+	callback MAPCALLBACK_OBJECTS, .Tuscany
 
 .DummyScene0:
 	end
@@ -59,7 +59,7 @@
 	writetext CatchingTutorialDebriefText
 	waitbutton
 	closetext
-	setscene $0
+	setscene 0
 	setevent EVENT_LEARNED_TO_CATCH_POKEMON
 	end
 
@@ -84,7 +84,7 @@
 	writetext CatchingTutorialDebriefText
 	waitbutton
 	closetext
-	setscene $0
+	setscene 0
 	setevent EVENT_LEARNED_TO_CATCH_POKEMON
 	end
 
@@ -93,7 +93,7 @@
 	waitbutton
 	closetext
 	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData1b
-	setscene $0
+	setscene 0
 	end
 
 Script_RefusedTutorial2:
@@ -101,7 +101,7 @@
 	waitbutton
 	closetext
 	applymovement ROUTE29_COOLTRAINER_M1, DudeMovementData2b
-	setscene $0
+	setscene 0
 	end
 
 CatchingTutorialDudeScript:
@@ -108,7 +108,7 @@
 	faceplayer
 	opentext
 	checkcode VAR_BOXSPACE
-	if_equal $0, .BoxFull
+	if_equal 0, .BoxFull
 	checkevent EVENT_LEARNED_TO_CATCH_POKEMON
 	iftrue .BoxFull
 	checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
@@ -324,7 +324,7 @@
 	line "progress."
 	done
 
-; possibly unused
+; unused
 Text_WaitingForDay:
 	text "I'm waiting for"
 	line "#MON that"
@@ -415,13 +415,13 @@
 	line "NEW BARK TOWN"
 	done
 
-Route29_MapEventHeader:
+Route29_MapEvents:
 	; filler
 	db 0, 0
 
 .Warps:
 	db 1
-	warp_def 27, 1, 3, ROUTE_29_46_GATE
+	warp_def 27, 1, 3, ROUTE_29_ROUTE_46_GATE
 
 .CoordEvents:
 	db 2
--- a/maps/Route2946Gate.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-const_value set 2
-	const ROUTE2946GATE_OFFICER
-	const ROUTE2946GATE_YOUNGSTER
-
-Route2946Gate_MapScriptHeader:
-.SceneScripts:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-Route2946GateOfficerScript:
-	jumptextfaceplayer Route2946GateOfficerText
-
-Route2946GateYoungsterScript:
-	jumptextfaceplayer Route2946GateYoungsterText
-
-Route2946GateOfficerText:
-	text "You can't climb"
-	line "ledges."
-
-	para "But you can jump"
-	line "down from them to"
-	cont "take a shortcut."
-	done
-
-Route2946GateYoungsterText:
-	text "Different kinds of"
-	line "#MON appear"
-	cont "past here."
-
-	para "If you want to"
-	line "catch them all,"
-
-	para "you have to look"
-	line "everywhere."
-	done
-
-Route2946Gate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def 4, 0, 1, ROUTE_46
-	warp_def 5, 0, 2, ROUTE_46
-	warp_def 4, 7, 1, ROUTE_29
-	warp_def 5, 7, 1, ROUTE_29
-
-.CoordEvents:
-	db 0
-
-.BGEvents:
-	db 0
-
-.ObjectEvents:
-	db 2
-	object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route2946GateOfficerScript, -1
-	object_event 6, 4, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route2946GateYoungsterScript, -1
--- /dev/null
+++ b/maps/Route29Route46Gate.asm
@@ -1,0 +1,59 @@
+const_value set 2
+	const ROUTE29ROUTE46GATE_OFFICER
+	const ROUTE29ROUTE46GATE_YOUNGSTER
+
+Route29Route46Gate_MapScripts:
+.SceneScripts:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+Route29Route46GateOfficerScript:
+	jumptextfaceplayer Route29Route46GateOfficerText
+
+Route29Route46GateYoungsterScript:
+	jumptextfaceplayer Route29Route46GateYoungsterText
+
+Route29Route46GateOfficerText:
+	text "You can't climb"
+	line "ledges."
+
+	para "But you can jump"
+	line "down from them to"
+	cont "take a shortcut."
+	done
+
+Route29Route46GateYoungsterText:
+	text "Different kinds of"
+	line "#MON appear"
+	cont "past here."
+
+	para "If you want to"
+	line "catch them all,"
+
+	para "you have to look"
+	line "everywhere."
+	done
+
+Route29Route46Gate_MapEvents:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def 4, 0, 1, ROUTE_46
+	warp_def 5, 0, 2, ROUTE_46
+	warp_def 4, 7, 1, ROUTE_29
+	warp_def 5, 7, 1, ROUTE_29
+
+.CoordEvents:
+	db 0
+
+.BGEvents:
+	db 0
+
+.ObjectEvents:
+	db 2
+	object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route29Route46GateOfficerScript, -1
+	object_event 6, 4, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route29Route46GateYoungsterScript, -1
--- a/maps/Route2Gate.asm
+++ b/maps/Route2Gate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE2GATE_SCIENTIST
 
-Route2Gate_MapScriptHeader:
+Route2Gate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -25,7 +25,7 @@
 	cont "TOWN."
 	done
 
-Route2Gate_MapEventHeader:
+Route2Gate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route2NuggetSpeechHouse.asm
+++ b/maps/Route2NuggetSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE2NUGGETSPEECHHOUSE_FISHER
 
-Route2NuggetSpeechHouse_MapScriptHeader:
+Route2NuggetSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -52,7 +52,7 @@
 	line "have to do!"
 	done
 
-Route2NuggetSpeechHouse_MapEventHeader:
+Route2NuggetSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -4,7 +4,7 @@
 	const ROUTE3_YOUNGSTER2
 	const ROUTE3_FISHER2
 
-Route3_MapScriptHeader:
+Route3_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -132,7 +132,7 @@
 	line "stairs."
 	done
 
-Route3_MapEventHeader:
+Route3_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -11,7 +11,7 @@
 	const ROUTE30_COOLTRAINER_F
 	const ROUTE30_POKE_BALL
 
-Route30_MapScriptHeader:
+Route30_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -61,9 +61,9 @@
 	scall .AskNumber2
 .RequestNumber:
 	askforphonenumber PHONE_YOUNGSTER_JOEY
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext YOUNGSTER, JOEY1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext YOUNGSTER, JOEY1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -248,9 +248,8 @@
 	fruittree FRUITTREE_ROUTE_30_2
 
 Route30HiddenPotion:
-	dwb EVENT_ROUTE_30_HIDDEN_POTION, POTION
+	hiddenitem EVENT_ROUTE_30_HIDDEN_POTION, POTION
 
-
 Route30_JoeysRattataAttacksMovement:
 	fix_facing
 	big_step UP
@@ -407,7 +406,7 @@
 	line "tougher too."
 	done
 
-Route30_MapEventHeader:
+Route30_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route30BerrySpeechHouse.asm
+++ b/maps/Route30BerrySpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE30BERRYSPEECHHOUSE_POKEFAN_M
 
-Route30BerrySpeechHouse_MapScriptHeader:
+Route30BerrySpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -46,7 +46,7 @@
 	cont "drop right off."
 	done
 
-Route30BerrySpeechHouse_MapEventHeader:
+Route30BerrySpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -7,13 +7,13 @@
 	const ROUTE31_POKE_BALL1
 	const ROUTE31_POKE_BALL2
 
-Route31_MapScriptHeader:
+Route31_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .CheckMomCall
+	callback MAPCALLBACK_NEWMAP, .CheckMomCall
 
 .CheckMomCall:
 	checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
@@ -49,9 +49,9 @@
 	scall .AskAgainSTD
 .Continue:
 	askforphonenumber PHONE_BUG_CATCHER_WADE
-	if_equal $1, .PhoneFullSTD
-	if_equal $2, .DeclinedNumberSTD
-	trainertotext BUG_CATCHER, WADE1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFullSTD
+	if_equal PHONE_CONTACT_REFUSED, .DeclinedNumberSTD
+	trainertotext BUG_CATCHER, WADE1, MEM_BUFFER_0
 	scall .RegisterNumberSTD
 	jump .AcceptedNumberSTD
 
@@ -198,10 +198,11 @@
 	writetext Text_Route31SleepyManGotMail
 	buttonsound
 	checkpokeitem ReceivedSpearowMailText
-	if_equal $0, .WrongMail
-	if_equal $2, .Refused
-	if_equal $3, .NoMail
-	if_equal $4, .LastMon
+	if_equal POKEMAIL_WRONG_MAIL, .WrongMail
+	if_equal POKEMAIL_REFUSED, .Refused
+	if_equal POKEMAIL_NO_MAIL, .NoMail
+	if_equal POKEMAIL_LAST_MON, .LastMon
+	; POKEMAIL_CORRECT
 	writetext Text_Route31HandOverMailMon
 	buttonsound
 	writetext Text_Route31ReadingMail
@@ -416,7 +417,7 @@
 	text "DARK CAVE"
 	done
 
-Route31_MapEventHeader:
+Route31_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route31VioletGate.asm
+++ b/maps/Route31VioletGate.asm
@@ -2,7 +2,7 @@
 	const ROUTE31VIOLETGATE_OFFICER
 	const ROUTE31VIOLETGATE_COOLTRAINER_F
 
-Route31VioletGate_MapScriptHeader:
+Route31VioletGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -27,7 +27,7 @@
 	cont "phone home!"
 	done
 
-Route31VioletGate_MapEventHeader:
+Route31VioletGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -14,7 +14,7 @@
 	const ROUTE32_FRIEDA
 	const ROUTE32_POKE_BALL2
 
-Route32_MapScriptHeader:
+Route32_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .DummyScene0
@@ -23,7 +23,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Frieda
+	callback MAPCALLBACK_OBJECTS, .Frieda
 
 .DummyScene0:
 	end
@@ -59,7 +59,7 @@
 	closetext
 	end
 
-.Unused:
+.Unreferenced:
 	writetext Route32CooltrainerMText_UnusedSproutTower
 	waitbutton
 	closetext
@@ -127,7 +127,7 @@
 SlowpokeTailSalesmanScript:
 	faceplayer
 _OfferToSellSlowpokeTail:
-	setscene $2
+	setscene 2
 	opentext
 	writetext Text_MillionDollarSlowpokeTail
 	yesorno
@@ -190,9 +190,9 @@
 	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_FISHER_RALPH
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext FISHER, RALPH1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext FISHER, RALPH1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -324,9 +324,9 @@
 	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_PICNICKER_LIZ
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext PICNICKER, LIZ1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext PICNICKER, LIZ1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -506,13 +506,11 @@
 	jumpstd pokecentersign
 
 Route32HiddenGreatBall:
-	dwb EVENT_ROUTE_32_HIDDEN_GREAT_BALL, GREAT_BALL
+	hiddenitem EVENT_ROUTE_32_HIDDEN_GREAT_BALL, GREAT_BALL
 
-
 Route32HiddenSuperPotion:
-	dwb EVENT_ROUTE_32_HIDDEN_SUPER_POTION, SUPER_POTION
+	hiddenitem EVENT_ROUTE_32_HIDDEN_SUPER_POTION, SUPER_POTION
 
-
 Movement_Route32CooltrainerMPushesYouBackToViolet:
 	step UP
 	step UP
@@ -839,7 +837,7 @@
 	cont "in VIOLET CITY."
 	done
 
-; possibly unused
+; unused
 Route32UnusedText:
 	text "The fishermen"
 	line "yelled at me for"
@@ -930,7 +928,7 @@
 	line "AHEAD"
 	done
 
-Route32_MapEventHeader:
+Route32_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route32Pokecenter1F.asm
+++ b/maps/Route32Pokecenter1F.asm
@@ -3,7 +3,7 @@
 	const ROUTE32POKECENTER1F_FISHING_GURU
 	const ROUTE32POKECENTER1F_COOLTRAINER_F
 
-Route32Pokecenter1F_MapScriptHeader:
+Route32Pokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -94,7 +94,7 @@
 	cont "power…"
 	done
 
-Route32Pokecenter1F_MapEventHeader:
+Route32Pokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route32RuinsOfAlphGate.asm
+++ b/maps/Route32RuinsOfAlphGate.asm
@@ -3,7 +3,7 @@
 	const ROUTE32RUINSOFALPHGATE_POKEFAN_M
 	const ROUTE32RUINSOFALPHGATE_YOUNGSTER
 
-Route32RuinsOfAlphGate_MapScriptHeader:
+Route32RuinsOfAlphGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -46,7 +46,7 @@
 	cont "what they are."
 	done
 
-Route32RuinsOfAlphGate_MapEventHeader:
+Route32RuinsOfAlphGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -3,7 +3,7 @@
 	const ROUTE33_LASS
 	const ROUTE33_FRUIT_TREE
 
-Route33_MapScriptHeader:
+Route33_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -38,9 +38,9 @@
 	scall .AskNumber2
 .AskForPhoneNumber:
 	askforphonenumber PHONE_HIKER_ANTHONY
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext HIKER, ANTHONY2, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext HIKER, ANTHONY2, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -194,7 +194,7 @@
 	text "ROUTE 33"
 	done
 
-Route33_MapEventHeader:
+Route33_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -13,13 +13,13 @@
 	const ROUTE34_COOLTRAINER_F3
 	const ROUTE34_POKE_BALL
 
-Route34_MapScriptHeader:
+Route34_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .EggCheckCallback
+	callback MAPCALLBACK_OBJECTS, .EggCheckCallback
 
 .EggCheckCallback:
 	checkflag ENGINE_DAY_CARE_MAN_HAS_EGG
@@ -59,7 +59,7 @@
 	special Special_DayCareManOutside
 	waitbutton
 	closetext
-	if_equal $1, .end_fail
+	if_equal TRUE, .end_fail
 	clearflag ENGINE_DAY_CARE_MAN_HAS_EGG
 	checkcode VAR_FACING
 	if_equal RIGHT, .walk_around_player
@@ -112,9 +112,9 @@
 	scall .AskNumber2
 .FinishAsk:
 	askforphonenumber PHONE_CAMPER_TODD
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext CAMPER, TODD1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext CAMPER, TODD1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -237,9 +237,9 @@
 	scall .AskNumber2
 .FinishAsk:
 	askforphonenumber PHONE_PICNICKER_GINA
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext PICNICKER, GINA1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext PICNICKER, GINA1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -488,13 +488,11 @@
 	itemball NUGGET
 
 Route34HiddenRareCandy:
-	dwb EVENT_ROUTE_34_HIDDEN_RARE_CANDY, RARE_CANDY
+	hiddenitem EVENT_ROUTE_34_HIDDEN_RARE_CANDY, RARE_CANDY
 
-
 Route34HiddenSuperPotion:
-	dwb EVENT_ROUTE_34_HIDDEN_SUPER_POTION, SUPER_POTION
+	hiddenitem EVENT_ROUTE_34_HIDDEN_SUPER_POTION, SUPER_POTION
 
-
 Route34MovementData_DayCareManWalksBackInside:
 	slow_step LEFT
 	slow_step LEFT
@@ -762,7 +760,7 @@
 	line "#MON FOR YOU!"
 	done
 
-Route34_MapEventHeader:
+Route34_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -4,13 +4,13 @@
 	const ROUTE34ILEXFORESTGATE_LASS
 	const ROUTE34ILEXFORESTGATE_TEACHER2
 
-Route34IlexForestGate_MapScriptHeader:
+Route34IlexForestGate_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .IsForestRestless
+	callback MAPCALLBACK_OBJECTS, .IsForestRestless
 
 .IsForestRestless:
 	checkevent EVENT_FOREST_IS_RESTLESS
@@ -135,7 +135,7 @@
 	cont "type #MON."
 	done
 
-Route34IlexForestGate_MapEventHeader:
+Route34IlexForestGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -11,7 +11,7 @@
 	const ROUTE35_FRUIT_TREE
 	const ROUTE35_POKE_BALL
 
-Route35_MapScriptHeader:
+Route35_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -50,9 +50,9 @@
 	scall UnknownScript_0x19c907
 .AskForNumber:
 	askforphonenumber PHONE_JUGGLER_IRWIN
-	if_equal $1, UnknownScript_0x19c917
-	if_equal $2, UnknownScript_0x19c913
-	trainertotext JUGGLER, IRWIN1, $0
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x19c917
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x19c913
+	trainertotext JUGGLER, IRWIN1, MEM_BUFFER_0
 	scall UnknownScript_0x19c90b
 	jump UnknownScript_0x19c90f
 
@@ -153,9 +153,9 @@
 	scall UnknownScript_0x19c907
 .AskForNumber:
 	askforphonenumber PHONE_BUG_CATCHER_ARNIE
-	if_equal $1, UnknownScript_0x19c917
-	if_equal $2, UnknownScript_0x19c913
-	trainertotext BUG_CATCHER, ARNIE1, $0
+	if_equal PHONE_CONTACTS_FULL, UnknownScript_0x19c917
+	if_equal PHONE_CONTACT_REFUSED, UnknownScript_0x19c913
+	trainertotext BUG_CATCHER, ARNIE1, MEM_BUFFER_0
 	scall UnknownScript_0x19c90b
 	jump UnknownScript_0x19c90f
 
@@ -462,7 +462,7 @@
 	text "ROUTE 35"
 	done
 
-Route35_MapEventHeader:
+Route35_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route35GoldenrodGate.asm
+++ b/maps/Route35GoldenrodGate.asm
@@ -3,7 +3,7 @@
 	const ROUTE35GOLDENRODGATE_POKEFAN_F
 	const ROUTE35GOLDENRODGATE_FISHER
 
-Route35GoldenrodGate_MapScriptHeader:
+Route35GoldenrodGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -195,7 +195,7 @@
 	line "different kinds."
 	done
 
-Route35GoldenrodGate_MapEventHeader:
+Route35GoldenrodGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route35NationalParkGate.asm
+++ b/maps/Route35NationalParkGate.asm
@@ -3,7 +3,7 @@
 	const ROUTE35NATIONALPARKGATE_YOUNGSTER
 	const ROUTE35NATIONALPARKGATE_OFFICER2
 
-Route35NationalParkGate_MapScriptHeader:
+Route35NationalParkGate_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .DummyScene0
@@ -12,8 +12,8 @@
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .CheckIfContestRunning
-	dbw MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
+	callback MAPCALLBACK_NEWMAP, .CheckIfContestRunning
+	callback MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
 
 .DummyScene0:
 	end
@@ -28,11 +28,11 @@
 .CheckIfContestRunning:
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iftrue .BugContestIsRunning
-	setscene $0
+	setscene 0
 	return
 
 .BugContestIsRunning:
-	setscene $2
+	setscene 2
 	return
 
 .CheckIfContestAvailable:
@@ -58,8 +58,8 @@
 	spriteface ROUTE35NATIONALPARKGATE_OFFICER1, RIGHT
 	opentext
 	checkcode VAR_CONTESTMINUTES
-	addvar $1
-	RAM2MEM $0
+	addvar 1
+	vartomem MEM_BUFFER_0
 	writetext UnknownText_0x6a79a
 	yesorno
 	iffalse .GoBackToContest
@@ -74,9 +74,9 @@
 	closetext
 	scall Route35NationalParkGate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
-	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
+	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, 10, 47
 	end
 
 OfficerScript_0x6a204:
@@ -94,8 +94,8 @@
 	yesorno
 	iffalse Route35NationalParkGate_DeclinedToParticipate
 	checkcode VAR_PARTYCOUNT
-	if_greater_than $1, Route35NationalParkGate_LeaveTheRestBehind
-	special ContestDropOffMons
+	if_greater_than 1, Route35NationalParkGate_LeaveTheRestBehind
+	special Special_ContestDropOffMons
 	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 Route35NationalParkGate_OkayToProceed:
 	setflag ENGINE_BUG_CONTEST_TIMER
@@ -111,10 +111,10 @@
 	special Special_GiveParkBalls
 	scall Route35NationalParkGate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
 	special Special_SelectRandomBugContestContestants
-	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
+	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, 10, 47
 	end
 
 Route35NationalParkGate_EnterContest:
@@ -129,17 +129,17 @@
 
 Route35NationalParkGate_LeaveTheRestBehind:
 	checkcode VAR_PARTYCOUNT
-	if_less_than 6, Route35NationalParkGate_LessThanFullParty
+	if_less_than PARTY_LENGTH, Route35NationalParkGate_LessThanFullParty
 	checkcode VAR_BOXSPACE
 	if_equal 0, Route35NationalParkGate_NoRoomInBox
 
 Route35NationalParkGate_LessThanFullParty: ; 6a27d
-	special CheckFirstMonIsEgg
-	if_equal $1, Route35NationalParkGate_FirstMonIsEgg
+	special Special_CheckFirstMonIsEgg
+	if_equal TRUE, Route35NationalParkGate_FirstMonIsEgg
 	writetext UnknownText_0x6a4c6
 	yesorno
 	iffalse Route35NationalParkGate_DeclinedToLeaveMonsBehind
-	special ContestDropOffMons
+	special Special_ContestDropOffMons
 	iftrue Route35NationalParkGate_FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6a537
@@ -374,7 +374,7 @@
 UnknownText_0x6a79a:
 	text "You still have @"
 	text_from_ram StringBuffer3
-	text ""
+	text_start
 	line "minute(s) left."
 
 	para "Do you want to"
@@ -437,7 +437,7 @@
 	line "the contest."
 	done
 
-Route35NationalParkGate_MapEventHeader:
+Route35NationalParkGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -9,7 +9,7 @@
 	const ROUTE36_FLORIA
 	const ROUTE36_SUICUNE
 
-Route36_MapScriptHeader:
+Route36_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -17,7 +17,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .ArthurCallback
+	callback MAPCALLBACK_OBJECTS, .ArthurCallback
 
 .DummyScene0:
 	end
@@ -44,9 +44,9 @@
 	disappear ROUTE36_SUICUNE
 	spriteface PLAYER, DOWN
 	pause 10
-	setscene $0
+	setscene 0
 	clearevent EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
-	setmapscene CIANWOOD_CITY, $1
+	setmapscene CIANWOOD_CITY, 1
 	end
 
 SudowoodoScript:
@@ -94,8 +94,8 @@
 	applymovement ROUTE36_WEIRD_TREE, WeirdTreeMovement_Flee
 	disappear ROUTE36_WEIRD_TREE
 	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
-	special MapCallbackSprites_LoadUsedSpritesGFX
-	special RefreshSprites
+	special Special_LoadUsedSpritesGFX
+	special Special_RefreshSprites
 	end
 
 Route36FloriaScript:
@@ -191,9 +191,9 @@
 	scall .AskNumber2
 .ContinueAskForPhoneNumber:
 	askforphonenumber PHONE_SCHOOLBOY_ALAN
-	if_equal $1, .PhoneFull
-	if_equal $2, .NumberDeclined
-	trainertotext SCHOOLBOY, ALAN1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext SCHOOLBOY, ALAN1, MEM_BUFFER_0
 	scall .RegisteredNumber
 	jump .NumberAccepted
 
@@ -659,7 +659,7 @@
 	line "landmarks."
 	done
 
-Route36_MapEventHeader:
+Route36_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route36NationalParkGate.asm
+++ b/maps/Route36NationalParkGate.asm
@@ -12,7 +12,7 @@
 	const ROUTE36NATIONALPARKGATE_YOUNGSTER7
 	const ROUTE36NATIONALPARKGATE_OFFICER2
 
-Route36NationalParkGate_MapScriptHeader:
+Route36NationalParkGate_MapScripts:
 .SceneScripts:
 	db 3
 	scene_script .DummyScene0
@@ -21,8 +21,8 @@
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_NEWMAP, .CheckIfContestRunning
-	dbw MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
+	callback MAPCALLBACK_NEWMAP, .CheckIfContestRunning
+	callback MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
 
 .DummyScene0:
 	end
@@ -37,11 +37,11 @@
 .CheckIfContestRunning:
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iftrue .BugContestIsRunning
-	setscene $0
+	setscene 0
 	return
 
 .BugContestIsRunning:
-	setscene $2
+	setscene 2
 	return
 
 .CheckIfContestAvailable:
@@ -67,8 +67,8 @@
 	spriteface PLAYER, UP
 	opentext
 	checkcode VAR_CONTESTMINUTES
-	addvar $1
-	RAM2MEM $0
+	addvar 1
+	vartomem MEM_BUFFER_0
 	writetext UnknownText_0x6b284
 	yesorno
 	iffalse .GoBackToContest
@@ -76,7 +76,7 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	scall .CopyContestants
 	disappear ROUTE36NATIONALPARKGATE_OFFICER1
 	appear ROUTE36NATIONALPARKGATE_OFFICER2
@@ -91,9 +91,9 @@
 	closetext
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
-	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
+	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, 33, 18
 	end
 
 .CopyContestants:
@@ -155,8 +155,8 @@
 	yesorno
 	iffalse .DecidedNotToJoinContest
 	checkcode VAR_PARTYCOUNT
-	if_greater_than $1, .LeaveMonsWithOfficer
-	special ContestDropOffMons
+	if_greater_than 1, .LeaveMonsWithOfficer
+	special Special_ContestDropOffMons
 	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 .ResumeStartingContest:
 	setflag ENGINE_BUG_CONTEST_TIMER
@@ -174,24 +174,24 @@
 	special Special_GiveParkBalls
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
 	special Special_SelectRandomBugContestContestants
-	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
+	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, 33, 18
 	end
 
 .LeaveMonsWithOfficer:
 	checkcode VAR_PARTYCOUNT
-	if_less_than $6, .ContinueLeavingMons
+	if_less_than PARTY_LENGTH, .ContinueLeavingMons
 	checkcode VAR_BOXSPACE
-	if_equal $0, .BoxFull
+	if_equal 0, .BoxFull
 .ContinueLeavingMons:
-	special CheckFirstMonIsEgg
-	if_equal $1, .FirstMonIsEgg
+	special Special_CheckFirstMonIsEgg
+	if_equal TRUE, .FirstMonIsEgg
 	writetext UnknownText_0x6afb0
 	yesorno
 	iffalse .RefusedToLeaveMons
-	special ContestDropOffMons
+	special Special_ContestDropOffMons
 	iftrue .FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6b021
@@ -624,7 +624,7 @@
 UnknownText_0x6b284:
 	text "You still have @"
 	text_from_ram StringBuffer3
-	text ""
+	text_start
 	line "minute(s) left."
 
 	para "Do you want to"
@@ -799,7 +799,6 @@
 ; 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"
@@ -850,7 +849,7 @@
 	cont "for you."
 	done
 
-Route36NationalParkGate_MapEventHeader:
+Route36NationalParkGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route36RuinsOfAlphGate.asm
+++ b/maps/Route36RuinsOfAlphGate.asm
@@ -2,7 +2,7 @@
 	const ROUTE36RUINSOFALPHGATE_OFFICER
 	const ROUTE36RUINSOFALPHGATE_GRAMPS
 
-Route36RuinsOfAlphGate_MapScriptHeader:
+Route36RuinsOfAlphGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -34,7 +34,7 @@
 	line "RUINS OF ALPH."
 	done
 
-Route36RuinsOfAlphGate_MapEventHeader:
+Route36RuinsOfAlphGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -7,13 +7,13 @@
 	const ROUTE37_FRUIT_TREE2
 	const ROUTE37_FRUIT_TREE3
 
-Route37_MapScriptHeader:
+Route37_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Sunny
+	callback MAPCALLBACK_OBJECTS, .Sunny
 
 .Sunny:
 	checkcode VAR_WEEKDAY
@@ -114,9 +114,8 @@
 	fruittree FRUITTREE_ROUTE_37_3
 
 Route37HiddenEther:
-	dwb EVENT_ROUTE_37_HIDDEN_ETHER, ETHER
+	hiddenitem EVENT_ROUTE_37_HIDDEN_ETHER, ETHER
 
-
 TwinsAnnandanne1SeenText:
 	text "ANN: ANNE and I"
 	line "are in this to-"
@@ -238,7 +237,7 @@
 	text "ROUTE 37"
 	done
 
-Route37_MapEventHeader:
+Route37_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -7,7 +7,7 @@
 	const ROUTE38_FRUIT_TREE
 	const ROUTE38_BUENA2
 
-Route38_MapScriptHeader:
+Route38_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -61,9 +61,9 @@
 	scall .AskNumber2F
 .AskForPhoneNumber:
 	askforphonenumber PHONE_LASS_DANA
-	if_equal $1, .PhoneFull
-	if_equal $2, .DeclinedPhoneNumber
-	trainertotext LASS, DANA1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .DeclinedPhoneNumber
+	trainertotext LASS, DANA1, MEM_BUFFER_0
 	scall .RegisteredPhoneNumber
 	jump .NumberAccepted
 
@@ -197,9 +197,9 @@
 	scall .AskPhoneNumber2
 .AskToRegisterNumber:
 	askforphonenumber PHONE_SCHOOLBOY_CHAD
-	if_equal $1, .PhoneFull
-	if_equal $2, .SaidNo
-	trainertotext SCHOOLBOY, CHAD1, $0
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .SaidNo
+	trainertotext SCHOOLBOY, CHAD1, MEM_BUFFER_0
 	scall .RegisteredChad
 	jump .HaveChadsNumber
 
@@ -472,7 +472,7 @@
 	cont "its evolution."
 	done
 
-Route38_MapEventHeader:
+Route38_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route38EcruteakGate.asm
+++ b/maps/Route38EcruteakGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE38ECRUTEAKGATE_OFFICER
 
-Route38EcruteakGate_MapScriptHeader:
+Route38EcruteakGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -24,7 +24,7 @@
 	line "way to get here."
 	done
 
-Route38EcruteakGate_MapEventHeader:
+Route38EcruteakGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -10,7 +10,7 @@
 	const ROUTE39_FRUIT_TREE
 	const ROUTE39_POKEFAN_F2
 
-Route39_MapScriptHeader:
+Route39_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -35,7 +35,7 @@
 	checkflag ENGINE_DEREK_HAS_NUGGET
 	iftrue .HasNugget
 	checkcellnum PHONE_POKEFANM_DEREK
-	iftrue .NumberAcceptedM
+	iftrue .NumberAccepted
 	checkpoke PIKACHU
 	iffalse .WantsPikachu
 	checkevent EVENT_DEREK_ASKED_FOR_PHONE_NUMBER
@@ -43,28 +43,28 @@
 	writetext PokefanMDerekText_NotBragging
 	buttonsound
 	setevent EVENT_DEREK_ASKED_FOR_PHONE_NUMBER
-	scall .AskNumber1M
+	scall .AskNumber1
 	jump .AskForNumber
 
 .AskedAlready:
-	scall .AskNumber2M
+	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_POKEFANM_DEREK
-	if_equal $1, .PhoneFullM
-	if_equal $2, .NumberDeclinedM
-	trainertotext POKEFANM, DEREK1, $0
-	scall .RegisteredNumberM
-	jump .NumberAcceptedM
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext POKEFANM, DEREK1, MEM_BUFFER_0
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
 .HasNugget:
-	scall .GiftM
+	scall .Gift
 	verbosegiveitem NUGGET
-	iffalse .PackFull
+	iffalse .NoRoom
 	clearflag ENGINE_DEREK_HAS_NUGGET
-	jump .NumberAcceptedM
+	jump .NumberAccepted
 
-.PackFull:
-	jump .PackFullM
+.NoRoom:
+	jump .PackFull
 
 .WantsPikachu:
 	writetext PokefanMDerekPikachuIsItText
@@ -72,35 +72,35 @@
 	closetext
 	end
 
-.AskNumber1M:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-.AskNumber2M:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-.RegisteredNumberM:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-.NumberAcceptedM:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-.NumberDeclinedM:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-.PhoneFullM:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-.GiftM:
+.Gift:
 	jumpstd giftm
 	end
 
-.PackFullM:
+.PackFull:
 	jumpstd packfullm
 	end
 
@@ -180,9 +180,8 @@
 	fruittree FRUITTREE_ROUTE_39
 
 Route39HiddenNugget:
-	dwb EVENT_ROUTE_39_HIDDEN_NUGGET, NUGGET
+	hiddenitem EVENT_ROUTE_39_HIDDEN_NUGGET, NUGGET
 
-
 Route39MiltankText:
 	text "MILTANK: Mooo!"
 	done
@@ -344,7 +343,7 @@
 	line "any tree you see!"
 	done
 
-Route39_MapEventHeader:
+Route39_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route39Barn.asm
+++ b/maps/Route39Barn.asm
@@ -3,7 +3,7 @@
 	const ROUTE39BARN_TWIN2
 	const ROUTE39BARN_MOOMOO
 
-Route39Barn_MapScriptHeader:
+Route39Barn_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -52,7 +52,7 @@
 	iftrue .HappyCow
 	writetext Text_WeakMoo
 	writebyte MILTANK
-	special PlaySlowCry
+	special Special_PlaySlowCry
 	buttonsound
 	writetext Text_ItsCryIsWeak
 	checkevent EVENT_TALKED_TO_FARMER_ABOUT_MOOMOO
@@ -188,7 +188,7 @@
 	para "MILTANK looks sad."
 	done
 
-Route39Barn_MapEventHeader:
+Route39Barn_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -2,7 +2,7 @@
 	const ROUTE39FARMHOUSE_POKEFAN_M
 	const ROUTE39FARMHOUSE_POKEFAN_F
 
-Route39Farmhouse_MapScriptHeader:
+Route39Farmhouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -24,15 +24,15 @@
 	checkitem MOOMOO_MILK
 	iftrue FarmerMScript_Milking
 	writetext FarmerMText_BuyMilk
-	special PlaceMoneyTopRight
+	special Special_PlaceMoneyTopRight
 	yesorno
 	iffalse FarmerMScript_NoSale
-	checkmoney $0, 500
-	if_equal $2, FarmerMScript_NoMoney
+	checkmoney YOUR_MONEY, 500
+	if_equal HAVE_LESS, FarmerMScript_NoMoney
 	giveitem MOOMOO_MILK
 	iffalse FarmerMScript_NoRoom
-	takemoney $0, 500
-	special PlaceMoneyTopRight
+	takemoney YOUR_MONEY, 500
+	special Special_PlaceMoneyTopRight
 	waitsfx
 	playsound SFX_TRANSACTION
 	writetext FarmerMText_GotMilk
@@ -192,7 +192,7 @@
 	cont "it, hon."
 	done
 
-Route39Farmhouse_MapEventHeader:
+Route39Farmhouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -4,7 +4,7 @@
 	const ROUTE4_LASS2
 	const ROUTE4_POKE_BALL
 
-Route4_MapScriptHeader:
+Route4_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -51,9 +51,8 @@
 	itemball HP_UP
 
 Route4HiddenUltraBall:
-	dwb EVENT_ROUTE_4_HIDDEN_ULTRA_BALL, ULTRA_BALL
+	hiddenitem EVENT_ROUTE_4_HIDDEN_ULTRA_BALL, ULTRA_BALL
 
-
 BirdKeeperHankSeenText:
 	text "I'm raising my"
 	line "#MON. Want to"
@@ -121,7 +120,7 @@
 	line "stairs."
 	done
 
-Route4_MapEventHeader:
+Route4_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -12,13 +12,13 @@
 	const ROUTE40_LASS2
 	const ROUTE40_STANDING_YOUNGSTER
 
-Route40_MapScriptHeader:
+Route40_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .MonicaCallback
+	callback MAPCALLBACK_OBJECTS, .MonicaCallback
 
 .MonicaCallback:
 	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
@@ -79,7 +79,7 @@
 	jumptextfaceplayer Route40Lass1Text
 
 PokefanMScript_0x1a61c7:
-	special Mobile_DummyReturnFalse
+	special Special_Mobile_DummyReturnFalse
 	iftrue .mobile
 	jumptextfaceplayer UnknownText_0x1a646a
 
@@ -135,7 +135,7 @@
 	jumpstd smashrock
 
 Route40HiddenHyperPotion:
-	dwb EVENT_ROUTE_40_HIDDEN_HYPER_POTION, HYPER_POTION
+	hiddenitem EVENT_ROUTE_40_HIDDEN_HYPER_POTION, HYPER_POTION
 
 MovementData_0x1a621c:
 	step RIGHT
@@ -337,7 +337,7 @@
 	line "OLIVINE CITY"
 	done
 
-Route40_MapEventHeader:
+Route40_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route40BattleTowerGate.asm
+++ b/maps/Route40BattleTowerGate.asm
@@ -2,13 +2,13 @@
 	const ROUTE40BATTLETOWERGATE_ROCKER
 	const ROUTE40BATTLETOWERGATE_TWIN
 
-Route40BattleTowerGate_MapScriptHeader:
+Route40BattleTowerGate_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .ShowSailor
+	callback MAPCALLBACK_OBJECTS, .ShowSailor
 
 .ShowSailor:
 	clearevent EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
@@ -70,7 +70,7 @@
 	line "them now!"
 	done
 
-Route40BattleTowerGate_MapEventHeader:
+Route40BattleTowerGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -10,7 +10,7 @@
 	const ROUTE41_SWIMMER_GIRL4
 	const ROUTE41_SWIMMER_GIRL5
 
-Route41_MapScriptHeader:
+Route41_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -132,7 +132,7 @@
 	jumpstd smashrock
 
 Route41HiddenMaxEther:
-	dwb EVENT_ROUTE_41_HIDDEN_MAX_ETHER, MAX_ETHER
+	hiddenitem EVENT_ROUTE_41_HIDDEN_MAX_ETHER, MAX_ETHER
 
 SwimmermCharlieSeenText:
 	text "The water's warm"
@@ -341,7 +341,7 @@
 	line "it's scary."
 	done
 
-Route41_MapEventHeader:
+Route41_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -9,7 +9,7 @@
 	const ROUTE42_POKE_BALL2
 	const ROUTE42_SUICUNE
 
-Route42_MapScriptHeader:
+Route42_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -31,9 +31,9 @@
 	applymovement ROUTE42_SUICUNE, MovementData_0x1a9356
 	disappear ROUTE42_SUICUNE
 	pause 10
-	setscene $0
+	setscene 0
 	clearevent EVENT_SAW_SUICUNE_ON_ROUTE_36
-	setmapscene ROUTE_36, $1
+	setmapscene ROUTE_36, 1
 	end
 
 TrainerFisherTully:
@@ -48,27 +48,27 @@
 	checkflag ENGINE_TULLY_HAS_WATER_STONE
 	iftrue .HasWaterStone
 	checkcellnum PHONE_FISHER_TULLY
-	iftrue .NumberAcceptedM
+	iftrue .NumberAccepted
 	checkevent EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
 	iftrue .AskedAlready
 	writetext FisherTullyAfterBattleText
 	buttonsound
 	setevent EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
-	scall .AskNumber1M
+	scall .AskNumber1
 	jump .AskForNumber
 
 .AskedAlready:
-	scall .AskNumber2M
+	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_FISHER_TULLY
-	if_equal $1, .PhoneFullM
-	if_equal $2, .NumberDeclinedM
-	trainertotext FISHER, TULLY1, $0
-	scall .RegisteredNumberM
-	jump .NumberAcceptedM
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext FISHER, TULLY1, MEM_BUFFER_0
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
 .WantsBattle:
-	scall .RematchM
+	scall .Rematch
 	winlosstext FisherTullyBeatenText, 0
 	copybytetovar wTullyFightCount
 	if_equal 3, .Fight3
@@ -116,49 +116,49 @@
 	end
 
 .HasWaterStone:
-	scall .GiftM
+	scall .Gift
 	verbosegiveitem WATER_STONE
 	iffalse .NoRoom
 	clearflag ENGINE_TULLY_HAS_WATER_STONE
 	setevent EVENT_TULLY_GAVE_WATER_STONE
-	jump .NumberAcceptedM
+	jump .NumberAccepted
 
 .NoRoom:
-	jump .PackFullM
+	jump .PackFull
 
-.AskNumber1M:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-.AskNumber2M:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-.RegisteredNumberM:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-.NumberAcceptedM:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-.NumberDeclinedM:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-.PhoneFullM:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-.RematchM:
+.Rematch:
 	jumpstd rematchm
 	end
 
-.GiftM:
+.Gift:
 	jumpstd giftm
 	end
 
-.PackFullM:
+.PackFull:
 	jumpstd packfullm
 	end
 
@@ -212,11 +212,10 @@
 	fruittree FRUITTREE_ROUTE_42_3
 
 Route42HiddenMaxPotion:
-	dwb EVENT_ROUTE_42_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_ROUTE_42_HIDDEN_MAX_POTION, MAX_POTION
 
-
 MovementData_0x1a9356:
-	db $39 ; movement
+	set_sliding
 	fast_jump_step UP
 	fast_jump_step UP
 	fast_jump_step UP
@@ -223,7 +222,7 @@
 	fast_jump_step RIGHT
 	fast_jump_step RIGHT
 	fast_jump_step RIGHT
-	db $38 ; movement
+	remove_sliding
 	step_end
 
 FisherTullySeenText:
@@ -319,7 +318,7 @@
 	line "MAHOGANY TOWN"
 	done
 
-Route42_MapEventHeader:
+Route42_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route42EcruteakGate.asm
+++ b/maps/Route42EcruteakGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE42ECRUTEAKGATE_OFFICER
 
-Route42EcruteakGate_MapScriptHeader:
+Route42EcruteakGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 	line "get lost in there."
 	done
 
-Route42EcruteakGate_MapEventHeader:
+Route42EcruteakGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -8,22 +8,22 @@
 	const ROUTE43_FRUIT_TREE
 	const ROUTE43_POKE_BALL
 
-Route43_MapScriptHeader:
+Route43_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .CheckIfRockets
+	callback MAPCALLBACK_NEWMAP, .CheckIfRockets
 
 .CheckIfRockets:
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue .NoRockets
-	setmapscene ROUTE_43_GATE, $0
+	setmapscene ROUTE_43_GATE, 0
 	return
 
 .NoRockets:
-	setmapscene ROUTE_43_GATE, $1
+	setmapscene ROUTE_43_GATE, 1
 	return
 
 TrainerCamperSpencer:
@@ -58,27 +58,27 @@
 	checkflag ENGINE_BRENT
 	iftrue .WantsBattle
 	checkcellnum PHONE_POKEMANIAC_BRENT
-	iftrue .NumberAcceptedM
+	iftrue .NumberAccepted
 	checkevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
 	iftrue .AskedAlready
 	writetext PokemaniacBrentAfterBattleText
 	buttonsound
 	setevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
-	scall .AskNumber1M
+	scall .AskNumber1
 	jump .AskForNumber
 
 .AskedAlready:
-	scall .AskNumber2M
+	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_POKEMANIAC_BRENT
-	if_equal $1, .PhoneFullM
-	if_equal $2, .NumberDeclinedM
-	trainertotext POKEMANIAC, BRENT1, $0
-	scall .RegisteredNumberM
-	jump .NumberAcceptedM
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext POKEMANIAC, BRENT1, MEM_BUFFER_0
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
 .WantsBattle:
-	scall .RematchM
+	scall .Rematch
 	winlosstext PokemaniacBrentBeatenText, 0
 	copybytetovar wBrentFightCount
 	if_equal 3, .Fight3
@@ -125,31 +125,31 @@
 	clearflag ENGINE_BRENT
 	end
 
-.AskNumber1M:
+.AskNumber1:
 	jumpstd asknumber1m
 	end
 
-.AskNumber2M:
+.AskNumber2:
 	jumpstd asknumber2m
 	end
 
-.RegisteredNumberM:
+.RegisteredNumber:
 	jumpstd registerednumberm
 	end
 
-.NumberAcceptedM:
+.NumberAccepted:
 	jumpstd numberacceptedm
 	end
 
-.NumberDeclinedM:
+.NumberDeclined:
 	jumpstd numberdeclinedm
 	end
 
-.PhoneFullM:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-.RematchM:
+.Rematch:
 	jumpstd rematchm
 	end
 
@@ -187,7 +187,7 @@
 	checkflag ENGINE_TIFFANY_HAS_PINK_BOW
 	iftrue .HasPinkBow
 	checkcellnum PHONE_PICNICKER_TIFFANY
-	iftrue .NumberAcceptedF
+	iftrue .NumberAccepted
 	checkpoke CLEFAIRY
 	iffalse .NoClefairy
 	checkevent EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
@@ -195,21 +195,21 @@
 	writetext PicnickerTiffanyWantsPicnicText
 	buttonsound
 	setevent EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
-	scall .AskNumber1F
+	scall .AskNumber1
 	jump .AskForNumber
 
 .AskedAlready:
-	scall .AskNumber2F
+	scall .AskNumber2
 .AskForNumber:
 	askforphonenumber PHONE_PICNICKER_TIFFANY
-	if_equal $1, .PhoneFullF
-	if_equal $2, .NumberDeclinedF
-	trainertotext PICNICKER, TIFFANY3, $0
-	scall .RegisteredNumberF
-	jump .NumberAcceptedF
+	if_equal PHONE_CONTACTS_FULL, .PhoneFull
+	if_equal PHONE_CONTACT_REFUSED, .NumberDeclined
+	trainertotext PICNICKER, TIFFANY3, MEM_BUFFER_0
+	scall .RegisteredNumber
+	jump .NumberAccepted
 
 .WantsBattle:
-	scall .RematchF
+	scall .Rematch
 	winlosstext PicnickerTiffanyBeatenText, 0
 	copybytetovar wTiffanyFightCount
 	if_equal 3, .Fight3
@@ -257,15 +257,15 @@
 	end
 
 .HasPinkBow:
-	scall .GiftF
+	scall .Gift
 	verbosegiveitem PINK_BOW
 	iffalse .NoRoom
 	clearflag ENGINE_TIFFANY_HAS_PINK_BOW
 	setevent EVENT_TIFFANY_GAVE_PINK_BOW
-	jump .NumberAcceptedF
+	jump .NumberAccepted
 
 .NoRoom:
-	jump .PackFullF
+	jump .PackFull
 
 .NoClefairy:
 	writetext PicnickerTiffanyClefairyText
@@ -273,39 +273,39 @@
 	closetext
 	end
 
-.AskNumber1F:
+.AskNumber1:
 	jumpstd asknumber1f
 	end
 
-.AskNumber2F:
+.AskNumber2:
 	jumpstd asknumber2f
 	end
 
-.RegisteredNumberF:
+.RegisteredNumber:
 	jumpstd registerednumberf
 	end
 
-.NumberAcceptedF:
+.NumberAccepted:
 	jumpstd numberacceptedf
 	end
 
-.NumberDeclinedF:
+.NumberDeclined:
 	jumpstd numberdeclinedf
 	end
 
-.PhoneFullF:
+.PhoneFull:
 	jumpstd phonefullf
 	end
 
-.RematchF:
+.Rematch:
 	jumpstd rematchf
 	end
 
-.GiftF:
+.Gift:
 	jumpstd giftf
 	end
 
-.PackFullF:
+.PackFull:
 	jumpstd packfullf
 	end
 
@@ -500,7 +500,7 @@
 	line "#MON's type."
 	done
 
-Route43_MapEventHeader:
+Route43_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route43Gate.asm
+++ b/maps/Route43Gate.asm
@@ -5,7 +5,7 @@
 	const ROUTE43GATE_ROCKET1
 	const ROUTE43GATE_ROCKET2
 
-Route43Gate_MapScriptHeader:
+Route43Gate_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .RocketShakedown
@@ -13,7 +13,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .CheckIfRockets
+	callback MAPCALLBACK_NEWMAP, .CheckIfRockets
 
 .RocketShakedown:
 	priorityjump .RocketTakeover
@@ -25,11 +25,11 @@
 .CheckIfRockets:
 	checkevent EVENT_CLEARED_ROCKET_HIDEOUT
 	iftrue .NoRockets
-	setmapscene ROUTE_43, $0
+	setmapscene ROUTE_43, 0
 	return
 
 .NoRockets:
-	setmapscene ROUTE_43, $1
+	setmapscene ROUTE_43, 1
 	return
 
 .RocketTakeover:
@@ -37,7 +37,7 @@
 	checkcode VAR_FACING
 	if_equal DOWN, RocketScript_Southbound
 	if_equal UP, RocketScript_Northbound
-	setscene $1
+	setscene 1
 	end
 
 RocketScript_Southbound:
@@ -50,17 +50,17 @@
 	opentext
 	writetext RocketText_TollFee
 	buttonsound
-	checkmoney $0, ROUTE43GATE_TOLL - 1
-	if_equal $0, RocketScript_TollSouth
+	checkmoney YOUR_MONEY, ROUTE43GATE_TOLL - 1
+	if_equal HAVE_MORE, RocketScript_TollSouth
 	jump RocketScript_YoureBrokeSouth
 
 RocketScript_TollSouth:
-	takemoney $0, ROUTE43GATE_TOLL
+	takemoney YOUR_MONEY, ROUTE43GATE_TOLL
 	writetext RocketText_ThankYou
 	jump RocketScript_ShakeDownSouth
 
 RocketScript_YoureBrokeSouth:
-	takemoney $0, ROUTE43GATE_TOLL
+	takemoney YOUR_MONEY, ROUTE43GATE_TOLL
 	writetext RocketText_AllYouGot
 	jump RocketScript_ShakeDownSouth
 
@@ -69,7 +69,7 @@
 	closetext
 	applymovement ROUTE43GATE_ROCKET1, Rocket1Script_LetsYouPassSouth
 	applymovement ROUTE43GATE_ROCKET2, Rocket2Script_LetsYouPassSouth
-	setscene $1
+	setscene 1
 	special RestartMapMusic
 	end
 
@@ -82,17 +82,17 @@
 	opentext
 	writetext RocketText_TollFee
 	buttonsound
-	checkmoney $0, ROUTE43GATE_TOLL - 1
-	if_equal $0, RocketScript_TollNorth
+	checkmoney YOUR_MONEY, ROUTE43GATE_TOLL - 1
+	if_equal HAVE_MORE, RocketScript_TollNorth
 	jump RocketScript_YoureBrokeNorth
 
 RocketScript_TollNorth:
-	takemoney $0, ROUTE43GATE_TOLL
+	takemoney YOUR_MONEY, ROUTE43GATE_TOLL
 	writetext RocketText_ThankYou
 	jump RocketScript_ShakeDownNorth
 
 RocketScript_YoureBrokeNorth:
-	takemoney $0, ROUTE43GATE_TOLL
+	takemoney YOUR_MONEY, ROUTE43GATE_TOLL
 	writetext RocketText_AllYouGot
 	jump RocketScript_ShakeDownNorth
 
@@ -101,7 +101,7 @@
 	closetext
 	applymovement ROUTE43GATE_ROCKET2, Rocket2Script_LetsYouPassNorth
 	applymovement ROUTE43GATE_ROCKET1, Rocket1Script_LetsYouPassNorth
-	setscene $1
+	setscene 1
 	special RestartMapMusic
 	end
 
@@ -247,7 +247,7 @@
 	cont "the grass."
 	done
 
-Route43Gate_MapEventHeader:
+Route43Gate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route43MahoganyGate.asm
+++ b/maps/Route43MahoganyGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE43MAHOGANYGATE_OFFICER
 
-Route43MahoganyGate_MapScriptHeader:
+Route43MahoganyGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -38,7 +38,7 @@
 	cont "days."
 	done
 
-Route43MahoganyGate_MapEventHeader:
+Route43MahoganyGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -11,7 +11,7 @@
 	const ROUTE44_POKE_BALL2
 	const ROUTE44_POKE_BALL3
 
-Route44_MapScriptHeader:
+Route44_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -41,9 +41,9 @@
 	scall Route44AskNumber2M
 .AskForNumber:
 	askforphonenumber PHONE_BIRDKEEPER_VANCE
-	if_equal $1, Route44PhoneFullM
-	if_equal $2, Route44NumberDeclinedM
-	trainertotext BIRD_KEEPER, VANCE1, $0
+	if_equal PHONE_CONTACTS_FULL, Route44PhoneFullM
+	if_equal PHONE_CONTACT_REFUSED, Route44NumberDeclinedM
+	trainertotext BIRD_KEEPER, VANCE1, MEM_BUFFER_0
 	scall Route44RegisteredNumberM
 	jump Route44NumberAcceptedM
 
@@ -168,9 +168,9 @@
 	end_if_just_battled
 	opentext
 	checkflag ENGINE_WILTON
-	iftrue WiltonWantsBattle
+	iftrue .WantsBattle
 	checkflag ENGINE_WILTON_HAS_ITEM
-	iftrue WiltonHasItem
+	iftrue .HasItem
 	checkcellnum PHONE_FISHER_WILTON
 	iftrue Route44NumberAcceptedM
 	checkevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
@@ -185,13 +185,13 @@
 	scall Route44AskNumber2M
 .AskForNumber:
 	askforphonenumber PHONE_FISHER_WILTON
-	if_equal $1, Route44PhoneFullM
-	if_equal $2, Route44NumberDeclinedM
-	trainertotext FISHER, WILTON1, $0
+	if_equal PHONE_CONTACTS_FULL, Route44PhoneFullM
+	if_equal PHONE_CONTACT_REFUSED, Route44NumberDeclinedM
+	trainertotext FISHER, WILTON1, MEM_BUFFER_0
 	scall Route44RegisteredNumberM
 	jump Route44NumberAcceptedM
 
-WiltonWantsBattle:
+.WantsBattle:
 	scall Route44RematchM
 	winlosstext FisherWilton1BeatenText, 0
 	copybytetovar wWiltonFightCount
@@ -227,7 +227,7 @@
 	clearflag ENGINE_WILTON
 	end
 
-WiltonHasItem:
+.HasItem:
 	scall Route44GiftM
 	checkevent EVENT_WILTON_HAS_ULTRA_BALL
 	iftrue .UltraBall
@@ -318,9 +318,8 @@
 	itemball MAX_REPEL
 
 Route44HiddenElixer:
-	dwb EVENT_ROUTE_44_HIDDEN_ELIXER, ELIXER
+	hiddenitem EVENT_ROUTE_44_HIDDEN_ELIXER, ELIXER
 
-
 FisherWilton1SeenText:
 	text "Aack! You made me"
 	line "lose a POLIWAG!"
@@ -507,7 +506,7 @@
 	line "BLACKTHORN CITY"
 	done
 
-Route44_MapEventHeader:
+Route44_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -13,7 +13,7 @@
 	const ROUTE45_POKE_BALL4
 	const ROUTE45_YOUNGSTER
 
-Route45_MapScriptHeader:
+Route45_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -42,15 +42,15 @@
 	scall Route45AskNumber2M
 .AskForNumber:
 	askforphonenumber PHONE_BLACKBELT_KENJI
-	if_equal $1, Route45PhoneFullM
-	if_equal $2, Route45NumberDeclinedM
-	trainertotext BLACKBELT_T, KENJI3, $0
+	if_equal PHONE_CONTACTS_FULL, Route45PhoneFullM
+	if_equal PHONE_CONTACT_REFUSED, Route45NumberDeclinedM
+	trainertotext BLACKBELT_T, KENJI3, MEM_BUFFER_0
 	scall Route45RegisteredNumberM
 	jump Route45NumberAcceptedM
 
 .Registered:
 	checkcode VAR_KENJI_BREAK
-	if_not_equal $1, Route45NumberAcceptedM
+	if_not_equal 1, Route45NumberAcceptedM
 	checkmorn
 	iftrue .Morning
 	checknite
@@ -169,9 +169,9 @@
 	scall Route45AskNumber2M
 .AskForNumber:
 	askforphonenumber PHONE_HIKER_PARRY
-	if_equal $1, Route45PhoneFullM
-	if_equal $2, Route45NumberDeclinedM
-	trainertotext HIKER, PARRY1, $0
+	if_equal PHONE_CONTACTS_FULL, Route45PhoneFullM
+	if_equal PHONE_CONTACT_REFUSED, Route45NumberDeclinedM
+	trainertotext HIKER, PARRY1, MEM_BUFFER_0
 	scall Route45RegisteredNumberM
 	jump Route45NumberAcceptedM
 
@@ -312,9 +312,8 @@
 	itemball MAX_POTION
 
 Route45HiddenPpUp:
-	dwb EVENT_ROUTE_45_HIDDEN_PP_UP, PP_UP
+	hiddenitem EVENT_ROUTE_45_HIDDEN_PP_UP, PP_UP
 
-
 HikerErikSeenText:
 	text "Be prepared for"
 	line "anything!"
@@ -532,7 +531,7 @@
 	line "MOUNTAIN RD. AHEAD"
 	done
 
-Route45_MapEventHeader:
+Route45_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -6,7 +6,7 @@
 	const ROUTE46_FRUIT_TREE2
 	const ROUTE46_POKE_BALL
 
-Route46_MapScriptHeader:
+Route46_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,29 +32,29 @@
 	end_if_just_battled
 	opentext
 	checkflag ENGINE_ERIN
-	iftrue ErinWantsBattle
+	iftrue .WantsBattle
 	checkcellnum PHONE_PICNICKER_ERIN
-	iftrue Rt46NumberAcceptedF
+	iftrue Route46NumberAcceptedF
 	checkevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
 	iftrue .AskedAlready
 	writetext PicnickerErinAfterBattleText
 	buttonsound
 	setevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
-	scall Rt46AskNumber1F
+	scall Route46AskNumber1F
 	jump .AskForNumber
 
 .AskedAlready:
-	scall Rt46AskNumber2F
+	scall Route46AskNumber2F
 .AskForNumber:
 	askforphonenumber PHONE_PICNICKER_ERIN
-	if_equal $1, Rt46PhoneFullF
-	if_equal $2, Rt46NumberDeclinedF
-	trainertotext PICNICKER, ERIN1, $0
-	scall Rt46RegisteredNumberF
-	jump Rt46NumberAcceptedF
+	if_equal PHONE_CONTACTS_FULL, Route46PhoneFullF
+	if_equal PHONE_CONTACT_REFUSED, Route46NumberDeclinedF
+	trainertotext PICNICKER, ERIN1, MEM_BUFFER_0
+	scall Route46RegisteredNumberF
+	jump Route46NumberAcceptedF
 
-ErinWantsBattle:
-	scall Rt46RematchF
+.WantsBattle:
+	scall Route46RematchF
 	winlosstext PicnickerErin1BeatenText, 0
 	copybytetovar wErinFightCount
 	if_equal 2, .Fight2
@@ -91,11 +91,11 @@
 	iftrue .HasCalcium
 	checkevent EVENT_GOT_CALCIUM_FROM_ERIN
 	iftrue .GotCalciumAlready
-	scall Rt46RematchGiftF
+	scall Route46RematchGiftF
 	verbosegiveitem CALCIUM
 	iffalse ErinNoRoomForCalcium
 	setevent EVENT_GOT_CALCIUM_FROM_ERIN
-	jump Rt46NumberAcceptedF
+	jump Route46NumberAcceptedF
 
 .GotCalciumAlready:
 	end
@@ -108,33 +108,33 @@
 	iffalse ErinNoRoomForCalcium
 	clearevent EVENT_ERIN_CALCIUM
 	setevent EVENT_GOT_CALCIUM_FROM_ERIN
-	jump Rt46NumberAcceptedF
+	jump Route46NumberAcceptedF
 
-Rt46AskNumber1F:
+Route46AskNumber1F:
 	jumpstd asknumber1f
 	end
 
-Rt46AskNumber2F:
+Route46AskNumber2F:
 	jumpstd asknumber2f
 	end
 
-Rt46RegisteredNumberF:
+Route46RegisteredNumberF:
 	jumpstd registerednumberf
 	end
 
-Rt46NumberAcceptedF:
+Route46NumberAcceptedF:
 	jumpstd numberacceptedf
 	end
 
-Rt46NumberDeclinedF:
+Route46NumberDeclinedF:
 	jumpstd numberdeclinedf
 	end
 
-Rt46PhoneFullF:
+Route46PhoneFullF:
 	jumpstd phonefullf
 	end
 
-Rt46RematchF:
+Route46RematchF:
 	jumpstd rematchf
 	end
 
@@ -143,7 +143,7 @@
 	jumpstd packfullf
 	end
 
-Rt46RematchGiftF:
+Route46RematchGiftF:
 	jumpstd rematchgiftf
 	end
 
@@ -250,14 +250,14 @@
 	line "MOUNTAIN RD. AHEAD"
 	done
 
-Route46_MapEventHeader:
+Route46_MapEvents:
 	; filler
 	db 0, 0
 
 .Warps:
 	db 3
-	warp_def 7, 33, 1, ROUTE_29_46_GATE
-	warp_def 8, 33, 2, ROUTE_29_46_GATE
+	warp_def 7, 33, 1, ROUTE_29_ROUTE_46_GATE
+	warp_def 8, 33, 2, ROUTE_29_ROUTE_46_GATE
 	warp_def 14, 5, 3, DARK_CAVE_VIOLET_ENTRANCE
 
 .CoordEvents:
--- a/maps/Route5.asm
+++ b/maps/Route5.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE5_POKEFAN_M
 
-Route5_MapScriptHeader:
+Route5_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -39,7 +39,7 @@
 	line "Nobody lives here."
 	done
 
-Route5_MapEventHeader:
+Route5_MapEvents:
 	; filler
 	db 0, 0
 
@@ -46,8 +46,8 @@
 .Warps:
 	db 4
 	warp_def 17, 15, 1, ROUTE_5_UNDERGROUND_PATH_ENTRANCE
-	warp_def 8, 17, 1, ROUTE_5_SAFFRON_CITY_GATE
-	warp_def 9, 17, 2, ROUTE_5_SAFFRON_CITY_GATE
+	warp_def 8, 17, 1, ROUTE_5_SAFFRON_GATE
+	warp_def 9, 17, 2, ROUTE_5_SAFFRON_GATE
 	warp_def 10, 11, 1, ROUTE_5_CLEANSE_TAG_SPEECH_HOUSE
 
 .CoordEvents:
--- a/maps/Route5CleanseTagSpeechHouse.asm
+++ b/maps/Route5CleanseTagSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const ROUTE5CLEANSETAGSPEECHHOUSE_GRANNY
 	const ROUTE5CLEANSETAGSPEECHHOUSE_TEACHER
 
-Route5CleanseTagSpeechHouse_MapScriptHeader:
+Route5CleanseTagSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -60,7 +60,7 @@
 	line "startled you."
 	done
 
-Route5CleanseTagSpeechHouse_MapEventHeader:
+Route5CleanseTagSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route5SaffronCityGate.asm
+++ /dev/null
@@ -1,42 +1,0 @@
-const_value set 2
-	const ROUTE5SAFFRONCITYGATE_OFFICER
-
-Route5SaffronCityGate_MapScriptHeader:
-.SceneScripts:
-	db 0
-
-.MapCallbacks:
-	db 0
-
-Route5SaffronCityGateOfficerScript:
-	jumptextfaceplayer Route5SaffronCityGateOfficerText
-
-Route5SaffronCityGateOfficerText:
-	text "You're from JOHTO,"
-	line "aren't you?"
-
-	para "How do you like"
-	line "KANTO? It's nice,"
-	cont "don't you agree?"
-	done
-
-Route5SaffronCityGate_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def 4, 0, 2, ROUTE_5
-	warp_def 5, 0, 3, ROUTE_5
-	warp_def 4, 7, 9, SAFFRON_CITY
-	warp_def 5, 7, 9, SAFFRON_CITY
-
-.CoordEvents:
-	db 0
-
-.BGEvents:
-	db 0
-
-.ObjectEvents:
-	db 1
-	object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route5SaffronCityGateOfficerScript, -1
--- /dev/null
+++ b/maps/Route5SaffronGate.asm
@@ -1,0 +1,42 @@
+const_value set 2
+	const ROUTE5SAFFRONGATE_OFFICER
+
+Route5SaffronGate_MapScripts:
+.SceneScripts:
+	db 0
+
+.MapCallbacks:
+	db 0
+
+Route5SaffronGateOfficerScript:
+	jumptextfaceplayer Route5SaffronGateOfficerText
+
+Route5SaffronGateOfficerText:
+	text "You're from JOHTO,"
+	line "aren't you?"
+
+	para "How do you like"
+	line "KANTO? It's nice,"
+	cont "don't you agree?"
+	done
+
+Route5SaffronGate_MapEvents:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def 4, 0, 2, ROUTE_5
+	warp_def 5, 0, 3, ROUTE_5
+	warp_def 4, 7, 9, SAFFRON_CITY
+	warp_def 5, 7, 9, SAFFRON_CITY
+
+.CoordEvents:
+	db 0
+
+.BGEvents:
+	db 0
+
+.ObjectEvents:
+	db 1
+	object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route5SaffronGateOfficerScript, -1
--- a/maps/Route5UndergroundPathEntrance.asm
+++ b/maps/Route5UndergroundPathEntrance.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE5UNDERGROUNDPATHENTRANCE_TEACHER
 
-Route5UndergroundPathEntrance_MapScriptHeader:
+Route5UndergroundPathEntrance_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 	line "love to visit!"
 	done
 
-Route5UndergroundPathEntrance_MapEventHeader:
+Route5UndergroundPathEntrance_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route6.asm
+++ b/maps/Route6.asm
@@ -3,7 +3,7 @@
 	const ROUTE6_POKEFAN_M2
 	const ROUTE6_POKEFAN_M3
 
-Route6_MapScriptHeader:
+Route6_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -91,7 +91,7 @@
 	cont "your heart melt?"
 	done
 
-Route6_MapEventHeader:
+Route6_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route6SaffronGate.asm
+++ b/maps/Route6SaffronGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE6SAFFRONGATE_OFFICER
 
-Route6SaffronGate_MapScriptHeader:
+Route6SaffronGate_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -57,7 +57,7 @@
 	line "FRON."
 	done
 
-Route6SaffronGate_MapEventHeader:
+Route6SaffronGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route6UndergroundPathEntrance.asm
+++ b/maps/Route6UndergroundPathEntrance.asm
@@ -1,4 +1,4 @@
-Route6UndergroundPathEntrance_MapScriptHeader:
+Route6UndergroundPathEntrance_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-Route6UndergroundPathEntrance_MapEventHeader:
+Route6UndergroundPathEntrance_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route7.asm
+++ b/maps/Route7.asm
@@ -1,4 +1,4 @@
-Route7_MapScriptHeader:
+Route7_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -34,7 +34,7 @@
 	text "It's locked…"
 	done
 
-Route7_MapEventHeader:
+Route7_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route7SaffronGate.asm
+++ b/maps/Route7SaffronGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE7SAFFRONGATE_OFFICER
 
-Route7SaffronGate_MapScriptHeader:
+Route7SaffronGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -45,7 +45,7 @@
 	line "through."
 	done
 
-Route7SaffronGate_MapEventHeader:
+Route7SaffronGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -6,7 +6,7 @@
 	const ROUTE8_SUPER_NERD2
 	const ROUTE8_FRUIT_TREE
 
-Route8_MapScriptHeader:
+Route8_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -172,7 +172,7 @@
 	line "read…"
 	done
 
-Route8_MapEventHeader:
+Route8_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route8SaffronGate.asm
+++ b/maps/Route8SaffronGate.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const ROUTE8SAFFRONGATE_OFFICER
 
-Route8SaffronGate_MapScriptHeader:
+Route8SaffronGate_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 	line "RADIO TOWER there."
 	done
 
-Route8SaffronGate_MapEventHeader:
+Route8SaffronGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -6,7 +6,7 @@
 	const ROUTE9_POKEFAN_M1
 	const ROUTE9_POKEFAN_M2
 
-Route9_MapScriptHeader:
+Route9_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -83,9 +83,8 @@
 	jumptext Route9SignText
 
 Route9HiddenEther:
-	dwb EVENT_ROUTE_9_HIDDEN_ETHER, ETHER
+	hiddenitem EVENT_ROUTE_9_HIDDEN_ETHER, ETHER
 
-
 CamperDeanSeenText:
 	text "I came to explore"
 	line "ROCK TUNNEL."
@@ -206,7 +205,7 @@
 	line "ROCK TUNNEL"
 	done
 
-Route9_MapEventHeader:
+Route9_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphAerodactylChamber.asm
+++ b/maps/RuinsOfAlphAerodactylChamber.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphAerodactylChamber_MapScriptHeader:
+RuinsOfAlphAerodactylChamber_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .CheckWall
@@ -6,7 +6,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .HiddenDoors
+	callback MAPCALLBACK_TILES, .HiddenDoors
 
 .CheckWall:
 	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
@@ -23,7 +23,7 @@
 .HiddenDoors:
 	checkevent EVENT_WALL_OPENED_IN_AERODACTYL_CHAMBER
 	iftrue .WallOpen
-	changeblock $4, $0, $2e
+	changeblock 4, 0, $2e ; closed wall
 .WallOpen:
 	checkevent EVENT_SOLVED_AERODACTYL_PUZZLE
 	iffalse .FloorClosed
@@ -30,8 +30,8 @@
 	return
 
 .FloorClosed:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
+	changeblock 2, 2, $01 ; left floor
+	changeblock 4, 2, $02 ; right floor
 	return
 
 .WallOpenScript:
@@ -40,16 +40,16 @@
 	showemote EMOTE_SHOCK, PLAYER, 20
 	pause 30
 	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
+	changeblock 4, 0, $30 ; open wall
 	reloadmappart
 	earthquake 50
-	setscene $1
+	setscene 1
 	closetext
 	end
 
 MapRuinsOfAlphAerodactylChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $2
+	refreshscreen
+	writebyte UNOWNPUZZLE_AERODACTYL
 	special Special_UnownPuzzle
 	closetext
 	iftrue UnknownScript_0x58df7
@@ -59,11 +59,11 @@
 	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
 	setevent EVENT_SOLVED_AERODACTYL_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_3
-	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, $1
+	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, 1
 	earthquake 30
 	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
+	changeblock 2, 2, $18 ; left hole
+	changeblock 4, 2, $19 ; right hole
 	reloadmappart
 	playsound SFX_STRENGTH
 	earthquake 80
@@ -83,7 +83,7 @@
 MapRuinsOfAlphAerodactylChamberSignpost4Script:
 	opentext
 	writetext UnknownText_0x58e4f
-	writebyte $1
+	writebyte UNOWNWORDS_LIGHT
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -93,7 +93,7 @@
 	iftrue UnknownScript_0x58e46
 	opentext
 	writetext UnknownText_0x58e81
-	writebyte $1
+	writebyte UNOWNWORDS_LIGHT
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -106,7 +106,7 @@
 	end
 
 MovementData_0x58e4d:
-	db $59 ; movement
+	skyfall_top
 	step_end
 
 UnknownText_0x58e4f:
@@ -114,8 +114,8 @@
 	line "on the walls…"
 	done
 
-; possibly unused.. again?
-UnknownText_0x58e70:
+; unused
+UnusedText_0x58e70:
 	text "It's UNOWN text!"
 	done
 
@@ -143,7 +143,7 @@
 	line "fangs."
 	done
 
-RuinsOfAlphAerodactylChamber_MapEventHeader:
+RuinsOfAlphAerodactylChamber_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphAerodactylItemRoom.asm
+++ b/maps/RuinsOfAlphAerodactylItemRoom.asm
@@ -4,7 +4,7 @@
 	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL3
 	const RUINSOFALPHAERODACTYLITEMROOM_POKE_BALL4
 
-RuinsOfAlphAerodactylItemRoom_MapScriptHeader:
+RuinsOfAlphAerodactylItemRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,7 +32,7 @@
 	cont "MON."
 	done
 
-RuinsOfAlphAerodactylItemRoom_MapEventHeader:
+RuinsOfAlphAerodactylItemRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphAerodactylWordRoom.asm
+++ b/maps/RuinsOfAlphAerodactylWordRoom.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphAerodactylWordRoom_MapScriptHeader:
+RuinsOfAlphAerodactylWordRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-RuinsOfAlphAerodactylWordRoom_MapEventHeader:
+RuinsOfAlphAerodactylWordRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphHoOhChamber.asm
+++ b/maps/RuinsOfAlphHoOhChamber.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphHoOhChamber_MapScriptHeader:
+RuinsOfAlphHoOhChamber_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .CheckWall
@@ -6,10 +6,10 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .HiddenDoors
+	callback MAPCALLBACK_TILES, .HiddenDoors
 
 .CheckWall:
-	special SpecialHoOhChamber
+	special Special_HoOhChamber
 	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	iftrue .OpenWall
 	end
@@ -24,7 +24,7 @@
 .HiddenDoors:
 	checkevent EVENT_WALL_OPENED_IN_HO_OH_CHAMBER
 	iftrue .WallOpen
-	changeblock $4, $0, $2e
+	changeblock 4, 0, $2e ; closed wall
 .WallOpen:
 	checkevent EVENT_SOLVED_HO_OH_PUZZLE
 	iffalse .FloorClosed
@@ -31,8 +31,8 @@
 	return
 
 .FloorClosed:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
+	changeblock 2, 2, $01 ; left floor
+	changeblock 4, 2, $02 ; right floor
 	return
 
 .WallOpenScript:
@@ -41,16 +41,16 @@
 	showemote EMOTE_SHOCK, PLAYER, 20
 	pause 30
 	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
+	changeblock 4, 0, $30 ; open wall
 	reloadmappart
 	earthquake 50
-	setscene $1
+	setscene 1
 	closetext
 	end
 
 MapRuinsOfAlphHoOhChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $3
+	refreshscreen
+	writebyte UNOWNPUZZLE_HO_OH
 	special Special_UnownPuzzle
 	closetext
 	iftrue UnknownScript_0x585ba
@@ -60,11 +60,11 @@
 	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
 	setevent EVENT_SOLVED_HO_OH_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_4
-	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, $1
+	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, 1
 	earthquake 30
 	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
+	changeblock 2, 2, $18 ; left hole
+	changeblock 4, 2, $19 ; right hole
 	reloadmappart
 	playsound SFX_STRENGTH
 	earthquake 80
@@ -84,7 +84,7 @@
 MapRuinsOfAlphHoOhChamberSignpost4Script:
 	opentext
 	writetext UnknownText_0x58612
-	writebyte $3
+	writebyte UNOWNWORDS_HO_OH
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -94,7 +94,7 @@
 	iftrue UnknownScript_0x58609
 	opentext
 	writetext UnknownText_0x58644
-	writebyte $3
+	writebyte UNOWNWORDS_HO_OH
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -107,7 +107,7 @@
 	end
 
 MovementData_0x58610:
-	db $59 ; movement
+	skyfall_top
 	step_end
 
 UnknownText_0x58612:
@@ -115,8 +115,8 @@
 	line "on the walls…"
 	done
 
-; possibly unused
-UnknownText_0x58633:
+; unused
+UnusedText_0x58633:
 	text "It's UNOWN text!"
 	done
 
@@ -144,7 +144,7 @@
 	line "wings."
 	done
 
-RuinsOfAlphHoOhChamber_MapEventHeader:
+RuinsOfAlphHoOhChamber_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphHoOhItemRoom.asm
+++ b/maps/RuinsOfAlphHoOhItemRoom.asm
@@ -4,7 +4,7 @@
 	const RUINSOFALPHHOOHITEMROOM_POKE_BALL3
 	const RUINSOFALPHHOOHITEMROOM_POKE_BALL4
 
-RuinsOfAlphHoOhItemRoom_MapScriptHeader:
+RuinsOfAlphHoOhItemRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,7 +32,7 @@
 	cont "MON."
 	done
 
-RuinsOfAlphHoOhItemRoom_MapEventHeader:
+RuinsOfAlphHoOhItemRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphHoOhWordRoom.asm
+++ b/maps/RuinsOfAlphHoOhWordRoom.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphHoOhWordRoom_MapScriptHeader:
+RuinsOfAlphHoOhWordRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-RuinsOfAlphHoOhWordRoom_MapEventHeader:
+RuinsOfAlphHoOhWordRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphInnerChamber.asm
+++ b/maps/RuinsOfAlphInnerChamber.asm
@@ -3,7 +3,7 @@
 	const RUINSOFALPHINNERCHAMBER_TEACHER
 	const RUINSOFALPHINNERCHAMBER_GRAMPS
 
-RuinsOfAlphInnerChamber_MapScriptHeader:
+RuinsOfAlphInnerChamber_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -24,7 +24,7 @@
 	writetext RuinsOfAlphStrangePresenceText
 	waitbutton
 	closetext
-	setscene $0
+	setscene 0
 	setevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
 	clearevent EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
 	end
@@ -76,7 +76,7 @@
 	cont "MON."
 	done
 
-RuinsOfAlphInnerChamber_MapEventHeader:
+RuinsOfAlphInnerChamber_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphKabutoChamber.asm
+++ b/maps/RuinsOfAlphKabutoChamber.asm
@@ -2,7 +2,7 @@
 	const RUINSOFALPHKABUTOCHAMBER_RECEPTIONIST
 	const RUINSOFALPHKABUTOCHAMBER_SCIENTIST
 
-RuinsOfAlphKabutoChamber_MapScriptHeader:
+RuinsOfAlphKabutoChamber_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .CheckWall
@@ -10,7 +10,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .HiddenDoors
+	callback MAPCALLBACK_TILES, .HiddenDoors
 
 .CheckWall:
 	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
@@ -27,7 +27,7 @@
 .HiddenDoors:
 	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
 	iftrue .WallOpen
-	changeblock $4, $0, $2e
+	changeblock 4, 0, $2e ; closed wall
 .WallOpen:
 	checkevent EVENT_SOLVED_KABUTO_PUZZLE
 	iffalse .FloorClosed
@@ -34,8 +34,8 @@
 	return
 
 .FloorClosed:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
+	changeblock 2, 2, $01 ; left floor
+	changeblock 4, 2, $02 ; right floor
 	return
 
 .WallOpenScript:
@@ -44,10 +44,10 @@
 	showemote EMOTE_SHOCK, PLAYER, 20
 	pause 30
 	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
+	changeblock 4, 0, $30 ; open wall
 	reloadmappart
 	earthquake 50
-	setscene $1
+	setscene 1
 	closetext
 	end
 
@@ -55,8 +55,8 @@
 	jumptextfaceplayer RuinsOfAlphKabutoChamberReceptionistText
 
 MapRuinsOfAlphKabutoChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $0
+	refreshscreen
+	writebyte UNOWNPUZZLE_KABUTO
 	special Special_UnownPuzzle
 	closetext
 	iftrue UnknownScript_0x58778
@@ -67,11 +67,11 @@
 	setevent EVENT_SOLVED_KABUTO_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_1
 	setevent EVENT_RUINS_OF_ALPH_KABUTO_CHAMBER_RECEPTIONIST
-	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, $1
+	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, 1
 	earthquake 30
 	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
+	changeblock 2, 2, $18 ; left hole
+	changeblock 4, 2, $19 ; right hole
 	reloadmappart
 	playsound SFX_STRENGTH
 	earthquake 80
@@ -86,7 +86,7 @@
 	faceplayer
 	opentext
 	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x587cf
+	if_equal NUM_UNOWN, UnknownScript_0x587cf
 	checkevent EVENT_WALL_OPENED_IN_KABUTO_CHAMBER
 	iftrue UnknownScript_0x587c9
 	checkevent EVENT_SOLVED_KABUTO_PUZZLE
@@ -121,7 +121,7 @@
 MapRuinsOfAlphKabutoChamberSignpost4Script:
 	opentext
 	writetext UnknownText_0x58aa7
-	writebyte $0
+	writebyte UNOWNWORDS_ESCAPE
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -131,7 +131,7 @@
 	iftrue UnknownScript_0x587f7
 	opentext
 	writetext UnknownText_0x58ad9
-	writebyte $0
+	writebyte UNOWNWORDS_ESCAPE
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -144,7 +144,7 @@
 	end
 
 MovementData_0x587fe:
-	db $59 ; movement
+	skyfall_top
 	step_end
 
 RuinsOfAlphKabutoChamberReceptionistText:
@@ -202,8 +202,8 @@
 	cont "this wall here…"
 	done
 
-; possibly unused
-UnknownText_0x58a03:
+; unused
+UnusedText_0x58a03:
 	text "The patterns on"
 	line "the wall appear to"
 	cont "be words!"
@@ -226,8 +226,8 @@
 	line "on the walls…"
 	done
 
-; possibly unused
-UnknownText_0x58ac8:
+; unused
+UnusedText_0x58ac8:
 	text "It's UNOWN text!"
 	done
 
@@ -255,7 +255,7 @@
 	line "scanned the area."
 	done
 
-RuinsOfAlphKabutoChamber_MapEventHeader:
+RuinsOfAlphKabutoChamber_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphKabutoItemRoom.asm
+++ b/maps/RuinsOfAlphKabutoItemRoom.asm
@@ -4,7 +4,7 @@
 	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL3
 	const RUINSOFALPHKABUTOITEMROOM_POKE_BALL4
 
-RuinsOfAlphKabutoItemRoom_MapScriptHeader:
+RuinsOfAlphKabutoItemRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,7 +32,7 @@
 	cont "MON."
 	done
 
-RuinsOfAlphKabutoItemRoom_MapEventHeader:
+RuinsOfAlphKabutoItemRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphKabutoWordRoom.asm
+++ b/maps/RuinsOfAlphKabutoWordRoom.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphKabutoWordRoom_MapScriptHeader:
+RuinsOfAlphKabutoWordRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-RuinsOfAlphKabutoWordRoom_MapEventHeader:
+RuinsOfAlphKabutoWordRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphOmanyteChamber.asm
+++ b/maps/RuinsOfAlphOmanyteChamber.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphOmanyteChamber_MapScriptHeader:
+RuinsOfAlphOmanyteChamber_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .CheckWall
@@ -6,10 +6,10 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .HiddenDoors
+	callback MAPCALLBACK_TILES, .HiddenDoors
 
 .CheckWall:
-	special SpecialOmanyteChamber
+	special Special_OmanyteChamber
 	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	iftrue .OpenWall
 	end
@@ -24,7 +24,7 @@
 .HiddenDoors:
 	checkevent EVENT_WALL_OPENED_IN_OMANYTE_CHAMBER
 	iftrue .WallOpen
-	changeblock $4, $0, $2e
+	changeblock 4, 0, $2e ; closed wall
 .WallOpen:
 	checkevent EVENT_SOLVED_OMANYTE_PUZZLE
 	iffalse .FloorClosed
@@ -31,8 +31,8 @@
 	return
 
 .FloorClosed:
-	changeblock $2, $2, $1
-	changeblock $4, $2, $2
+	changeblock 2, 2, $01 ; left floor
+	changeblock 4, 2, $02 ; right floor
 	return
 
 .WallOpenScript:
@@ -41,16 +41,16 @@
 	showemote EMOTE_SHOCK, PLAYER, 20
 	pause 30
 	playsound SFX_STRENGTH
-	changeblock $4, $0, $30
+	changeblock 4, 0, $30 ; open wall
 	reloadmappart
 	earthquake 50
-	setscene $1
+	setscene 1
 	closetext
 	end
 
 MapRuinsOfAlphOmanyteChamberSignpost2Script:
-	refreshscreen $0
-	writebyte $1
+	refreshscreen
+	writebyte UNOWNPUZZLE_OMANYTE
 	special Special_UnownPuzzle
 	closetext
 	iftrue UnknownScript_0x58c36
@@ -60,11 +60,11 @@
 	setevent EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
 	setevent EVENT_SOLVED_OMANYTE_PUZZLE
 	setflag ENGINE_UNLOCKED_UNOWNS_2
-	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, $1
+	setmapscene RUINS_OF_ALPH_INNER_CHAMBER, 1
 	earthquake 30
 	showemote EMOTE_SHOCK, PLAYER, 15
-	changeblock $2, $2, $18
-	changeblock $4, $2, $19
+	changeblock 2, 2, $18 ; left hole
+	changeblock 4, 2, $19 ; right hole
 	reloadmappart
 	playsound SFX_STRENGTH
 	earthquake 80
@@ -84,7 +84,7 @@
 MapRuinsOfAlphOmanyteChamberSignpost4Script:
 	opentext
 	writetext UnknownText_0x58c8e
-	writebyte $2
+	writebyte UNOWNWORDS_WATER
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -94,7 +94,7 @@
 	iftrue UnknownScript_0x58c85
 	opentext
 	writetext UnknownText_0x58cc0
-	writebyte $2
+	writebyte UNOWNWORDS_WATER
 	special Special_DisplayUnownWords
 	closetext
 	end
@@ -107,7 +107,7 @@
 	end
 
 MovementData_0x58c8c:
-	db $59 ; movement
+	skyfall_top
 	step_end
 
 UnknownText_0x58c8e:
@@ -115,8 +115,8 @@
 	line "on the walls…"
 	done
 
-; possibly unused.. this again?
-UnknownText_0x58caf:
+; unused
+UnusedText_0x58caf:
 	text "It's UNOWN text!"
 	done
 
@@ -144,7 +144,7 @@
 	line "its ten tentacles."
 	done
 
-RuinsOfAlphOmanyteChamber_MapEventHeader:
+RuinsOfAlphOmanyteChamber_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphOmanyteItemRoom.asm
+++ b/maps/RuinsOfAlphOmanyteItemRoom.asm
@@ -4,7 +4,7 @@
 	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL3
 	const RUINSOFALPHOMANYTEITEMROOM_POKE_BALL4
 
-RuinsOfAlphOmanyteItemRoom_MapScriptHeader:
+RuinsOfAlphOmanyteItemRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,7 +32,7 @@
 	cont "MON."
 	done
 
-RuinsOfAlphOmanyteItemRoom_MapEventHeader:
+RuinsOfAlphOmanyteItemRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphOmanyteWordRoom.asm
+++ b/maps/RuinsOfAlphOmanyteWordRoom.asm
@@ -1,4 +1,4 @@
-RuinsOfAlphOmanyteWordRoom_MapScriptHeader:
+RuinsOfAlphOmanyteWordRoom_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-RuinsOfAlphOmanyteWordRoom_MapEventHeader:
+RuinsOfAlphOmanyteWordRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphOutside.asm
+++ b/maps/RuinsOfAlphOutside.asm
@@ -5,7 +5,7 @@
 	const RUINSOFALPHOUTSIDE_YOUNGSTER2
 	const RUINSOFALPHOUTSIDE_YOUNGSTER3
 
-RuinsOfAlphOutside_MapScriptHeader:
+RuinsOfAlphOutside_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -13,7 +13,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .ScientistCallback
+	callback MAPCALLBACK_OBJECTS, .ScientistCallback
 
 .DummyScene0:
 	end
@@ -30,17 +30,17 @@
 
 .MaybeScientist:
 	checkcode VAR_UNOWNCOUNT
-	if_greater_than $2, .YesScientist
+	if_greater_than 2, .YesScientist
 	jump .NoScientist
 
 .YesScientist:
 	appear RUINSOFALPHOUTSIDE_SCIENTIST
-	setscene $1
+	setscene 1
 	return
 
 .NoScientist:
 	disappear RUINSOFALPHOUTSIDE_SCIENTIST
-	setscene $0
+	setscene 0
 	return
 
 RuinsOfAlphOutsideScientistScene1:
@@ -66,7 +66,7 @@
 	disappear RUINSOFALPHOUTSIDE_SCIENTIST
 	stopfollow
 	applymovement PLAYER, MovementData_0x580c5
-	setmapscene RUINS_OF_ALPH_RESEARCH_CENTER, $1
+	setmapscene RUINS_OF_ALPH_RESEARCH_CENTER, 1
 	warpcheck
 	end
 
@@ -112,7 +112,6 @@
 	closetext
 	end
 
-
 TrainerSuperNerdStan:
 	trainer EVENT_BEAT_SUPER_NERD_STAN, SUPER_NERD, STAN, UnknownText_0x581e5, UnknownText_0x58217, 0, .Script
 
@@ -124,7 +123,6 @@
 	closetext
 	end
 
-
 RuinsOfAlphOutsideSignpost0Script:
 	jumptext UnknownText_0x58325
 
@@ -282,7 +280,7 @@
 	line "message!"
 	done
 
-RuinsOfAlphOutside_MapEventHeader:
+RuinsOfAlphOutside_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/RuinsOfAlphResearchCenter.asm
+++ b/maps/RuinsOfAlphResearchCenter.asm
@@ -3,7 +3,7 @@
 	const RUINSOFALPHRESEARCHCENTER_SCIENTIST2
 	const RUINSOFALPHRESEARCHCENTER_SCIENTIST3
 
-RuinsOfAlphResearchCenter_MapScriptHeader:
+RuinsOfAlphResearchCenter_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -11,7 +11,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .ScientistCallback
+	callback MAPCALLBACK_OBJECTS, .ScientistCallback
 
 .DummyScene0:
 	end
@@ -22,11 +22,11 @@
 
 .ScientistCallback:
 	checkscene
-	if_equal $1, .ShowScientist
+	if_equal 1, .ShowScientist
 	return
 
 .ShowScientist:
-	moveobject RUINSOFALPHRESEARCHCENTER_SCIENTIST3, $3, $7
+	moveobject RUINSOFALPHRESEARCHCENTER_SCIENTIST3, 3, 7
 	appear RUINSOFALPHRESEARCHCENTER_SCIENTIST3
 	return
 
@@ -55,7 +55,7 @@
 	waitbutton
 	closetext
 	applymovement RUINSOFALPHRESEARCHCENTER_SCIENTIST3, MovementData_0x59276
-	setscene $0
+	setscene 0
 	special RestartMapMusic
 	end
 
@@ -63,7 +63,7 @@
 	faceplayer
 	opentext
 	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x591df
+	if_equal NUM_UNOWN, UnknownScript_0x591df
 	writetext UnknownText_0x59311
 	waitbutton
 	closetext
@@ -79,7 +79,7 @@
 	faceplayer
 	opentext
 	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x5920b
+	if_equal NUM_UNOWN, UnknownScript_0x5920b
 	checkflag ENGINE_UNOWN_DEX
 	iftrue UnknownScript_0x59205
 	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
@@ -112,7 +112,7 @@
 	faceplayer
 	opentext
 	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x5922e
+	if_equal NUM_UNOWN, UnknownScript_0x5922e
 	checkevent EVENT_MADE_UNOWN_APPEAR_IN_RUINS
 	iftrue UnknownScript_0x59228
 	writetext UnknownText_0x5954f
@@ -137,7 +137,7 @@
 	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
 	iftrue UnknownScript_0x59241
 	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x59247
+	if_equal NUM_UNOWN, UnknownScript_0x59247
 UnknownScript_0x59241:
 	writetext UnknownText_0x597b6
 	waitbutton
@@ -155,7 +155,7 @@
 	checkevent EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
 	iftrue UnknownScript_0x5925a
 	checkcode VAR_UNOWNCOUNT
-	if_equal 26, UnknownScript_0x59260
+	if_equal NUM_UNOWN, UnknownScript_0x59260
 UnknownScript_0x5925a:
 	writetext UnknownText_0x5980e
 	waitbutton
@@ -169,8 +169,8 @@
 	closetext
 	end
 
-UnknownScript_0x59269:
-	jumptext UnknownText_0x59848
+UnreferencedScript_0x59269:
+	jumptext UnusedText_0x59848
 
 MapRuinsOfAlphResearchCenterSignpost0Script:
 	jumptext UnknownText_0x59886
@@ -308,8 +308,8 @@
 	cont "kinds of them…"
 	done
 
-; possibly unused
-UnknownText_0x59669:
+; unused
+UnusedText_0x59669:
 	text "We think something"
 	line "caused the cryptic"
 
@@ -320,8 +320,8 @@
 	line "studies on that."
 	done
 
-; possibly unused
-UnknownText_0x596d3:
+; unused
+UnusedText_0x596d3:
 	text "According to my"
 	line "research…"
 
@@ -374,8 +374,8 @@
 	line "printed out."
 	done
 
-; possibly unused
-UnknownText_0x59848:
+; unused
+UnusedText_0x59848:
 	text "It's a photo of"
 	line "the RESEARCH"
 
@@ -392,7 +392,7 @@
 	cont "Ancients…"
 	done
 
-RuinsOfAlphResearchCenter_MapEventHeader:
+RuinsOfAlphResearchCenter_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SafariZoneBeta.asm
+++ b/maps/SafariZoneBeta.asm
@@ -1,4 +1,4 @@
-SafariZoneBeta_MapScriptHeader:
+SafariZoneBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-SafariZoneBeta_MapEventHeader:
+SafariZoneBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SafariZoneFuchsiaGateBeta.asm
+++ b/maps/SafariZoneFuchsiaGateBeta.asm
@@ -1,4 +1,4 @@
-SafariZoneFuchsiaGateBeta_MapScriptHeader:
+SafariZoneFuchsiaGateBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-SafariZoneFuchsiaGateBeta_MapEventHeader:
+SafariZoneFuchsiaGateBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SafariZoneMainOffice.asm
+++ b/maps/SafariZoneMainOffice.asm
@@ -1,4 +1,4 @@
-SafariZoneMainOffice_MapScriptHeader:
+SafariZoneMainOffice_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-SafariZoneMainOffice_MapEventHeader:
+SafariZoneMainOffice_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SafariZoneWardensHome.asm
+++ b/maps/SafariZoneWardensHome.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const SAFARIZONEWARDENSHOME_LASS
 
-SafariZoneWardensHome_MapScriptHeader:
+SafariZoneWardensHome_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -76,7 +76,7 @@
 	line "frolicking in it."
 	done
 
-SafariZoneWardensHome_MapEventHeader:
+SafariZoneWardensHome_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SaffronCity.asm
+++ b/maps/SaffronCity.asm
@@ -8,13 +8,13 @@
 	const SAFFRONCITY_YOUNGSTER2
 	const SAFFRONCITY_LASS2
 
-SaffronCity_MapScriptHeader:
+SaffronCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_SAFFRON
@@ -265,7 +265,7 @@
 	cont "STATION"
 	done
 
-SaffronCity_MapEventHeader:
+SaffronCity_MapEvents:
 	; filler
 	db 0, 0
 
@@ -276,10 +276,10 @@
 	warp_def 25, 11, 2, SAFFRON_MART
 	warp_def 9, 29, 1, SAFFRON_POKECENTER_1F
 	warp_def 27, 29, 1, MR_PSYCHICS_HOUSE
-	warp_def 8, 3, 2, SAFFRON_TRAIN_STATION
+	warp_def 8, 3, 2, SAFFRON_MAGNET_TRAIN_STATION
 	warp_def 18, 21, 1, SILPH_CO_1F
 	warp_def 9, 11, 1, COPYCATS_HOUSE_1F
-	warp_def 18, 3, 3, ROUTE_5_SAFFRON_CITY_GATE
+	warp_def 18, 3, 3, ROUTE_5_SAFFRON_GATE
 	warp_def 0, 24, 3, ROUTE_7_SAFFRON_GATE
 	warp_def 0, 25, 4, ROUTE_7_SAFFRON_GATE
 	warp_def 16, 33, 1, ROUTE_6_SAFFRON_GATE
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -6,7 +6,7 @@
 	const SAFFRONGYM_YOUNGSTER2
 	const SAFFRONGYM_GYM_GUY
 
-SaffronGym_MapScriptHeader:
+SaffronGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -22,7 +22,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x189df4, 0
-	loadtrainer SABRINA, 1
+	loadtrainer SABRINA, SABRINA1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_SABRINA
@@ -111,7 +111,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext SABRINA, 1, $1
+	trainertotext SABRINA, SABRINA1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 UnknownText_0x189cdf:
@@ -290,7 +290,7 @@
 	line "fantastic battle!"
 	done
 
-SaffronGym_MapEventHeader:
+SaffronGym_MapEvents:
 	; filler
 	db 0, 0
 
--- /dev/null
+++ b/maps/SaffronMagnetTrainStation.asm
@@ -1,0 +1,241 @@
+const_value set 2
+	const SAFFRONMAGNETTRAINSTATION_OFFICER
+	const SAFFRONMAGNETTRAINSTATION_GYM_GUY
+	const SAFFRONMAGNETTRAINSTATION_TEACHER
+	const SAFFRONMAGNETTRAINSTATION_LASS
+
+SaffronMagnetTrainStation_MapScripts:
+.SceneScripts:
+	db 1
+	scene_script .DummyScene
+
+.MapCallbacks:
+	db 0
+
+.DummyScene:
+	end
+
+OfficerScript_0x18a81e:
+	faceplayer
+	opentext
+	checkevent EVENT_RESTORED_POWER_TO_KANTO
+	iftrue .MagnetTrainToGoldenrod
+	writetext UnknownText_0x18a8a9
+	waitbutton
+	closetext
+	end
+
+.MagnetTrainToGoldenrod:
+	writetext UnknownText_0x18a8dd
+	yesorno
+	iffalse .DecidedNotToRide
+	checkitem PASS
+	iffalse .PassNotInBag
+	writetext UnknownText_0x18a917
+	waitbutton
+	closetext
+	applymovement SAFFRONMAGNETTRAINSTATION_OFFICER, MovementData_0x18a88f
+	applymovement PLAYER, MovementData_0x18a898
+	writebyte TRUE
+	special Special_MagnetTrain
+	warpcheck
+	newloadmap MAPSETUP_TRAIN
+	applymovement PLAYER, .MovementBoardTheTrain
+	wait 20
+	end
+
+.MovementBoardTheTrain:
+	turn_head DOWN
+	step_end
+
+.PassNotInBag:
+	writetext UnknownText_0x18a956
+	waitbutton
+	closetext
+	end
+
+.DecidedNotToRide:
+	writetext UnknownText_0x18a978
+	waitbutton
+	closetext
+	end
+
+Script_ArriveFromGoldenrod:
+	applymovement SAFFRONMAGNETTRAINSTATION_OFFICER, MovementData_0x18a88f
+	applymovement PLAYER, MovementData_0x18a8a1
+	applymovement SAFFRONMAGNETTRAINSTATION_OFFICER, MovementData_0x18a894
+	opentext
+	writetext UnknownText_0x18a993
+	waitbutton
+	closetext
+	end
+
+GymGuyScript_0x18a875:
+	faceplayer
+	opentext
+	checkevent EVENT_RETURNED_MACHINE_PART
+	iftrue UnknownScript_0x18a883
+	writetext UnknownText_0x18a9ca
+	waitbutton
+	closetext
+	end
+
+UnknownScript_0x18a883:
+	writetext UnknownText_0x18aa61
+	waitbutton
+	closetext
+	end
+
+SaffronMagnetTrainStationTeacherScript:
+	jumptextfaceplayer SaffronMagnetTrainStationTeacherText
+
+SaffronMagnetTrainStationLassScript:
+	jumptextfaceplayer SaffronMagnetTrainStationLassText
+
+MovementData_0x18a88f:
+	step UP
+	step UP
+	step RIGHT
+	turn_head LEFT
+	step_end
+
+MovementData_0x18a894:
+	step LEFT
+	step DOWN
+	step DOWN
+	step_end
+
+MovementData_0x18a898:
+	step UP
+	step UP
+	step UP
+	step LEFT
+	step LEFT
+	step LEFT
+	step UP
+	step UP
+	step_end
+
+MovementData_0x18a8a1:
+	step LEFT
+	step LEFT
+	step DOWN
+	step DOWN
+	step DOWN
+	step DOWN
+	turn_head UP
+	step_end
+
+UnknownText_0x18a8a9:
+	text "I'm sorry, but the"
+	line "MAGNET TRAIN isn't"
+	cont "operating now."
+	done
+
+UnknownText_0x18a8dd:
+	text "We'll soon depart"
+	line "for GOLDENROD."
+
+	para "Are you coming on"
+	line "board?"
+	done
+
+UnknownText_0x18a917:
+	text "May I see your"
+	line "rail PASS, please?"
+
+	para "OK. Right this"
+	line "way, please."
+	done
+
+UnknownText_0x18a956:
+	text "Sorry, but you"
+	line "don't have a PASS."
+	done
+
+UnknownText_0x18a978:
+	text "We hope to see you"
+	line "again."
+	done
+
+UnknownText_0x18a993:
+	text "We have arrived in"
+	line "SAFFRON."
+
+	para "We hope to see you"
+	line "again."
+	done
+
+UnknownText_0x18a9ca:
+	text "The MAGNET TRAIN"
+	line "is a super-modern"
+
+	para "rail liner that"
+	line "uses electricity"
+
+	para "and magnets to"
+	line "attain incredible"
+	cont "speed."
+
+	para "However, if there"
+	line "isn't any elec-"
+	cont "tricity…"
+	done
+
+UnknownText_0x18aa61:
+	text "Whew…"
+
+	para "How many times"
+	line "have I gone back"
+
+	para "and forth between"
+	line "KANTO and JOHTO?"
+	done
+
+SaffronMagnetTrainStationTeacherText:
+	text "Before the MAGNET"
+	line "TRAIN STATION was"
+
+	para "built, there was a"
+	line "house there."
+
+	para "A little girl"
+	line "named COPYCAT used"
+	cont "to live there."
+	done
+
+SaffronMagnetTrainStationLassText:
+	text "Hi. Do you have a"
+	line "rail PASS? I have"
+
+	para "one. All the peo-"
+	line "ple in SAFFRON who"
+
+	para "ride the MAGNET"
+	line "TRAIN have PASSES."
+	done
+
+SaffronMagnetTrainStation_MapEvents:
+	; filler
+	db 0, 0
+
+.Warps:
+	db 4
+	warp_def 8, 17, 6, SAFFRON_CITY
+	warp_def 9, 17, 6, SAFFRON_CITY
+	warp_def 6, 5, 4, GOLDENROD_MAGNET_TRAIN_STATION
+	warp_def 11, 5, 3, GOLDENROD_MAGNET_TRAIN_STATION
+
+.CoordEvents:
+	db 1
+	coord_event 11, 6, 0, Script_ArriveFromGoldenrod
+
+.BGEvents:
+	db 0
+
+.ObjectEvents:
+	db 4
+	object_event 9, 9, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OfficerScript_0x18a81e, -1
+	object_event 10, 14, SPRITE_GYM_GUY, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GymGuyScript_0x18a875, -1
+	object_event 6, 11, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SaffronMagnetTrainStationTeacherScript, EVENT_SAFFRON_TRAIN_STATION_POPULATION
+	object_event 6, 10, SPRITE_LASS, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, SaffronMagnetTrainStationLassScript, EVENT_SAFFRON_TRAIN_STATION_POPULATION
--- /dev/null
+++ b/maps/SaffronMagnetTrainStation.blk
@@ -1,0 +1,6 @@
+
+
+
+
+
+/  3	
\ No newline at end of file
--- a/maps/SaffronMart.asm
+++ b/maps/SaffronMart.asm
@@ -3,7 +3,7 @@
 	const SAFFRONMART_COOLTRAINER_M
 	const SAFFRONMART_COOLTRAINER_F
 
-SaffronMart_MapScriptHeader:
+SaffronMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -37,7 +37,7 @@
 	line "how sometime?"
 	done
 
-SaffronMart_MapEventHeader:
+SaffronMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SaffronPokecenter1F.asm
+++ b/maps/SaffronPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const SAFFRONPOKECENTER1F_FISHER
 	const SAFFRONPOKECENTER1F_YOUNGSTER
 
-SaffronPokecenter1F_MapScriptHeader:
+SaffronPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,7 +15,7 @@
 	jumpstd pokecenternurse
 
 TeacherScript_0x18a480:
-	special Mobile_DummyReturnFalse
+	special Special_Mobile_DummyReturnFalse
 	iftrue .mobile
 	jumptextfaceplayer UnknownText_0x18a4a3
 
@@ -111,7 +111,7 @@
 	line "SAFFRON."
 	done
 
-SaffronPokecenter1F_MapEventHeader:
+SaffronPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SaffronPokecenter2FBeta.asm
+++ b/maps/SaffronPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-SaffronPokecenter2FBeta_MapScriptHeader:
+SaffronPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-SaffronPokecenter2FBeta_MapEventHeader:
+SaffronPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SaffronTrainStation.asm
+++ /dev/null
@@ -1,241 +1,0 @@
-const_value set 2
-	const SAFFRONTRAINSTATION_OFFICER
-	const SAFFRONTRAINSTATION_GYM_GUY
-	const SAFFRONTRAINSTATION_TEACHER
-	const SAFFRONTRAINSTATION_LASS
-
-SaffronTrainStation_MapScriptHeader:
-.SceneScripts:
-	db 1
-	scene_script .DummyScene
-
-.MapCallbacks:
-	db 0
-
-.DummyScene:
-	end
-
-OfficerScript_0x18a81e:
-	faceplayer
-	opentext
-	checkevent EVENT_RESTORED_POWER_TO_KANTO
-	iftrue .MagnetTrainToGoldenrod
-	writetext UnknownText_0x18a8a9
-	waitbutton
-	closetext
-	end
-
-.MagnetTrainToGoldenrod:
-	writetext UnknownText_0x18a8dd
-	yesorno
-	iffalse .DecidedNotToRide
-	checkitem PASS
-	iffalse .PassNotInBag
-	writetext UnknownText_0x18a917
-	waitbutton
-	closetext
-	applymovement SAFFRONTRAINSTATION_OFFICER, MovementData_0x18a88f
-	applymovement PLAYER, MovementData_0x18a898
-	writebyte $1
-	special Special_MagnetTrain
-	warpcheck
-	newloadmap MAPSETUP_TRAIN
-	applymovement PLAYER, .MovementBoardTheTrain
-	wait $14
-	end
-
-.MovementBoardTheTrain:
-	turn_head DOWN
-	step_end
-
-.PassNotInBag:
-	writetext UnknownText_0x18a956
-	waitbutton
-	closetext
-	end
-
-.DecidedNotToRide:
-	writetext UnknownText_0x18a978
-	waitbutton
-	closetext
-	end
-
-Script_ArriveFromGoldenrod:
-	applymovement SAFFRONTRAINSTATION_OFFICER, MovementData_0x18a88f
-	applymovement PLAYER, MovementData_0x18a8a1
-	applymovement SAFFRONTRAINSTATION_OFFICER, MovementData_0x18a894
-	opentext
-	writetext UnknownText_0x18a993
-	waitbutton
-	closetext
-	end
-
-GymGuyScript_0x18a875:
-	faceplayer
-	opentext
-	checkevent EVENT_RETURNED_MACHINE_PART
-	iftrue UnknownScript_0x18a883
-	writetext UnknownText_0x18a9ca
-	waitbutton
-	closetext
-	end
-
-UnknownScript_0x18a883:
-	writetext UnknownText_0x18aa61
-	waitbutton
-	closetext
-	end
-
-SaffronTrainStationTeacherScript:
-	jumptextfaceplayer SaffronTrainStationTeacherText
-
-SaffronTrainStationLassScript:
-	jumptextfaceplayer SaffronTrainStationLassText
-
-MovementData_0x18a88f:
-	step UP
-	step UP
-	step RIGHT
-	turn_head LEFT
-	step_end
-
-MovementData_0x18a894:
-	step LEFT
-	step DOWN
-	step DOWN
-	step_end
-
-MovementData_0x18a898:
-	step UP
-	step UP
-	step UP
-	step LEFT
-	step LEFT
-	step LEFT
-	step UP
-	step UP
-	step_end
-
-MovementData_0x18a8a1:
-	step LEFT
-	step LEFT
-	step DOWN
-	step DOWN
-	step DOWN
-	step DOWN
-	turn_head UP
-	step_end
-
-UnknownText_0x18a8a9:
-	text "I'm sorry, but the"
-	line "MAGNET TRAIN isn't"
-	cont "operating now."
-	done
-
-UnknownText_0x18a8dd:
-	text "We'll soon depart"
-	line "for GOLDENROD."
-
-	para "Are you coming on"
-	line "board?"
-	done
-
-UnknownText_0x18a917:
-	text "May I see your"
-	line "rail PASS, please?"
-
-	para "OK. Right this"
-	line "way, please."
-	done
-
-UnknownText_0x18a956:
-	text "Sorry, but you"
-	line "don't have a PASS."
-	done
-
-UnknownText_0x18a978:
-	text "We hope to see you"
-	line "again."
-	done
-
-UnknownText_0x18a993:
-	text "We have arrived in"
-	line "SAFFRON."
-
-	para "We hope to see you"
-	line "again."
-	done
-
-UnknownText_0x18a9ca:
-	text "The MAGNET TRAIN"
-	line "is a super-modern"
-
-	para "rail liner that"
-	line "uses electricity"
-
-	para "and magnets to"
-	line "attain incredible"
-	cont "speed."
-
-	para "However, if there"
-	line "isn't any elec-"
-	cont "tricity…"
-	done
-
-UnknownText_0x18aa61:
-	text "Whew…"
-
-	para "How many times"
-	line "have I gone back"
-
-	para "and forth between"
-	line "KANTO and JOHTO?"
-	done
-
-SaffronTrainStationTeacherText:
-	text "Before the MAGNET"
-	line "TRAIN STATION was"
-
-	para "built, there was a"
-	line "house there."
-
-	para "A little girl"
-	line "named COPYCAT used"
-	cont "to live there."
-	done
-
-SaffronTrainStationLassText:
-	text "Hi. Do you have a"
-	line "rail PASS? I have"
-
-	para "one. All the peo-"
-	line "ple in SAFFRON who"
-
-	para "ride the MAGNET"
-	line "TRAIN have PASSES."
-	done
-
-SaffronTrainStation_MapEventHeader:
-	; filler
-	db 0, 0
-
-.Warps:
-	db 4
-	warp_def 8, 17, 6, SAFFRON_CITY
-	warp_def 9, 17, 6, SAFFRON_CITY
-	warp_def 6, 5, 4, GOLDENROD_MAGNET_TRAIN_STATION
-	warp_def 11, 5, 3, GOLDENROD_MAGNET_TRAIN_STATION
-
-.CoordEvents:
-	db 1
-	coord_event 11, 6, 0, Script_ArriveFromGoldenrod
-
-.BGEvents:
-	db 0
-
-.ObjectEvents:
-	db 4
-	object_event 9, 9, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OfficerScript_0x18a81e, -1
-	object_event 10, 14, SPRITE_GYM_GUY, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GymGuyScript_0x18a875, -1
-	object_event 6, 11, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SaffronTrainStationTeacherScript, EVENT_SAFFRON_TRAIN_STATION_POPULATION
-	object_event 6, 10, SPRITE_LASS, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, SaffronTrainStationLassScript, EVENT_SAFFRON_TRAIN_STATION_POPULATION
--- a/maps/SaffronTrainStation.blk
+++ /dev/null
@@ -1,6 +1,0 @@
-
-
-
-
-
-/  3	
\ No newline at end of file
--- a/maps/SeafoamGym.asm
+++ b/maps/SeafoamGym.asm
@@ -2,7 +2,7 @@
 	const SEAFOAMGYM_BLAINE
 	const SEAFOAMGYM_GYM_GUY
 
-SeafoamGym_MapScriptHeader:
+SeafoamGym_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -22,7 +22,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x1ab646, 0
-	loadtrainer BLAINE, 1
+	loadtrainer BLAINE, BLAINE1
 	startbattle
 	iftrue .ReturnAfterBattle
 	appear SEAFOAMGYM_GYM_GUY
@@ -157,7 +157,7 @@
 	line "for a building."
 	done
 
-SeafoamGym_MapEventHeader:
+SeafoamGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilphCo1F.asm
+++ b/maps/SilphCo1F.asm
@@ -2,7 +2,7 @@
 	const SILPHCO1F_RECEPTIONIST
 	const SILPHCO1F_OFFICER
 
-SilphCo1F_MapScriptHeader:
+SilphCo1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -55,7 +55,7 @@
 	line "anywhere yet."
 	done
 
-SilphCo1F_MapEventHeader:
+SilphCo1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilverCaveItemRooms.asm
+++ b/maps/SilverCaveItemRooms.asm
@@ -2,7 +2,7 @@
 	const SILVERCAVEITEMROOMS_POKE_BALL1
 	const SILVERCAVEITEMROOMS_POKE_BALL2
 
-SilverCaveItemRooms_MapScriptHeader:
+SilverCaveItemRooms_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -15,7 +15,7 @@
 SilverCaveItemRoomsFullRestore:
 	itemball FULL_RESTORE
 
-SilverCaveItemRooms_MapEventHeader:
+SilverCaveItemRooms_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilverCaveOutside.asm
+++ b/maps/SilverCaveOutside.asm
@@ -1,10 +1,10 @@
-SilverCaveOutside_MapScriptHeader:
+SilverCaveOutside_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_SILVER_CAVE
@@ -17,13 +17,13 @@
 	jumptext MtSilverSignText
 
 SilverCaveOutsideHiddenFullRestore:
-	dwb EVENT_SILVER_CAVE_OUTSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_SILVER_CAVE_OUTSIDE_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
 MtSilverSignText:
 	text "MT.SILVER"
 	done
 
-SilverCaveOutside_MapEventHeader:
+SilverCaveOutside_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilverCavePokecenter1F.asm
+++ b/maps/SilverCavePokecenter1F.asm
@@ -2,7 +2,7 @@
 	const SILVERCAVEPOKECENTER1F_NURSE
 	const SILVERCAVEPOKECENTER1F_GRANNY
 
-SilverCavePokecenter1F_MapScriptHeader:
+SilverCavePokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -29,7 +29,7 @@
 	line "anywhere…"
 	done
 
-SilverCavePokecenter1F_MapEventHeader:
+SilverCavePokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilverCaveRoom1.asm
+++ b/maps/SilverCaveRoom1.asm
@@ -4,7 +4,7 @@
 	const SILVERCAVEROOM1_POKE_BALL3
 	const SILVERCAVEROOM1_POKE_BALL4
 
-SilverCaveRoom1_MapScriptHeader:
+SilverCaveRoom1_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -24,14 +24,12 @@
 	itemball ULTRA_BALL
 
 SilverCaveRoom1HiddenDireHit:
-	dwb EVENT_SILVER_CAVE_ROOM_1_HIDDEN_DIRE_HIT, DIRE_HIT
+	hiddenitem EVENT_SILVER_CAVE_ROOM_1_HIDDEN_DIRE_HIT, DIRE_HIT
 
-
 SilverCaveRoom1HiddenUltraBall:
-	dwb EVENT_SILVER_CAVE_ROOM_1_HIDDEN_ULTRA_BALL, ULTRA_BALL
+	hiddenitem EVENT_SILVER_CAVE_ROOM_1_HIDDEN_ULTRA_BALL, ULTRA_BALL
 
-
-SilverCaveRoom1_MapEventHeader:
+SilverCaveRoom1_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilverCaveRoom2.asm
+++ b/maps/SilverCaveRoom2.asm
@@ -3,7 +3,7 @@
 	const SILVERCAVEROOM2_POKE_BALL2
 	const SILVERCAVEROOM2_POKE_BALL3
 
-SilverCaveRoom2_MapScriptHeader:
+SilverCaveRoom2_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -20,10 +20,9 @@
 	itemball PP_UP
 
 SilverCaveRoom2HiddenMaxPotion:
-	dwb EVENT_SILVER_CAVE_ROOM_2_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_SILVER_CAVE_ROOM_2_HIDDEN_MAX_POTION, MAX_POTION
 
-
-SilverCaveRoom2_MapEventHeader:
+SilverCaveRoom2_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SilverCaveRoom3.asm
+++ b/maps/SilverCaveRoom3.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const SILVERCAVEROOM3_RED
 
-SilverCaveRoom3_MapScriptHeader:
+SilverCaveRoom3_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -16,7 +16,7 @@
 	waitbutton
 	closetext
 	winlosstext .Text2, .Text2
-	loadtrainer RED, 1
+	loadtrainer RED, RED1
 	startbattle
 	dontrestartmapmusic
 	reloadmapafterbattle
@@ -26,19 +26,19 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear SILVERCAVEROOM3_RED
 	pause 15
 	special Special_FadeInQuickly
 	pause 30
 	special HealParty
-	refreshscreen $0
+	refreshscreen
 	credits
 	end
 
 .Text1:
-	text $56
-	line $56
+	text "<……>"
+	line "<……>"
 	done
 
 .Text2:
@@ -46,11 +46,11 @@
 	done
 
 .Text3:
-	text $56
-	line $56
+	text "<……>"
+	line "<……>"
 	done
 
-SilverCaveRoom3_MapEventHeader:
+SilverCaveRoom3_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -9,7 +9,7 @@
 	const SLOWPOKEWELLB1F_BOULDER
 	const SLOWPOKEWELLB1F_POKE_BALL
 
-SlowpokeWellB1F_MapScriptHeader:
+SlowpokeWellB1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -39,7 +39,7 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear SLOWPOKEWELLB1F_ROCKET1
 	disappear SLOWPOKEWELLB1F_ROCKET2
 	disappear SLOWPOKEWELLB1F_ROCKET3
@@ -47,7 +47,7 @@
 	pause 15
 	special Special_FadeInQuickly
 	disappear SLOWPOKEWELLB1F_KURT
-	moveobject SLOWPOKEWELLB1F_KURT, $b, $6
+	moveobject SLOWPOKEWELLB1F_KURT, 11, 6
 	appear SLOWPOKEWELLB1F_KURT
 	applymovement SLOWPOKEWELLB1F_KURT, KurtSlowpokeWellVictoryMovementData
 	spriteface PLAYER, RIGHT
@@ -57,7 +57,7 @@
 	closetext
 	setevent EVENT_CLEARED_SLOWPOKE_WELL
 	variablesprite SPRITE_AZALEA_ROCKET, SPRITE_SILVER
-	setmapscene AZALEA_TOWN, $1
+	setmapscene AZALEA_TOWN, 1
 	clearevent EVENT_ILEX_FOREST_APPRENTICE
 	clearevent EVENT_ILEX_FOREST_FARFETCHD
 	setevent EVENT_CHARCOAL_KILN_FARFETCH_D
@@ -67,10 +67,10 @@
 	clearevent EVENT_AZALEA_TOWN_SLOWPOKES
 	clearevent EVENT_KURTS_HOUSE_SLOWPOKE
 	clearevent EVENT_KURTS_HOUSE_KURT_1
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	special HealParty
 	pause 15
-	warp KURTS_HOUSE, $3, $3
+	warp KURTS_HOUSE, 3, 3
 	end
 
 TrainerGruntM2:
@@ -320,7 +320,7 @@
 	line "its TAIL cut off…"
 	done
 
-SlowpokeWellB1F_MapEventHeader:
+SlowpokeWellB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SlowpokeWellB2F.asm
+++ b/maps/SlowpokeWellB2F.asm
@@ -2,7 +2,7 @@
 	const SLOWPOKEWELLB2F_GYM_GUY
 	const SLOWPOKEWELLB2F_POKE_BALL
 
-SlowpokeWellB2F_MapScriptHeader:
+SlowpokeWellB2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -61,7 +61,7 @@
 	cont "one evolve."
 	done
 
-SlowpokeWellB2F_MapEventHeader:
+SlowpokeWellB2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SoulHouse.asm
+++ b/maps/SoulHouse.asm
@@ -4,7 +4,7 @@
 	const SOULHOUSE_LASS
 	const SOULHOUSE_GRANNY
 
-SoulHouse_MapScriptHeader:
+SoulHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -72,7 +72,7 @@
 	line "my grandchildren…"
 	done
 
-SoulHouse_MapEventHeader:
+SoulHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -6,7 +6,7 @@
 	const SPROUTTOWER1F_SAGE3
 	const SPROUTTOWER1F_POKE_BALL
 
-SproutTower1F_MapScriptHeader:
+SproutTower1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -102,7 +102,7 @@
 	line "distinguished."
 	done
 
-SproutTower1F_MapEventHeader:
+SproutTower1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -3,7 +3,7 @@
 	const SPROUTTOWER2F_SAGE2
 	const SPROUTTOWER2F_POKE_BALL
 
-SproutTower2F_MapScriptHeader:
+SproutTower2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -84,7 +84,7 @@
 	line "distinguished."
 	done
 
-SproutTower2F_MapEventHeader:
+SproutTower2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -7,7 +7,7 @@
 	const SPROUTTOWER3F_POKE_BALL2
 	const SPROUTTOWER3F_SILVER
 
-SproutTower3F_MapScriptHeader:
+SproutTower3F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -55,11 +55,11 @@
 	closetext
 	playsound SFX_WARP_TO
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear SPROUTTOWER3F_SILVER
 	waitsfx
 	special Special_FadeInQuickly
-	setscene $1
+	setscene 1
 	special RestartMapMusic
 	end
 
@@ -329,7 +329,7 @@
 	line "distinguished."
 	done
 
-SproutTower3F_MapEventHeader:
+SproutTower3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -6,7 +6,7 @@
 	const TEAMROCKETBASEB1F_POKE_BALL2
 	const TEAMROCKETBASEB1F_POKE_BALL3
 
-TeamRocketBaseB1F_MapScriptHeader:
+TeamRocketBaseB1F_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -13,7 +13,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .HideSecurityGrunt
+	callback MAPCALLBACK_OBJECTS, .HideSecurityGrunt
 
 .DummyScene:
 	end
@@ -30,20 +30,20 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $13, $2
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 2
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $13, $2
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 2
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_1
 	end
 
@@ -55,20 +55,20 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $13, $3
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 3
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $13, $3
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 3
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_1
 	end
 
@@ -80,21 +80,21 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $4, $7
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 4, 7
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement2
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $c, $5
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 12, 5
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement3
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_2
 	end
 
@@ -106,21 +106,21 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $4, $8
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 4, 8
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement4
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $c, $5
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 12, 5
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement5
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_2
 	end
 
@@ -132,21 +132,21 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $13, $6
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 6
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $19, $b
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 25, 11
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement6
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_3
 	end
 
@@ -158,21 +158,21 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $13, $7
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 7
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $19, $c
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 25, 12
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement7
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_3
 	end
 
@@ -184,21 +184,21 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $11, $10
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 17, 16
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $19, $b
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 25, 11
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement8
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_4
 	end
 
@@ -210,21 +210,21 @@
 	iftrue NoSecurityCamera
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $3, $10
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 3, 16
 	appear TEAMROCKETBASEB1F_ROCKET1
 	spriteface PLAYER, LEFT
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
 	scall TrainerCameraGrunt1
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	scall PlaySecurityCameraSounds
 	showemote EMOTE_SHOCK, PLAYER, 15
 	playmusic MUSIC_ROCKET_ENCOUNTER
 	spriteface PLAYER, RIGHT
-	moveobject TEAMROCKETBASEB1F_ROCKET1, $e, $10
+	moveobject TEAMROCKETBASEB1F_ROCKET1, 14, 16
 	appear TEAMROCKETBASEB1F_ROCKET1
 	applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement9
 	scall TrainerCameraGrunt2
-	if_equal $1, NoSecurityCamera
+	if_equal TRUE, NoSecurityCamera
 	setevent EVENT_SECURITY_CAMERA_5
 	end
 
@@ -448,9 +448,9 @@
 	end
 
 VoltorbExplodingTrap:
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	cry VOLTORB
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	setlasttalked -1
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadwildmon VOLTORB, 23
@@ -458,9 +458,9 @@
 	end
 
 GeodudeExplodingTrap:
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	cry GEODUDE
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	setlasttalked -1
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadwildmon GEODUDE, 21
@@ -468,9 +468,9 @@
 	end
 
 KoffingExplodingTrap:
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	cry KOFFING
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	setlasttalked -1
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadwildmon KOFFING, 21
@@ -540,9 +540,8 @@
 	itemball GUARD_SPEC
 
 TeamRocketBaseB1FHiddenRevive:
-	dwb EVENT_TEAM_ROCKET_BASE_B1F_HIDDEN_REVIVE, REVIVE
+	hiddenitem EVENT_TEAM_ROCKET_BASE_B1F_HIDDEN_REVIVE, REVIVE
 
-
 SecurityCameraMovement1:
 	big_step RIGHT
 	big_step RIGHT
@@ -727,7 +726,7 @@
 	line "turned off."
 	done
 
-TeamRocketBaseB1F_MapEventHeader:
+TeamRocketBaseB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -14,7 +14,7 @@
 	const TEAMROCKETBASEB2F_ROCKET4
 	const TEAMROCKETBASEB2F_POKE_BALL
 
-TeamRocketBaseB2F_MapScriptHeader:
+TeamRocketBaseB2F_MapScripts:
 .SceneScripts:
 	db 4
 	scene_script .DummyScene0
@@ -24,7 +24,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .TransmitterDoorCallback
+	callback MAPCALLBACK_TILES, .TransmitterDoorCallback
 
 .DummyScene0:
 	end
@@ -40,22 +40,22 @@
 
 .TransmitterDoorCallback:
 	checkevent EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
-	iftrue .Change
+	iftrue .OpenDoor
 	return
 
-.Change:
-	changeblock $e, $c, $7
+.OpenDoor:
+	changeblock 14, 12, $07 ; floor
 	return
 
 UnknownScript_0x6cf95:
-	moveobject TEAMROCKETBASEB2F_LANCE, $9, $d
+	moveobject TEAMROCKETBASEB2F_LANCE, 9, 13
 	jump UnknownScript_0x6cfac
 
 UnknownScript_0x6cf9c:
-	moveobject TEAMROCKETBASEB2F_ROCKET_GIRL, $15, $10
-	moveobject TEAMROCKETBASEB2F_ROCKET1, $15, $10
-	moveobject TEAMROCKETBASEB2F_DRAGON, $a, $d
-	moveobject TEAMROCKETBASEB2F_LANCE, $a, $d
+	moveobject TEAMROCKETBASEB2F_ROCKET_GIRL, 21, 16
+	moveobject TEAMROCKETBASEB2F_ROCKET1, 21, 16
+	moveobject TEAMROCKETBASEB2F_DRAGON, 10, 13
+	moveobject TEAMROCKETBASEB2F_LANCE, 10, 13
 UnknownScript_0x6cfac:
 	appear TEAMROCKETBASEB2F_ROCKET_GIRL
 	appear TEAMROCKETBASEB2F_ROCKET1
@@ -110,7 +110,7 @@
 	waitbutton
 	closetext
 	special Special_FadeBlackQuickly
-	special Special_ReloadSpritesNoPalettes
+	special ReloadSpritesNoPalettes
 	disappear TEAMROCKETBASEB2F_ROCKET1
 	disappear TEAMROCKETBASEB2F_ROCKET_GIRL
 	disappear TEAMROCKETBASEB2F_ROCKET2
@@ -118,7 +118,7 @@
 	disappear TEAMROCKETBASEB2F_ROCKET4
 	pause 15
 	special Special_FadeInQuickly
-	setscene $2
+	setscene 2
 	clearevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
 	spriteface TEAMROCKETBASEB2F_LANCE, DOWN
 	opentext
@@ -166,16 +166,16 @@
 	writetext LanceHealsText1
 	waitbutton
 	closetext
-	special FadeOutPalettes
-	special TrainerRankings_Healings
+	special Special_FadeOutPalettes
+	special Special_StubbedTrainerRankings_Healings
 	playsound SFX_FULL_HEAL
 	special HealParty
-	special FadeInPalettes
+	special Special_FadeInPalettes
 	opentext
 	writetext LanceHealsText2
 	waitbutton
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_LANCE_HEALED_YOU_IN_TEAM_ROCKET_BASE
 	checkcode VAR_FACING
 	if_equal RIGHT, UnknownScript_0x6d0be
@@ -280,7 +280,7 @@
 	end
 
 UnknownScript_0x6d184:
-	moveobject TEAMROCKETBASEB2F_LANCE, $12, $6
+	moveobject TEAMROCKETBASEB2F_LANCE, 18, 6
 	appear TEAMROCKETBASEB2F_LANCE
 	applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d27a
 	spriteface PLAYER, RIGHT
@@ -304,7 +304,7 @@
 	clearflag ENGINE_ROCKET_SIGNAL_ON_CH20
 	setevent EVENT_ROUTE_43_GATE_ROCKETS
 	setevent EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
-	setscene $3
+	setscene 3
 	clearevent EVENT_LAKE_OF_RAGE_CIVILIANS
 	setevent EVENT_TURNED_OFF_SECURITY_CAMERAS
 	setevent EVENT_SECURITY_CAMERA_1
@@ -315,7 +315,7 @@
 	end
 
 TeamRocketBaseB2FLockedDoor:
-	dw EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER, .Script
+	conditional_event EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER, .Script
 
 .Script:
 	opentext
@@ -330,7 +330,7 @@
 	writetext UnknownText_0x6dd6b
 	waitbutton
 	playsound SFX_ENTER_DOOR
-	changeblock $e, $c, $7
+	changeblock 14, 12, $07 ; floor
 	reloadmappart
 	closetext
 	setevent EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
@@ -356,9 +356,8 @@
 	itemball TM_THIEF
 
 TeamRocketBaseB2FHiddenFullHeal:
-	dwb EVENT_TEAM_ROCKET_BASE_B2F_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_TEAM_ROCKET_BASE_B2F_HIDDEN_FULL_HEAL, FULL_HEAL
 
-
 MovementData_0x6d212:
 	step RIGHT
 	step RIGHT
@@ -414,9 +413,9 @@
 
 MovementData_0x6d23b:
 	fix_facing
-	db $39 ; movement
+	set_sliding
 	jump_step RIGHT
-	db $38 ; movement
+	remove_sliding
 	remove_fixed_facing
 	step_end
 
@@ -909,7 +908,7 @@
 	line "broadcast."
 	done
 
-TeamRocketBaseB2F_MapEventHeader:
+TeamRocketBaseB2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -14,7 +14,7 @@
 	const TEAMROCKETBASEB3F_POKE_BALL4
 	const TEAMROCKETBASEB3F_POKE_BALL5
 
-TeamRocketBaseB3F_MapScriptHeader:
+TeamRocketBaseB3F_MapScripts:
 .SceneScripts:
 	db 4
 	scene_script .LanceGetsPassword
@@ -24,7 +24,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .CheckGiovanniDoor
+	callback MAPCALLBACK_TILES, .CheckGiovanniDoor
 
 .LanceGetsPassword:
 	priorityjump LanceGetPasswordScript
@@ -45,7 +45,7 @@
 	return
 
 .OpenSesame:
-	changeblock $a, $8, $7
+	changeblock 10, 8, $07 ; floor
 	return
 
 LanceGetPasswordScript:
@@ -60,7 +60,7 @@
 	closetext
 	applymovement TEAMROCKETBASEB3F_LANCE, MovementData_0x6e12c
 	disappear TEAMROCKETBASEB3F_LANCE
-	setscene $1
+	setscene 1
 	end
 
 RocketBaseRival:
@@ -79,7 +79,7 @@
 	applymovement PLAYER, RocketBaseRivalShovesPlayerMovement
 	applymovement TEAMROCKETBASEB3F_SILVER, RocketBaseRivalLeaveMovement
 	disappear TEAMROCKETBASEB3F_SILVER
-	setscene $2
+	setscene 2
 	special RestartMapMusic
 	end
 
@@ -116,7 +116,7 @@
 	playsound SFX_TACKLE
 	applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e147
 	disappear TEAMROCKETBASEB3F_ROCKET1
-	setscene $3
+	setscene 3
 	end
 
 RocketBaseMurkrow:
@@ -174,7 +174,7 @@
 	end
 
 TeamRocketBaseB3FLockedDoor:
-	dw EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE, .Script
+	conditional_event EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE, .Script
 
 .Script:
 	opentext
@@ -194,7 +194,7 @@
 	writetext UnknownText_0x6e9a3
 	waitbutton
 	playsound SFX_ENTER_DOOR
-	changeblock $a, $8, $7
+	changeblock 10, 8, $07 ; floor
 	reloadmappart
 	closetext
 	setevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
@@ -565,7 +565,7 @@
 	para "The door opened!"
 	done
 
-TeamRocketBaseB3F_MapEventHeader:
+TeamRocketBaseB3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -2,7 +2,7 @@
 	const TIMECAPSULE_CHRIS1
 	const TIMECAPSULE_CHRIS2
 
-TimeCapsule_MapScriptHeader:
+TimeCapsule_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .InitializeTimeCapsule
@@ -10,7 +10,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .SetWhichChris
+	callback MAPCALLBACK_OBJECTS, .SetWhichChris
 
 .InitializeTimeCapsule:
 	priorityjump .InitializeAndPreparePokecenter2F
@@ -32,8 +32,8 @@
 	return
 
 .InitializeAndPreparePokecenter2F:
-	setscene $1
-	setmapscene POKECENTER_2F, $3
+	setscene 1
+	setmapscene POKECENTER_2F, 3
 	end
 
 MapTimeCapsuleSignpost1Script:
@@ -53,7 +53,7 @@
 	line "ready."
 	done
 
-TimeCapsule_MapEventHeader:
+TimeCapsule_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower1F.asm
+++ b/maps/TinTower1F.asm
@@ -10,7 +10,7 @@
 	const TINTOWER1F_SAGE5
 	const TINTOWER1F_SAGE6
 
-TinTower1F_MapScriptHeader:
+TinTower1F_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .FaceSuicune
@@ -18,8 +18,8 @@
 
 .MapCallbacks:
 	db 2
-	dbw MAPCALLBACK_OBJECTS, .NPCsCallback
-	dbw MAPCALLBACK_TILES, .StairsCallback
+	callback MAPCALLBACK_OBJECTS, .NPCsCallback
+	callback MAPCALLBACK_TILES, .StairsCallback
 
 .FaceSuicune:
 	priorityjump .SuicuneBattle
@@ -33,7 +33,7 @@
 	iftrue .GotRainbowWing
 	checkevent EVENT_BEAT_ELITE_FOUR
 	iffalse .FaceBeasts
-	special SpecialBeastsCheck
+	special Special_BeastsCheck
 	iffalse .FaceBeasts
 	clearevent EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	setevent EVENT_TIN_TOWER_1F_WISE_TRIO_1
@@ -49,7 +49,7 @@
 	iftrue .FoughtSuicune
 	appear TINTOWER1F_SUICUNE
 	writebyte RAIKOU
-	special SpecialMonCheck
+	special Special_MonCheck
 	iftrue .NoRaikou
 	appear TINTOWER1F_RAIKOU
 	jump .CheckEntei
@@ -58,7 +58,7 @@
 	disappear TINTOWER1F_RAIKOU
 .CheckEntei:
 	writebyte ENTEI
-	special SpecialMonCheck
+	special Special_MonCheck
 	iftrue .NoEntei
 	appear TINTOWER1F_ENTEI
 	jump .BeastsDone
@@ -79,7 +79,7 @@
 .StairsCallback:
 	checkevent EVENT_GOT_RAINBOW_WING
 	iftrue .DontHideStairs
-	changeblock $a, $2, $9
+	changeblock 10, 2, $09 ; floor
 .DontHideStairs:
 	return
 
@@ -87,7 +87,7 @@
 	applymovement PLAYER, TinTowerPlayerMovement1
 	pause 15
 	writebyte RAIKOU
-	special SpecialMonCheck
+	special Special_MonCheck
 	iftrue .Next1 ; if player caught Raikou, he doesn't appear in Tin Tower
 	applymovement TINTOWER1F_RAIKOU, TinTowerRaikouMovement1
 	spriteface PLAYER, LEFT
@@ -100,7 +100,7 @@
 	waitsfx
 .Next1:
 	writebyte ENTEI
-	special SpecialMonCheck
+	special Special_MonCheck
 	iftrue .Next2 ; if player caught Entei, he doesn't appear in Tin Tower
 	applymovement TINTOWER1F_ENTEI, TinTowerEnteiMovement1
 	spriteface PLAYER, RIGHT
@@ -125,12 +125,12 @@
 	disappear TINTOWER1F_SUICUNE
 	setevent EVENT_FOUGHT_SUICUNE
 	setevent EVENT_SAW_SUICUNE_ON_ROUTE_42
-	setmapscene ROUTE_42, $0
+	setmapscene ROUTE_42, 0
 	setevent EVENT_SAW_SUICUNE_ON_ROUTE_36
-	setmapscene ROUTE_36, $0
+	setmapscene ROUTE_36, 0
 	setevent EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
-	setmapscene CIANWOOD_CITY, $0
-	setscene $1
+	setmapscene CIANWOOD_CITY, 0
+	setscene 1
 	clearevent EVENT_SET_WHEN_FOUGHT_HO_OH
 	reloadmapafterbattle
 	pause 20
@@ -137,24 +137,24 @@
 	spriteface PLAYER, DOWN
 	playmusic MUSIC_MYSTICALMAN_ENCOUNTER
 	playsound SFX_ENTER_DOOR
-	moveobject TINTOWER1F_EUSINE, $a, $f
+	moveobject TINTOWER1F_EUSINE, 10, 15
 	appear TINTOWER1F_EUSINE
 	applymovement TINTOWER1F_EUSINE, MovementData_0x1851ec
 	playsound SFX_ENTER_DOOR
-	moveobject TINTOWER1F_SAGE1, $9, $f
+	moveobject TINTOWER1F_SAGE1, 9, 15
 	appear TINTOWER1F_SAGE1
 	applymovement TINTOWER1F_SAGE1, MovementData_0x1851f5
 	playsound SFX_ENTER_DOOR
-	moveobject TINTOWER1F_SAGE2, $9, $f
+	moveobject TINTOWER1F_SAGE2, 9, 15
 	appear TINTOWER1F_SAGE2
 	applymovement TINTOWER1F_SAGE2, MovementData_0x1851fb
 	playsound SFX_ENTER_DOOR
-	moveobject TINTOWER1F_SAGE3, $9, $f
+	moveobject TINTOWER1F_SAGE3, 9, 15
 	appear TINTOWER1F_SAGE3
 	applymovement TINTOWER1F_SAGE3, MovementData_0x1851fe
-	moveobject TINTOWER1F_SAGE1, $7, $d
-	moveobject TINTOWER1F_SAGE2, $9, $d
-	moveobject TINTOWER1F_SAGE3, $b, $d
+	moveobject TINTOWER1F_SAGE1, 7, 13
+	moveobject TINTOWER1F_SAGE2, 9, 13
+	moveobject TINTOWER1F_SAGE3, 11, 13
 	spriteface PLAYER, RIGHT
 	opentext
 	writetext TinTowerEusineSuicuneText
@@ -197,11 +197,11 @@
 	buttonsound
 	verbosegiveitem RAINBOW_WING
 	closetext
-	refreshscreen $0
+	refreshscreen
 	earthquake 72
 	waitsfx
 	playsound SFX_STRENGTH
-	changeblock $a, $2, $20
+	changeblock 10, 2, $20 ; stairs
 	reloadmappart
 	setevent EVENT_GOT_RAINBOW_WING
 	closetext
@@ -522,7 +522,7 @@
 	line "with SUICUNE."
 	done
 
-TinTower1F_MapEventHeader:
+TinTower1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower2F.asm
+++ b/maps/TinTower2F.asm
@@ -1,4 +1,4 @@
-TinTower2F_MapScriptHeader:
+TinTower2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-TinTower2F_MapEventHeader:
+TinTower2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower3F.asm
+++ b/maps/TinTower3F.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const TINTOWER3F_POKE_BALL
 
-TinTower3F_MapScriptHeader:
+TinTower3F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 TinTower3FFullHeal:
 	itemball FULL_HEAL
 
-TinTower3F_MapEventHeader:
+TinTower3F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower4F.asm
+++ b/maps/TinTower4F.asm
@@ -3,7 +3,7 @@
 	const TINTOWER4F_POKE_BALL2
 	const TINTOWER4F_POKE_BALL3
 
-TinTower4F_MapScriptHeader:
+TinTower4F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -20,10 +20,9 @@
 	itemball ESCAPE_ROPE
 
 TinTower4FHiddenMaxPotion:
-	dwb EVENT_TIN_TOWER_4F_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_TIN_TOWER_4F_HIDDEN_MAX_POTION, MAX_POTION
 
-
-TinTower4F_MapEventHeader:
+TinTower4F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower5F.asm
+++ b/maps/TinTower5F.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const TINTOWER5F_POKE_BALL
 
-TinTower5F_MapScriptHeader:
+TinTower5F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -12,14 +12,12 @@
 	itemball RARE_CANDY
 
 TinTower5FHiddenFullRestore:
-	dwb EVENT_TIN_TOWER_5F_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_TIN_TOWER_5F_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
-
 TinTower5FHiddenCarbos:
-	dwb EVENT_TIN_TOWER_5F_HIDDEN_CARBOS, CARBOS
+	hiddenitem EVENT_TIN_TOWER_5F_HIDDEN_CARBOS, CARBOS
 
-
-TinTower5F_MapEventHeader:
+TinTower5F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower6F.asm
+++ b/maps/TinTower6F.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const TINTOWER6F_POKE_BALL
 
-TinTower6F_MapScriptHeader:
+TinTower6F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 TinTower6FMaxPotion:
 	itemball MAX_POTION
 
-TinTower6F_MapEventHeader:
+TinTower6F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower7F.asm
+++ b/maps/TinTower7F.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const TINTOWER7F_POKE_BALL
 
-TinTower7F_MapScriptHeader:
+TinTower7F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 TinTower7FMaxRevive:
 	itemball MAX_REVIVE
 
-TinTower7F_MapEventHeader:
+TinTower7F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower8F.asm
+++ b/maps/TinTower8F.asm
@@ -3,7 +3,7 @@
 	const TINTOWER8F_POKE_BALL2
 	const TINTOWER8F_POKE_BALL3
 
-TinTower8F_MapScriptHeader:
+TinTower8F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 TinTower8FFullRestore:
 	itemball FULL_RESTORE
 
-TinTower8F_MapEventHeader:
+TinTower8F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTower9F.asm
+++ b/maps/TinTower9F.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const TINTOWER9F_POKE_BALL
 
-TinTower9F_MapScriptHeader:
+TinTower9F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -21,7 +21,7 @@
 	text "LUGIA: Gyaaan!"
 	done
 
-TinTower9F_MapEventHeader:
+TinTower9F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TinTowerRoof.asm
+++ b/maps/TinTowerRoof.asm
@@ -1,13 +1,13 @@
 const_value set 2
 	const TINTOWERROOF_HO_OH
 
-TinTowerRoof_MapScriptHeader:
+TinTowerRoof_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .HoOh
+	callback MAPCALLBACK_OBJECTS, .HoOh
 
 .HoOh:
 	checkevent EVENT_FOUGHT_HO_OH
@@ -44,7 +44,7 @@
 	text "Shaoooh!"
 	done
 
-TinTowerRoof_MapEventHeader:
+TinTowerRoof_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TohjoFalls.asm
+++ b/maps/TohjoFalls.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const TOHJOFALLS_POKE_BALL
 
-TohjoFalls_MapScriptHeader:
+TohjoFalls_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 TohjoFallsMoonStone:
 	itemball MOON_STONE
 
-TohjoFalls_MapEventHeader:
+TohjoFalls_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -2,7 +2,7 @@
 	const TRADECENTER_CHRIS1
 	const TRADECENTER_CHRIS2
 
-TradeCenter_MapScriptHeader:
+TradeCenter_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .InitializeTradeCenter
@@ -10,7 +10,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .SetWhichChris
+	callback MAPCALLBACK_OBJECTS, .SetWhichChris
 
 .InitializeTradeCenter:
 	priorityjump .InitializeAndPreparePokecenter2F
@@ -32,8 +32,8 @@
 	return
 
 .InitializeAndPreparePokecenter2F:
-	setscene $1
-	setmapscene POKECENTER_2F, $1
+	setscene 1
+	setmapscene POKECENTER_2F, 1
 	end
 
 MapTradeCenterSignpost1Script:
@@ -53,7 +53,7 @@
 	line "ready."
 	done
 
-TradeCenter_MapEventHeader:
+TradeCenter_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TrainerHouse1F.asm
+++ b/maps/TrainerHouse1F.asm
@@ -5,7 +5,7 @@
 	const TRAINERHOUSE1F_YOUNGSTER
 	const TRAINERHOUSE1F_GENTLEMAN
 
-TrainerHouse1F_MapScriptHeader:
+TrainerHouse1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -137,7 +137,7 @@
 	line "illegible…"
 	done
 
-TrainerHouse1F_MapEventHeader:
+TrainerHouse1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/TrainerHouseB1F.asm
+++ b/maps/TrainerHouseB1F.asm
@@ -2,7 +2,7 @@
 	const TRAINERHOUSEB1F_RECEPTIONIST
 	const TRAINERHOUSEB1F_CHRIS
 
-TrainerHouseB1F_MapScriptHeader:
+TrainerHouseB1F_MapScripts:
 .SceneScripts:
 	db 1
 	scene_script .DummyScene
@@ -20,13 +20,13 @@
 	iftrue .FoughtTooManyTimes
 	writetext TrainerHouseB1FIntroText
 	buttonsound
-	special SpecialTrainerHouse
+	special Special_TrainerHouse
 	iffalse .GetCal3Name
-	trainertotext CAL, CAL2, $0
+	trainertotext CAL, CAL2, MEM_BUFFER_0
 	jump .GotName
 
 .GetCal3Name:
-	trainertotext CAL, CAL3, $0
+	trainertotext CAL, CAL3, MEM_BUFFER_0
 .GotName:
 	writetext TrainerHouseB1FYourOpponentIsText
 	buttonsound
@@ -42,7 +42,7 @@
 	writetext TrainerHouseB1FCalBeforeText
 	waitbutton
 	closetext
-	special SpecialTrainerHouse
+	special Special_TrainerHouse
 	iffalse .NoSpecialBattle
 	winlosstext TrainerHouseB1FCalBeatenText, 0
 	setlasttalked TRAINERHOUSEB1F_CHRIS
@@ -169,7 +169,7 @@
 	cont "could battle you."
 	done
 
-TrainerHouseB1F_MapEventHeader:
+TrainerHouseB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/UndergroundPath.asm
+++ b/maps/UndergroundPath.asm
@@ -1,4 +1,4 @@
-UndergroundPath_MapScriptHeader:
+UndergroundPath_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -6,14 +6,12 @@
 	db 0
 
 UndergroundPathHiddenFullRestore:
-	dwb EVENT_UNDERGROUND_PATH_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_UNDERGROUND_PATH_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
-
 UndergroundPathHiddenXSpecial:
-	dwb EVENT_UNDERGROUND_PATH_HIDDEN_X_SPECIAL, X_SPECIAL
+	hiddenitem EVENT_UNDERGROUND_PATH_HIDDEN_X_SPECIAL, X_SPECIAL
 
-
-UndergroundPath_MapEventHeader:
+UndergroundPath_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -9,7 +9,7 @@
 	const UNIONCAVE1F_POKE_BALL3
 	const UNIONCAVE1F_POKE_BALL4
 
-UnionCave1F_MapScriptHeader:
+UnionCave1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -199,7 +199,7 @@
 	text "UNION CAVE"
 	done
 
-UnionCave1F_MapEventHeader:
+UnionCave1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -7,7 +7,7 @@
 	const UNIONCAVEB1F_BOULDER
 	const UNIONCAVEB1F_POKE_BALL2
 
-UnionCaveB1F_MapScriptHeader:
+UnionCaveB1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -152,7 +152,7 @@
 	cont "PROF.ELM."
 	done
 
-UnionCaveB1F_MapEventHeader:
+UnionCaveB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -6,13 +6,13 @@
 	const UNIONCAVEB2F_POKE_BALL2
 	const UNIONCAVEB2F_LAPRAS
 
-UnionCaveB2F_MapScriptHeader:
+UnionCaveB2F_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Lapras
+	callback MAPCALLBACK_OBJECTS, .Lapras
 
 .Lapras:
 	checkflag ENGINE_UNION_CAVE_LAPRAS
@@ -141,7 +141,7 @@
 	line "that #MON…"
 	done
 
-UnionCaveB2F_MapEventHeader:
+UnionCaveB2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionCity.asm
+++ b/maps/VermilionCity.asm
@@ -6,13 +6,13 @@
 	const VERMILIONCITY_BIG_SNORLAX
 	const VERMILIONCITY_POKEFAN_M
 
-VermilionCity_MapScriptHeader:
+VermilionCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_VERMILION
@@ -42,7 +42,7 @@
 
 VermilionSnorlax:
 	opentext
-	special SpecialSnorlaxAwake
+	special Special_SnorlaxAwake
 	iftrue UnknownScript_0x1aa9ab
 	writetext UnknownText_0x1aab64
 	waitbutton
@@ -68,7 +68,7 @@
 	checkevent EVENT_GOT_HP_UP_FROM_VERMILION_GUY
 	iftrue .AlreadyGotItem
 	checkcode VAR_BADGES
-	if_equal 16, .AllBadges
+	if_equal NUM_BADGES, .AllBadges
 	if_greater_than 13, .MostBadges
 	if_greater_than 9, .SomeBadges
 	writetext UnknownText_0x1aabc8
@@ -123,7 +123,7 @@
 	jumpstd martsign
 
 VermilionCityHiddenFullHeal:
-	dwb EVENT_VERMILION_CITY_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_VERMILION_CITY_HIDDEN_FULL_HEAL, FULL_HEAL
 
 VermilionCityTeacherText:
 	text "VERMILION PORT is"
@@ -267,7 +267,7 @@
 	line "ENTRANCE"
 	done
 
-VermilionCity_MapEventHeader:
+VermilionCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionGym.asm
+++ b/maps/VermilionGym.asm
@@ -5,7 +5,7 @@
 	const VERMILIONGYM_SUPER_NERD
 	const VERMILIONGYM_GYM_GUY
 
-VermilionGym_MapScriptHeader:
+VermilionGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -21,7 +21,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x192238, 0
-	loadtrainer LT_SURGE, 1
+	loadtrainer LT_SURGE, LT_SURGE1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_LTSURGE
@@ -101,7 +101,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext LT_SURGE, 1, $1
+	trainertotext LT_SURGE, LT_SURGE1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 UnknownText_0x192142:
@@ -260,7 +260,7 @@
 	line "but trash."
 	done
 
-VermilionGym_MapEventHeader:
+VermilionGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
+++ b/maps/VermilionHouseDiglettsCaveSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const VERMILIONHOUSEDIGLETTSCAVESPEECHHOUSE_GENTLEMAN
 
-VermilionHouseDiglettsCaveSpeechHouse_MapScriptHeader:
+VermilionHouseDiglettsCaveSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -20,7 +20,7 @@
 	line "to a distant town."
 	done
 
-VermilionHouseDiglettsCaveSpeechHouse_MapEventHeader:
+VermilionHouseDiglettsCaveSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionHouseFishingSpeechHouse.asm
+++ b/maps/VermilionHouseFishingSpeechHouse.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const VERMILIONHOUSEFISHINGSPEECHHOUSE_FISHING_GURU
 
-VermilionHouseFishingSpeechHouse_MapScriptHeader:
+VermilionHouseFishingSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -50,7 +50,7 @@
 	line "great time…"
 	done
 
-VermilionHouseFishingSpeechHouse_MapEventHeader:
+VermilionHouseFishingSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionMagnetTrainSpeechHouse.asm
+++ b/maps/VermilionMagnetTrainSpeechHouse.asm
@@ -2,7 +2,7 @@
 	const VERMILIONMAGNETTRAINSPEECHHOUSE_POKEFAN_F
 	const VERMILIONMAGNETTRAINSPEECHHOUSE_YOUNGSTER
 
-VermilionMagnetTrainSpeechHouse_MapScriptHeader:
+VermilionMagnetTrainSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -33,7 +33,7 @@
 	cont "the MAGNET TRAIN."
 	done
 
-VermilionMagnetTrainSpeechHouse_MapEventHeader:
+VermilionMagnetTrainSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionMart.asm
+++ b/maps/VermilionMart.asm
@@ -3,7 +3,7 @@
 	const VERMILIONMART_SUPER_NERD
 	const VERMILIONMART_BUENA
 
-VermilionMart_MapScriptHeader:
+VermilionMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -36,7 +36,7 @@
 	cont "SAFFRON."
 	done
 
-VermilionMart_MapEventHeader:
+VermilionMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionPokecenter1F.asm
+++ b/maps/VermilionPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const VERMILIONPOKECENTER1F_SAILOR
 	const VERMILIONPOKECENTER1F_BUG_CATCHER
 
-VermilionPokecenter1F_MapScriptHeader:
+VermilionPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -76,7 +76,7 @@
 	line "got them in JOHTO."
 	done
 
-VermilionPokecenter1F_MapEventHeader:
+VermilionPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionPokecenter2FBeta.asm
+++ b/maps/VermilionPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-VermilionPokecenter2FBeta_MapScriptHeader:
+VermilionPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-VermilionPokecenter2FBeta_MapEventHeader:
+VermilionPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -3,7 +3,7 @@
 	const VERMILIONPORT_SAILOR2
 	const VERMILIONPORT_SUPER_NERD
 
-VermilionPort_MapScriptHeader:
+VermilionPort_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -11,7 +11,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .DummyScene0:
 	end
@@ -27,7 +27,7 @@
 .LeaveFastShipScript:
 	applymovement PLAYER, MovementData_0x74ef3
 	appear VERMILIONPORT_SAILOR1
-	setscene $0
+	setscene 0
 	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
 	setevent EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
 	setevent EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
@@ -52,7 +52,7 @@
 	waitsfx
 	applymovement PLAYER, MovementData_0x74ef1
 	playsound SFX_EXIT_BUILDING
-	special FadeOutPalettes
+	special Special_FadeOutPalettes
 	waitsfx
 	setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	clearevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
@@ -68,8 +68,8 @@
 	clearevent EVENT_BEAT_SCHOOLBOY_RICKY
 	setevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
 	appear VERMILIONPORT_SAILOR1
-	setmapscene FAST_SHIP_1F, $1
-	warp FAST_SHIP_1F, $19, $1
+	setmapscene FAST_SHIP_1F, 1
+	warp FAST_SHIP_1F, 25, 1
 	end
 
 UnknownScript_0x74e1a:
@@ -195,9 +195,8 @@
 	end
 
 VermilionPortHiddenIron:
-	dwb EVENT_VERMILION_PORT_HIDDEN_IRON, IRON
+	hiddenitem EVENT_VERMILION_PORT_HIDDEN_IRON, IRON
 
-
 MovementData_0x74ef1:
 	step DOWN
 	step_end
@@ -299,7 +298,7 @@
 	cont "there."
 	done
 
-VermilionPort_MapEventHeader:
+VermilionPort_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VermilionPortPassage.asm
+++ b/maps/VermilionPortPassage.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const VERMILIONPORTPASSAGE_TEACHER
 
-VermilionPortPassage_MapScriptHeader:
+VermilionPortPassage_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -18,7 +18,7 @@
 	cont "every week."
 	done
 
-VermilionPortPassage_MapEventHeader:
+VermilionPortPassage_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -6,7 +6,7 @@
 	const VICTORYROAD_POKE_BALL4
 	const VICTORYROAD_POKE_BALL5
 
-VictoryRoad_MapScriptHeader:
+VictoryRoad_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -22,7 +22,7 @@
 	end
 
 UnknownScript_0x74492:
-	moveobject VICTORYROAD_SILVER, $12, $b
+	moveobject VICTORYROAD_SILVER, 18, 11
 	spriteface PLAYER, DOWN
 	showemote EMOTE_SHOCK, PLAYER, 15
 	special Special_FadeOutMusic
@@ -32,7 +32,7 @@
 	scall UnknownScript_0x744d4
 	applymovement VICTORYROAD_SILVER, MovementData_0x7454c
 	disappear VICTORYROAD_SILVER
-	setscene $1
+	setscene 1
 	playmapmusic
 	end
 
@@ -46,7 +46,7 @@
 	scall UnknownScript_0x744d4
 	applymovement VICTORYROAD_SILVER, MovementData_0x74555
 	disappear VICTORYROAD_SILVER
-	setscene $1
+	setscene 1
 	playmapmusic
 	end
 
@@ -112,13 +112,11 @@
 	itemball HP_UP
 
 VictoryRoadHiddenMaxPotion:
-	dwb EVENT_VICTORY_ROAD_HIDDEN_MAX_POTION, MAX_POTION
+	hiddenitem EVENT_VICTORY_ROAD_HIDDEN_MAX_POTION, MAX_POTION
 
-
 VictoryRoadHiddenFullHeal:
-	dwb EVENT_VICTORY_ROAD_HIDDEN_FULL_HEAL, FULL_HEAL
+	hiddenitem EVENT_VICTORY_ROAD_HIDDEN_FULL_HEAL, FULL_HEAL
 
-
 MovementData_0x74539:
 	step LEFT
 	step LEFT
@@ -240,7 +238,7 @@
 	line "thing else."
 	done
 
-VictoryRoad_MapEventHeader:
+VictoryRoad_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VictoryRoadGate.asm
+++ b/maps/VictoryRoadGate.asm
@@ -3,7 +3,7 @@
 	const VICTORYROADGATE_BLACK_BELT1
 	const VICTORYROADGATE_BLACK_BELT2
 
-VictoryRoadGate_MapScriptHeader:
+VictoryRoadGate_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -29,7 +29,7 @@
 	writetext VictoryRoadGateOfficerText
 	buttonsound
 	checkcode VAR_BADGES
-	if_greater_than 7, .AllEightBadges
+	if_greater_than NUM_JOHTO_BADGES - 1, .AllEightBadges
 	writetext VictoryRoadGateNotEnoughBadgesText
 	waitbutton
 	closetext
@@ -40,7 +40,7 @@
 	writetext VictoryRoadGateEightBadgesText
 	waitbutton
 	closetext
-	setscene $1
+	setscene 1
 	end
 
 VictoryRoadGateLeftBlackBeltScript:
@@ -97,7 +97,7 @@
 	line "ready for you!"
 	done
 
-VictoryRoadGate_MapEventHeader:
+VictoryRoadGate_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VioletCity.asm
+++ b/maps/VioletCity.asm
@@ -8,13 +8,13 @@
 	const VIOLETCITY_POKE_BALL1
 	const VIOLETCITY_POKE_BALL2
 
-VioletCity_MapScriptHeader:
+VioletCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_VIOLET
@@ -98,7 +98,7 @@
 	fruittree FRUITTREE_VIOLET_CITY
 
 VioletCityHiddenHyperPotion:
-	dwb EVENT_VIOLET_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
+	hiddenitem EVENT_VIOLET_CITY_HIDDEN_HYPER_POTION, HYPER_POTION
 
 VioletCityFollowEarl_MovementData:
 	big_step DOWN
@@ -278,7 +278,7 @@
 	line "ACADEMY"
 	done
 
-VioletCity_MapEventHeader:
+VioletCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -4,7 +4,7 @@
 	const VIOLETGYM_YOUNGSTER2
 	const VIOLETGYM_GYM_GUY
 
-VioletGym_MapScriptHeader:
+VioletGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -20,7 +20,7 @@
 	waitbutton
 	closetext
 	winlosstext UnknownText_0x6854a, 0
-	loadtrainer FALKNER, 1
+	loadtrainer FALKNER, FALKNER1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_FALKNER
@@ -36,7 +36,7 @@
 	iftrue .SpeechAfterTM
 	setevent EVENT_BEAT_BIRD_KEEPER_ROD
 	setevent EVENT_BEAT_BIRD_KEEPER_ABE
-	setmapscene ELMS_LAB, $2
+	setmapscene ELMS_LAB, 2
 	specialphonecall SPECIALCALL_ASSISTANT
 	writetext UnknownText_0x685c8
 	buttonsound
@@ -109,7 +109,7 @@
 	iftrue .Beaten
 	jumpstd gymstatue1
 .Beaten:
-	trainertotext FALKNER, 1, $1
+	trainertotext FALKNER, FALKNER1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 UnknownText_0x68473:
@@ -281,7 +281,7 @@
 	line "time at all!"
 	done
 
-VioletGym_MapEventHeader:
+VioletGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VioletKylesHouse.asm
+++ b/maps/VioletKylesHouse.asm
@@ -2,7 +2,7 @@
 	const VIOLETKYLESHOUSE_POKEFAN_M
 	const VIOLETKYLESHOUSE_KYLE
 
-VioletKylesHouse_MapScriptHeader:
+VioletKylesHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,7 +32,7 @@
 	line "disobey you."
 	done
 
-VioletKylesHouse_MapEventHeader:
+VioletKylesHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VioletMart.asm
+++ b/maps/VioletMart.asm
@@ -3,7 +3,7 @@
 	const VIOLETMART_GRANNY
 	const VIOLETMART_COOLTRAINER_M
 
-VioletMart_MapScriptHeader:
+VioletMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -48,7 +48,7 @@
 	line "items."
 	done
 
-VioletMart_MapEventHeader:
+VioletMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VioletNicknameSpeechHouse.asm
+++ b/maps/VioletNicknameSpeechHouse.asm
@@ -3,7 +3,7 @@
 	const VIOLETNICKNAMESPEECHHOUSE_LASS
 	const VIOLETNICKNAMESPEECHHOUSE_BIRD
 
-VioletNicknameSpeechHouse_MapScriptHeader:
+VioletNicknameSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -44,7 +44,7 @@
 	text "STRAWBERRY: Pijji!"
 	done
 
-VioletNicknameSpeechHouse_MapEventHeader:
+VioletNicknameSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/VioletPokecenter1F.asm
+++ b/maps/VioletPokecenter1F.asm
@@ -5,7 +5,7 @@
 	const VIOLETPOKECENTER1F_YOUNGSTER
 	const VIOLETPOKECENTER1F_SCIENTIST
 
-VioletPokecenter1F_MapScriptHeader:
+VioletPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -27,12 +27,12 @@
 	checkcode VAR_PARTYCOUNT
 	if_equal PARTY_LENGTH, .PartyFull
 	giveegg TOGEPI, 5
-	stringtotext .eggname, $1
+	stringtotext .eggname, MEM_BUFFER_1
 	scall .AideGivesEgg
 	setevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
 	clearevent EVENT_ELMS_AIDE_IN_LAB
 	clearevent EVENT_TOGEPI_HATCHED
-	setmapscene ROUTE_32, $1
+	setmapscene ROUTE_32, 1
 	writetext UnknownText_0x695c5
 	waitbutton
 	closetext
@@ -215,7 +215,7 @@
 	line "they please."
 	done
 
-VioletPokecenter1F_MapEventHeader:
+VioletPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ViridianCity.asm
+++ b/maps/ViridianCity.asm
@@ -4,13 +4,13 @@
 	const VIRIDIANCITY_FISHER
 	const VIRIDIANCITY_YOUNGSTER
 
-ViridianCity_MapScriptHeader:
+ViridianCity_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_NEWMAP, .FlyPoint
+	callback MAPCALLBACK_NEWMAP, .FlyPoint
 
 .FlyPoint:
 	setflag ENGINE_FLYPOINT_VIRIDIAN
@@ -215,7 +215,7 @@
 	line "Trainer Battles"
 	done
 
-ViridianCity_MapEventHeader:
+ViridianCity_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ViridianGym.asm
+++ b/maps/ViridianGym.asm
@@ -2,7 +2,7 @@
 	const VIRIDIANGYM_BLUE
 	const VIRIDIANGYM_GYM_GUY
 
-ViridianGym_MapScriptHeader:
+ViridianGym_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -18,7 +18,7 @@
 	waitbutton
 	closetext
 	winlosstext LeaderBlueWinText, 0
-	loadtrainer BLUE, 1
+	loadtrainer BLUE, BLUE1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_BLUE
@@ -60,7 +60,7 @@
 	jumpstd gymstatue1
 
 .Beaten:
-	trainertotext BLUE, 1, $1
+	trainertotext BLUE, BLUE1, MEM_BUFFER_1
 	jumpstd gymstatue2
 
 LeaderBlueBeforeText:
@@ -169,7 +169,7 @@
 	line "tears to my eyes."
 	done
 
-ViridianGym_MapEventHeader:
+ViridianGym_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ViridianMart.asm
+++ b/maps/ViridianMart.asm
@@ -3,7 +3,7 @@
 	const VIRIDIANMART_LASS
 	const VIRIDIANMART_COOLTRAINER_M
 
-ViridianMart_MapScriptHeader:
+ViridianMart_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -36,7 +36,7 @@
 	line "south of here."
 	done
 
-ViridianMart_MapEventHeader:
+ViridianMart_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ViridianNicknameSpeechHouse.asm
+++ b/maps/ViridianNicknameSpeechHouse.asm
@@ -4,7 +4,7 @@
 	const VIRIDIANNICKNAMESPEECHHOUSE_SPEARY
 	const VIRIDIANNICKNAMESPEECHHOUSE_RATTEY
 
-ViridianNicknameSpeechHouse_MapScriptHeader:
+ViridianNicknameSpeechHouse_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -61,7 +61,7 @@
 	text "RATTEY: Kikiii!"
 	done
 
-ViridianNicknameSpeechHouse_MapEventHeader:
+ViridianNicknameSpeechHouse_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ViridianPokecenter1F.asm
+++ b/maps/ViridianPokecenter1F.asm
@@ -4,7 +4,7 @@
 	const VIRIDIANPOKECENTER1F_COOLTRAINER_F
 	const VIRIDIANPOKECENTER1F_BUG_CATCHER
 
-ViridianPokecenter1F_MapScriptHeader:
+ViridianPokecenter1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -71,7 +71,7 @@
 	line "come a GYM LEADER."
 	done
 
-ViridianPokecenter1F_MapEventHeader:
+ViridianPokecenter1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/ViridianPokecenter2FBeta.asm
+++ b/maps/ViridianPokecenter2FBeta.asm
@@ -1,4 +1,4 @@
-ViridianPokecenter2FBeta_MapScriptHeader:
+ViridianPokecenter2FBeta_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-ViridianPokecenter2FBeta_MapEventHeader:
+ViridianPokecenter2FBeta_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandB1F.asm
+++ b/maps/WhirlIslandB1F.asm
@@ -6,7 +6,7 @@
 	const WHIRLISLANDB1F_POKE_BALL5
 	const WHIRLISLANDB1F_BOULDER
 
-WhirlIslandB1F_MapScriptHeader:
+WhirlIslandB1F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -32,18 +32,15 @@
 	jumpstd strengthboulder
 
 WhirlIslandB1FHiddenRareCandy:
-	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_RARE_CANDY, RARE_CANDY
+	hiddenitem EVENT_WHIRL_ISLAND_B1F_HIDDEN_RARE_CANDY, RARE_CANDY
 
-
 WhirlIslandB1FHiddenUltraBall:
-	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
+	hiddenitem EVENT_WHIRL_ISLAND_B1F_HIDDEN_ULTRA_BALL, ULTRA_BALL
 
-
 WhirlIslandB1FHiddenFullRestore:
-	dwb EVENT_WHIRL_ISLAND_B1F_HIDDEN_FULL_RESTORE, FULL_RESTORE
+	hiddenitem EVENT_WHIRL_ISLAND_B1F_HIDDEN_FULL_RESTORE, FULL_RESTORE
 
-
-WhirlIslandB1F_MapEventHeader:
+WhirlIslandB1F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandB2F.asm
+++ b/maps/WhirlIslandB2F.asm
@@ -3,7 +3,7 @@
 	const WHIRLISLANDB2F_POKE_BALL2
 	const WHIRLISLANDB2F_POKE_BALL3
 
-WhirlIslandB2F_MapScriptHeader:
+WhirlIslandB2F_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -19,7 +19,7 @@
 WhirlIslandB2FMaxElixer:
 	itemball MAX_ELIXER
 
-WhirlIslandB2F_MapEventHeader:
+WhirlIslandB2F_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandCave.asm
+++ b/maps/WhirlIslandCave.asm
@@ -1,4 +1,4 @@
-WhirlIslandCave_MapScriptHeader:
+WhirlIslandCave_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-WhirlIslandCave_MapEventHeader:
+WhirlIslandCave_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandLugiaChamber.asm
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -1,13 +1,13 @@
 const_value set 2
 	const WHIRLISLANDLUGIACHAMBER_LUGIA
 
-WhirlIslandLugiaChamber_MapScriptHeader:
+WhirlIslandLugiaChamber_MapScripts:
 .SceneScripts:
 	db 0
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .Lugia
+	callback MAPCALLBACK_OBJECTS, .Lugia
 
 .Lugia:
 	checkevent EVENT_FOUGHT_LUGIA
@@ -43,7 +43,7 @@
 	text "Gyaaas!"
 	done
 
-WhirlIslandLugiaChamber_MapEventHeader:
+WhirlIslandLugiaChamber_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandNE.asm
+++ b/maps/WhirlIslandNE.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const WHIRLISLANDNE_POKE_BALL
 
-WhirlIslandNE_MapScriptHeader:
+WhirlIslandNE_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 WhirlIslandNEUltraBall:
 	itemball ULTRA_BALL
 
-WhirlIslandNE_MapEventHeader:
+WhirlIslandNE_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandNW.asm
+++ b/maps/WhirlIslandNW.asm
@@ -1,4 +1,4 @@
-WhirlIslandNW_MapScriptHeader:
+WhirlIslandNW_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-WhirlIslandNW_MapEventHeader:
+WhirlIslandNW_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandSE.asm
+++ b/maps/WhirlIslandSE.asm
@@ -1,4 +1,4 @@
-WhirlIslandSE_MapScriptHeader:
+WhirlIslandSE_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -5,7 +5,7 @@
 .MapCallbacks:
 	db 0
 
-WhirlIslandSE_MapEventHeader:
+WhirlIslandSE_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WhirlIslandSW.asm
+++ b/maps/WhirlIslandSW.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const WHIRLISLANDSW_POKE_BALL
 
-WhirlIslandSW_MapScriptHeader:
+WhirlIslandSW_MapScripts:
 .SceneScripts:
 	db 0
 
@@ -11,7 +11,7 @@
 WhirlIslandSWUltraBall:
 	itemball ULTRA_BALL
 
-WhirlIslandSW_MapEventHeader:
+WhirlIslandSW_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WillsRoom.asm
+++ b/maps/WillsRoom.asm
@@ -1,7 +1,7 @@
 const_value set 2
 	const WILLSROOM_WILL
 
-WillsRoom_MapScriptHeader:
+WillsRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .LockDoor
@@ -9,7 +9,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_TILES, .WillsRoomDoors
+	callback MAPCALLBACK_TILES, .WillsRoomDoors
 
 .LockDoor:
 	priorityjump .WillsDoorLocksBehindYou
@@ -20,24 +20,24 @@
 
 .WillsRoomDoors:
 	checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
-	iffalse .KeepDoorsClosed
-	changeblock $4, $e, $2a
-.KeepDoorsClosed:
+	iffalse .KeepEntranceOpen
+	changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
 	checkevent EVENT_WILLS_ROOM_EXIT_OPEN
-	iffalse .OpenDoors
-	changeblock $4, $2, $16
-.OpenDoors:
+	iffalse .KeepExitClosed
+	changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
 	return
 
 .WillsDoorLocksBehindYou:
-	applymovement PLAYER, MovementData_0x18052c
+	applymovement PLAYER, WillsRoom_EnterMovement
 	refreshscreen $86
 	playsound SFX_STRENGTH
 	earthquake 80
-	changeblock $4, $e, $2a
+	changeblock 4, 14, $2a ; wall
 	reloadmappart
 	closetext
-	setscene $1
+	setscene 1
 	setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
 	waitsfx
 	end
@@ -46,12 +46,12 @@
 	faceplayer
 	opentext
 	checkevent EVENT_BEAT_ELITE_4_WILL
-	iftrue WillScript_0x180526
+	iftrue WillScript_AfterBattle
 	writetext WillScript_WillBeforeText
 	waitbutton
 	closetext
 	winlosstext WillScript_WillBeatenText, 0
-	loadtrainer WILL, 1
+	loadtrainer WILL, WILL1
 	startbattle
 	reloadmapafterbattle
 	setevent EVENT_BEAT_ELITE_4_WILL
@@ -60,7 +60,7 @@
 	waitbutton
 	closetext
 	playsound SFX_ENTER_DOOR
-	changeblock $4, $2, $16
+	changeblock 4, 2, $16 ; open door
 	reloadmappart
 	closetext
 	setevent EVENT_WILLS_ROOM_EXIT_OPEN
@@ -67,13 +67,13 @@
 	waitsfx
 	end
 
-WillScript_0x180526:
+WillScript_AfterBattle:
 	writetext WillScript_WillDefeatText
 	waitbutton
 	closetext
 	end
 
-MovementData_0x18052c:
+WillsRoom_EnterMovement:
 	step UP
 	step UP
 	step UP
@@ -128,7 +128,7 @@
 	line "of the ELITE FOUR."
 	done
 
-WillsRoom_MapEventHeader:
+WillsRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -6,7 +6,7 @@
 	const WISETRIOSROOM_SAGE5
 	const WISETRIOSROOM_SAGE6
 
-WiseTriosRoom_MapScriptHeader:
+WiseTriosRoom_MapScripts:
 .SceneScripts:
 	db 2
 	scene_script .DummyScene0
@@ -14,7 +14,7 @@
 
 .MapCallbacks:
 	db 1
-	dbw MAPCALLBACK_OBJECTS, .WiseTrioCallback
+	callback MAPCALLBACK_OBJECTS, .WiseTrioCallback
 
 .DummyScene0:
 	end
@@ -105,7 +105,7 @@
 	applymovement WISETRIOSROOM_SAGE6, MovementData_0x98628
 	spriteface WISETRIOSROOM_SAGE6, UP
 	setevent EVENT_KOJI_ALLOWS_YOU_PASSAGE_TO_TIN_TOWER
-	setscene $1
+	setscene 1
 	end
 
 UnknownScript_0x9861b:
@@ -344,7 +344,7 @@
 	line "you to the test."
 	done
 
-WiseTriosRoom_MapEventHeader:
+WiseTriosRoom_MapEvents:
 	; filler
 	db 0, 0
 
--- a/maps/blockdata.asm
+++ /dev/null
@@ -1,1047 +1,0 @@
-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:
-VioletKylesHouse_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"
-
-Route5UndergroundPathEntrance_BlockData:
-Route6UndergroundPathEntrance_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"
-
-GoldenrodUnderground_BlockData:
-	INCBIN "maps/GoldenrodUnderground.blk"
-
-GoldenrodUndergroundSwitchRoomEntrances_BlockData:
-	INCBIN "maps/GoldenrodUndergroundSwitchRoomEntrances.blk"
-
-GoldenrodDeptStoreB1F_BlockData:
-	INCBIN "maps/GoldenrodDeptStoreB1F.blk"
-
-GoldenrodUndergroundWarehouse_BlockData:
-	INCBIN "maps/GoldenrodUndergroundWarehouse.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"
-
-UndergroundPath_BlockData:
-	INCBIN "maps/UndergroundPath.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
+++ /dev/null
@@ -1,510 +1,0 @@
-map_header: MACRO
-;\1: map label
-;\2: tileset: a TILESET_* constant
-;\3: environment: TOWN, ROUTE, INDOOR, CAVE, ENVIRONMENT_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
-	db \4, \5
-	dn \6, \7
-	db \8
-ENDM
-
-MapGroupPointers::
-; pointers to the first map header of each map group
-	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
-
-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
-	map_header OlivinePunishmentSpeechHouse, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header OlivineGoodRodHouse, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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_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
-	map_header OlivineCity, TILESET_JOHTO_1, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
-
-
-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 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
-	map_header MahoganyTown, TILESET_JOHTO_1, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, FISHGROUP_SHORE
-
-
-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
-	map_header TinTower1F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower2F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower3F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower4F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower5F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower6F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower7F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower8F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header TinTower9F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BurnedTower1F, TILESET_SPROUT_TOWER, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, FISHGROUP_SHORE
-	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, 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
-	map_header SlowpokeWellB1F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header SlowpokeWellB2F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header OlivineLighthouse1F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header OlivineLighthouse2F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header OlivineLighthouse3F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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_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
-	map_header IlexForest, TILESET_ILEX_FOREST, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, 0, PALETTE_NITE, FISHGROUP_POND
-	map_header GoldenrodUnderground, TILESET_GATE, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodUndergroundSwitchRoomEntrances, TILESET_GYM_1, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStoreB1F, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodUndergroundWarehouse, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header MountMortar1FOutside, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header MountMortar1FInside, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header MountMortar2FInside, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header MountMortarB1F, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header IcePath1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header IcePathB1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header IcePathB2FMahoganySide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header IcePathB2FBlackthornSide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header IcePathB3F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header WhirlIslandNW, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandNE, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandSW, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandCave, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandSE, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandB1F, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandB2F, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header WhirlIslandLugiaChamber, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, FISHGROUP_WHIRL_ISLANDS
-	map_header SilverCaveRoom1, TILESET_WHIRL_ISLANDS, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DARK, FISHGROUP_LAKE
-	map_header SilverCaveRoom2, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header SilverCaveRoom3, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DAY, FISHGROUP_LAKE
-	map_header SilverCaveItemRooms, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header DarkCaveVioletEntrance, TILESET_WHIRL_ISLANDS, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, FISHGROUP_LAKE
-	map_header DarkCaveBlackthornEntrance, TILESET_WHIRL_ISLANDS, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, FISHGROUP_LAKE
-	map_header DragonsDen1F, TILESET_CAVE, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header DragonsDenB1F, TILESET_JOHTO_1, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, FISHGROUP_DRATINI
-	map_header DragonShrine, TILESET_LAB, INDOOR, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, FISHGROUP_SHORE
-	map_header TohjoFalls, TILESET_CAVE, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, 1, PALETTE_NITE, FISHGROUP_LAKE
-	map_header DiglettsCave, TILESET_CAVE, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, 1, PALETTE_NITE, FISHGROUP_SHORE
-	map_header MountMoon, TILESET_CAVE, CAVE, MT_MOON, MUSIC_MT_MOON, 1, PALETTE_NITE, FISHGROUP_SHORE
-	map_header UndergroundPath, TILESET_UNDERGROUND, GATE, UNDERGROUND_PATH, MUSIC_MT_MOON, 0, PALETTE_NITE, FISHGROUP_SHORE
-	map_header RockTunnel1F, TILESET_WHIRL_ISLANDS, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, FISHGROUP_SHORE
-	map_header RockTunnelB1F, TILESET_WHIRL_ISLANDS, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, FISHGROUP_SHORE
-	map_header SafariZoneFuchsiaGateBeta, TILESET_GATE, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header SafariZoneBeta, TILESET_PARK, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header VictoryRoad, TILESET_CAVE, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 1, PALETTE_NITE, FISHGROUP_SHORE
-
-
-MapGroup_Ecruteak:
-	map_header EcruteakHouse, TILESET_SPROUT_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 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_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
-
-
-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 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
-	map_header BlackthornCity, TILESET_JOHTO_1, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, FISHGROUP_POND
-
-
-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
-	map_header Route20, TILESET_KANTO, ROUTE, ROUTE_20, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_OCEAN
-	map_header Route21, TILESET_KANTO, ROUTE, ROUTE_21, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_OCEAN
-	map_header CinnabarIsland, TILESET_KANTO, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_OCEAN
-
-
-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 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 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
-	map_header Route9, TILESET_KANTO, ROUTE, ROUTE_9, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_LAKE
-	map_header Route10North, TILESET_KANTO, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_LAKE
-	map_header Route24, TILESET_KANTO, ROUTE, ROUTE_24, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_LAKE
-	map_header Route25, TILESET_KANTO, ROUTE, ROUTE_25, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_LAKE
-	map_header CeruleanCity, TILESET_KANTO, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, FISHGROUP_NONE
-
-
-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_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
-
-
-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
-
-
-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
-	map_header Route37, TILESET_JOHTO_1, ROUTE, ROUTE_37, MUSIC_ROUTE_36, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header VioletCity, TILESET_JOHTO_1, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, FISHGROUP_POND
-	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_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 VioletKylesHouse, 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
-
-
-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
-	map_header GoldenrodBikeShop, TILESET_OLIVINE_GYM, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodHappinessRater, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodBillsHouse, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodFlowerShop, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodPPSpeechHouse, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodNameRater, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStore1F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStore2F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStore3F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStore4F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStore5F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header GoldenrodDeptStore6F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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 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
-	map_header DayCare, TILESET_HOUSE_1, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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 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
-	map_header VermilionHouseDiglettsCaveSpeechHouse, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header VermilionGym, TILESET_GAME_CORNER, INDOOR, VERMILION_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route6SaffronGate, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route6UndergroundPathEntrance, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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_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
-
-
-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 PewterSnoozeSpeechHouse, TILESET_HOUSE_1, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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
-	map_header FastShipCabins_NNW_NNE_NE, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header FastShipCabins_SW_SSW_NW, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header FastShipCabins_SE_SSE_CaptainsCabin, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header FastShipB1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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_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
-
-
-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 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
-	map_header KarensRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header LancesRoom, TILESET_OLIVINE_GYM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header HallOfFame, TILESET_ICE_PATH, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 1, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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
-	map_header Route18, TILESET_KANTO, ROUTE, ROUTE_18, MUSIC_ROUTE_3, 0, PALETTE_AUTO, FISHGROUP_SHORE
-	map_header FuchsiaCity, TILESET_KANTO, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, FISHGROUP_GYARADOS
-	map_header FuchsiaMart, TILESET_MART, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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 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
-
-
-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 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
-	map_header LavenderMart, TILESET_MART, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header SoulHouse, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header LavRadioTower1F, TILESET_RADIO_TOWER, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route8SaffronGate, TILESET_GATE, GATE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route12SuperRodHouse, TILESET_HOUSE_1, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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 Route28FamousSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, 0, 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
-	map_header MobileTradeRoomMobile, TILESET_CELADON_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header MobileBattleRoom, TILESET_CELADON_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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
-	map_header CeladonCity, TILESET_KANTO, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, FISHGROUP_NONE
-	map_header CeladonDeptStore1F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonDeptStore2F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonDeptStore3F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonDeptStore4F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonDeptStore5F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonDeptStore6F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonDeptStoreElevator, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonMansion1F, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header CeladonMansion2F, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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 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
-	map_header CeladonCafe, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route16FuchsiaSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route16Gate, TILESET_GATE, GATE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route7SaffronGate, TILESET_GATE, GATE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route1718Gate, TILESET_GATE, GATE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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 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
-	map_header PokeSeersHouse, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BattleTower1F, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BattleTowerBattleRoom, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BattleTowerElevator, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_NONE, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BattleTowerHallway, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route40BattleTowerGate, TILESET_GATE, GATE, BATTLE_TOWER, MUSIC_ROUTE_36, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header BattleTowerOutside, TILESET_BATTLE_TOWER_OUTSIDE, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, PALETTE_AUTO, FISHGROUP_SHORE
-
-
-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
-	map_header ViridianGym, TILESET_TRAIN_STATION, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE
-	map_header ViridianNicknameSpeechHouse, TILESET_HOUSE_1, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	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 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
-
-
-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_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_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
-	map_header Route2946Gate, TILESET_GATE, GATE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_DAY, FISHGROUP_SHORE
-
-
-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 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_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 Route5UndergroundPathEntrance, 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
-
-
-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 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
-	map_header Route30BerrySpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header MrPokemonsHouse, TILESET_POWER_PLANT, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, FISHGROUP_SHORE
-	map_header Route31VioletGate, TILESET_GATE, GATE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_DAY, FISHGROUP_SHORE
--- a/maps/second_map_headers.asm
+++ /dev/null
@@ -1,685 +1,0 @@
-map_header_2: MACRO
-;\1: map label
-;\2: map id
-;\3: border block
-;\4: connections: combo of NORTH, SOUTH, WEST, and/or EAST, or 0 for none
-\1_SecondMapHeader::
-	db \3
-	db \2_HEIGHT, \2_WIDTH
-	db BANK(\1_BlockData)
-	dw \1_BlockData
-	db BANK(\1_MapScriptHeader)
-	dw \1_MapScriptHeader
-	dw \1_MapEventHeader
-	db \4
-ENDM
-
-connection: MACRO
-if "\1" == "north"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: x
-;\5: offset?
-;\6: strip length
-;\7: this map id
-	map \2
-	dw \3_BlockData + \2_WIDTH * (\2_HEIGHT - 3) + \5
-	dw OverworldMap + \4 + 3
-	db \6
-	db \2_WIDTH
-	db \2_HEIGHT * 2 - 1
-	db (\4 - \5) * -2
-	dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1
-endc
-
-if "\1" == "south"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: x
-;\5: offset?
-;\6: strip length
-;\7: this map id
-	map \2
-	dw \3_BlockData + \5
-	dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3
-	db \6
-	db \2_WIDTH
-	db 0
-	db (\4 - \5) * -2
-	dw OverworldMap + \2_WIDTH + 7
-endc
-
-if "\1" == "west"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: y
-;\5: offset?
-;\6: strip length
-;\7: this map id
-	map \2
-	dw \3_BlockData + (\2_WIDTH * \5) + \2_WIDTH - 3
-	dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3)
-	db \6
-	db \2_WIDTH
-	db (\4 - \5) * -2
-	db \2_WIDTH * 2 - 1
-	dw OverworldMap + \2_WIDTH * 2 + 6
-endc
-
-if "\1" == "east"
-;\2: map id
-;\3: map label (eventually will be rolled into map id)
-;\4: y
-;\5: offset?
-;\6: strip length
-;\7: this map id
-	map \2
-	dw \3_BlockData + (\2_WIDTH * \5)
-	dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3
-	db \6
-	db \2_WIDTH
-	db (\4 - \5) * -2
-	db 0
-	dw OverworldMap + \2_WIDTH + 7
-endc
-ENDM
-
-
-	map_header_2 NewBarkTown, NEW_BARK_TOWN, $5, WEST | EAST
-	connection west, ROUTE_29, Route29, 0, 0, 9, NEW_BARK_TOWN
-	connection east, ROUTE_27, Route27, 0, 0, 9, NEW_BARK_TOWN
-
-	map_header_2 CherrygroveCity, CHERRYGROVE_CITY, $35, NORTH | EAST
-	connection north, ROUTE_30, Route30, 5, 0, 10, CHERRYGROVE_CITY
-	connection east, ROUTE_29, Route29, 0, 0, 9, CHERRYGROVE_CITY
-
-	map_header_2 VioletCity, VIOLET_CITY, $5, SOUTH | WEST | EAST
-	connection south, ROUTE_32, Route32, 0, 0, 10, VIOLET_CITY
-	connection west, ROUTE_36, Route36, 0, 0, 9, VIOLET_CITY
-	connection east, ROUTE_31, Route31, 9, 0, 9, VIOLET_CITY
-
-	map_header_2 AzaleaTown, AZALEA_TOWN, $5, WEST | EAST
-	connection west, ROUTE_34, Route34, -3, 15, 12, AZALEA_TOWN
-	connection east, ROUTE_33, Route33, 0, 0, 9, AZALEA_TOWN
-
-	map_header_2 CianwoodCity, CIANWOOD_CITY, $35, EAST
-	connection east, ROUTE_41, Route41, 0, 0, 27, CIANWOOD_CITY
-
-	map_header_2 GoldenrodCity, GOLDENROD_CITY, $35, NORTH | SOUTH
-	connection north, ROUTE_35, Route35, 5, 0, 10, GOLDENROD_CITY
-	connection south, ROUTE_34, Route34, 5, 0, 10, GOLDENROD_CITY
-
-	map_header_2 OlivineCity, OLIVINE_CITY, $35, NORTH | WEST
-	connection north, ROUTE_39, Route39, 5, 0, 10, OLIVINE_CITY
-	connection west, ROUTE_40, Route40, 9, 0, 12, OLIVINE_CITY
-
-	map_header_2 EcruteakCity, ECRUTEAK_CITY, $5, SOUTH | WEST | EAST
-	connection south, ROUTE_37, Route37, 5, 0, 10, ECRUTEAK_CITY
-	connection west, ROUTE_38, Route38, 5, 0, 9, ECRUTEAK_CITY
-	connection east, ROUTE_42, Route42, 9, 0, 9, ECRUTEAK_CITY
-
-	map_header_2 MahoganyTown, MAHOGANY_TOWN, $71, NORTH | WEST | EAST
-	connection north, ROUTE_43, Route43, 0, 0, 10, MAHOGANY_TOWN
-	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
-	connection south, ROUTE_43, Route43, 5, 0, 10, LAKE_OF_RAGE
-
-	map_header_2 BlackthornCity, BLACKTHORN_CITY, $71, SOUTH | WEST
-	connection south, ROUTE_45, Route45, 0, 0, 10, BLACKTHORN_CITY
-	connection west, ROUTE_44, Route44, 9, 0, 9, BLACKTHORN_CITY
-
-	map_header_2 SilverCaveOutside, SILVER_CAVE_OUTSIDE, $2c, EAST
-	connection east, ROUTE_28, Route28, 9, 0, 9, SILVER_CAVE_OUTSIDE
-
-	map_header_2 Route26, ROUTE_26, $5, WEST
-	connection west, ROUTE_27, Route27, 45, 0, 9, ROUTE_26
-
-	map_header_2 Route27, ROUTE_27, $35, WEST | EAST
-	connection west, NEW_BARK_TOWN, NewBarkTown, 0, 0, 9, ROUTE_27
-	connection east, ROUTE_26, Route26, -3, 42, 12, ROUTE_27
-
-	map_header_2 Route28, ROUTE_28, $2c, WEST
-	connection west, SILVER_CAVE_OUTSIDE, SilverCaveOutside, -3, 6, 12, ROUTE_28
-
-	map_header_2 Route29, ROUTE_29, $5, NORTH | WEST | EAST
-	connection north, ROUTE_46, Route46, 10, 0, 10, ROUTE_29
-	connection west, CHERRYGROVE_CITY, CherrygroveCity, 0, 0, 9, ROUTE_29
-	connection east, NEW_BARK_TOWN, NewBarkTown, 0, 0, 9, ROUTE_29
-
-	map_header_2 Route30, ROUTE_30, $5, NORTH | SOUTH
-	connection north, ROUTE_31, Route31, -3, 7, 13, ROUTE_30
-	connection south, CHERRYGROVE_CITY, CherrygroveCity, -3, 2, 16, ROUTE_30
-
-	map_header_2 Route31, ROUTE_31, $5, SOUTH | WEST
-	connection south, ROUTE_30, Route30, 10, 0, 10, ROUTE_31
-	connection west, VIOLET_CITY, VioletCity, -3, 6, 12, ROUTE_31
-
-	map_header_2 Route32, ROUTE_32, $5, NORTH | SOUTH
-	connection north, VIOLET_CITY, VioletCity, 0, 0, 13, ROUTE_32
-	connection south, ROUTE_33, Route33, 0, 0, 10, ROUTE_32
-
-	map_header_2 Route33, ROUTE_33, $5, NORTH | WEST
-	connection north, ROUTE_32, Route32, 0, 0, 10, ROUTE_33
-	connection west, AZALEA_TOWN, AzaleaTown, 0, 0, 9, ROUTE_33
-
-	map_header_2 Route34, ROUTE_34, $5, NORTH | EAST
-	connection north, GOLDENROD_CITY, GoldenrodCity, -3, 2, 16, ROUTE_34
-	connection east, AZALEA_TOWN, AzaleaTown, 18, 0, 9, ROUTE_34
-
-	map_header_2 Route35, ROUTE_35, $5, NORTH | SOUTH
-	connection north, ROUTE_36, Route36, 0, 0, 13, ROUTE_35
-	connection south, GOLDENROD_CITY, GoldenrodCity, -3, 2, 16, ROUTE_35
-
-	map_header_2 Route36, ROUTE_36, $5, NORTH | SOUTH | EAST
-	connection north, ROUTE_37, Route37, 10, 0, 10, ROUTE_36
-	connection south, ROUTE_35, Route35, 0, 0, 10, ROUTE_36
-	connection east, VIOLET_CITY, VioletCity, 0, 0, 12, ROUTE_36
-
-	map_header_2 Route37, ROUTE_37, $5, NORTH | SOUTH
-	connection north, ECRUTEAK_CITY, EcruteakCity, -3, 2, 16, ROUTE_37
-	connection south, ROUTE_36, Route36, -3, 7, 16, ROUTE_37
-
-	map_header_2 Route38, ROUTE_38, $5, WEST | EAST
-	connection west, ROUTE_39, Route39, 0, 0, 12, ROUTE_38
-	connection east, ECRUTEAK_CITY, EcruteakCity, -3, 2, 15, ROUTE_38
-
-	map_header_2 Route39, ROUTE_39, $5, SOUTH | EAST
-	connection south, OLIVINE_CITY, OlivineCity, -3, 2, 16, ROUTE_39
-	connection east, ROUTE_38, Route38, 0, 0, 9, ROUTE_39
-
-	map_header_2 Route40, ROUTE_40, $35, SOUTH | EAST
-	connection south, ROUTE_41, Route41, -3, 12, 13, ROUTE_40
-	connection east, OLIVINE_CITY, OlivineCity, -3, 6, 12, ROUTE_40
-
-	map_header_2 Route41, ROUTE_41, $35, NORTH | WEST
-	connection north, ROUTE_40, Route40, 15, 0, 10, ROUTE_41
-	connection west, CIANWOOD_CITY, CianwoodCity, 0, 0, 27, ROUTE_41
-
-	map_header_2 Route42, ROUTE_42, $5, WEST | EAST
-	connection west, ECRUTEAK_CITY, EcruteakCity, -3, 6, 12, ROUTE_42
-	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 south, MAHOGANY_TOWN, MahoganyTown, 0, 0, 10, ROUTE_43
-
-	map_header_2 Route44, ROUTE_44, $71, WEST | EAST
-	connection west, MAHOGANY_TOWN, MahoganyTown, 0, 0, 9, ROUTE_44
-	connection east, BLACKTHORN_CITY, BlackthornCity, -3, 6, 12, ROUTE_44
-
-	map_header_2 Route45, ROUTE_45, $71, NORTH | WEST
-	connection north, BLACKTHORN_CITY, BlackthornCity, 0, 0, 13, ROUTE_45
-	connection west, ROUTE_46, Route46, 36, 0, 12, ROUTE_45
-
-	map_header_2 Route46, ROUTE_46, $5, SOUTH | EAST
-	connection south, ROUTE_29, Route29, -3, 7, 16, ROUTE_46
-	connection east, ROUTE_45, Route45, -3, 33, 12, ROUTE_46
-
-	map_header_2 PewterCity, PEWTER_CITY, $f, SOUTH | EAST
-	connection south, ROUTE_2, Route2, 5, 0, 10, PEWTER_CITY
-	connection east, ROUTE_3, Route3, 5, 0, 9, PEWTER_CITY
-
-	map_header_2 Route2, ROUTE_2, $f, NORTH | SOUTH
-	connection north, PEWTER_CITY, PewterCity, -3, 2, 16, ROUTE_2
-	connection south, VIRIDIAN_CITY, ViridianCity, -3, 2, 16, ROUTE_2
-
-	map_header_2 ViridianCity, VIRIDIAN_CITY, $f, NORTH | SOUTH | WEST
-	connection north, ROUTE_2, Route2, 5, 0, 10, VIRIDIAN_CITY
-	connection south, ROUTE_1, Route1, 10, 0, 10, VIRIDIAN_CITY
-	connection west, ROUTE_22, Route22, 4, 0, 9, VIRIDIAN_CITY
-
-	map_header_2 Route22, ROUTE_22, $2c, EAST
-	connection east, VIRIDIAN_CITY, ViridianCity, -3, 1, 15, ROUTE_22
-
-	map_header_2 Route1, ROUTE_1, $f, NORTH | SOUTH
-	connection north, VIRIDIAN_CITY, ViridianCity, -3, 7, 13, ROUTE_1
-	connection south, PALLET_TOWN, PalletTown, 0, 0, 10, ROUTE_1
-
-	map_header_2 PalletTown, PALLET_TOWN, $f, NORTH | SOUTH
-	connection north, ROUTE_1, Route1, 0, 0, 10, PALLET_TOWN
-	connection south, ROUTE_21, Route21, 0, 0, 10, PALLET_TOWN
-
-	map_header_2 Route21, ROUTE_21, $43, NORTH | SOUTH
-	connection north, PALLET_TOWN, PalletTown, 0, 0, 10, ROUTE_21
-	connection south, CINNABAR_ISLAND, CinnabarIsland, 0, 0, 10, ROUTE_21
-
-	map_header_2 CinnabarIsland, CINNABAR_ISLAND, $43, NORTH | EAST
-	connection north, ROUTE_21, Route21, 0, 0, 10, CINNABAR_ISLAND
-	connection east, ROUTE_20, Route20, 0, 0, 9, CINNABAR_ISLAND
-
-	map_header_2 Route20, ROUTE_20, $43, WEST | EAST
-	connection west, CINNABAR_ISLAND, CinnabarIsland, 0, 0, 9, ROUTE_20
-	connection east, ROUTE_19, Route19, -3, 6, 12, ROUTE_20
-
-	map_header_2 Route19, ROUTE_19, $43, NORTH | WEST
-	connection north, FUCHSIA_CITY, FuchsiaCity, 0, 0, 13, ROUTE_19
-	connection west, ROUTE_20, Route20, 9, 0, 9, ROUTE_19
-
-	map_header_2 FuchsiaCity, FUCHSIA_CITY, $f, SOUTH | WEST | EAST
-	connection south, ROUTE_19, Route19, 0, 0, 10, FUCHSIA_CITY
-	connection west, ROUTE_18, Route18, 7, 0, 9, FUCHSIA_CITY
-	connection east, ROUTE_15, Route15, 9, 0, 9, FUCHSIA_CITY
-
-	map_header_2 Route18, ROUTE_18, $43, WEST | EAST
-	connection west, ROUTE_17, Route17, -3, 35, 10, ROUTE_18
-	connection east, FUCHSIA_CITY, FuchsiaCity, -3, 4, 14, ROUTE_18
-
-	map_header_2 Route17, ROUTE_17, $43, NORTH | EAST
-	connection north, ROUTE_16, Route16, 0, 0, 10, ROUTE_17
-	connection east, ROUTE_18, Route18, 38, 0, 9, ROUTE_17
-
-	map_header_2 Route16, ROUTE_16, $f, SOUTH | EAST
-	connection south, ROUTE_17, Route17, 0, 0, 10, ROUTE_16
-	connection east, CELADON_CITY, CeladonCity, -3, 6, 12, ROUTE_16
-
-	map_header_2 CeladonCity, CELADON_CITY, $f, WEST | EAST
-	connection west, ROUTE_16, Route16, 9, 0, 9, CELADON_CITY
-	connection east, ROUTE_7, Route7, 5, 0, 9, CELADON_CITY
-
-	map_header_2 Route7, ROUTE_7, $f, WEST | EAST
-	connection west, CELADON_CITY, CeladonCity, -3, 2, 15, ROUTE_7
-	connection east, SAFFRON_CITY, SaffronCity, -3, 6, 12, ROUTE_7
-
-	map_header_2 Route15, ROUTE_15, $f, WEST | EAST
-	connection west, FUCHSIA_CITY, FuchsiaCity, -3, 6, 12, ROUTE_15
-	connection east, ROUTE_14, Route14, -3, 6, 12, ROUTE_15
-
-	map_header_2 Route14, ROUTE_14, $43, NORTH | WEST
-	connection north, ROUTE_13, Route13, 0, 0, 13, ROUTE_14
-	connection west, ROUTE_15, Route15, 9, 0, 9, ROUTE_14
-
-	map_header_2 Route13, ROUTE_13, $43, NORTH | SOUTH
-	connection north, ROUTE_12, Route12, 20, 0, 10, ROUTE_13
-	connection south, ROUTE_14, Route14, 0, 0, 10, ROUTE_13
-
-	map_header_2 Route12, ROUTE_12, $43, NORTH | SOUTH | WEST
-	connection north, LAVENDER_TOWN, LavenderTown, 0, 0, 10, ROUTE_12
-	connection south, ROUTE_13, Route13, -3, 17, 13, ROUTE_12
-	connection west, ROUTE_11, Route11, 9, 0, 9, ROUTE_12
-
-	map_header_2 Route11, ROUTE_11, $f, WEST | EAST
-	connection west, VERMILION_CITY, VermilionCity, 0, 0, 12, ROUTE_11
-	connection east, ROUTE_12, Route12, -3, 6, 15, ROUTE_11
-
-	map_header_2 LavenderTown, LAVENDER_TOWN, $2c, NORTH | SOUTH | WEST
-	connection north, ROUTE_10_SOUTH, Route10South, 0, 0, 10, LAVENDER_TOWN
-	connection south, ROUTE_12, Route12, 0, 0, 10, LAVENDER_TOWN
-	connection west, ROUTE_8, Route8, 0, 0, 9, LAVENDER_TOWN
-
-	map_header_2 VermilionCity, VERMILION_CITY, $43, NORTH | EAST
-	connection north, ROUTE_6, Route6, 5, 0, 10, VERMILION_CITY
-	connection east, ROUTE_11, Route11, 0, 0, 9, VERMILION_CITY
-
-	map_header_2 Route6, ROUTE_6, $f, NORTH | SOUTH
-	connection north, SAFFRON_CITY, SaffronCity, -3, 2, 16, ROUTE_6
-	connection south, VERMILION_CITY, VermilionCity, -3, 2, 16, ROUTE_6
-
-	map_header_2 SaffronCity, SAFFRON_CITY, $f, NORTH | SOUTH | WEST | EAST
-	connection north, ROUTE_5, Route5, 5, 0, 10, SAFFRON_CITY
-	connection south, ROUTE_6, Route6, 5, 0, 10, SAFFRON_CITY
-	connection west, ROUTE_7, Route7, 9, 0, 9, SAFFRON_CITY
-	connection east, ROUTE_8, Route8, 9, 0, 9, SAFFRON_CITY
-
-	map_header_2 Route5, ROUTE_5, $f, NORTH | SOUTH
-	connection north, CERULEAN_CITY, CeruleanCity, -3, 2, 16, ROUTE_5
-	connection south, SAFFRON_CITY, SaffronCity, -3, 2, 16, ROUTE_5
-
-	map_header_2 CeruleanCity, CERULEAN_CITY, $f, NORTH | SOUTH | WEST | EAST
-	connection north, ROUTE_24, Route24, 6, 0, 10, CERULEAN_CITY
-	connection south, ROUTE_5, Route5, 5, 0, 10, CERULEAN_CITY
-	connection west, ROUTE_4, Route4, 5, 0, 9, CERULEAN_CITY
-	connection east, ROUTE_9, Route9, 9, 0, 9, CERULEAN_CITY
-
-	map_header_2 Route9, ROUTE_9, $2c, SOUTH | WEST
-	connection south, ROUTE_10_NORTH, Route10North, 20, 0, 10, ROUTE_9
-	connection west, CERULEAN_CITY, CeruleanCity, -3, 6, 12, ROUTE_9
-
-	map_header_2 Route24, ROUTE_24, $2c, NORTH | SOUTH
-	connection north, ROUTE_25, Route25, 0, 0, 13, ROUTE_24
-	connection south, CERULEAN_CITY, CeruleanCity, -3, 3, 16, ROUTE_24
-
-	map_header_2 Route25, ROUTE_25, $2c, SOUTH
-	connection south, ROUTE_24, Route24, 0, 0, 10, ROUTE_25
-
-	map_header_2 Route3, ROUTE_3, $2c, WEST | EAST
-	connection west, PEWTER_CITY, PewterCity, -3, 2, 15, ROUTE_3
-	connection east, ROUTE_4, Route4, 0, 0, 9, ROUTE_3
-
-	map_header_2 Route4, ROUTE_4, $2c, WEST | EAST
-	connection west, ROUTE_3, Route3, 0, 0, 9, ROUTE_4
-	connection east, CERULEAN_CITY, CeruleanCity, -3, 2, 15, ROUTE_4
-
-	map_header_2 Route8, ROUTE_8, $2c, WEST | EAST
-	connection west, SAFFRON_CITY, SaffronCity, -3, 6, 12, ROUTE_8
-	connection east, LAVENDER_TOWN, LavenderTown, 0, 0, 9, ROUTE_8
-
-	map_header_2 Route10North, ROUTE_10_NORTH, $2c, NORTH | SOUTH
-	connection north, ROUTE_9, Route9, -3, 17, 13, ROUTE_10_NORTH
-	connection south, ROUTE_10_SOUTH, Route10South, 0, 0, 10, ROUTE_10_NORTH
-
-	map_header_2 Route10South, ROUTE_10_SOUTH, $2c, NORTH | SOUTH
-	connection north, ROUTE_10_NORTH, Route10North, 0, 0, 10, ROUTE_10_SOUTH
-	connection south, LAVENDER_TOWN, LavenderTown, 0, 0, 10, ROUTE_10_SOUTH
-
-	map_header_2 Route23, ROUTE_23, $f, 0
-	map_header_2 SproutTower1F, SPROUT_TOWER_1F, $0, 0
-	map_header_2 SproutTower2F, SPROUT_TOWER_2F, $0, 0
-	map_header_2 SproutTower3F, SPROUT_TOWER_3F, $0, 0
-	map_header_2 TinTower1F, TIN_TOWER_1F, $0, 0
-	map_header_2 TinTower2F, TIN_TOWER_2F, $0, 0
-	map_header_2 TinTower3F, TIN_TOWER_3F, $0, 0
-	map_header_2 TinTower4F, TIN_TOWER_4F, $0, 0
-	map_header_2 TinTower5F, TIN_TOWER_5F, $0, 0
-	map_header_2 TinTower6F, TIN_TOWER_6F, $0, 0
-	map_header_2 TinTower7F, TIN_TOWER_7F, $0, 0
-	map_header_2 TinTower8F, TIN_TOWER_8F, $0, 0
-	map_header_2 TinTower9F, TIN_TOWER_9F, $0, 0
-	map_header_2 BurnedTower1F, BURNED_TOWER_1F, $0, 0
-	map_header_2 BurnedTowerB1F, BURNED_TOWER_B1F, $9, 0
-	map_header_2 NationalPark, NATIONAL_PARK, $0, 0
-	map_header_2 NationalParkBugContest, NATIONAL_PARK_BUG_CONTEST, $0, 0
-	map_header_2 RadioTower1F, RADIO_TOWER_1F, $0, 0
-	map_header_2 RadioTower2F, RADIO_TOWER_2F, $0, 0
-	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 UnionCave1F, UNION_CAVE_1F, $9, 0
-	map_header_2 UnionCaveB1F, UNION_CAVE_B1F, $9, 0
-	map_header_2 UnionCaveB2F, UNION_CAVE_B2F, $9, 0
-	map_header_2 SlowpokeWellB1F, SLOWPOKE_WELL_B1F, $9, 0
-	map_header_2 SlowpokeWellB2F, SLOWPOKE_WELL_B2F, $9, 0
-	map_header_2 OlivineLighthouse1F, OLIVINE_LIGHTHOUSE_1F, $0, 0
-	map_header_2 OlivineLighthouse2F, OLIVINE_LIGHTHOUSE_2F, $0, 0
-	map_header_2 OlivineLighthouse3F, OLIVINE_LIGHTHOUSE_3F, $0, 0
-	map_header_2 OlivineLighthouse4F, OLIVINE_LIGHTHOUSE_4F, $0, 0
-	map_header_2 OlivineLighthouse5F, OLIVINE_LIGHTHOUSE_5F, $0, 0
-	map_header_2 OlivineLighthouse6F, OLIVINE_LIGHTHOUSE_6F, $0, 0
-	map_header_2 MahoganyMart1F, MAHOGANY_MART_1F, $0, 0
-	map_header_2 TeamRocketBaseB1F, TEAM_ROCKET_BASE_B1F, $0, 0
-	map_header_2 TeamRocketBaseB2F, TEAM_ROCKET_BASE_B2F, $0, 0
-	map_header_2 TeamRocketBaseB3F, TEAM_ROCKET_BASE_B3F, $0, 0
-	map_header_2 IlexForest, ILEX_FOREST, $5, 0
-	map_header_2 GoldenrodUnderground, GOLDENROD_UNDERGROUND, $0, 0
-	map_header_2 GoldenrodUndergroundSwitchRoomEntrances, GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, $0, 0
-	map_header_2 GoldenrodDeptStoreB1F, GOLDENROD_DEPT_STORE_B1F, $0, 0
-	map_header_2 GoldenrodUndergroundWarehouse, GOLDENROD_UNDERGROUND_WAREHOUSE, $0, 0
-	map_header_2 MountMortar1FOutside, MOUNT_MORTAR_1F_OUTSIDE, $9, 0
-	map_header_2 MountMortar1FInside, MOUNT_MORTAR_1F_INSIDE, $9, 0
-	map_header_2 MountMortar2FInside, MOUNT_MORTAR_2F_INSIDE, $9, 0
-	map_header_2 MountMortarB1F, MOUNT_MORTAR_B1F, $9, 0
-	map_header_2 IcePath1F, ICE_PATH_1F, $9, 0
-	map_header_2 IcePathB1F, ICE_PATH_B1F, $19, 0
-	map_header_2 IcePathB2FMahoganySide, ICE_PATH_B2F_MAHOGANY_SIDE, $19, 0
-	map_header_2 IcePathB2FBlackthornSide, ICE_PATH_B2F_BLACKTHORN_SIDE, $19, 0
-	map_header_2 IcePathB3F, ICE_PATH_B3F, $19, 0
-	map_header_2 WhirlIslandNW, WHIRL_ISLAND_NW, $9, 0
-	map_header_2 WhirlIslandNE, WHIRL_ISLAND_NE, $9, 0
-	map_header_2 WhirlIslandSW, WHIRL_ISLAND_SW, $9, 0
-	map_header_2 WhirlIslandCave, WHIRL_ISLAND_CAVE, $9, 0
-	map_header_2 WhirlIslandSE, WHIRL_ISLAND_SE, $f, 0
-	map_header_2 WhirlIslandB1F, WHIRL_ISLAND_B1F, $9, 0
-	map_header_2 WhirlIslandB2F, WHIRL_ISLAND_B2F, $2e, 0
-	map_header_2 WhirlIslandLugiaChamber, WHIRL_ISLAND_LUGIA_CHAMBER, $f, 0
-	map_header_2 SilverCaveRoom1, SILVER_CAVE_ROOM_1, $9, 0
-	map_header_2 SilverCaveRoom2, SILVER_CAVE_ROOM_2, $9, 0
-	map_header_2 SilverCaveRoom3, SILVER_CAVE_ROOM_3, $9, 0
-	map_header_2 SilverCaveItemRooms, SILVER_CAVE_ITEM_ROOMS, $9, 0
-	map_header_2 DarkCaveVioletEntrance, DARK_CAVE_VIOLET_ENTRANCE, $9, 0
-	map_header_2 DarkCaveBlackthornEntrance, DARK_CAVE_BLACKTHORN_ENTRANCE, $9, 0
-	map_header_2 DragonsDen1F, DRAGONS_DEN_1F, $9, 0
-	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 OlivineGym, OLIVINE_GYM, $0, 0
-	map_header_2 OlivineTimsHouse, OLIVINE_TIMS_HOUSE, $0, 0
-	map_header_2 OlivineHouseBeta, OLIVINE_HOUSE_BETA, $0, 0
-	map_header_2 OlivinePunishmentSpeechHouse, OLIVINE_PUNISHMENT_SPEECH_HOUSE, $0, 0
-	map_header_2 OlivineGoodRodHouse, OLIVINE_GOOD_ROD_HOUSE, $0, 0
-	map_header_2 OlivineCafe, OLIVINE_CAFE, $0, 0
-	map_header_2 OlivineMart, OLIVINE_MART, $0, 0
-	map_header_2 Route38EcruteakGate, ROUTE_38_ECRUTEAK_GATE, $0, 0
-	map_header_2 Route39Barn, ROUTE_39_BARN, $0, 0
-	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 Route42EcruteakGate, ROUTE_42_ECRUTEAK_GATE, $0, 0
-	map_header_2 DiglettsCave, DIGLETTS_CAVE, $9, 0
-	map_header_2 MountMoon, MOUNT_MOON, $9, 0
-	map_header_2 UndergroundPath, UNDERGROUND_PATH, $0, 0
-	map_header_2 RockTunnel1F, ROCK_TUNNEL_1F, $9, 0
-	map_header_2 RockTunnelB1F, ROCK_TUNNEL_B1F, $9, 0
-	map_header_2 SafariZoneFuchsiaGateBeta, SAFARI_ZONE_FUCHSIA_GATE_BETA, $0, 0
-	map_header_2 SafariZoneBeta, SAFARI_ZONE_BETA, $13, 0
-	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 EcruteakLugiaSpeechHouse, ECRUTEAK_LUGIA_SPEECH_HOUSE, $0, 0
-	map_header_2 DanceTheatre, DANCE_THEATRE, $0, 0
-	map_header_2 EcruteakMart, ECRUTEAK_MART, $0, 0
-	map_header_2 EcruteakGym, ECRUTEAK_GYM, $0, 0
-	map_header_2 EcruteakItemfinderHouse, ECRUTEAK_ITEMFINDER_HOUSE, $0, 0
-	map_header_2 BlackthornGym1F, BLACKTHORN_GYM_1F, $0, 0
-	map_header_2 BlackthornGym2F, BLACKTHORN_GYM_2F, $0, 0
-	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 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 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 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 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 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 Route43MahoganyGate, ROUTE_43_MAHOGANY_GATE, $0, 0
-	map_header_2 Route43Gate, ROUTE_43_GATE, $0, 0
-	map_header_2 VioletMart, VIOLET_MART, $0, 0
-	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 VioletKylesHouse, VIOLET_KYLES_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 GoldenrodGym, GOLDENROD_GYM, $0, 0
-	map_header_2 GoldenrodBikeShop, GOLDENROD_BIKE_SHOP, $0, 0
-	map_header_2 GoldenrodHappinessRater, GOLDENROD_HAPPINESS_RATER, $0, 0
-	map_header_2 GoldenrodBillsHouse, GOLDENROD_BILLS_HOUSE, $0, 0
-	map_header_2 GoldenrodMagnetTrainStation, GOLDENROD_MAGNET_TRAIN_STATION, $0, 0
-	map_header_2 GoldenrodFlowerShop, GOLDENROD_FLOWER_SHOP, $0, 0
-	map_header_2 GoldenrodPPSpeechHouse, GOLDENROD_PP_SPEECH_HOUSE, $0, 0
-	map_header_2 GoldenrodNameRater, GOLDENROD_NAME_RATER, $0, 0
-	map_header_2 GoldenrodDeptStore1F, GOLDENROD_DEPT_STORE_1F, $0, 0
-	map_header_2 GoldenrodDeptStore2F, GOLDENROD_DEPT_STORE_2F, $0, 0
-	map_header_2 GoldenrodDeptStore3F, GOLDENROD_DEPT_STORE_3F, $0, 0
-	map_header_2 GoldenrodDeptStore4F, GOLDENROD_DEPT_STORE_4F, $0, 0
-	map_header_2 GoldenrodDeptStore5F, GOLDENROD_DEPT_STORE_5F, $0, 0
-	map_header_2 GoldenrodDeptStore6F, GOLDENROD_DEPT_STORE_6F, $0, 0
-	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 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, 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 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
-	map_header_2 VermilionHouseDiglettsCaveSpeechHouse, VERMILION_HOUSE_DIGLETTS_CAVE_SPEECH_HOUSE, $0, 0
-	map_header_2 VermilionGym, VERMILION_GYM, $0, 0
-	map_header_2 Route6SaffronGate, ROUTE_6_SAFFRON_GATE, $0, 0
-	map_header_2 Route6UndergroundPathEntrance, ROUTE_6_UNDERGROUND_PATH_ENTRANCE, $0, 0
-	map_header_2 RedsHouse1F, REDS_HOUSE_1F, $0, 0
-	map_header_2 RedsHouse2F, REDS_HOUSE_2F, $0, 0
-	map_header_2 BluesHouse, BLUES_HOUSE, $0, 0
-	map_header_2 OaksLab, OAKS_LAB, $0, 0
-	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 PewterSnoozeSpeechHouse, PEWTER_SNOOZE_SPEECH_HOUSE, $0, 0
-	map_header_2 OlivinePort, OLIVINE_PORT, $a, 0
-	map_header_2 VermilionPort, VERMILION_PORT, $a, 0
-	map_header_2 FastShip1F, FAST_SHIP_1F, $0, 0
-	map_header_2 FastShipCabins_NNW_NNE_NE, FAST_SHIP_CABINS_NNW_NNE_NE, $0, 0
-	map_header_2 FastShipCabins_SW_SSW_NW, FAST_SHIP_CABINS_SW_SSW_NW, $0, 0
-	map_header_2 FastShipCabins_SE_SSE_CaptainsCabin, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, $0, 0
-	map_header_2 FastShipB1F, FAST_SHIP_B1F, $0, 0
-	map_header_2 OlivinePortPassage, OLIVINE_PORT_PASSAGE, $0, 0
-	map_header_2 VermilionPortPassage, VERMILION_PORT_PASSAGE, $0, 0
-	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 WillsRoom, WILLS_ROOM, $0, 0
-	map_header_2 KogasRoom, KOGAS_ROOM, $0, 0
-	map_header_2 BrunosRoom, BRUNOS_ROOM, $0, 0
-	map_header_2 KarensRoom, KARENS_ROOM, $0, 0
-	map_header_2 LancesRoom, LANCES_ROOM, $0, 0
-	map_header_2 HallOfFame, HALL_OF_FAME, $0, 0
-	map_header_2 FuchsiaMart, FUCHSIA_MART, $0, 0
-	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 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 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
-	map_header_2 LavenderMart, LAVENDER_MART, $0, 0
-	map_header_2 SoulHouse, SOUL_HOUSE, $0, 0
-	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 Route28FamousSpeechHouse, ROUTE_28_FAMOUS_SPEECH_HOUSE, $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
-	map_header_2 MobileTradeRoomMobile, MOBILE_TRADE_ROOM_MOBILE, $0, 0
-	map_header_2 MobileBattleRoom, MOBILE_BATTLE_ROOM, $0, 0
-	map_header_2 CeladonDeptStore1F, CELADON_DEPT_STORE_1F, $0, 0
-	map_header_2 CeladonDeptStore2F, CELADON_DEPT_STORE_2F, $0, 0
-	map_header_2 CeladonDeptStore3F, CELADON_DEPT_STORE_3F, $0, 0
-	map_header_2 CeladonDeptStore4F, CELADON_DEPT_STORE_4F, $0, 0
-	map_header_2 CeladonDeptStore5F, CELADON_DEPT_STORE_5F, $0, 0
-	map_header_2 CeladonDeptStore6F, CELADON_DEPT_STORE_6F, $0, 0
-	map_header_2 CeladonDeptStoreElevator, CELADON_DEPT_STORE_ELEVATOR, $0, 0
-	map_header_2 CeladonMansion1F, CELADON_MANSION_1F, $0, 0
-	map_header_2 CeladonMansion2F, CELADON_MANSION_2F, $0, 0
-	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 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
-	map_header_2 CeladonCafe, CELADON_CAFE, $0, 0
-	map_header_2 Route16FuchsiaSpeechHouse, ROUTE_16_FUCHSIA_SPEECH_HOUSE, $0, 0
-	map_header_2 Route16Gate, ROUTE_16_GATE, $0, 0
-	map_header_2 Route7SaffronGate, ROUTE_7_SAFFRON_GATE, $0, 0
-	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 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
-	map_header_2 PokeSeersHouse, POKE_SEERS_HOUSE, $0, 0
-	map_header_2 BattleTower1F, BATTLE_TOWER_1F, $0, 0
-	map_header_2 BattleTowerBattleRoom, BATTLE_TOWER_BATTLE_ROOM, $0, 0
-	map_header_2 BattleTowerElevator, BATTLE_TOWER_ELEVATOR, $0, 0
-	map_header_2 BattleTowerHallway, BATTLE_TOWER_HALLWAY, $0, 0
-	map_header_2 Route40BattleTowerGate, ROUTE_40_BATTLE_TOWER_GATE, $0, 0
-	map_header_2 BattleTowerOutside, BATTLE_TOWER_OUTSIDE, $5, 0
-	map_header_2 ViridianGym, VIRIDIAN_GYM, $0, 0
-	map_header_2 ViridianNicknameSpeechHouse, VIRIDIAN_NICKNAME_SPEECH_HOUSE, $0, 0
-	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 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
-	map_header_2 ElmsLab, ELMS_LAB, $0, 0
-	map_header_2 KrissHouse1F, KRISS_HOUSE_1F, $0, 0
-	map_header_2 KrissHouse2F, KRISS_HOUSE_2F, $0, 0
-	map_header_2 KrissNeighborsHouse, KRISS_NEIGHBORS_HOUSE, $0, 0
-	map_header_2 ElmsHouse, ELMS_HOUSE, $0, 0
-	map_header_2 Route26HealSpeechHouse, ROUTE_26_HEAL_SPEECH_HOUSE, $0, 0
-	map_header_2 Route26DayofWeekSiblingsHouse, ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, $0, 0
-	map_header_2 Route27SandstormHouse, ROUTE_27_SANDSTORM_HOUSE, $0, 0
-	map_header_2 Route2946Gate, ROUTE_29_46_GATE, $0, 0
-	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 MrPsychicsHouse, MR_PSYCHICS_HOUSE, $0, 0
-	map_header_2 SaffronTrainStation, SAFFRON_TRAIN_STATION, $0, 0
-	map_header_2 SilphCo1F, SILPH_CO_1F, $0, 0
-	map_header_2 CopycatsHouse1F, COPYCATS_HOUSE_1F, $0, 0
-	map_header_2 CopycatsHouse2F, COPYCATS_HOUSE_2F, $0, 0
-	map_header_2 Route5UndergroundPathEntrance, ROUTE_5_UNDERGROUND_PATH_ENTRANCE, $0, 0
-	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 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
-	map_header_2 Route30BerrySpeechHouse, ROUTE_30_BERRY_SPEECH_HOUSE, $0, 0
-	map_header_2 MrPokemonsHouse, MR_POKEMONS_HOUSE, $0, 0
-	map_header_2 Route31VioletGate, ROUTE_31_VIOLET_GATE, $0, 0
--- /dev/null
+++ b/maps/unused/BetaAzaleaTown.blk
@@ -1,0 +1,10 @@
+aaaaaaaaFDaaaaaaaaaaaaaaaaaFDaaaaaaaaaaaaaaaaaFHIIaaaaaaBaaaFaaaaaaFaFaaaHJGFee>aacaaaFaaaadeefaaaaFGbaaaaaaaaFDaaaaaaaFaaDaU
+aaaaaaaHIY
+aaaaaaa~zU
+aaaaaaa5Y
+aaaaa@AAAA5z
+vvvUaaaaaaaaaaa552955zvvvvvvvvvv
+aa55551111111111111
+
+a555555555555555552
+a
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaBlackthornCity.blk
@@ -1,0 +1,1 @@
+hqqqqqqqqqqqqqqqqqqqhqorrrrrrrrrnqqqqqqqhqiaKeWaKeWahqqqqqqqhqieKaWWWaeWhqorrnqqhqiaWWKWeaWehqi !hqqhqiKWWeeaWWahqi$%hqqhqieKeaWWeeehqi$%hqqhqiaKaWeeWaahqi$%hqqlrmKeWWaWeWahqi()hqqKaWKaWaeWlrmtuhqqWWWWWWKaWWWWWWhqqhqqlrrG
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaBlank.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCave.blk
@@ -1,0 +1,8 @@
+








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



+(+
+)*
+
+						
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCaveTestMap.blk
@@ -1,0 +1,18 @@
+	










		
+;<		;6<
+	
+	589:
+	
+	
+				
+	
+	5


+	
+


	
+	
+5

		
+	
+
	
+	
+		5
6		
+



																																																																		
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCeladonMansion.blk
@@ -1,0 +1,1 @@
+?	+,/
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCherrygroveCity.blk
@@ -1,0 +1,9 @@
+
+aaaaaaaa
+
+a6
+a6YEa6Y,-6YG./a52vUa551
+
+aaaaa5555
+
+aaaa
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCianwoodCity.blk
@@ -1,0 +1,1 @@
+aaaaXaaTyaaX5ETy5Tv455aTvvyfaXYaaXYEaaeaaa
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCinnabarPokemonLabHallway.blk
@@ -1,0 +1,2 @@
+	
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCinnabarPokemonLabRoom1.blk
@@ -1,0 +1,2 @@
+	
+

\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCinnabarPokemonLabRoom2.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaCinnabarPokemonLabRoom3.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaEcruteakCity.blk
@@ -1,0 +1,1 @@
+?eeeeeeeeeeeb !bb$%b>$%`&;',-&'`$%`*"+#/*+aE$%dg,-b()#/tuWZWVWVWVWZ@AABGTU !FXY$%&'XYa$%*+VVZVVVVVVZaa()EatuIIJ~{@AAAAA		HII
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaElevator.blk
@@ -1,0 +1,1 @@
+&$$$%$$$$$$$$$$$$$$$$$$
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaEmptyHouse.blk
@@ -1,0 +1,15 @@
+												
+					
+									
+		
+										
+		
+													
+												
+			
+											
+							
+			
+		%					
+			
+











\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaFastShipInsideCutOut.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaGoldenrodCity.blk
@@ -1,0 +1,10 @@
+
+
+
+FD
+
+JHU !Y$#Y"HEzv%&IIIIIIIIJII55)*		@-.EAAAAAAAAAAFIHIJEEvvU55YY@AEYDFYHFzU5
+
+B
@55
+
+F~D
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaHerosHouse.blk
@@ -1,0 +1,1 @@
+ !"
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaHouse.blk
@@ -1,0 +1,1 @@
+*+,*-.12/0/
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaHouse2.blk
@@ -1,0 +1,1 @@
+?',9..',9
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaIlexForest.blk
@@ -1,0 +1,1 @@
+hqqqqqihqqqqqilrrsm
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaLakeOfRage.blk
@@ -1,0 +1,1 @@
+\^af\a\^afG^f\\f>^fTU^abfd?fdTvyY>dG\fd\X55Ya^d?f^Tvy55Y<d`f\\Ty555Y`f]\?\aX555Y\\^?Tvvy555Y^<fTvy555555Y^bd\bf^X5555555Ydf\ffTy5555555Y\b\af\fX55555Ya^d<d\daX555Yfd\\G`f^^\<G^\<bad>>e\adfa
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaMahoganyTown.blk
@@ -1,0 +1,1 @@
+`N=`RZW,-G./WEZWWG?
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaNewBarkTown.blk
@@ -1,0 +1,1 @@
+^]?II~IDGaaHTvEX5@~~{XDGGXHIIIIIIIaXvvvvvvvvv1
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaOlivineCity.blk
@@ -1,0 +1,4 @@
+FDIJHIIIFDFZFDFDFFZFFZFFDFFZFAABFZFFDF|}FTvvvvvvvvvUDF|}FXYX55YDF|}FXYX55YHIIIJ|}FXYX556vvv
+
+JXYX5545552
+Xzvvvvy55255552vvvy555
555550555552995555~5555:5555
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaPewterMuseumOfScience1F.blk
@@ -1,0 +1,2 @@
+	
+ 
!&!&
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaPewterMuseumOfScience2F.blk
@@ -1,0 +1,1 @@
+012!
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaPokecenterMainHouse.blk
@@ -1,0 +1,1 @@
+	
'
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaPokecenterTradeStation.blk
@@ -1,0 +1,1 @@
+'
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaRocketHideout1.blk
@@ -1,0 +1,5 @@
+													
+:?










<?
)		
+			
+
?

)

==







>>
"!
89
*>
*






89

:?:?
)




;?;?
)
?
<?<?
)
?

)






?



+
)
*






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













			
+
			
+

>:)






><)
>>






)89





>>







8:
::?



?<
<<?

*
?


)

 
 
*









),/////////////-
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaRocketHideout3.blk
@@ -1,0 +1,5 @@
+					+=1,////?
					
+===	:?5////4???
<?105//
)==		 
>>:)5//////>89<)			
+,/////->>>>				18899///=			
+5///->:?1	=
+><?
>?
?
,/////-,////-
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaRoute23EarlyVersion.blk
@@ -1,0 +1,7 @@
+
+ !
+
+ohi
+omhi!nm7:~nm'nm'nm'nm'nm'nm'nm'nm
+^
+noo 


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

,+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaSproutTower1.blk
@@ -1,0 +1,3 @@
+																													
+						
+				
		
																			
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaSproutTower2.blk
@@ -1,0 +1,9 @@
+			
+	
+		


		
+					
+	

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


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



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




								


						




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

					


+			


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

						
+			
+							
+		




								
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaSproutTower9.blk
@@ -1,0 +1,1 @@
+				
									
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaSproutTowerCutOut1.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaSproutTowerCutOut2.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaSproutTowerCutOut3.blk
@@ -1,0 +1,1 @@
+
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaUnknown.blk
@@ -1,0 +1,1 @@
+(
\ No newline at end of file
--- /dev/null
+++ b/maps/unused/BetaVioletCity.blk
@@ -1,0 +1,7 @@
+??&;'TU&;'b?*"+XY*"+?=G^bXYTU]]]]]]]]]]]]]XYXYXYb`b !`GbD$%F`
+&;'
+bD()F`G*"+
+eeebDtuF`
+
+AEA
+bpk`bsm`=]E`G`G?e`b`?eeeeeeeeeef`b
\ No newline at end of file
--- a/mobile/battle_tower_47.asm
+++ /dev/null
@@ -1,784 +1,0 @@
-BattleTowerText:: ; 11c000
-; Print text c for trainer [BT_OTTrainerClass]
-; 1: Intro text
-; 2: Player lost
-; 3: Player won
-	ld a, [rSVBK]
-	push af
-	ld a, BANK(BT_OTTrainerClass)
-	ld [rSVBK], a
-if DEF(CRYSTAL11)
-	ld hl, BT_OTTrainerClass
-else
-; BUG ALERT
-; Instead of loading the Trainer Class, this routine
-; loads the 6th character in the Trainer's name, then
-; uses it to get the gender of the trainer.
-; As a consequence, the enemy trainer's dialog will
-; always be sampled from the female array.
-	ld hl, BT_OTName + 5
-endc
-	ld a, [hl]
-	dec a
-	ld e, a
-	ld d, 0
-	ld hl, BTTrainerClassGenders
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .female
-	; generate a random number between 0 and 24
-	ld a, [hRandomAdd]
-	and $1f
-	cp 25
-	jr c, .okay0
-	sub 25
-
-.okay0
-	ld hl, BTMaleTrainerTexts
-	jr .proceed
-
-.female
-	; generate a random number between 0 and 14
-	ld a, [hRandomAdd]
-	and $f
-	cp 15
-	jr c, .okay1
-	sub 15
-
-.okay1
-	ld hl, BTFemaleTrainerTexts
-
-.proceed
-	ld b, 0
-	dec c
-	jr nz, .restore
-	ld [BT_TrainerTextIndex], a
-	jr .okay2
-
-.restore
-	ld a, [BT_TrainerTextIndex]
-
-.okay2
-	push af
-	add hl, bc
-	add hl, bc
-	ld a, [hli]
-	ld c, a
-	ld a, [hl]
-	ld h, a
-	ld l, c
-	pop af
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld a, [hli]
-	ld c, a
-	ld a, [hl]
-	ld l, c
-	ld h, a
-	bccoord 1, 14
-	pop af
-	ld [rSVBK], a
-	call PlaceHLTextAtBC
-	ret
-; 11c05d
-
-INCLUDE "mobile/fixed_words.asm"
-
-BTTrainerClassGenders: ; 11f2f0
-	db MALE   ; FALKNER
-	db FEMALE ; WHITNEY
-	db FEMALE ; BUGSY
-	db MALE   ; MORTY
-	db MALE   ; PRYCE
-	db FEMALE ; JASMINE
-	db MALE   ; CHUCK
-	db FEMALE ; CLAIR
-	db MALE   ; RIVAL1
-	db MALE   ; POKEMON_PROF
-	db FEMALE ; WILL
-	db MALE   ; CAL
-	db MALE   ; BRUNO
-	db FEMALE ; KAREN
-	db MALE   ; KOGA
-	db MALE   ; CHAMPION
-	db MALE   ; BROCK
-	db FEMALE ; MISTY
-	db MALE   ; LT_SURGE
-	db MALE   ; SCIENTIST
-	db FEMALE ; ERIKA
-	db MALE   ; YOUNGSTER
-	db MALE   ; SCHOOLBOY
-	db MALE   ; BIRD_KEEPER
-	db FEMALE ; LASS
-	db FEMALE ; JANINE
-	db MALE   ; COOLTRAINERM
-	db FEMALE ; COOLTRAINERF
-	db FEMALE ; BEAUTY
-	db MALE   ; POKEMANIAC
-	db MALE   ; GRUNTM
-	db MALE   ; GENTLEMAN
-	db FEMALE ; SKIER
-	db FEMALE ; TEACHER
-	db FEMALE ; SABRINA
-	db MALE   ; BUG_CATCHER
-	db MALE   ; FISHER
-	db MALE   ; SWIMMERM
-	db FEMALE ; SWIMMERF
-	db MALE   ; SAILOR
-	db MALE   ; SUPER_NERD
-	db MALE   ; RIVAL2
-	db MALE   ; GUITARIST
-	db MALE   ; HIKER
-	db MALE   ; BIKER
-	db MALE   ; BLAINE
-	db MALE   ; BURGLAR
-	db MALE   ; FIREBREATHER
-	db MALE   ; JUGGLER
-	db MALE   ; BLACKBELT_T
-	db MALE   ; EXECUTIVEM
-	db MALE   ; PSYCHIC_T
-	db FEMALE ; PICNICKER
-	db MALE   ; CAMPER
-	db FEMALE ; EXECUTIVEF
-	db MALE   ; SAGE
-	db FEMALE ; MEDIUM
-	db MALE   ; BOARDER
-	db MALE   ; POKEFANM
-	db FEMALE ; KIMONO_GIRL
-	db FEMALE ; TWINS
-	db FEMALE ; POKEFANF
-	db MALE   ; RED
-	db MALE   ; BLUE
-	db MALE   ; OFFICER
-	db FEMALE ; GRUNTF
-
-
-BTMaleTrainerTexts: ; 11f332
-	dw .Greetings
-	dw .PlayerLost
-	dw .PlayerWon
-
-.Greetings: ; 11f338
-	dw BTGreetingM1
-	dw BTGreetingM2
-	dw BTGreetingM3
-	dw BTGreetingM4
-	dw BTGreetingM5
-	dw BTGreetingM6
-	dw BTGreetingM7
-	dw BTGreetingM8
-	dw BTGreetingM9
-	dw BTGreetingM10
-	dw BTGreetingM11
-	dw BTGreetingM12
-	dw BTGreetingM13
-	dw BTGreetingM14
-	dw BTGreetingM15
-	dw BTGreetingM16
-	dw BTGreetingM17
-	dw BTGreetingM18
-	dw BTGreetingM19
-	dw BTGreetingM20
-	dw BTGreetingM21
-	dw BTGreetingM22
-	dw BTGreetingM23
-	dw BTGreetingM24
-	dw BTGreetingM25
-
-.PlayerLost: ; 11f36a
-	dw BTLossM1
-	dw BTLossM2
-	dw BTLossM3
-	dw BTLossM4
-	dw BTLossM5
-	dw BTLossM6
-	dw BTLossM7
-	dw BTLossM8
-	dw BTLossM9
-	dw BTLossM10
-	dw BTLossM11
-	dw BTLossM12
-	dw BTLossM13
-	dw BTLossM14
-	dw BTLossM15
-	dw BTLossM16
-	dw BTLossM17
-	dw BTLossM18
-	dw BTLossM19
-	dw BTLossM20
-	dw BTLossM21
-	dw BTLossM22
-	dw BTLossM23
-	dw BTLossM24
-	dw BTLossM25
-
-.PlayerWon: ; 11f39c
-	dw BTWinM1
-	dw BTWinM2
-	dw BTWinM3
-	dw BTWinM4
-	dw BTWinM5
-	dw BTWinM6
-	dw BTWinM7
-	dw BTWinM8
-	dw BTWinM9
-	dw BTWinM10
-	dw BTWinM11
-	dw BTWinM12
-	dw BTWinM13
-	dw BTWinM14
-	dw BTWinM15
-	dw BTWinM16
-	dw BTWinM17
-	dw BTWinM18
-	dw BTWinM19
-	dw BTWinM20
-	dw BTWinM21
-	dw BTWinM22
-	dw BTWinM23
-	dw BTWinM24
-	dw BTWinM25
-
-
-BTFemaleTrainerTexts:
-	dw .Greetings
-	dw .PlayerLost
-	dw .PlayerWon
-
-.Greetings: ; 11f3d4
-	dw BTGreetingF1
-	dw BTGreetingF2
-	dw BTGreetingF3
-	dw BTGreetingF4
-	dw BTGreetingF5
-	dw BTGreetingF6
-	dw BTGreetingF7
-	dw BTGreetingF8
-	dw BTGreetingF9
-	dw BTGreetingF10
-	dw BTGreetingF11
-	dw BTGreetingF12
-	dw BTGreetingF13
-	dw BTGreetingF14
-	dw BTGreetingF15
-
-.PlayerLost: ; 11f3f2
-	dw BTLossF1
-	dw BTLossF2
-	dw BTLossF3
-	dw BTLossF4
-	dw BTLossF5
-	dw BTLossF6
-	dw BTLossF7
-	dw BTLossF8
-	dw BTLossF9
-	dw BTLossF10
-	dw BTLossF11
-	dw BTLossF12
-	dw BTLossF13
-	dw BTLossF14
-	dw BTLossF15
-
-.PlayerWon: ; 11f410
-	dw BTWinF1
-	dw BTWinF2
-	dw BTWinF3
-	dw BTWinF4
-	dw BTWinF5
-	dw BTWinF6
-	dw BTWinF7
-	dw BTWinF8
-	dw BTWinF9
-	dw BTWinF10
-	dw BTWinF11
-	dw BTWinF12
-	dw BTWinF13
-	dw BTWinF14
-	dw BTWinF15
-
-
-BTGreetingM1: ; 0x11f42e
-	text_jump BattleTowerText_0x1ec000
-	db "@"
-
-BTLossM1: ; 0x11f433
-	text_jump BattleTowerText_0x1ec03b
-	db "@"
-
-BTWinM1: ; 0x11f438
-	text_jump UnknownText_0x1ec060
-	db "@"
-
-BTGreetingM2: ; 0x11f43d
-	text_jump BattleTowerText_0x1ec080
-	db "@"
-
-BTLossM2: ; 0x11f442
-	text_jump UnknownText_0x1ec0a3
-	db "@"
-
-BTWinM2: ; 0x11f447
-	text_jump UnknownText_0x1ec0c4
-	db "@"
-
-BTGreetingM3: ; 0x11f44c
-	text_jump UnknownText_0x1ec0e1
-	db "@"
-
-BTLossM3: ; 0x11f451
-	text_jump UnknownText_0x1ec108
-	db "@"
-
-BTWinM3: ; 0x11f456
-	text_jump UnknownText_0x1ec12a
-	db "@"
-
-BTGreetingM4: ; 0x11f45b
-	text_jump UnknownText_0x1ec14d
-	db "@"
-
-BTLossM4: ; 0x11f460
-	text_jump UnknownText_0x1ec16f
-	db "@"
-
-BTWinM4: ; 0x11f465
-	text_jump UnknownText_0x1ec190
-	db "@"
-
-BTGreetingM5: ; 0x11f46a
-	text_jump UnknownText_0x1ec1ae
-	db "@"
-
-BTLossM5: ; 0x11f46f
-	text_jump UnknownText_0x1ec1d0
-	db "@"
-
-BTWinM5: ; 0x11f474
-	text_jump UnknownText_0x1ec1f4
-	db "@"
-
-BTGreetingM6: ; 0x11f479
-	text_jump UnknownText_0x1ec216
-	db "@"
-
-BTLossM6: ; 0x11f47e
-	text_jump UnknownText_0x1ec238
-	db "@"
-
-BTWinM6: ; 0x11f483
-	text_jump UnknownText_0x1ec259
-	db "@"
-
-BTGreetingM7: ; 0x11f488
-	text_jump UnknownText_0x1ec27b
-	db "@"
-
-BTLossM7: ; 0x11f48d
-	text_jump UnknownText_0x1ec2a0
-	db "@"
-
-BTWinM7: ; 0x11f492
-	text_jump UnknownText_0x1ec2c0
-	db "@"
-
-BTGreetingM8: ; 0x11f497
-	text_jump UnknownText_0x1ec2d9
-	db "@"
-
-BTLossM8: ; 0x11f49c
-	text_jump UnknownText_0x1ec2fe
-	db "@"
-
-BTWinM8: ; 0x11f4a1
-	text_jump UnknownText_0x1ec320
-	db "@"
-
-BTGreetingM9: ; 0x11f4a6
-	text_jump UnknownText_0x1ec33f
-	db "@"
-
-BTLossM9: ; 0x11f4ab
-	text_jump UnknownText_0x1ec36c
-	db "@"
-
-BTWinM9: ; 0x11f4b0
-	text_jump UnknownText_0x1ec389
-	db "@"
-
-BTGreetingM10: ; 0x11f4b5
-	text_jump UnknownText_0x1ec3ad
-	db "@"
-
-BTLossM10: ; 0x11f4ba
-	text_jump UnknownText_0x1ec3c5
-	db "@"
-
-BTWinM10: ; 0x11f4bf
-	text_jump UnknownText_0x1ec3e5
-	db "@"
-
-BTGreetingM11: ; 0x11f4c4
-	text_jump UnknownText_0x1ec402
-	db "@"
-
-BTLossM11: ; 0x11f4c9
-	text_jump UnknownText_0x1ec411
-	db "@"
-
-BTWinM11: ; 0x11f4ce
-	text_jump UnknownText_0x1ec41f
-	db "@"
-
-BTGreetingM12: ; 0x11f4d3
-	text_jump UnknownText_0x1ec42e
-	db "@"
-
-BTLossM12: ; 0x11f4d8
-	text_jump UnknownText_0x1ec461
-	db "@"
-
-BTWinM12: ; 0x11f4dd
-	text_jump UnknownText_0x1ec4a0
-	db "@"
-
-BTGreetingM13: ; 0x11f4e2
-	text_jump UnknownText_0x1ec4d6
-	db "@"
-
-BTLossM13: ; 0x11f4e7
-	text_jump UnknownText_0x1ec4f5
-	db "@"
-
-BTWinM13: ; 0x11f4ec
-	text_jump UnknownText_0x1ec512
-	db "@"
-
-BTGreetingM14: ; 0x11f4f1
-	text_jump UnknownText_0x1ec532
-	db "@"
-
-BTLossM14: ; 0x11f4f6
-	text_jump UnknownText_0x1ec54b
-	db "@"
-
-BTWinM14: ; 0x11f4fb
-	text_jump UnknownText_0x1ec565
-	db "@"
-
-BTGreetingM15: ; 0x11f500
-	text_jump UnknownText_0x1ec580
-	db "@"
-
-BTLossM15: ; 0x11f505
-	text_jump UnknownText_0x1ec59d
-	db "@"
-
-BTWinM15: ; 0x11f50a
-	text_jump UnknownText_0x1ec5b5
-	db "@"
-
-BTGreetingM16: ; 0x11f50f
-	text_jump UnknownText_0x1ec5d3
-	db "@"
-
-BTLossM16: ; 0x11f514
-	text_jump UnknownText_0x1ec5ee
-	db "@"
-
-BTWinM16: ; 0x11f519
-	text_jump UnknownText_0x1ec60d
-	db "@"
-
-BTGreetingM17: ; 0x11f51e
-	text_jump UnknownText_0x1ec631
-	db "@"
-
-BTLossM17: ; 0x11f523
-	text_jump UnknownText_0x1ec651
-	db "@"
-
-BTWinM17: ; 0x11f528
-	text_jump UnknownText_0x1ec68f
-	db "@"
-
-BTGreetingM18: ; 0x11f52d
-	text_jump UnknownText_0x1ec6b1
-	db "@"
-
-BTLossM18: ; 0x11f532
-	text_jump UnknownText_0x1ec6d0
-	db "@"
-
-BTWinM18: ; 0x11f537
-	text_jump UnknownText_0x1ec708
-	db "@"
-
-BTGreetingM19: ; 0x11f53c
-	text_jump UnknownText_0x1ec720
-	db "@"
-
-BTLossM19: ; 0x11f541
-	text_jump UnknownText_0x1ec73e
-	db "@"
-
-BTWinM19: ; 0x11f546
-	text_jump UnknownText_0x1ec75b
-	db "@"
-
-BTGreetingM20: ; 0x11f54b
-	text_jump UnknownText_0x1ec77f
-	db "@"
-
-BTLossM20: ; 0x11f550
-	text_jump UnknownText_0x1ec798
-	db "@"
-
-BTWinM20: ; 0x11f555
-	text_jump UnknownText_0x1ec7bb
-	db "@"
-
-BTGreetingM21: ; 0x11f55a
-	text_jump UnknownText_0x1ec7d8
-	db "@"
-
-BTLossM21: ; 0x11f55f
-	text_jump UnknownText_0x1ec818
-	db "@"
-
-BTWinM21: ; 0x11f564
-	text_jump UnknownText_0x1ec837
-	db "@"
-
-BTGreetingM22: ; 0x11f569
-	text_jump UnknownText_0x1ec858
-	db "@"
-
-BTLossM22: ; 0x11f56e
-	text_jump UnknownText_0x1ec876
-	db "@"
-
-BTWinM22: ; 0x11f573
-	text_jump UnknownText_0x1ec898
-	db "@"
-
-BTGreetingM23: ; 0x11f578
-	text_jump UnknownText_0x1ec8b1
-	db "@"
-
-BTLossM23: ; 0x11f57d
-	text_jump UnknownText_0x1ec8d5
-	db "@"
-
-BTWinM23: ; 0x11f582
-	text_jump UnknownText_0x1ec8f0
-	db "@"
-
-BTGreetingM24: ; 0x11f587
-	text_jump UnknownText_0x1ec911
-	db "@"
-
-BTLossM24: ; 0x11f58c
-	text_jump UnknownText_0x1ec928
-	db "@"
-
-BTWinM24: ; 0x11f591
-	text_jump UnknownText_0x1ec949
-	db "@"
-
-BTGreetingM25: ; 0x11f596
-	text_jump UnknownText_0x1ec969
-	db "@"
-
-BTLossM25: ; 0x11f59b
-	text_jump UnknownText_0x1ec986
-	db "@"
-
-BTWinM25: ; 0x11f5a0
-	text_jump UnknownText_0x1ec99b
-	db "@"
-
-
-
-
-BTGreetingF1: ; 0x11f5a5
-	text_jump UnknownText_0x1ec9bd
-	db "@"
-
-BTLossF1: ; 0x11f5aa
-	text_jump UnknownText_0x1ec9d9
-	db "@"
-
-BTWinF1: ; 0x11f5af
-	text_jump UnknownText_0x1ec9f7
-	db "@"
-
-BTGreetingF2: ; 0x11f5b4
-	text_jump UnknownText_0x1eca0a
-	db "@"
-
-BTLossF2: ; 0x11f5b9
-	text_jump UnknownText_0x1eca2a
-	db "@"
-
-BTWinF2: ; 0x11f5be
-	text_jump UnknownText_0x1eca47
-	db "@"
-
-BTGreetingF3: ; 0x11f5c3
-	text_jump UnknownText_0x1eca64
-	db "@"
-
-BTLossF3: ; 0x11f5c8
-	text_jump UnknownText_0x1eca82
-	db "@"
-
-BTWinF3: ; 0x11f5cd
-	text_jump UnknownText_0x1eca9d
-	db "@"
-
-BTGreetingF4: ; 0x11f5d2
-	text_jump UnknownText_0x1ecabf
-	db "@"
-
-BTLossF4: ; 0x11f5d7
-	text_jump UnknownText_0x1ecade
-	db "@"
-
-BTWinF4: ; 0x11f5dc
-	text_jump UnknownText_0x1ecafa
-	db "@"
-
-BTGreetingF5: ; 0x11f5e1
-	text_jump UnknownText_0x1ecb19
-	db "@"
-
-BTLossF5: ; 0x11f5e6
-	text_jump UnknownText_0x1ecb37
-	db "@"
-
-BTWinF5: ; 0x11f5eb
-	text_jump UnknownText_0x1ecb55
-	db "@"
-
-BTGreetingF6: ; 0x11f5f0
-	text_jump UnknownText_0x1ecb70
-	db "@"
-
-BTLossF6: ; 0x11f5f5
-	text_jump UnknownText_0x1ecb92
-	db "@"
-
-BTWinF6: ; 0x11f5fa
-	text_jump UnknownText_0x1ecbb6
-	db "@"
-
-BTGreetingF7: ; 0x11f5ff
-	text_jump UnknownText_0x1ecbd9
-	db "@"
-
-BTLossF7: ; 0x11f604
-	text_jump UnknownText_0x1ecbf3
-	db "@"
-
-BTWinF7: ; 0x11f609
-	text_jump UnknownText_0x1ecc15
-	db "@"
-
-BTGreetingF8: ; 0x11f60e
-	text_jump UnknownText_0x1ecc39
-	db "@"
-
-BTLossF8: ; 0x11f613
-	text_jump UnknownText_0x1ecc55
-	db "@"
-
-BTWinF8: ; 0x11f618
-	text_jump UnknownText_0x1ecc75
-	db "@"
-
-BTGreetingF9: ; 0x11f61d
-	text_jump UnknownText_0x1ecc92
-	db "@"
-
-BTLossF9: ; 0x11f622
-	text_jump UnknownText_0x1ecca7
-	db "@"
-
-BTWinF9: ; 0x11f627
-	text_jump UnknownText_0x1eccc1
-	db "@"
-
-BTGreetingF10: ; 0x11f62c
-	text_jump UnknownText_0x1eccd7
-	db "@"
-
-BTLossF10: ; 0x11f631
-	text_jump UnknownText_0x1eccef
-	db "@"
-
-BTWinF10: ; 0x11f636
-	text_jump UnknownText_0x1ecd0e
-	db "@"
-
-BTGreetingF11: ; 0x11f63b
-	text_jump UnknownText_0x1ecd2b
-	db "@"
-
-BTLossF11: ; 0x11f640
-	text_jump UnknownText_0x1ecd4d
-	db "@"
-
-BTWinF11: ; 0x11f645
-	text_jump UnknownText_0x1ecd6b
-	db "@"
-
-BTGreetingF12: ; 0x11f64a
-	text_jump UnknownText_0x1ecd8d
-	db "@"
-
-BTLossF12: ; 0x11f64f
-	text_jump UnknownText_0x1ecdaf
-	db "@"
-
-BTWinF12: ; 0x11f654
-	text_jump UnknownText_0x1ecdcf
-	db "@"
-
-BTGreetingF13: ; 0x11f659
-	text_jump UnknownText_0x1ecded
-	db "@"
-
-BTLossF13: ; 0x11f65e
-	text_jump UnknownText_0x1ece0d
-	db "@"
-
-BTWinF13: ; 0x11f663
-	text_jump UnknownText_0x1ece2a
-	db "@"
-
-BTGreetingF14: ; 0x11f668
-	text_jump UnknownText_0x1ece4b
-	db "@"
-
-BTLossF14: ; 0x11f66d
-	text_jump UnknownText_0x1ece70
-	db "@"
-
-BTWinF14: ; 0x11f672
-	text_jump UnknownText_0x1ece8a
-	db "@"
-
-BTGreetingF15: ; 0x11f677
-	text_jump UnknownText_0x1ecea8
-	db "@"
-
-BTLossF15: ; 0x11f67c
-	text_jump UnknownText_0x1ecec9
-	db "@"
-
-BTWinF15: ; 0x11f681
-	text_jump UnknownText_0x1ecee8
-	db "@"
--- a/mobile/battle_tower_5c.asm
+++ /dev/null
@@ -1,1772 +1,0 @@
-BattleTowerRoomMenu: ; 1700b0
-; special
-	call InitBattleTowerChallengeRAM
-	farcall _BattleTowerRoomMenu
-	ret
-; 1700ba
-
-Function1700ba: ; 1700ba
-	call InitBattleTowerChallengeRAM
-	farcall Function11811a
-	ret
-; 1700c4
-
-Function1700c4: ; 1700c4
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-
-	call Function17042c
-
-	ld a, $5
-	call GetSRAMBank
-	ld a, $1
-	ld [$be45], a
-	xor a
-	ld [$be46], a
-	ld hl, w3_dffc
-	ld de, $aa41
-	ld bc, 4
-	call CopyBytes
-	ld hl, w3_d202Name
-	ld de, $aa8e
-	ld bc, 7 * $cc ; length of battle tower struct from japanese games?
-	call CopyBytes
-	ld hl, $aa5d ; some sort of count
-	ld a, [hl]
-	inc [hl]
-	inc hl
-	sla a
-	sla a
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, w3_dffc
-	ld bc, 4
-	call CopyBytes
-	call CloseSRAM
-	pop af
-	ld [rSVBK], a
-	ret
-; 170114
-
-Function170114: ; 170114
-	call InitBattleTowerChallengeRAM
-	call .Function170121
-	farcall Function11805f
-	ret
-; 170121
-
-.Function170121: ; 170121
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a948
-	ld de, wMisc
-	ld bc, $f6 ; 246
-	call CopyBytes
-	call CloseSRAM
-	call Function170c8b
-	ret
-; 170139
-
-Function170139: ; 170139
-; Convert the 4-digit decimal number at 5:aa41 into binary
-	ld a, $5
-	call GetSRAMBank
-	ld de, $aa41
-	ld h, $0
-	ld l, h
-	ld bc, 1000
-	call .DecToBin
-	ld bc, 100
-	call .DecToBin
-	ld bc, 10
-	call .DecToBin
-	ld a, [de]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	call CloseSRAM
-; Store that number in wMisc
-	ld a, h
-	ld [wMisc], a
-	ld a, l
-	ld [wMisc + 1], a
-	ld hl, wBT_OTTempPkmn1DVs
-	ld a, [PlayerID]
-	ld [hli], a
-	ld a, [PlayerID + 1]
-	ld [hli], a
-	ld a, [wSecretID]
-	ld [hli], a
-	ld a, [wSecretID + 1]
-	ld [hli], a
-	ld e, l
-	ld d, h
-	ld hl, PlayerName
-	ld bc, NAME_LENGTH_JAPANESE - 1
-	call CopyBytes
-	ld bc, PlayerID
-	ld de, wPlayerGender
-	farcall GetMobileOTTrainerClass
-	ld de, wBT_OTTempPkmn1CaughtGender
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, LOW(PartyMons)
-	ld [wcd49], a
-	ld a, HIGH(PartyMons)
-	ld [wcd4a], a
-	ld a, LOW(PartyMonNicknames)
-	ld [wcd4b], a
-	ld a, HIGH(PartyMonNicknames)
-	ld [wcd4c], a
-	ld a, 3
-.CopyLoop:
-	push af
-	ld a, [wcd49]
-	ld l, a
-	ld a, [wcd4a]
-	ld h, a
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call CopyBytes
-	ld a, l
-	ld [wcd49], a
-	ld a, h
-	ld [wcd4a], a
-	ld a, [wcd4b]
-	ld l, a
-	ld a, [wcd4c]
-	ld h, a
-	ld bc, $0006
-	call CopyBytes
-	ld a, l
-	ld [wcd4b], a
-	ld a, h
-	ld [wcd4c], a
-	pop af
-	dec a
-	jr nz, .CopyLoop
-	ld a, $4
-	call GetSRAMBank
-	ld hl, $a013
-	ld bc, $24
-	call CopyBytes
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a894
-	ld bc, NAME_LENGTH_JAPANESE
-	call CopyBytes
-	ld hl, wMisc
-	ld de, $a948
-	ld bc, $f6
-	call CopyBytes
-	call CloseSRAM
-	ret
-; 17020c
-
-.DecToBin: ; 17020c
-	ld a, [de]
-	inc de
-	and a
-	ret z
-
-.digit_loop
-	add hl, bc
-	dec a
-	jr nz, .digit_loop
-	ret
-; 170215
-
-BattleTowerBattle: ; 170215
-	xor a
-	ld [wBattleTowerBattleEnded], a
-	call _BattleTowerBattle
-	ret
-; 17021d
-
-EmptySpecial_17021d: ; 17021d
-	ret
-; 17021e
-
-InitBattleTowerChallengeRAM: ; 17021e
-	xor a
-	ld [wBattleTowerBattleEnded], a
-	ld [wNrOfBeatenBattleTowerTrainers], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ret
-; 17022c
-
-_BattleTowerBattle: ; 17022c
-.loop
-	call .do_dw
-	call DelayFrame
-	ld a, [wBattleTowerBattleEnded]
-	cp $1
-	jr nz, .loop
-	ret
-; 17023a
-
-.do_dw ; 17023a
-	ld a, [wBattleTowerBattleEnded]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-; 170249
-
-.dw ; 170249
-	dw RunBattleTowerTrainer
-	dw SkipBattleTowerTrainer
-; 17024d
-
-RunBattleTowerTrainer: ; 17024d
-	ld a, [Options]
-	push af
-	ld hl, Options
-	set BATTLE_SHIFT, [hl] ; SET MODE
-
-	ld a, [InBattleTowerBattle]
-	push af
-	or $1
-	ld [InBattleTowerBattle], a
-
-	xor a
-	ld [wLinkMode], a
-	farcall TrainerRankings_Healings
-	farcall HealParty
-	call ReadBTTrainerParty
-	call Clears5_a89a
-
-	predef StartBattle
-
-	farcall LoadPokemonData
-	farcall HealParty
-	ld a, [wBattleResult]
-	ld [ScriptVar], a
-	and a
-	jr nz, .lost
-	ld a, BANK(sNrOfBeatenBattleTowerTrainers)
-	call GetSRAMBank
-	ld a, [sNrOfBeatenBattleTowerTrainers]
-	ld [wNrOfBeatenBattleTowerTrainers], a
-	call CloseSRAM
-	ld hl, StringBuffer3
-	ld a, [wNrOfBeatenBattleTowerTrainers]
-	add "1"
-	ld [hli], a
-	ld a, "@"
-	ld [hl], a
-
-.lost
-	pop af
-	ld [InBattleTowerBattle], a
-	pop af
-	ld [Options], a
-	ld a, $1
-	ld [wBattleTowerBattleEnded], a
-	ret
-
-
-ReadBTTrainerParty: ; 1702b7
-; Initialise the BattleTower-Trainer and his Pkmn
-	call CopyBTTrainer_FromBT_OT_TowBT_OTTemp
-
-; Check the nicknames for illegal characters, and replace bad nicknames
-; with their species names.
-	ld de, wBT_OTTempPkmn1Name ; $c643
-	ld c, PKMN_NAME_LENGTH
-	farcall CheckStringForErrors
-	jr nc, .skip_mon_1
-
-	ld a, [wBT_OTTempPkmn1]
-	ld [wNamedObjectIndexBuffer], a
-	call GetPokemonName
-	ld l, e
-	ld h, d
-	ld de, wBT_OTTempPkmn1Name ; $c643
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.skip_mon_1
-	ld de, wBT_OTTempPkmn2Name ; $c67e
-	ld c, PKMN_NAME_LENGTH
-	farcall CheckStringForErrors
-	jr nc, .skip_mon_2
-	ld a, [wBT_OTTempPkmn2] ; [$c64e]
-	ld [wNamedObjectIndexBuffer], a
-	call GetPokemonName
-	ld l, e
-	ld h, d
-	ld de, wBT_OTTempPkmn2Name ; $c67e
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.skip_mon_2
-	ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
-	ld c, PKMN_NAME_LENGTH
-	farcall CheckStringForErrors
-	jr nc, .skip_mon_3
-	ld a, [wBT_OTTempPkmn3] ; [$c689]
-	ld [wNamedObjectIndexBuffer], a
-	call GetPokemonName
-	ld l, e
-	ld h, d
-	ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.skip_mon_3
-; Add the terminator character to each of these names
-	ld a, "@"
-	ld [wBT_OTTempPkmn1NameEnd - 1], a ; $c64d
-	ld [wBT_OTTempPkmn2NameEnd - 1], a ; $c688
-	ld [wBT_OTTempPkmn3NameEnd - 1], a ; $c68a + 57 = $c6c3
-; Fix errors in the movesets
-	call CheckBTMonMovesForErrors
-; Repair the trainer name if needed, then copy it to OTPlayerName
-	ld de, wBT_OTTempName
-	ld c, NAME_LENGTH - 1
-	farcall CheckStringForErrors
-	jr nc, .trainer_name_okay
-	ld hl, BT_ChrisName
-	jr .done_trainer_name
-
-.trainer_name_okay
-	ld hl, wBT_OTTempName ; 0xc608
-
-.done_trainer_name
-	ld de, OTPlayerName
-	ld bc, NAME_LENGTH - 1
-	call CopyBytes
-	ld a, "@"
-	ld [de], a
-
-	ld hl, wBT_OTTempTrainerClass
-	ld a, [hli]
-	ld [OtherTrainerClass], a
-	ld a, LOW(OTPartyMonNicknames)
-	ld [BGMapBuffer], a
-	ld a, HIGH(OTPartyMonNicknames)
-	ld [BGMapBuffer + 1], a
-
-	; Copy Pkmn into Memory from the address in hl
-	ld de, OTPartyMon1Species
-	ld bc, OTPartyCount
-	ld a, BATTLETOWER_NROFPKMNS		; Number of Pkmn the BattleTower-Trainer has
-	ld [bc], a
-	inc bc
-.otpartymon_loop
-	push af
-	ld a, [hl]
-	ld [bc], a
-	inc bc
-	push bc
-	ld bc, PARTYMON_STRUCT_LENGTH
-	call CopyBytes
-	push de
-	ld a, [BGMapBuffer]
-	ld e, a
-	ld a, [BGMapBuffer + 1]
-	ld d, a
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	ld a, e
-	ld [BGMapBuffer], a
-	ld a, d
-	ld [BGMapBuffer + 1], a
-	pop de
-	pop bc
-	pop af
-	dec a
-	and a
-	jr nz, .otpartymon_loop
-	ld a, -1
-	ld [bc], a
-	ret
-; 170394
-
-ValidateBTParty: ; 170394
-; Check for and fix errors in party data
-	ld hl, wBT_OTTempPkmn1Species
-	ld d, BATTLETOWER_NROFPKMNS
-.pkmn_loop
-	push de
-	push hl
-	ld b, h
-	ld c, l
-	ld a, [hl]
-	and a
-idx = $ff
-rept ($ff +- NUM_POKEMON)
-	jr z, .invalid
-	cp idx
-idx = idx +- 1
-endr
-	jr nz, .valid
-
-.invalid
-	ld a, SMEARGLE
-	ld [hl], a
-
-.valid
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb] ; s5_b2fb ; max level?
-	call CloseSRAM
-	ld e, a
-	ld hl, MON_LEVEL
-	add hl, bc
-	ld a, [hl]
-	cp MIN_LEVEL
-	ld a, MIN_LEVEL
-	jr c, .load
-	ld a, [hl]
-	cp e
-	jr c, .dont_load
-	ld a, e
-
-.load
-	ld [hl], a
-
-.dont_load
-	ld [CurPartyLevel], a
-	ld hl, MON_MOVES
-	add hl, bc
-	ld d, NUM_MOVES - 1
-	ld a, [hli]
-	and a
-	jr z, .not_move
-	cp NUM_ATTACKS + 1
-	jr nc, .not_move
-	jr .valid_move
-
-.not_move
-	dec hl
-	ld a, POUND
-	ld [hli], a
-	xor a
-	ld [hli], a
-	ld [hli], a
-	ld [hl], a
-	jr .done_moves
-
-.valid_move
-	ld a, [hl]
-	cp NUM_ATTACKS + 1
-	jr c, .next
-	ld [hl], $0
-
-.next
-	inc hl
-	dec d
-	jr nz, .valid_move
-
-.done_moves
-	ld hl, MON_MAXHP
-	add hl, bc
-	ld d, h
-	ld e, l
-	push hl
-	push de
-	ld hl, MON_STAT_EXP - 1
-	add hl, bc
-	ld b, $1
-	predef CalcPkmnStats
-	pop de
-	pop hl
-	dec de
-	dec de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	pop hl
-	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
-	add hl, bc
-	pop de
-	dec d
-	jp nz, .pkmn_loop
-	ret
-; 170426
-
-BT_ChrisName: ; 170426
-	db "CHRIS@"
-; 17042c
-
-Function17042c: ; 17042c
-	ld hl, w3_d202TrainerData
-	ld a, BATTLETOWER_NROFTRAINERS
-.loop
-	push af
-	push hl
-	ld c, BATTLETOWER_TRAINERDATALENGTH / 2
-.loop2
-	; First byte is a comparison value.
-	ld a, [hli]
-	ld b, a
-	; Second byte is a lookup index.
-	ld a, [hli]
-	and a
-	jr z, .empty
-	cp 15
-	jr nc, .copy_data
-
-	push hl
-	ld hl, Unknown_170470
-	dec a
-	ld e, a
-	ld d, 0
-	add hl, de
-	ld a, [hl]
-	pop hl
-
-	; If Unknown_170470[a-1] <= b, overwrite the current trainer's data
-	; with Unknown17047e, and exit the inner loop.
-	cp b
-	jr c, .copy_data
-	jr z, .copy_data
-	jr .next_iteration
-
-.empty
-	; If a == 0 and b >= $fc, overwrite the current trainer's data with
-	; Unknown17047e, and exit the inner loop.
-	ld a, b
-	cp $fc
-	jr nc, .copy_data
-
-.next_iteration
-	dec c
-	jr nz, .loop2
-	jr .next_trainer
-
-.copy_data
-	pop de
-	push de
-	ld hl, Unknown_17047e
-	ld bc, BATTLETOWER_TRAINERDATALENGTH
-	call CopyBytes
-
-.next_trainer
-	pop hl
-	ld de, BATTLE_TOWER_STRUCT_LENGTH
-	add hl, de
-	pop af
-	dec a
-	jr nz, .loop
-	ret
-; 170470
-
-Unknown_170470:
-	db $12
-	db $24
-	db $45
-	db $45
-	db $42
-	db $42
-	db $45
-	db $42
-	db $27
-	db $27
-	db $45
-	db $27
-	db $42
-	db $24
-
-Unknown_17047e:
-; see data/battle_tower_2.asm
-	db $03,  4
-	db $05,  8
-	db $03,  5
-	db $0e,  6
-	db $03,  2
-	db $00,  0
-	db $39,  7
-	db $07,  4
-	db $00,  5
-	db $04,  7
-	db $01,  5
-	db $00,  0
-	db $0f,  5
-	db $14,  7
-	db $05,  5
-	db $11, 12
-	db $0c,  6
-	db $06,  4
-
-
-CopyBTTrainer_FromBT_OT_TowBT_OTTemp: ; 1704a2
-; copy the BattleTower-Trainer data that lies at 'BT_OTTrainer' to 'wBT_OTTemp'
-	ld a, [rSVBK]
-	push af
-	ld a, BANK(BT_OTTrainer)
-	ld [rSVBK], a
-
-	ld hl, BT_OTTrainer
-	ld de, wBT_OTTemp
-	ld bc, BATTLE_TOWER_STRUCT_LENGTH
-	call CopyBytes
-
-	pop af
-	ld [rSVBK], a
-
-	ld a, BANK(sBattleTowerChallengeState)
-	call GetSRAMBank
-	ld a, BATTLETOWER_CHALLENGE_IN_PROGESS
-	ld [sBattleTowerChallengeState], a
-	ld hl, sNrOfBeatenBattleTowerTrainers
-	inc [hl]
-	call CloseSRAM
-SkipBattleTowerTrainer: ; 1704c9
-	ret
-; 1704ca
-
-Function1704ca: ; 1704ca
-; unreferenced mobile function
-	ld a, [$be46]
-	cp $7
-	jr c, .asm_1704d3
-	ld a, $6
-
-.asm_1704d3
-	ld hl, $afce
-	ld de, -$e0
-.asm_1704d9
-	and a
-	jr z, .asm_1704e0
-	add hl, de
-	dec a
-	jr .asm_1704d9
-
-.asm_1704e0
-	ret
-; 1704e1
-
-Function1704e1: ; 1704e1
-; unreferenced special
-	call SpeechTextBox
-	call FadeToMenu
-	call InitBattleTowerChallengeRAM
-	call .JumptableLoop
-	call CloseSubmenu
-	ret
-; 1704f1
-
-.JumptableLoop: ; 1704f1
-	call ClearBGPalettes
-	call ClearSprites
-	call ClearScreen
-.loop
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .done
-	call .DoJumptable
-	farcall ReloadMapPart
-	jr .loop
-
-.done
-	ret
-; 170510
-
-.DoJumptable: ; 170510
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-; 17051f
-
-.dw ; 17051f
-	dw .Jumptable_0
-	dw .Jumptable_1
-	dw .Jumptable_2
-; 170525
-
-.Jumptable_0: ; 170525
-	ld a, $5
-	call GetSRAMBank
-
-	ld hl, $a89c
-	ld de, StringBuffer3
-	ld bc, $16
-	call CopyBytes
-
-	ld hl, $a8b2
-	ld de, wMisc
-	ld bc, $0096
-	call CopyBytes
-
-	call CloseSRAM
-	hlcoord 1, 1
-	ld de, StringBuffer3
-	call PlaceString
-	hlcoord 1, 3
-	ld de, .String_Mail
-	call PlaceString
-	hlcoord 4, 3
-	ld de, StringBuffer4
-	call PlaceString
-	hlcoord 8, 3
-	ld de, .String_PastReaders
-	call PlaceString
-	call .DrawBorder
-	call .PlaceTextItems
-	jr .NextJumptableFunction
-
-
-.Jumptable_1:
-	call SetPalettes
-	call .NextJumptableFunction
-
-
-.Jumptable_2:
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .pressed_a_or_b
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .pressed_a_or_b
-	ld a, [hl]
-	and D_UP
-	jr nz, .pressed_up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .pressed_down
-	ret
-
-.pressed_up
-	ld a, [wNrOfBeatenBattleTowerTrainers]
-	and a
-	ret z
-	sub 15
-	ld [wNrOfBeatenBattleTowerTrainers], a
-	call .PlaceTextItems
-	ret
-
-.pressed_down
-	ld a, [wNrOfBeatenBattleTowerTrainers]
-	cp 60
-	ret z
-	add 15
-	ld [wNrOfBeatenBattleTowerTrainers], a
-	call .PlaceTextItems
-	ret
-
-.pressed_a_or_b
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.NextJumptableFunction:
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; 1705b7
-
-.DrawBorder: ; 1705b7
-	hlcoord 0, 4
-	ld a, $79
-	ld [hli], a
-	ld c, SCREEN_WIDTH - 2
-.top_border_loop
-	ld a, $7a
-	ld [hli], a
-	dec c
-	jr nz, .top_border_loop
-	ld a, $7b
-	ld [hli], a
-	ld de, SCREEN_WIDTH
-	ld c, 12
-.left_border_loop
-	ld a, $7c
-	ld [hl], a
-	add hl, de
-	dec c
-	jr nz, .left_border_loop
-	ld a, $7d
-	ld [hli], a
-	ld c, SCREEN_WIDTH - 2
-.bottom_border_loop
-	ld a, $7a
-	ld [hli], a
-	dec c
-	jr nz, .bottom_border_loop
-	ld a, $7e
-	ld [hl], a
-	ld de, -SCREEN_WIDTH
-	add hl, de
-	ld c, 12
-.right_border_loop
-	ld a, $7c
-	ld [hl], a
-	add hl, de
-	dec c
-	jr nz, .right_border_loop
-	ret
-; 1705f0
-
-.PlaceTextItems: ; 1705f0
-	call .ClearBox
-	call .PlaceUpDownArrows
-	ld a, $50
-	ld [wcd4e], a
-	ld hl, wMisc
-	ld a, [wNrOfBeatenBattleTowerTrainers]
-	ld c, a
-	xor a
-	ld b, a
-	add hl, bc
-	push hl
-	pop bc
-	hlcoord 1, 6
-	ld a, 6
-.loop1
-	push af
-	push hl
-	ld a, 3
-.loop2
-	push af
-	ld de, wcd49
-	ld a, [bc]
-	and a
-	jr z, .fill_with_e3
-; .copy
-	ld a, 5
-.loop3a
-	push af
-	ld a, [bc]
-	ld [de], a
-	inc bc
-	inc de
-	pop af
-	dec a
-	jr nz, .loop3a
-	jr .rejoin
-
-.fill_with_e3
-	ld a, 5
-.loop3b
-	push af
-	ld a, $e3
-	ld [de], a
-	inc de
-	inc bc
-	pop af
-	dec a
-	jr nz, .loop3b
-
-.rejoin
-	ld de, wcd49
-	push bc
-	call PlaceString
-	ld de, NAME_LENGTH_JAPANESE
-	add hl, de
-	pop bc
-	pop af
-	dec a
-	jr nz, .loop2
-	pop hl
-	ld de, $28
-	add hl, de
-	pop af
-	dec a
-	jr nz, .loop1
-	ret
-; 17064b
-
-.ClearBox: ; 17064b
-	hlcoord 1, 5
-	xor a
-	ld b, 12
-.clearbox_row
-	ld c, SCREEN_WIDTH - 2
-.clearbox_column
-	ld [hli], a
-	dec c
-	jr nz, .clearbox_column
-	inc hl
-	inc hl
-	dec b
-	jr nz, .clearbox_row
-	ret
-; 17065d
-
-.PlaceUpDownArrows: ; 17065d
-	ld a, [wNrOfBeatenBattleTowerTrainers]
-	and a
-	jr z, .nope
-	hlcoord 18, 5
-	ld a, "▲"
-	ld [hl], a
-
-.nope
-	ld a, [wNrOfBeatenBattleTowerTrainers]
-	cp 60
-	ret z
-	hlcoord 18, 16
-	ld a, "▼"
-	ld [hl], a
-	ret
-; 170676
-
-.String_Mail: ; 170676
-	db "ルーム@"
-; 17067a
-
-.String_PastReaders: ; 17067a
-	db "れきだいりーダーいちらん@"
-; 170687
-
-BattleTowerAction: ; 170687
-	ld a, [ScriptVar]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-; 170696
-
-
-.dw ; 170696 (5c:4696)
-	dw BattleTowerAction_CheckExplanationRead ; 0x00
-	dw BattleTowerAction_SetExplanationRead ; 0x01
-	dw BattleTowerAction_GetChallengeState ; 0x02
-	dw BattleTowerAction_SetByteToQuickSaveChallenge ; 0x03
-	dw BattleTowerAction_SetByteToCancelChallenge ; 0x04
-	dw Function1707ac ; 0x05
-	dw Function1707f4 ; 0x06
-	dw SaveBattleTowerLevelGroup ; 0x07
-	dw LoadBattleTowerLevelGroup ; 0x08
-	dw BattleTower_CheckSaveFileExistsAndIsYours ; 0x09
-	dw Function1708b1 ; 0x0a
-	dw CheckMobileEventIndex ; 0x0b
-	dw Function1708c8 ; 0x0c
-	dw Function1708f0 ; 0x0d
-	dw BattleTowerAction_EggTicket ; 0x0e
-	dw Function1709aa ; 0x0f
-	dw Function1709bb ; 0x10
-	dw Function170a9c ; 0x11
-	dw Function170aa0 ; 0x12
-	dw Function170aaf ; 0x13
-	dw Function170abe ; 0x14
-	dw Function170ad7 ; 0x15
-	dw Function170807 ; 0x16
-	dw Function17081d ; 0x17
-	dw BattleTowerAction_LevelCheck ; 0x18
-	dw BattleTowerAction_UbersCheck ; 0x19
-	dw ResetBattleTowerTrainersSRAM ; 0x1a
-	dw BattleTower_GiveReward ; 0x1b
-	dw Function17071b ; 0x1c
-	dw Function170729 ; 0x1d
-	dw BattleTower_RandomlyChooseReward ; 0x1e
-	dw BattleTower_SaveOptions ; 0x1f
-
-
-; Reset the save memory for BattleTower-Trainers (Counter and all 7 TrainerBytes)
-ResetBattleTowerTrainersSRAM: ; 1706d6 (5c:46d6) BattleTowerAction $1a
-	ld a, BANK(sBTTrainers)
-	call GetSRAMBank
-
-	ld a, $ff
-	ld hl, sBTTrainers
-	ld bc, BATTLETOWER_NROFTRAINERS
-	call ByteFill
-
-	xor a
-	ld [sNrOfBeatenBattleTowerTrainers], a
-
-	call CloseSRAM
-
-	ret
-
-BattleTower_GiveReward: ; 1706ee (5c:46ee) BattleTowerAction $1b
-	ld a, BANK(sBattleTowerReward)
-	call GetSRAMBank
-
-	ld a, [sBattleTowerReward]
-	call CloseSRAM
-	ld [ScriptVar], a
-	ld hl, NumItems
-	ld a, [hli]
-	cp MAX_ITEMS
-	ret c
-	ld b, MAX_ITEMS
-	ld a, [ScriptVar]
-	ld c, a
-.loop
-	ld a, [hli]
-	cp c
-	jr nz, .next
-	ld a, [hl]
-	cp 95
-	ret c
-.next
-	inc hl
-	dec b
-	jr nz, .loop
-	ld a, POTION
-	ld [ScriptVar], a
-	ret
-
-Function17071b: ; 17071b (5c:471b) BattleTowerAction $1c
-	ld a, BANK(sBattleTowerChallengeState)
-	call GetSRAMBank
-	ld a, BATTLETOWER_WON_CHALLENGE
-	ld [sBattleTowerChallengeState], a
-	call CloseSRAM
-	ret
-
-Function170729: ; 170729 (5c:4729) BattleTowerAction $1d
-	ld a, BANK(sBattleTowerChallengeState)
-	call GetSRAMBank
-	ld a, BATTLETOWER_RECEIVED_REWARD
-	ld [sBattleTowerChallengeState], a
-	call CloseSRAM
-	ret
-
-BattleTower_SaveOptions: ; 170737 (5c:4737) BattleTowerAction $1f
-	farcall SaveOptions
-	ret
-
-BattleTower_RandomlyChooseReward: ; 17073e (5c:473e) BattleTowerAction $1e
-; Generate a random stat boosting item.
-.loop
-	call Random
-	ld a, [hRandomAdd]
-	and $7
-	cp 6
-	jr c, .okay
-	sub 6
-.okay
-	add HP_UP
-	cp LUCKY_PUNCH
-	jr z, .loop
-	push af
-	ld a, BANK(sBattleTowerReward)
-	call GetSRAMBank
-	pop af
-	ld [sBattleTowerReward], a
-	call CloseSRAM
-	ret
-
-BattleTowerAction_CheckExplanationRead: ; 17075f (5c:475f) BattleTowerAction $00
-	call BattleTower_CheckSaveFileExistsAndIsYours
-	ld a, [ScriptVar]
-	and a
-	ret z
-
-	ld a, BANK(sBattleTowerSaveFileFlags)
-	call GetSRAMBank
-	ld a, [sBattleTowerSaveFileFlags]
-	and $2
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-BattleTowerAction_GetChallengeState: ; 170778 (5c:4778) BattleTowerAction $02
-	ld hl, sBattleTowerChallengeState
-	ld a, BANK(sBattleTowerChallengeState)
-	call GetSRAMBank
-	ld a, [hl]
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-BattleTowerAction_SetExplanationRead: ; 170788 (5c:4788) BattleTowerAction $01
-	ld a, BANK(sBattleTowerSaveFileFlags)
-	call GetSRAMBank
-	ld a, [sBattleTowerSaveFileFlags]
-	or $2
-	ld [sBattleTowerSaveFileFlags], a
-	call CloseSRAM
-	ret
-
-BattleTowerAction_SetByteToQuickSaveChallenge: ; 170799 (5c:4799) BattleTowerAction $03
-	ld c, BATTLETOWER_SAVED_AND_LEFT
-	jr asm_17079f
-
-BattleTowerAction_SetByteToCancelChallenge: ; 17079d (5c:479d) BattleTowerAction $04
-	ld c, BATTLETOWER_NO_CHALLENGE
-asm_17079f: ; 17079f (5c:479f)
-	ld a, BANK(sBattleTowerChallengeState)
-	call GetSRAMBank
-	ld a, c
-	ld [sBattleTowerChallengeState], a
-	call CloseSRAM
-	ret
-
-Function1707ac: ; 1707ac (5c:47ac) BattleTowerAction $05
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa8c]
-	ld b, a
-	ld a, [$be46]
-	ld [ScriptVar], a
-	call CloseSRAM
-	and a
-	ret z
-	ld a, b
-	cp $2
-	jr nc, .asm_1707ef
-	push bc
-	call UpdateTime
-	pop bc
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa8b]
-	call CloseSRAM
-	ld c, a
-	ld a, [CurDay]
-	sub c
-	jr c, .asm_1707e5
-	cp $8
-	jr nc, .asm_1707ef
-	ld a, b
-	and a
-	jr nz, .asm_1707ef
-	ret
-.asm_1707e5
-	ld hl, CurDay
-	ld a, $8c
-	sub c
-	add [hl]
-	cp $8
-	ret c
-.asm_1707ef
-	ld a, $8
-	ld [ScriptVar], a
-
-Function1707f4: ; 1707f4 (5c:47f4) BattleTowerAction $06
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$be46], a
-	ld [$aa8b], a
-	ld [$aa8c], a
-	call CloseSRAM
-	ret
-
-Function170807: ; 170807 (5c:4807) BattleTowerAction $16
-	call UpdateTime
-	ld a, $5
-	call GetSRAMBank
-	ld a, [CurDay]
-	ld [$b2f9], a
-	xor a
-	ld [$b2fa], a
-	call CloseSRAM
-	ret
-
-Function17081d: ; 17081d (5c:481d) BattleTowerAction $17
-	xor a
-	ld [ScriptVar], a
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2f9]
-	ld c, a
-	ld a, [$b2fa]
-	ld b, a
-	call CloseSRAM
-	cp $2
-	jr nc, .asm_170853
-	push bc
-	call UpdateTime
-	pop bc
-	ld a, [CurDay]
-	sub c
-	jr c, .asm_170849
-	cp $b
-	jr nc, .asm_170853
-	ld a, b
-	and a
-	jr nz, .asm_170853
-	ret
-
-.asm_170849
-	ld hl, CurDay
-	ld a, 140
-	sub c
-	add [hl]
-	cp $b
-	ret c
-.asm_170853
-	ld a, $1
-	ld [ScriptVar], a
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$b2f9], a
-	ld [$b2fa], a
-	call CloseSRAM
-	ret
-
-SaveBattleTowerLevelGroup: ; 170868 (5c:4868) BattleTowerAction $07
-	ld a, BANK(sBTChoiceOfLevelGroup)
-	call GetSRAMBank
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld a, [wBTChoiceOfLvlGroup]
-	ld [sBTChoiceOfLevelGroup], a
-	pop af
-	ld [rSVBK], a
-	call CloseSRAM
-	ret
-
-LoadBattleTowerLevelGroup: ; 170881 (5c:4881) BattleTowerAction $08 ; Load level group choice
-	ld a, BANK(sBTChoiceOfLevelGroup)
-	call GetSRAMBank
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld a, [sBTChoiceOfLevelGroup]
-	ld [wBTChoiceOfLvlGroup], a
-	pop af
-	ld [rSVBK], a
-	call CloseSRAM
-	ret
-
-BattleTower_CheckSaveFileExistsAndIsYours: ; 17089a BattleTowerAction $09
-	ld a, [wSaveFileExists]
-	and a
-	jr z, .nope
-	farcall CompareLoadedAndSavedPlayerID
-	jr z, .yes
-	xor a
-	jr .nope
-
-.yes
-	ld a, $1
-
-.nope
-	ld [ScriptVar], a
-	ret
-; 1708b1
-
-
-Function1708b1: ; 1708b1 (5c:48b1) BattleTowerAction $0a
-	xor a
-	ld [MusicFade], a
-	call MaxVolume
-	ret
-
-CheckMobileEventIndex: ; 1708b9 (5c:48b9) BattleTowerAction $0b something to do with GS Ball
-	ld a, BANK(sMobileEventIndex)
-	call GetSRAMBank
-	ld a, [sMobileEventIndex]
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function1708c8: ; 1708c8 (5c:48c8) BattleTowerAction $0c
-	call UpdateTime
-	ld a, $5
-	call GetSRAMBank
-	ld a, [CurDay]
-	ld [$aa8b], a
-	xor a
-	ld [$aa8c], a
-	ld a, [$aa5d]
-	cp $2
-	jr nc, .asm_1708ec
-	ld a, [CurDay]
-	ld [$aa48], a
-	ld a, $1
-	ld [$aa47], a
-.asm_1708ec
-	call CloseSRAM
-	ret
-
-Function1708f0: ; 1708f0 (5c:48f0) BattleTowerAction $0d
-	xor a
-	ld [ScriptVar], a
-	call UpdateTime
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa48]
-	ld c, a
-	ld a, [$aa47]
-	call CloseSRAM
-	and a
-	ret z
-	ld hl, CurDay
-	ld a, c
-	cp [hl]
-	jr nz, Function170923
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa5d]
-	call CloseSRAM
-	cp $5
-	ret c
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-
-Function170923: ; 170923
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$aa48], a
-	ld [$aa47], a
-	ld hl, $aa5d
-	ld bc, $0011
-	call ByteFill
-	call CloseSRAM
-	ret
-; 17093c
-
-
-BattleTowerAction_EggTicket: ; 17093c (5c:493c) BattleTowerAction $0e
-	xor a
-	ld [ScriptVar], a
-	ld a, EGG_TICKET
-	ld [CurItem], a
-	ld hl, NumItems
-	call CheckItem
-	ret nc
-	ld a, [PartyCount]
-	ld b, 0
-	ld c, a
-	ld hl, PartySpecies
-.loop
-	ld a, [hli]
-	cp EGG
-	jr nz, .not_egg
-	push hl
-	ld hl, PartyMonOT
-	ld de, NAME_LENGTH_JAPANESE
-	ld a, b
-	and a
-	jr z, .skip
-.loop2
-	add hl, de
-	dec a
-	jr nz, .loop2
-.skip
-	ld de, String_1709a4
-	ld a, NAME_LENGTH_JAPANESE
-.compare_loop
-	push af
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr nz, .different
-	pop af
-	dec a
-	jr nz, .compare_loop
-rept 4
-	dec hl
-endr
-	ld a, "@"
-	ld [hli], a
-	ld [hli], a
-	pop hl
-	ld a, EGG_TICKET
-	ld [CurItem], a
-	ld a, 1
-	ld [wItemQuantityChangeBuffer], a
-	ld a, -1
-	ld [CurItemQuantity], a
-	ld hl, NumItems
-	call TossItem
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.different
-	pop af
-	pop hl
-.not_egg
-	inc b
-	dec c
-	jr nz, .loop
-	ret
-; 1709a4 (5c:49a4)
-
-String_1709a4: ; 1709a4
-	db "なぞナゾ@@"
-
-Function1709aa: ; 1709aa (5c:49aa) BattleTowerAction $0f
-	ld a, [rSVBK]
-	push af
-	ld a, BANK(w3_d090)
-	ld [rSVBK], a
-	ld a, [w3_d090]
-	ld [ScriptVar], a
-	pop af
-	ld [rSVBK], a
-	ret
-
-Function1709bb: ; 1709bb (5c:49bb) BattleTowerAction $10
-	xor a
-	ld [ScriptVar], a
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$a800]
-	call CloseSRAM
-	cp 6
-	jr nc, .invalid
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1709e7
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
-
-.invalid
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$a800], a
-	call CloseSRAM
-	ret
-; 1709e7 (5c:49e7)
-
-Jumptable_1709e7: ; 1709e7
-	dw .NoAction
-	dw .NoAction
-	dw .DoAction1
-	dw .DoAction1
-	dw .Action4
-	dw .Action5
-; 1709f3
-
-.DoAction1: ; 1709f3
-	ld a, $5
-	call GetSRAMBank
-	ld a, $1
-	ld [$a800], a
-	call CloseSRAM
-
-.NoAction: ; 170a00
-	ret
-; 170a01
-
-.Action4: ; 170a01
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $b023
-	ld de, wMisc
-	ld bc, $0069
-	call CopyBytes
-	ld a, [$a825]
-	ld [wcd30], a
-	ld a, [$a826]
-	ld [wcd31], a
-	call CloseSRAM
-	farcall Function11b6b4
-	farcall Function17d0f3
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-; 170a33
-
-.Action5: ; 170a33
-	ld a, $0
-	call GetSRAMBank
-	ld hl, wRTC
-	ld de, wMisc
-	ld bc, $0004
-	call CopyBytes
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $b08c
-	ld de, wMisc
-	ld c, $4
-.compare_loop
-	ld a, [de]
-	inc de
-	cp [hl]
-	jr nz, .different
-	inc hl
-	dec c
-	jr nz, .compare_loop
-	call CloseSRAM
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetMapSceneID
-	ld a, d
-	or e
-	jr z, .no_scene
-	ld a, [de]
-	and a
-	ret nz
-
-.no_scene
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.different
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$a800], a
-	call CloseSRAM
-	ld [ScriptVar], a
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetMapSceneID
-	ld a, d
-	or e
-	jr z, .no_scene_2
-	xor a
-	ld [de], a
-
-.no_scene_2
-	ret
-; 170a9c
-
-Function170a9c: ; 170a9c (5c:4a9c) BattleTowerAction $11
-	ld c, $0
-	jr asm_170aa2
-
-Function170aa0: ; 170aa0 (5c:4aa0) BattleTowerAction $12
-	ld c, $1
-asm_170aa2: ; 170aa2 (5c:4aa2)
-	ld a, $5
-	call GetSRAMBank
-	ld a, c
-	ld [$aa8d], a
-	call CloseSRAM
-	ret
-
-Function170aaf: ; 170aaf (5c:4aaf) BattleTowerAction $13
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa8d]
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function170abe: ; 170abe (5c:4abe) BattleTowerAction $14
-	call BattleTower_CheckSaveFileExistsAndIsYours
-	ld a, [ScriptVar]
-	and a
-	ret z
-
-	ld a, BANK(sBattleTowerSaveFileFlags)
-	call GetSRAMBank
-	ld a, [sBattleTowerSaveFileFlags]
-	and $1
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function170ad7: ; 170ad7 (5c:4ad7) BattleTowerAction $15
-	ld a, BANK(sBattleTowerSaveFileFlags)
-	call GetSRAMBank
-	ld a, [sBattleTowerSaveFileFlags]
-	or $1
-	ld [sBattleTowerSaveFileFlags], a
-	call CloseSRAM
-	ret
-
-BattleTowerAction_LevelCheck: ; 170ae8 (5c:4ae8) BattleTowerAction $18
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld c, 10
-	call SimpleDivide
-	ld a, b
-	ld [wcd4f], a
-	xor a
-	ld [ScriptVar], a
-	farcall BattleTower_LevelCheck ; level check
-	ret nc
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld [ScriptVar], a
-	ret
-
-BattleTowerAction_UbersCheck: ; 170b16 (5c:4b16) BattleTowerAction $19
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld c, 10
-	call SimpleDivide
-	ld a, b
-	ld [wcd4f], a
-	xor a
-	ld [ScriptVar], a
-	farcall BattleTower_UbersCheck
-	ret nc
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld [ScriptVar], a
-	ret
-
-Function_LoadOpponentTrainerAndPokemonsWithOTSprite: ; 0x170b44
-	farcall Function_LoadOpponentTrainerAndPokemons
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, BT_OTTrainerClass
-	ld a, [hl]
-	dec a
-	ld c, a
-	ld b, $0
-	pop af
-	ld [rSVBK], a
-	ld hl, .Sprites
-	add hl, bc
-	ld a, [hl]
-	ld [wBTTempOTSprite], a
-
-; Load sprite of the opponent trainer
-; because s/he is chosen randomly and appears out of nowhere
-	ld a, [ScriptVar]
-	dec a
-	sla a
-	ld e, a
-	sla a
-	sla a
-	sla a
-	ld c, a
-	ld b, 0
-	ld d, 0
-	ld hl, MapObjects
-	add hl, bc
-	inc hl
-	ld a, [wBTTempOTSprite]
-	ld [hl], a
-	ld hl, UsedSprites
-	add hl, de
-	ld [hli], a
-	ld [hUsedSpriteIndex], a
-	ld a, [hl]
-	ld [hUsedSpriteTile], a
-	farcall GetUsedSprite
-	ret
-; 170b90
-
-.Sprites:
-	db SPRITE_FALKNER
-	db SPRITE_WHITNEY
-	db SPRITE_BUGSY
-	db SPRITE_MORTY
-	db SPRITE_PRYCE
-	db SPRITE_JASMINE
-	db SPRITE_CHUCK
-	db SPRITE_CLAIR
-	db SPRITE_SILVER
-	db SPRITE_OAK
-	db SPRITE_WILL
-	db SPRITE_CHRIS
-	db SPRITE_BRUNO
-	db SPRITE_KAREN
-	db SPRITE_KOGA
-	db SPRITE_LANCE
-	db SPRITE_BROCK
-	db SPRITE_MISTY
-	db SPRITE_SURGE
-	db SPRITE_SCIENTIST
-	db SPRITE_ERIKA
-	db SPRITE_YOUNGSTER
-	db SPRITE_YOUNGSTER
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_JANINE
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_BUENA
-	db SPRITE_SUPER_NERD
-	db SPRITE_ROCKET
-	db SPRITE_GENTLEMAN
-	db SPRITE_BUENA
-	db SPRITE_TEACHER
-	db SPRITE_SABRINA
-	db SPRITE_BUG_CATCHER
-	db SPRITE_FISHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SAILOR
-	db SPRITE_SUPER_NERD
-	db SPRITE_BLUE
-	db SPRITE_ROCKER
-	db SPRITE_POKEFAN_M
-	db SPRITE_BIKER
-	db SPRITE_BLAINE
-	db SPRITE_PHARMACIST
-	db SPRITE_FISHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BLACK_BELT
-	db SPRITE_ROCKET
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_YOUNGSTER
-	db SPRITE_ROCKET_GIRL
-	db SPRITE_SAGE
-	db SPRITE_GRANNY
-	db SPRITE_ROCKER
-	db SPRITE_POKEFAN_M
-	db SPRITE_KIMONO_GIRL
-	db SPRITE_TWIN
-	db SPRITE_POKEFAN_F
-	db SPRITE_RED
-	db SPRITE_BLUE
-	db SPRITE_OFFICER
-	db SPRITE_ROCKET_GIRL
-
-ret_170bd2: ; 170bd2
-	ret
-; 170bd3
-
-SpecialCheckForBattleTowerRules: ; 170bd3
-	farcall CheckForBattleTowerRules
-	jr c, .asm_170bde
-	xor a
-	jr .asm_170be0
-
-.asm_170bde
-	ld a, $1
-
-.asm_170be0
-	ld [ScriptVar], a
-	ret
-; 170be4
--- a/mobile/fixed_words.asm
+++ b/mobile/fixed_words.asm
@@ -33,8 +33,7 @@
 	ret
 ; 11c082
 
-Function11c082: ; 11c082
-; XXX
+Unreferenced_Function11c082: ; 11c082
 	push de
 	ld a, c
 	call Function11c254
@@ -271,11 +270,11 @@
 	ld [wd265], a
 	call GetPokemonName
 	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH - 1
+	ld bc, MON_NAME_LENGTH - 1
 	jr .copy_string
 ; 11c1ab
 
-Function11c1ab: ; 11c1ab
+Special_Function11c1ab: ; 11c1ab
 	ld a, [hInMenu]
 	push af
 	ld a, $1
@@ -370,7 +369,7 @@
 ; 11c277
 
 EZChat_ClearBottom12Rows: ; 11c277 (47:4277)
-	ld a, " "
+	ld a, " "
 	hlcoord 0, 6
 	ld bc, (SCREEN_HEIGHT - 6) * SCREEN_WIDTH
 	call ByteFill
@@ -426,11 +425,11 @@
 
 .SpawnObjects: ; 11c2e9 (47:42e9)
 	depixel 3, 1, 2, 5
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	depixel 8, 1, 2, 5
 
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -438,7 +437,7 @@
 	ld [hl], a
 
 	depixel 9, 2, 2, 0
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -446,7 +445,7 @@
 	ld [hl], a
 
 	depixel 10, 16
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -454,7 +453,7 @@
 	ld [hl], a
 
 	depixel 10, 4
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -462,7 +461,7 @@
 	ld [hl], a
 
 	depixel 10, 2
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -724,15 +723,15 @@
 ; 11c4db (47:44db)
 
 String_11c4db: ; 11c4db
-	db   "6つのことば¯くみあわせます"
-	next "かえたいところ¯えらぶと でてくる"
-	next "ことばのグループから いれかえたい"
+	db   "6つのことば¯くみあわせます"
+	next "かえたいところ¯えらぶと でてくる"
+	next "ことばのグループから いれかえたい"
 	next "たんご¯えらんでください"
 	db   "@"
 ; 11c51b
 
 String_11c51b: ; 11c51b
-	db "ぜんぶけす やめる   けってい@"
+	db "ぜんぶけす やめる   けってい@"
 ; 11c52c
 
 Function11c52c: ; 11c52c (47:452c)
@@ -923,7 +922,7 @@
 ; 11c62a (47:462a)
 
 EZChatString_Stop_Mode_Cancel: ; 11c62a
-	db "けす    モード   やめる@"
+	db "けす    モード   やめる@"
 ; 11c63a
 
 Coords_11c63a: ; 11c63a
@@ -1375,10 +1374,10 @@
 	farcall Function11a80c
 	pop hl
 	ld a, [wcd63]
-	add "0"
+	add "0"
 	ld [hli], a
 	ld a, [wcd62]
-	add "0"
+	add "0"
 	ld [hli], a
 	ret
 ; 11c8ec
@@ -1625,8 +1624,8 @@
 ; 11ca38 (47:4a38)
 
 String_11ca38: ; 11ca38
-	db   "とうろくちゅう", $25, "あいさつ¯ぜんぶ"
-	next "けしても よろしいですか?@"
+	db   "とうろくちゅう<NO>あいさつ¯ぜんぶ"
+	next "けしても よろしいですか?@"
 ; 11ca57
 
 String_11ca57: ; 11ca57
@@ -1754,13 +1753,13 @@
 ; 11cb1c (47:4b1c)
 
 String_11cb1c: ; 11cb1c
-	db   "あいさつ", $25, "とうろく¯ちゅうし"
-	next "しますか?@"
+	db   "あいさつ<NO>とうろく¯ちゅうし"
+	next "しますか?@"
 ; 11cb31
 
 String_11cb31: ; 11cb31
-	db   "とうろくちゅう", $25, "あいさつ", $24, "ほぞん"
-	next "されません", $4a, "よろしい ですか?@"
+	db   "とうろくちゅう<NO>あいさつ<WA>ほぞん"
+	next "されません<GA>よろしい ですか?@"
 ; 11cb52
 
 Function11cb52: ; 11cb52 (47:4b52)
@@ -1890,20 +1889,20 @@
 	dw String_11cc60
 
 String_11cc09: ; 11cc09
-	db   "じこしょうかい は"
-	next "この あいさつで いいですか?@"
+	db   "じこしょうかい は"
+	next "この あいさつで いいですか?@"
 
 String_11cc23: ; 11cc23
-	db   "たいせん ", $4a, "はじまるとき は"
-	next "この あいさつで いいですか?@"
+	db   "たいせん <GA>はじまるとき は"
+	next "この あいさつで いいですか?@"
 
 String_11cc42: ; 11cc42
-	db   "たいせん ", $1d, "かったとき は"
-	next "この あいさつで いいですか?@"
+	db   "たいせん <NI>かったとき は"
+	next "この あいさつで いいですか?@"
 
 String_11cc60: ; 11cc60
-	db   "たいせん ", $1d, "まけたとき は"
-	next "この あいさつで いいですか?@"
+	db   "たいせん <NI>まけたとき は"
+	next "この あいさつで いいですか?@"
 ; 11cc7e
 
 Unknown_11cc7e: ; 11cc7e
@@ -1913,20 +1912,20 @@
 	dw String_11ccd4
 
 String_11cc86: ; 11cc86
-	db   "じこしょうかい の"
-	next "あいさつ¯とうろくした!@"
+	db   "じこしょうかい の"
+	next "あいさつ¯とうろくした!@"
 
 String_11cc9d: ; 11cc9d
-	db   "たいせん ", $4a, "はじまるとき の"
-	next "あいさつ¯とうろくした!@"
+	db   "たいせん <GA>はじまるとき の"
+	next "あいさつ¯とうろくした!@"
 
 String_11ccb9: ; 11ccb9
-	db   "たいせん ", $1d, "かったとき の"
-	next "あいさつ¯とうろくした!@"
+	db   "たいせん <NI>かったとき の"
+	next "あいさつ¯とうろくした!@"
 
 String_11ccd4: ; 11ccd4
-	db   "たいせん ", $1d, "まけたとき の"
-	next "あいさつ¯とうろくした!@"
+	db   "たいせん <NI>まけたとき の"
+	next "あいさつ¯とうろくした!@"
 ; 11ccef
 
 Function11ccef: ; 11ccef (47:4cef)
@@ -1949,7 +1948,7 @@
 ; 11cd10 (47:4d10)
 
 String_11cd10: ; 11cd10
-	db "なにか ことば¯いれてください@"
+	db "なにか ことば¯いれてください@"
 ; 11cd20
 
 Function11cd20: ; 11cd20 (47:4d20)
@@ -2055,13 +2054,13 @@
 
 String_11cdd9: ; 11cdd9
 ; Words will be displayed in alphabetical order
-	db   "ことば¯アイウエォ の"
-	next "じゅんばんで ひょうじ します@"
+	db   "ことば¯アイウエオ の"
+	next "じゅんばんで ひょうじ します@"
 ; 11cdf5
 
 String_11cdf5: ; 11cdf5
-	db   "しゅるいべつ モード"  ; Category mode
-	next "アイウエォ  モード@" ; ABC mode
+	db   "しゅるいべつ モード"  ; Category mode
+	next "アイウエオ  モード@" ; ABC mode
 ; 11ce0b
 
 Function11ce0b: ; 11ce0b (47:4e0b)
@@ -2277,10 +2276,10 @@
 
 String_11cf79: ; 11cf79
 ; Hiragana table
-	db   "あいうえお なにぬねの や ゆ よ"
-	next "かきくけこ はひふへほ わ"
-	next "さしすせそ まみむめも そのた"
-	next "たちつてと らりるれろ"
+	db   "あいうえお なにぬねの や ゆ よ"
+	next "かきくけこ はひふへほ わ"
+	next "さしすせそ まみむめも そのた"
+	next "たちつてと らりるれろ"
 	db   "@"
 ; 11cfb5
 
@@ -2561,7 +2560,7 @@
 	jr .load
 
 .three ; 11d10f (47:510f)
-	ld a, SPRITE_ANIM_FRAMESET_27
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2
 	call ReinitSpriteAnimFrame
 	ld a, [wMobileCommsJumptableIndex]
 	sla a
@@ -2587,7 +2586,7 @@
 	ret
 
 .four ; 11d134 (47:5134)
-	ld a, SPRITE_ANIM_FRAMESET_27
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2
 	call ReinitSpriteAnimFrame
 	ld a, [wcd2a]
 	sla a
@@ -2596,7 +2595,7 @@
 	jr .load
 
 .five ; 11d145 (47:5145)
-	ld a, SPRITE_ANIM_FRAMESET_27
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2
 	call ReinitSpriteAnimFrame
 	ld a, [wcd2c]
 	sla a
@@ -2605,7 +2604,7 @@
 	jr .load
 
 .six ; 11d156 (47:5156)
-	ld a, SPRITE_ANIM_FRAMESET_2A
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_5
 	call ReinitSpriteAnimFrame
 	; X = [wcd4a] * 8 + 24
 	ld a, [wcd4a]
@@ -2628,12 +2627,12 @@
 .seven ; 11d175 (47:5175)
 	ld a, [wEZChatCursorYCoord]
 	cp $4
-	jr z, .frameset_26
-	ld a, SPRITE_ANIM_FRAMESET_28
+	jr z, .cursor0
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3
 	jr .got_frameset
 
-.frameset_26
-	ld a, SPRITE_ANIM_FRAMESET_26
+.cursor0
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1
 .got_frameset
 	call ReinitSpriteAnimFrame
 	ld a, [wEZChatCursorYCoord]
@@ -2685,12 +2684,12 @@
 
 .nine ; 11d1d1 (47:51d1)
 	ld d, -13 * 8
-	ld a, SPRITE_ANIM_FRAMESET_2C
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_7
 	jr .eight_nine_load
 
 .eight ; 11d1d7 (47:51d7)
 	ld d, 2 * 8
-	ld a, SPRITE_ANIM_FRAMESET_2B
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_6
 .eight_nine_load ; 11d1db (47:51db)
 	push de
 	call ReinitSpriteAnimFrame
@@ -2713,7 +2712,7 @@
 	ret
 
 .ten ; 11d1fc (47:51fc)
-	ld a, SPRITE_ANIM_FRAMESET_26
+	ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1
 	call ReinitSpriteAnimFrame
 	ld a, $8
 	ld e, a
@@ -2825,54 +2824,54 @@
 	dbpixel  4, 12
 
 .FramesetsIDs_Two: ; 11d2be
-	db SPRITE_ANIM_FRAMESET_28 ; 00
-	db SPRITE_ANIM_FRAMESET_28 ; 01
-	db SPRITE_ANIM_FRAMESET_28 ; 02
-	db SPRITE_ANIM_FRAMESET_28 ; 03
-	db SPRITE_ANIM_FRAMESET_28 ; 04
-	db SPRITE_ANIM_FRAMESET_28 ; 05
-	db SPRITE_ANIM_FRAMESET_28 ; 06
-	db SPRITE_ANIM_FRAMESET_28 ; 07
-	db SPRITE_ANIM_FRAMESET_28 ; 08
-	db SPRITE_ANIM_FRAMESET_28 ; 09
-	db SPRITE_ANIM_FRAMESET_28 ; 0a
-	db SPRITE_ANIM_FRAMESET_28 ; 0b
-	db SPRITE_ANIM_FRAMESET_28 ; 0c
-	db SPRITE_ANIM_FRAMESET_28 ; 0d
-	db SPRITE_ANIM_FRAMESET_28 ; 0e
-	db SPRITE_ANIM_FRAMESET_28 ; 0f
-	db SPRITE_ANIM_FRAMESET_28 ; 10
-	db SPRITE_ANIM_FRAMESET_28 ; 11
-	db SPRITE_ANIM_FRAMESET_28 ; 12
-	db SPRITE_ANIM_FRAMESET_28 ; 13
-	db SPRITE_ANIM_FRAMESET_28 ; 14
-	db SPRITE_ANIM_FRAMESET_28 ; 15
-	db SPRITE_ANIM_FRAMESET_28 ; 16
-	db SPRITE_ANIM_FRAMESET_28 ; 17
-	db SPRITE_ANIM_FRAMESET_28 ; 18
-	db SPRITE_ANIM_FRAMESET_28 ; 19
-	db SPRITE_ANIM_FRAMESET_28 ; 1a
-	db SPRITE_ANIM_FRAMESET_28 ; 1b
-	db SPRITE_ANIM_FRAMESET_28 ; 1c
-	db SPRITE_ANIM_FRAMESET_28 ; 1d
-	db SPRITE_ANIM_FRAMESET_28 ; 1e
-	db SPRITE_ANIM_FRAMESET_28 ; 1f
-	db SPRITE_ANIM_FRAMESET_28 ; 20
-	db SPRITE_ANIM_FRAMESET_28 ; 21
-	db SPRITE_ANIM_FRAMESET_28 ; 22
-	db SPRITE_ANIM_FRAMESET_28 ; 23
-	db SPRITE_ANIM_FRAMESET_28 ; 24
-	db SPRITE_ANIM_FRAMESET_28 ; 25
-	db SPRITE_ANIM_FRAMESET_28 ; 26
-	db SPRITE_ANIM_FRAMESET_28 ; 27
-	db SPRITE_ANIM_FRAMESET_28 ; 28
-	db SPRITE_ANIM_FRAMESET_28 ; 29
-	db SPRITE_ANIM_FRAMESET_28 ; 2a
-	db SPRITE_ANIM_FRAMESET_28 ; 2b
-	db SPRITE_ANIM_FRAMESET_29 ; 2c
-	db SPRITE_ANIM_FRAMESET_26 ; 2d
-	db SPRITE_ANIM_FRAMESET_26 ; 2e
-	db SPRITE_ANIM_FRAMESET_26 ; 2f
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 00
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 01
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 02
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 03
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 04
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 05
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 06
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 07
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 08
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 09
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0a
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0b
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0c
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0d
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0e
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0f
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 10
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 11
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 12
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 13
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 14
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 15
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 16
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 17
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 18
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 19
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1a
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1b
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1c
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1d
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1e
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1f
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 20
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 21
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 22
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 23
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 24
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 25
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 26
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 27
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 28
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 29
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 2a
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 2b
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_4 ; 2c
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 ; 2d
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 ; 2e
+	db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 ; 2f
 
 .UpdateObjectFlags: ; 11d2ee (47:52ee)
 	ld hl, wcd24
@@ -3022,9 +3021,9 @@
 	ld [wcd2e], a
 	ld [hl], a
 
-	ld a, LOW(SortedPokemon)
+	ld a, LOW(EZChat_SortedPokemon)
 	ld [wcd2f], a
-	ld a, HIGH(SortedPokemon)
+	ld a, HIGH(EZChat_SortedPokemon)
 	ld [wcd30], a
 
 	ld a, LOW($c6a8)
@@ -3093,7 +3092,7 @@
 	or b
 	jr nz, .loop1
 
-; recover the pointer from wcd2f (default: SortedPokemon)
+; recover the pointer from wcd2f (default: EZChat_SortedPokemon)
 	ld a, [wcd2f]
 	ld l, a
 	ld a, [wcd30]
@@ -3292,102 +3291,8 @@
 	ret
 ; 11d4fe
 
-SortedPokemon:
-; Pokemon sorted by kana.
-; Notably, Rhydon is missing.
-	dw .a
-	dw .i
-	dw .u
-	dw .e
-	dw .o
-	dw .ka_ga
-	dw .ki_gi
-	dw .ku_gu
-	dw .ke_ge
-	dw .ko_go
-	dw .sa_za
-	dw .shi_ji
-	dw .su_zu
-	dw .se_ze
-	dw .so_zo
-	dw .ta_da
-	dw .chi_dhi
-	dw .tsu_du
-	dw .te_de
-	dw .to_do
-	dw .na
-	dw .ni
-	dw .nu
-	dw .ne
-	dw .no
-	dw .ha_ba_pa
-	dw .hi_bi_pi
-	dw .fu_bu_pu
-	dw .he_be_pe
-	dw .ho_bo_po
-	dw .ma
-	dw .mi
-	dw .mu
-	dw .me
-	dw .mo
-	dw .ya
-	dw .yu
-	dw .yo
-	dw .ra
-	dw .ri
-	dw .ru
-	dw .re
-	dw .ro
-	dw .wa
-	dw .end
+INCLUDE "data/pokemon/ezchat_order.asm"
 
-.a:		db EKANS, ARBOK, SEAKING, ARIADOS, CROCONAW, UNOWN, -1
-.i:		db EEVEE, GEODUDE, SPINARAK, PILOSWINE, ONIX, -1
-.u:		db ARCANINE, SUDOWOODO, WEEPINBELL, VICTREEBEL, WOOPER, SWINUB, -1
-.e:		db SKARMORY, AIPOM, ESPEON, HITMONCHAN, ELEKID, ELECTABUZZ, ENTEI, -1
-.o:		db FERALIGATR, FURRET, OCTILLERY, PRIMEAPE, SENTRET, STANTLER, SPEAROW, FEAROW, OMASTAR, OMANYTE, -1
-.ka_ga		db GROWLITHE, MACHAMP, DRAGONITE, PINSIR, SNORLAX, KABUTO, KABUTOPS, HITMONTOP, WARTORTLE, BLASTOISE, FARFETCH_D, CUBONE, MAROWAK, KANGASKHAN, -1
-.ki_gi		db SUNFLORA, CATERPIE, GYARADOS, RAPIDASH, NINETALES, GIRAFARIG, BELLOSSOM, KINGDRA, KINGLER, -1
-.ku_gu		db GLOOM, PINECO, GLIGAR, KRABBY, GRANBULL, CROBAT, -1
-.ke_ge		db ABRA, GENGAR, TAUROS, -1
-.ko_go		db MAGIKARP, MAGNEMITE, GASTLY, HAUNTER, MACHOKE, KAKUNA, PSYDUCK, PHANPY, RATTATA, GOLDUCK, GOLBAT, GOLEM, GRAVELER, VENONAT, -1
-.sa_za		db RHYHORN, PUPITAR, CORSOLA, HITMONLEE, ZAPDOS, JOLTEON, SANDSHREW, SANDSLASH, -1 ; RHYDON should lead this list
-.shi_ji		db SEADRA, SHELLDER, VAPOREON, DEWGONG, -1
-.su_zu		db SUICUNE, STARMIE, SCYTHER, ZUBAT, BEEDRILL, HYPNO, DROWZEE, -1
-.se_ze		db SQUIRTLE, CELEBI, -1
-.so_zo		db WOBBUFFET, -1
-.ta_da		db DUGTRIO, HORSEA, EXEGGCUTE, -1
-.chi_dhi	db CHIKORITA, CHINCHOU, -1
-.tsu_du		db SHUCKLE, -1
-.te_de		db DIGLETT, REMORAID, DELIBIRD, HOUNDOUR, AMPHAROS, -1
-.to_do		db DODUO, DODRIO, SMEARGLE, KOFFING, TENTACRUEL, TOGETIC, TOGEPI, GOLDEEN, METAPOD, DONPHAN, -1
-.na		db ODDISH, EXEGGUTOR, -1
-.ni		db NIDOKING, NIDOQUEEN, NIDORAN_M, NIDORAN_F, NIDORINA, NIDORINO, MEOWTH, SNEASEL, POLIWHIRL, POLITOED, POLIWRATH, POLIWAG, -1
-.nu		db QUAGSIRE, -1
-.ne		db NATU, XATU, -1
-.no		db DUNSPARCE, -1
-.ha_ba_pa	db SEEL, STEELIX, TYPHLOSION, DRAGONAIR, BUTTERFREE, SCIZOR, HOPPIP, BLISSEY, PARAS, PARASECT, QWILFISH, MR__MIME, TYROGUE, CLOYSTER, TYRANITAR, -1
-.hi_bi_pi	db CLEFFA, WEEDLE, PIKACHU, CLEFABLE, PIDGEOT, PIDGEOTTO, PICHU, CLEFAIRY, CHARMANDER, STARYU, CYNDAQUIL, SUNKERN, TEDDIURSA, VOLTORB, -1
-.fu_bu_pu	db MOLTRES, FLAREON, ALAKAZAM, MAGMAR, FORRETRESS, WIGGLYTUFF, IVYSAUR, BULBASAUR, VENUSAUR, AERODACTYL, MAGBY, IGGLYBUFF, UMBREON, ARTICUNO, JIGGLYPUFF, SNUBBULL, -1
-.he_be_pe	db BAYLEEF, GRIMER, MUK, HERACROSS, HOUNDOOM, PERSIAN, LICKITUNG, -1
-.ho_bo_po	db HO_OH, HOOTHOOT, PIDGEY, PONYTA, SKIPLOOM, PORYGON, PORYGON2, -1
-.ma		db MAGCARGO, SLUGMA, QUILAVA, BELLSPROUT, WEEZING, MARILL, AZUMARILL, ELECTRODE, MANKEY, MANTINE, -1
-.mi		db DRATINI, MEW, MEWTWO, MILTANK, -1
-.mu		db MISDREAVUS, SMOOCHUM, -1
-.me		db MEGANIUM, DITTO, TENTACOOL, MAREEP, -1
-.mo		db FLAAFFY, VENOMOTH, TANGELA, -1
-.ya		db SLOWKING, SLOWBRO, SLOWPOKE, MURKROW, YANMA, -1
-.yu		db KADABRA, -1
-.yo		db LARVITAR, NOCTOWL, -1
-.ra		db RAIKOU, RAICHU, CHANSEY, RATICATE, LAPRAS, VILEPLUME, LANTURN, -1
-.ri		db CHARMELEON, CHARIZARD, URSARING, -1
-.ru		db JYNX, LUGIA, -1
-.re		db MAGNETON, LEDIAN, LEDYBA, -1
-.ro		db VULPIX, -1
-.wa		db JUMPLUFF, TOTODILE, MACHOP;, -1
-.end		db -1
-; 11d67e
-
 GFX_11d67e:
 INCBIN "gfx/pokedex/select_start.2bpp"
 ; 11d6de
@@ -3455,9 +3360,9 @@
 .Greetings: ; 11db58
 	db "ありがと@", $58, $0, $0
 	db "ありがとう", $5a, $0, $0
-	db "いくぜ!@", $80, $0, $0
-	db "いくよ!@", $82, $0, $0
-	db "いくわよ!", $84, $0, $0
+	db "いくぜ!@", $80, $0, $0
+	db "いくよ!@", $82, $0, $0
+	db "いくわよ!", $84, $0, $0
 	db "いやー@@", $a6, $0, $0
 	db "おっす@@", $a, $1, $0
 	db "おはつです", $22, $1, $0
@@ -3465,7 +3370,7 @@
 	db "ごめん@@", $f8, $1, $0
 	db "ごめんよ@", $fa, $1, $0
 	db "こらっ@@", $fc, $1, $0
-	db "こんちは!", $a, $2, $0
+	db "こんちは!", $a, $2, $0
 	db "こんにちは", $10, $2, $0
 	db "さようなら", $28, $2, $0
 	db "サンキュー", $2e, $2, $0
@@ -3563,7 +3468,7 @@
 
 .Battle: ; 11dea0
 	db "あいしょう", $18, $0, $0
-	db "いけ!@@", $88, $0, $0
+	db "いけ!@@", $88, $0, $0
 	db "いちばん@", $96, $0, $0
 	db "かくご@@", $4c, $1, $0
 	db "かたせて@", $54, $1, $0
@@ -3579,7 +3484,7 @@
 	db "きめた@@", $a8, $1, $0
 	db "きりふだ@", $b6, $1, $0
 	db "くらえ@@", $c2, $1, $0
-	db "こい!@@", $da, $1, $0
+	db "こい!@@", $da, $1, $0
 	db "こうげき@", $e0, $1, $0
 	db "こうさん@", $e2, $1, $0
 	db "こんじょう", $8, $2, $0
@@ -3612,7 +3517,7 @@
 	db "ポイント@", $94, $4, $0
 	db "ポケモン@", $ac, $4, $0
 	db "ほんき@@", $bc, $4, $0
-	db "まいった!", $c4, $4, $0
+	db "まいった!", $c4, $4, $0
 	db "まけ@@@", $c8, $4, $0
 	db "まけたら@", $ca, $4, $0
 	db "まけて@@", $cc, $4, $0
@@ -3622,7 +3527,7 @@
 	db "みとめない", $fe, $4, $0
 	db "みとめる@", $0, $5, $0
 	db "むてき@@", $16, $5, $0
-	db "もらった!", $3c, $5, $0
+	db "もらった!", $3c, $5, $0
 	db "よゆう@@", $7a, $5, $0
 	db "よわい@@", $82, $5, $0
 	db "よわすぎ@", $84, $5, $0
@@ -3633,13 +3538,13 @@
 	db "わざ@@@", $be, $5, $0
 
 .Exclamations: ; 11e0c8
-	db "!@@@@", $0, $0, $0
-	db "!!@@@", $2, $0, $0
-	db "!?@@@", $4, $0, $0
-	db "?@@@@", $6, $0, $0
-	db "…@@@@", $8, $0, $0
-	db "…!@@@", $a, $0, $0
-	db "………@@", $c, $0, $0
+	db "!@@@@", $0, $0, $0
+	db "!!@@@", $2, $0, $0
+	db "!?@@@", $4, $0, $0
+	db "?@@@@", $6, $0, $0
+	db "⋯@@@@", $8, $0, $0
+	db "⋯!@@@", $a, $0, $0
+	db "⋯⋯⋯@@", $c, $0, $0
 	db "ー@@@@", $e, $0, $0
 	db "ーーー@@", $10, $0, $0
 	db "あーあ@@", $14, $0, $0
@@ -3650,7 +3555,7 @@
 	db "イエス@@", $74, $0, $0
 	db "うう@@@", $ac, $0, $0
 	db "うーん@@", $ae, $0, $0
-	db "うおー!@", $b0, $0, $0
+	db "うおー!@", $b0, $0, $0
 	db "うおりゃー", $b2, $0, $0
 	db "うひょー@", $bc, $0, $0
 	db "うふふ@@", $be, $0, $0
@@ -3687,18 +3592,18 @@
 	db "ほーほほほ", $9c, $4, $0
 	db "ほら@@@", $b6, $4, $0
 	db "まあ@@@", $c0, $4, $0
-	db "むきー!!", $10, $5, $0
+	db "むきー!!", $10, $5, $0
 	db "むふー@@", $18, $5, $0
 	db "むふふ@@", $1a, $5, $0
 	db "むむ@@@", $1c, $5, $0
 	db "よーし@@", $6a, $5, $0
-	db "よし!@@", $72, $5, $0
+	db "よし!@@", $72, $5, $0
 	db "ラララ@@", $98, $5, $0
 	db "わーい@@", $ac, $5, $0
-	db "わーん!!", $b0, $5, $0
-	db "ワォ@@@", $b2, $5, $0
-	db "わっ!!@", $ce, $5, $0
-	db "わははは!", $d0, $5, $0
+	db "わーん!!", $b0, $5, $0
+	db "ワオ@@@", $b2, $5, $0
+	db "わっ!!@", $ce, $5, $0
+	db "わははは!", $d0, $5, $0
 
 .Conversation: ; 11e2d8
 	db "あのね@@", $50, $0, $0
@@ -3778,7 +3683,7 @@
 	db "エキサイト", $d8, $0, $0
 	db "えらい@@", $de, $0, $0
 	db "おかしい@", $ec, $0, $0
-	db "ォッケー@", $8, $1, $0
+	db "オッケー@", $8, $1, $0
 	db "かえりたい", $48, $1, $0
 	db "がっくし@", $5a, $1, $0
 	db "かなしい@", $6c, $1, $0
@@ -3945,7 +3850,7 @@
 	db "もようがえ", $3a, $5, $0
 	db "ゆめ@@@", $5a, $5, $0
 	db "ようちえん", $66, $5, $0
-	db "ラジォ@@", $92, $5, $0
+	db "ラジオ@@", $92, $5, $0
 	db "ワールド@", $ae, $5, $0
 
 .Hobbies: ; 11ea58
@@ -4104,10 +4009,10 @@
 .Farewells: ; 11eef0
 	db "いたします", $92, $0, $0
 	db "おります@", $32, $1, $0
-	db "か!?@@", $3c, $1, $0
-	db "かい?@@", $44, $1, $0
-	db "かしら?@", $50, $1, $0
-	db "かな?@@", $6a, $1, $0
+	db "か!?@@", $3c, $1, $0
+	db "かい?@@", $44, $1, $0
+	db "かしら?@", $50, $1, $0
+	db "かな?@@", $6a, $1, $0
 	db "かも@@@", $76, $1, $0
 	db "くれ@@@", $ca, $1, $0
 	db "ございます", $e8, $1, $0
@@ -4116,8 +4021,8 @@
 	db "じゃ@@@", $6a, $2, $0
 	db "じゃん@@", $6e, $2, $0
 	db "しよう@@", $7c, $2, $0
-	db "ぜ!@@@", $ac, $2, $0
-	db "ぞ!@@@", $bc, $2, $0
+	db "ぜ!@@@", $ac, $2, $0
+	db "ぞ!@@@", $bc, $2, $0
 	db "た@@@@", $d4, $2, $0
 	db "だ@@@@", $d6, $2, $0
 	db "だからね@", $ee, $2, $0
@@ -4125,7 +4030,7 @@
 	db "だった@@", $fa, $2, $0
 	db "だね@@@", $fe, $2, $0
 	db "だよ@@@", $10, $3, $0
-	db "だよねー!", $12, $3, $0
+	db "だよねー!", $12, $3, $0
 	db "だわ@@@", $26, $3, $0
 	db "ッス@@@", $4c, $3, $0
 	db "ってかんじ", $52, $3, $0
@@ -4133,16 +4038,16 @@
 	db "つもり@@", $56, $3, $0
 	db "ていない@", $64, $3, $0
 	db "ている@@", $66, $3, $0
-	db "でーす!@", $68, $3, $0
+	db "でーす!@", $68, $3, $0
 	db "でした@@", $74, $3, $0
-	db "でしょ?@", $76, $3, $0
-	db "でしょー!", $78, $3, $0
+	db "でしょ?@", $76, $3, $0
+	db "でしょー!", $78, $3, $0
 	db "です@@@", $7a, $3, $0
-	db "ですか?@", $7c, $3, $0
+	db "ですか?@", $7c, $3, $0
 	db "ですよ@@", $80, $3, $0
 	db "ですわ@@", $82, $3, $0
-	db "どうなの?", $a4, $3, $0
-	db "どうよ?@", $a8, $3, $0
+	db "どうなの?", $a4, $3, $0
+	db "どうよ?@", $a8, $3, $0
 	db "とかいって", $aa, $3, $0
 	db "なの@@@", $e0, $3, $0
 	db "なのか@@", $e2, $3, $0
@@ -4154,20 +4059,20 @@
 	db "ね@@@@", $12, $4, $0
 	db "ねー@@@", $14, $4, $0
 	db "の@@@@", $1c, $4, $0
-	db "の?@@@", $1e, $4, $0
+	db "の?@@@", $1e, $4, $0
 	db "ばっかり@", $44, $4, $0
-	db "まーす!@", $c2, $4, $0
+	db "まーす!@", $c2, $4, $0
 	db "ます@@@", $d8, $4, $0
 	db "ますわ@@", $da, $4, $0
 	db "ません@@", $dc, $4, $0
 	db "みたいな@", $fa, $4, $0
-	db "よ!@@@", $60, $5, $0
+	db "よ!@@@", $60, $5, $0
 	db "よー@@@", $68, $5, $0
 	db "よーん@@", $6c, $5, $0
 	db "よね@@@", $78, $5, $0
 	db "るよ@@@", $a2, $5, $0
 	db "わけ@@@", $bc, $5, $0
-	db "わよ!@@", $d2, $5, $0
+	db "わよ!@@", $d2, $5, $0
 
 .ThisAndThat: ; 11f100
 	db "ああ@@@", $12, $0, $0
@@ -4182,7 +4087,7 @@
 	db "この@@@", $f2, $1, $0
 	db "こりゃ@@", $fe, $1, $0
 	db "これ@@@", $0, $2, $0
-	db "これだ!@", $2, $2, $0
+	db "これだ!@", $2, $2, $0
 	db "これは@@", $4, $2, $0
 	db "こんな@@", $e, $2, $0
 	db "そう@@@", $be, $2, $0
@@ -4190,7 +4095,7 @@
 	db "その@@@", $c2, $2, $0
 	db "そりゃ@@", $c6, $2, $0
 	db "それ@@@", $c8, $2, $0
-	db "それだ!@", $cc, $2, $0
+	db "それだ!@", $cc, $2, $0
 	db "それは@@", $d0, $2, $0
 	db "そんな@@", $d2, $2, $0
 	db "どう@@@", $98, $3, $0
--- a/mobile/get_trainer_class.asm
+++ /dev/null
@@ -1,46 +1,0 @@
-GetMobileOTTrainerClass: ; mobile function
-	ld h, b
-	ld l, c
-	call .GetMobileOTTrainerClass
-	ld c, a
-	ret
-
-.GetMobileOTTrainerClass: ; 4e930
-	ld a, [hli]
-	xor [hl]
-	ld c, a
-	jr z, .skip_male_trainers
-	srl c
-	srl c
-.male_trainer_loop
-	srl c
-	ld a, c
-	cp MaleTrainersEnd - MaleTrainers - 1
-	jr nc, .male_trainer_loop
-	inc c
-
-.skip_male_trainers
-	ld a, [de]
-	cp $1
-	ld hl, MaleTrainers
-	jr nz, .finished
-
-	ld hl, FemaleTrainers
-	ld a, c
-	and a
-	jr z, .finished
-
-.female_trainer_loop
-	srl c
-	ld a, c
-	cp FemaleTrainersEnd - FemaleTrainers - 1
-	jr nc, .female_trainer_loop
-	inc c
-
-.finished
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ret
-
-INCLUDE "data/trainers/gendered_trainers.asm"
--- a/mobile/mobile_12.asm
+++ b/mobile/mobile_12.asm
@@ -563,15 +563,14 @@
 ; 484f1
 
 MenuDataHeader_0x484f1: ; 0x484f1
-	db $40 ; flags
-	db 02, 11 ; start coords
-	db 07, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 2, SCREEN_WIDTH - 1, 7
 	dw MenuData2_0x484f9
 	db 1 ; default option
 ; 0x484f9
 
 MenuData2_0x484f9: ; 0x484f9
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 2 ; items
 Strings_484fb:
 String_484fb: db "Boy@"
@@ -579,30 +578,26 @@
 ; 0x48504
 
 MenuDataHeader_0x48504: ; 0x48504
-	db $40 ; flags
-	db 00, 10 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 
 MenuDataHeader_0x48509: ; 0x48509
-	db $40 ; flags
-	db 05, 10 ; start coords
-	db 07, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 5, SCREEN_WIDTH - 1, 7
 
 MenuDataHeader_0x4850e: ; 0x4850e
-	db $40 ; flags
-	db 09, 10 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 
 MenuDataHeader_0x48513: ; 0x48513
-	db $40 ; flags
-	db 01, 11 ; start coords
-	db 12, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 1, 18, 12
 	dw MenuData2_0x4851b
 	db 1 ; default option
 ; 0x4851b
 
 MenuData2_0x4851b: ; 0x4851b
-	db $1d ; flags
+	db SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_RIGHT | SCROLLINGMENU_ENABLE_LEFT | SCROLLINGMENU_CALL_FUNCTION1_CANCEL ; flags
 	db 6 ; items
 
 Unknown_4851d: ; 4851d
@@ -728,7 +723,7 @@
 .got_num_rows_2
 	ld a, 1
 	ld [hli], a ; num cols
-	ld [hl], $0 ; flags 1
+	ld [hl], 0 ; flags 1
 	set 5, [hl]
 	inc hl
 	xor a
@@ -794,7 +789,7 @@
 	ld [hli], a ; num rows
 	ld a, 1
 	ld [hli], a ; num cols
-	ld [hl], $0 ; flags 1
+	ld [hl], 0 ; flags 1
 	set 5, [hl]
 	inc hl
 	xor a
@@ -1277,9 +1272,8 @@
 ; 48a9c (12:4a9c)
 
 MenuDataHeader_0x48a9c: ; 0x48a9c
-	db $40 ; flags
-	db 08, 10 ; start coords
-	db 13, 19 ; end coord
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 8, SCREEN_WIDTH - 1, 13
 
 String_48aa1: ; 48aa1
 	db   "Tell Now"
@@ -1621,9 +1615,8 @@
 	ret
 ; 48c8e
 
-Function48c8e: ; 48c8e
-; unreferenced
-	ld hl, $d02a
+Unreferenced_Function48c8e: ; 48c8e
+	ld hl, wd019 + $11
 	ld d, h
 	ld e, l
 	farcall Function48c63
--- a/mobile/mobile_12_2.asm
+++ b/mobile/mobile_12_2.asm
@@ -159,7 +159,7 @@
 	ret
 ; 4a927
 
-FindItemInPCOrBag: ; 4a927
+UnusedSpecial_FindItemInPCOrBag: ; 4a927
 	ld a, [ScriptVar]
 	ld [CurItem], a
 	ld hl, PCItems
@@ -715,9 +715,8 @@
 ; 4aca2
 
 MenuDataHeader_0x4aca2: ; 0x4aca2
-	db $40 ; flags
-	db 09, 11 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 9, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw NULL
 	db 1 ; default option
 ; 0x4acaa
--- a/mobile/mobile_22.asm
+++ b/mobile/mobile_22.asm
@@ -2,17 +2,17 @@
 	db "-----@"
 
 String_8911c: ; 8911c
-	db   "でんわばんごうが ただしく"   ; Phone number is not
-	next "はいって いません!@"         ; entered correctly!
+	db   "でんわばんごうが ただしく" ; Phone number is not
+	next "はいって いません!@"   ; entered correctly!
 ; 89135
 
 String_89135: ; 89135
-	db   "データが かわって いますが"  ; The data has changed.
-	next "かきかえないで やめますか?@" ; Quit anyway?
+	db   "データが かわって いますが"  ; The data has changed.
+	next "かきかえないで やめますか?@" ; Quit anyway?
 ; 89153
 
 String_89153: ; 89153
-	db   "メッセージは ありません@"    ; No message
+	db   "メッセージは ありません@"    ; No message
 ; 89160
 
 OpenSRAMBank4: ; 89160
@@ -277,15 +277,14 @@
 ; 892a3
 
 MenuDataHeader_0x892a3: ; 0x892a3
-	db $40 ; flags
-	db 05, 10 ; start coords
-	db 09, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 5, 15, 9
 	dw MenuData2_0x892ab
 	db 1 ; default option
 ; 0x892ab
 
 MenuData2_0x892ab: ; 0x892ab
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2 ; items
 	db "はい@"
 	db "いいえ@"
@@ -557,13 +556,13 @@
 
 Function8942b: ; 8942b (22:542b)
 	ld de, vTiles0 tile $02
-	ld hl, MobileAdapterGFX + $7d0
-	ld bc, $80
+	ld hl, MobileAdapterGFX + $7d tiles
+	ld bc, 8 tiles
 	ld a, BANK(MobileAdapterGFX)
 	call FarCopyBytes
 	ld de, vTiles0 tile $0a
-	ld hl, MobileAdapterGFX + $c60
-	ld bc, $40
+	ld hl, MobileAdapterGFX + $c6 tiles
+	ld bc, 4 tiles
 	ld a, BANK(MobileAdapterGFX)
 	call FarCopyBytes
 	ret
@@ -572,7 +571,7 @@
 ; Clears the Sprites array
 	push af
 	ld hl, Sprites
-	ld d, $10 * 6
+	ld d, 24 * SPRITEOAMSTRUCT_LENGTH
 	xor a
 .loop
 	ld [hli], a
@@ -582,9 +581,9 @@
 	ret
 
 Function89455: ; 89455 (22:5455)
-	ld hl, MobileAdapterGFX + $7d0
+	ld hl, MobileAdapterGFX + $7d tiles
 	ld de, vTiles2 tile $0c
-	ld bc, $490
+	ld bc, $49 tiles
 	ld a, BANK(MobileAdapterGFX)
 	call FarCopyBytes
 	ret
@@ -592,12 +591,12 @@
 Function89464: ; 89464
 	ld hl, MobileAdapterGFX
 	ld de, vTiles2
-	ld bc, $200
+	ld bc, $20 tiles
 	ld a, BANK(MobileAdapterGFX)
 	call FarCopyBytes
-	ld hl, MobileAdapterGFX + $660
+	ld hl, MobileAdapterGFX + $66 tiles
 	ld de, vTiles2 tile $20
-	ld bc, $170
+	ld bc, $17 tiles
 	ld a, BANK(MobileAdapterGFX)
 	call FarCopyBytes
 	ret
@@ -1268,15 +1267,15 @@
 
 
 Function89807: ; 89807 (22:5807)
-	ld hl, MobileAdapterGFX + $200
+	ld hl, MobileAdapterGFX + $20 tiles
 	ld a, [wPlayerGender]
 	bit 0, a
 	jr z, .asm_89814
-	ld hl, MobileAdapterGFX + $200 + $230
+	ld hl, MobileAdapterGFX + $43 tiles
 .asm_89814
 	call DisableLCD
 	ld de, vTiles2 tile $37
-	ld bc, $230
+	ld bc, $23 tiles
 	ld a, BANK(MobileAdapterGFX)
 	call FarCopyBytes
 	call EnableLCD
@@ -1556,7 +1555,7 @@
 ; 899ac (22:59ac)
 
 String_899ac: ; 899ac
-	db "の めいし@"
+	db "の めいし@"
 ; 899b2
 
 Function899b2: ; 899b2 (22:59b2)
@@ -1924,7 +1923,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, Sprites
+	ld de, Sprite01
 .asm_89bb4
 	ld a, [hli]
 	cp $ff
@@ -1934,19 +1933,19 @@
 .asm_89bbb
 	push hl
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; y
 	inc de
 	ld a, [hli]
 	add b
-	ld [de], a
+	ld [de], a ; x
 	inc de
-	ld a, $8
+	ld a, $08
 	add b
 	ld b, a
-	ld a, [hli]
+	ld a, [hli] ; tile id
 	ld [de], a
 	inc de
-	ld a, [hli]
+	ld a, [hli] ; attributes
 	ld [de], a
 	inc de
 	pop hl
@@ -1966,32 +1965,32 @@
 ; 89be0
 
 Unknown_89be0: ; 89be0
-	db $01, $12, $4e, $01, $00
-	db $01, $19, $4e, $01, $40
-	db $01, $12, $72, $01, $20
-	db $01, $19, $72, $01, $60
-	db $ff
+	db $01, $12, $4e, $01, 0
+	db $01, $19, $4e, $01, 0 | Y_FLIP
+	db $01, $12, $72, $01, 0 | X_FLIP
+	db $01, $19, $72, $01, 0 | X_FLIP | Y_FLIP
+	db -1 ; end
 
 Unknown_89bf5: ; 89bf5
-	db $01, $60, $16, $01, $00
-	db $01, $62, $16, $01, $40
-	db $01, $60, $92, $01, $20
-	db $01, $62, $92, $01, $60
-	db $ff
+	db $01, $60, $16, $01, 0
+	db $01, $62, $16, $01, 0 | Y_FLIP
+	db $01, $60, $92, $01, 0 | X_FLIP
+	db $01, $62, $92, $01, 0 | X_FLIP | Y_FLIP
+	db -1 ; end
 
 Unknown_89c0a: ; 89c0a
-	db $01, $78, $66, $01, $00
-	db $01, $78, $66, $01, $40
-	db $01, $78, $92, $01, $20
-	db $01, $78, $92, $01, $60
-	db $ff
+	db $01, $78, $66, $01, 0
+	db $01, $78, $66, $01, 0 | Y_FLIP
+	db $01, $78, $92, $01, 0 | X_FLIP
+	db $01, $78, $92, $01, 0 | X_FLIP | Y_FLIP
+	db -1 ; end
 
 Unknown_89c1f: ; 89c1f
-	db $01, $80, $66, $01, $00
-	db $01, $80, $66, $01, $40
-	db $01, $80, $92, $01, $20
-	db $01, $80, $92, $01, $60
-	db $ff
+	db $01, $80, $66, $01, 0
+	db $01, $80, $66, $01, 0 | Y_FLIP
+	db $01, $80, $92, $01, 0 | X_FLIP
+	db $01, $80, $92, $01, 0 | X_FLIP | Y_FLIP
+	db -1 ; end
 ; 89c34
 
 Function89c34: ; 89c34 (22:5c34)
@@ -2014,10 +2013,10 @@
 	pop de
 	ret
 .asm_89c4f
-	ld hl, Sprites
+	ld hl, Sprite01
 	push de
 	ld a, b
-	ld [hli], a
+	ld [hli], a ; y
 	ld d, $8
 	ld a, e
 	and a
@@ -2029,11 +2028,11 @@
 	jr nz, .asm_89c5c
 .asm_89c60
 	pop de
-	ld [hli], a
+	ld [hli], a ; x
 	ld a, d
-	ld [hli], a
+	ld [hli], a ; tile id
 	xor a
-	ld [hli], a
+	ld [hli], a ; attributes
 	ret
 
 Function89c67: ; 89c67 (22:5c67)
@@ -2124,7 +2123,7 @@
 	ld c, a
 	ld e, $2
 	ld a, $2
-	ld hl, Sprites
+	ld hl, Sprite01
 .asm_89cee
 	push af
 	push bc
@@ -2131,13 +2130,13 @@
 	ld d, $4
 .asm_89cf2
 	ld a, b
-	ld [hli], a
+	ld [hli], a ; y
 	ld a, c
-	ld [hli], a
+	ld [hli], a ; x
 	ld a, e
-	ld [hli], a
+	ld [hli], a ; tile id
 	ld a, $1
-	ld [hli], a
+	ld [hli], a ; attributes
 	ld a, $8
 	add c
 	ld c, a
@@ -2832,9 +2831,8 @@
 ; 8a176 (22:6176)
 
 MenuDataHeader_0x8a176: ; 0x8a176
-	db $40 ; flags
-	db 00, 14 ; start coords
-	db 06, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 0, SCREEN_WIDTH - 1, 6
 ; 8a17b
 
 Function8a17b: ; 8a17b (22:617b)
@@ -2855,15 +2853,14 @@
 ; 8a19a (22:619a)
 
 MenuDataHeader_0x8a19a: ; 0x8a19a
-	db $40 ; flags
-	db 00, 14 ; start coords
-	db 06, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 0, SCREEN_WIDTH - 1, 6
 	dw MenuData2_0x8a1a2
 	db 1 ; default option
 ; 0x8a1a2
 
 MenuData2_0x8a1a2: ; 0x8a1a2
-	db $e0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING | STATICMENU_WRAP ; flags
 	db 3 ; items
 	db "ひらく@"
 	db "すてる@"
@@ -2886,15 +2883,15 @@
 ; 8a1cc
 
 Strings_8a1cc: ; 8a1cc
-	db   "めいし", $25, "せいりと へんしゅうを"
+	db   "めいし<NO>せいりと へんしゅうを"
 	next "おこないます"
 	db   "@"
 
-	db   "めいしフ,ルダー", $25, "めいしと"
-	next "あんしょうばんごう", $1f, "けします"
+	db   "めいしフォルダー<NO>めいしと"
+	next "あんしょうばんごう<WO>けします"
 	db   "@"
 
-	db   "まえ", $25, "がめん", $1d, "もどります"
+	db   "まえ<NO>がめん<NI>もどります"
 	db   "@"
 ; 8a20d
 
@@ -3015,9 +3012,8 @@
 ; 8a2ef (22:62ef)
 
 MenuDataHeader_0x8a2ef: ; 0x8a2ef
-	db $40 ; flags
-	db 12, 00 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 ; 8a2f4
 
 UnknownText_0x8a2f4: ; 0x8a2f4
@@ -3177,35 +3173,33 @@
 Unknown_8a40b: db 1, 2, 3, -1
 
 MenuDataHeader_0x8a40f: ; 0x8a40f
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 11, 10 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 10, TEXTBOX_Y - 1
 	dw MenuData2_0x8a417
 	db 1 ; default option
 ; 0x8a417
 
 MenuData2_0x8a417: ; 0x8a417
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 4 ; items
 	db "めいしりスト@"
-	db "じぶんの めいし@"
+	db "じぶんの めいし@"
 	db "めいしこうかん@"
 	db "やめる@"
 ; 0x8a435
 
 MenuDataHeader_0x8a435: ; 0x8a435
-	db $40 ; flags
-	db 02, 00 ; start coords
-	db 09, 10 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 2, 10, 9
 	dw MenuData2_0x8a43d
 	db 1 ; default option
 ; 0x8a43d
 
 MenuData2_0x8a43d: ; 0x8a43d
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 3 ; items
 	db "めいしりスト@"
-	db "じぶんの めいし@"
+	db "じぶんの めいし@"
 	db "やめる@"
 ; 0x8a453
 
@@ -3229,18 +3223,18 @@
 ; 8a476 (22:6476)
 
 String_8a476: ; 8a476
-	db   "まえ", $25, "がめん", $1d, "もどります@"
+	db   "まえ<NO>がめん<NI>もどります@"
 ; 8a483
 
 Strings_8a483: ; 8a483
-	db   "おともだち", $25, "めいしは"
-	next "ここ", $1d, "いれておきます@"
+	db   "おともだち<NO>めいしは"
+	next "ここ<NI>いれておきます@"
 
-	db   "でんわばんごう", $1f, "いれると"
-	next "めいしこうかん", $4a, "できます@"
+	db   "でんわばんごう<WO>いれると"
+	next "めいしこうかん<GA>できます@"
 
-	db   "ともだちと じぶん", $25, "めいしを"
-	next "せきがいせんで こうかん します@"
+	db   "ともだちと じぶん<NO>めいしを"
+	next "せきがいせんで こうかん します@"
 ; 8a4d3
 
 Function8a4d3: ; 8a4d3 (22:64d3)
@@ -3301,7 +3295,7 @@
 	ld [hli], a
 	ld hl, Sprites
 	xor a
-	ld bc, $20
+	ld bc, 8 * SPRITEOAMSTRUCT_LENGTH
 	call ByteFill
 	ret
 
@@ -3752,7 +3746,7 @@
 ; 8a868 (22:6868)
 
 .string_8a868
-	db "めいし", $1f, "かきかえ まし", $22, "@"
+	db "めいし<WO>かきかえ まし<TA!>@"
 
 .asm_8a875
 	ld de, String_8a88b
@@ -3769,8 +3763,8 @@
 ; 8a88b (22:688b)
 
 String_8a88b: ; 8a88b
-	db   "おともだち", $25, "なまえが"
-	next "かかれて いません!@"
+	db   "おともだち<NO>なまえが"
+	next "かかれて いません!@"
 ; 8a8a1
 
 Function8a8a1: ; 8a8a1 (22:68a1)
@@ -3827,11 +3821,11 @@
 ; 8a919 (22:6919)
 
 String_8a919: ; 8a919
-	db "このデータ", $1f, "けしますか?@"
+	db "このデータ<WO>けしますか?@"
 ; 8a926
 
 String_8a926: ; 8a926
-	db "データ", $1f, "けしまし", $22, "@"
+	db "データ<WO>けしまし<TA!>@"
 ; 8a930
 
 Function8a930: ; 8a930 (22:6930)
@@ -3920,9 +3914,8 @@
 ; 8a9c9 (22:69c9)
 
 MenuDataHeader_0x8a9c9: ; 0x8a9c9
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 11, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 4, 18, TEXTBOX_Y - 1
 ; 8a9ce
 
 Function8a9ce: ; 8a9ce (22:69ce)
@@ -3950,15 +3943,14 @@
 ; 8a9f2 (22:69f2)
 
 MenuDataHeader_0x8a9f2: ; 0x8a9f2
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 11, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 4, 18, TEXTBOX_Y - 1
 	dw MenuData2_0x8a9fa
 	db 1 ; default option
 ; 0x8a9fa
 
 MenuData2_0x8a9fa: ; 0x8a9fa
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 3 ; items
 	db "へんしゅう@"
 	db "みる@"
@@ -4078,7 +4070,7 @@
 ; 8aaf0 (22:6af0)
 
 String_8aaf0: ; 8aaf0
-	db "あたらしい めいし<PKMN>できまし<LNBRK>@"
+	db "あたらしい めいし<PKMN>できまし<LNBRK>@"
 ; 8ab00
 
 Function8ab00: ; 8ab00
@@ -4234,8 +4226,8 @@
 ; 8ac3b
 
 String_8ac3b: ; 8ac3b
-	db   "こ", $25, "ともだち", $1d, "でんわを"
-	next "かけますか?@"
+	db   "こ<NO>ともだち<NI>でんわを"
+	next "かけますか?@"
 ; 8ac4e
 
 Function8ac4e: ; 8ac4e
@@ -4412,13 +4404,13 @@
 ; 8ad89
 
 String_8ad89: ; 8ad89
-	db   "こ", $25, "めいし", $1f, "けして"
-	next "いれかえますか?@"
+	db   "こ<NO>めいし<WO>けして"
+	next "いれかえますか?@"
 ; 8ad9c
 
 String_8ad9c: ; 8ad9c
-	db   "おともだち", $25, "なまえを"
-	next "のこして おきますか?@"
+	db   "おともだち<NO>なまえを"
+	next "のこして おきますか?@"
 ; 8adb3
 
 Function8adb3: ; 8adb3
--- a/mobile/mobile_22_2.asm
+++ b/mobile/mobile_22_2.asm
@@ -1,8 +1,8 @@
 Function8b342:: ; 8b342
-; Loads the secondary map header pointer, then runs through a
-; dw with three dummy functions.  Spends a lot of energy
+; Loads the map data pointer, then runs through a
+; dw with three dummy functions. Spends a lot of energy
 ; doing pretty much nothing.
-	call GetSecondaryMapHeaderPointer
+	call GetMapDataPointer
 	ld d, h
 	ld e, l
 
@@ -26,15 +26,15 @@
 ; 8b35a
 
 .zero ; 8b35a
-	mobile
+	ret
 ; 8b35b
 
 .one ; 8b35b
-	mobile
+	ret
 ; 8b35c
 
 .two ; 8b35c
-	mobile
+	ret
 ; 8b35d
 
 Function8b35d: ; 8b35d
@@ -910,9 +910,8 @@
 ; 8b867
 
 MenuDataHeader_0x8b867: ; 0x8b867
-	db $40 ; flags
-	db 03, 01 ; start coords
-	db 13, 18 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 1, 3, 18, 13
 	dw MenuData2_0x8b870
 	db 1 ; default option
 ; 0x8b86f
@@ -920,7 +919,7 @@
 	db 0
 
 MenuData2_0x8b870: ; 0x8b870
-	db $3c ; flags
+	db SCROLLINGMENU_ENABLE_FUNCTION3 | SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_RIGHT | SCROLLINGMENU_ENABLE_LEFT ; flags
 	db 5 ; items
 	db 3, 1
 	dbw 0, wd002
@@ -1016,10 +1015,10 @@
 	dw String_8b92a
 	dw String_8b938
 
-String_8b90b: db "めいしを えらんでください@"        ; Please select a noun.
-String_8b919: db "どの めいしと いれかえますか?@"    ; OK to swap with any noun?
-String_8b92a: db "あいてを えらんでください@"        ; Please select an opponent.
-String_8b938: db "いれる ところを えらんでください@" ; Please select a location.
+String_8b90b: db "めいしを えらんでください@"        ; Please select a noun.
+String_8b919: db "どの めいしと いれかえますか?@"    ; OK to swap with any noun?
+String_8b92a: db "あいてを えらんでください@"        ; Please select an opponent.
+String_8b938: db "いれる ところを えらんでください@" ; Please select a location.
 ; 8b94a
 
 Function8b94a: ; 8b94a
@@ -1083,20 +1082,18 @@
 ; 8b9ac
 
 MenuDataHeader_0x8b9ac: ; 0x8b9ac
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 0, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 
 MenuDataHeader_0x8b9b1: ; 0x8b9b1
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 07, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 0, SCREEN_WIDTH - 1, 7
 	dw MenuData2_0x8b9b9
 	db 1 ; default option
 ; 0x8b9b9
 
 MenuData2_0x8b9b9: ; 0x8b9b9
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 3 ; items
 	db "へんしゅう@" ; EDIT
 	db "いれかえ@"   ; REPLACE
@@ -1104,15 +1101,14 @@
 ; 0x8b9ca
 
 MenuDataHeader_0x8b9ca: ; 0x8b9ca
-	db $40 ; flags
-	db 00, 11 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 11, 0, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw MenuData2_0x8b9d2
 	db 1 ; default option
 ; 0x8b9d2
 
 MenuData2_0x8b9d2: ; 0x8b9d2
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 5 ; items
 	db "みる@"       ; VIEW
 	db "へんしゅう@" ; EDIT
--- a/mobile/mobile_40.asm
+++ b/mobile/mobile_40.asm
@@ -40,7 +40,7 @@
 	ld a, b
 	ld [wcd24], a
 	farcall Function10127e
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464 ; load broken gfx
 	farcall Function11615a ; init RAM
 	ld hl, VramState
@@ -318,7 +318,7 @@
 Function10020b: ; 10020b
 	xor a
 	ld [wc303], a
-	farcall FadeOutPalettes
+	farcall Special_FadeOutPalettes
 	farcall Function106464
 	call HideSprites
 	call DelayFrame
@@ -349,11 +349,11 @@
 ; 10024d
 
 String10024d: ; 10024d
-	db   "つうしんを キャンセル しました@"
+	db   "つうしんを キャンセル しました@"
 ; 10025e
 
 String10025e: ; 10025e
-	db   "おともだちと えらんだ へやが"
+	db   "おともだちと えらんだ へやが"
 	next "ちがうようです@"
 ; 100276
 
@@ -924,7 +924,7 @@
 ; 1005b2
 
 MenuDataHeader_1005b2: ; 1005b2
-	db $40 ; flags
+	db MENU_BACKUP_TILES ; flags
 	db 6, 14
 	db 10, 19
 	dw MenuData2_1005ba
@@ -931,7 +931,7 @@
 	db 1 ; default option
 
 MenuData2_1005ba:
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2
 	db "はい@"
 	db "いいえ@"
@@ -975,7 +975,7 @@
 ; 1005fc
 
 MenuDataHeader_1005fc: ; 1005fc
-	db $40 ; flags
+	db MENU_BACKUP_TILES ; flags
 	db 6, 14
 	db 10, 19
 	dw MenuData2_100604
@@ -982,7 +982,7 @@
 	db 1 ; default option
 
 MenuData2_100604: ; 100604
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 2
 	db "かける@"
 	db "まつ@"
@@ -1000,7 +1000,7 @@
 ; 100621
 
 .String: ; 100621
-	db "つうしんたいきちゅう!@"
+	db "つうしんたいきちゅう!@"
 ; 10062d
 
 AdvanceMobileInactivityTimerAndCheckExpired: ; 10062d
@@ -1119,11 +1119,11 @@
 ; 1006c2
 
 String1006c2: ; 1006c2
-	db "ふん @"
+	db "ふん @"
 String1006c6: ; 1006c6
 	db "びょう@"
 String1006ca: ; 1006ca
-	db "1じかんいじょう@"
+	db "1じかんいじょう@"
 ; 1006d3
 
 Function1006d3: ; 1006d3
@@ -1412,12 +1412,12 @@
 ; 10088e
 
 String_10088e: ; 10088e
-	db   "モバイルたいせん できる"
+	db   "モバイルたいせん できる"
 	next "じかん@"
 ; 10089f
 
 String_10089f: ; 10089f
-	db " むせいげん@"
+	db " むせいげん@"
 ; 1008a6
 
 Function1008a6: ; 1008a6
@@ -1518,9 +1518,9 @@
 ; 10095a
 
 .string_10095a ; 10095a
-	db "たいせん しゅうりょう@"
+	db "たいせん しゅうりょう@"
 .string_100966 ; 100966
-	db "のこり   ふん", $e7, "@"
+	db "のこり   ふん!@"
 ; 100970
 
 
@@ -2120,13 +2120,12 @@
 
 .MenuDataHeader: ; 100d88
 	db 0 ; flags
-	db 11, 11 ; start coords
-	db 17, 19 ; end coords
+	menu_coords 11, 11, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw .MenuData2
 	db 1 ; default option
 
 .MenuData2: ; 100d90
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 3
 	db "いれかえる@"  ; TRADE
 	db "つよさをみる@" ; STATS
@@ -2530,7 +2529,7 @@
 	dbwww $80, PlayerID, 2, OTPlayerID
 	dbwww $80, PartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, OTPartyMons
 	dbwww $80, PartyMonOT, NAME_LENGTH * PARTY_LENGTH, OTPartyMonOT
-	dbwww $80, PartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, OTPartyMonNicknames
+	dbwww $80, PartyMonNicknames, MON_NAME_LENGTH * PARTY_LENGTH, OTPartyMonNicknames
 	db -1
 
 Unknown_100feb: ; 100feb
@@ -2551,7 +2550,7 @@
 Unknown_10102c: ; 10102c
 	dbwww $80, OTPlayerName, NAME_LENGTH, NULL
 	dbwww $80, OTPlayerID, 2, NULL
-	dbwww $80, OTPartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, NULL
+	dbwww $80, OTPartyMonNicknames, MON_NAME_LENGTH * PARTY_LENGTH, NULL
 	dbwww $80, OTPartyMonOT, NAME_LENGTH * PARTY_LENGTH, NULL
 	dbwww $80, OTPartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, NULL
 	db -1
@@ -2804,7 +2803,7 @@
 	ret
 ; 1011f1
 
-Function1011f1: ; 1011f1
+Special_Function1011f1: ; 1011f1
 	ld a, $04
 	call GetSRAMBank
 	ld a, [$a60c]
@@ -2828,13 +2827,13 @@
 	ret
 ; 101220
 
-Function101220: ; 101220
+Special_Function101220: ; 101220
 	xor a
 	ld [wLinkMode], a
 	ret
 ; 101225
 
-Function101225: ; 101225
+Special_Function101225: ; 101225
 	ld d, 1
 	ld e, BANK(Jumptable_101297)
 	ld bc, Jumptable_101297
@@ -2841,7 +2840,7 @@
 	call Function100000
 	jr Function10123d
 
-Function101231: ; 101231
+Special_Function101231: ; 101231
 	ld d, 2
 	ld e, BANK(Jumptable_101297)
 	ld bc, Jumptable_101297
@@ -2872,7 +2871,7 @@
 	call Function1021e0
 	call Function1020ea
 	ret c
-	call Function102142
+	call Special_Function102142
 	ret
 ; 101265
 
@@ -3077,7 +3076,7 @@
 
 Function1013c0: ; 1013c0
 	farcall BlankScreen
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	call FinishExitMenu
 	ret
@@ -3093,7 +3092,7 @@
 	ret
 ; 1013e1
 
-Function1013e1: ; 1013e1 ; unreferenced
+Unreferenced_Function1013e1: ; 1013e1
 	push de
 	inc de
 	ld b, a
@@ -3130,7 +3129,7 @@
 	ret
 ; 101400
 
-Function101400: ; 101400 ; unreferenced
+Unreferenced_Function101400: ; 101400
 	ld a, [de]
 	inc de
 	cp [hl]
@@ -3318,7 +3317,7 @@
 	ret
 ; 10151d
 
-Function10151d: ; 10151d ; unreferenced
+Unreferenced_Function10151d: ; 10151d
 	ld a, $34
 	call Function3e32
 	ld a, [wMobileCommsJumptableIndex]
@@ -3513,7 +3512,7 @@
 	ret
 ; 101674
 
-Function101674: ; 101674 ; unreferenced
+Unreferenced_Function101674: ; 101674
 	ld a, $05
 	ld hl, w5_dc00
 	call Function101635
@@ -4053,11 +4052,11 @@
 	call CopyBytes
 	ld a, [wcd2f]
 	and a
-	ld a, 2
+	ld a, USING_INTERNAL_CLOCK
 	jr z, .got_link_player_number
-	ld a, 1
+	ld a, USING_EXTERNAL_CLOCK
 .got_link_player_number
-	ld [hLinkPlayerNumber], a
+	ld [hSerialConnectionStatus], a
 	ret
 ; 101a21
 
@@ -4076,8 +4075,8 @@
 	farcall ShowLinkBattleParticipantsAfterEnd
 	xor a
 	ld [wDisableTextAcceleration], a
-	ld a, $ff
-	ld [hLinkPlayerNumber], a
+	ld a, CONNECTION_NOT_ESTABLISHED
+	ld [hSerialConnectionStatus], a
 	pop af
 	ld [Options], a
 	ret
@@ -4402,7 +4401,7 @@
 	ret
 ; 101cc2
 
-Function101cc2: ; 101cc2 ; unreferenced
+Unreferenced_Function101cc2: ; 101cc2
 	ld a, $02
 	ld [wcd2b], a
 	ret
@@ -4683,7 +4682,7 @@
 	ret
 ; 101e82
 
-Function101e82: ; 101e82 ; unreferenced
+Unreferenced_Function101e82: ; 101e82
 	call Function101ecc
 	ld a, [wMobileCommsJumptableIndex]
 	inc a
@@ -4691,7 +4690,7 @@
 	ret
 ; 101e8d
 
-Function101e8d: ; 101e8d ; unreferenced
+Unreferenced_Function101e8d: ; 101e8d
 	call Function101ed3
 	ld a, [wMobileCommsJumptableIndex]
 	inc a
@@ -4783,55 +4782,55 @@
 	db "@"
 
 String_101f14: ; 101f14
-	db   "モバイルアダプタを つかって"
-	next "おともだちと つうしんします@"
+	db   "モバイルアダプタを つかって"
+	next "おともだちと つうしんします@"
 
 String_101f32: ; 101f32
-	db   "でんわを かけるひとには"
-	next "つうわりょうきんが かかります@"
+	db   "でんわを かけるひとには"
+	next "つうわりょうきんが かかります@"
 
 String_101f4f: ; 101f4f
-	db   "モバイルアダプタの じゅんびは"
-	next "できて いますか?@"
+	db   "モバイルアダプタの じゅんびは"
+	next "できて いますか?@"
 
 String_101f69: ; 101f69
-	db   "あなたが おともだちに"
-	next "でんわを かけますか?@"
+	db   "あなたが おともだちに"
+	next "でんわを かけますか?@"
 
 String_101f81: ; 101f81
-	db   "めいしフ,ルダーを"
-	next "つかいますか?@"
+	db   "めいしフォルダーを"
+	next "つかいますか?@"
 
 String_101f93: ; 101f93
-	db   "でんわばんごうを にゅうりょく"
+	db   "でんわばんごうを にゅうりょく"
 	next "してください@"
 
 String_101faa: ; 101faa
-	db   "それでは おともだちからの"
-	next "でんわを おまちします…@"
+	db   "それでは おともだちからの"
+	next "でんわを おまちします⋯@"
 
 String_101fc5: ; 101fc5
-	next "に でんわを かけます@"
+	next "に でんわを かけます@"
 
 String_101fd2: ; 101fd2
-	next "に でんわを かけています@"
+	next "に でんわを かけています@"
 
 String_101fe1: ; 101fe1
-	db   "でんわが つながりました!@"
+	db   "でんわが つながりました!@"
 
 String_101fef: ; 101fef
 	db   "つうわを"
-	next "しゅうりょう します…@"
+	next "しゅうりょう します⋯@"
 
 String_102000: ; 102000
-	db   "つうしん しゅうりょう@"
+	db   "つうしん しゅうりょう@"
 
 String_10200c: ; 10200c
-	db   "つうわ じかん@"
+	db   "つうわ じかん@"
 
 String_102014: ; 102014
-	db   "それでは つうしんの"
-	next "せっていを してください@"
+	db   "それでは つうしんの"
+	next "せっていを してください@"
 ; 10202c
 
 Function10202c: ; 10202c
@@ -5025,7 +5024,7 @@
 	ret
 ; 102142
 
-Function102142: ; 102142
+Special_Function102142: ; 102142
 	call Function10218d
 	call Function102180
 	ld hl, UnknownText_0x1021d1
@@ -5454,7 +5453,7 @@
 	call Function102921
 	ret nc
 	farcall SaveAfterLinkTrade
-	farcall TrainerRankings_Trades
+	farcall StubbedTrainerRankings_Trades
 	farcall BackupMobileEventIndex
 	ld hl, wcd4b
 	set 1, [hl]
@@ -6287,9 +6286,8 @@
 ; 1029bb
 
 MenuDataHeader_1029bb: ; 1029bb
-	db $40 ; flags
-	db 10, 3 ; start coords
-	db 12, 15 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 3, 10, 15, 12
 	dw NULL
 	db 1 ; default option
 ; 1029c3
@@ -6506,7 +6504,7 @@
 	ret
 ; 102b68
 
-Function102b68: ; 102b68 ; unreferenced
+Unreferenced_Function102b68: ; 102b68
 	xor a
 	ld hl, wWindowStackPointer
 	ld bc, $10
@@ -7008,7 +7006,7 @@
 ; 102f22
 
 .TooBadTheTradeWasCanceled: ; 102f22
-	db "こうかんを キャンセルしました@"
+	db "こうかんを キャンセルしました@"
 ; 102f32
 
 Function102f32: ; 102f32
@@ -7032,7 +7030,7 @@
 ; 102f5d
 
 .PleaseWait: ; 102f5d
-	db "しょうしょう おまち ください@"
+	db "しょうしょう おまち ください@"
 ; 102f6d
 
 Function102f6d: ; 102f6d
@@ -7044,7 +7042,7 @@
 ; 102f7a
 
 .Finished: ; 102f7a
-	db "しゅうりょう します@"
+	db "しゅうりょう します@"
 ; 102f85
 
 Function102f85: ; 102f85
@@ -7069,8 +7067,8 @@
 ; 102fb2
 
 String_102fb2: ; 102fb2
-	db   "あいてがわ<PKMN>えらんだ "
-	next "いじょう<PKMN>あるようです!!"
+	db   "あいてがわ<PKMN>えらんだ "
+	next "いじょう<PKMN>あるようです!!"
 	db   "@"
 ; 102fcc
 
@@ -7087,8 +7085,8 @@
 ; 102fdb
 
 String_102fdb: ; 102fdb
-	db   "あいてがわ%せんたくに"
-	next "いじょう<PKMN>あるようです!!"
+	db   "あいてがわ<NO>せんたくに"
+	next "いじょう<PKMN>あるようです!!"
 	done
 ; 102ff5
 
@@ -7101,8 +7099,8 @@
 ; 103002
 
 String_103002: ; 103002
-	db   "その#を こうかんすると"
-	next "せんとう できなく なっちゃうよ!"
+	db   "その#を こうかんすると"
+	next "せんとう できなく なっちゃうよ!"
 	db   "@"
 ; 103021
 
@@ -7115,8 +7113,8 @@
 ; 10302e
 
 String_10302e: ; 10302e
-	db   "あいてが ちゅうしを えらんだので"
-	next "こうかんを ちゅうし します"
+	db   "あいてが ちゅうしを えらんだので"
+	next "こうかんを ちゅうし します"
 	db   "@"
 ; 10304f
 
@@ -7691,16 +7689,16 @@
 	dw String_103545
 
 String_103545: db "@"
-String_103546: db "せんとう アニメ@"
+String_103546: db "せんとう アニメ@"
 String_10354f: db "でんわばんごう@"
 String_103557: db "めいしこうかん@"
-String_10355f: db "でんわを かけるひとが きめられる@"
-String_103571: db "でんわばんごうの にゅうりょくのしかた@"
-String_103585: db "あたらしいめいしが あれば こうかん@"
-String_103598: db "とばして みる@"
-String_1035a0: db "じっくり みる@"
+String_10355f: db "でんわを かけるひとが きめられる@"
+String_103571: db "でんわばんごうの にゅうりょくのしかた@"
+String_103585: db "あたらしいめいしが あれば こうかん@"
+String_103598: db "とばして みる@"
+String_1035a0: db "じっくり みる@"
 String_1035a8: db "めいしからえらぶ@"
-String_1035b1: db "すうじで いれる@"
+String_1035b1: db "すうじで いれる@"
 String_1035ba: db "する@"
 String_1035bd: db "しない@"
 String_1035c1: db "けってい@"
@@ -7724,9 +7722,9 @@
 	dw Unknown_103608
 	dw Unknown_103608
 	dw Unknown_1035fe
-	dw AskMobileOrCable
-	dw AskMobileOrCable
-	dw AskMobileOrCable
+	dw Special_AskMobileOrCable
+	dw Special_AskMobileOrCable
+	dw Special_AskMobileOrCable
 
 Unknown_1035e7: ; 1035e7
 	dwcoord 0, 6
@@ -7757,7 +7755,7 @@
 	db 2, 2, 3
 ; 103612
 
-AskMobileOrCable: ; 103612
+Special_AskMobileOrCable: ; 103612
 	ld hl, MenuDataHeader_103640
 	call LoadMenuDataHeader
 	ld a, [wMobileOrCable_LastSelection]
@@ -7785,14 +7783,13 @@
 ; 103640
 
 MenuDataHeader_103640: ; 103640
-	db $40 ; flags
-	db  6, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 6, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw MenuData2_103648
 	db 1 ; default option
 
 MenuData2_103648: ; 103648
-	db $80 ; flags
+	db STATICMENU_CURSOR ; flags
 	db 2
 	db "モバイル@"
 	db "ケーブル@"
@@ -7814,7 +7811,7 @@
 	ret
 ; 10366e
 
-Mobile_SelectThreeMons: ; 10366e
+Special_Mobile_SelectThreeMons: ; 10366e
 	farcall Mobile_AlwaysReturnNotCarry
 	bit 7, c
 	jr z, .asm_10369b
@@ -7940,14 +7937,13 @@
 ; 103747
 
 MenuDataHeader_103747: ; 103747
-	db $40 ; flags
-	db  5, 13 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 13, 5, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw MenuData2_10374f
 	db 1 ; default option
 
 MenuData2_10374f: ; 10374f
-	db $c0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
 	db 3
 	db "はい@"
 	db "やめる@"
@@ -7983,7 +7979,7 @@
 	db "@"
 ; 0x103780
 
-Function103780: ; 103780
+Special_Function103780: ; 103780
 	ld a, [wd265]
 	push af
 	call Function10378c
@@ -8025,7 +8021,7 @@
 	ret
 ; 1037c2
 
-Function1037c2: ; 1037c2
+Special_Function1037c2: ; 1037c2
 	call Function103823
 	jr c, .nope
 	ld a, [wdc5f]
@@ -8051,7 +8047,7 @@
 	db "@"
 ; 0x1037eb
 
-Function1037eb: ; 1037eb
+Special_Function1037eb: ; 1037eb
 	call Function103823
 	jr nc, .asm_103807
 	ld hl, UnknownText_0x103819
@@ -8106,7 +8102,7 @@
 	ret
 ; 10383c
 
-Function10383c: ; 10383c
+Special_Function10383c: ; 10383c
 	ld a, $01
 	ld [wdc60], a
 	xor a
@@ -8139,7 +8135,7 @@
 	db "@"
 ; 0x10387b
 
-Function10387b: ; 10387b
+Special_Function10387b: ; 10387b
 	farcall Mobile_AlwaysReturnNotCarry
 	bit 7, c
 	ret nz
--- a/mobile/mobile_41.asm
+++ b/mobile/mobile_41.asm
@@ -2,7 +2,8 @@
 ; which were used for Trainer Rankings in Pokémon News.
 
 ; Copies certain values at the time the player enters the Hall of Fame.
-TrainerRankings_HallOfFame2:: mobile ; 0x105ef6
+StubbedTrainerRankings_HallOfFame2:: ; 0x105ef6
+	ret
 	ld a, BANK(sTrainerRankingGameTimeHOF)
 	call GetSRAMBank
 
@@ -33,7 +34,8 @@
 	ret
 ; 105f33
 
-TrainerRankings_MagikarpLength: mobile ; 105f33
+StubbedTrainerRankings_MagikarpLength: ; 105f33
+	ret
 	ld a, BANK(sTrainerRankingLongestMagikarp)
 	call GetSRAMBank
 	ld de, Buffer1
@@ -101,7 +103,8 @@
 	ret
 ; 105f79
 
-TrainerRankings_BugContestScore: mobile ; 105f79
+StubbedTrainerRankings_BugContestScore: ; 105f79
+	ret
 	ld a, BANK(sTrainerRankingBugContestScore)
 	call GetSRAMBank
 	ld a, [hProduct]
@@ -130,7 +133,8 @@
 	ret
 ; 105f9f
 
-TrainerRankings_AddToSlotsWinStreak: mobile ; 105f9f
+StubbedTrainerRankings_AddToSlotsWinStreak: ; 105f9f
+	ret
 	ld a, BANK(sTrainerRankingCurrentSlotsStreak)
 	call GetSRAMBank
 
@@ -170,7 +174,8 @@
 	ret
 ; 105fd0
 
-TrainerRankings_EndSlotsWinStreak: mobile ; 105fd0
+StubbedTrainerRankings_EndSlotsWinStreak: ; 105fd0
+	ret
 	ld a, BANK(sTrainerRankingCurrentSlotsStreak)
 	call GetSRAMBank
 	ld hl, sTrainerRankingCurrentSlotsStreak
@@ -182,7 +187,8 @@
 	ret
 ; 105fe3
 
-TrainerRankings_AddToSlotsPayouts: mobile ; 105fe3
+StubbedTrainerRankings_AddToSlotsPayouts: ; 105fe3
+	ret
 	ld a, BANK(sTrainerRankingTotalSlotsPayouts)
 	call GetSRAMBank
 	ld hl, sTrainerRankingTotalSlotsPayouts + 3
@@ -210,7 +216,8 @@
 	ret
 ; 106008
 
-TrainerRankings_AddToBattlePayouts: mobile ; 106008
+StubbedTrainerRankings_AddToBattlePayouts: ; 106008
+	ret
 	ld a, BANK(sTrainerRankingTotalBattlePayouts)
 	call GetSRAMBank
 	ld hl, sTrainerRankingTotalBattlePayouts + 3
@@ -240,12 +247,13 @@
 	ret
 ; 10602e
 
-TrainerRankings_StepCount: mobile ; 10602e (41:602e)
+StubbedTrainerRankings_StepCount: ; 10602e (41:602e)
+	ret
 	ld hl, sTrainerRankingStepCount
-	jp TrainerRankings_Increment4Byte
+	jp StubbedTrainerRankings_Increment4Byte
 
-; Unreferenced in English version.
-TrainerRankings_BattleTowerWins: mobile ; 106035
+Unreferenced_StubbedTrainerRankings_BattleTowerWins: ; 106035
+	ret
 	ld a, $5
 	call GetSRAMBank
 	ld a, [$aa8d]
@@ -253,167 +261,196 @@
 	call CloseSRAM
 	ret nz
 	ld hl, sTrainerRankingBattleTowerWins
-	jp TrainerRankings_Increment2Byte
+	jp StubbedTrainerRankings_Increment2Byte
 
-TrainerRankings_TMsHMsTaught: mobile ; 106049
+StubbedTrainerRankings_TMsHMsTaught: ; 106049
+	ret
 	ld hl, sTrainerRankingTMsHMsTaught
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Battles: mobile ; 106050
+StubbedTrainerRankings_Battles: ; 106050
+	ret
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle
 	ret z
 	ld hl, sTrainerRankingBattles
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_WildBattles: mobile ; 10605d
+StubbedTrainerRankings_WildBattles: ; 10605d
+	ret
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle
 	ret z
 	ld hl, sTrainerRankingWildBattles
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_TrainerBattles: mobile ; 10606a
+StubbedTrainerRankings_TrainerBattles: ; 10606a
+	ret
 	ld hl, sTrainerRankingTrainerBattles
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Unused1: mobile ; 106071
+StubbedTrainerRankings_Unused1: ; 106071
+	ret
 	ld hl, sTrainerRankingUnused1
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_HallOfFame:: mobile ; 0x106078
+StubbedTrainerRankings_HallOfFame:: ; 0x106078
+	ret
 	ld hl, sTrainerRankingHOFEntries
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_WildMonsCaught: mobile ; 10607f (41:607f)
+StubbedTrainerRankings_WildMonsCaught: ; 10607f (41:607f)
+	ret
 	ld hl, sTrainerRankingWildMonsCaught
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_HookedEncounters: mobile ; 106086
+StubbedTrainerRankings_HookedEncounters: ; 106086
+	ret
 	ld hl, sTrainerRankingHookedEncounters
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_EggsHatched: mobile ; 10608d (41:608d)
+StubbedTrainerRankings_EggsHatched: ; 10608d (41:608d)
+	ret
 	ld hl, sTrainerRankingEggsHatched
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_MonsEvolved: mobile ; 106094
+StubbedTrainerRankings_MonsEvolved: ; 106094
+	ret
 	ld hl, sTrainerRankingMonsEvolved
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_FruitPicked: mobile ; 10609b
+StubbedTrainerRankings_FruitPicked: ; 10609b
+	ret
 	ld hl, sTrainerRankingFruitPicked
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Healings: mobile ; 1060a2
+Special_StubbedTrainerRankings_Healings: ; 1060a2
+	ret
 	ld hl, sTrainerRankingHealings
-	jp TrainerRankings_Increment3Byte
+	jp StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_MysteryGift: mobile ; 1060a9 (41:60a9)
+StubbedTrainerRankings_MysteryGift: ; 1060a9 (41:60a9)
+	ret
 	ld hl, sTrainerRankingMysteryGift
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Trades: mobile ; 1060af
+StubbedTrainerRankings_Trades: ; 1060af
+	ret
 	ld hl, sTrainerRankingTrades
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Fly: mobile ; 1060b5
+StubbedTrainerRankings_Fly: ; 1060b5
+	ret
 	ld hl, sTrainerRankingFly
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Surf: mobile ; 1060bb
+StubbedTrainerRankings_Surf: ; 1060bb
+	ret
 	ld hl, sTrainerRankingSurf
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Waterfall: mobile ; 1060c1
+StubbedTrainerRankings_Waterfall: ; 1060c1
+	ret
 	ld hl, sTrainerRankingWaterfall
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_WhiteOuts: mobile ; 1060c7
+StubbedTrainerRankings_WhiteOuts: ; 1060c7
+	ret
 	ld hl, sTrainerRankingWhiteOuts
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_LuckyNumberShow: mobile ; 1060cd
+StubbedTrainerRankings_LuckyNumberShow: ; 1060cd
+	ret
 	ld hl, sTrainerRankingLuckyNumberShow
-	jr TrainerRankings_Increment2Byte
+	jr StubbedTrainerRankings_Increment2Byte
 
-TrainerRankings_PhoneCalls: mobile ; 1060d3
+StubbedTrainerRankings_PhoneCalls: ; 1060d3
+	ret
 	ld hl, sTrainerRankingPhoneCalls
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Unused2: mobile ; 1060df
+StubbedTrainerRankings_Unused2: ; 1060df
+	ret
 	ld hl, sTrainerRankingUnused2
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_LinkBattles: mobile ; 1060df
+StubbedTrainerRankings_LinkBattles: ; 1060df
+	ret
 	ld hl, sTrainerRankingLinkBattles
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Splash: mobile ; 1060e5
+StubbedTrainerRankings_Splash: ; 1060e5
+	ret
 	; Only counts if it’s the player’s turn
 	ld a, [hBattleTurn]
 	and a
 	ret nz
 	ld hl, sTrainerRankingSplash
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_TreeEncounters: mobile ; 1060ef
+StubbedTrainerRankings_TreeEncounters: ; 1060ef
+	ret
 	ld hl, sTrainerRankingTreeEncounters
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_Unused3: mobile ; 1060f5
+StubbedTrainerRankings_Unused3: ; 1060f5
+	ret
 	ld hl, sTrainerRankingUnused3
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_ColosseumWins: mobile ; win
+StubbedTrainerRankings_ColosseumWins: ; win
+	ret
 	ld hl, sTrainerRankingColosseumWins
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 
-TrainerRankings_ColosseumLosses: mobile ; lose
+StubbedTrainerRankings_ColosseumLosses: ; lose
+	ret
 	ld hl, sTrainerRankingColosseumLosses
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 ; 106107
 
-TrainerRankings_ColosseumDraws: mobile ; draw
+StubbedTrainerRankings_ColosseumDraws: ; draw
+	ret
 	ld hl, sTrainerRankingColosseumDraws
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 ; 10610d
 
 ; Counts uses of both Selfdestruct and Explosion.
-TrainerRankings_Selfdestruct: mobile ; 10610d
+StubbedTrainerRankings_Selfdestruct: ; 10610d
+	ret
 	; Only counts if it’s the player’s turn
 	ld a, [hBattleTurn]
 	and a
 	ret nz
 	ld hl, sTrainerRankingSelfdestruct
-	jr TrainerRankings_Increment3Byte
+	jr StubbedTrainerRankings_Increment3Byte
 ; 106117
 
-TrainerRankings_Increment4Byte: ; 106117
+StubbedTrainerRankings_Increment4Byte: ; 106117
 	push bc
 	ld bc, 3
-	jr TrainerRankings_Increment
+	jr StubbedTrainerRankings_Increment
 ; 10611d
 
-TrainerRankings_Increment3Byte: ; 10611d
+StubbedTrainerRankings_Increment3Byte: ; 10611d
 	push bc
 	ld bc, 2
-	jr TrainerRankings_Increment
+	jr StubbedTrainerRankings_Increment
 ; 106123
 
-TrainerRankings_Increment2Byte: ; 106123
+StubbedTrainerRankings_Increment2Byte: ; 106123
 	push bc
 	ld bc, 1
-	jr TrainerRankings_Increment
+	jr StubbedTrainerRankings_Increment
 ; 106129
 
 ; unused
-TrainerRankings_Increment1Byte: ; 106129
+StubbedTrainerRankings_Increment1Byte: ; 106129
 	push bc
 	ld bc, 0
 
 ; Increments a big-endian value of bc + 1 bytes at hl
-TrainerRankings_Increment: ; 10612d
+StubbedTrainerRankings_Increment: ; 10612d
 	ld a, BANK(sTrainerRankings)
 	call GetSRAMBank
 	push hl
@@ -450,7 +487,8 @@
 ; 106155
 
 ; Used when SRAM bank 5 isn’t already loaded — what’s the point of this?
-UpdateTrainerRankingsChecksum2: mobile ; 106155
+UpdateTrainerRankingsChecksum2: ; 106155
+	ret
 	ld a, BANK(sTrainerRankings)
 	call GetSRAMBank
 	call UpdateTrainerRankingsChecksum
@@ -520,8 +558,7 @@
 	ret
 ; 1061b3 (41:61b3)
 
-; Unreferenced in English version.
-VerifyTrainerRankingsChecksum: ; 1061b3
+Unreferenced_VerifyTrainerRankingsChecksum: ; 1061b3
 	call CalculateTrainerRankingsChecksum
 	ld hl, sTrainerRankingsChecksum
 	ld a, d
@@ -773,15 +810,16 @@
 	ret
 ; 10630f
 
-; functions related to the cable club and various NPC scripts referencing mobile communications
+; functions related to the cable club and various NPC scripts referencing communications
 
-Mobile_DummyReturnFalse: ; 10630f
+Special_Mobile_DummyReturnFalse: ; 10630f
 	xor a
 	ld [ScriptVar], a
 	ret
 ; 106314
 
-MobileFn_106314: mobile ; 106314
+Stubbed_Function106314: ; 106314
+	ret
 	ld a, $4
 	call GetSRAMBank
 	ld a, c
@@ -800,7 +838,7 @@
 	or a
 	ret
 
-Function106331: ; 106331 - called by Mobile_DummyReturnFalse in Crystal-J
+Function106331: ; 106331 - called by Special_Mobile_DummyReturnFalse in Crystal-J
 	; check ~[4:b000] == [7:a800]
 	ld a, $4
 	call GetSRAMBank
@@ -960,7 +998,7 @@
 	or c
 	inc a
 	ld c, a
-	call MobileFn_106314
+	call Stubbed_Function106314
 	ld a, [wMobileCommsJumptableIndex]
 	inc a
 	ld [wMobileCommsJumptableIndex], a
@@ -978,7 +1016,7 @@
 
 .asm_106435
 	ld c, $0
-	call MobileFn_106314
+	call Stubbed_Function106314
 	ld a, [wMobileCommsJumptableIndex]
 	inc a
 	ld [wMobileCommsJumptableIndex], a
@@ -1005,21 +1043,22 @@
 	ret
 ; 106462
 
-MobileFunc_106462: mobile
+Stubbed_Function106462:
 	ret
+	ret
 ; 106464
 
 Function106464:: ; 106464
-	ld de, MobilePhoneTilesGFX
-	ld hl, vTiles2 tile $60
-	lb bc, BANK(MobilePhoneTilesGFX), 1
+	ld de, FontsExtra_SolidBlackGFX
+	ld hl, vTiles2 tile "■" ; $60
+	lb bc, BANK(FontsExtra_SolidBlackGFX), 1
 	call Get2bpp
 	ld de, FontsExtra2_UpArrowGFX
-	ld hl, vTiles2 tile $61
+	ld hl, vTiles2 tile "▲" ; $61
 	lb bc, BANK(FontsExtra2_UpArrowGFX), 1
 	call Get2bpp
 	ld de, GFX_106514
-	ld hl, vTiles2 tile $62
+	ld hl, vTiles2 tile "☎" ; $62
 	ld c, 9
 	ld b, BANK(GFX_106514)
 	call Get2bpp
@@ -1033,17 +1072,17 @@
 
 Function10649b: ; 10649b
 	ld a, [TextBoxFrame]
-	and $7
-	ld bc, 3 tiles
+	maskbits NUM_FRAMES
+	ld bc, 6 * LEN_1BPP_TILE
 	ld hl, Frames
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld hl, vTiles2 tile $79
-	ld c, 6
+	ld hl, vTiles2 tile "┌" ; $79
+	ld c, 6 ; "┌" to "┘"
 	ld b, BANK(Frames)
 	call Function1064c3
-	ld hl, vTiles2 tile $7f
+	ld hl, vTiles2 tile " " ; $7f
 	ld de, TextBoxSpaceGFX
 	ld c, 1
 	ld b, BANK(TextBoxSpaceGFX)
@@ -1103,8 +1142,8 @@
 ; 10650a
 
 Function10650a: ; 10650a
-	ld de, MobilePhoneTilesGFX + $20
-	lb bc, BANK(MobilePhoneTilesGFX), $11
+	ld de, MobilePhoneTilesGFX
+	lb bc, BANK(MobilePhoneTilesGFX), 17
 	call Get2bpp
 	ret
 ; 106514
--- a/mobile/mobile_42.asm
+++ b/mobile/mobile_42.asm
@@ -181,12 +181,12 @@
 
 	ld de, TradeBallGFX
 	ld hl, vTiles0
-	lb bc, BANK(TradeBallGFX), $06
+	lb bc, BANK(TradeBallGFX), 6
 	call Request2bpp
 
 	ld de, TradePoofGFX
 	ld hl, vTiles0 tile $06
-	lb bc, BANK(TradePoofGFX), $0c
+	lb bc, BANK(TradePoofGFX), 12
 	call Request2bpp
 
 	xor a
@@ -309,7 +309,7 @@
 	ld [CurSpecies], a
 	call GetBaseData
 	pop de
-	predef GetAnimatedFrontpicPredef
+	predef GetAnimatedFrontpic
 	ret
 ; 108219
 
@@ -337,7 +337,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	pop de
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ret
 ; 10824b
@@ -361,7 +361,7 @@
 	ld [hWY], a
 	call LoadStandardFont
 	call LoadFontsBattleExtra
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	scf
 	ret
@@ -518,7 +518,7 @@
 	jr c, .skip_cry
 	ld e, c
 	ld d, b
-	call PlayCryHeader
+	call PlayCry
 
 .skip_cry
 	ld c, 80
@@ -616,11 +616,11 @@
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, vTiles0
-	lb bc, BANK(TradeBallGFX), $06
+	lb bc, BANK(TradeBallGFX), 6
 	call Request2bpp
 	ld de, TradePoofGFX
 	ld hl, vTiles0 tile $06
-	lb bc, BANK(TradePoofGFX), $0c
+	lb bc, BANK(TradePoofGFX), 12
 	call Request2bpp
 	ld a, [wPlayerTrademonDVs]
 	ld [TempMonDVs], a
@@ -653,7 +653,7 @@
 	jr c, .skip_cry
 	ld e, c
 	ld d, b
-	call PlayCryHeader
+	call PlayCry
 
 .skip_cry
 	ld c, 80
@@ -690,11 +690,11 @@
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, vTiles0
-	lb bc, BANK(TradeBallGFX), $06
+	lb bc, BANK(TradeBallGFX), 6
 	call Request2bpp
 	ld de, TradePoofGFX
 	ld hl, vTiles0 tile $06
-	lb bc, BANK(TradePoofGFX), $0c
+	lb bc, BANK(TradePoofGFX), 12
 	call Request2bpp
 	xor a
 	ld [hSCX], a
@@ -759,11 +759,11 @@
 	call DelayFrame
 	ld de, TradeBallGFX
 	ld hl, vTiles0
-	lb bc, BANK(TradeBallGFX), $06
+	lb bc, BANK(TradeBallGFX), 6
 	call Request2bpp
 	ld de, TradePoofGFX
 	ld hl, vTiles0 tile $06
-	lb bc, BANK(TradePoofGFX), $0c
+	lb bc, BANK(TradePoofGFX), 12
 	call Request2bpp
 	xor a
 	ld [hSCX], a
@@ -959,7 +959,7 @@
 	cp $f8
 	jr nz, .next
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
 	call _InitSpriteAnimStruct
 
 .next
@@ -984,7 +984,7 @@
 
 .init
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
 	call _InitSpriteAnimStruct
 	xor a
 	call Function108ad4
@@ -1015,7 +1015,7 @@
 	call Function108af4
 	call Function108b5a
 	depixel 9, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_25
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_PING
 	call _InitSpriteAnimStruct
 	ld de, SFX_FORESIGHT
 	call PlaySFX
@@ -1024,7 +1024,7 @@
 	xor a
 	ld [wcf64], a
 	depixel 9, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_23
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_PULSE
 	call _InitSpriteAnimStruct
 .loop
 	ld a, [hSCY]
@@ -1051,7 +1051,7 @@
 	ld c, 60
 	call WaitMobileTradeSpriteAnims
 	depixel 30, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_24
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_PULSE
 	call _InitSpriteAnimStruct
 	call GetMobileTradeAnimByte
 	ld de, SFX_THROW_BALL
@@ -1074,7 +1074,7 @@
 	ld c, 80
 	call DelayFrames
 	depixel 30, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_24
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_PULSE
 	call _InitSpriteAnimStruct
 	call GetMobileTradeAnimByte
 	ld de, SFX_THROW_BALL
@@ -1098,7 +1098,7 @@
 .done
 	farcall DeinitializeAllSprites
 	depixel 9, 10, 2, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_25
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_PING
 	call _InitSpriteAnimStruct
 	ld de, SFX_GLASS_TING_2
 	call PlaySFX
@@ -1134,13 +1134,13 @@
 
 .asm_1088c5
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
 	call _InitSpriteAnimStruct
 	jr .asm_1088e7
 
 .asm_1088cf
 	depixel 10, 11, 4, 0
-	ld a, SPRITE_ANIM_INDEX_MOBILE_22
+	ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
 	call _InitSpriteAnimStruct
 	xor a
 	call Function108ad4
@@ -1311,8 +1311,8 @@
 
 .EggTemplate: ; 108a1d
 	db   "タマゴ"
-	next "おや/?????"
-	next "<ID>№<DOT>?????"
+	next "おや/?????"
+	next "<ID>№<DOT>?????"
 	db   "@"
 ; 108a33
 
@@ -1352,9 +1352,9 @@
 ; 108a79
 
 .MonTemplate: ; 108a79
-	db   "─ №<DOT>"
+	db   "─ №<DOT>"
 	next ""
-	next "おや/"
+	next "おや/"
 	next "<ID>№<DOT>"
 	db   "@"
 ; 108a87
@@ -1484,7 +1484,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld de, palred 31 + palgreen 31 + palblue 31
+	ld de, PALRGB_WHITE
 	ld hl, wBGPals1
 	ld a, e
 	ld [hli], a
@@ -1525,7 +1525,7 @@
 	ld a, c
 	and $2
 	jr z, .Orange
-	ld de, palred 31 + palgreen 31 + palblue 31
+	ld de, PALRGB_WHITE
 	jr .load_pal
 
 .Orange:
@@ -1825,141 +1825,141 @@
 INCBIN "gfx/unknown/1090a7.tilemap.lz"
 
 Palette_1090f7:
-; unreferenced
+; unused
 	RGB 31, 31, 31
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
-	RGB 31,  0, 25
-	RGB  0,  0,  0
+	RGB 31, 00, 25
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
-	RGB  9, 19, 31
-	RGB  0,  0,  0
+	RGB 09, 19, 31
+	RGB 00, 00, 00
 
 Palette_109107:
 	RGB 18, 31, 15
 	RGB 20, 20, 20
 	RGB 11, 11, 11
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 31, 15,  1
 	RGB 14, 14, 31
-	RGB 12,  9, 31
-	RGB  0,  0,  0
+	RGB 12, 09, 31
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
 	RGB 14, 14, 31
-	RGB 12,  9, 31
-	RGB  0,  0,  0
+	RGB 12, 09, 31
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
 	RGB 20, 20, 20
 	RGB 11, 11, 11
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB 31,  7,  9
-	RGB 18,  0,  1
-	RGB  0,  0,  0
+	RGB 31, 07, 09
+	RGB 18, 00, 01
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
 	RGB 20, 20, 20
 	RGB 11, 11, 11
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 31, 15,  1
-	RGB 18,  0, 30
-	RGB  9,  0, 17
-	RGB  0,  0,  0
+	RGB 18, 00, 30
+	RGB 09, 00, 17
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB 18,  0, 30
-	RGB  9,  0, 17
-	RGB  0,  0,  0
+	RGB 18, 00, 30
+	RGB 09, 00, 17
+	RGB 00, 00, 00
 
 Palette_109147:
 	RGB 31, 31, 31
 	RGB 31, 31, 12
 	RGB 31, 13, 12
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
 	RGB 31, 23, 15
-	RGB 31, 18,  7
-	RGB 31, 15,  0
+	RGB 31, 18, 07
+	RGB 31, 15, 00
 
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB 31,  0, 25
-	RGB 31,  0, 25
-	RGB  0,  0,  0
+	RGB 31, 00, 25
+	RGB 31, 00, 25
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  9, 19, 31
-	RGB  9, 19, 31
-	RGB  0,  0,  0
+	RGB 09, 19, 31
+	RGB 09, 19, 31
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
 
 Palette_109187:
 	RGB 31, 31, 31
 	RGB 31, 31, 12
 	RGB 31, 13, 12
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
 	RGB 31, 23, 15
-	RGB 31, 18,  7
-	RGB 31, 15,  0
+	RGB 31, 18, 07
+	RGB 31, 15, 00
 
 	RGB 31, 31, 31
 	RGB 20, 20, 20
 	RGB 11, 11, 11
-	RGB  0,  0,  0
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  9, 19, 31
-	RGB  9, 19, 31
-	RGB  0,  0,  0
+	RGB 09, 19, 31
+	RGB 09, 19, 31
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB 31,  0, 25
-	RGB 31,  0, 25
-	RGB  0,  0,  0
+	RGB 31, 00, 25
+	RGB 31, 00, 25
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
 
 	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
 
 GFX_1091c7:
 INCBIN "gfx/unknown/1091c7.2bpp"
@@ -1968,41 +1968,41 @@
 
 Palette_1093c7:
 	RGB 18, 31, 15
-	RGB  4, 13, 31
-	RGB  0,  0, 31
-	RGB  0,  0,  0
+	RGB 04, 13, 31
+	RGB 00, 00, 31
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB 31, 31,  0
-	RGB 31, 15,  0
-	RGB  0,  0,  0
+	RGB 31, 31, 00
+	RGB 31, 15, 00
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB  9, 24,  0
-	RGB  2, 16,  0
-	RGB  0,  0,  0
+	RGB 09, 24, 00
+	RGB 02, 16, 00
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB 31,  7,  9
-	RGB 18,  0,  1
-	RGB  0,  0,  0
+	RGB 31, 07, 09
+	RGB 18, 00, 01
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB 28,  5, 31
-	RGB 17,  0, 17
-	RGB  0,  0,  0
+	RGB 28, 05, 31
+	RGB 17, 00, 17
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
-	RGB  9,  9,  9
-	RGB  4,  4,  4
-	RGB  0,  0,  0
+	RGB 09, 09, 09
+	RGB 04, 04, 04
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
 	RGB 31, 13, 21
-	RGB 27,  7, 12
-	RGB  0,  0,  0
+	RGB 27, 07, 12
+	RGB 00, 00, 00
 
 	RGB 18, 31, 15
 	RGB 21, 20, 20
 	RGB 14, 14, 31
-	RGB  0,  0,  0
+	RGB 00, 00, 00
--- a/mobile/mobile_45.asm
+++ b/mobile/mobile_45.asm
@@ -61,7 +61,7 @@
 ; 114165
 
 Jumptable_114165: ; 114165
-	dw Function114268
+	dw Stubbed_Function114268
 	dw Function114269
 	dw Function11433c
 	dw Function1143b7
@@ -159,7 +159,8 @@
 
 ; 114268
 
-Function114268: mobile
+Stubbed_Function114268:
+	ret
 
 ; 114269
 
@@ -4328,7 +4329,7 @@
 	push hl
 	ld a, [wCurrMapCallbackCount]
 	ld l, a
-	ld a, [wCurrMapCallbackHeaderPointer]
+	ld a, [wCurrMapCallbacksPointer]
 	ld h, a
 	cp b
 	jr c, .asm_1158bb
@@ -4350,7 +4351,7 @@
 	ld a, l
 	ld [wCurrMapCallbackCount], a
 	ld a, h
-	ld [wCurrMapCallbackHeaderPointer], a
+	ld [wCurrMapCallbacksPointer], a
 	pop bc
 	pop hl
 	ld hl, wCurrMapSceneScriptCount
@@ -4895,7 +4896,7 @@
 	push hl
 	ld a, [wCurrMapCallbackCount]
 	ld l, a
-	ld a, [wCurrMapCallbackHeaderPointer]
+	ld a, [wCurrMapCallbacksPointer]
 	ld h, a
 	cp b
 	jr c, .asm_115b36
@@ -4917,7 +4918,7 @@
 	ld a, l
 	ld [wCurrMapCallbackCount], a
 	ld a, h
-	ld [wCurrMapCallbackHeaderPointer], a
+	ld [wCurrMapCallbacksPointer], a
 	pop bc
 	pop hl
 	ld hl, wCurrMapSceneScriptCount
@@ -5844,7 +5845,7 @@
 	db $c, $5
 	db $9, $8
 	db $8, $4
-	db $ff
+	db -1 ; end
 
 Unknown_11683e: ; 11683e
 	db $fd, $20
@@ -5867,7 +5868,7 @@
 	db $12, $5
 	db $f, $8
 	db $e, $4
-	db $ff
+	db -1 ; end
 
 Unknown_116867: ; 116867
 	db $14, $8
@@ -5910,7 +5911,7 @@
 	db $fd, $2
 	db $23, $2
 	db $fd, $40
-	db $ff
+	db -1 ; end
 
 Unknown_1168ae: ; 1168ae
 	db $24, $4
@@ -7297,17 +7298,15 @@
 ; 1179b5 (45:79b5)
 
 MenuDataHeader_1179b5: ; 1179b5
-	db $40 ; flags
-	db 12,  0 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw NULL
 	db 0 ; default option
 ; 1179bd
 
 MenuDataHeader_1179bd: ; 1179bd
-	db $40 ; flags
-	db  7, 14 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw NULL
 	db 0 ; default option
 ; 1179c5
@@ -7319,13 +7318,13 @@
 ; 1179cc
 
 AskSavePasswordString: ; 1179cc
-	db   "こ%パスワード¯ほぞんして"
-	line "おきますか?@"
+	db   "こ<NO>パスワード¯ほぞんして"
+	line "おきますか?@"
 ; 1179e1
 
 NotAPokemonPasswordString: ; 1179e1
 	db   "パスワード<PKMN>にゅうりょく"
-	line "されていません!@"
+	line "されていません!@"
 ; 1179f7
 
 SavedPasswordString: ; 1179f7
@@ -7350,7 +7349,7 @@
 
 ; everything from here to the end of the bank is related to the
 ; Mobile Stadium option from the continue/newgame menu.
-; XXX better function names
+; Needs better function names
 MobileStudium: ; 0x117a7f
 	ld a, [hInMenu]
 	push af
@@ -7612,9 +7611,9 @@
 	ld c, 8
 .loop
 	push hl
-	ld a, LOW(palred 31 + palgreen 31 + palblue 31)
+	ld a, LOW(PALRGB_WHITE)
 	ld [hli], a
-	ld a, HIGH(palred 31 + palgreen 31 + palblue 31)
+	ld a, HIGH(PALRGB_WHITE)
 	ld [hl], a
 	pop hl
 	add hl, de
@@ -7658,18 +7657,16 @@
 	ret
 
 MenuDataHeader_117cbc: ; 0x117cbc
-	db $40    ; flags
-	db 12,  0 ; start coords
-	db 17, 19 ; end coords
-	dw NULL   ; menu data 2
-	db 0      ; default option
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
+	dw NULL
+	db 0 ; default option
 
 MenuDataHeader_117cc4: ; 0x117cc4
-	db $40    ; flags
-	db  7, 14 ; start coords
-	db 11, 19 ; end coords
-	dw NULL   ; menu data 2
-	db 0      ; default item
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+	dw NULL
+	db 0 ; default item
 
 YesNo117ccc: ; 0x117ccc
 	db   "はい"
--- a/mobile/mobile_45_sprite_engine.asm
+++ b/mobile/mobile_45_sprite_engine.asm
@@ -1,7 +1,7 @@
 Function115d99: ; 115d99
 	ld de, GFX_11601a
 	ld hl, vTiles0 tile $60
-	lb bc, BANK(GFX_11601a), $14
+	lb bc, BANK(GFX_11601a), 20
 	call Get2bpp
 	xor a
 	ld [wc305], a
@@ -22,8 +22,8 @@
 	xor a
 	ld [wc305], a
 	ld a, $a0
-	ld hl, Sprites + 31 * 4
-	ld bc, 8 * 4
+	ld hl, Sprite32
+	ld bc, 8 * SPRITEOAMSTRUCT_LENGTH
 	call ByteFill
 	ret
 
@@ -34,8 +34,8 @@
 	and a
 	ret z
 	ld a, $a0
-	ld hl, Sprites + 31 * 4
-	ld bc, 8 * 4
+	ld hl, Sprite32
+	ld bc, 8 * SPRITEOAMSTRUCT_LENGTH
 	call ByteFill
 	call Function115e22
 	ld a, [wc309]
@@ -50,7 +50,7 @@
 	ld d, a
 	push de
 	pop hl
-	ld de, Sprites + 31 * 4
+	ld de, Sprite32
 	ld a, [wc307]
 	ld c, a
 	ld a, [wc308]
@@ -60,17 +60,17 @@
 	push af
 	ld a, [hli]
 	add b
-	ld [de], a
+	ld [de], a ; y
 	inc de
 	ld a, [hli]
 	add c
-	ld [de], a
+	ld [de], a ; x
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; tile id
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; attributes
 	inc de
 	pop af
 	dec a
@@ -361,7 +361,7 @@
 	jr c, .asm_1161b4
 	ld a, $a0
 	ld hl, Sprites
-	ld bc, $0064
+	ld bc, 25 * SPRITEOAMSTRUCT_LENGTH
 	call ByteFill
 
 .asm_1161b4
@@ -507,9 +507,8 @@
 ; 11628c
 
 MenuDataHeader_11628c: ; 11628c
-	db $40 ; flags
-	db  6,  0 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 6, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw NULL
 	db 0 ; default option
 ; 116294
@@ -586,22 +585,22 @@
 	ld e, a
 	ld a, [hli]
 	sub e
-	ld de, Sprites + $24
+	ld de, Sprite10
 .asm_116321
 	push af
 	ld a, [hli]
 	add b
-	ld [de], a
+	ld [de], a ; y
 	inc de
 	ld a, [hli]
 	add c
-	ld [de], a
+	ld [de], a ; x
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; tile id
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; attributes
 	inc de
 	pop af
 	dec a
@@ -627,22 +626,22 @@
 	ld e, a
 	ld a, [hli]
 	sub e
-	ld de, Sprites
+	ld de, Sprite01
 .asm_11635a
 	push af
 	ld a, [hli]
 	add b
-	ld [de], a
+	ld [de], a ; y
 	inc de
 	ld a, [hli]
 	add c
-	ld [de], a
+	ld [de], a ; x
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; tile id
 	inc de
 	ld a, [hli]
-	ld [de], a
+	ld [de], a ; attributes
 	inc de
 	pop af
 	dec a
@@ -669,7 +668,7 @@
 	ld [rSVBK], a
 	ld a, $a0
 	ld hl, Sprites
-	ld bc, 16 * 4
+	ld bc, 16 * SPRITEOAMSTRUCT_LENGTH
 	call ByteFill
 	ld a, $90
 	ld [hWY], a
@@ -697,7 +696,7 @@
 	ld [rSVBK], a
 	ld a, $a0
 	ld hl, Sprites
-	ld bc, 16 * 4
+	ld bc, 16 * SPRITEOAMSTRUCT_LENGTH
 	call ByteFill
 	call DelayFrame
 	farcall Function14146
--- a/mobile/mobile_46.asm
+++ b/mobile/mobile_46.asm
@@ -487,7 +487,7 @@
 	ld [hMobileReceive], a
 	ld [hMobile], a
 	ei
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	farcall Function115d99
 	farcall Function11615a
@@ -969,7 +969,7 @@
 	set 0, [hl]
 	ld a, $6
 	ld [rSVBK], a
-	ld de, w3_d000
+	ld de, $d000
 	ld bc, $1000
 	ld a, [hl]
 	sla a
@@ -1559,8 +1559,7 @@
 	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/tamago/index.txt", 0
 
 
-Function118d35: ; 118d35
-; unreferenced
+Unreferenced_Function118d35: ; 118d35
 	ld hl, $d200
 	ld a, [wcd38]
 	and a
@@ -1673,7 +1672,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	farcall Function11b93b
+	farcall Special_Function11b93b
 	pop af
 	ld [rSVBK], a
 
@@ -2530,9 +2529,9 @@
 	ld [wcd3c], a
 	call BattleTowerRoomMenu2
 	ld hl, $c346
-	ld a, LOW(wd000)
+	ld a, LOW($d000)
 	ld [hli], a
-	ld a, HIGH(wd000)
+	ld a, HIGH($d000)
 	ld [hli], a
 	ld a, [wcd3b]
 	ld [hli], a
@@ -2602,7 +2601,7 @@
 	jr z, .asm_119447
 	ld a, $6
 	ld [rSVBK], a
-	ld a, [wd000]
+	ld a, [w3_d000]
 	ld c, a
 	ld a, [w3_d000 + 1]
 	ld b, a
@@ -3468,10 +3467,10 @@
 ; 1199b4
 
 Function1199b4: ; 1199b4
-	ld a, [wd000 + 130]
+	ld a, [w3_d081+1]
 	and a
 	jr nz, .asm_1199c7
-	ld a, [wd000 + 129]
+	ld a, [w3_d081]
 	cp $7
 	jr nc, .asm_1199c7
 	call BattleTowerRoomMenu_IncrementJumptable
@@ -3539,11 +3538,11 @@
 	ld [w3_d8a1], a
 	ld [w3_d8a2], a
 	ld [w3_d8a3], a
-	ld hl, $d8a0
+	ld hl, w3_d8a0
 	ld bc, $d889
 	call Function119e98
 	call Function119e98
-	ld hl, $d8a0
+	ld hl, w3_d8a0
 	ld a, [wcd2d]
 	cp [hl]
 	jr nz, Function119ac9
@@ -3564,12 +3563,12 @@
 	ld [w3_d8a1], a
 	ld [w3_d8a2], a
 	ld [w3_d8a3], a
-	ld hl, $d8a0
+	ld hl, w3_d8a0
 	ld bc, $d88e
 	call Function119e98
 	ld bc, $d893
 	call Function119e98
-	ld hl, $d8a0
+	ld hl, w3_d8a0
 	ld a, [wcd2f]
 	cp [hl]
 	jr nz, .asm_119aa7
@@ -3955,17 +3954,15 @@
 ; 119cf7
 
 MenuDataHeader_119cf7: ; 119cf7
-	db $40 ; flags
-	db  7, 12 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 12, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw NULL
 	db 0 ; default option
 ; 119cff
 
 MenuData_119cff: ; 119cff
-	db $40 ; flags
-	db  7, 15 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 15, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw NULL
 	db 0 ; default option
 ; 119d07
@@ -4087,7 +4084,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, wcd49
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	call CopyBytes
 	ld a, $a
 	ld [wcf66], a
@@ -4462,7 +4459,7 @@
 	call PushWindow
 	farcall Function11765d
 	farcall Function117ab4
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	call ExitMenu
 	farcall ReloadMapPart
@@ -4485,7 +4482,7 @@
 	call PushWindow
 	farcall Function11765d
 	farcall Function17d3f6
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	call ExitMenu
 	farcall ReloadMapPart
@@ -4757,17 +4754,15 @@
 ; 11a2d6
 
 MenuDataHeader_11a2d6: ; 11a2d6
-	db $40 ; flags
-	db  6, 14 ; start coords
-	db 10, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 6, SCREEN_WIDTH - 1, 10
 	dw NULL
 	db 0 ; default option
 ; 11a2de
 
 MenuDataHeader_11a2de: ; 11a2de
-	db $40 ; flags
-	db  7, 14 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw NULL
 	db 0 ; default option
 ; 11a2e6
@@ -5230,108 +5225,107 @@
 ; 11a661
 
 String_11a661: ; 11a661
-	db   "これから モバイルセンターに"
-	next "でんわ", $1f, "かけます@"
+	db   "これから モバイルセンターに"
+	next "でんわ<WO>かけます@"
 ; 11a679
 
 String_11a679: ; 11a679
-	db   "モバイルアダプタ", $25, "じゅんびは"
-	next "できて いますか?@"
+	db   "モバイルアダプタ<NO>じゅんびは"
+	next "できて いますか?@"
 ; 11a692
 
 String_11a692: ; 11a692
-	db   "でんわ", $1f, "かけています"
-	next "しばらく おまちください@"
+	db   "でんわ<WO>かけています"
+	next "しばらく おまちください@"
 ; 11a6aa
 
 String_11a6aa: ; 11a6aa
-	db   "でんわをかけると つうわりょう"
-	next "せつぞくりょう", $4a, "かかります@"
+	db   "でんわをかけると つうわりょう"
+	next "せつぞくりょう<GA>かかります@"
 ; 11a6c8
 
 String_11a6c8: ; 11a6c8
-	db   "せつぞく しました@"
+	db   "せつぞく しました@"
 ; 11a6d2
 
 String_11a6d2: ; 11a6d2
-	db   "つうしん ちゅう@"
+	db   "つうしん ちゅう@"
 ; 11a6db
 
 String_11a6db: ; 11a6db
-	db   "つうしん ちゅう"
-	next "セレクト エーでちゅうし@"
+	db   "つうしん ちゅう"
+	next "セレクト エーでちゅうし@"
 ; 11a6f1
 
 String_11a6f1: ; 11a6f1
-	db   "この サービスには"
-	next "つうわりょう", $25, "ほかに@"
+	db   "この サービスには"
+	next "つうわりょう<NO>ほかに@"
 ; 11a706
 
 String_11a706: ; 11a706
-	db   "おかね", $4a, "@"
+	db   "おかね<GA>@"
 ; 11a70b
 
 String_11a70b: ; 11a70b
 	db   "えん"
-	next "かかります よろしい ですか?@"
+	next "かかります よろしい ですか?@"
 ; 11a71e
 
 String_11a71e: ; 11a71e
-	db   "つうしん しゅうりょう@"
+	db   "つうしん しゅうりょう@"
 ; 11a72a
 
 String_11a72a: ; 11a72a
-	db   "つないだ じかん"
-	next "  やく   ふん   びょう@"
+	db   "つないだ じかん"
+	next "  やく   ふん   びょう@"
 ; 11a743
 
 String_11a743: ; 11a743
-	db   "もっていない データが"
-	next "あります!@"
+	db   "もっていない データが"
+	next "あります!@"
 ; 11a755
 
 String_11a755: ; 11a755
-	db   "データ", $1f, "よみこみますか?@"
+	db   "データ<WO>よみこみますか?@"
 ; 11a762
 
 String_11a762: ; 11a762
-	db   "おなじ データ", $1f, "よみこんだ"
-	next "こと", $4a, "ありますが@"
+	db   "おなじ データ<WO>よみこんだ"
+	next "こと<GA>ありますが@"
 ; 11a779
 
 String_11a779: ; 11a779
-	db   "そのデータ", $24, "なくなっているか"
-	next "こわれて います@"
+	db   "そのデータ<WA>なくなっているか"
+	next "こわれて います@"
 ; 11a791
 
 String_11a791: ; 11a791
-	db   "もっている データと"
-	next "おなじデータしか ありません!@"
+	db   "もっている データと"
+	next "おなじデータしか ありません!@"
 ; 11a7ac
 
 String_11a7ac: ; 11a7ac
-	db   "データ", $25, "よみこみを"
-	next "ちゅうし しますか?@"
+	db   "データ<NO>よみこみを"
+	next "ちゅうし しますか?@"
 ; 11a7c1
 
 String_11a7c1: ; 11a7c1 ; new news?
-	db   "あたらしい ニュースは"
-	next "ありません でした@"
+	db   "あたらしい ニュースは"
+	next "ありません でした@"
 ; 11a7d7
 
 String_11a7d7: ; 11a7d7
-	db   "あたらしいニュース", $4a, "あります"
-	next "ニュース", $1f, "よみこみますか?@"
+	db   "あたらしいニュース<GA>あります"
+	next "ニュース<WO>よみこみますか?@"
 ; 11a7f4
 
 String_11a7f4: ; 11a7f4
-	db   "               @"
+	db   "               @"
 ; 11a804
 
 MenuDataHeader_11a804: ; 11a804
-	db $40 ; flags
-	db  0,  0 ; start coords
-	db  5, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, SCREEN_WIDTH - 1, 5
 	dw NULL
 	db 0 ; default option
 ; 11a80c
@@ -5578,7 +5572,7 @@
 	call ClearBGPalettes
 	call ReloadTilesetAndPalettes
 	call Call_ExitMenu
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	call ret_d90
 	farcall FinishExitMenu
@@ -5730,7 +5724,7 @@
 	done
 ; 0x11ac3e
 
-Function11ac3e: ; 11ac3e
+Special_Function11ac3e: ; 11ac3e
 	call SpeechTextBox
 	call FadeToMenu
 	callfar ClearSpriteAnims2
@@ -6001,9 +5995,8 @@
 ; 11ae38
 
 MenuDataHeader_11ae38: ; 11ae38
-	db $40 ; flags
-	db 10, 10 ; start coords
-	db 17, 17 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 10, 10, 17, SCREEN_HEIGHT - 1
 	dw NULL
 	db 0 ; default option
 ; 11ae40
@@ -6010,7 +6003,7 @@
 
 String_11ae40: ; 11ae40
 	db   "どちらでも"
-	next "♂ォス"
+	next "♂オス"
 	next "♀メス"
 	db   "@"
 ; 11ae4e
@@ -6248,27 +6241,25 @@
 ; 11afe8
 
 MenuDataHeader_11afe8: ; 11afe8
-	db $40 ; flags
-	db 12,  9 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 9, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw NULL
 	db 0 ; default option
 ; 11aff0
 
 String_11aff0: ; 11aff0
-	db   "この じょうけんで"
+	db   "この じょうけんで"
 	next "よろしいですか?@"
 ; 11b003
 
 String_11b003: ; 11b003
 	db   "こうかんを"
-	next "ちゅうししますか?@"
+	next "ちゅうししますか?@"
 ; 11b013
 
 MenuDataHeader_11b013: ; 11b013
-	db $40 ; flags
-	db  7, 14 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw NULL
 	db 1 ; default option
 ; 11b01b
@@ -6347,8 +6338,8 @@
 	ret
 ; 11b07a
 
-.MaleString: db "ォスの "
-.FemaleString: db "メスの "
+.MaleString: db "オスの "
+.FemaleString: db "メスの "
 
 Function11b082: ; 11b082
 	call Function11b242
@@ -6818,7 +6809,7 @@
 ; 11b308
 
 String_11b308: ; 11b308
-	db "     @"
+	db "     @"
 ; 11b30e
 
 String_11b30e: ; 11b30e
@@ -6930,7 +6921,7 @@
 	db $39 ; 13
 
 Function11b397: ; 11b397
-	ld de, Sprites
+	ld de, Sprite01
 .loop
 	ld a, [hl]
 	cp $ff
@@ -6939,26 +6930,25 @@
 	and $7
 	swap a
 	add [hl]
-	inc hl ; 1
-	ld [de], a
+	inc hl
+	ld [de], a ; y
 	inc de
 
-	ld a, [hli] ; 2
-	ld [de], a
+	ld a, [hli]
+	ld [de], a ; x
 	inc de
 
 	ld a, [bc]
 	inc bc
-	ld [de], a
+	ld [de], a ; tile id
 	inc de
-	ld a, $5 ; OBPal 5
-	ld [de], a
+	ld a, $5
+	ld [de], a ; attributes
 	inc de
 	jr .loop
 ; 11b3b6
 
-Function11b3b6: ; 11b3b6
-; unreferenced
+Unreferenced_Function11b3b6: ; 11b3b6
 .loop
 	ld a, [hl]
 	cp -1
@@ -6989,7 +6979,7 @@
 ; 11b3d9
 
 Function11b3d9: ; 11b3d9
-	ld de, Sprites + 28 * 4
+	ld de, Sprite29
 	push de
 	ld a, [wc7d2]
 	dec a
@@ -7062,7 +7052,7 @@
 	ret
 ; 11b444
 
-Function11b444: ; 11b444
+Special_Function11b444: ; 11b444
 ; special
 	call Mobile46_InitJumptable
 	call Mobile46_RunJumptable
@@ -7223,7 +7213,7 @@
 	jr .loop8
 
 .okay4
-	ld a, $0 ; BANK(sPartyMail)
+	ld a, BANK(sPartyMail)
 	call GetSRAMBank
 	ld a, MAIL_STRUCT_LENGTH
 .loop9
@@ -7351,7 +7341,7 @@
 	ret
 ; 11b5e8
 
-Function11b5e8: ; 11b5e8
+Special_Function11b5e8: ; 11b5e8
 	ld a, $0
 	call GetSRAMBank
 	ld hl, wRTC
@@ -7587,7 +7577,7 @@
 	ret
 ; 11b7e5
 
-Function11b7e5: ; 11b7e5
+Special_Function11b7e5: ; 11b7e5
 	ld a, [$c60d] ; species
 	ld [wOTTrademonSpecies], a
 	ld [CurPartySpecies], a
@@ -7646,7 +7636,7 @@
 	ret
 ; 11b879
 
-Function11b879: ; 11b879
+Special_Function11b879: ; 11b879
 	farcall BattleTower_CheckSaveFileExistsAndIsYours
 	ld a, [ScriptVar]
 	and a
@@ -7739,7 +7729,7 @@
 	ret
 ; 11b920
 
-Function11b920: ; 11b920
+Special_Function11b920: ; 11b920
 	call Mobile46_InitJumptable
 	ld a, $5
 	call GetSRAMBank
@@ -7752,7 +7742,7 @@
 	ret
 ; 11b93b
 
-Function11b93b: ; 11b93b
+Special_Function11b93b: ; 11b93b
 	ld a, $5
 	call GetSRAMBank
 	xor a
@@ -7849,13 +7839,13 @@
 	ld l, a
 	ld a, [wMobileMonOTNamePointerBuffer + 1]
 	ld h, a
-	ld bc, PKMN_NAME_LENGTH - 1
+	ld bc, MON_NAME_LENGTH - 1
 	call CopyBytes
 	ld a, "@"
 	ld [de], a
 
 	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
+	ld bc, MON_NAME_LENGTH
 	ld a, [wMobileMonSpeciesBuffer]
 .loop4
 	add hl, bc
@@ -7868,7 +7858,7 @@
 	ld l, a
 	ld a, [wMobileMonNicknamePointerBuffer + 1]
 	ld h, a
-	ld bc, PKMN_NAME_LENGTH - 1
+	ld bc, MON_NAME_LENGTH - 1
 	call CopyBytes
 	ld a, "@"
 	ld [de], a
@@ -7896,7 +7886,7 @@
 	ret
 ; 11ba38
 
-Function11ba38: ; 11ba38
+Special_Function11ba38: ; 11ba38
 	farcall CheckCurPartyMonFainted
 	ret c
 	xor a
--- a/mobile/mobile_5b.asm
+++ b/mobile/mobile_5b.asm
@@ -1,11 +1,10 @@
-Function16c000: ; 16c000
-; unreferenced
+Unreferenced_Function16c000: ; 16c000
 	; Only for CGB
 	ld a, [hCGB]
 	and a
 	ret z
 	; Only do this once per boot cycle
-	ld a, [hFFEA]
+	ld a, [hSystemBooted]
 	and a
 	ret z
 	; Set some flag, preserving the old state
@@ -20,9 +19,9 @@
 	call .RunJumptable
 	farcall DisableMobile
 	; Prevent this routine from running again
-	; until the next time the syatem is turned on
+	; until the next time the system is turned on
 	xor a
-	ld [hFFEA], a
+	ld [hSystemBooted], a
 	; Restore the flag state
 	pop af
 	ld [wcfbe], a
@@ -172,7 +171,7 @@
 	call DisableLCD
 	ld hl, vTiles2
 	ld de, .Tiles
-	lb bc, BANK(.Tiles), $68
+	lb bc, BANK(.Tiles), 104
 	call Get2bpp
 	call .LoadPals
 	call .LoadTileMap
@@ -710,7 +709,7 @@
 Function16cc18: ; 16cc18
 	ld hl, vTiles1
 	ld de, GFX_16cca3
-	lb bc, BANK(GFX_16cca3), $2e
+	lb bc, BANK(GFX_16cca3), 46
 	call Get2bpp
 	ret
 ; 16cc25
--- a/mobile/mobile_5c.asm
+++ b/mobile/mobile_5c.asm
@@ -75,7 +75,7 @@
 
 ; 1700b0
 
-INCLUDE "mobile/battle_tower_5c.asm"
+INCLUDE "engine/events/battle_tower/battle_tower.asm"
 
 Function170be4: ; 170be4
 	ld a, $5
@@ -219,7 +219,7 @@
 ; 170c98
 
 CheckBTMonMovesForErrors: ; 170c98
-	ld c, BATTLETOWER_NROFPKMNS
+	ld c, BATTLETOWER_PARTY_LENGTH
 	ld hl, wBT_OTTempPkmn1Moves
 .loop
 	push hl
@@ -254,7 +254,7 @@
 
 .done
 	pop hl
-	ld de, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+	ld de, PARTYMON_STRUCT_LENGTH + MON_NAME_LENGTH
 	add hl, de
 	dec c
 	jr nz, .loop
@@ -265,25 +265,25 @@
 Function170cc6: ; 170cc6
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, BANK(wDecompressScratch)
 	ld [rSVBK], a
-	ld hl, LZ_170d16
+	ld hl, PichuAnimatedMobileGFX
 	ld de, wDecompressScratch
 	call Decompress
-	ld a, $1
+	ld a, 1
 	ld [rVBK], a
-	ld de, wd000
+	ld de, wDecompressScratch
 	ld hl, vTiles0
-	lb bc, $6, $c1
+	lb bc, BANK(wDecompressScratch), 193
 	call Get2bpp
 	xor a
 	ld [rVBK], a
-	ld hl, LZ_1715a4
-	ld de, wd000
+	ld hl, ElectroBallMobileGFX
+	ld de, wDecompressScratch
 	call Decompress
 	ld de, wBGPals1
 	ld hl, vTiles0
-	lb bc, $6, $53
+	lb bc, BANK(wDecompressScratch), 83
 	call Get2bpp
 	pop af
 	ld [rSVBK], a
@@ -296,7 +296,7 @@
 	ld [rVBK], a
 	ld de, GFX_171848
 	ld hl, vTiles1 tile $41
-	lb bc, BANK(GFX_171848), $18
+	lb bc, BANK(GFX_171848), 24
 	call Get2bpp
 	xor a
 	ld [rVBK], a
@@ -304,10 +304,10 @@
 
 ; 170d16
 
-LZ_170d16:
+PichuAnimatedMobileGFX:
 INCBIN "gfx/mobile/pichu_animated.2bpp.lz"
 
-LZ_1715a4:
+ElectroBallMobileGFX:
 INCBIN "gfx/mobile/electro_ball.2bpp.lz"
 
 GFX_171848:
@@ -430,8 +430,8 @@
 
 String_171aa7: ; 171aa7
 	db   "モバイルアダプタに"
-	next "せつぞく しています"
-	next "しばらく おまちください"
+	next "せつぞく しています"
+	next "しばらく おまちください"
 	db   "@"
 ; 171ac9
 
@@ -514,7 +514,7 @@
 
 Function171b4b: ; 171b4b (5c:5b4b)
 	depixel 8, 2
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -522,7 +522,7 @@
 	ld [hl], a
 
 	depixel 8, 19
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -530,7 +530,7 @@
 	ld [hl], a
 
 	depixel 17, 14, 2, 0
-	ld a, SPRITE_ANIM_INDEX_1D
+	ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR
 	call _InitSpriteAnimStruct
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
@@ -654,7 +654,7 @@
 	dec [hl]
 	ret nz
 	call ClearBGPalettes
-	farcall MobileFunc_106462
+	farcall Stubbed_Function106462
 	farcall Function106464
 	ld a, $2
 	ld [wc303], a
@@ -672,15 +672,14 @@
 ; 171c6b (5c:5c6b)
 
 MenuDataHeader_171c6b: ; 171c6b
-	db $40 ; flags
-	db 12,  0 ; start coords
-	db 17, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
 	dw NULL
 	db 0 ; default option
 ; 171c73
 
 String_171c73: ; 171c73
-	db   "モバイルセンターを けってい"
+	db   "モバイルセンターを けってい"
 	next "しました@"
 ; 171c87
 
@@ -838,16 +837,16 @@
 INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
 
 String_172e31: ; 172e31
-	db "パスワード", $1f, "いれてください@"
+	db "パスワード<WO>いれてください@"
 String_172e3f: ; 172e3f
-	db "きりかえ やめる  けってい@"
+	db "きりかえ やめる  けってい@"
 String_172e4e: ; 172e4e
-	db "きりかえ やめる  "
+	db "きりかえ やめる  "
 String_172e58:
 	db "けってい@"
 String_172e5d: ; 172e5d
-	db "せつぞくする モバイルセンターを"
-	next "えらんで ください@"
+	db "せつぞくする モバイルセンターを"
+	next "えらんで ください@"
 ; 172e78
 
 
@@ -936,7 +935,7 @@
 INCBIN "gfx/trade/game_boy_n64.2bpp"
 
 Tilemap_1733af:
-if DEF(CRYSTAL11)
+if DEF(_CRYSTAL11)
 INCBIN "gfx/unknown/1733af_corrupt.tilemap"
 else
 INCBIN "gfx/unknown/1733af.tilemap"
--- a/mobile/mobile_5e.asm
+++ b/mobile/mobile_5e.asm
@@ -511,8 +511,8 @@
 ; 17a9b2 (5e:69b2)
 
 String_17a9b2: ; 17a9b2
-	db   "でんわばんごうが ただしく"
-	next "はいって いません!"
+	db   "でんわばんごうが ただしく"
+	next "はいって いません!"
 	db   "@"
 ; 17a9cb
 
--- a/mobile/mobile_5f.asm
+++ b/mobile/mobile_5f.asm
@@ -44,7 +44,7 @@
 	ld a, [rSVBK]
 	push af
 
-	ld a, 5 ; BANK(wBGPals1)
+	ld a, BANK(wBGPals1)
 	ld [rSVBK], a
 
 	ld hl, HaveWantPals
@@ -236,17 +236,17 @@
 	cp "@"
 	jr z, .next
 
-	cp $5
+	cp "ガ"
 	jr c, .end
 	cp "<PLAY_G>"
 	jr c, .next
-	cp $19
+	cp "<JP_18>" + 1
 	jr c, .end
-	cp $1d
+	cp "<NI>"
 	jr c, .next
-	cp "%" + 1
+	cp "<NO>" + 1
 	jr c, .end
-	cp $35
+	cp "<ROUTE>"
 	jr c, .next
 	cp "<GREEN>" + 1
 	jr c, .end
@@ -348,7 +348,7 @@
 ; 17d1a6
 
 .DefaultNickname:
-	db "?????"
+	db "?????"
 
 Mobile_CopyDefaultMail: ; 17d1ab
 	ld a, "@"
@@ -429,10 +429,10 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; Parameter: [ScriptVar] = 0..1
 ;
-; if [ScriptVar] == 0
+; if [ScriptVar] == FALSE
 ;    Show japanese menu options
 ;    - News - News - ??? - Cancel
-; if [ScriptVar] == 1
+; if [ScriptVar] == TRUE
 ;    Show BattleTower-Menu with 3 options in english language
 ;    - Challenge - Explanation - Cancel
 Special_Menu_ChallengeExplanationCancel: ; 17d224
@@ -483,14 +483,13 @@
 ; 17d26a
 
 MenuDataHeader_17d26a: ; 17d26a
-	db $40 ; flags
-	db  0,  0 ; start coords
-	db  9, 14 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 14, 9
 	dw MenuData2_17d272
 	db 1 ; default option
 
 MenuData2_17d272: ; 17d272
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 4
 	db "ニュース¯よみこむ@"
 	db "ニュース¯みる@"
@@ -499,14 +498,13 @@
 ; 17d28f
 
 MenuDataHeader_ChallengeExplanationCancel: ; 17d28f
-	db $40 ; flags
-	db  0,  0 ; start coords
-	db  7, 14 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 0, 0, 14, 7
 	dw MenuData2_ChallengeExplanationCancel
 	db 1 ; default option
 
 MenuData2_ChallengeExplanationCancel: ; 17d297
-	db $a0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
 	db 3
 	db "Challenge@"
 	db "Explanation@"
@@ -513,7 +511,7 @@
 	db "Cancel@"
 ; 17d2b6
 
-Function17d2b6: ; 17d2b6
+Special_Function17d2b6: ; 17d2b6
 	call Function17d2c0
 	farcall Function1181da
 	ret
@@ -528,7 +526,7 @@
 	ret
 ; 17d2ce
 
-Function17d2ce: ; 17d2ce
+Special_Function17d2ce: ; 17d2ce
 	ld a, $5
 	call GetSRAMBank
 	ld a, [$aa72]
@@ -620,8 +618,8 @@
 Function17d370: ; 17d370
 	xor a
 	ld [wcd77], a
-	ld [wcd78], a
-	ld [wcd79], a
+	ld [wMobileCrashCheckPointer], a
+	ld [wMobileCrashCheckPointer + 1], a
 	dec a
 	ld [wcd6c], a
 	call ClearBGPalettes
@@ -958,9 +956,9 @@
 	ld h, a
 	add hl, bc
 	ld a, l
-	ld [wcd78], a
+	ld [wMobileCrashCheckPointer], a
 	ld a, h
-	ld [wcd79], a
+	ld [wMobileCrashCheckPointer + 1], a
 	ld a, $3
 	ld [wcd77], a
 	ret
@@ -1122,9 +1120,9 @@
 	ld a, [wcd77]
 	bit 7, a
 	jr nz, asm_17d721
-	ld a, [wcd78]
+	ld a, [wMobileCrashCheckPointer]
 	ld l, a
-	ld a, [wcd79]
+	ld a, [wMobileCrashCheckPointer + 1]
 	ld h, a
 	ld a, [hl]
 	cp $ff
@@ -1193,11 +1191,11 @@
 	dw Function17e27f
 	dw Function17e293
 	dw Function17e2a7
-	dw Function17e367
-	dw Function17e37e
-	dw Function17e395
-	dw Function17e3ac
-	dw Function17e3c3
+	dw IncCrashCheckPointer_SaveGameData
+	dw IncCrashCheckPointer_SaveAfterLinkTrade
+	dw IncCrashCheckPointer_SaveBox
+	dw IncCrashCheckPointer_SaveChecksum
+	dw IncCrashCheckPointer_SaveTrainerRankingsChecksum
 	dw Function17e3e0
 	dw Function17e3f0
 	dw Function17e409
@@ -1208,12 +1206,12 @@
 ; 17d78d
 
 Function17d78d: ; 17d78d
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld c, a
 	ld a, [hli]
 	ld b, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ld a, $6
 	call GetSRAMBank
 	ld hl, $a006
@@ -1229,40 +1227,40 @@
 ; 17d7b4
 
 Function17d7b4: ; 17d7b4
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld d, $0
 	call PlayMusic2
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17d7c2
 
 Function17d7c2: ; 17d7c2
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld d, $0
 	call PlaySFX
 	call WaitSFX
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17d7d3
 
 Function17d7d3: ; 17d7d3
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	dec a
 	ld e, a
 	ld d, $0
-	call PlayCryHeader
+	call PlayCry
 	call WaitSFX
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17d7e5
 
 Function17d7e5: ; 17d7e5
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld [wcd4f], a
 	ld a, [hli]
@@ -1283,12 +1281,12 @@
 	ld [wcd53], a
 	ld de, wcd4f
 	call Function17e691
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17d818
 
 Function17d818: ; 17d818
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld c, a
 	ld a, [hli]
@@ -1297,7 +1295,7 @@
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	call Function17e447
 	ld e, l
 	ld d, h
@@ -1308,7 +1306,7 @@
 ; 17d833
 
 Function17d833: ; 17d833
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -1317,7 +1315,7 @@
 	ld c, a
 	ld a, [hli]
 	ld b, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	push de
 	push bc
 	call Function17e32b
@@ -1336,7 +1334,7 @@
 ; 17d85d
 
 Function17d85d: ; 17d85d
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -1406,7 +1404,7 @@
 	jr .asm_17d878
 
 .asm_17d8c7
-	call Function17e41e
+	call HlToCrashCheckPointer
 	push bc
 	ld a, $3
 	ld [rSVBK], a
@@ -1437,13 +1435,13 @@
 ; 17d902
 
 Function17d902: ; 17d902
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
 	push de
-	call Function17e41e
+	call HlToCrashCheckPointer
 	call Function17e32b
 	pop de
 	ld hl, wBGPals1
@@ -1472,11 +1470,11 @@
 ; 17d93a
 
 Function17d93a: ; 17d93a
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $5
 	call CopyBytes
-	call Function17e41e
+	call HlToCrashCheckPointer
 	call Function17e32b
 	ld a, [rSVBK]
 	push af
@@ -1508,11 +1506,11 @@
 ; 17d98b
 
 Function17d98b: ; 17d98b
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $4
 	call CopyBytes
-	call Function17e41e
+	call HlToCrashCheckPointer
 	call Function17e32b
 	ld a, [rSVBK]
 	push af
@@ -1545,11 +1543,11 @@
 ; 17d9e3
 
 Function17d9e3: ; 17d9e3
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $7
 	call CopyBytes
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ld a, [$c70b]
 	push af
 	cp $c0
@@ -1591,11 +1589,11 @@
 ; 17da31
 
 Function17da31: ; 17da31
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $4
 	call CopyBytes
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ld a, [$c709]
 	push af
 	cp $c0
@@ -1681,7 +1679,7 @@
 	call Function17e55b
 	call Function17e5af
 .asm_17daba
-	jp Function17e415
+	jp IncCrashCheckPointer
 
 .asm_17dabd
 	ld a, [wcd2f]
@@ -1723,7 +1721,7 @@
 	call Function17e5af
 
 .asm_17db0e
-	jp Function17e415
+	jp IncCrashCheckPointer
 
 .asm_17db11
 	ld hl, wcd24
@@ -1758,7 +1756,7 @@
 	call Function17e5af
 
 .asm_17db53
-	jp Function17e415
+	jp IncCrashCheckPointer
 ; 17db56
 
 Function17db56: ; 17db56
@@ -1776,7 +1774,7 @@
 	call Function17e5af
 
 .asm_17db74
-	jp Function17e415
+	jp IncCrashCheckPointer
 ; 17db77
 
 Function17db77: ; 17db77
@@ -1808,7 +1806,7 @@
 	call Function17e5af
 
 .asm_17dbae
-	jp Function17e415
+	jp IncCrashCheckPointer
 ; 17dbb1
 
 Function17dbb1: ; 17dbb1
@@ -1878,11 +1876,11 @@
 	call Function17e451
 	call Function17e55b
 	call Function17e5af
-	jp Function17e415
+	jp IncCrashCheckPointer
 ; 17dc1f
 
 Function17dc1f: ; 17dc1f
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c688
 	ld bc, $6
 	call CopyBytes
@@ -1943,7 +1941,7 @@
 ; 17dc96
 
 MenuData2_17dc96:
-	db $e0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING | STATICMENU_WRAP ; flags
 	db 2
 	db "はい@"
 	db "いいえ@"
@@ -1950,15 +1948,15 @@
 ; 17dc9f
 
 Function17dc9f: ; 17dc9f
-	call Function17e415
-	call Function17e41e
+	call IncCrashCheckPointer
+	call HlToCrashCheckPointer
 	call RotateFourPalettesLeft
 	ret
 ; 17dca9
 
 Function17dca9: ; 17dca9
-	call Function17e415
-	call Function17e41e
+	call IncCrashCheckPointer
+	call HlToCrashCheckPointer
 
 Function17dcaf:
 	ld a, $5
@@ -1983,7 +1981,7 @@
 ; 17dccf
 
 Function17dccf: ; 17dccf
-	call Function17e415
+	call IncCrashCheckPointer
 	push hl
 	ld a, [wcd4b]
 	ld l, a
@@ -1999,11 +1997,11 @@
 	ld a, [hl]
 	ld b, a
 	call Function17e43d
-	call Function17e41e
+	call HlToCrashCheckPointer
 .asm_17dced
-	ld a, [wcd78]
+	ld a, [wMobileCrashCheckPointer]
 	ld l, a
-	ld a, [wcd79]
+	ld a, [wMobileCrashCheckPointer + 1]
 	ld h, a
 	ld a, [hl]
 	cp $ff
@@ -2021,7 +2019,7 @@
 
 .asm_17dd0d
 	pop hl
-	jp Function17e41e
+	jp HlToCrashCheckPointer
 
 .asm_17dd11
 	pop hl
@@ -2029,7 +2027,7 @@
 ; 17dd13
 
 Function17dd13: ; 17dd13
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld c, a
 	ld a, [hli]
@@ -2038,7 +2036,7 @@
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	call Function17e447
 	push hl
 	hlcoord 0, 0
@@ -2051,7 +2049,7 @@
 ; 17dd30
 
 Function17dd30: ; 17dd30
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2061,7 +2059,7 @@
 	ld b, $0
 	ld a, [hli]
 	push af
-	call Function17e41e
+	call HlToCrashCheckPointer
 	pop af
 	hlcoord 0, 0
 	add hl, de
@@ -2070,7 +2068,7 @@
 ; 17dd49
 
 Function17dd49: ; 17dd49
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $a
 	call CopyBytes
@@ -2151,7 +2149,7 @@
 ; 17ddcd
 
 Function17ddcd: ; 17ddcd
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $8
 	call CopyBytes
@@ -2213,7 +2211,7 @@
 ; 17de32
 
 Function17de32: ; 17de32
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $9
 	call CopyBytes
@@ -2272,7 +2270,7 @@
 ; 17de91
 
 Function17de91: ; 17de91
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $7
 	call CopyBytes
@@ -2315,7 +2313,7 @@
 ; 17ded9
 
 Function17ded9: ; 17ded9
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $1f
 	call CopyBytes
@@ -2533,7 +2531,7 @@
 	push bc
 	push hl
 	farcall LoadEnemyMon
-	farcall SentPkmnIntoBox
+	farcall SendPkmnIntoBox
 	farcall SetBoxMonCaughtData
 	pop hl
 	pop bc
@@ -2656,7 +2654,7 @@
 ; 17e0fd
 
 Function17e0fd: ; 17e0fd
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $6
 	call CopyBytes
@@ -2690,7 +2688,7 @@
 ; 17e133
 
 Function17e133: ; 17e133
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $5
 	call CopyBytes
@@ -2721,7 +2719,7 @@
 ; 17e165
 
 Function17e165: ; 17e165
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $5
 	call CopyBytes
@@ -2758,7 +2756,7 @@
 ; 17e1a1
 
 Function17e1a1: ; 17e1a1
-	call Function17e415
+	call IncCrashCheckPointer
 	ld de, $c708
 	ld bc, $d
 	call CopyBytes
@@ -2867,7 +2865,7 @@
 ; 17e254
 
 Function17e254: ; 17e254
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2874,12 +2872,12 @@
 	ld d, a
 	ld a, [hli]
 	ld [de], a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17e261
 
 Function17e261: ; 17e261
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2888,12 +2886,12 @@
 	add [hl]
 	ld [de], a
 	inc hl
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17e270
 
 Function17e270: ; 17e270
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2902,12 +2900,12 @@
 	sub [hl]
 	ld [de], a
 	inc hl
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ret
 ; 17e27f
 
 Function17e27f: ; 17e27f
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2916,7 +2914,7 @@
 	ld c, a
 	ld a, [hli]
 	ld b, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ld l, c
 	ld h, b
 	ld a, [de]
@@ -2926,7 +2924,7 @@
 ; 17e293
 
 Function17e293: ; 17e293
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -2935,7 +2933,7 @@
 	ld c, a
 	ld a, [hli]
 	ld b, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ld l, c
 	ld h, b
 	ld a, [de]
@@ -2945,8 +2943,8 @@
 ; 17e2a7
 
 Function17e2a7: ; 17e2a7
-	call Function17e415
-	call Function17e41e
+	call IncCrashCheckPointer
+	call HlToCrashCheckPointer
 	call Function17e32b
 	xor a
 	ld [wcf66], a
@@ -3035,77 +3033,46 @@
 	ret
 ; 17e367
 
-Function17e367: ; 17e367
-	call Function17e415
-	call Function17e41e
+inc_crash_check_pointer_farcall: MACRO
+	call IncCrashCheckPointer
+	call HlToCrashCheckPointer ; redundant
 	ld a, [rSVBK]
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	farcall SaveGameData_
+rept _NARG
+	farcall \1
+	shift
+endr
 	pop af
 	ld [rSVBK], a
 	ret
+ENDM
+
+IncCrashCheckPointer_SaveGameData: ; 17e367
+	inc_crash_check_pointer_farcall SaveGameData_
 ; 17e37e
 
-Function17e37e: ; 17e37e
-	call Function17e415
-	call Function17e41e
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	farcall SaveAfterLinkTrade
-	pop af
-	ld [rSVBK], a
-	ret
-; 17e395
+IncCrashCheckPointer_SaveAfterLinkTrade: ; 17e37e
+	inc_crash_check_pointer_farcall SaveAfterLinkTrade
 
-Function17e395: ; 17e395
-	call Function17e415
-	call Function17e41e
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	farcall SaveBox
-	pop af
-	ld [rSVBK], a
-	ret
+IncCrashCheckPointer_SaveBox: ; 17e395
+	inc_crash_check_pointer_farcall SaveBox
 ; 17e3ac
 
-Function17e3ac: ; 17e3ac
-	call Function17e415
-	call Function17e41e
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	farcall SaveChecksum
-	pop af
-	ld [rSVBK], a
-	ret
+IncCrashCheckPointer_SaveChecksum: ; 17e3ac
+	inc_crash_check_pointer_farcall SaveChecksum
 ; 17e3c3
 
-Function17e3c3: ; 17e3c3
-	call Function17e415
-	call Function17e41e
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	farcall UpdateTrainerRankingsChecksum2
-	farcall BackupMobileEventIndex
-	pop af
-	ld [rSVBK], a
-	ret
+IncCrashCheckPointer_SaveTrainerRankingsChecksum: ; 17e3c3
+	inc_crash_check_pointer_farcall UpdateTrainerRankingsChecksum2, BackupMobileEventIndex
 ; 17e3e0
 
 Function17e3e0: ; 17e3e0
-	call Function17e415
+	call IncCrashCheckPointer
 	ld a, [hli]
 	ld c, a
-	call Function17e41e
+	call HlToCrashCheckPointer
 	ld a, $1
 	ld [hBGMapMode], a
 	call DelayFrames
@@ -3113,8 +3080,8 @@
 ; 17e3f0
 
 Function17e3f0: ; 17e3f0
-	call Function17e415
-	call Function17e41e
+	call IncCrashCheckPointer
+	call HlToCrashCheckPointer
 .asm_17e3f6
 	call JoyTextDelay
 	ld hl, hJoyPressed
@@ -3137,20 +3104,20 @@
 Function17e40f: ; 17e40f
 	ld de, wBGPals1
 	add hl, de
-	jr Function17e41e
+	jr HlToCrashCheckPointer
 
-Function17e415:
-	ld a, [wcd78]
+IncCrashCheckPointer:
+	ld a, [wMobileCrashCheckPointer]
 	ld l, a
-	ld a, [wcd79]
+	ld a, [wMobileCrashCheckPointer + 1]
 	ld h, a
 	inc hl
 
-Function17e41e:
+HlToCrashCheckPointer:
 	ld a, l
-	ld [wcd78], a
+	ld [wMobileCrashCheckPointer], a
 	ld a, h
-	ld [wcd79], a
+	ld [wMobileCrashCheckPointer + 1], a
 	ret
 ; 17e427
 
@@ -4619,7 +4586,7 @@
 	jr .asm_17f536
 ; 17f53d
 
-BattleTowerMobileError: ; 17f53d
+Special_BattleTowerMobileError: ; 17f53d
 	call FadeToMenu
 	xor a
 	ld [wc303], a
@@ -4880,13 +4847,13 @@
 ; 17f6dc
 
 String_17f6dc: ; 17f6dc
-	db "つうしんエラー   ー@"
+	db "つうしんエラー   ー@"
 ; 17f6e8
 
 String_17f6e8: ; 17f6e8
-	db   "みていぎ", $25, "エラーです"
-	next "プログラム", $1f
-	next "かくにん してください"
+	db   "みていぎ<NO>エラーです"
+	next "プログラム<WO>"
+	next "かくにん してください"
 	db   "@"
 ; 17f706
 
@@ -5043,33 +5010,33 @@
 	dbbw $ff, $ff, String_17fa49
 
 String_17f891: ; 17f891
-	db   "モバイルアダプタが ただしく"
+	db   "モバイルアダプタが ただしく"
 	next "さしこまれていません"
 	next "とりあつかいせつめいしょを"
-	next "ごらんのうえ しっかりと"
-	next "さしこんで ください"
+	next "ごらんのうえ しっかりと"
+	next "さしこんで ください"
 	db   "@"
 
 String_17f8d1: ; 17f8d1
-	db   "でんわが うまく かけられないか"
-	next "でんわかいせんが こんでいるので"
-	next "つうしん できません"
-	next "しばらく まって"
-	next "かけなおして ください"
+	db   "でんわが うまく かけられないか"
+	next "でんわかいせんが こんでいるので"
+	next "つうしん できません"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17f913: ; 17f913
-	db   "でんわかいせんが こんでいるため"
-	next "でんわが かけられません"
-	next "しばらく まって"
-	next "かけなおして ください"
+	db   "でんわかいせんが こんでいるため"
+	next "でんわが かけられません"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17f946: ; 17f946
-	db   "モバイルアダプタの エラーです"
-	next "しばらく まって"
-	next "かけなおして ください"
-	next "なおらない ときは"
+	db   "モバイルアダプタの エラーです"
+	next "しばらく まって"
+	next "かけなおして ください"
+	next "なおらない ときは"
 	next "モバイルサポートセンターへ"
 	next "おといあわせください"
 	db   "@"
@@ -5076,9 +5043,9 @@
 
 String_17f98e: ; 17f98e
 	db   "つうしんエラーです"
-	next "しばらく まって"
-	next "かけなおして ください"
-	next "なおらない ときは"
+	next "しばらく まって"
+	next "かけなおして ください"
+	next "なおらない ときは"
 	next "モバイルサポートセンターへ"
 	next "おといあわせください"
 	db   "@"
@@ -5085,19 +5052,19 @@
 
 String_17f9d0: ; 17f9d0
 	db   "ログインパスワードか"
-	next "ログイン アイディーに"
+	next "ログイン アイディーに"
 	next "まちがいがあります"
-	next "パスワードを かくにんして"
-	next "しばらく まって"
-	next "かけなおして ください"
+	next "パスワードを かくにんして"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17fa14: ; 17fa14
-	db   "でんわが きれました"
+	db   "でんわが きれました"
 	next "とりあつかいせつめいしょを"
 	next "ごらんのうえ"
-	next "しばらく まって"
-	next "かけなおして ください"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17fa49: ; 17fa49
@@ -5104,56 +5071,56 @@
 	db   "モバイルセンターの"
 	next "つうしんエラーです"
 	next "しばらくまって"
-	next "かけなおして ください"
+	next "かけなおして ください"
 	db   "@"
 
 String_17fa71: ; 17fa71
 	db   "モバイルアダプタに"
-	next "とうろくされた じょうほうが"
-	next "ただしく ありません"
+	next "とうろくされた じょうほうが"
+	next "ただしく ありません"
 	next "モバイルトレーナーで"
-	next "しょきとうろくを してください"
+	next "しょきとうろくを してください"
 	db   "@"
 
 String_17fab0: ; 17fab0
 	db   "モバイルセンターが"
-	next "こんでいて つながりません"
+	next "こんでいて つながりません"
 	next "しばらくまって"
-	next "かけなおして ください"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	next "かけなおして ください"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
 String_17faf9: ; 17faf9
-	db   "あてさき メールアドレスに"
+	db   "あてさき メールアドレスに"
 	next "まちがいがあります"
-	next "ただしい メールアドレスを"
+	next "ただしい メールアドレスを"
 	next "いれなおしてください"
 	db   "@"
 
 String_17fb2a: ; 17fb2a
 	db   "メールアドレスに"
-	next "まちがいが あります"
+	next "まちがいが あります"
 	next "とりあつかいせつめいしょを"
 	next "ごらんのうえ"
 	next "モバイルトレーナーで"
-	next "しょきとうろくを してください"
+	next "しょきとうろくを してください"
 	db   "@"
 
 String_17fb6e: ; 17fb6e
 	db   "ログインパスワードに"
-	next "まちがいが あるか"
-	next "モバイルセンターの エラーです"
-	next "パスワードを かくにんして"
-	next "しばらく まって"
-	next "かけなおして ください"
+	next "まちがいが あるか"
+	next "モバイルセンターの エラーです"
+	next "パスワードを かくにんして"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17fbb6: ; 17fbb6
-	db   "データの よみこみが できません"
+	db   "データの よみこみが できません"
 	next "しばらくまって"
-	next "かけなおして ください"
-	next "なおらない ときは"
+	next "かけなおして ください"
+	next "なおらない ときは"
 	next "モバイルサポートセンターへ"
 	next "おといあわせください"
 	db   "@"
@@ -5160,106 +5127,106 @@
 
 String_17fbfe: ; 17fbfe
 	db   "じかんぎれです"
-	next "でんわが きれました"
-	next "でんわを かけなおしてください"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	next "でんわが きれました"
+	next "でんわを かけなおしてください"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
 String_17fc3e: ; 17fc3e
-	db   "ごりよう りょうきんの "
-	next "おしはらいが おくれたばあいには"
-	next "ごりようが できなくなります"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	db   "ごりよう りょうきんの "
+	next "おしはらいが おくれたばあいには"
+	next "ごりようが できなくなります"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
 String_17fc88: ; 17fc88
-	db   "おきゃくさまの ごつごうにより"
+	db   "おきゃくさまの ごつごうにより"
 	next "ごりようできません"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
 String_17fcbf: ; 17fcbf
-	db   "でんわかいせんが こんでいるか"
-	next "モバイルセンターの エラーで"
-	next "つうしんが できません"
-	next "しばらく まって"
-	next "かけなおして ください"
+	db   "でんわかいせんが こんでいるか"
+	next "モバイルセンターの エラーで"
+	next "つうしんが できません"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17fcff: ; 17fcff
-	db   "ごりよう りょうきんが"
-	next "じょうげんを こえているため"
-	next "こんげつは ごりようできません"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	db   "ごりよう りょうきんが"
+	next "じょうげんを こえているため"
+	next "こんげつは ごりようできません"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
 String_17fd47: ; 17fd47
-	db   "げんざい モバイルセンターの"
-	next "てんけんを しているので"
-	next "つうしんが できません"
-	next "しばらく まって"
-	next "かけなおして ください"
+	db   "げんざい モバイルセンターの"
+	next "てんけんを しているので"
+	next "つうしんが できません"
+	next "しばらく まって"
+	next "かけなおして ください"
 	db   "@"
 
 String_17fd84: ; 17fd84
-	db   "データの よみこみが できません"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	db   "データの よみこみが できません"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
 
 String_17fdb2: ; 17fdb2
-	db   "3ぷん いじょう なにも"
-	next "にゅうりょく しなかったので"
-	next "でんわが きれました"
+	db   "3ぷん いじょう なにも"
+	next "にゅうりょく しなかったので"
+	next "でんわが きれました"
 	db   "@"
 
 String_17fdd9: ; 17fdd9
-	db   "つうしんが うまく"
+	db   "つうしんが うまく"
 	next "できませんでした"
-	next "もういちど はじめから"
+	next "もういちど はじめから"
 	next "やりなおしてください"
 	db   "@"
 
 String_17fe03: ; 17fe03
-	db   "データの よみこみが できません"
+	db   "データの よみこみが できません"
 	next "しばらくまって"
-	next "かけなおして ください"
-	next "なおらない ときは"
+	next "かけなおして ください"
+	next "なおらない ときは"
 	next "モバイルサポートセンターへ"
 	next "おといあわせください"
 	db   "@"
 
 String_17fe4b: ; 17fe4b
-	db   "まちじかんが ながいので"
-	next "でんわが きれました"
+	db   "まちじかんが ながいので"
+	next "でんわが きれました"
 	db   "@"
 
 String_17fe63: ; 17fe63
-	db   "あいての モバイルアダプタと"
-	next "タイプが ちがいます"
-	next "くわしくは とりあつかい"
-	next "せつめいしょを ごらんください"
+	db   "あいての モバイルアダプタと"
+	next "タイプが ちがいます"
+	next "くわしくは とりあつかい"
+	next "せつめいしょを ごらんください"
 	db   "@"
 
-String_17fe9a: ; 17fe9a ; unreferenced
+String_17fe9a: ; 17fe9a ; unused
 	db   "ポケモンニュースが"
 	next "あたらしくなっているので"
-	next "レポートを おくれません"
-	next "あたらしい ポケモンニュースの"
-	next "よみこみを さきに してください"
+	next "レポートを おくれません"
+	next "あたらしい ポケモンニュースの"
+	next "よみこみを さきに してください"
 	db   "@"
 
 String_17fedf: ; 17fedf
-	db   "つうしんの じょうきょうが"
-	next "よくないか かけるあいてが"
+	db   "つうしんの じょうきょうが"
+	next "よくないか かけるあいてが"
 	next "まちがっています"
-	next "もういちど かくにんをして"
-	next "でんわを かけなおして ください"
+	next "もういちど かくにんをして"
+	next "でんわを かけなおして ください"
 	db   "@"
 ; 17ff23
 
@@ -5302,5 +5269,5 @@
 ; 17ff68
 
 String_17ff68: ; 17ff68
-	db "101@"
+	db "101@"
 ; 17ff6c
--- a/mobile/mobile_menu.asm
+++ b/mobile/mobile_menu.asm
@@ -102,10 +102,10 @@
 
 
 MobileString1: ; 49fcc
-	db   "めいしフ,ルダー"
+	db   "めいしフォルダー"
 	next "あいさつ"
 	next "プロフィール"
-	next "せ", $1e, "い"
+	next "せ<TTE>い"
 	next "もどる"
 	db   "@"
 ; 49fe9
@@ -115,26 +115,26 @@
 
 String_0x49fe9: ; 49fe9
 	db   "めいし¯つくったり"
-	next "ほぞんしておける フ,ルダーです@"
+	next "ほぞんしておける フォルダーです@"
 ; 4a004
 
 String_0x4a004: ; 4a004
-	db   "モバイルたいせんや じぶんのめいしで"
-	next "つかう あいさつ¯つくります@"
+	db   "モバイルたいせんや じぶんのめいしで"
+	next "つかう あいさつ¯つくります@"
 ; 4a026
 
 String_0x4a026: ; 4a026
-	db   "あなた%じゅうしょや ねんれいの"
-	next "せ", $1e, "い¯かえられます@"
+	db   "あなた<NO>じゅうしょや ねんれいの"
+	next "せ<TTE>い¯かえられます@"
 ; 4a042
 
 String_0x4a042: ; 4a042
-	db  "モバイルセンター", $1d, "せつぞくするとき"
-	next "ひつような こと¯きめます@"
+	db  "モバイルセンター<NI>せつぞくするとき"
+	next "ひつような こと¯きめます@"
 ; 4a062
 
 String_0x4a062: ; 4a062
-	db   "まえ%がめん ", $1d, "もどります"
+	db   "まえ<NO>がめん <NI>もどります"
 	next "@"
 ; 4a071
 
@@ -371,13 +371,13 @@
 ; 4a23d (12:623d)
 
 Strings_4a23d: ; 4a23d
-	db   "いつも せつぞく¯する"
+	db   "いつも せつぞく¯する"
 	next "モバイルセンター¯えらびます@"
 
-	db   "モバイルセンター", $1d, "せつぞくするとき"
+	db   "モバイルセンター<NI>せつぞくするとき"
 	next "つかうパスワード¯ほぞんできます@"
 
-	db   "まえ%がめん ", $1d, "もどります@"
+	db   "まえ<NO>がめん <NI>もどります@"
 
 	db   "@"
 ; 4a28a
@@ -461,9 +461,8 @@
 ; 4a346 (12:6346)
 
 MenuDataHeader_0x4a346: ; 0x4a346
-	db $40 ; flags
-	db 00, 12 ; start coords
-	db 06, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 12, 0, SCREEN_WIDTH - 1, 6
 
 String_4a34b: ; 4a34b
 	db   "いれなおす"
@@ -484,15 +483,14 @@
 ; 0x4a362
 
 DeletePassword_YesNo_MenuDataHeader: ; 0x4a362
-	db $40 ; flags
-	db 07, 14 ; start coords
-	db 11, 19 ; end coords
+	db MENU_BACKUP_TILES ; flags
+	menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
 	dw MenuData2_0x4a36a
 	db 2 ; default option
 ; 0x4a36a
 
 MenuData2_0x4a36a: ; 0x4a36a
-	db $e0 ; flags
+	db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING | STATICMENU_WRAP ; flags
 	db 2 ; items
 	db "はい@"
 	db "いいえ@"
@@ -788,25 +786,25 @@
 String_4a5c5: ; 4a5c5
 	db "じこしょうかい@"
 String_4a5cd: ; 4a5cd
-	db "たいせん ", $4a, "はじまるとき@"
+	db "たいせん <GA>はじまるとき@"
 String_4a5da: ; 4a5da
-	db "たいせん ", $1d, "かったとき@"
+	db "たいせん <NI>かったとき@"
 String_4a5e6: ; 4a5e6
-	db "たいせん ", $1d, "まけたとき@"
+	db "たいせん <NI>まけたとき@"
 String_4a5f2: ; 4a5f2
 	db "もどる@"
 ; 4a5f6
 
 Strings_4a5f6: ; 4a5f6
-	db "めいし や ニュース ", $1d, "のせる@"
-	db "あなた%あいさつです@"
-	db "モバイル たいせん", $4a, "はじまるとき@"
-	db "あいて", $1d, "みえる あいさつです@"
-	db "モバイル たいせんで かったとき@"
-	db "あいて", $1d, "みえる あいさつです@"
-	db "モバイル たいせんで まけたとき@"
-	db "あいて", $1d, "みえる あいさつです@"
-	db "まえ%がめん ", $1d, "もどります@"
+	db "めいし や ニュース <NI>のせる@"
+	db "あなた<NO>あいさつです@"
+	db "モバイル たいせん<GA>はじまるとき@"
+	db "あいて<NI>みえる あいさつです@"
+	db "モバイル たいせんで かったとき@"
+	db "あいて<NI>みえる あいさつです@"
+	db "モバイル たいせんで まけたとき@"
+	db "あいて<NI>みえる あいさつです@"
+	db "まえ<NO>がめん <NI>もどります@"
 	db "@"
 ; 4a680
 
@@ -847,7 +845,7 @@
 	call ClearBGPalettes
 	ld b, SCGB_DIPLOMA
 	call GetSGBLayout
-	farcall Function11c1ab
+	farcall Special_Function11c1ab
 	pop bc
 	call LoadFontsExtra
 	jp Function4a4c4
--- a/mobile/news/news.asm
+++ b/mobile/news/news.asm
@@ -1,9 +1,8 @@
 ; http://forums.glitchcity.info/index.php?topic=7509.msg206449#msg206449
 
-	db $cc, $6b, $1e ; XXX
+	db $cc, $6b, $1e ; unused
 
-Function1f4003: ; 1f4003
-; XXX
+Unreferenced_Function1f4003: ; 1f4003
 	ld a, $6
 	call GetSRAMBank
 	ld hl, .news_data
@@ -16,8 +15,7 @@
 .news_data
 INCBIN "mobile/news/news_1.bin"
 
-Function1f4dbe: ; 1f4dbe
-; XXX
+Unreferenced_Function1f4dbe: ; 1f4dbe
 	ld a, $6
 	call GetSRAMBank
 	ld hl, .news_data
--- a/mobile/print_opp_message.asm
+++ b/mobile/print_opp_message.asm
@@ -10,7 +10,7 @@
 	call AddNTimes
 	ld de, wMobileOpponentBattleMessage
 	ld bc, $c
-	ld a, $5 ; BANK(w5_MobileOpponentBattleMessages)
+	ld a, BANK(w5_MobileOpponentBattleMessages)
 	call FarCopyWRAM
 
 	ld a, [rSVBK]
--- a/pokecrystal.link
+++ b/pokecrystal.link
@@ -106,7 +106,7 @@
 ROMX $24
 	"bank24"
 ROMX $25
-	"Map Headers"
+	"Maps"
 	"Events"
 ROMX $26
 	"Map Scripts 11"
@@ -117,11 +117,11 @@
 ROMX $29
 	"Phone Text"
 ROMX $2a
-	"Map Blockdata 1"
+	"Map Blocks 1"
 ROMX $2b
-	"Map Blockdata 2"
+	"Map Blocks 2"
 ROMX $2c
-	"Map Blockdata 3"
+	"Map Blocks 3"
 ROMX $2d
 	"Tileset Data 5"
 ROMX $2e
--- a/sram.asm
+++ b/sram.asm
@@ -83,7 +83,7 @@
 
 sBackupGameData:: ; b209
 sBackupPlayerData::  ds wPlayerDataEnd - wPlayerData
-sBackupMapData::     ds wMapDataEnd - wMapData
+sBackupCurrMapData:: ds wCurrMapDataEnd - wCurrMapData
 sBackupPokemonData:: ds wPokemonDataEnd - wPokemonData
 sBackupGameDataEnd::
 
@@ -106,7 +106,7 @@
 
 sGameData:: ; a009
 sPlayerData::  ds wPlayerDataEnd - wPlayerData
-sMapData::     ds wMapDataEnd - wMapData
+sCurrMapData:: ds wCurrMapDataEnd - wCurrMapData
 sPokemonData:: ds wPokemonDataEnd - wPokemonData
 sGameDataEnd::
 
@@ -187,9 +187,10 @@
 sMobileEventIndex:: db ; be3c
 
 sCrystalData:: ds wCrystalDataEnd - wCrystalData
-sMobileEventIndexBackup:: db
 
+sMobileEventIndexBackup:: db ; be44
 
+
 SECTION "SRAM Battle Tower", SRAM
 
 ; Battle Tower data must be in SRAM because you can save and leave between battles
@@ -202,7 +203,7 @@
 sNrOfBeatenBattleTowerTrainers:: db
 sBTChoiceOfLevelGroup:: db
 ; Battle Tower trainers are saved here, so nobody appears more than once
-sBTTrainers:: ds BATTLETOWER_NROFTRAINERS ; sbe48
+sBTTrainers:: ds BATTLETOWER_STREAK_LENGTH ; sbe48
 sBattleTowerSaveFileFlags:: db
 sBattleTowerReward:: db
 
@@ -241,6 +242,7 @@
 SECTION "SRAM Mobile", SRAM, BANK [5]
 
 	ds 1 ; former location for sMobileEventIndex, moved to 1:BE3C in English
+
 sTrainerRankings:: ; a001
 sTrainerRankingGameTimeHOF:: ds 4
 sTrainerRankingStepCountHOF:: ds 4
@@ -287,10 +289,11 @@
 sTrainerRankingsChecksum:: ds 2
 sTrainerRankingsEnd:: ; a083
 
-ds 1 ; Former location for sMobileEventIndexBackup, moved to 1:BE44 in English
+	ds 1 ; Former location for sMobileEventIndexBackup, moved to 1:BE44 in English
+
 sTrainerRankingsBackup:: ds sTrainerRankingsEnd - sTrainerRankings
 
-ds $945
+	ds $945
 ; aa4b
 
 sMobileLoginPassword:: ds MOBILE_LOGIN_PASSWORD_LENGTH
--- a/text/battle.asm
+++ /dev/null
@@ -1,1293 +1,0 @@
-BattleText::
-
-BattleText_PlayerPickedUpPayDayMoney: ; 0x80730
-	text "<PLAYER> picked up"
-	line "¥@"
-	deciram wPayDayMoney, 3, 6
-	text "!"
-	prompt
-; 0x80746
-
-WildPokemonAppearedText: ; 0x80746
-	text "Wild @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "appeared!"
-	prompt
-; 0x8075c
-
-HookedPokemonAttackedText: ; 0x8075c
-	text "The hooked"
-	line "@"
-	text_from_ram EnemyMonNick
-	text ""
-	cont "attacked!"
-	prompt
-; 0x80778
-
-PokemonFellFromTreeText: ; 0x80778
-	text_from_ram EnemyMonNick
-	text " fell"
-	line "out of the tree!"
-	prompt
-; 0x80793
-
-WildCelebiAppearedText: ; 0x80793
-	text "Wild @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "appeared!"
-	prompt
-; 0x807a9
-
-WantsToBattleText:: ; 0x807a9
-	text "<ENEMY>"
-	line "wants to battle!"
-	prompt
-; 0x807bd
-
-BattleText_WildFled: ; 0x807bd
-	text "Wild @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "fled!"
-	prompt
-; 0x807cf
-
-BattleText_EnemyFled: ; 0x807cf
-	text "Enemy @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "fled!"
-	prompt
-; 0x807e2
-
-HurtByPoisonText: ; 0x807e2
-	text "<USER>"
-	line "is hurt by poison!"
-	prompt
-; 0x807f8
-
-HurtByBurnText: ; 0x807f8
-	text "<USER>'s"
-	line "hurt by its burn!"
-	prompt
-; 0x8080e
-
-LeechSeedSapsText: ; 0x8080e
-	text "LEECH SEED saps"
-	line "<USER>!"
-	prompt
-; 0x80822
-
-HasANightmareText: ; 0x80822
-	text "<USER>"
-	line "has a NIGHTMARE!"
-	prompt
-; 0x80836
-
-HurtByCurseText: ; 0x80836
-	text "<USER>'s"
-	line "hurt by the CURSE!"
-	prompt
-; 0x8084d
-
-SandstormHitsText: ; 0x8084d
-	text "The SANDSTORM hits"
-	line "<USER>!"
-	prompt
-; 0x80864
-
-PerishCountText: ; 0x80864
-	text "<USER>'s"
-	line "PERISH count is @"
-	deciram wd265, 1, 1
-	text "!"
-	prompt
-; 0x80880
-
-BattleText_TargetRecoveredWithItem: ; 0x80880
-	text "<TARGET>"
-	line "recovered with"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-; 0x80899
-
-BattleText_UserRecoveredPPUsing: ; 0x80899
-	text "<USER>"
-	line "recovered PP using"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-; 0x808b6
-
-BattleText_TargetWasHitByFutureSight: ; 0x808b6
-	text "<TARGET>"
-	line "was hit by FUTURE"
-	cont "SIGHT!"
-	prompt
-; 0x808d2
-
-BattleText_SafeguardFaded: ; 0x808d2
-	text "<USER>'s"
-	line "SAFEGUARD faded!"
-	prompt
-; 0x808e7
-
-BattleText_PkmnLightScreenFell: ; 0x808e7
-	text_from_ram StringBuffer1
-	text " #MON's"
-	line "LIGHT SCREEN fell!"
-	prompt
-; 0x80905
-
-BattleText_PkmnReflectFaded: ; 0x80905
-	text_from_ram StringBuffer1
-	text " #MON's"
-	line "REFLECT faded!"
-	prompt
-; 0x8091f
-
-BattleText_RainContinuesToFall: ; 0x8091f
-	text "Rain continues to"
-	line "fall."
-	prompt
-; 0x80938
-
-BattleText_TheSunlightIsStrong: ; 0x80938
-	text "The sunlight is"
-	line "strong."
-	prompt
-; 0x80951
-
-BattleText_TheSandstormRages: ; 0x80951
-	text "The SANDSTORM"
-	line "rages."
-	prompt
-; 0x80967
-
-BattleText_TheRainStopped: ; 0x80967
-	text "The rain stopped."
-	prompt
-; 0x8097a
-
-BattleText_TheSunlightFaded: ; 0x8097a
-	text "The sunlight"
-	line "faded."
-	prompt
-; 0x8098f
-
-BattleText_TheSandstormSubsided: ; 0x8098f
-	text "The SANDSTORM"
-	line "subsided."
-	prompt
-; 0x809a8
-
-BattleText_EnemyPkmnFainted: ; 0x809a8
-	text "Enemy @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "fainted!"
-	prompt
-; 0x809be
-
-GotMoneyForWinningText:
-	text "<PLAYER> got ¥@"
-	deciram wBattleReward, 3, 6
-	text ""
-	line "for winning!"
-	prompt
-
-BattleText_EnemyWasDefeated: ; 0x809da
-	text "<ENEMY>"
-	line "was defeated!"
-	prompt
-; 0x809eb
-
-TiedAgainstText: ; 0x809eb
-	text "Tied against"
-	line "<ENEMY>!"
-	prompt
-; 0x809fc
-
-SentSomeToMomText:
-	text "<PLAYER> got ¥@"
-	deciram wBattleReward, 3, 6
-	text ""
-	line "for winning!"
-	cont "Sent some to MOM!"
-	prompt
-
-SentHalfToMomText:
-	text "Sent half to MOM!"
-	prompt
-
-SentAllToMomText:
-	text "Sent all to MOM!"
-	prompt
-
-BattleText_0x80a4f: ; 0x80a4f
-	text "<RIVAL>: Huh? I"
-	line "should've chosen"
-	cont "your #MON!"
-	prompt
-; 0x80a75
-
-BattleText_PkmnFainted: ; 0x80a75
-	text_from_ram BattleMonNick
-	text ""
-	line "fainted!"
-	prompt
-; 0x80a83
-
-BattleText_UseNextMon: ; 0x80a83
-	text "Use next #MON?"
-	done
-; 0x80a93
-
-BattleText_0x80a93: ; 0x80a93
-	text "<RIVAL>: Yes!"
-	line "I guess I chose a"
-	cont "good #MON!"
-	prompt
-; 0x80ab9
-
-LostAgainstText: ; 0x80ab9
-	text "Lost against"
-	line "<ENEMY>!"
-	prompt
-; 0x80aca
-
-BattleText_EnemyIsAboutToUseWillPlayerChangePkmn: ; 0x80aca
-	text "<ENEMY>"
-	line "is about to use"
-	cont "@"
-	text_from_ram EnemyMonNick
-	text "."
-
-	para "Will <PLAYER>"
-	line "change #MON?"
-	done
-; 0x80af8
-
-BattleText_EnemySentOut: ; 0x80af8
-	text "<ENEMY>"
-	line "sent out"
-	cont "@"
-	text_from_ram EnemyMonNick
-	text "!"
-	done
-; 0x80b0b
-
-BattleText_TheresNoWillToBattle: ; 0x80b0b
-	text "There's no will to"
-	line "battle!"
-	prompt
-; 0x80b26
-
-BattleText_AnEGGCantBattle: ; 0x80b26
-	text "An EGG can't"
-	line "battle!"
-	prompt
-; 0x80b3b
-
-BattleText_CantEscape2: ; 0x80b3b
-	text "Can't escape!"
-	prompt
-; 0x80b49
-
-BattleText_TheresNoEscapeFromTrainerBattle: ; 0x80b49
-	text "No! There's no"
-	line "running from a"
-	cont "trainer battle!"
-	prompt
-
-BattleText_GotAwaySafely: ; 0x80b77
-	text "Got away safely!"
-	prompt
-
-BattleText_UserFledUsingAStringBuffer1: ; 0x80b89
-	text "<USER>"
-	line "fled using a"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x80ba0
-
-BattleText_CantEscape: ; 0x80ba0
-	text "Can't escape!"
-	prompt
-; 0x80bae
-
-BattleText_UserHurtBySpikes: ; 0x80bae
-	text "<USER>'s"
-	line "hurt by SPIKES!"
-	prompt
-; 0x80bc2
-
-RecoveredUsingText: ; 0x80bc2
-	text "<TARGET>"
-	line "recovered using a"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x80bde
-
-BattleText_UsersStringBuffer1Activated: ; 0x80bde
-	text "<USER>'s"
-	line "@"
-	text_from_ram StringBuffer1
-	text ""
-	cont "activated!"
-	prompt
-; 0x80bf3
-
-BattleText_ItemsCantBeUsedHere: ; 0x80bf3
-	text "Items can't be"
-	line "used here."
-	prompt
-; 0x80c0d
-
-BattleText_PkmnIsAlreadyOut: ; 0x80c0d
-	text_from_ram BattleMonNick
-	text ""
-	line "is already out."
-	prompt
-; 0x80c22
-
-BattleText_PkmnCantBeRecalled: ; 0x80c22
-	text_from_ram BattleMonNick
-	text ""
-	line "can't be recalled!"
-	prompt
-; 0x80c39
-
-BattleText_TheresNoPPLeftForThisMove: ; 0x80c39
-	text "There's no PP left"
-	line "for this move!"
-	prompt
-; 0x80c5b
-
-BattleText_TheMoveIsDisabled: ; 0x80c5b
-	text "The move is"
-	line "DISABLED!"
-	prompt
-; 0x80c72
-
-BattleText_PkmnHasNoMovesLeft: ; 0x80c72
-	text_from_ram BattleMonNick
-	text ""
-	line "has no moves left!"
-	done
-; 0x80c8a
-
-BattleText_TargetsEncoreEnded: ; 0x80c8a
-	text "<TARGET>'s"
-	line "ENCORE ended!"
-	prompt
-; 0x80c9c
-
-BattleText_StringBuffer1GrewToLevel: ; 0x80c9c
-	text_from_ram StringBuffer1
-	text " grew to"
-	line "level @"
-	deciram CurPartyLevel, 1, 3
-	text "!@"
-	sound_dex_fanfare_50_79
-	db "@@"
-; 0x80cb9
-
-BattleText_WildPkmnIsEating: ; 0x80cba
-	text "Wild @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "is eating!"
-	prompt
-; 0x80cd1
-
-BattleText_WildPkmnIsAngry: ; 0x80cd1
-	text "Wild @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "is angry!"
-	prompt
-; 0x80ce7
-
-FastAsleepText: ; 0x80ce7
-	text "<USER>"
-	line "is fast asleep!"
-	prompt
-; 0x80cfa
-
-WokeUpText: ; 0x80cfa
-	text "<USER>"
-	line "woke up!"
-	prompt
-; 0x80d06
-
-FrozenSolidText: ; 0x80d06
-	text "<USER>"
-	line "is frozen solid!"
-	prompt
-; 0x80d1a
-
-FlinchedText: ; 0x80d1a
-	text "<USER>"
-	line "flinched!"
-	prompt
-; 0x80d27
-
-MustRechargeText: ; 0x80d27
-	text "<USER>"
-	line "must recharge!"
-	prompt
-; 0x80d39
-
-DisabledNoMoreText: ; 0x80d39
-	text "<USER>'s"
-	line "disabled no more!"
-	prompt
-; 0x80d4f
-
-IsConfusedText: ; 0x80d4f
-	text "<USER>"
-	line "is confused!"
-	prompt
-; 0x80d5f
-
-HurtItselfText: ; 0x80d5f
-	text "It hurt itself in"
-	line "its confusion!"
-	prompt
-; 0x80d81
-
-ConfusedNoMoreText: ; 0x80d81
-	text "<USER>'s"
-	line "confused no more!"
-	prompt
-; 0x80d97
-
-BecameConfusedText: ; 0x80d97
-	text "<TARGET>"
-	line "became confused!"
-	prompt
-; ItemHealedConfusion
-
-BattleText_ItemHealedConfusion: ; ItemHealedConfusion
-	text "A @"
-	text_from_ram StringBuffer1
-	text " rid"
-	line "<TARGET>"
-	cont "of its confusion."
-	prompt
-; 0x80dcc
-
-AlreadyConfusedText: ; 0x80dcc
-	text "<TARGET>'s"
-	line "already confused!"
-	prompt
-; 0x80de2
-
-BattleText_UsersHurtByStringBuffer1: ; 0x80de2
-	text "<USER>'s"
-	line "hurt by"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x80df5
-
-BattleText_UserWasReleasedFromStringBuffer1: ; 0x80df5
-	text "<USER>"
-	line "was released from"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x80e11
-
-UsedBindText: ; 0x80e11
-	text "<USER>"
-	line "used BIND on"
-	cont "<TARGET>!"
-	prompt
-; 0x80e24
-
-WhirlpoolTrapText: ; 0x80e24
-	text "<TARGET>"
-	line "was trapped!"
-	prompt
-; 0x80e34
-
-FireSpinTrapText: ; 0x80e34
-	text "<TARGET>"
-	line "was trapped!"
-	prompt
-; 0x80e44
-
-WrappedByText: ; 0x80e44
-	text "<TARGET>"
-	line "was WRAPPED by"
-	cont "<USER>!"
-	prompt
-; 0x80e59
-
-ClampedByText: ; 0x80e59
-	text "<TARGET>"
-	line "was CLAMPED by"
-	cont "<USER>!"
-	prompt
-; 0x80e6e
-
-StoringEnergyText: ; 0x80e6e
-	text "<USER>"
-	line "is storing energy!"
-	prompt
-; 0x80e84
-
-UnleashedEnergyText: ; 0x80e84
-	text "<USER>"
-	line "unleashed energy!"
-	prompt
-; 0x80e99
-
-HungOnText: ; 0x80e99
-	text "<TARGET>"
-	line "hung on with"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x80eb0
-
-EnduredText: ; 0x80eb0
-	text "<TARGET>"
-	line "ENDURED the hit!"
-	prompt
-; 0x80ec4
-
-InLoveWithText: ; 0x80ec4
-	text "<USER>"
-	line "is in love with"
-	cont "<TARGET>!"
-	prompt
-; 0x80eda
-
-InfatuationText: ; 0x80eda
-	text "<USER>'s"
-	line "infatuation kept"
-	cont "it from attacking!"
-	prompt
-; 0x80f02
-
-DisabledMoveText: ; 0x80f02
-	text "<USER>'s"
-	line "@"
-	text_from_ram StringBuffer1
-	text " is"
-	cont "DISABLED!"
-	prompt
-; 0x80f19
-
-LoafingAroundText: ; 0x80f19
-	text_from_ram BattleMonNick
-	text " is"
-	line "loafing around."
-	prompt
-; 0x80f31
-
-BeganToNapText: ; 0x80f31
-	text_from_ram BattleMonNick
-	text " began"
-	line "to nap!"
-	prompt
-; 0x80f44
-
-WontObeyText: ; 0x80f44
-	text_from_ram BattleMonNick
-	text " won't"
-	line "obey!"
-	prompt
-; 0x80f54
-
-TurnedAwayText: ; 0x80f54
-	text_from_ram BattleMonNick
-	text " turned"
-	line "away!"
-	prompt
-; 0x80f66
-
-IgnoredOrdersText: ; 0x80f66
-	text_from_ram BattleMonNick
-	text " ignored"
-	line "orders!"
-	prompt
-; 0x80f7b
-
-IgnoredSleepingText: ; 0x80f7b
-	text_from_ram BattleMonNick
-	text " ignored"
-	line "orders…sleeping!"
-	prompt
-; 0x80f99
-
-NoPPLeftText: ; 0x80f99
-	text "But no PP is left"
-	line "for the move!"
-	prompt
-; 0x80fba
-
-HasNoPPLeftText: ; 0x80fba
-	text "<USER>"
-	line "has no PP left for"
-	cont "@"
-	text_from_ram StringBuffer2
-	text "!"
-	prompt
-; 0x80fd7
-
-WentToSleepText: ; 0x80fd7
-	text "<USER>"
-	line "went to sleep!"
-	done
-; 0x80fe9
-
-RestedText: ; 0x80fe9
-	text "<USER>"
-	line "fell asleep and"
-	cont "became healthy!"
-	done
-; 0x8100c
-
-RegainedHealthText: ; 0x8100c
-	text "<USER>"
-	line "regained health!"
-	prompt
-; 0x81020
-
-AttackMissedText: ; 0x81020
-	text "<USER>'s"
-	line "attack missed!"
-	prompt
-; 0x81033
-
-AttackMissed2Text: ; 0x81033
-	text "<USER>'s"
-	line "attack missed!"
-	prompt
-; 0x81046
-
-CrashedText: ; 0x81046
-	text "<USER>"
-	line "kept going and"
-	cont "crashed!"
-	prompt
-; 0x81061
-
-UnaffectedText: ; 0x81061
-	text "<TARGET>'s"
-	line "unaffected!"
-	prompt
-; 0x81071
-
-DoesntAffectText: ; 0x81071
-	text "It doesn't affect"
-	line "<TARGET>!"
-	prompt
-; 0x81086
-
-CriticalHitText: ; 0x81086
-	text "A critical hit!"
-	prompt
-; 0x81097
-
-OneHitKOText: ; 0x81097
-	text "It's a one-hit KO!"
-	prompt
-; 0x810aa
-
-SuperEffectiveText: ; 0x810aa
-	text "It's super-"
-	line "effective!"
-	prompt
-; 0x810c1
-
-NotVeryEffectiveText: ; 0x810c1
-	text "It's not very"
-	line "effective…"
-	prompt
-; 0x810da
-
-TookDownWithItText: ; 0x810da
-	text "<TARGET>"
-	line "took down with it,"
-	cont "<USER>!"
-	prompt
-; 0x810f3
-
-RageBuildingText: ; 0x810f3
-	text "<USER>'s"
-	line "RAGE is building!"
-	prompt
-; 0x81109
-
-GotAnEncoreText: ; 0x81109
-	text "<TARGET>"
-	line "got an ENCORE!"
-	prompt
-; 0x8111b
-
-SharedPainText: ; 0x8111b
-	text "The battlers"
-	line "shared pain!"
-	prompt
-; 0x81136
-
-TookAimText: ; 0x81136
-	text "<USER>"
-	line "took aim!"
-	prompt
-; 0x81143
-
-SketchedText: ; 0x81143
-	text "<USER>"
-	line "SKETCHED"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x81156
-
-DestinyBondEffectText: ; 0x81156
-	text "<USER>'s"
-	line "trying to take its"
-	cont "opponent with it!"
-	prompt
-; 0x8117f
-
-SpiteEffectText: ; 0x8117f
-	text "<TARGET>'s"
-	line "@"
-	text_from_ram StringBuffer1
-	text " was"
-	cont "reduced by @"
-	deciram wd265, 1, 1
-	text "!"
-	prompt
-; 0x811a0
-
-BellChimedText: ; 0x811a0
-	text "A bell chimed!"
-	line ""
-	prompt
-; 0x811b1
-
-FellAsleepText: ; 0x811b1
-	text "<TARGET>"
-	line "fell asleep!"
-	prompt
-; 0x811c1
-
-AlreadyAsleepText: ; 0x811c1
-	text "<TARGET>'s"
-	line "already asleep!"
-	prompt
-; 0x811d5
-
-WasPoisonedText: ; 0x811d5
-	text "<TARGET>"
-	line "was poisoned!"
-	prompt
-; 0x811e6
-
-BadlyPoisonedText: ; 0x811e6
-	text "<TARGET>'s"
-	line "badly poisoned!"
-	prompt
-; 0x811fa
-
-AlreadyPoisonedText: ; 0x811fa
-	text "<TARGET>'s"
-	line "already poisoned!"
-	prompt
-; 0x81210
-
-SuckedHealthText: ; 0x81210
-	text "Sucked health from"
-	line "<TARGET>!"
-	prompt
-; 0x81227
-
-DreamEatenText: ; 0x81227
-	text "<TARGET>'s"
-	line "dream was eaten!"
-	prompt
-; 0x8123c
-
-WasBurnedText: ; 0x8123c
-	text "<TARGET>"
-	line "was burned!"
-	prompt
-; 0x8124b
-
-DefrostedOpponentText: ; 0x8124b
-	text "<TARGET>"
-	line "was defrosted!"
-	prompt
-; 0x8125d
-
-WasFrozenText: ; 0x8125d
-	text "<TARGET>"
-	line "was frozen solid!"
-	prompt
-; 0x81272
-
-WontRiseAnymoreText: ; 0x81272
-	text "<USER>'s"
-	line "@"
-	text_from_ram StringBuffer2
-	text " won't"
-	cont "rise anymore!"
-	prompt
-; 0x8128f
-
-WontDropAnymoreText: ; 0x8128f
-	text "<TARGET>'s"
-	line "@"
-	text_from_ram StringBuffer2
-	text " won't"
-	cont "drop anymore!"
-	prompt
-; 0x812ac
-
-FledFromBattleText:: ; 0x812ac
-	text "<USER>"
-	line "fled from battle!"
-	prompt
-; 0x812c1
-
-FledInFearText: ; 0x812c1
-	text "<TARGET>"
-	line "fled in fear!"
-	prompt
-; 0x812d2
-
-BlownAwayText: ; 0x812d2
-	text "<TARGET>"
-	line "was blown away!"
-	prompt
-; 0x812e5
-
-PlayerHitTimesText: ; 0x812e5
-	text "Hit @"
-	deciram PlayerDamageTaken, 1, 1
-	text " times!"
-	prompt
-; 0x812f8
-
-EnemyHitTimesText: ; 0x812f8
-	text "Hit @"
-	deciram EnemyDamageTaken, 1, 1
-	text " times!"
-	prompt
-; 0x8130b
-
-MistText: ; 0x8130b
-	text "<USER>'s"
-	line "shrouded in MIST!"
-	prompt
-; 0x81321
-
-ProtectedByMistText: ; 0x81321
-	text "<TARGET>'s"
-	line "protected by MIST."
-	prompt
-; 0x81338
-
-GettingPumpedText: ; 0x81338
-	interpret_data
-	text "<USER>'s"
-	line "getting pumped!"
-	prompt
-; 0x8134d
-
-RecoilText: ; 0x8134d
-	text "<USER>'s"
-	line "hit with recoil!"
-	prompt
-; 0x81362
-
-MadeSubstituteText: ; 0x81362
-	text "<USER>"
-	line "made a SUBSTITUTE!"
-	prompt
-; 0x81378
-
-HasSubstituteText: ; 0x81378
-	text "<USER>"
-	line "has a SUBSTITUTE!"
-	prompt
-; 0x8138d
-
-TooWeakSubText: ; 0x8138d
-	text "Too weak to make"
-	line "a SUBSTITUTE!"
-	prompt
-; 0x813ad
-
-SubTookDamageText: ; 0x813ad
-	text "The SUBSTITUTE"
-	line "took damage for"
-	cont "<TARGET>!"
-	prompt
-; 0x813d0
-
-SubFadedText: ; 0x813d0
-	text "<TARGET>'s"
-	line "SUBSTITUTE faded!"
-	prompt
-; 0x813e6
-
-LearnedMoveText: ; 0x813e6
-	text "<USER>"
-	line "learned"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x813f8
-
-WasSeededText: ; 0x813f8
-	text "<TARGET>"
-	line "was seeded!"
-	prompt
-; 0x81407
-
-EvadedText: ; 0x81407
-	text "<TARGET>"
-	line "evaded the attack!"
-	prompt
-; 0x8141d
-
-WasDisabledText: ; 0x8141d
-	text "<TARGET>'s"
-	line "@"
-	text_from_ram StringBuffer1
-	text " was"
-	cont "DISABLED!"
-	prompt
-; 0x81435
-
-CoinsScatteredText: ; 0x81435
-	text "Coins scattered"
-	line "everywhere!"
-	prompt
-; 0x81452
-
-TransformedTypeText: ; 0x81452
-	text "<USER>"
-	line "transformed into"
-	cont "the @"
-	text_from_ram StringBuffer1
-	text "-type!"
-	prompt
-; 0x81476
-
-EliminatedStatsText: ; 0x81476
-	text "All stat changes"
-	line "were eliminated!"
-	prompt
-; 0x81499
-
-TransformedText: ; 0x81499
-	text "<USER>"
-	line "TRANSFORMED into"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x814b4
-
-LightScreenEffectText: ; 0x814b4
-	text "<USER>'s"
-	line "SPCL.DEF rose!"
-	prompt
-; 0x814c7
-
-ReflectEffectText: ; 0x814c7
-	text "<USER>'s"
-	line "DEFENSE rose!"
-	prompt
-; 0x814d9
-
-NothingHappenedText: ; 0x814d9
-	text "But nothing"
-	line "happened."
-	prompt
-; 0x814f0
-
-ButItFailedText: ; 0x814f0
-	text "But it failed!"
-	prompt
-; 0x81500
-
-ItFailedText: ; 0x81500
-	text "It failed!"
-	prompt
-; 0x8150c
-
-DidntAffect1Text: ; 0x8150c
-	text "It didn't affect"
-	line "<TARGET>!"
-	prompt
-; 0x81520
-
-DidntAffect2Text: ; 0x81520
-	text "It didn't affect"
-	line "<TARGET>!"
-	prompt
-; 0x81534
-
-HPIsFullText: ; 0x81534
-	text "<USER>'s"
-	line "HP is full!"
-	prompt
-; 0x81544
-
-DraggedOutText: ; 0x81544
-	text "<USER>"
-	line "was dragged out!"
-	prompt
-; 0x81558
-
-ParalyzedText: ; 0x81558
-	text "<TARGET>'s"
-	line "paralyzed! Maybe"
-	cont "it can't attack!"
-	prompt
-; 0x8157d
-
-FullyParalyzedText: ; 0x8157d
-	text "<USER>'s"
-	line "fully paralyzed!"
-	prompt
-; 0x81592
-
-AlreadyParalyzedText: ; 0x81592
-	text "<TARGET>'s"
-	line "already paralyzed!"
-	prompt
-; 0x815a9
-
-ProtectedByText: ; 0x815a9
-	text "<TARGET>'s"
-	line "protected by"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-; 0x815c1
-
-MirrorMoveFailedText: ; 0x815c1
-	text "The MIRROR MOVE"
-	next "failed!"
-	prompt
-; 0x815da
-
-StoleText: ; 0x815da
-	text "<USER>"
-	line "stole @"
-	text_from_ram StringBuffer1
-	text ""
-	cont "from its foe!"
-	prompt
-; 0x815f7
-
-CantEscapeNowText: ; 0x815f7
-	text "<TARGET>"
-	line "can't escape now!"
-	prompt
-; 0x8160b
-
-StartedNightmareText: ; 0x8160b
-	text "<TARGET>"
-	line "started to have a"
-	cont "NIGHTMARE!"
-	prompt
-; 0x8162b
-
-WasDefrostedText: ; 0x8162b
-	text "<USER>"
-	line "was defrosted!"
-	prompt
-; 0x8163d
-
-PutACurseText: ; 0x8163d
-	text "<USER>"
-	line "cut its own HP and"
-
-	para "put a CURSE on"
-	line "<TARGET>!"
-	prompt
-; 0x81665
-
-ProtectedItselfText: ; 0x81665
-	text "<USER>"
-	line "PROTECTED itself!"
-	prompt
-; 0x8167a
-
-ProtectingItselfText: ; 0x8167a
-	text "<TARGET>'s"
-	line "PROTECTING itself!"
-	done
-; 0x81691
-
-SpikesText: ; 0x81691
-	text "SPIKES scattered"
-	line "all around"
-	cont "<TARGET>!"
-	prompt
-; 0x816b1
-
-IdentifiedText: ; 0x816b1
-	text "<USER>"
-	line "identified"
-	cont "<TARGET>!"
-	prompt
-; 0x816c2
-
-StartPerishText: ; 0x816c2
-	text "Both #MON will"
-	line "faint in 3 turns!"
-	prompt
-; 0x816e4
-
-SandstormBrewedText: ; 0x816e4
-	text "A SANDSTORM"
-	line "brewed!"
-	prompt
-; 0x816f9
-
-BracedItselfText: ; 0x816f9
-	text "<USER>"
-	line "braced itself!"
-	prompt
-; 0x8170b
-
-FellInLoveText: ; 0x8170b
-	text "<TARGET>"
-	line "fell in love!"
-	prompt
-; 0x8171c
-
-CoveredByVeilText: ; 0x8171c
-	text "<USER>'s"
-	line "covered by a veil!"
-	prompt
-; 0x81733
-
-SafeguardProtectText: ; 0x81733
-	text "<TARGET>"
-	line "is protected by"
-	cont "SAFEGUARD!"
-	prompt
-; 0x81751
-
-MagnitudeText: ; 0x81751
-	text "Magnitude @"
-	deciram wd265, 1, 1
-	text "!"
-	prompt
-; 0x81764
-
-ReleasedByText: ; 0x81764
-	text "<USER>"
-	line "was released by"
-	cont "<TARGET>!"
-	prompt
-; 0x8177a
-
-ShedLeechSeedText: ; 0x8177a
-	text "<USER>"
-	line "shed LEECH SEED!"
-	prompt
-; 0x8178e
-
-BlewSpikesText: ; 0x8178e
-	text "<USER>"
-	line "blew away SPIKES!"
-	prompt
-; 0x817a3
-
-DownpourText: ; 0x817a3
-	text "A downpour"
-	line "started!"
-	prompt
-; 0x817b8
-
-SunGotBrightText: ; 0x817b8
-	text "The sunlight got"
-	line "bright!"
-	prompt
-; 0x817d2
-
-BellyDrumText: ; 0x817d2
-	text "<USER>"
-	line "cut its HP and"
-	cont "maximized ATTACK!"
-	prompt
-; 0x817f6
-
-CopiedStatsText: ; 0x817f6
-	text "<USER>"
-	line "copied the stat"
-
-	para "changes of"
-	line "<TARGET>!"
-	prompt
-; 0x81817
-
-ForesawAttackText: ; 0x81817
-	text "<USER>"
-	line "foresaw an attack!"
-	prompt
-; 0x8182d
-
-BeatUpAttackText: ; 0x8182d
-	text_from_ram StringBuffer1
-	text "'s"
-	line "attack!"
-	done
-; 0x8183b
-
-RefusedGiftText: ; 0x8183b
-	text "<TARGET>"
-	line "refused the gift!"
-	prompt
-; 0x81850
-
-IgnoredOrders2Text: ; 0x81850
-	text "<USER>"
-	line "ignored orders!"
-	prompt
-; 0x81863
-
-BattleText_LinkErrorBattleCanceled: ; 0x81863
-	text "Link error…"
-
-	para "The battle has"
-	line "been canceled…"
-	prompt
-; 0x8188e
-
-BattleText_0x8188e: ; 0x8188e
-	text "There is no time"
-	line "left today!"
-	done
-; 0x818ac
--- a/text/battle_tower.asm
+++ /dev/null
@@ -1,743 +1,0 @@
-BattleTowerText_0x1ec000: ; 0x1ec000
-	text "Hello, glad to"
-	line "meet you!"
-
-	para "I do hope we have"
-	line "a good battle."
-	done
-; 0x1ec03b
-
-BattleTowerText_0x1ec03b: ; 0x1ec03b
-	text "Thank you! A most"
-	line "enjoyable battle!"
-	done
-; 0x1ec060
-
-UnknownText_0x1ec060: ; 0x1ec060
-	text "Thank you. You are"
-	line "formidable."
-	done
-; 0x1ec080
-
-BattleTowerText_0x1ec080: ; 0x1ec080
-	text "Work, work, work…"
-	line "I'm always busy!"
-	done
-; 0x1ec0a3
-
-UnknownText_0x1ec0a3: ; 0x1ec0a3
-	text "But, I work hard"
-	line "in battle too!"
-	done
-; 0x1ec0c4
-
-UnknownText_0x1ec0c4: ; 0x1ec0c4
-	text "I'm too busy to be"
-	line "battling!"
-	done
-; 0x1ec0e1
-
-UnknownText_0x1ec0e1: ; 0x1ec0e1
-	text "Brace yourself for"
-	line "my all-out attack!"
-	done
-; 0x1ec108
-
-UnknownText_0x1ec108: ; 0x1ec108
-	text "What a cakewalk!"
-	line "You're too easy!"
-	done
-; 0x1ec12a
-
-UnknownText_0x1ec12a: ; 0x1ec12a
-	text "I won't lose next"
-	line "time, all right?"
-	done
-; 0x1ec14d
-
-UnknownText_0x1ec14d: ; 0x1ec14d
-	text "Heh, your #MON"
-	line "look pretty cool."
-	done
-; 0x1ec16f
-
-UnknownText_0x1ec16f: ; 0x1ec16f
-	text "Hey, hey, no way!"
-	line "You won't win!"
-	done
-; 0x1ec190
-
-UnknownText_0x1ec190: ; 0x1ec190
-	text "You serious?"
-	line "This is brutal!"
-	done
-; 0x1ec1ae
-
-UnknownText_0x1ec1ae: ; 0x1ec1ae
-	text "#MON every day!"
-	line "I love battling!"
-	done
-; 0x1ec1d0
-
-UnknownText_0x1ec1d0: ; 0x1ec1d0
-	text "I'm on top of my"
-	line "game, but not you!"
-	done
-; 0x1ec1f4
-
-UnknownText_0x1ec1f4: ; 0x1ec1f4
-	text "I don't care that"
-	line "I lost, really!"
-	done
-; 0x1ec216
-
-UnknownText_0x1ec216: ; 0x1ec216
-	text "Hi, there! Let's"
-	line "keep this clean!"
-	done
-; 0x1ec238
-
-UnknownText_0x1ec238: ; 0x1ec238
-	text "Whoops, sorry for"
-	line "that wipeout!"
-	done
-; 0x1ec259
-
-UnknownText_0x1ec259: ; 0x1ec259
-	text "Whoops! Come on,"
-	line "let me win one!"
-	done
-; 0x1ec27b
-
-UnknownText_0x1ec27b: ; 0x1ec27b
-	text "Do you want to see"
-	line "my battle level?"
-	done
-; 0x1ec2a0
-
-UnknownText_0x1ec2a0: ; 0x1ec2a0
-	text "Hehehe, I know"
-	line "your level now!"
-	done
-; 0x1ec2c0
-
-UnknownText_0x1ec2c0: ; 0x1ec2c0
-	text "Ouch… I'm just too"
-	line "weak…"
-	done
-; 0x1ec2d9
-
-UnknownText_0x1ec2d9: ; 0x1ec2d9
-	text "Hey, let's battle."
-	line "I'm your opponent."
-	done
-; 0x1ec2fe
-
-UnknownText_0x1ec2fe: ; 0x1ec2fe
-	text "Wow, you're not"
-	line "serious about it!"
-	done
-; 0x1ec320
-
-UnknownText_0x1ec320: ; 0x1ec320
-	text "…Urgh… Nothing"
-	line "positive here…"
-	done
-; 0x1ec33f
-
-UnknownText_0x1ec33f: ; 0x1ec33f
-	text "I'm your"
-	line "opponent."
-
-	para "Get ready to be"
-	line "hammered."
-	done
-; 0x1ec36c
-
-UnknownText_0x1ec36c: ; 0x1ec36c
-	text "Hahah! That was a"
-	line "pushover!"
-	done
-; 0x1ec389
-
-UnknownText_0x1ec389: ; 0x1ec389
-	text "No way! There has"
-	line "to be a mistake!"
-	done
-; 0x1ec3ad
-
-UnknownText_0x1ec3ad: ; 0x1ec3ad
-	text "Hah!"
-	line "Let's get rolling!"
-	done
-; 0x1ec3c5
-
-UnknownText_0x1ec3c5: ; 0x1ec3c5
-	text "Wahahaha! Didn't"
-	line "break a sweat!"
-	done
-; 0x1ec3e5
-
-UnknownText_0x1ec3e5: ; 0x1ec3e5
-	text "Tough! I'm no"
-	line "match for you!"
-	done
-; 0x1ec402
-
-UnknownText_0x1ec402: ; 0x1ec402
-	text "<......><......><......>"
-	line "<......><......>Battle?"
-	done
-; 0x1ec411
-
-UnknownText_0x1ec411: ; 0x1ec411
-	text "<......><......><......>"
-	line "<......><......>I won?"
-	done
-; 0x1ec41f
-
-UnknownText_0x1ec41f: ; 0x1ec41f
-	text "<......><......><......>"
-	line "<......><......>I lost?"
-	done
-; 0x1ec42e
-
-UnknownText_0x1ec42e: ; 0x1ec42e
-	text "You want to be a"
-	line "leader?"
-
-	para "Let me battle you,"
-	line "then!"
-	done
-; 0x1ec461
-
-UnknownText_0x1ec461: ; 0x1ec461
-	text "You need another"
-	line "ten years of"
-
-	para "training to get"
-	line "better, I'd say."
-	done
-; 0x1ec4a0
-
-UnknownText_0x1ec4a0: ; 0x1ec4a0
-	text "You're incredibly"
-	line "talented."
-
-	para "No one can touch"
-	line "you now!"
-	done
-; 0x1ec4d6
-
-UnknownText_0x1ec4d6: ; 0x1ec4d6
-	text "Today, I'm going"
-	line "to whomp you."
-	done
-; 0x1ec4f5
-
-UnknownText_0x1ec4f5: ; 0x1ec4f5
-	text "I knew I'd win."
-	line "I'm so great!"
-	done
-; 0x1ec512
-
-UnknownText_0x1ec512: ; 0x1ec512
-	text "Uh? My plans are"
-	line "out of whack…"
-	done
-; 0x1ec532
-
-UnknownText_0x1ec532: ; 0x1ec532
-	text "I bet you can't"
-	line "beat me!"
-	done
-; 0x1ec54b
-
-UnknownText_0x1ec54b: ; 0x1ec54b
-	text "Those #MON"
-	line "aren't enough!"
-	done
-; 0x1ec565
-
-UnknownText_0x1ec565: ; 0x1ec565
-	text "I want your"
-	line "#MON. Please?"
-	done
-; 0x1ec580
-
-UnknownText_0x1ec580: ; 0x1ec580
-	text "I'll show you a"
-	line "real battle!"
-	done
-; 0x1ec59d
-
-UnknownText_0x1ec59d: ; 0x1ec59d
-	text "This battle…"
-	line "I'm bored!"
-	done
-; 0x1ec5b5
-
-UnknownText_0x1ec5b5: ; 0x1ec5b5
-	text "…I won't turn tail"
-	line "in battle!"
-	done
-; 0x1ec5d3
-
-UnknownText_0x1ec5d3: ; 0x1ec5d3
-	text "Let's go!"
-	line "No holds barred!"
-	done
-; 0x1ec5ee
-
-UnknownText_0x1ec5ee: ; 0x1ec5ee
-	text "Sorry! I wanted"
-	line "the win more!"
-	done
-; 0x1ec60d
-
-UnknownText_0x1ec60d: ; 0x1ec60d
-	text "Wahah! Congrats!"
-	line "I can't do better!"
-	done
-; 0x1ec631
-
-UnknownText_0x1ec631: ; 0x1ec631
-	text "My #MON skills"
-	line "are phenomenal!"
-	done
-; 0x1ec651
-
-UnknownText_0x1ec651: ; 0x1ec651
-	text "You've got a long"
-	line "way to go."
-
-	para "Well, keep trying!"
-	line "Best of luck!"
-	done
-; 0x1ec68f
-
-UnknownText_0x1ec68f: ; 0x1ec68f
-	text "Aww… Don't lose"
-	line "after beating me."
-	done
-; 0x1ec6b1
-
-UnknownText_0x1ec6b1: ; 0x1ec6b1
-	text "Who are you?"
-	line "I don't know you…"
-	done
-; 0x1ec6d0
-
-UnknownText_0x1ec6d0: ; 0x1ec6d0
-	text "I must've imagined"
-	line "that."
-
-	para "There seems to be"
-	line "no one here…"
-	done
-; 0x1ec708
-
-UnknownText_0x1ec708: ; 0x1ec708
-	text "Who am I?"
-	line "I don't know…"
-	done
-; 0x1ec720
-
-UnknownText_0x1ec720: ; 0x1ec720
-	text "Um… Are you that…"
-	line "um…person?"
-	done
-; 0x1ec73e
-
-UnknownText_0x1ec73e: ; 0x1ec73e
-	text "It doesn't appear"
-	line "to be you…"
-	done
-; 0x1ec75b
-
-UnknownText_0x1ec75b: ; 0x1ec75b
-	text "Then you really"
-	line "are the legendary…"
-	done
-; 0x1ec77f
-
-UnknownText_0x1ec77f: ; 0x1ec77f
-	text "I heard that"
-	line "you're hot!"
-	done
-; 0x1ec798
-
-UnknownText_0x1ec798: ; 0x1ec798
-	text "Not bad. I was"
-	line "just a bit better."
-	done
-; 0x1ec7bb
-
-UnknownText_0x1ec7bb: ; 0x1ec7bb
-	text "Eh, you're not"
-	line "that special."
-	done
-; 0x1ec7d8
-
-UnknownText_0x1ec7d8: ; 0x1ec7d8
-	text "I'm scared about"
-	line "what might happen."
-
-	para "My #MON are way"
-	line "too strong."
-	done
-; 0x1ec818
-
-UnknownText_0x1ec818: ; 0x1ec818
-	text "See? My #MON"
-	line "were too strong."
-	done
-; 0x1ec837
-
-UnknownText_0x1ec837: ; 0x1ec837
-	text "Graa! My #MON"
-	line "were total wimps!"
-	done
-; 0x1ec858
-
-UnknownText_0x1ec858: ; 0x1ec858
-	text "Hey, there!"
-	line "I'll take you on!"
-	done
-; 0x1ec876
-
-UnknownText_0x1ec876: ; 0x1ec876
-	text "Don't you have a"
-	line "better strategy?"
-	done
-; 0x1ec898
-
-UnknownText_0x1ec898: ; 0x1ec898
-	text "You've got decent"
-	line "style!"
-	done
-; 0x1ec8b1
-
-UnknownText_0x1ec8b1: ; 0x1ec8b1
-	text "I wonder if I can"
-	line "battle properly…"
-	done
-; 0x1ec8d5
-
-UnknownText_0x1ec8d5: ; 0x1ec8d5
-	text "Um… Sorry…"
-	line "I think I won."
-	done
-; 0x1ec8f0
-
-UnknownText_0x1ec8f0: ; 0x1ec8f0
-	text "I guess I'm not"
-	line "good enough yet…"
-	done
-; 0x1ec911
-
-UnknownText_0x1ec911: ; 0x1ec911
-	text "Wrrooar!"
-	line "I won't lose!"
-	done
-; 0x1ec928
-
-UnknownText_0x1ec928: ; 0x1ec928
-	text "Wrrooar! I knew"
-	line "I was a genius!"
-	done
-; 0x1ec949
-
-UnknownText_0x1ec949: ; 0x1ec949
-	text "Arrooh! I hate it"
-	line "when I lose!"
-	done
-; 0x1ec969
-
-UnknownText_0x1ec969: ; 0x1ec969
-	text "Sorry, but I'm"
-	line "going to win."
-	done
-; 0x1ec986
-
-UnknownText_0x1ec986: ; 0x1ec986
-	text "Yeah! My #MON"
-	line "rule!"
-	done
-; 0x1ec99b
-
-UnknownText_0x1ec99b: ; 0x1ec99b
-	text "Oh, close! I lost"
-	line "by just a bit!"
-	done
-; 0x1ec9bd
-
-UnknownText_0x1ec9bd: ; 0x1ec9bd
-	text "OK, I'm not"
-	line "fooling around!"
-	done
-; 0x1ec9d9
-
-UnknownText_0x1ec9d9: ; 0x1ec9d9
-	text "Yay! Too easy!"
-	line "Like, no way!"
-	done
-; 0x1ec9f7
-
-UnknownText_0x1ec9f7: ; 0x1ec9f7
-	text "No!"
-	line "Like, no way!"
-	done
-; 0x1eca0a
-
-UnknownText_0x1eca0a: ; 0x1eca0a
-	text "Look! My #MON"
-	line "are really cute!"
-	done
-; 0x1eca2a
-
-UnknownText_0x1eca2a: ; 0x1eca2a
-	text "Aren't they really"
-	line "adorable?"
-	done
-; 0x1eca47
-
-UnknownText_0x1eca47: ; 0x1eca47
-	text "I'm sorry, it's"
-	line "all my fault!"
-	done
-; 0x1eca64
-
-UnknownText_0x1eca64: ; 0x1eca64
-	text "Let's get our"
-	line "battle started!"
-	done
-; 0x1eca82
-
-UnknownText_0x1eca82: ; 0x1eca82
-	text "Was I too strong"
-	line "for you?"
-	done
-; 0x1eca9d
-
-UnknownText_0x1eca9d: ; 0x1eca9d
-	text "Ooh, you're in a"
-	line "different class."
-	done
-; 0x1ecabf
-
-UnknownText_0x1ecabf: ; 0x1ecabf
-	text "Are we going to"
-	line "battle? Let's!"
-	done
-; 0x1ecade
-
-UnknownText_0x1ecade: ; 0x1ecade
-	text "Oh, you're too"
-	line "weak. Shame."
-	done
-; 0x1ecafa
-
-UnknownText_0x1ecafa: ; 0x1ecafa
-	text "Wow! Are you quite"
-	line "satisfied?"
-	done
-; 0x1ecb19
-
-UnknownText_0x1ecb19: ; 0x1ecb19
-	text "Oh, you have some"
-	line "rare #MON."
-	done
-; 0x1ecb37
-
-UnknownText_0x1ecb37: ; 0x1ecb37
-	text "May I have one of"
-	line "your #MON?"
-	done
-; 0x1ecb55
-
-UnknownText_0x1ecb55: ; 0x1ecb55
-	text "…I want one of"
-	line "your #MON."
-	done
-; 0x1ecb70
-
-UnknownText_0x1ecb70: ; 0x1ecb70
-	text "Want to hear about"
-	line "my cute #MON?"
-	done
-; 0x1ecb92
-
-UnknownText_0x1ecb92: ; 0x1ecb92
-	text "What do you think"
-	line "about my cuties?"
-	done
-; 0x1ecbb6
-
-UnknownText_0x1ecbb6: ; 0x1ecbb6
-	text "Oh! My! You're a"
-	line "dreadful trainer!"
-	done
-; 0x1ecbd9
-
-UnknownText_0x1ecbd9: ; 0x1ecbd9
-	text "Battle? Sure!"
-	line "Right now!"
-	done
-; 0x1ecbf3
-
-UnknownText_0x1ecbf3: ; 0x1ecbf3
-	text "Oh, I love it!"
-	line "Battling is wild!"
-	done
-; 0x1ecc15
-
-UnknownText_0x1ecc15: ; 0x1ecc15
-	text "Oh, how rude! Wait"
-	line "till next time!"
-	done
-; 0x1ecc39
-
-UnknownText_0x1ecc39: ; 0x1ecc39
-	text "Please let me win!"
-	line "Please?"
-	done
-; 0x1ecc55
-
-UnknownText_0x1ecc55: ; 0x1ecc55
-	text "Wow, thank you!"
-	line "You're so nice!"
-	done
-; 0x1ecc75
-
-UnknownText_0x1ecc75: ; 0x1ecc75
-	text "You're mean!"
-	line "I hate meanies!"
-	done
-; 0x1ecc92
-
-UnknownText_0x1ecc92: ; 0x1ecc92
-	text "Well, can we"
-	line "begin?"
-	done
-; 0x1ecca7
-
-UnknownText_0x1ecca7: ; 0x1ecca7
-	text "Well, I beg your"
-	line "pardon…"
-	done
-; 0x1eccc1
-
-UnknownText_0x1eccc1: ; 0x1eccc1
-	text "Sob… That's not"
-	line "fair!"
-	done
-; 0x1eccd7
-
-UnknownText_0x1eccd7: ; 0x1eccd7
-	text "I'm good!"
-	line "You can't win."
-	done
-; 0x1eccef
-
-UnknownText_0x1eccef: ; 0x1eccef
-	text "Giving up? You're"
-	line "pretty weak!"
-	done
-; 0x1ecd0e
-
-UnknownText_0x1ecd0e: ; 0x1ecd0e
-	text "I won't accept"
-	line "this… No way!"
-	done
-; 0x1ecd2b
-
-UnknownText_0x1ecd2b: ; 0x1ecd2b
-	text "Are you treating"
-	line "this seriously?"
-	done
-; 0x1ecd4d
-
-UnknownText_0x1ecd4d: ; 0x1ecd4d
-	text "Oh, sorry! Looks"
-	line "like I won!"
-	done
-; 0x1ecd6b
-
-UnknownText_0x1ecd6b: ; 0x1ecd6b
-	text "Oh, how nasty!"
-	line "You were serious!"
-	done
-; 0x1ecd8d
-
-UnknownText_0x1ecd8d: ; 0x1ecd8d
-	text "Ahahah! I'll take"
-	line "it easy on you!"
-	done
-; 0x1ecdaf
-
-UnknownText_0x1ecdaf: ; 0x1ecdaf
-	text "Oops, sorry! But"
-	line "I'm happy too!"
-	done
-; 0x1ecdcf
-
-UnknownText_0x1ecdcf: ; 0x1ecdcf
-	text "Oh, oh, I lost!"
-	line "Thanks. Bye!"
-	done
-; 0x1ecded
-
-UnknownText_0x1ecded: ; 0x1ecded
-	text "BATTLE TOWER is a"
-	line "tough place!"
-	done
-; 0x1ece0d
-
-UnknownText_0x1ece0d: ; 0x1ece0d
-	text "You might have a"
-	line "hard time."
-	done
-; 0x1ece2a
-
-UnknownText_0x1ece2a: ; 0x1ece2a
-	text "Ooh, you might"
-	line "make a run here!"
-	done
-; 0x1ece4b
-
-UnknownText_0x1ece4b: ; 0x1ece4b
-	text "I want to see your"
-	line "style in action!"
-	done
-; 0x1ece70
-
-UnknownText_0x1ece70: ; 0x1ece70
-	text "Every battle is a"
-	line "drama!"
-	done
-; 0x1ece8a
-
-UnknownText_0x1ece8a: ; 0x1ece8a
-	text "Oh… Want to trade"
-	line "something?"
-	done
-; 0x1ecea8
-
-UnknownText_0x1ecea8: ; 0x1ecea8
-	text "OK, here goes!"
-	line "I have momentum!"
-	done
-; 0x1ecec9
-
-UnknownText_0x1ecec9: ; 0x1ecec9
-	text "See, I rolled"
-	line "right over you!"
-	done
-; 0x1ecee8
-
-UnknownText_0x1ecee8: ; 0x1ecee8
-	text "No! This did not"
-	line "happen!"
-	done
-; 0x1ecf02
--- a/text/common_1.asm
+++ /dev/null
@@ -1,1844 +1,0 @@
-_FruitBearingTreeText::
-	text "It's a fruit-"
-	line "bearing tree."
-	done
-
-_HeyItsFruitText::
-	text "Hey! It's"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-_ObtainedFruitText::
-	text "Obtained"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-_FruitPackIsFullText::
-	text "But the PACK is"
-	line "full…"
-	done
-
-_NothingHereText::
-	text "There's nothing"
-	line "here…"
-	done
-
-UnknownText_0x1bc06b::
-	text "Which APRICORN"
-	line "should I use?"
-	done
-
-UnknownText_0x1bc089::
-	text "How many should I"
-	line "make?"
-	done
-
-UnknownText_0x1bc0a2::
-	text_from_ram StringBuffer1
-	text ""
-	line "recovered @"
-	deciram wd1f3, 2, 3
-	text "HP!"
-	done
-
-UnknownText_0x1bc0bb::
-	text_from_ram StringBuffer1
-	text "'s"
-	line "cured of poison."
-	done
-
-UnknownText_0x1bc0d2::
-	text_from_ram StringBuffer1
-	text "'s"
-	line "rid of paralysis."
-	done
-
-UnknownText_0x1bc0ea::
-	text_from_ram StringBuffer1
-	text "'s"
-	line "burn was healed."
-	done
-
-UnknownText_0x1bc101::
-	text_from_ram StringBuffer1
-	text ""
-	line "was defrosted."
-	done
-
-UnknownText_0x1bc115::
-	text_from_ram StringBuffer1
-	text ""
-	line "woke up."
-	done
-
-UnknownText_0x1bc123::
-	text_from_ram StringBuffer1
-	text "'s"
-	line "health returned."
-	done
-
-UnknownText_0x1bc13a::
-	text_from_ram StringBuffer1
-	text ""
-	line "is revitalized."
-	done
-
-UnknownText_0x1bc14f::
-	text_from_ram StringBuffer1
-	text " grew to"
-	line "level @"
-	deciram CurPartyLevel, 1, 3
-	text "!@"
-	sound_dex_fanfare_50_79
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1bc16e::
-	text_from_ram StringBuffer1
-	text " came"
-	line "to its senses."
-	done
-
-UnknownText_0x1bc187::
-	text "Please enter any"
-	line "four-digit number."
-	done
-
-UnknownText_0x1bc1ac::
-	text "Enter the same"
-	line "number to confirm."
-	done
-
-UnknownText_0x1bc1cf::
-	text "That's not the"
-	line "same number."
-	done
-
-UnknownText_0x1bc1eb::
-	text "Your PASSCODE has"
-	line "been set."
-	para "Enter this number"
-	line "next time to open"
-	cont "the CARD FOLDER."
-	para ""
-	done
-
-UnknownText_0x1bc23e::
-	text "0000 is invalid!"
-	para ""
-	done
-
-UnknownText_0x1bc251::
-	text "Enter the CARD"
-	next "FOLDER PASSCODE."
-	done
-
-UnknownText_0x1bc272::
-	text "Incorrect"
-	line "PASSCODE!"
-	para ""
-	done
-
-UnknownText_0x1bc288::
-	text "CARD FOLDER open.@@"
-
-UnknownText_0x1bc29c::
-	text "<......><......><......><......><......><......>"
-	line "<......><......><......><......><......><......>"
-
-	para "Zzz… Hm? Wha…?"
-	line "You woke me up!"
-
-	para "Will you check the"
-	line "clock for me?"
-	prompt
-
-UnknownText_0x1bc2eb::
-	text "What time is it?"
-	done
-
-UnknownText_0x1bc2fd::
-	text "What?@@"
-
-UnknownText_0x1bc305::
-	text "?"
-	done
-
-UnknownText_0x1bc308::
-	text "How many minutes?"
-	done
-
-UnknownText_0x1bc31b::
-	text "Whoa!@@"
-
-UnknownText_0x1bc323::
-	text "?"
-	done
-
-UnknownText_0x1bc326::
-	text "!"
-	line "I overslept!"
-	done
-
-UnknownText_0x1bc336::
-	text "!"
-	line "Yikes! I over-"
-	cont "slept!"
-	done
-
-UnknownText_0x1bc34f::
-	text "!"
-	line "No wonder it's so"
-	cont "dark!"
-	done
-
-UnknownText_0x1bc369::
-	text "What day is it?"
-	done
-
-UnknownText_0x1bc37a::
-	text ", is it?"
-	done
-
-UnknownText_0x1bc384::
-	text "There is nothing"
-	line "connected."
-	done
-
-UnknownText_0x1bc3a1::
-	text "Check cell phone"
-	line "adapter."
-	done
-
-UnknownText_0x1bc3bc::
-	text "Check CDMA"
-	line "adapter."
-	done
-
-UnknownText_0x1bc3d1::
-	text "Check DOCOMO PHS"
-	line "adapter."
-	done
-
-UnknownText_0x1bc3ec::
-	text "Check DDI PHS"
-	line "adapter."
-	done
-
-UnknownText_0x1bc404::
-	text "Check unlimited"
-	line "battle mobile"
-	cont "adapter."
-	done
-
-UnknownText_0x1bc42c::
-	text "The password is:"
-	line ""
-	done
-
-UnknownText_0x1bc43f::
-	text "Is this OK?"
-	done
-
-UnknownText_0x1bc44c::
-	text "Enter the"
-	line "ID no."
-	done
-
-UnknownText_0x1bc45e::
-	text "Enter the"
-	line "amount."
-	done
-
-UnknownText_0x1bc471::
-	text "There's nothing to"
-	line "choose."
-	prompt
-
-UnknownText_0x1bc48c::
-	text "Which side do you"
-	line "want to put it on?"
-	done
-
-UnknownText_0x1bc4b2::
-	text "Which side do you"
-	line "want to put away?"
-	done
-
-UnknownText_0x1bc4d7::
-	text "Put away the"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	prompt
-
-UnknownText_0x1bc4ec::
-	text "There's nothing to"
-	line "put away."
-	prompt
-
-UnknownText_0x1bc509::
-	text "Set up the"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	prompt
-
-UnknownText_0x1bc51c::
-	text "Put away the"
-	line "@"
-	text_from_ram StringBuffer3
-	text ""
-
-	para "and set up the"
-	line "@"
-	text_from_ram StringBuffer4
-	text "."
-	prompt
-
-UnknownText_0x1bc546::
-	text "That's already set"
-	line "up."
-	prompt
-
-UnknownText_0x1bc55d::
-	text "It's the TOWN MAP."
-	done
-
-UnknownText_0x1bc570::
-	text "It's a poster of a"
-	line "cute PIKACHU."
-	done
-
-UnknownText_0x1bc591::
-	text "It's a poster of a"
-	line "cute CLEFAIRY."
-	done
-
-UnknownText_0x1bc5b3::
-	text "It's a poster of a"
-	line "cute JIGGLYPUFF."
-	done
-
-UnknownText_0x1bc5d7::
-	text "It's an adorable"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1bc5ef::
-	text "A giant doll! It's"
-	line "fluffy and cuddly."
-	done
-
-UnknownText_0x1bc615::
-	text "Hi, <PLAYER>!"
-	line "How are you?"
-	prompt
-
-UnknownText_0x1bc62a::
-	text "I found a useful"
-	line "item shopping, so"
-	prompt
-
-UnknownText_0x1bc64e::
-	text "I bought it with"
-	line "your money. Sorry!"
-	prompt
-
-UnknownText_0x1bc673::
-	text "It's in your PC."
-	line "You'll like it!"
-	done
-
-UnknownText_0x1bc693::
-	text "While shopping"
-	line "today, I saw this"
-	cont "adorable doll, so"
-	prompt
-
-UnknownText_0x1bc6c7::
-	text "It's in your room."
-	line "You'll love it!"
-	done
-
-UnknownText_0x1bc6e9::
-	text_from_ram wPlayerTrademonSpeciesName
-	text " was"
-	line "sent to @"
-	text_from_ram wOTTrademonSenderName
-	text "."
-	done
-
-UnknownText_0x1bc701::
-	text ""
-	done
-
-UnknownText_0x1bc703::
-	text_from_ram wOTTrademonSenderName
-	text " bids"
-	line "farewell to"
-	done
-
-UnknownText_0x1bc719::
-	text_from_ram wOTTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc71f::
-	text "Take good care of"
-	line "@"
-	text_from_ram wOTTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc739::
-	text "For @"
-	text_from_ram wPlayerTrademonSenderName
-	text "'s"
-	line "@"
-	text_from_ram wPlayerTrademonSpeciesName
-	text ","
-	done
-
-UnknownText_0x1bc74c::
-	text_from_ram wOTTrademonSenderName
-	text " sends"
-	line "@"
-	text_from_ram wOTTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc75e::
-	text_from_ram wOTTrademonSenderName
-	text " will"
-	line "trade @"
-	text_from_ram wOTTrademonSpeciesName
-	db "@@"
-
-UnknownText_0x1bc774::
-	text "for @"
-	text_from_ram wPlayerTrademonSenderName
-	text "'s"
-	line "@"
-	text_from_ram wPlayerTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc787::
-	text_from_ram wPlayerTrademonSenderName
-	text " will"
-	line "trade @"
-	text_from_ram wPlayerTrademonSpeciesName
-	db "@@"
-
-UnknownText_0x1bc79d::
-	text "for @"
-	text_from_ram wOTTrademonSenderName
-	text "'s"
-	line "@"
-	text_from_ram wOTTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc7b0::
-	text_from_ram wPlayerTrademonSenderName
-	text "'s"
-	line "@"
-	text_from_ram wPlayerTrademonSpeciesName
-	text " trade…"
-	done
-
-UnknownText_0x1bc7c3::
-	text "Take good care of"
-	line "@"
-	text_from_ram wOTTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc7dd::
-	text_from_ram wPlayerTrademonSenderName
-	text "'s"
-	line "@"
-	text_from_ram wPlayerTrademonSpeciesName
-	text " trade…"
-	done
-
-UnknownText_0x1bc7f0::
-	text "Take good care of"
-	line "@"
-	text_from_ram wOTTrademonSpeciesName
-	text "."
-	done
-
-UnknownText_0x1bc80a::
-	text_from_ram wOTTrademonSpeciesName
-	text " came"
-	line "back!"
-	done
-
-; Oak's Pokémon Talk
-
-_OPT_IntroText1::
-	text ""
-	line "MARY: PROF.OAK'S"
-	done
-
-_OPT_IntroText2::
-	text ""
-	line "#MON TALK!"
-	done
-
-_OPT_IntroText3::
-	text ""
-	line "With me, MARY!"
-	done
-
-_OPT_OakText1::
-	text ""
-	line "OAK: @"
-	text_from_ram wMonOrItemNameBuffer
-	db "@@"
-
-_OPT_OakText2::
-	text ""
-	line "may be seen around"
-	done
-
-_OPT_OakText3::
-	text ""
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	done
-
-_OPT_MaryText1::
-	text ""
-	line "MARY: @"
-	text_from_ram StringBuffer1
-	text "'s"
-	done
-
-OPT_SweetAdorably::
-	text ""
-	line "sweet and adorably"
-	done
-
-OPT_WigglySlickly::
-	text ""
-	line "wiggly and slickly"
-	done
-
-OPT_AptlyNamed::
-	text ""
-	line "aptly named and"
-	done
-
-OPT_UndeniablyKindOf::
-	text ""
-	line "undeniably kind of"
-	done
-
-OPT_Unbearably::
-	text ""
-	line "so, so unbearably"
-	done
-
-OPT_WowImpressively::
-	text ""
-	line "wow, impressively"
-	done
-
-OPT_AlmostPoisonously::
-	text ""
-	line "almost poisonously"
-	done
-
-OPT_Sensually::
-	text ""
-	line "ooh, so sensually"
-	done
-
-OPT_Mischievously::
-	text ""
-	line "so mischievously"
-	done
-
-OPT_Topically::
-	text ""
-	line "so very topically"
-	done
-
-OPT_Addictively::
-	text ""
-	line "sure addictively"
-	done
-
-OPT_LooksInWater::
-	text ""
-	line "looks in water is"
-	done
-
-OPT_EvolutionMustBe::
-	text ""
-	line "evolution must be"
-	done
-
-OPT_Provocatively::
-	text ""
-	line "provocatively"
-	done
-
-OPT_FlippedOut::
-	text ""
-	line "so flipped out and"
-	done
-
-OPT_HeartMeltingly::
-	text ""
-	line "heart-meltingly"
-	done
-
-OPT_Cute::
-	text ""
-	line "cute."
-	done
-
-OPT_Weird::
-	text ""
-	line "weird."
-	done
-
-OPT_Pleasant::
-	text ""
-	line "pleasant."
-	done
-
-OPT_BoldSortOf::
-	text ""
-	line "bold, sort of."
-	done
-
-OPT_Frightening::
-	text ""
-	line "frightening."
-	done
-
-OPT_SuaveDebonair::
-	text ""
-	line "suave & debonair!"
-	done
-
-OPT_Powerful::
-	text ""
-	line "powerful."
-	done
-
-OPT_Exciting::
-	text ""
-	line "exciting."
-	done
-
-OPT_Groovy::
-	text ""
-	line "groovy!"
-	done
-
-OPT_Inspiring::
-	text ""
-	line "inspiring."
-	done
-
-OPT_Friendly::
-	text ""
-	line "friendly."
-	done
-
-OPT_HotHotHot::
-	text ""
-	line "hot, hot, hot!"
-	done
-
-OPT_Stimulating::
-	text ""
-	line "stimulating."
-	done
-
-OPT_Guarded::
-	text ""
-	line "guarded."
-	done
-
-OPT_Lovely::
-	text ""
-	line "lovely."
-	done
-
-OPT_Speedy::
-	text ""
-	line "speedy."
-	done
-
-_OPT_PokemonChannelText::
-	text "#MON"
-	done
-
-_PokedexShowText::
-	text ""
-	line "@"
-	text_from_ram StringBuffer1
-	db "@@"
-
-; Pokémon Music Channel / Pokémusic
-
-_BenIntroText1::
-	text ""
-	line "BEN: #MON MUSIC"
-	done
-
-_BenIntroText2::
-	text ""
-	line "CHANNEL!"
-	done
-
-_BenIntroText3::
-	text ""
-	line "It's me, DJ BEN!"
-	done
-
-_FernIntroText1::
-	text ""
-	line "FERN: #MUSIC!"
-	done
-
-_FernIntroText2::
-	text ""
-	line "With DJ FERN!"
-	done
-
-_BenFernText1::
-	text ""
-	line "Today's @"
-	current_day
-	text ","
-	done
-
-_BenFernText2A::
-	text ""
-	line "so let us jam to"
-	done
-
-_BenFernText2B::
-	text ""
-	line "so chill out to"
-	done
-
-_BenFernText3A::
-	text ""
-	line "#MON March!"
-	done
-
-_BenFernText3B::
-	text ""
-	line "#MON Lullaby!"
-	done
-
-; Lucky Channel
-
-_LC_Text1::
-	text ""
-	line "REED: Yeehaw! How"
-	done
-
-_LC_Text2::
-	text ""
-	line "y'all doin' now?"
-	done
-
-_LC_Text3::
-	text ""
-	line "Whether you're up"
-	done
-
-_LC_Text4::
-	text ""
-	line "or way down low,"
-	done
-
-_LC_Text5::
-	text ""
-	line "don't you miss the"
-	done
-
-_LC_Text6::
-	text ""
-	line "LUCKY NUMBER SHOW!"
-	done
-
-_LC_Text7::
-	text ""
-	line "This week's Lucky"
-	done
-
-_LC_Text8::
-	text ""
-	line "Number is @"
-	interpret_data
-	text_from_ram StringBuffer1
-	text "!"
-	done
-
-_LC_Text9::
-	text ""
-	line "I'll repeat that!"
-	done
-
-_LC_Text10::
-	text ""
-	line "Match it and go to"
-	done
-
-_LC_Text11::
-	text ""
-	line "the RADIO TOWER!"
-	done
-
-_LC_DragText1::
-	text ""
-	line "…Repeating myself"
-	done
-
-_LC_DragText2::
-	text ""
-	line "gets to be a drag…"
-	done
-
-; Places and People
-
-_PnP_Text1::
-	text ""
-	line "PLACES AND PEOPLE!"
-	done
-
-_PnP_Text2::
-	text ""
-	line "Brought to you by"
-	done
-
-_PnP_Text3::
-	text ""
-	line "me, DJ LILY!"
-	done
-
-_PnP_Text4::
-	text ""
-	line "@"
-	text_from_ram StringBuffer2
-	text " @"
-	text_from_ram StringBuffer1
-	db "@@"
-
-_PnP_cute::
-	text ""
-	line "is cute."
-	done
-
-_PnP_lazy::
-	text ""
-	line "is sort of lazy."
-	done
-
-_PnP_happy::
-	text ""
-	line "is always happy."
-	done
-
-_PnP_noisy::
-	text ""
-	line "is quite noisy."
-	done
-
-_PnP_precocious::
-	text ""
-	line "is precocious."
-	done
-
-_PnP_bold::
-	text ""
-	line "is somewhat bold."
-	done
-
-_PnP_picky::
-	text ""
-	line "is too picky!"
-	done
-
-_PnP_sortofok::
-	text ""
-	line "is sort of OK."
-	done
-
-_PnP_soso::
-	text ""
-	line "is just so-so."
-	done
-
-_PnP_great::
-	text ""
-	line "is actually great."
-	done
-
-_PnP_mytype::
-	text ""
-	line "is just my type."
-	done
-
-_PnP_cool::
-	text ""
-	line "is so cool, no?"
-	done
-
-_PnP_inspiring::
-	text ""
-	line "is inspiring!"
-	done
-
-_PnP_weird::
-	text ""
-	line "is kind of weird."
-	done
-
-_PnP_rightforme::
-	text ""
-	line "is right for me?"
-	done
-
-_PnP_odd::
-	text ""
-	line "is definitely odd!"
-	done
-
-_PnP_Text5::
-	text ""
-	line "@"
-	text_from_ram StringBuffer1
-	db "@@"
-
-_RocketRadioText1::
-	text ""
-	line "… …Ahem, we are"
-	done
-
-_RocketRadioText2::
-	text ""
-	line "TEAM ROCKET!"
-	done
-
-_RocketRadioText3::
-	text ""
-	line "After three years"
-	done
-
-_RocketRadioText4::
-	text ""
-	line "of preparation, we"
-	done
-
-_RocketRadioText5::
-	text ""
-	line "have risen again"
-	done
-
-_RocketRadioText6::
-	text ""
-	line "from the ashes!"
-	done
-
-_RocketRadioText7::
-	text ""
-	line "GIOVANNI! @"
-	interpret_data
-	text "Can you"
-	done
-
-_RocketRadioText8::
-	text ""
-	line "hear?@"
-	interpret_data
-	text " We did it!"
-	done
-
-_RocketRadioText9::
-	text ""
-	line "@"
-	interpret_data
-	text "Where is our boss?"
-	done
-
-_RocketRadioText10::
-	text ""
-	line "@"
-	interpret_data
-	text "Is he listening?"
-	done
-
-_BuenaRadioText1::
-	text ""
-	line "BUENA: BUENA here!"
-	done
-
-_BuenaRadioText2::
-	text ""
-	line "Today's password!"
-	done
-
-_BuenaRadioText3::
-	text ""
-	line "Let me think… It's"
-	done
-
-_BuenaRadioText4::
-	text ""
-	line "@"
-	text_from_ram StringBuffer1
-	text "!"
-	done
-
-_BuenaRadioText5::
-	text ""
-	line "Don't forget it!"
-	done
-
-_BuenaRadioText6::
-	text ""
-	line "I'm in GOLDENROD's"
-	done
-
-_BuenaRadioText7::
-	text ""
-	line "RADIO TOWER!"
-	done
-
-_BuenaRadioMidnightText1::
-	text ""
-	line "BUENA: Oh my…"
-	done
-
-_BuenaRadioMidnightText2::
-	text ""
-	line "It's midnight! I"
-	done
-
-_BuenaRadioMidnightText3::
-	text ""
-	line "have to shut down!"
-	done
-
-_BuenaRadioMidnightText4::
-	text ""
-	line "Thanks for tuning"
-	done
-
-_BuenaRadioMidnightText5::
-	text ""
-	line "in to the end! But"
-	done
-
-_BuenaRadioMidnightText6::
-	text ""
-	line "don't stay up too"
-	done
-
-_BuenaRadioMidnightText7::
-	text ""
-	line "late! Presented to"
-	done
-
-_BuenaRadioMidnightText8::
-	text ""
-	line "you by DJ BUENA!"
-	done
-
-_BuenaRadioMidnightText9::
-	text "I'm outta here!"
-	done
-
-_BuenaRadioMidnightText10::
-	text "…"
-	done
-
-_BuenaOffTheAirText::
-	text ""
-	line ""
-	done
-
-Text_EnemyWithdrew::
-	text "<ENEMY>"
-	line "withdrew"
-	cont "@"
-	text_from_ram EnemyMonNick
-	text "!"
-	prompt
-
-Text_EnemyUsedOn::
-	text "<ENEMY>"
-	line "used @"
-	text_from_ram wMonOrItemNameBuffer
-	text ""
-	cont "on @"
-	text_from_ram EnemyMonNick
-	text "!"
-	prompt
-
-Text_ThatCantBeUsedRightNow::
-	text "That can't be used"
-	line "right now."
-	prompt
-
-Text_ThatItemCantBePutInThePack::
-	text "That item can't be"
-	line "put in the PACK."
-	done
-
-Text_TheItemWasPutInThePack::
-	text "The @"
-	text_from_ram StringBuffer1
-	text ""
-	line "was put in the"
-	cont "PACK."
-	done
-
-Text_RemainingTime::
-	text "Remaining Time"
-	done
-
-Text_YourPkmnsHPWasHealed::
-	text "Your #MON's HP"
-	line "was healed."
-	prompt
-
-Text_Warping::
-	text "Warping…"
-	done
-
-UnknownText_0x1bd05e::
-	text "Which number"
-	line "should be changed?"
-	done
-
-UnknownText_0x1bd07f::
-	text "Will you play with"
-	line "@"
-	text_from_ram StringBuffer2
-	text "?"
-	done
-
-UnknownText_0x1bd09a::
-	text "You need two #-"
-	line "MON for breeding."
-	prompt
-
-Text_BreedingIsNotPossible::
-	text "Breeding is not"
-	line "possible."
-	prompt
-
-UnknownText_0x1bd0d8::
-	text "The compatibility"
-	line "is @"
-	deciram wd265, 1, 3
-	text "."
-	cont "Should they breed?"
-	done
-
-UnknownText_0x1bd109::
-	text "There is no EGG."
-	line ""
-	prompt
-
-UnknownText_0x1bd11c::
-	text "It's going to"
-	line "hatch!"
-	prompt
-
-UnknownText_0x1bd131::
-	text "Test event"
-	line "@"
-	deciram StringBuffer2, 1, 2
-	text "?"
-	done
-
-UnknownText_0x1bd145::
-	text "Start!"
-	done
-
-UnknownText_0x1bd14d::
-	text "End!"
-	done
-
-UnknownText_0x1bd153::
-	text "For a boy!"
-	done
-
-UnknownText_0x1bd15f::
-	text "For a girl!"
-	done
-
-UnknownText_0x1bd16c::
-	text "This doesn't"
-	line "concern a boy!"
-	done
-
-UnknownText_0x1bd188::
-	text "The BOX is full!"
-	done
-
-UnknownText_0x1bd19a::
-	text "A new CARD arrived"
-	line "from @"
-	text_from_ram StringBuffer2
-	text "."
-	done
-
-UnknownText_0x1bd1ba::
-	text "Put this CARD in"
-	line "the CARD FOLDER?"
-	done
-
-UnknownText_0x1bd1dd::
-	text_from_ram StringBuffer2
-	text "'s CARD was"
-	line "listed as no.@"
-	deciram StringBuffer1, 1, 2
-	text "."
-	prompt
-
-UnknownText_0x1bd201::
-	text "Starting link."
-	done
-
-UnknownText_0x1bd211::
-	text "Link terminated."
-	done
-
-UnknownText_0x1bd223::
-	text "Closing link."
-	done
-
-UnknownText_0x1bd232::
-	text "Clear the time"
-	line "limit?"
-	done
-
-UnknownText_0x1bd249::
-	text "The time limit was"
-	line "cleared."
-	done
-
-UnknownText_0x1bd266::
-	text "Pick which packet"
-	line "as an error?"
-	done
-
-UnknownText_0x1bd286::
-	text "Trading @"
-	text_from_ram StringBuffer2
-	text ""
-	line "for @"
-	text_from_ram StringBuffer1
-	text "…"
-	done
-
-UnknownText_0x1bd2a0::
-	text "Obtained the"
-	line "VOLTORBBADGE!"
-	done
-
-UnknownText_0x1bd2bc::
-	text "Which floor?"
-	done
-
-UnknownText_0x1bd2ca::
-	text "ANNOUNCER: BEEEP!"
-
-	para "Time's up!"
-	done
-
-UnknownText_0x1bd2e7::
-	text "ANNOUNCER: The"
-	line "Contest is over!"
-	done
-
-UnknownText_0x1bd308::
-	text "REPEL's effect"
-	line "wore off."
-	done
-
-UnknownText_0x1bd321::
-	text "<PLAYER> found"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1bd331::
-	text "But <PLAYER> has"
-	line "no space left…"
-	done
-
-UnknownText_0x1bd34b::
-	text "I just saw some"
-	line "rare @"
-	text_from_ram StringBuffer1
-	text " in"
-	cont "@"
-	text_from_ram StringBuffer2
-	text "."
-
-	para "I'll call you if I"
-	line "see another rare"
-	cont "#MON, OK?"
-	prompt
-
-UnknownText_0x1bd39e::
-	text "SAVING RECORD…"
-	line "DON'T TURN OFF!"
-	done
-
-UnknownText_0x1bd3be::
-	text_from_ram PlayerName
-	text " received"
-	line "@"
-	text_from_ram StringBuffer1
-	text "!@"
-	sound_item
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1bd3d7::
-	text "You have no coins."
-	prompt
-
-UnknownText_0x1bd3eb::
-	text "You don't have a"
-	line "COIN CASE."
-	prompt
-
-UnknownText_0x1bd407::
-	text "OK, connect the"
-	line "Game Link Cable."
-	prompt
-
-UnknownText_0x1bd429::
-	text "<PLAYER> traded"
-	line "@"
-	text_from_ram wMonOrItemNameBuffer
-	text " for"
-	cont "@"
-	text_from_ram StringBuffer2
-	text ".@@"
-
-UnknownText_0x1bd445::
-	sound_dex_fanfare_80_109
-	interpret_data
-	db "@@"
-
-UnknownText_0x1bd449::
-	text "I collect #MON."
-	line "Do you have"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "?"
-
-	para "Want to trade it"
-	line "for my @"
-	text_from_ram StringBuffer2
-	text "?"
-	done
-
-UnknownText_0x1bd48c::
-	text "You don't want to"
-	line "trade? Aww…"
-	done
-
-UnknownText_0x1bd4aa::
-	text "Huh? That's not"
-	line "@"
-	text_from_ram StringBuffer1
-	text ". "
-	cont "What a letdown…"
-	done
-
-UnknownText_0x1bd4d2::
-	text "Yay! I got myself"
-	line "@"
-	text_from_ram StringBuffer1
-	text "!"
-	cont "Thanks!"
-	done
-
-UnknownText_0x1bd4f4::
-	text "Hi, how's my old"
-	line "@"
-	text_from_ram StringBuffer2
-	text " doing?"
-	done
-
-UnknownText_0x1bd512::
-	text "Hi, I'm looking"
-	line "for this #MON."
-
-	para "If you have"
-	line "@"
-	text_from_ram StringBuffer1
-	text ", would"
-
-	para "you trade it for"
-	line "my @"
-	text_from_ram StringBuffer2
-	text "?"
-	done
-
-UnknownText_0x1bd565::
-	text "You don't have"
-	line "one either?"
-
-	para "Gee, that's really"
-	line "disappointing…"
-	done
-
-UnknownText_0x1bd5a1::
-	text "You don't have"
-	line "@"
-	text_from_ram StringBuffer1
-	text "? That's"
-	cont "too bad, then."
-	done
-
-UnknownText_0x1bd5cc::
-	text "Great! Thank you!"
-
-	para "I finally got"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	done
-
-UnknownText_0x1bd5f4::
-	text "Hi! The @"
-	text_from_ram wMonOrItemNameBuffer
-	text ""
-	line "you traded me is"
-	cont "doing great!"
-	done
-
-UnknownText_0x1bd621::
-	text_from_ram wMonOrItemNameBuffer
-	text "'s cute,"
-	line "but I don't have"
-
-	para "it. Do you have"
-	line "@"
-	text_from_ram StringBuffer1
-	text "?"
-
-	para "Want to trade it"
-	line "for my @"
-	text_from_ram StringBuffer2
-	text "?"
-	done
-
-UnknownText_0x1bd673::
-	text "You don't want to"
-	line "trade? Oh, darn…"
-	done
-
-UnknownText_0x1bd696::
-	text "That's not"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-
-	para "Please trade with"
-	line "me if you get one."
-	done
-
-UnknownText_0x1bd6cd::
-	text "Wow! Thank you!"
-	line "I always wanted"
-	cont "@"
-	text_from_ram wMonOrItemNameBuffer
-	text "!"
-	done
-
-UnknownText_0x1bd6f5::
-	text "How is that"
-	line "@"
-	text_from_ram StringBuffer2
-	text " I"
-	cont "traded you doing?"
-
-	para "Your @"
-	text_from_ram wMonOrItemNameBuffer
-	text "'s"
-	line "so cute!"
-	done
-
-UnknownText_0x1bd731::
-	text "Uh? What happened?"
-	done
-
-UnknownText_0x1bd745::
-	text "Trading is so odd…"
-
-	para "I still have a lot"
-	line "to learn about it."
-	done
-
-UnknownText_0x1bd77f::
-	text "Wow, that's a cute"
-	line "#MON."
-
-	para "Where did you get"
-	line "it?"
-
-	para "…"
-
-	para "So, you're leaving"
-	line "on an adventure…"
-
-	para "OK!"
-	line "I'll help too."
-
-	para "But what can I do"
-	line "for you?"
-
-	para "I know! I'll save"
-	line "money for you."
-
-	para "On a long journey,"
-	line "money's important."
-
-	para "Do you want me to"
-	line "save your money?"
-	done
-
-UnknownText_0x1bd868::
-	text "OK, I'll take care"
-	line "of your money."
-
-	para "<......><......><......>"
-	prompt
-
-UnknownText_0x1bd88e::
-	text "Be careful."
-
-	para "#MON are your"
-	line "friends. You need"
-	cont "to work as a team."
-
-	para "Now, go on!"
-	done
-
-UnknownText_0x1bd8da::
-	text "Hi! Welcome home!"
-	line "You're trying very"
-	cont "hard, I see."
-
-	para "I've kept your"
-	line "room tidy."
-
-	para "Or is this about"
-	line "your money?"
-	done
-
-UnknownText_0x1bd942::
-	text "What do you want"
-	line "to do?"
-	done
-
-UnknownText_0x1bd95b::
-	text "How much do you"
-	line "want to save?"
-	done
-
-UnknownText_0x1bd97a::
-	text "How much do you"
-	line "want to take?"
-	done
-
-UnknownText_0x1bd999::
-	text "Do you want to"
-	line "save some money?"
-	done
-
-UnknownText_0x1bd9ba::
-	text "You haven't saved"
-	line "that much."
-	prompt
-
-UnknownText_0x1bd9d7::
-	text "You can't take"
-	line "that much."
-	prompt
-
-UnknownText_0x1bd9f1::
-	text "You don't have"
-	line "that much."
-	prompt
-
-UnknownText_0x1bda0b::
-	text "You can't save"
-	line "that much."
-	prompt
-
-UnknownText_0x1bda25::
-	text "OK, I'll save your"
-	line "money. Trust me!"
-
-	para "<PLAYER>, stick"
-	line "with it!"
-	done
-
-UnknownText_0x1bda5b::
-	text "Your money's safe"
-	line "here! Get going!"
-	done
-
-UnknownText_0x1bda7e::
-	text "<PLAYER>, don't"
-	line "give up!"
-	done
-
-UnknownText_0x1bda90::
-	text "Just do what"
-	line "you can."
-	done
-
-UnknownText_0x1bdaa7::
-	text ""
-	done
-
-UnknownText_0x1bdaa9::
-	text "I'm the DAY-CARE"
-	line "MAN. Want me to"
-	cont "raise a #MON?"
-	done
-
-UnknownText_0x1bdad8::
-	text "I'm the DAY-CARE"
-	line "MAN. Do you know"
-	cont "about EGGS?"
-
-	para "I was raising"
-	line "#MON with my"
-	cont "wife, you see."
-
-	para "We were shocked to"
-	line "find an EGG!"
-
-	para "How incredible is"
-	line "that?"
-
-	para "So, want me to"
-	line "raise a #MON?"
-	done
-
-UnknownText_0x1bdb85::
-	text "I'm the DAY-CARE"
-	line "LADY."
-
-	para "Should I raise a"
-	line "#MON for you?"
-	done
-
-UnknownText_0x1bdbbb::
-	text "I'm the DAY-CARE"
-	line "LADY. Do you know"
-	cont "about EGGS?"
-
-	para "My husband and I"
-	line "were raising some"
-	cont "#MON, you see."
-
-	para "We were shocked to"
-	line "find an EGG!"
-
-	para "How incredible"
-	line "could that be?"
-
-	para "Should I raise a"
-	line "#MON for you?"
-	done
-
-UnknownText_0x1bdc79::
-	text "What should I"
-	line "raise for you?"
-	prompt
-
-UnknownText_0x1bdc97::
-	text "Oh? But you have"
-	line "just one #MON."
-	prompt
-
-UnknownText_0x1bdcb8::
-	text "Sorry, but I can't"
-	line "accept an EGG."
-	prompt
-
-UnknownText_0x1bdcda::
-	text "Remove MAIL before"
-	line "you come see me."
-	prompt
-
-UnknownText_0x1bdcff::
-	text "If you give me"
-	line "that, what will"
-	cont "you battle with?"
-	prompt
-
-UnknownText_0x1bdd30::
-	text "OK. I'll raise"
-	line "your @"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1bdd4b::
-	text "Come back for it"
-	line "later."
-	done
-
-UnknownText_0x1bdd64::
-	text "Are we geniuses or"
-	line "what? Want to see"
-	cont "your @"
-	text_from_ram StringBuffer1
-	text "?"
-	done
-
-UnknownText_0x1bdd96::
-	text "Your @"
-	text_from_ram StringBuffer1
-	text ""
-	line "has grown a lot."
-
-	para "By level, it's"
-	line "grown by @"
-	deciram StringBuffer2 + 1, 1, 3
-	text "."
-
-	para "If you want your"
-	line "#MON back, it"
-	cont "will cost ¥@"
-	deciram StringBuffer2 + 2, 3, 4
-	text "."
-	done
-
-UnknownText_0x1bde04::
-	text "Perfect! Here's"
-	line "your #MON."
-	prompt
-
-UnknownText_0x1bde1f::
-	text "<PLAYER> got back"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1bde32::
-	text "Huh? Back already?"
-	line "Your @"
-	text_from_ram StringBuffer1
-	text ""
-	para "needs a little"
-	line "more time with us."
-
-	para "If you want your"
-	line "#MON back, it"
-	cont "will cost ¥100."
-	done
-
-UnknownText_0x1bdea2::
-	text "You have no room"
-	line "for it."
-	prompt
-
-UnknownText_0x1bdebc::
-	text "You don't have"
-	line "enough money."
-	prompt
-
-UnknownText_0x1bded9::
-	text "Oh, fine then."
-	prompt
-
-UnknownText_0x1bdee9::
-	text "Come again."
-	done
-
-UnknownText_0x1bdef6::
-	text "Not yet…"
-	done
-
-UnknownText_0x1bdf00::
-	text "Ah, it's you!"
-
-	para "We were raising"
-	line "your #MON, and"
-
-	para "my goodness, were"
-	line "we surprised!"
-
-	para "Your #MON had"
-	line "an EGG!"
-
-	para "We don't know how"
-	line "it got there, but"
-
-	para "your #MON had"
-	line "it. You want it?"
-	done
-
-UnknownText_0x1bdfa5::
-	text "<PLAYER> received"
-	line "the EGG!"
-	done
-
-UnknownText_0x1bdfba::
-	text "Take good care of"
-	line "it."
-	done
-
-UnknownText_0x1bdfd1::
-	text "Well then, I'll"
-	line "keep it. Thanks!"
-	done
-
-UnknownText_0x1bdff2::
-	text "You have no room"
-	line "in your party."
-	cont "Come back later."
-	done
-
-UnknownText_0x1be024::
-	text "Which #MON"
-	line "should I photo-"
-	cont "graph?"
-	prompt
-
-UnknownText_0x1be047::
-	text "All righty. Hold"
-	line "still for a bit."
-	prompt
-
-UnknownText_0x1be06a::
-	text "Presto! All done."
-	line "Come again, OK?"
-	done
--- a/text/common_2.asm
+++ /dev/null
@@ -1,309 +1,0 @@
-UnknownText_0x1c0000::
-	text "Oh, no picture?"
-	line "Come again, OK?"
-	done
-
-UnknownText_0x1c0021::
-	text "An EGG? My talent"
-	line "is worth more…"
-	done
-
-UnknownText_0x1c0043::
-	text "Hello, hello! I'm"
-	line "the NAME RATER."
-
-	para "I rate the names"
-	line "of #MON."
-
-	para "Would you like me"
-	line "to rate names?"
-	done
-
-UnknownText_0x1c00a0::
-	text "Which #MON's"
-	line "nickname should I"
-	cont "rate for you?"
-	prompt
-
-UnknownText_0x1c00cd::
-	text "Hm… @"
-	text_from_ram StringBuffer1
-	text "…"
-	line "That's a fairly"
-	cont "decent name."
-
-	para "But, how about a"
-	line "slightly better"
-	cont "nickname?"
-
-	para "Want me to give it"
-	line "a better name?"
-	done
-
-UnknownText_0x1c0142::
-	text "All right. What"
-	line "name should we"
-	cont "give it, then?"
-	prompt
-
-UnknownText_0x1c0171::
-	text "That's a better"
-	line "name than before!"
-
-	para "Well done!"
-	done
-
-UnknownText_0x1c019e::
-	text "OK, then. Come"
-	line "again sometime."
-	done
-
-UnknownText_0x1c01be::
-	text "Hm… @"
-	text_from_ram StringBuffer1
-	text "?"
-	line "What a great name!"
-	cont "It's perfect."
-
-	para "Treat @"
-	text_from_ram StringBuffer1
-	text ""
-	line "with loving care."
-	done
-
-UnknownText_0x1c0208::
-	text "Whoa… That's just"
-	line "an EGG."
-	done
-
-UnknownText_0x1c0222::
-	text "It might look the"
-	line "same as before,"
-
-	para "but this new name"
-	line "is much better!"
-
-	para "Well done!"
-	done
-
-UnknownText_0x1c0272::
-	text "All right. This"
-	line "#MON is now"
-	cont "named @"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-Text_Gained::
-	text_from_ram StringBuffer1
-	text " gained@@"
-
-Text_ABoostedStringBuffer2ExpPoints::
-	text ""
-	line "a boosted"
-	cont "@"
-	deciram StringBuffer2, 2, 4
-	text " EXP. Points!"
-	prompt
-
-Text_StringBuffer2ExpPoints::
-	text ""
-	line "@"
-	deciram StringBuffer2, 2, 4
-	text " EXP. Points!"
-	prompt
-
-Text_GoPkmn::
-	text "Go! @@"
-
-Text_DoItPkmn::
-	text "Do it! @@"
-
-Text_GoForItPkmn::
-	text "Go for it,"
-	line "@@"
-
-Text_YourFoesWeakGetmPkmn::
-	text "Your foe's weak!"
-	line "Get'm, @@"
-
-Text_BattleMonNick01::
-	text_from_ram BattleMonNick
-	text "!"
-	done
-
-Text_BattleMonNickComma::
-	text_from_ram BattleMonNick
-	text ",@@"
-
-Text_ThatsEnoughComeBack::
-	text " that's"
-	line "enough! Come back!@@"
-
-Text_OKComeBack::
-	text " OK!"
-	line "Come back!@@"
-
-Text_GoodComeBack::
-	text " good!"
-	line "Come back!@@"
-
-Text_ComeBack::
-	text " come"
-	line "back!"
-	done
-
-UnknownText_0x1c0373::
-	text "Booted up a TM."
-	prompt
-
-UnknownText_0x1c0384::
-	text "Booted up an HM."
-	prompt
-
-UnknownText_0x1c0396::
-	text "It contained"
-	line "@"
-	text_from_ram StringBuffer2
-	text "."
-
-	para "Teach @"
-	text_from_ram StringBuffer2
-	text ""
-	line "to a #MON?"
-	done
-
-UnknownText_0x1c03c2::
-	text_from_ram StringBuffer2
-	text " is"
-	line "not compatible"
-	cont "with @"
-	text_from_ram StringBuffer1
-	text "."
-
-	para "It can't learn"
-	line "@"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c03fa::
-	text "You have no room"
-	line "for any more"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "S."
-	prompt
-
-UnknownText_0x1c0421::
-	text "You received"
-	line "@"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-
-UnknownText_0x1c0436::
-	text "The link has been"
-	line "cancelled."
-	prompt
-
-UnknownText_0x1c0454::
-	text "Communication"
-	line "error."
-	prompt
-
-UnknownText_0x1c046a::
-	text "Must retrieve GIFT"
-	line "at #MON CENTER."
-	prompt
-
-UnknownText_0x1c048e::
-	text "Your friend isn't"
-	line "ready."
-	prompt
-
-UnknownText_0x1c04a7::
-	text "Sorry--only five"
-	line "GIFTS a day."
-	prompt
-
-UnknownText_0x1c04c6::
-	text "Sorry. One GIFT"
-	line "a day per person."
-	prompt
-
-UnknownText_0x1c04e9::
-	text_from_ram wMysteryGiftPartnerName
-	text " sent"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1c04fa::
-	text_from_ram wMysteryGiftPartnerName
-	text " sent"
-	line "@"
-	text_from_ram StringBuffer1
-	text ""
-	cont "to @"
-	text_from_ram wMysteryGiftPlayerName
-	text "'s home."
-	prompt
-
-UnknownText_0x1c051a::
-	text "Received"
-	line "@"
-	text_from_ram wc850
-	text "'s CARD."
-	prompt
-
-UnknownText_0x1c0531::
-	text_from_ram wc850
-	text "'s CARD was"
-	line "listed as no.@"
-	deciram wd265, 1, 2
-	text "."
-	prompt
-
-UnknownText_0x1c0555::
-	text "The CARD was not"
-	line "registered."
-	prompt
-
-UnknownText_0x1c0573::
-	text "The link has been"
-	line "cancelled."
-	prompt
-
-UnknownText_0x1c0591::
-	text "Communication"
-	line "error."
-	prompt
-
-_BadgeRequiredText::
-	text "Sorry! A new BADGE"
-	line "is required."
-	prompt
-
-UnknownText_0x1c05c8::
-	text "Can't use that"
-	line "here."
-	prompt
-
-UnknownText_0x1c05dd::
-	text_from_ram StringBuffer2
-	text " used"
-	line "CUT!"
-	prompt
-
-UnknownText_0x1c05ec::
-	text "There's nothing to"
-	line "CUT here."
-	prompt
-
-UnknownText_0x1c0609::
-	text "A blinding FLASH"
-	line "lights the area!@"
-	text_waitbutton
-	db "@@"
--- a/text/common_3.asm
+++ /dev/null
@@ -1,1220 +1,0 @@
-_UsedSurfText::
-	text_from_ram StringBuffer2
-	text " used"
-	line "SURF!"
-	done
-
-_CantSurfText::
-	text "You can't SURF"
-	line "here."
-	prompt
-
-_AlreadySurfingText::
-	text "You're already"
-	line "SURFING."
-	prompt
-
-_AskSurfText::
-	text "The water is calm."
-	line "Want to SURF?"
-	done
-
-UnknownText_0x1c068e::
-	text_from_ram StringBuffer2
-	text " used"
-	line "WATERFALL!"
-	done
-
-UnknownText_0x1c06a3::
-	text "Wow, it's a huge"
-	line "waterfall."
-	done
-
-UnknownText_0x1c06bf::
-	text "Do you want to use"
-	line "WATERFALL?"
-	done
-
-UnknownText_0x1c06de::
-	text_from_ram StringBuffer2
-	text " used"
-	line "DIG!"
-	done
-
-UnknownText_0x1c06ed::
-	text "<PLAYER> used an"
-	line "ESCAPE ROPE."
-	done
-
-UnknownText_0x1c0705::
-	text "Can't use that"
-	line "here."
-	done
-
-UnknownText_0x1c071a::
-	text "Return to the last"
-	line "#MON CENTER."
-	done
-
-UnknownText_0x1c073b::
-	text "Can't use that"
-	line "here."
-
-	para ""
-	done
-
-UnknownText_0x1c0751::
-	text "A #MON is using"
-	line "STRENGTH already."
-	prompt
-
-UnknownText_0x1c0774::
-	text_from_ram StringBuffer2
-	text " used"
-	line "STRENGTH!"
-	done
-
-UnknownText_0x1c0788::
-	text_from_ram StringBuffer1
-	text " can"
-	line "move boulders."
-	prompt
-
-UnknownText_0x1c07a0::
-	text "A #MON may be"
-	line "able to move this."
-
-	para "Want to use"
-	line "STRENGTH?"
-	done
-
-UnknownText_0x1c07d8::
-	text "Boulders may now"
-	line "be moved!"
-	done
-
-UnknownText_0x1c07f4::
-	text "A #MON may be"
-	line "able to move this."
-	done
-
-UnknownText_0x1c0816::
-	text_from_ram StringBuffer2
-	text " used"
-	line "WHIRLPOOL!"
-	prompt
-
-UnknownText_0x1c082b::
-	text "It's a vicious"
-	line "whirlpool!"
-
-	para "A #MON may be"
-	line "able to pass it."
-	done
-
-UnknownText_0x1c0864::
-	text "A whirlpool is in"
-	line "the way."
-
-	para "Want to use"
-	line "WHIRLPOOL?"
-	done
-
-UnknownText_0x1c0897::
-	text_from_ram StringBuffer2
-	text " did a"
-	line "HEADBUTT!"
-	prompt
-
-UnknownText_0x1c08ac::
-	text "Nope. Nothing…"
-	done
-
-UnknownText_0x1c08bc::
-	text "A #MON could be"
-	line "in this tree."
-
-	para "Want to HEADBUTT"
-	line "it?"
-	done
-
-UnknownText_0x1c08f0::
-	text_from_ram StringBuffer2
-	text " used"
-	line "ROCK SMASH!"
-	prompt
-
-UnknownText_0x1c0906::
-	text "Maybe a #MON"
-	line "can break this."
-	done
-
-UnknownText_0x1c0924::
-	text "This rock looks"
-	line "breakable."
-
-	para "Want to use ROCK"
-	line "SMASH?"
-	done
-
-UnknownText_0x1c0958::
-	text "Oh!"
-	line "A bite!"
-	prompt
-
-UnknownText_0x1c0965::
-	text "Not even a nibble!"
-	prompt
-
-UnknownText_0x1c0979::
-	text "Looks like there's"
-	line "nothing here."
-	prompt
-
-UnknownText_0x1c099a::
-	text "You can't get off"
-	line "here!"
-	done
-
-UnknownText_0x1c09b2::
-	text "<PLAYER> got on the"
-	line "@"
-	text_from_ram StringBuffer2
-	text "."
-	done
-
-UnknownText_0x1c09c7::
-	text "<PLAYER> got off"
-	line "the @"
-	text_from_ram StringBuffer2
-	text "."
-	done
-
-UnknownText_0x1c09dd::
-	text "This tree can be"
-	line "CUT!"
-
-	para "Want to use CUT?"
-	done
-
-UnknownText_0x1c0a05::
-	text "This tree can be"
-	line "CUT!"
-	done
-
-UnknownText_0x1c0a1c::
-	text "<PLAYER> found"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1c0a2c::
-	text "But <PLAYER> can't"
-	line "carry any more"
-	cont "items."
-	done
-
-UnknownText_0x1c0a4e::
-	text "<PLAYER> is out of"
-	line "useable #MON!"
-
-	para "<PLAYER> whited"
-	line "out!"
-	done
-
-UnknownText_0x1c0a77::
-	text "Yes! ITEMFINDER"
-	line "indicates there's"
-	cont "an item nearby."
-	prompt
-
-UnknownText_0x1c0aa9::
-	text "Nope! ITEMFINDER"
-	line "isn't responding."
-	prompt
-
-UnknownText_0x1c0acc::
-	text_from_ram StringBuffer3
-	text ""
-	line "fainted!"
-	prompt
-
-UnknownText_0x1c0ada::
-	text "<PLAYER> is out of"
-	line "useable #MON!"
-
-	para "<PLAYER> whited"
-	line "out!"
-	prompt
-
-UnknownText_0x1c0b03::
-	text_from_ram StringBuffer3
-	text " used"
-	line "SWEET SCENT!"
-	done
-
-UnknownText_0x1c0b1a::
-	text "Looks like there's"
-	line "nothing here…"
-	done
-
-UnknownText_0x1c0b3b::
-	text "<PLAYER> sprinkled"
-	line "water."
-
-	para "But nothing"
-	line "happened…"
-	done
-
-UnknownText_0x1c0b65::
-	text "<PLAYER>'s #MON"
-	line "were all healed!"
-	done
-
-Text_AnEGGCantHoldAnItem::
-	text "An EGG can't hold"
-	line "an item."
-	prompt
-
-UnknownText_0x1c0b9a::
-	text "No items."
-	done
-
-UnknownText_0x1c0ba5::
-	text "Throw away how"
-	line "many?"
-	done
-
-UnknownText_0x1c0bbb::
-	text "Throw away @"
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text ""
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)?"
-	done
-
-UnknownText_0x1c0bd8::
-	text "Threw away"
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)."
-	prompt
-
-UnknownText_0x1c0bee::
-	text "OAK: <PLAYER>!"
-	line "This isn't the"
-	cont "time to use that!"
-	prompt
-
-Text_YouDontHaveAPkmn::
-	text "You don't have a"
-	line "#MON!"
-	prompt
-
-UnknownText_0x1c0c2e::
-	text "Registered the"
-	line "@"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c0c45::
-	text "You can't register"
-	line "that item."
-	prompt
-
-UnknownText_0x1c0c63::
-	text "Where should this"
-	line "be moved to?"
-	done
-
-UnknownText_0x1c0c83::
-	text ""
-	done
-
-Text_YouCantUseItInABattle::
-	text "You can't use it"
-	line "in a battle."
-	prompt
-
-Text_AreYouABoyOrAreYouAGirl::
-	text "Are you a boy?"
-	line "Or are you a girl?"
-	done
-
-UnknownText_0x1c0cc6::
-	text "<USER>'s"
-	line "@"
-	text_from_ram StringBuffer2
-	db "@@"
-
-UnknownText_0x1c0cd0::
-	interpret_data
-	text $4c, "went way up!"
-	prompt
-
-UnknownText_0x1c0ce0::
-	text " went up!"
-	prompt
-
-UnknownText_0x1c0ceb::
-	text "<TARGET>'s"
-	line "@"
-	text_from_ram StringBuffer2
-	db "@@"
-
-UnknownText_0x1c0cf5::
-	interpret_data
-	text $4c, "sharply fell!"
-	prompt
-
-UnknownText_0x1c0d06::
-	text " fell!"
-	prompt
-
-UnknownText_0x1c0d0e::
-	text "<USER>@@"
-
-UnknownText_0x1c0d12::
-	text ""
-	line "made a whirlwind!"
-	prompt
-
-UnknownText_0x1c0d26::
-	text ""
-	line "took in sunlight!"
-	prompt
-
-UnknownText_0x1c0d3a::
-	text ""
-	line "lowered its head!"
-	prompt
-
-UnknownText_0x1c0d4e::
-	text ""
-	line "is glowing!"
-	prompt
-
-UnknownText_0x1c0d5c::
-	text ""
-	line "flew up high!"
-	prompt
-
-UnknownText_0x1c0d6c::
-	text ""
-	line "dug a hole!"
-	prompt
-
-_ActorNameText::
-	text "<USER>@@"
-
-_UsedMove1Text::
-	text ""
-	line "used @@"
-
-_UsedMove2Text::
-	text ""
-	line "used @@"
-
-_UsedInsteadText::
-	text "instead,"
-	cont "@@"
-
-_MoveNameText::
-	text_from_ram StringBuffer2
-	db "@@"
-
-_EndUsedMove1Text::
-	text "!"
-	done
-
-_EndUsedMove2Text::
-	text "!"
-	done
-
-_EndUsedMove3Text::
-	text "!"
-	done
-
-_EndUsedMove4Text::
-	text "!"
-	done
-
-_EndUsedMove5Text::
-	text "!"
-	done
-
-UnknownText_0x1c0db0::
-	text "Huh?"
-	para "@@"
-
-UnknownText_0x1c0db8::
-	text ""
-	done
-
-UnknownText_0x1c0dba::
-	text_from_ram StringBuffer1
-	text " came"
-	line "out of its EGG!@"
-	sound_caught_mon
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1c0dd8::
-	text "Give a nickname to"
-	line "@"
-	text_from_ram StringBuffer1
-	text "?"
-	done
-
-UnknownText_0x1c0df3::
-	text "It's @"
-	text_from_ram wBreedMon2Nick
-	text ""
-	line "that was left with"
-	cont "the DAY-CARE LADY."
-	done
-
-UnknownText_0x1c0e24::
-	text "It's @"
-	text_from_ram wBreedMon1
-	text ""
-	line "that was left with"
-	cont "the DAY-CARE MAN."
-	done
-
-UnknownText_0x1c0e54::
-	text "It's brimming with"
-	line "energy."
-	prompt
-
-UnknownText_0x1c0e6f::
-	text "It has no interest"
-	line "in @"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1c0e8d::
-	text "It appears to care"
-	line "for @"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1c0eac::
-	text "It's friendly with"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1c0ec6::
-	text "It shows interest"
-	line "in @"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-_EmptyMailboxText::
-	text "There's no MAIL"
-	line "here."
-	prompt
-
-ClearedMailPutAwayText::
-	text "The cleared MAIL"
-	line "was put away."
-	prompt
-
-MailPackFullText::
-	text "The PACK is full."
-	prompt
-
-MailMessageLostText::
-	text "The MAIL's message"
-	line "will be lost. OK?"
-	done
-
-MailAlreadyHoldingItemText::
-	text "It's already hold-"
-	line "ing an item."
-	prompt
-
-MailEggText::
-	text "An EGG can't hold"
-	line "any MAIL."
-	prompt
-
-MailMovedFromBoxText::
-	text "The MAIL was moved"
-	line "from the MAILBOX."
-	prompt
-
-UnknownText_0x1c0fb3::
-	text "Yes"
-	prompt
-
-UnknownText_0x1c0fb8::
-	text "No"
-	prompt
-
-UnknownText_0x1c0fbc::
-	deciram wcf64, 1, 3
-	text " @"
-	text_from_ram StringBuffer1
-	text ""
-	line "Animation type @"
-	text_from_ram StringBuffer2
-	db "@@"
-
-UnknownText_0x1c0fdd::
-	text "#MON number?"
-	done
-
-Text_WasSentToBillsPC::
-	text_from_ram StringBuffer1
-	text " was"
-	line "sent to BILL's PC."
-	prompt
-
-UnknownText_0x1c1006::
-	text "You gotta have"
-	line "#MON to call!"
-	prompt
-
-UnknownText_0x1c1024::
-	text "What?"
-	done
-
-UnknownText_0x1c102b::
-	text "There is a #MON"
-	line "holding MAIL."
-
-	para "Please remove the"
-	line "MAIL."
-	prompt
-
-UnknownText_0x1c1062::
-	text "You don't have a"
-	line "single #MON!"
-	prompt
-
-UnknownText_0x1c1080::
-	text "You can't deposit"
-	line "your last #MON!"
-	prompt
-
-UnknownText_0x1c10a2::
-	text "You can't take any"
-	line "more #MON."
-	prompt
-
-UnknownText_0x1c10c0::
-	text "Caught @"
-	text_from_ram StringBuffer1
-	text "!"
-	prompt
-
-UnknownText_0x1c10cf::
-	text "Switch #MON?"
-	done
-
-UnknownText_0x1c10dd::
-	text "You already caught"
-	line "a @"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-ContestJudging_FirstPlaceText::
-	text "This Bug-Catching"
-	line "Contest winner is@"
-	interpret_data
-	text "…"
-
-	para "@"
-	text_from_ram wBugContestWinnerName
-	text ","
-	line "who caught a"
-	cont "@"
-	text_from_ram StringBuffer1
-	text "!@@"
-
-ContestJudging_FirstPlaceScoreText::
-	text ""
-
-	para "The winning score"
-	line "was @"
-	deciram wBugContestFirstPlaceScore, 2, 3
-	text " points!"
-	prompt
-
-ContestJudging_SecondPlaceText::
-	text "Placing second was"
-	line "@"
-	text_from_ram wBugContestWinnerName
-	text ","
-	para "who caught a"
-	line "@"
-	text_from_ram StringBuffer1
-	text "!@@"
-
-ContestJudging_SecondPlaceScoreText::
-	text ""
-	para "The score was"
-	line "@"
-	deciram wBugContestSecondPlaceScore, 2, 3
-	text " points!"
-	prompt
-
-ContestJudging_ThirdPlaceText::
-	text "Placing third was"
-	line "@"
-	text_from_ram wBugContestWinnerName
-	text ","
-	para "who caught a"
-	line "@"
-	text_from_ram StringBuffer1
-	text "!@@"
-
-ContestJudging_ThirdPlaceScoreText::
-	text ""
-	para "The score was"
-	line "@"
-	deciram wBugContestThirdPlaceScore, 2, 3
-	text " points!"
-	prompt
-
-UnknownText_0x1c1203::
-	text "Let me measure"
-	line "that MAGIKARP."
-
-	para "…Hm, it measures"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1c123a::
-	text "CURRENT RECORD"
-	para "@"
-	text_from_ram StringBuffer1
-	text " caught by"
-	line "@"
-	text_from_ram wMagikarpRecordHoldersName
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1c1261::
-	text "Congratulations!"
-
-	para "We have a match"
-	line "with the ID number"
-
-	para "of @"
-	text_from_ram StringBuffer1
-	text " in"
-	line "your party."
-	prompt
-
-UnknownText_0x1c12ae::
-	text "Congratulations!"
-
-	para "We have a match"
-	line "with the ID number"
-
-	para "of @"
-	text_from_ram StringBuffer1
-	text " in"
-	line "your PC BOX."
-	prompt
-
-UnknownText_0x1c12fc::
-	text "Give a nickname to"
-	line "the @"
-	text_from_ram StringBuffer1
-	text " you"
-	cont "received?"
-	done
-
-UnknownText_0x1c1328::
-	text "Bzzzzt! You must"
-	line "have a #MON to"
-	cont "use this!"
-	prompt
-
-UnknownText_0x1c1353::
-	text "<PLAYER> turned on"
-	line "the PC."
-	prompt
-
-UnknownText_0x1c1368::
-	text "What do you want"
-	line "to do?"
-	done
-
-_KrissPCHowManyWithdrawText::
-	text "How many do you"
-	line "want to withdraw?"
-	done
-
-_KrissPCWithdrewItemsText::
-	text "Withdrew @"
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text ""
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)."
-	prompt
-
-_KrissPCNoRoomWithdrawText::
-	text "There's no room"
-	line "for more items."
-	prompt
-
-UnknownText_0x1c13df::
-	text "No items here!"
-	prompt
-
-_KrissPCHowManyDepositText::
-	text "How many do you"
-	line "want to deposit?"
-	done
-
-_KrissPCDepositItemsText::
-	text "Deposited @"
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text ""
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)."
-	prompt
-
-_KrissPCNoRoomDepositText::
-	text "There's no room to"
-	line "store items."
-	prompt
-
-UnknownText_0x1c144d::
-	text "<PLAYER> turned on"
-	line "the PC."
-	prompt
-
-UnknownText_0x1c1462::
-	text "Access whose PC?"
-	done
-
-UnknownText_0x1c1474::
-	text "BILL's PC"
-	line "accessed."
-
-	para "#MON Storage"
-	line "System opened."
-	prompt
-
-UnknownText_0x1c14a4::
-	text "Accessed own PC."
-
-	para "Item Storage"
-	line "System opened."
-	prompt
-
-UnknownText_0x1c14d2::
-	text "PROF.OAK's PC"
-	line "accessed."
-
-	para "#DEX Rating"
-	line "System opened."
-	prompt
-
-UnknownText_0x1c1505::
-	text "…"
-	line "Link closed…"
-	done
-
-_OakPCText1::
-	text "Want to get your"
-	line "#DEX rated?"
-	done
-
-_OakPCText2::
-	text "Current #DEX"
-	line "completion level:"
-	prompt
-
-_OakPCText3::
-	text_from_ram StringBuffer3
-	text " #MON seen"
-	line "@"
-	text_from_ram StringBuffer4
-	text " #MON owned"
-
-	para "PROF.OAK's"
-	line "Rating:"
-	done
-
-_OakRating01::
-	text "Look for #MON"
-	line "in grassy areas!"
-	done
-
-_OakRating02::
-	text "Good. I see you"
-	line "understand how to"
-	cont "use # BALLS."
-	done
-
-_OakRating03::
-	text "You're getting"
-	line "good at this."
-
-	para "But you have a"
-	line "long way to go."
-	done
-
-_OakRating04::
-	text "You need to fill"
-	line "up the #DEX."
-
-	para "Catch different"
-	line "kinds of #MON!"
-	done
-
-_OakRating05::
-	text "You're trying--I"
-	line "can see that."
-
-	para "Your #DEX is"
-	line "coming together."
-	done
-
-_OakRating06::
-	text "To evolve, some"
-	line "#MON grow,"
-
-	para "others use the"
-	line "effects of STONES."
-	done
-
-_OakRating07::
-	text "Have you gotten a"
-	line "fishing ROD? You"
-
-	para "can catch #MON"
-	line "by fishing."
-	done
-
-_OakRating08::
-	text "Excellent! You"
-	line "seem to like col-"
-	cont "lecting things!"
-	done
-
-_OakRating09::
-	text "Some #MON only"
-	line "appear during"
-
-	para "certain times of"
-	line "the day."
-	done
-
-_OakRating10::
-	text "Your #DEX is"
-	line "filling up. Keep"
-	cont "up the good work!"
-	done
-
-_OakRating11::
-	text "I'm impressed."
-	line "You're evolving"
-
-	para "#MON, not just"
-	line "catching them."
-	done
-
-_OakRating12::
-	text "Have you met KURT?"
-	line "His custom BALLS"
-	cont "should help."
-	done
-
-_OakRating13::
-	text "Wow. You've found"
-	line "more #MON than"
-
-	para "the last #DEX"
-	line "research project."
-	done
-
-_OakRating14::
-	text "Are you trading"
-	line "your #MON?"
-
-	para "It's tough to do"
-	line "this alone!"
-	done
-
-_OakRating15::
-	text "Wow! You've hit"
-	line "200! Your #DEX"
-	cont "is looking great!"
-	done
-
-_OakRating16::
-	text "You've found so"
-	line "many #MON!"
-
-	para "You've really"
-	line "helped my studies!"
-	done
-
-_OakRating17::
-	text "Magnificent! You"
-	line "could become a"
-
-	para "#MON professor"
-	line "right now!"
-	done
-
-_OakRating18::
-	text "Your #DEX is"
-	line "amazing! You're"
-
-	para "ready to turn"
-	line "professional!"
-	done
-
-_OakRating19::
-	text "Whoa! A perfect"
-	line "#DEX! I've"
-
-	para "dreamt about this!"
-	line "Congratulations!"
-	done
-
-_OakPCText4::
-	text "The link to PROF."
-	line "OAK's PC closed."
-	done
-
-UnknownText_0x1c19cd::
-	text "Triple-theme"
-	line "trainer ranking!"
-	para "The SAVE file you"
-	line "just sent might"
-	cont "make the rankings!"
-	para ""
-	done
-
-UnknownText_0x1c1a22::
-	text "There is no"
-	line "ranking data."
-	para "Link to obtain"
-	line "ranking data."
-	para ""
-	done
-
-UnknownText_0x1c1a5b::
-	text " , yeah!"
-	done
-
-UnknownText_0x1c1a65::
-	text "Darn…"
-	done
-
-UnknownText_0x1c1a6c::
-	text "Would you like to"
-	line "end the Contest?"
-	done
-
-UnknownText_0x1c1a90::
-	text "Toss out how many"
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)?"
-	done
-
-UnknownText_0x1c1aad::
-	text "Throw away @"
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text ""
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)?"
-	done
-
-UnknownText_0x1c1aca::
-	text "Discarded"
-	line "@"
-	text_from_ram StringBuffer1
-	text "(S)."
-	prompt
-
-UnknownText_0x1c1adf::
-	text "That's too impor-"
-	line "tant to toss out!"
-	prompt
-
-UnknownText_0x1c1b03::
-	text "OAK: <PLAYER>!"
-	line "This isn't the"
-	cont "time to use that!"
-	done
-
-UnknownText_0x1c1b2c::
-	text "Took @"
-	text_from_ram wMonOrItemNameBuffer
-	text "'s"
-	line "@"
-	text_from_ram StringBuffer1
-	text " and"
-
-	para "made it hold"
-	line "@"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c1b57::
-	text "Made @"
-	text_from_ram wMonOrItemNameBuffer
-	text ""
-	line "hold @"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c1b6f::
-	text "Please remove the"
-	line "MAIL first."
-	prompt
-
-UnknownText_0x1c1b8e::
-	text_from_ram wMonOrItemNameBuffer
-	text " isn't"
-	line "holding anything."
-	prompt
-
-UnknownText_0x1c1baa::
-	text "Item storage space"
-	line "full."
-	prompt
-
-UnknownText_0x1c1bc4::
-	text "Took @"
-	text_from_ram StringBuffer1
-	text ""
-	line "from @"
-	text_from_ram wMonOrItemNameBuffer
-	text "."
-	prompt
-
-UnknownText_0x1c1bdc::
-	text_from_ram wMonOrItemNameBuffer
-	text " is"
-	line "already holding"
-
-	para "@"
-	text_from_ram StringBuffer1
-	text "."
-	line "Switch items?"
-	done
-
-UnknownText_0x1c1c09::
-	text "This item can't be"
-	line "held."
-	prompt
-
-UnknownText_0x1c1c22::
-	text "The MAIL will lose"
-	line "its message. OK?"
-	done
-
-UnknownText_0x1c1c47::
-	text "MAIL detached from"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-	prompt
-
-UnknownText_0x1c1c62::
-	text "There's no space"
-	line "for removing MAIL."
-	prompt
-
-UnknownText_0x1c1c86::
-	text "Send the removed"
-	line "MAIL to your PC?"
-	done
-
-UnknownText_0x1c1ca9::
-	text "Your PC's MAILBOX"
-	line "is full."
-	prompt
-
-UnknownText_0x1c1cc4::
-	text "The MAIL was sent"
-	line "to your PC."
-	prompt
-
-UnknownText_0x1c1ce3::
-	text "Not enough HP!"
-	prompt
-
-UnknownText_0x1c1cf3::
-	text "An item in your"
-	line "PACK may be"
-
-	para "registered for use"
-	line "on SELECT Button."
-	done
-
-_OakText1::
-	text "Hello! Sorry to"
-	line "keep you waiting!"
-
-	para "Welcome to the"
-	line "world of #MON!"
-
-	para "My name is OAK."
-
-	para "People call me the"
-	line "#MON PROF."
-	prompt
-
-_OakText2::
-	text "This world is in-"
-	line "habited by crea-"
-	cont "tures that we call"
-	cont "#MON.@@"
-
-_OakText3::
-	text_waitbutton
-	db "@@"
-
-_OakText4::
-	text "People and #MON"
-	line "live together by"
-
-	para "supporting each"
-	line "other."
-
-	para "Some people play"
-	line "with #MON, some"
-	cont "battle with them."
-	prompt
-
-_OakText5::
-	text "But we don't know"
-	line "everything about"
-	cont "#MON yet."
-
-	para "There are still"
-	line "many mysteries to"
-	cont "solve."
-
-	para "That's why I study"
-	line "#MON every day."
-	prompt
--- a/text/common_4.asm
+++ /dev/null
@@ -1,683 +1,0 @@
-_OakText6::
-	text "Now, what did you"
-	line "say your name was?"
-	prompt
-
-_OakText7::
-	text "<PLAYER>, are you"
-	line "ready?"
-
-	para "Your very own"
-	line "#MON story is"
-	cont "about to unfold."
-
-	para "You'll face fun"
-	line "times and tough"
-	cont "challenges."
-
-	para "A world of dreams"
-	line "and adventures"
-
-	para "with #MON"
-	line "awaits! Let's go!"
-
-	para "I'll be seeing you"
-	line "later!"
-	done
-
-UnknownText_0x1c40e6::
-	text "The clock's time"
-	line "may be wrong."
-
-	para "Please reset the"
-	line "time."
-	prompt
-
-UnknownText_0x1c411c::
-	text "Set with the"
-	line "Control Pad."
-
-	para "Confirm: A Button"
-	line "Cancel:  B Button"
-	done
-
-UnknownText_0x1c415b::
-	text "Is this OK?"
-	done
-
-UnknownText_0x1c4168::
-	text "The clock has been"
-	line "reset."
-	done
-
-UnknownText_0x1c4183::
-	text "Too much time has"
-	line "elapsed. Please"
-	cont "try again."
-	prompt
-
-UnknownText_0x1c41b1::
-	text "If you trade that"
-	line "#MON, you won't"
-	cont "be able to battle."
-	prompt
-
-UnknownText_0x1c41e6::
-	text "Your friend's"
-	line "@"
-	text_from_ram StringBuffer1
-	text " appears"
-	cont "to be abnormal!"
-	prompt
-
-UnknownText_0x1c4212::
-	text "Trade @"
-	text_from_ram wd004
-	text ""
-	line "for @"
-	text_from_ram StringBuffer1
-	text "?"
-	done
-
-UnknownText_0x1c422a::
-	text "To enter a mobile"
-	line "battle, you must"
-
-	para "pick a team of"
-	line "three #MON."
-
-	para "Is that OK?"
-	done
-
-UnknownText_0x1c4275::
-	text "Need more info on"
-	line "mobile battles?"
-	done
-
-UnknownText_0x1c4298::
-	text "For a mobile"
-	line "battle, choose"
-	cont "three #MON."
-
-	para "The maximum daily"
-	line "play time is ten"
-
-	para "minutes for each"
-	line "linked player."
-
-	para "If a battle isn't"
-	line "finished within"
-
-	para "the time limit,"
-	line "the player with"
-
-	para "the fewest fainted"
-	line "#MON wins."
-
-	para "If tied, the team"
-	line "that lost the"
-
-	para "least amount of HP"
-	line "wins."
-	done
-
-UnknownText_0x1c439c::
-	text "Today's remaining"
-	line "time is @"
-	deciram StringBuffer2, 1, 2
-	text " min."
-
-	para "Would you like to"
-	line "battle?"
-	done
-
-UnknownText_0x1c43dc::
-	text "There are only @"
-	deciram StringBuffer2, 1, 2
-	text ""
-	line "min. left today."
-
-	para "Want a quick"
-	line "battle?"
-	done
-
-UnknownText_0x1c4419::
-	text "There is only"
-	line "1 min. left today!"
-
-	para "Want to rush"
-	line "through a battle?"
-	done
-
-UnknownText_0x1c445a::
-	text "There is less than"
-	line "1 min. left today!"
-
-	para "Please try again"
-	line "tomorrow."
-	done
-
-UnknownText_0x1c449c::
-	text "Try again using"
-	line "the same settings?"
-	done
-
-UnknownText_0x1c44c0::
-	text "There is less than"
-	line "1 min. left today!"
-	done
-
-UnknownText_0x1c44e7::
-	text "No time left for"
-	line "linking today."
-	done
-
-UnknownText_0x1c4508::
-	text "Pick three #MON"
-	line "for battle."
-	done
-
-UnknownText_0x1c4525::
-	text "Today's remaining"
-	line "time is @"
-	deciram StringBuffer2, 1, 2
-	text " min."
-	done
-
-UnknownText_0x1c454b::
-	text "Would you like to"
-	line "save the game?"
-	done
-
-UnknownText_0x1c456d::
-	text "SAVING… DON'T TURN"
-	line "OFF THE POWER."
-	done
-
-UnknownText_0x1c4590::
-	text "<PLAYER> saved"
-	line "the game."
-	done
-
-UnknownText_0x1c45a3::
-	text "There is already a"
-	line "save file. Is it"
-	cont "OK to overwrite?"
-	done
-
-UnknownText_0x1c45d9::
-	text "There is another"
-	line "save file. Is it"
-	cont "OK to overwrite?"
-	done
-
-UnknownText_0x1c460d::
-	text "The save file is"
-	line "corrupted!"
-	prompt
-
-UnknownText_0x1c462a::
-	text "When you change a"
-	line "#MON BOX, data"
-	cont "will be saved. OK?"
-	done
-
-UnknownText_0x1c465f::
-	text "Each time you move"
-	line "a #MON, data"
-	cont "will be saved. OK?"
-	done
-
-UnknownText_0x1c4693::
-	text "The window save"
-	line "area was exceeded."
-	done
-
-UnknownText_0x1c46b7::
-	text "No windows avail-"
-	line "able for popping."
-	done
-
-UnknownText_0x1c46dc::
-	text "Corrupted event!"
-	prompt
-
-_ObjectEventText::
-	text "Object event"
-	done
-
-UnknownText_0x1c46fc::
-	text "BG event"
-	done
-
-UnknownText_0x1c4706::
-	text "Coordinates event"
-	done
-
-UnknownText_0x1c4719::
-	text "<PLAYER> received"
-	line "@"
-	text_from_ram StringBuffer4
-	text "."
-	done
-
-UnknownText_0x1c472c::
-	text "<PLAYER> put the"
-	line "@"
-	text_from_ram StringBuffer1
-	text " in"
-	cont "the @"
-	text_from_ram StringBuffer3
-	text "."
-	prompt
-
-UnknownText_0x1c474b::
-	text "The @"
-	text_from_ram StringBuffer3
-	text ""
-	line "is full…"
-	prompt
-
-UnknownText_0x1c475f::
-	text "I see all."
-	line "I know all…"
-
-	para "Certainly, I know"
-	line "of your #MON!"
-	done
-
-UnknownText_0x1c4797::
-	text "Whaaaat? I can't"
-	line "tell a thing!"
-
-	para "How could I not"
-	line "know of this?"
-	done
-
-UnknownText_0x1c47d4::
-	text "Hm… I see you met"
-	line "@"
-	text_from_ram wSeerNickname
-	text " here:"
-	cont "@"
-	text_from_ram wSeerCaughtLocation
-	text "!"
-	prompt
-
-UnknownText_0x1c47fa::
-	text "The time was"
-	line "@"
-	text_from_ram wSeerTimeOfDay
-	text "!"
-
-	para "Its level was @"
-	text_from_ram wSeerCaughtLevelString
-	text "!"
-
-	para "Am I good or what?"
-	prompt
-
-UnknownText_0x1c4837::
-	text "Hm… @"
-	text_from_ram wSeerNickname
-	text ""
-	line "came from @"
-	text_from_ram wSeerOTName
-	text ""
-	cont "in a trade?"
-
-	para "@"
-	text_from_ram wSeerCaughtLocation
-	text ""
-	line "was where @"
-	text_from_ram wSeerOTName
-	text ""
-	cont "met @"
-	text_from_ram wSeerNickname
-	text "!"
-	prompt
-
-UnknownText_0x1c487f::
-	text "What!? Incredible!"
-
-	para "I don't understand"
-	line "how, but it is"
-
-	para "incredible!"
-	line "You are special."
-
-	para "I can't tell where"
-	line "you met it, but it"
-	cont "was at level @"
-	text_from_ram wSeerCaughtLevelString
-	text "."
-
-	para "Am I good or what?"
-	prompt
-
-UnknownText_0x1c491d::
-	text "Hey!"
-
-	para "That's an EGG!"
-
-	para "You can't say that"
-	line "you've met it yet…"
-	done
-
-UnknownText_0x1c4955::
-	text "Fufufu! I saw that"
-	line "you'd do nothing!"
-	done
-
-UnknownText_0x1c497a::
-	text "Incidentally…"
-
-	para "It would be wise"
-	line "to raise your"
-
-	para "#MON with a"
-	line "little more care."
-	done
-
-UnknownText_0x1c49c6::
-	text "Incidentally…"
-
-	para "It seems to have"
-	line "grown a little."
-
-	para "@"
-	text_from_ram wSeerNickname
-	text " seems"
-	line "to be becoming"
-	cont "more confident."
-	done
-
-UnknownText_0x1c4a21::
-	text "Incidentally…"
-
-	para "@"
-	text_from_ram wSeerNickname
-	text " has"
-	line "grown. It's gained"
-	cont "much strength."
-	done
-
-UnknownText_0x1c4a5b::
-	text "Incidentally…"
-
-	para "It certainly has"
-	line "grown mighty!"
-
-	para "This @"
-	text_from_ram wSeerNickname
-	text ""
-	line "must have come"
-
-	para "through numerous"
-	line "#MON battles."
-
-	para "It looks brimming"
-	line "with confidence."
-	done
-
-UnknownText_0x1c4ae5::
-	text "Incidentally…"
-
-	para "I'm impressed by"
-	line "your dedication."
-
-	para "It's been a long"
-	line "time since I've"
-
-	para "seen a #MON as"
-	line "mighty as this"
-	cont "@"
-	text_from_ram wSeerNickname
-	text "."
-
-	para "I'm sure that"
-	line "seeing @"
-	text_from_ram wSeerNickname
-	text ""
-	para "in battle would"
-	line "excite anyone."
-	done
-
-UnknownText_0x1c4b92::
-	text "Congratulations!"
-	line "Your @"
-	text_from_ram StringBuffer2
-	db "@@"
-
-UnknownText_0x1c4baf::
-	text ""
-	para "evolved into"
-	line "@"
-	text_from_ram StringBuffer1
-	text "!"
-	done
-
-UnknownText_0x1c4bc5::
-	text "Huh? @"
-	text_from_ram StringBuffer2
-	text ""
-	line "stopped evolving!"
-	prompt
-
-UnknownText_0x1c4be3::
-	text "What? @"
-	text_from_ram StringBuffer2
-	text ""
-	line "is evolving!"
-	done
-
-UnknownText_0x1c4bfd::
-	text "How many?"
-	done
-
-UnknownText_0x1c4c08::
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text " @"
-	text_from_ram StringBuffer2
-	text "(S)"
-	line "will be ¥@"
-	deciram hMoneyTemp, 3, 6
-	text "."
-	done
-
-UnknownText_0x1c4c28::
-	text "Hello, dear."
-
-	para "I sell inexpensive"
-	line "herbal medicine."
-
-	para "They're good, but"
-	line "a trifle bitter."
-
-	para "Your #MON may"
-	line "not like them."
-
-	para "Hehehehe…"
-	done
-
-UnknownText_0x1c4ca3::
-	text "How many?"
-	done
-
-UnknownText_0x1c4cae::
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text " @"
-	text_from_ram StringBuffer2
-	text "(S)"
-	line "will be ¥@"
-	deciram hMoneyTemp, 3, 6
-	text "."
-	done
-
-UnknownText_0x1c4cce::
-	text "Thank you, dear."
-	line "Hehehehe…"
-	done
-
-UnknownText_0x1c4cea::
-	text "Oh? Your PACK is"
-	line "full, dear."
-	done
-
-UnknownText_0x1c4d08::
-	text "Hehehe… You don't"
-	line "have the money."
-	done
-
-UnknownText_0x1c4d2a::
-	text "Come again, dear."
-	line "Hehehehe…"
-	done
-
-UnknownText_0x1c4d47::
-	text "Hiya! Care to see"
-	line "some bargains?"
-
-	para "I sell rare items"
-	line "that nobody else"
-
-	para "carries--but only"
-	line "one of each item."
-	done
-
-UnknownText_0x1c4db0::
-	text_from_ram StringBuffer2
-	text " costs"
-	line "¥@"
-	deciram hMoneyTemp, 3, 6
-	text ". Want it?"
-	done
-
-UnknownText_0x1c4dcd::
-	text "Thanks."
-	done
-
-UnknownText_0x1c4dd6::
-	text "Uh-oh, your PACK"
-	line "is chock-full."
-	done
-
-UnknownText_0x1c4df7::
-	text "You bought that"
-	line "already. I'm all"
-	cont "sold out of it."
-	done
-
-UnknownText_0x1c4e28::
-	text "Uh-oh, you're"
-	line "short on funds."
-	done
-
-UnknownText_0x1c4e46::
-	text "Come by again"
-	line "sometime."
-	done
-
-UnknownText_0x1c4e5f::
-	text "What's up? Need"
-	line "some medicine?"
-	done
-
-UnknownText_0x1c4e7e::
-	text "How many?"
-	done
-
-UnknownText_0x1c4e89::
-	deciram wItemQuantityChangeBuffer, 1, 2
-	text " @"
-	text_from_ram StringBuffer2
-	text "(S)"
-	line "will cost ¥@"
-	deciram hMoneyTemp, 3, 6
-	text "."
-	done
-
-UnknownText_0x1c4eab::
-	text "Thanks much!"
-	done
-
-UnknownText_0x1c4eb9::
-	text "You don't have any"
-	line "more space."
-	done
-
-UnknownText_0x1c4ed8::
-	text "Huh? That's not"
-	line "enough money."
-	done
-
-UnknownText_0x1c4ef6::
-	text "All right."
-	line "See you around."
-	done
-
-UnknownText_0x1c4f12::
-	text "You don't have"
-	line "anything to sell."
-	prompt
-
-UnknownText_0x1c4f33::
-	text "How many?"
-	done
-
-UnknownText_0x1c4f3e::
-	text "I can pay you"
-	line "¥@"
-	deciram hMoneyTemp, 3, 6
-	text "."
-
-	para "Is that OK?"
-	done
-
-UnknownText_0x1c4f62::
-	text "Welcome! How may I"
-	line "help you?"
-	done
-
-UnknownText_0x1c4f80::
-	text "Here you are."
-	line "Thank you!"
-	done
-
-UnknownText_0x1c4f9a::
-	text "You don't have"
-	line "enough money."
-	done
-
-UnknownText_0x1c4fb7::
-	text "You can't carry"
-	line "any more items."
-	done
-
-UnknownText_0x1c4fd7::
-	text "Sorry, I can't buy"
-	line "that from you."
-	prompt
-
-UnknownText_0x1c4ff9::
-	text "Please come again!"
-	done
-
-UnknownText_0x1c500d::
-	text "Can I do anything"
-	line "else for you?"
-	done
-
-UnknownText_0x1c502e::
-	text "Got ¥@"
-	deciram hMoneyTemp, 3, 6
-	text " for"
-	line "@"
-	text_from_ram StringBuffer2
-	text "(S)."
-	done
-
-UnknownText_0x1c5049::
-	text "Bet how many"
-	line "coins?"
-	done
--- a/text/common_5.asm
+++ /dev/null
@@ -1,793 +1,0 @@
-UnknownText_0x1c505e::
-	text "Start!"
-	done
-
-UnknownText_0x1c5066::
-	text "Not enough"
-	line "coins."
-	prompt
-
-UnknownText_0x1c5079::
-	text "Darn… Ran out of"
-	line "coins…"
-	done
-
-UnknownText_0x1c5092::
-	text "Play again?"
-	done
-
-UnknownText_0x1c509f::
-	text "lined up!"
-	line "Won @"
-	text_from_ram StringBuffer2
-	text " coins!"
-	done
-
-UnknownText_0x1c50bb::
-	text "Darn!"
-	done
-
-_MobileStadiumEntryText::
-	text "Data for use in"
-	line "the MOBILE STADIUM"
-
-	para "of the N64 #MON"
-	line "STADIUM 2 can be"
-	cont "read here."
-
-	para "Read the data?"
-	done
-
-_MobileStadiumSuccessText::
-	text "Data transfer is"
-	line "complete."
-	para "We hope you enjoy"
-	line "MOBILE STADIUM"
-	para "battles in the N64"
-	line "#MON STADIUM 2."
-	para ""
-	done
-
-UnknownText_0x1c5182::
-	text "Clock time unknown"
-	done
-
-UnknownText_0x1c5196::
-	text "Delete the saved"
-	line "LOG-IN PASSWORD?"
-	done
-
-UnknownText_0x1c51b9::
-	text "Deleted the LOG-IN"
-	line "PASSWORD."
-	done
-
-UnknownText_0x1c51d7::
-	text "Pick three #MON"
-	line "for battle."
-	prompt
-
-UnknownText_0x1c51f4::
-	text_from_ram wMobileParticipant1Nickname
-	text ","
-	line "@"
-	text_from_ram wMobileParticipant2Nickname
-	text " and"
-	cont "@"
-	text_from_ram wMobileParticipant3Nickname
-	text "."
-
-	para "Use these three?"
-	done
-
-UnknownText_0x1c521c::
-	text "Only three #MON"
-	line "may enter."
-	prompt
-
-UnknownText_0x1c5238::
-	text "The CARD FOLDER"
-	line "stores your and"
-	para "your friends'"
-	line "CARDS."
-	para "A CARD contains"
-	line "information like"
-	para "the person's name,"
-	line "phone number and"
-	cont "profile."
-	para ""
-	done
-
-UnknownText_0x1c52bc::
-	text "This is your CARD."
-	para "Once you've"
-	line "entered your phone"
-	para "number, you can"
-	line "trade CARDS with"
-	cont "your friends."
-	para ""
-	done
-
-UnknownText_0x1c531e::
-	text "If you have your"
-	line "friend's CARD, you"
-	para "can use it to make"
-	line "a call from a"
-	para "mobile phone on"
-	line "the 2nd floor of a"
-	cont "#MON CENTER."
-	para ""
-	done
-
-UnknownText_0x1c5394::
-	text "To safely store"
-	line "your collection of"
-	para "CARDS, you must"
-	line "set a PASSCODE for"
-	cont "your CARD FOLDER."
-	para ""
-	done
-
-UnknownText_0x1c53ee::
-	text "If the CARD FOLDER"
-	line "is deleted, all"
-
-	para "its CARDS and the"
-	line "PASSCODE will also"
-	cont "be deleted."
-
-	para "Beware--a deleted"
-	line "CARD FOLDER can't"
-	cont "be restored."
-
-	para "Want to delete"
-	line "your CARD FOLDER?"
-	done
-
-UnknownText_0x1c5494::
-	text "Are you sure you"
-	line "want to delete it?"
-	done
-
-UnknownText_0x1c54b9::
-	text "The CARD FOLDER"
-	line "has been deleted."
-	para ""
-	done
-
-UnknownText_0x1c54dd::
-	text "There is an older"
-	line "CARD FOLDER from a"
-	cont "previous journey."
-
-	para "Do you want to"
-	line "open it?"
-	done
-
-UnknownText_0x1c552d::
-	text "Delete the old"
-	line "CARD FOLDER?"
-	done
-
-UnknownText_0x1c554a::
-	text "Finish registering"
-	line "CARDS?"
-	done
-
-UnknownText_0x1c5565::
-	text "Huh? Sorry, wrong"
-	line "number!"
-	done
-
-UnknownText_0x1c5580::
-	text "Click!"
-	done
-
-UnknownText_0x1c5588::
-	text "<......>"
-	done
-
-UnknownText_0x1c558b::
-	text "That number is out"
-	line "of the area."
-	done
-
-UnknownText_0x1c55ac::
-	text "Just go talk to"
-	line "that person!"
-	done
-
-UnknownText_0x1c55ca::
-	text "Thank you!"
-	done
-
-UnknownText_0x1c55d6::
-	text "  :"
-	done
-
-UnknownText_0x1c55db::
-	text "Password OK."
-	line "Select CONTINUE &"
-	cont "reset settings."
-	prompt
-
-UnknownText_0x1c560b::
-	text "Wrong password!"
-	prompt
-
-UnknownText_0x1c561c::
-	text "Reset the clock?"
-	done
-
-UnknownText_0x1c562e::
-	text "Please enter the"
-	line "password."
-	done
-
-UnknownText_0x1c564a::
-	text "Clear all save"
-	line "data?"
-	done
-
-UnknownText_0x1c5660::
-	text_from_ram wMonOrItemNameBuffer
-	text " learned"
-	line "@"
-	text_from_ram StringBuffer2
-	text "!@"
-	sound_dex_fanfare_50_79
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1c5678::
-	text "Which move should"
-	next "be forgotten?"
-	done
-
-UnknownText_0x1c5699::
-	text "Stop learning"
-	line "@"
-	text_from_ram StringBuffer2
-	text "?"
-	done
-
-UnknownText_0x1c56af::
-	text_from_ram wMonOrItemNameBuffer
-	text ""
-	line "did not learn"
-	cont "@"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c56c9::
-	text_from_ram wMonOrItemNameBuffer
-	text " is"
-	line "trying to learn"
-	cont "@"
-	text_from_ram StringBuffer2
-	text "."
-
-	para "But @"
-	text_from_ram wMonOrItemNameBuffer
-	text ""
-	line "can't learn more"
-	cont "than four moves."
-
-	para "Delete an older"
-	line "move to make room"
-	cont "for @"
-	text_from_ram StringBuffer2
-	text "?"
-	done
-
-UnknownText_0x1c5740::
-	text "1, 2 and…@"
-	interpret_data
-	db "@@"
-
-UnknownText_0x1c574e::
-	text " Poof!@"
-	interpret_data
-	text ""
-	para "@"
-	text_from_ram wMonOrItemNameBuffer
-	text " forgot"
-	line "@"
-	text_from_ram StringBuffer1
-	text "."
-
-	para "And…"
-	prompt
-
-UnknownText_0x1c5772::
-	text "HM moves can't be"
-	line "forgotten now."
-	prompt
-
-UnknownText_0x1c5793::
-	text "Play with three"
-	line "coins?"
-	done
-
-UnknownText_0x1c57ab::
-	text "Not enough coins…"
-	prompt
-
-UnknownText_0x1c57be::
-	text "Choose a card."
-	done
-
-UnknownText_0x1c57ce::
-	text "Place your bet."
-	done
-
-UnknownText_0x1c57df::
-	text "Want to play"
-	line "again?"
-	done
-
-UnknownText_0x1c57f4::
-	text "The cards have"
-	line "been shuffled."
-	prompt
-
-UnknownText_0x1c5813::
-	text "Yeah!"
-	done
-
-UnknownText_0x1c581a::
-	text "Darn…"
-	done
-
-UnknownText_0x1c5821::
-	current_day
-	db "@@"
-
-UnknownText_0x1c5824::
-	text "<......>"
-	done
-
-UnknownText_0x1c5827::
-	text "You're out of the"
-	line "service area."
-	prompt
-
-UnknownText_0x1c5847::
-	text "Whom do you want"
-	line "to call?"
-	done
-
-UnknownText_0x1c5862::
-	text "Press any button"
-	line "to exit."
-	done
-
-UnknownText_0x1c587d::
-	text "Delete this stored"
-	line "phone number?"
-	done
-
-UnknownText_0x1c589f::
-	text "Which prize would"
-	line "you like?"
-	done
-
-UnknownText_0x1c58bc::
-	text_from_ram StringBuffer1
-	text "?"
-	line "Is that right?"
-	done
-
-UnknownText_0x1c58d1::
-	text "Here you go!"
-	para ""
-	done
-
-UnknownText_0x1c58e0::
-	text "You don't have"
-	line "enough points."
-	para ""
-	done
-
-UnknownText_0x1c58ff::
-	text "You have no room"
-	line "for it."
-	para ""
-	done
-
-UnknownText_0x1c591a::
-	text "Oh. Please come"
-	line "back again!"
-	done
-
-UnknownText_0x1c5937::
-	text "Excuse me!"
-	para ""
-	done
-
-Text_ExcuseMeYoureNotReady::
-	text "Excuse me."
-	line "You're not ready."
-	para ""
-	done
-
-UnknownText_0x1c5962::
-	text "Please return when"
-	line "you're ready."
-	done
-
-UnknownText_0x1c5983::
-	text "You need at least"
-	line "three #MON."
-	para ""
-	done
-
-UnknownText_0x1c59a3::
-	text "Sorry, an EGG"
-	line "doesn't qualify."
-	para ""
-	done
-
-Text_OnlyThreePkmnMayBeEntered::
-	text "Only three #MON"
-	line "may be entered."
-	para ""
-	done
-
-Text_ThePkmnMustAllBeDifferentKinds::
-	text "The @"
-	text_from_ram StringBuffer2
-	text " #MON"
-	line "must all be"
-	cont "different kinds."
-	para ""
-	done
-
-Text_ThePkmnMustNotHoldTheSameItems::
-	text "The @"
-	text_from_ram StringBuffer2
-	text " #MON"
-	line "must not hold the"
-	cont "same items."
-	para ""
-	done
-
-Text_YouCantTakeAnEgg::
-	text "You can't take an"
-	line "EGG!"
-	para ""
-	done
-
-UnknownText_0x1c5a5a::
-	text "It dodged the"
-	line "thrown BALL!"
-
-	para "This #MON"
-	line "can't be caught!"
-	prompt
-
-UnknownText_0x1c5a90::
-	text "You missed the"
-	line "#MON!"
-	prompt
-
-UnknownText_0x1c5aa6::
-	text "Oh no! The #MON"
-	line "broke free!"
-	prompt
-
-UnknownText_0x1c5ac3::
-	text "Aww! It appeared"
-	line "to be caught!"
-	prompt
-
-UnknownText_0x1c5ae3::
-	text "Aargh!"
-	line "Almost had it!"
-	prompt
-
-UnknownText_0x1c5afa::
-	text "Shoot! It was so"
-	line "close too!"
-	prompt
-
-UnknownText_0x1c5b17::
-	text "Gotcha! @"
-	text_from_ram EnemyMonNick
-	text ""
-	line "was caught!@"
-	sound_caught_mon
-	db "@@"
-
-Text_Waitbutton_2::
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1c5b38::
-	text_from_ram wMonOrItemNameBuffer
-	text " was"
-	line "sent to BILL's PC."
-	prompt
-
-UnknownText_0x1c5b53::
-	text_from_ram EnemyMonNick
-	text "'s data"
-	line "was newly added to"
-	cont "the #DEX.@"
-	sound_slot_machine_start
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1c5b7f::
-	text "Give a nickname to"
-	line "@"
-	text_from_ram StringBuffer1
-	text "?"
-	done
-
-UnknownText_0x1c5b9a::
-	text_from_ram StringBuffer1
-	text "'s"
-	line "@"
-	text_from_ram StringBuffer2
-	text " rose."
-	prompt
-
-UnknownText_0x1c5bac::
-	text "That can't be used"
-	line "on this #MON."
-	prompt
-
-Text_RepelUsedEarlierIsStillInEffect::
-	text "The REPEL used"
-	line "earlier is still"
-	cont "in effect."
-	prompt
-
-UnknownText_0x1c5bf9::
-	text "Played the #"
-	line "FLUTE."
-
-	para "Now, that's a"
-	line "catchy tune!"
-	prompt
-
-UnknownText_0x1c5c28::
-	text "All sleeping"
-	line "#MON woke up."
-	prompt
-
-UnknownText_0x1c5c44::
-	text "<PLAYER> played the"
-	line "# FLUTE.@"
-	text_waitbutton
-	db "@@"
-
-UnknownText_0x1c5c5e::
-	text "You now have"
-	line "@"
-	deciram wBlueCardBalance, 1, 2
-	text " points."
-	done
-
-UnknownText_0x1c5c7b::
-	text "Coins:"
-	line "@"
-	deciram Coins, 2, 4
-	db "@@"
-
-Text_RaiseThePPOfWhichMove::
-	text "Raise the PP of"
-	line "which move?"
-	done
-
-Text_RestoreThePPOfWhichMove::
-	text "Restore the PP of"
-	line "which move?"
-	done
-
-Text_PPIsMaxedOut::
-	text_from_ram StringBuffer2
-	text "'s PP"
-	line "is maxed out."
-	prompt
-
-Text_PPsIncreased::
-	text_from_ram StringBuffer2
-	text "'s PP"
-	line "increased."
-	prompt
-
-UnknownText_0x1c5cf1::
-	text "PP was restored."
-	prompt
-
-UnknownText_0x1c5d03::
-	text "There was a trophy"
-	line "inside!@"
-	sound_dex_fanfare_50_79
-	text ""
-	para "@"
-	text_from_ram PlayerName
-	text " sent the"
-	line "trophy home."
-	prompt
-
-UnknownText_0x1c5d3e::
-	text "It looks bitter…"
-	prompt
-
-UnknownText_0x1c5d50::
-	text "That can't be used"
-	line "on an EGG."
-	prompt
-
-UnknownText_0x1c5d6e::
-	text "OAK: <PLAYER>!"
-	line "This isn't the"
-	cont "time to use that!"
-	prompt
-
-UnknownText_0x1c5d97::
-	text "That belongs to"
-	line "someone else!"
-	prompt
-
-UnknownText_0x1c5db6::
-	text "It won't have any"
-	line "effect."
-	prompt
-
-UnknownText_0x1c5dd0::
-	text "The trainer"
-	line "blocked the BALL!"
-	prompt
-
-UnknownText_0x1c5def::
-	text "Don't be a thief!"
-	prompt
-
-UnknownText_0x1c5e01::
-	text "Cycling isn't"
-	line "allowed here."
-	prompt
-
-UnknownText_0x1c5e1d::
-	text "Can't get on your"
-	line "@"
-	text_from_ram StringBuffer1
-	text " now."
-	prompt
-
-UnknownText_0x1c5e3a::
-	text "The #MON BOX"
-	line "is full. That"
-	cont "can't be used now."
-	prompt
-
-UnknownText_0x1c5e68::
-	text "<PLAYER> used the@"
-	text_low
-	text_from_ram StringBuffer2
-	text "."
-	done
-
-UnknownText_0x1c5e7b::
-	text "<PLAYER> got on the@"
-	text_low
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c5e90::
-	text "<PLAYER> got off@"
-	text_low
-	text "the @"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c5ea8::
-	text_from_ram StringBuffer1
-	text " knows"
-	line "@"
-	text_from_ram StringBuffer2
-	text "."
-	prompt
-
-UnknownText_0x1c5eba::
-	text "That #MON knows"
-	line "only one move."
-	done
-
-UnknownText_0x1c5eda::
-	text "Oh, make it forget"
-	line "@"
-	text_from_ram StringBuffer1
-	text "?"
-	done
-
-UnknownText_0x1c5ef5::
-	text "Done! Your #MON"
-	line "forgot the move."
-	done
-
-UnknownText_0x1c5f17::
-	text "An EGG doesn't"
-	line "know any moves!"
-	done
-
-UnknownText_0x1c5f36::
-	text "No? Come visit me"
-	line "again."
-	done
-
-UnknownText_0x1c5f50::
-	text "Which move should"
-	line "it forget, then?"
-	prompt
-
-UnknownText_0x1c5f74::
-	text "Um… Oh, yes, I'm"
-	line "the MOVE DELETER."
-
-	para "I can make #MON"
-	line "forget moves."
-
-	para "Shall I make a"
-	line "#MON forget?"
-	done
-
-UnknownText_0x1c5fd1::
-	text "Which #MON?"
-	prompt
-
-Text_DSTIsThatOK::
-	text " DST,"
-	line "is that OK?"
-	done
-
-UnknownText_0x1c5ff1::
-	text ","
-	line "is that OK?"
-	done
-
-UnknownText_0x1c6000::
-	text "Do you want to"
-	line "switch to Daylight"
-	cont "Saving Time?"
-	done
-
-UnknownText_0x1c6030::
-	text "I set the clock"
-	line "forward by one"
-	cont "hour."
-	prompt
-
-UnknownText_0x1c6056::
-	text "Is Daylight Saving"
-	line "Time over?"
-	done
-
-UnknownText_0x1c6075::
-	text "I put the clock"
-	line "back one hour."
-	prompt
-
-UnknownText_0x1c6095::
-	text "Do you want to"
-	line "adjust your clock"
-
-	para "for Daylight"
-	line "Saving Time?"
-	done
-
-UnknownText_0x1c60d1::
-	text "I lost the in-"
-	line "struction booklet"
-	cont "for the #GEAR."
-
-	para "Come back again in"
-	line "a while."
-	prompt
--- a/text/common_text.asm
+++ /dev/null
@@ -1,18 +1,0 @@
-INCLUDE "includes.asm"
-
-
-SECTION "Text 1", ROMX
-
-INCLUDE "text/common_1.asm"
-
-
-SECTION "Text 2", ROMX
-
-INCLUDE "text/common_2.asm"
-INCLUDE "text/common_3.asm"
-
-
-SECTION "Text 3", ROMX
-
-INCLUDE "text/common_4.asm"
-INCLUDE "text/common_5.asm"
--- a/text/phone/alan_overworld.asm
+++ /dev/null
@@ -1,71 +1,0 @@
-AlanAskNumber1Text:
-	text "Reading textbooks"
-	line "is worthwhile"
-	cont "every so often."
-
-	para "When I'm reading"
-	line "and walking, I"
-	cont "have to look down."
-
-	para "So I notice items"
-	line "on the ground."
-
-	para "Next time I find"
-	line "something, I'll"
-	cont "give it to you."
-
-	para "May I have your"
-	line "phone number?"
-	done
-
-AlanAskNumber2Text:
-	text "If I find some-"
-	line "thing, it's yours."
-
-	para "So may I have your"
-	line "phone number?"
-	done
-
-AlanNumberAcceptedText:
-	text "I'll call you as"
-	line "soon as I find"
-
-	para "something. You can"
-	line "count on it!"
-	done
-
-AlanNumberDeclinedText:
-	text "Oh… I thought it"
-	line "would be a good"
-
-	para "break to call you"
-	line "when I'm studying…"
-	done
-
-AlanPhoneFullText:
-	text "There's no room"
-	line "for my number."
-	done
-
-AlanRematchText:
-	text "I waited around"
-	line "for you!"
-
-	para "I'm thoroughly"
-	line "prepared today!"
-	done
-
-AlanGiftText:
-	text "This, this! This"
-	line "is yours! Ta-da!"
-	done
-
-AlanPackFullText:
-	text "Whoops!"
-
-	para "You can't carry"
-	line "any more items!"
-
-	para "I'll hold it until"
-	line "next time."
-	done
--- a/text/phone/anthony_overworld.asm
+++ /dev/null
@@ -1,52 +1,0 @@
-AnthonyAskNumber1Text:
-	text "By the way, I'm a"
-	line "HIKER, so I often"
-
-	para "go to mountains"
-	line "and caves."
-
-	para "I occasionally see"
-	line "rare #MON."
-
-	para "I could call you"
-	line "the next time I"
-	cont "see one."
-
-	para "Feel like swapping"
-	line "phone numbers?"
-	done
-
-AnthonyAskNumber2Text:
-	text "I could call you"
-	line "when I see some"
-	cont "rare #MON."
-
-	para "Feel like swapping"
-	line "phone numbers?"
-	done
-
-AnthonyNumberAcceptedText:
-	text "Be patient. I'll"
-	line "find some rare"
-	cont "#MON for you!"
-	done
-
-AnthonyNumberDeclinedText:
-	text "You're cold. I may"
-	line "as well head to"
-	cont "the mountains…"
-	done
-
-AnthonyPhoneFullText:
-	text "Your phone's full."
-
-	para "It can't register"
-	line "my phone number."
-	done
-
-AnthonyRematchText:
-	text "All righty, then!"
-
-	para "My #MON and I"
-	line "are raring to go!"
-	done
--- a/text/phone/arnie_overworld.asm
+++ /dev/null
@@ -1,59 +1,0 @@
-ArnieAskNumber1Text:
-	text "Do you get the"
-	line "feeling that there"
-
-	para "are more rare"
-	line "#MON around?"
-
-	para "I'm positive there"
-	line "are, so I look all"
-	cont "the time."
-
-	para "If I find one, I"
-	line "want to share the"
-
-	para "good news with"
-	line "everyone I know."
-
-	para "I know! Give me"
-	line "your phone number."
-	done
-
-ArnieAskNumber2Text:
-	text "I want to let"
-	line "people know if I"
-	cont "see rare #MON."
-
-	para "Please give me"
-	line "your phone number!"
-	done
-
-ArnieNumberAcceptedText:
-	text "If I spot any"
-	line "awesome #MON,"
-
-	para "I'll be sure to"
-	line "give you a call!"
-	done
-
-ArnieNumberDeclinedText:
-	text "Aww! I want to"
-	line "tell someone about"
-	cont "my discoveries!"
-	done
-
-ArniePhoneFullText:
-	text "There's no space"
-	line "for my number."
-
-	para "If you make room,"
-	line "register me!"
-	done
-
-ArnieRematchText:
-	text "It's my turn to"
-	line "win now!"
-
-	para "I've turned over a"
-	line "new leaf!"
-	done
--- a/text/phone/beth_overworld.asm
+++ /dev/null
@@ -1,56 +1,0 @@
-BethAskNumber1Text:
-	text "It's been a while"
-	line "since I lost…"
-
-	para "You're very good"
-	line "at battling."
-
-	para "We should battle"
-	line "again sometime."
-
-	para "By challenging a"
-	line "tough trainer like"
-
-	para "you, I think I can"
-	line "get better too."
-
-	para "So how about it?"
-
-	para "Would you give me"
-	line "your phone number?"
-	done
-
-BethAskNumber2Text:
-	text "By challenging a"
-	line "tough trainer like"
-
-	para "you, I think I can"
-	line "get better too."
-
-	para "So how about it?"
-
-	para "Would you give me"
-	line "your phone number?"
-	done
-
-BethNumberAcceptedText:
-	text "Let's battle again"
-	line "sometime!"
-	done
-
-BethNumberDeclinedText:
-	text "That's too bad…"
-
-	para "Let me know if you"
-	line "change your mind."
-	done
-
-BethPhoneFullText:
-	text "Oh no. Your phone"
-	line "is out of memory."
-	done
-
-BethRematchText:
-	text "You sure kept me"
-	line "waiting! Let's go!"
-	done
--- a/text/phone/beverly_overworld.asm
+++ /dev/null
@@ -1,60 +1,0 @@
-BeverlyAskNumber1Text:
-	text "Your MARILL is so"
-	line "cute and adorable!"
-
-	para "You love #MON"
-	line "just like I do!"
-
-	para "Want to trade"
-	line "phone numbers?"
-
-	para "Let's chat! It'll"
-	line "be so much fun!"
-	done
-
-BeverlyAskNumber2Text:
-	text "Your MARILL is so"
-	line "cute and adorable!"
-
-	para "We should chat, it"
-	line "will be fun."
-
-	para "Can I have your"
-	line "phone number?"
-	done
-
-BeverlyNumberAcceptedText:
-	text "To be honest, I"
-	line "want a MARILL."
-
-	para "But I make do with"
-	line "my cute SNUBBULL."
-	done
-
-BeverlyNumberDeclinedText:
-	text "Oh… That's"
-	line "disappointing…"
-
-	para "Goodbye, MARILL…"
-	done
-
-BeverlyPhoneFullText:
-	text "Oh? Your phone's"
-	line "memory is full."
-	done
-
-BeverlyGiftText:
-	text "Oh? <PLAYER>? "
-	line "I waited here for"
-
-	para "you. I brought you"
-	line "a little gift."
-	done
-
-BeverlyPackFullText:
-	text "Oh?"
-	line "You have no room."
-
-	para "Please come back"
-	line "for it later."
-	done
--- a/text/phone/bill.asm
+++ /dev/null
@@ -1,101 +1,0 @@
-BillPhoneMornGreetingText: ; 0x1b4427
-	text "Good morning!"
-
-	para "This is the #-"
-	line "MON STORAGE SYSTEM"
-
-	para "ADMINISTRATION"
-	line "SERVICE."
-	done
-
-BillPhoneDayGreetingText: ; 0x1b4470
-	text "Good day!"
-
-	para "This is the #-"
-	line "MON STORAGE SYSTEM"
-
-	para "ADMINISTRATION"
-	line "SERVICE."
-	done
-
-BillPhoneNiteGreetingText: ; 0x1b44b5
-	text "Good evening!"
-
-	para "This is the #-"
-	line "MON STORAGE SYSTEM"
-
-	para "ADMINISTRATION"
-	line "SERVICE."
-	done
-
-BillPhoneGeneriText: ; 0x1b44fe
-	text "Who's calling?"
-
-	para "<PLAY_G>, is it?"
-	line "Hang on a sec…"
-
-	para $56
-	line $56
-	done
-
-BillPhoneNotFullText: ; 0x1b452a
-	text "Thanks for"
-	line "waiting!"
-
-	para "<PLAY_G>, your BOX"
-	line "has room for @"
-	text_from_ram StringBuffer3
-	text ""
-	cont "more #MON."
-
-	para "Get out there and"
-	line "fill it up!"
-	done
-
-BillPhoneNearlyFullText: ; 0x1b4587
-	text "Thanks for"
-	line "waiting!"
-
-	para "<PLAY_G>, your BOX"
-	line "has room for only"
-	cont "@"
-	text_from_ram StringBuffer3
-	text " more #MON."
-
-	para "Maybe you should"
-	line "switch your BOX."
-	done
-
-BillPhoneFullText: ; 0x1b45ed
-	text "Thanks for"
-	line "waiting!"
-
-	para "<PLAY_G>, your BOX"
-	line "is full!"
-
-	para "You'll have to"
-	line "switch BOXES if"
-
-	para "you want to catch"
-	line "more #MON."
-	done
-
-BillPhoneNewlyFullText: ; 0x1b4652
-	text "Hi, <PLAY_G>?"
-	line "It's me, BILL!"
-
-	para "Thanks for using"
-	line "my STORAGE SYSTEM."
-
-	para "That last #MON"
-	line "you sent filled"
-	cont "your BOX up."
-
-	para "You'll have to"
-	line "switch BOXES if"
-
-	para "you want to catch"
-	line "more #MON."
-
-	para "Bye now!"
-	done
--- a/text/phone/brent_overworld.asm
+++ /dev/null
@@ -1,62 +1,0 @@
-BrentAskNumber1Text:
-	text "By the way, you're"
-	line "a #MANIAC…"
-
-	para "I can tell."
-	line "Yes, you are."
-
-	para "But your knowledge"
-	line "is shallow still!"
-
-	para "Do you know BILL?"
-	line "He's an incredible"
-
-	para "#MANIAC."
-	line "I revere him."
-
-	para "I'll teach you all"
-	line "I know about BILL,"
-
-	para "so leave me your"
-	line "phone number."
-	done
-
-BrentAskNumber2Text:
-	text "I'll teach you all"
-	line "I know about BILL,"
-
-	para "so leave me your"
-	line "phone number."
-	done
-
-BrentNumberAcceptedText:
-	text "BILL--he's more"
-	line "than amazing!"
-
-	para "To be a #MANIAC"
-	line "like him someday…"
-
-	para "That's my dream."
-	done
-
-BrentNumberDeclinedText:
-	text "You're going to"
-	line "regret it…"
-
-	para "And I won't care…"
-	done
-
-BrentPhoneFullText:
-	text "Huh? Your phone"
-	line "list's full."
-
-	para "A #MANIAC has"
-	line "to be more tidy!"
-	done
-
-BrentRematchText:
-	text "I've been waiting."
-
-	para "Look, check out my"
-	line "#MON!"
-	done
--- a/text/phone/buena.asm
+++ /dev/null
@@ -1,550 +1,0 @@
-UnknownText_0xa0c28: ; 0xa0c28
-	text "Hi, this is BUENA…"
-
-	para "Oh! Good morning,"
-	line "<PLAY_G>!"
-
-	para "I'm kind of foggy"
-	line "in the morning…"
-	done
-; 0xa0c72
-
-UnknownText_0xa0c72: ; 0xa0c72
-	text "Hi, this is BUENA…"
-	line "Oh! Hi, <PLAY_G>!"
-
-	para "Do you tune into"
-	line "BUENA's show?"
-	done
-; 0xa0caf
-
-UnknownText_0xa0caf: ; 0xa0caf
-	text "This is BUENA."
-	line "I can't come to"
-
-	para "the phone right"
-	line "now."
-
-	para "If you want to"
-	line "chat, tune into"
-
-	para "BUENA's PASSWORD"
-	line "on the radio and"
-
-	para "give me a call"
-	line "after midnight!"
-	done
-; 0xa0d42
-
-UnknownText_0xa0d42: ; 0xa0d42
-	text "Hi, this is BUENA…"
-	line "Oh! Hi, <PLAY_G>!"
-
-	para "I just got off"
-	line "work. "
-
-	para "Let me tell you,"
-	line "I'm exhausted!"
-	done
-; 0xa0d96
-
-UnknownText_0xa0d96: ; 0xa0d96
-	text "<PLAY_G>!"
-	line "Hi, it's BUENA!"
-
-	para "I got up early, so"
-	line "I decided to call!"
-	done
-; 0xa0dcf
-
-UnknownText_0xa0dcf: ; 0xa0dcf
-	text "<PLAY_G>!"
-	line "Hi, it's BUENA!"
-
-	para "I needed someone"
-	line "to chat with!"
-	done
-; 0xa0e01
-
-UnknownText_0xa0e01: ; 0xa0e01
-	text "<PLAY_G>!"
-	line "Hi, it's BUENA!"
-
-	para "I'm just on my"
-	line "break."
-	done
-; 0xa0e29
-
-UnknownText_0xa0e29: ; 0xa0e29
-	text "<PLAY_G>!"
-	line "Hi, it's BUENA!"
-
-	para "I couldn't sleep,"
-	line "so I called you."
-	done
-; 0xa0e5e
-
-UnknownText_0xa0e5e: ; 0xa0e5e
-	text "Oh. Hi, <PLAY_G>!"
-
-	para "You are how?"
-
-	para "Aiyee! This isn't"
-	line "the time for me to"
-
-	para "be cracking silly"
-	line "gag greetings!"
-
-	para "The RADIO TOWER is"
-	line "in deep trouble!"
-
-	para "<PLAY_G>, you'd"
-	line "better be careful!"
-	done
-; 0xa0efb
-
-UnknownText_0xa0efb: ; 0xa0efb
-	text "The other day, I"
-	line "went out to eat"
-
-	para "with DJ BEN!"
-	line "Isn't it great?"
-
-	para "Not only that, he"
-	line "said the music on"
-
-	para "my program is"
-	line "cool!"
-
-	para "Oh, wow! Like,"
-	line "what should I do?"
-
-	para "…Oops, I have to"
-	line "get ready for my"
-
-	para "show! I'll catch"
-	line "you later!"
-	done
-; 0xa0fcf
-
-UnknownText_0xa0fcf: ; 0xa0fcf
-	text "You know the"
-	line "receptionist at"
-	cont "the RADIO TOWER?"
-
-	para "'Welcome,' is all"
-	line "she ever says."
-
-	para "But she's really"
-	line "the chattiest"
-
-	para "person at the"
-	line "RADIO TOWER."
-
-	para "So she must be"
-	line "holding back."
-
-	para "Isn't that fun to"
-	line "know?"
-
-	para "Catch you later!"
-	done
-; 0xa109d
-
-UnknownText_0xa109d: ; 0xa109d
-	text "Tell me, <PLAY_G>."
-	line "Have you ever won"
-
-	para "a prize on the"
-	line "LUCKY NUMBER SHOW?"
-
-	para "REED moans that"
-	line "he's never won, so"
-
-	para "he vows to keep"
-	line "the show on the"
-	cont "air till he does."
-
-	para "Let's chat again!"
-	done
-; 0xa1143
-
-UnknownText_0xa1143: ; 0xa1143
-	text "You know, last"
-	line "night…"
-
-	para "I was so stressed"
-	line "out from work, I"
-
-	para "ate a ton of junk"
-	line "food!"
-
-	para "MARY and I have"
-	line "this deal about"
-	cont "losing weight…"
-
-	para "This won't do…"
-
-	para "Huh? What's the"
-	line "weight?"
-
-	para "This has to be a"
-	line "total secret!"
-
-	para "MARY weighs…"
-
-	para "Aiyee! M-MARY!"
-
-	para "Uh… Um… I… Sorry,"
-	line "wrong number!"
-	done
-; 0xa1244
-
-UnknownText_0xa1244: ; 0xa1244
-	text "Yesterday, PROF."
-	line "OAK was in the"
-
-	para "studio to tape his"
-	line "show."
-
-	para "So I went over and"
-	line "introduced myself."
-
-	para "Get this--he tunes"
-	line "in to my program!"
-
-	para "Oh! Here comes"
-	line "PROF.OAK again!"
-
-	para "I'm going to chat"
-	line "him up again!"
-
-	para "Catch you later!"
-	done
-; 0xa1318
-
-UnknownText_0xa1318: ; 0xa1318
-	text "…Cough, cough!"
-
-	para "Uhm sorry uh got"
-	line "uh code dite now."
-
-	para "Buh uma pro so uh"
-	line "hav to cover id ub"
-
-	para "so no un notice"
-	line "while uhm on air."
-
-	para "Uh fidz muh voice"
-	line "now."
-
-	para "I'll catch you on"
-	line "the fly. This has"
-	cont "been BUENA!"
-	done
-; 0xa13d8
-
-UnknownText_0xa13d8: ; 0xa13d8
-	text "Hey, <PLAY_G>."
-	line "You won that RADIO"
-
-	para "CARD by beating"
-	line "the quiz at the"
-
-	para "reception desk,"
-	line "didn't you?"
-
-	para "Guess what? I made"
-	line "up the questions!"
-
-	para "…Were they too"
-	line "easy for you?"
-
-	para "Well, let's chat"
-	line "again!"
-	done
-; 0xa1488
-
-UnknownText_0xa1488: ; 0xa1488
-	text "I'm elated that"
-	line "more people are"
-
-	para "taking part in my"
-	line "PASSWORD show."
-
-	para "But when PIKACHU"
-	line "was the password,"
-
-	para "it was uh… whew…"
-	line "overwhelming."
-
-	para "FAN CLUB people"
-	line "came in out in"
-
-	para "droves, shouting"
-	line "'PIKACHU!' over"
-
-	para "and over. I mean,"
-	line "they were loud."
-
-	para "Anyone tuning in"
-	line "around then must"
-
-	para "have been shocked"
-	line "by the racket!"
-
-	para "Anyway, back to"
-	line "work for me!"
-
-	para "Let's chat again!"
-	done
-; 0xa15de
-
-UnknownText_0xa15de: ; 0xa15de
-	text "Guess what?"
-	line "The RADIO TOWER's"
-
-	para "DIRECTOR is a big"
-	line "fan of TV!"
-
-	para "A while ago, a"
-	line "fashion show on TV"
-
-	para "said that black"
-	line "suits were in."
-
-	para "Now all he wears"
-	line "are black suits."
-
-	para "But it's a secret"
-	line "that our DIRECTOR"
-
-	para "is a TV fan, so if"
-	line "you see him, don't"
-
-	para "you dare mention"
-	line "it!"
-
-	para "Oh! The DIRECTOR"
-	line "will be here soon!"
-
-	para "Later! Tune into"
-	line "my show!"
-	done
-; 0xa1717
-
-UnknownText_0xa1717: ; 0xa1717
-	text "<PLAY_G>, tell me."
-
-	para "When do you relax"
-	line "the most?"
-
-	para "For me, it has to"
-	line "be in the studio"
-
-	para "right after my"
-	line "show, enjoying a"
-
-	para "nice cup of tea."
-	line "It's so pleasant"
-
-	para "that it gradually"
-	line "makes me drowsy…"
-
-	para "<......> <......> <......>"
-
-	para "<......> <......> <......>Zzz"
-
-	para "Oops, I drifted"
-	line "off just thinking"
-
-	para "about it! How, uh…"
-	line "embarrassing!"
-
-	para "Please forget this"
-	line "happened! Later!"
-	done
-; 0xa183d
-
-UnknownText_0xa183d: ; 0xa183d
-	text "<PLAY_G>, what was"
-	line "the first #MON"
-	cont "you ever caught?"
-
-	para "…Oh, really?"
-
-	para "I've seen lots of"
-	line "#MON around,"
-
-	para "but I've never"
-	line "caught one."
-
-	para "I should give it a"
-	line "try sometime."
-
-	para "Did you know that"
-	line "the first #MON"
-
-	para "MARY caught was a"
-	line "DROWZEE?"
-
-	para "Isn't that so out"
-	line "of character?"
-
-	para "But MARY's DROWZEE"
-	line "kept making her"
-
-	para "fall asleep on the"
-	line "job, so she traded"
-
-	para "with a fan for a"
-	line "MEOWTH."
-
-	para "Let's chat about"
-	line "#MON again!"
-
-	para "Bye-bye!"
-	done
-; 0xa19b1
-
-UnknownText_0xa19b1: ; 0xa19b1
-	text "Guess what? All of"
-	line "us from the RADIO"
-
-	para "TOWER are going on"
-	line "a company vacation"
-
-	para "to the RADIO TOWER"
-	line "in LAVENDER."
-
-	para "We're wasting our"
-	line "vacation on a trip"
-
-	para "to another RADIO"
-	line "TOWER?"
-
-	para "I'd much rather go"
-	line "to the beach!"
-
-	para "<PLAY_G>, I hope"
-	line "you have enough"
-
-	para "fun for both of us"
-	line "on your journey!"
-
-	para "Bye-bye!"
-	done
-; 0xa1ac0
-
-UnknownText_0xa1ac0: ; 0xa1ac0
-	text "Did you know…?"
-
-	para "BEN and FERN talk"
-	line "on the phone for"
-
-	para "hours about what"
-	line "#MON music they"
-
-	para "should play on"
-	line "different days of"
-	cont "the week."
-
-	para "One time, FERN's"
-	line "rapping style kind"
-
-	para "of rubbed off on"
-	line "BEN weirdly."
-
-	para "So we ended up"
-	line "enduring BEN's"
-
-	para "silly, chilly, a"
-	line "willy-nilly jive-"
-	cont "talking shtick for"
-	cont "a while."
-
-	para "Let's chat again!"
-	done
-; 0xa1bed
-
-UnknownText_0xa1bed: ; 0xa1bed
-	text "I'm going shopping"
-	line "with MARY and LILY"
-	cont "soon."
-
-	para "It'll be great if"
-	line "GOLDENROD DEPT."
-
-	para "STORE has a sale"
-	line "on when we go…"
-
-	para "<PLAY_G>, maybe we"
-	line "can hook up too!"
-
-	para "Catch you later!"
-	done
-; 0xa1c88
-
-UnknownText_0xa1c88: ; 0xa1c88
-	text "I'm thinking of"
-	line "going to the GAME"
-
-	para "CORNER tomorrow."
-	line "It's been a while."
-
-	para "You see, I have my"
-	line "favorite machine…"
-
-	para "It pays out a lot,"
-	line "I kid you not!"
-
-	para "Huh? Nuh-uh, it's"
-	line "my secret!"
-
-	para "You have to find"
-	line "it yourself!"
-
-	para "Catch you later!"
-	done
-; 0xa1d5f
-
-UnknownText_0xa1d5f: ; 0xa1d5f
-	text "Hey, <PLAY_G>. You"
-	line "use your #GEAR"
-
-	para "to listen to the"
-	line "radio, right?"
-
-	para "I heard that you"
-	line "can even display"
-
-	para "town maps with"
-	line "#GEAR."
-
-	para "I have a bad sense"
-	line "of direction, so"
-
-	para "#GEAR would be"
-	line "handy…"
-
-	para "Anyway, thanks for"
-	line "calling! Later!"
-	done
-; 0xa1e2f
-
-UnknownText_0xa1e2f: ; 0xa1e2f
-	text "Is it sunny"
-	line "outside today?"
-
-	para "When you're cooped"
-	line "up in the RADIO"
-
-	para "TOWER as much as I"
-	line "am, you lose touch"
-
-	para "with the outside."
-	line "It can be boring."
-
-	para "Please call again!"
-	done
-; 0xa1eca
--- a/text/phone/chad_overworld.asm
+++ /dev/null
@@ -1,56 +1,0 @@
-ChadAskNumber1Text:
-	text "Huh? Is that thing"
-	line "a #DEX? Have"
-	cont "you met PROF.OAK?"
-
-	para "Huh? You have? "
-	line "That's way cool!"
-
-	para "I have a dream of"
-	line "becoming a #MON"
-
-	para "researcher like"
-	line "PROF.OAK."
-
-	para "May I please have"
-	line "your phone number?"
-
-	para "We should chat"
-	line "about PROF.OAK."
-
-	para "I'm sure it will"
-	line "be loads of fun!"
-	done
-
-ChadAskNumber2Text:
-	text "May I please have"
-	line "your phone number?"
-
-	para "We should chat"
-	line "about PROF.OAK."
-
-	para "I'm sure it will"
-	line "be loads of fun!"
-	done
-
-ChadNumberAcceptedText:
-	text "You must listen to"
-	line "PROF.OAK'S #MON"
-	cont "TALK, right?"
-	done
-
-ChadNumberDeclinedText:
-	text "Oh… I wish I had a"
-	line "chance to meet"
-	cont "PROF.OAK…"
-	done
-
-ChadPhoneFullText:
-	text "Your phone list is"
-	line "completely full!"
-	done
-
-ChadRematchText:
-	text "I've been waiting!"
-	line "Let's battle now!"
-	done
--- a/text/phone/dana_overworld.asm
+++ /dev/null
@@ -1,72 +1,0 @@
-DanaAskNumber1Text:
-	text "You're really good"
-	line "at #MON!"
-
-	para "Boys give me items"
-	line "after battles, but"
-
-	para "sometimes they"
-	line "give me too much."
-
-	para "Next time, I can"
-	line "share some if you"
-
-	para "want. Let me get"
-	line "your phone number."
-	done
-
-DanaAskNumber2Text:
-	text "I'll share my"
-	line "gifts with you."
-
-	para "Let me get your"
-	line "phone number."
-	done
-
-DanaNumberAcceptedText:
-	text "Next time a boy"
-	line "gives me something"
-
-	para "after a battle,"
-	line "I'll share some!"
-
-	para "Does that make me"
-	line "bad?"
-	done
-
-DanaNumberDeclinedText:
-	text "Aww, you don't"
-	line "want anything?"
-
-	para "But it's all for"
-	line "free…"
-	done
-
-DanaPhoneFullText:
-	text "But your phone's"
-	line "out of memory!"
-	done
-
-DanaRematchText:
-	text "You're really"
-	line "late!"
-
-	para "I'm eager to get"
-	line "going!"
-	done
-
-DanaGiftText:
-	text "Hi! Are you here"
-	line "for your gift?"
-
-	para "This should really"
-	line "make your day!"
-	done
-
-DanaPackFullText:
-	text "Where are you"
-	line "going to put this?"
-
-	para "I'll keep it, so"
-	line "come get it later!"
-	done
--- a/text/phone/derek_overworld.asm
+++ /dev/null
@@ -1,61 +1,0 @@
-DerekAskNumber1Text:
-	text "Oh, wow! PIKACHU!"
-	line "It's so soft and"
-	cont "furry! How cute!"
-
-	para "Let's be friends!"
-	line "PIKACHU-lovers are"
-	cont "never bad people!"
-
-	para "Let's chat about"
-	line "PIKACHU!"
-
-	para "Can I get your"
-	line "phone number?"
-	done
-
-DerekAskNumber2Text:
-	text "Let's chat about"
-	line "PIKACHU!"
-
-	para "Can I get your"
-	line "phone number?"
-	done
-
-DerekNumberAcceptedText:
-	text "PIKACHU is the"
-	line "one! If anything"
-
-	para "comes up, I'll"
-	line "give you a jingle."
-	done
-
-DerekNumberDeclinedText:
-	text "You…"
-
-	para "I bet you don't"
-	line "even like PIKACHU…"
-	done
-
-DerekPhoneFullText:
-	text "Wait a sec! Your"
-	line "phone list's full!"
-	done
-
-DerekGiftText:
-	text "I've been looking"
-	line "for you! Here, see"
-	cont "this? This is it!"
-
-	para "I'm certain your"
-	line "PIKACHU will love"
-	cont "my gift too!"
-	done
-
-DerekPackFullText:
-	text "Uh-oh, too bad."
-	line "You don't have any"
-
-	para "room. Be sure to"
-	line "get it later."
-	done
--- a/text/phone/elm.asm
+++ /dev/null
@@ -1,211 +1,0 @@
-ElmPhoneStartText: ; 0x1b46fc
-	text "Hello, <PLAY_G>?"
-
-	para "Try not to overdo"
-	line "it."
-
-	para "Be sure to heal"
-	line "your #MON if"
-	cont "they are hurt."
-	done
-
-ElmPhoneSawMrPokemonText: ; 0x1b4749
-	text "Hello, <PLAY_G>?"
-
-	para "Did you meet MR."
-	line "#MON? Great!"
-	cont "Come back safely!"
-	done
-
-ElmPhonePokemonStolenText: ; 0x1b4784
-	text "<PLAY_G>? I'm very"
-	line "upset now."
-
-	para "We had a #MON"
-	line "stolen from here."
-
-	para "How could anyone"
-	line "do that?"
-	done
-
-ElmPhoneCheckingEggText: ; 0x1b47d5
-	text "Hello, <PLAY_G>?"
-
-	para "We're checking the"
-	line "EGG now. It does"
-
-	para "appear to be a"
-	line "#MON EGG."
-	done
-
-ElmPhoneAssistantText: ; 0x1b481c
-	text "Hello, <PLAY_G>?"
-
-	para "Did you see my"
-	line "assistant? He's at"
-
-	para "the #MON CENTER"
-	line "in VIOLET CITY."
-	done
-
-ElmPhoneEggUnhatchedText: ; 0x1b4868
-	text "Hello, <PLAY_G>?"
-
-	para "How's the EGG? Has"
-	line "anything changed?"
-
-	para "If anything hap-"
-	line "pens, please call."
-	done
-
-ElmPhoneEggHatchedText: ; 0x1b48bb
-	text "Hello, <PLAY_G>?"
-	line "How is the EGG?"
-
-	para "What? It hatched?"
-	line "Wow! What kind of"
-	cont "#MON is it?"
-
-	para "Please come show"
-	line "me now!"
-	done
-
-ElmPhoneDiscovery1Text: ; 0x1b491f
-	text "Hello, <PLAY_G>?"
-
-	para "I just made a new"
-	line "discovery."
-
-	para "The time it takes"
-	line "for an EGG to"
-
-	para "hatch depends on"
-	line "the #MON."
-	done
-
-ElmPhoneDiscovery2Text: ; 0x1b4982
-	text "Hello, <PLAY_G>?"
-
-	para "It's still a"
-	line "mystery what kinds"
-
-	para "of moves hatched"
-	line "#MON have."
-
-	para "We're investigat-"
-	line "ing that now."
-	done
-
-ElmPhonePokerusText: ; 0x1b49e7
-	text "Hello, <PLAY_G>?"
-
-	para "I discovered an"
-	line "odd thing."
-
-	para "Apparently there's"
-	line "something called"
-
-	para "#RUS that in-"
-	line "fects #MON."
-
-	para "Yes, it's like a"
-	line "virus, so it's"
-	cont "called #RUS."
-
-	para "It multiplies fast"
-	line "and infects other"
-
-	para "#MON too. But"
-	line "that's all."
-
-	para "It doesn't seem to"
-	line "do anything, and"
-
-	para "it goes away over"
-	line "time."
-
-	para "I guess it's"
-	line "nothing to worry"
-	cont "about. Bye!"
-	done
-
-ElmPhoneDisasterText: ; 0x1b4b17
-	text "H-hello? <PLAY_G>?"
-	line "It's a disaster!"
-
-	para "Uh, um, it's just"
-	line "terrible!"
-
-	para "What should I do?"
-	line "It… Oh, no…"
-
-	para "Please get back"
-	line "here now!"
-	done
-
-ElmPhoneEggAssistantText: ; 0x1b4b87
-	text "Hello, <PLAY_G>? We"
-	line "discovered some-"
-
-	para "thing about the"
-	line "EGG!"
-
-	para "My assistant is at"
-	line "the #MON CENTER"
-
-	para "in VIOLET CITY. "
-	line "Could you talk to"
-	cont "him?"
-	done
-
-ElmPhoneRocketText: ; 0x1b4c06
-	text "<PLAY_G>, how are"
-	line "things going?"
-
-	para "I called because"
-	line "something weird is"
-
-	para "happening with the"
-	line "radio broadcasts."
-
-	para "They were talking"
-	line "about TEAM ROCKET."
-
-	para "<PLAY_G>, do you"
-	line "know anything"
-	cont "about it?"
-
-	para "Maybe TEAM ROCKET"
-	line "has returned. No,"
-
-	para "that just can't"
-	line "be true."
-
-	para "Sorry to bug you."
-	line "Take care!"
-	done
-
-ElmPhoneGiftText: ; 0x1b4d09
-	text "Hello, <PLAY_G>?"
-
-	para "I have something"
-	line "here for you."
-
-	para "Could you swing by"
-	line "my LAB?"
-
-	para "See you later!"
-	done
-
-ElmPhoneUnusedText: ; 0x1b4d5d
-	text "Hello, <PLAY_G>?"
-	line "How's it going?"
-
-	para "I got ahold of"
-	line "something neat."
-
-	para "Swing by my LAB"
-	line "and pick it up!"
-
-	para "See you later!"
-	done
--- a/text/phone/erin_overworld.asm
+++ /dev/null
@@ -1,63 +1,0 @@
-ErinAskNumber1Text:
-	text "It really made me"
-	line "angry to lose."
-
-	para "I'll have to train"
-	line "much harder…"
-
-	para "Here's my number."
-	line "I'm ERIN--don't"
-
-	para "forget! Want to"
-	line "battle me again?"
-	done
-
-ErinAskNumber2Text:
-	text "I want to battle"
-	line "with you again."
-
-	para "Do you want to"
-	line "exchange numbers?"
-	done
-
-ErinNumberAcceptedText:
-	text "I'll remember to"
-	line "call when I want"
-	cont "to battle again!"
-	done
-
-ErinNumberDeclinedText:
-	text "Oh… I'm sad…"
-	line "If you do want to"
-
-	para "battle, come see"
-	line "ERIN--that's me!"
-	done
-
-ErinPhoneFullText:
-	text "Oh no. Your phone"
-	line "is all filled up."
-	done
-
-ErinRematchText:
-	text "Yay! I waited!"
-	line "Let's start now!"
-	done
-
-ErinPackFullText:
-	text "That's too bad!"
-	line "You have no room…"
-
-	para "I'll give it to"
-	line "you another time."
-	done
-
-ErinRematchGiftText:
-	text "Aww… I lost again!"
-
-	para "I wonder how many"
-	line "times that is…"
-
-	para "Thanks for coming!"
-	line "Here's a present!"
-	done
--- a/text/phone/extra.asm
+++ /dev/null
@@ -1,1880 +1,0 @@
-
-UnknownText_0x64000: ; 0x64000
-	text "I hate having to"
-	line "hang up on you!"
-
-	para "Call you later!"
-	done
-; 0x64032
-
-UnknownText_0x64032: ; 0x64032
-	text "<PLAY_G>, have you"
-	line "heard?"
-
-	para "GOLDENROD's RADIO"
-	line "TOWER has been"
-
-	para "taken over by TEAM"
-	line "ROCKET!"
-
-	para "…Um… What's TEAM"
-	line "ROCKET?"
-	done
-; 0x64099
-
-UnknownText_0x64099: ; 0x64099
-	text "<PLAY_G>, I heard!"
-
-	para "You defeated that"
-	line "WHITNEY?"
-
-	para "It makes me proud"
-	line "to be your friend!"
-	done
-; 0x640e6
-
-UnknownText_0x640e6: ; 0x640e6
-	text "Hey, I heard about"
-	line "you!"
-
-	para "You saved that"
-	line "#MON at the"
-
-	para "LIGHTHOUSE, didn't"
-	line "you?"
-
-	para "<PLAY_G>, I wish"
-	line "you'd come see me"
-
-	para "when I'm sick in"
-	line "bed with a cold!"
-	done
-; 0x6416d
-
-UnknownText_0x6416d: ; 0x6416d
-	text "I heard, I heard,"
-	line "I heard!"
-
-	para "You smashed TEAM"
-	line "ROCKET's hideout!"
-
-	para "You're like a"
-	line "movie hero, even!"
-
-	para "But um… What was"
-	line "TEAM ROCKET?"
-	done
-; 0x641e8
-
-UnknownText_0x641e8: ; 0x641e8
-	text "I heard, I heard,"
-	line "I heard!"
-
-	para "About your heroic"
-	line "liberation of the"
-
-	para "RADIO TOWER! You"
-	line "rock so hard!"
-	done
-; 0x64247
-
-UnknownText_0x64247: ; 0x64247
-	text "I saw, I saw!"
-
-	para "I saw you go into"
-	line "the DRAGON'S DEN!"
-
-	para "I'm certain you"
-	line "passed! Aww, no"
-
-	para "need to be modest!"
-	line "You can't fail!"
-	done
-; 0x642bb
-
-UnknownText_0x642bb: ; 0x642bb
-	text "Yesterday, I went"
-	line "out to NEW BARK"
-
-	para "TOWN.  There was a"
-	line "lady who looked a"
-
-	para "lot like you,"
-	line "<PLAY_G>."
-
-	para "What? That lady"
-	line "was your mom?"
-
-	para "Aww, I should've"
-	line "introduced myself!"
-
-	para "I bet your mom's"
-	line "really proud of"
-
-	para "all that you've"
-	line "accomplished."
-
-	para "Heh, put it this"
-	line "way. I'd be proud"
-
-	para "if I were your"
-	line "mom, believe me!"
-	done
-; 0x643d4
-
-UnknownText_0x643d4: ; 0x643d4
-	text "I saw, I saw,"
-	line "I saw!"
-
-	para "You striding onto"
-	line "a ship, <PLAY_G>!"
-
-	para "I can't get over"
-	line "how good you look"
-
-	para "with the sea as"
-	line "your backdrop!"
-	done
-; 0x64448
-
-UnknownText_0x64448: ; 0x64448
-	text "I heard, I heard!"
-
-	para "You got a MAGNET"
-	line "TRAIN PASS!"
-
-	para "When I saw you"
-	line "departing on the"
-
-	para "ship, I felt sad"
-	line "that I wouldn't be"
-
-	para "able to see you"
-	line "for a while."
-
-	para "But since you have"
-	line "that PASS, you can"
-
-	para "zip back anytime!"
-	line "That's reassuring!"
-
-	para "What? You can FLY"
-	line "back anytime?"
-
-	para "What do you mean"
-	line "by FLY?"
-	done
-; 0x6455b
-
-UnknownText_0x6455b: ; 0x6455b
-	text "I saw, I saw!"
-
-	para "You waking up"
-	line "SNORLAX!"
-
-	para "I was watching you"
-	line "from afar, so I"
-
-	para "couldn't tell what"
-	line "you did exactly."
-
-	para "Did you play a"
-	line "flute to wake it?"
-
-	para "Wow! That's like"
-	line "magic!"
-	done
-; 0x645ff
-
-UnknownText_0x645ff: ; 0x645ff
-	text "I hear rumors"
-	line "about you all over"
-	cont "the place."
-
-	para "It just makes me"
-	line "sigh, <PLAY_G>."
-
-	para "How did you get so"
-	line "strong?"
-
-	para "Go for the world"
-	line "championship now!"
-
-	para "I'll always be"
-	line "cheering you on!"
-	done
-; 0x646a3
-
-IrwinCalledRightAwayText: ; 0x646a3
-	text "Hehe, I called"
-	line "right away!"
-
-	para "I think we can be"
-	line "good friends!"
-	done
-; 0x646df
-
-UnknownText_0x646df: ; 0x646df
-	text "I saw, I heard!"
-
-	para "You beat MORTY of"
-	line "ECRUTEAK GYM!"
-
-	para "Th-that's just"
-	line "incredible!"
-
-	para "I actually went to"
-	line "the GYM's entrance"
-
-	para "to cheer you on."
-	line "Did you know that?"
-
-	para "But everyone was"
-	line "floating, and"
-
-	para "there were ghosts"
-	line "all over! So I"
-
-	para "chickened out and"
-	line "took off for home…"
-	done
-; 0x647d8
-
-UnknownText_0x647d8: ; 0x647d8
-	text "<PLAY_G>, I heard!"
-
-	para "You're kicking up"
-	line "a mighty ruckus"
-
-	para "over in KANTO!"
-	line "What a glorious"
-
-	para "rampage it must"
-	line "be!"
-
-	para "You so rock!"
-	done
-; 0x64846
-
-UnknownText_0x64846: ; 0x64846
-	text "Hearing about your"
-	line "escapades rocks my"
-
-	para "soul!"
-	line "It sure does!"
-	done
-; 0x64881
-
-UnknownText_0x64881: ; 0x64881
-	text "I'm so glad you"
-	line "called!"
-
-	para "I was just about"
-	line "to call you too!"
-
-	para "I guess we must be"
-	line "a good match!"
-	done
-; 0x648dc
-
-UnknownText_0x648dc: ; 0x648dc
-	text "How are you?"
-
-	para "What are you"
-	line "doing?"
-
-	para "Where are you?"
-
-	para "How many BADGES do"
-	line "you have now?"
-
-	para "How much money"
-	line "have you saved?"
-
-	para "How's your mom?"
-
-	para "Have you got lots"
-	line "of #MON?"
-
-	para "Is it going to be"
-	line "sunny tomorrow?"
-
-	para "Arrgh, there's so"
-	line "much I want to"
-
-	para "chat about! This"
-	line "is going nowhere!"
-	done
-; 0x649dc
-
-ArnieLovesTheCuteText: ; 0x649dc
-	text "I'm always with my"
-	line "@"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "It's so cute!"
-	line "I just love it!"
-	done
-; 0x64a13
-
-UnknownText_0x64a13: ; 0x64a13
-	text "Changing the topic"
-	line "here, I saw this"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " for the"
-	line "first time."
-
-	para "It was easy to"
-	line "beat, actually."
-	done
-; 0x64a71
-
-UnknownText_0x64a71: ; 0x64a71
-	text "I was wondering,"
-	line "do you happen to"
-	cont "have @"
-	text_from_ram StringBuffer4
-	text "?"
-
-	para "I can't seem to"
-	line "catch one. What is"
-
-	para "its weakness, I"
-	line "wonder."
-	done
-; 0x64ada
-
-UnknownText_0x64ada: ; 0x64ada
-	text "Hey, let's battle"
-	line "our #MON!"
-
-	para "I won't lose to"
-	line "you battling or in"
-
-	para "the Bug-Catching"
-	line "Contest!"
-
-	para "I'll be here on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x64b48
-
-UnknownText_0x64b48: ; 0x64b48
-	text "Let's talk again,"
-	line "huh?"
-	done
-; 0x64b5f
-
-UnknownText_0x64b5f: ; 0x64b5f
-	text "Boy, am I glad I"
-	line "caught you!"
-
-	para "A whole bunch of"
-	line "@"
-	text_from_ram StringBuffer4
-	text " have"
-
-	para "appeared around"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-
-	para "You have to see"
-	line "this!"
-	done
-; 0x64bc6
-
-UnknownText_0x64bc6: ; 0x64bc6
-	text "I haven't had any"
-	line "luck seeing rare"
-	cont "#MON lately…"
-
-	para "But I know they're"
-	line "out there!"
-	done
-; 0x64c13
-
-UnknownText_0x64c13: ; 0x64c13
-	text "Hey, where are you"
-	line "now?"
-
-	para "Let's battle. I'll"
-	line "be waiting for you"
-	cont "on @"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x64c5a
-
-UnknownText_0x64c5a: ; 0x64c5a
-	text "Hello? Are you"
-	line "coming or what?"
-
-	para "You're missing out"
-	line "on seeing YANMA!"
-
-	para "Get down to ROUTE"
-	line "35 right now!"
-	done
-; 0x64cbd
-
-AlanGettingStrongerText: ; 0x64cbd
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "getting stronger,"
-
-	para "exactly as I"
-	line "calculated!"
-	done
-; 0x64cf3
-
-UnknownText_0x64cf3: ; 0x64cf3
-	text "By the way, we"
-	line "knocked out a wild"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " just"
-	line "the other day."
-
-	para "Studying up in"
-	line "advance worked!"
-	done
-; 0x64d4f
-
-UnknownText_0x64d4f: ; 0x64d4f
-	text "By the way, a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text " escaped"
-	cont "on me yesterday."
-
-	para "A computational"
-	line "error on my part…"
-	done
-; 0x64da4
-
-UnknownText_0x64da4: ; 0x64da4
-	text "I've studied quite"
-	line "a bit since then,"
-
-	para "and I've gotten a"
-	line "lot better!"
-
-	para "I'm hanging out on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Can you come down"
-	line "for a battle?"
-	done
-; 0x64e1f
-
-UnknownText_0x64e1f: ; 0x64e1f
-	text "See you later!"
-	done
-; 0x64e2f
-
-UnknownText_0x64e2f: ; 0x64e2f
-	text "Hehehe, I picked"
-	line "up something nice!"
-
-	para "You can have it!"
-	line "Why don't you come"
-
-	para "to @"
-	text_from_ram StringBuffer5
-	text ""
-	line "and pick it up?"
-	done
-; 0x64e90
-
-UnknownText_0x64e90: ; 0x64e90
-	text "I haven't picked"
-	line "up anything yet."
-
-	para "I'll call you if I"
-	line "find something."
-	done
-; 0x64ed4
-
-UnknownText_0x64ed4: ; 0x64ed4
-	text "If we don't battle"
-	line "soon, I'll forget"
-	cont "my strategy!"
-
-	para "I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x64f1a
-
-UnknownText_0x64f1a: ; 0x64f1a
-	text "I have to do my"
-	line "homework, so can"
-
-	para "you come get your"
-	line "gift right away?"
-
-	para "I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x64f74
-
-UnknownText_0x64f74: ; 0x64f74
-	text "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "getting prettier!"
-
-	para "I've been taking"
-	line "photos galore!"
-	done
-; 0x64fb2
-
-UnknownText_0x64fb2: ; 0x64fb2
-	text "It took only an"
-	line "instant to KO a"
-	cont "wild @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "It must be because"
-	line "you gave me some"
-
-	para "battling tips last"
-	line "time."
-	done
-; 0x6501c
-
-UnknownText_0x6501c: ; 0x6501c
-	text "You know what?"
-	line "A wild @"
-	text_from_ram StringBuffer4
-	text ""
-	para "got away from me"
-	line "again."
-
-	para "It was so close!"
-	line "Really, just a"
-
-	para "little bit more,"
-	line "and I would've…"
-	done
-; 0x65091
-
-UnknownText_0x65091: ; 0x65091
-	text "Right now, I'm on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "If you're close"
-	line "by, let's battle!"
-
-	para "I'll be waiting"
-	line "for you!"
-	done
-; 0x650e2
-
-UnknownText_0x650e2: ; 0x650e2
-	text "See you!"
-	done
-; 0x650ec
-
-UnknownText_0x650ec: ; 0x650ec
-	text "You know what?"
-	line "I got a good gift!"
-
-	para "As I promised,"
-	line "it's yours!"
-
-	para "I'm sure you'd"
-	line "like it. Come get"
-
-	para "it! I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x65161
-
-UnknownText_0x65161: ; 0x65161
-	text "Oh! You wanted a"
-	line "gift, right?"
-
-	para "I got one, but I"
-	line "want to keep this."
-
-	para "Can you wait a bit"
-	line "longer?"
-	done
-; 0x651bf
-
-UnknownText_0x651bf: ; 0x651bf
-	text "Hi! You haven't"
-	line "forgotten about"
-
-	para "your promise to"
-	line "battle me?"
-
-	para "I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x6520f
-
-UnknownText_0x6520f: ; 0x6520f
-	text "Hello?"
-
-	para "If you don't come"
-	line "get your present"
-
-	para "soon, I'll give it"
-	line "to someone else."
-
-	para "I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x65271
-
-ChadObservingWildText: ; 0x65271
-	text "I recently began"
-	line "observing wild"
-	cont "@"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "I've been learning"
-	line "all sorts of new"
-
-	para "things through my"
-	line "observations."
-
-	para "I wish I could"
-	line "become a #MON"
-
-	para "researcher like"
-	line "PROF.OAK soon."
-	done
-; 0x65318
-
-UnknownText_0x65318: ; 0x65318
-	text "Oh yes, I managed"
-	line "to knock out a"
-
-	para "wild @"
-	text_from_ram StringBuffer4
-	text " a"
-	line "while back."
-
-	para "Well, considering"
-	line "all the studying I"
-
-	para "do every day, it"
-	line "was inevitable."
-	done
-; 0x65399
-
-UnknownText_0x65399: ; 0x65399
-	text "Oh yes, I came"
-	line "close to catching"
-
-	para "a wild @"
-	text_from_ram StringBuffer4
-	text ","
-	line "but it got away."
-
-	para "For the longest"
-	line "time, I've been"
-
-	para "wanting to observe"
-	line "@"
-	text_from_ram StringBuffer4
-	text ". Rats…"
-	done
-; 0x65419
-
-UnknownText_0x65419: ; 0x65419
-	text "Want to battle?"
-	line "I have to battle"
-
-	para "every so often to"
-	line "avoid rusting out."
-
-	para "I'll be on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x65471
-
-UnknownText_0x65471: ; 0x65471
-	text "See you later!"
-	done
-; 0x65481
-
-ChadBlueGossipText: ; 0x65481
-	text "Do you know BLUE?"
-
-	para "He's PROF.OAK's"
-	line "grandson and a"
-
-	para "former #MON"
-	line "LEAGUE CHAMPION!"
-
-	para "He's one super"
-	line "#MON trainer!"
-	done
-; 0x654ea
-
-ChadDaisyGossipText: ; 0x654ea
-	text "PROF.OAK has a"
-	line "granddaughter"
-	cont "named DAISY."
-
-	para "When she's around,"
-	line "even the most"
-
-	para "ferocious #MON"
-	line "calm right down."
-	done
-; 0x65555
-
-ChadProfElmGossipText: ; 0x65555
-	text "Everyone's talking"
-	line "about PROF.ELM."
-
-	para "He used to be an"
-	line "assistant to the"
-	cont "great PROF.OAK!"
-
-	para "That is so cool!"
-	line "I envy him!"
-	done
-; 0x655c7
-
-ChadDreamGossipText: ; 0x655c7
-	text "PROF.OAK's dream"
-	line "is to compile a"
-
-	para "comprehensive"
-	line "#DEX."
-
-	para "I envy you for"
-	line "taking part in"
-	cont "that project…"
-	done
-; 0x65628
-
-ChadKurtGossipText: ; 0x65628
-	text "Do you know KURT,"
-	line "the BALL creator?"
-
-	para "He and PROF.OAK go"
-	line "back a long way."
-
-	para "I guess great"
-	line "people attract one"
-	cont "another!"
-	done
-; 0x6569b
-
-ChadLeagueGossipText: ; 0x6569b
-	text "#MON LEAGUE is"
-	line "the great gather-"
-	cont "ing place for all"
-
-	para "trainers who wish"
-	line "to become CHAMP."
-
-	para "PROF.OAK acts as"
-	line "an advisor to the"
-
-	para "#MON LEAGUE's"
-	line "headquarters."
-
-	para "He really is a"
-	line "great man."
-	done
-; 0x6574a
-
-ChadRadioShowGossipText: ; 0x6574a
-	text "PROF.OAK'S #MON"
-	line "TALK is a popular"
-	cont "radio show, right?"
-
-	para "Did you know that"
-	line "he was going to"
-
-	para "turn down the show"
-	line "at first?"
-
-	para "But MARY's energy"
-	line "and persistence"
-	cont "wore him down."
-
-	para "So we have MARY to"
-	line "thank for it!"
-	done
-; 0x65810
-
-ChadBattlingGossipText: ; 0x65810
-	text "PROF.OAK used to"
-	line "be a trainer a"
-	cont "long time ago."
-
-	para "But rather than"
-	line "battling, he found"
-
-	para "#MON themselves"
-	line "to be interesting."
-
-	para "So he abandoned"
-	line "his training to"
-
-	para "focus on becoming"
-	line "a researcher."
-	done
-; 0x658c6
-
-ChadDaisyTeaGossipText: ; 0x658c6
-	text "PROF.OAK has a"
-	line "granddaughter"
-	cont "named DAISY."
-
-	para "She has tea every"
-	line "day for an hour"
-
-	para "from three in the"
-	line "afternoon."
-
-	para "I wish I could"
-	line "join her for tea"
-
-	para "and chat about"
-	line "PROF.OAK."
-	done
-; 0x65969
-
-ChadTravelGossipText: ; 0x65969
-	text "Did you know?"
-	line "PROF.OAK traveled"
-
-	para "all over the world"
-	line "when he was young."
-
-	para "While traveling,"
-	line "he must've learned"
-
-	para "about #MON"
-	line "naturally."
-
-	para "I envy him…"
-	line "I'd like to travel"
-
-	para "and learn about"
-	line "things too…"
-	done
-; 0x65a23
-
-UnknownText_0x65a23: ; 0x65a23
-	text "I'm going to study"
-	line "hard so PROF.OAK"
-
-	para "will make me his"
-	line "assistant!"
-	done
-; 0x65a63
-
-UnknownText_0x65a63: ; 0x65a63
-	text "Do you remember"
-	line "about our battle?"
-
-	para "The place is"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Hurry over--I'm"
-	line "waiting."
-	done
-; 0x65ab2
-
-DerekCheekPincherText: ; 0x65ab2
-	text "Listen to this."
-	line "My @"
-	text_from_ram StringBuffer4
-	text ""
-	para "grins happily when"
-	line "I pinch its cheek."
-
-	para "But it never grins"
-	line "for anyone else."
-
-	para "I must be special."
-	done
-; 0x65b29
-
-UnknownText_0x65b29: ; 0x65b29
-	text "Oh, and recently,"
-	line "my PIKACHU beat a"
-	cont "wild @"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "A wild @"
-	text_from_ram StringBuffer4
-	text ","
-	line "I tell you!"
-
-	para "Don't you think"
-	line "that's astounding?"
-
-	para "My PIKACHU is"
-	line "awesome!"
-
-	para "My PIKACHU is the"
-	line "greatest!"
-	done
-; 0x65bc8
-
-UnknownText_0x65bc8: ; 0x65bc8
-	text "Oh, and I saw a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text " a"
-	cont "little while ago."
-
-	para "But it wasn't very"
-	line "cute, so I left"
-
-	para "it…"
-	line "#MON have to be"
-
-	para "cute. They're no"
-	line "good otherwise."
-	done
-; 0x65c4e
-
-UnknownText_0x65c4e: ; 0x65c4e
-	text "Well, let's talk"
-	line "again!"
-	done
-; 0x65c66
-
-DerekBugCatchingContestText: ; 0x65c66
-	text "Did you remember?"
-	line "The Bug-Catching"
-	cont "Contest is today."
-
-	para "You're going to"
-	line "go, aren't you?"
-
-	para "I think I'll"
-	line "participate with"
-
-	para "PIKACHU to show"
-	line "off its cuteness."
-	done
-; 0x65cf9
-
-UnknownText_0x65cf9: ; 0x65cf9
-	text "I'd like you to"
-	line "have a NUGGET."
-
-	para "My PIKACHU just"
-	line "loves it."
-
-	para "I'm certain your"
-	line "PIKACHU will love"
-	cont "it too!"
-	done
-; 0x65d5c
-
-UnknownText_0x65d5c: ; 0x65d5c
-	text "How is your"
-	line "PIKACHU doing?"
-
-	para "Let's get together"
-	line "and brag about our"
-	cont "PIKACHU!"
-	done
-; 0x65da6
-
-UnknownText_0x65da6: ; 0x65da6
-	text "What's wrong?"
-
-	para "I'm waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Come pick this up"
-	line "anytime."
-	done
-; 0x65de4
-
-TullyGrownText: ; 0x65de4
-	text "My @"
-	text_from_ram StringBuffer4
-	text " has"
-	line "grown again."
-
-	para "It was only about"
-	line "so big when I"
-
-	para "caught it, but now"
-	line "it's way bigger."
-	done
-; 0x65e42
-
-UnknownText_0x65e42: ; 0x65e42
-	text "Oh yeah, I KO'd a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "It was huge, like"
-	line "this big even."
-
-	para "Heh, I guess you"
-	line "can't tell over"
-	cont "the phone…"
-	done
-; 0x65eac
-
-UnknownText_0x65eac: ; 0x65eac
-	text "Oh yeah, I lost a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "It was huge, like"
-	line "this big even."
-
-	para "Heh, I guess you"
-	line "can't tell over"
-	cont "the phone…"
-	done
-; 0x65f17
-
-UnknownText_0x65f17: ; 0x65f17
-	text "We should get a"
-	line "battle going!"
-
-	para "I'll be fishing on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "Swing by if you"
-	line "have the time."
-	done
-; 0x65f6e
-
-UnknownText_0x65f6e: ; 0x65f6e
-	text "Well, I'll be"
-	line "seeing you."
-	done
-; 0x65f88
-
-UnknownText_0x65f88: ; 0x65f88
-	text "I picked up a good"
-	line "little thing at"
-	cont "the water's edge."
-
-	para "Like I promised,"
-	line "it's yours."
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x65ff2
-
-UnknownText_0x65ff2: ; 0x65ff2
-	text "Have I found"
-	line "anything good?"
-
-	para "Nope, not yet."
-
-	para "It's like fishing,"
-	line "you need patience."
-	done
-; 0x66043
-
-UnknownText_0x66043: ; 0x66043
-	text "Yup, TULLY here…"
-
-	para "<PLAY_G>? What?"
-	line "You're lost?"
-
-	para "Our battle will be"
-	line "on @"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x66087
-
-UnknownText_0x66087: ; 0x66087
-	text "I've got something"
-	line "good for you."
-
-	para "Hustle over to"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x660be
-
-BrentRareTradeText: ; 0x660be
-	text "Oh yeah, I got an"
-	line "extremely rare"
-
-	para "#MON in a trade"
-	line "a while back."
-
-	para "Do you want to"
-	line "know what it is?"
-
-	para "Hehe, I'm keeping"
-	line "it a secret!"
-	done
-; 0x6613c
-
-UnknownText_0x6613c: ; 0x6613c
-	text "Oh yeah, I took"
-	line "down this wild"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text "."
-	line "It wasn't rare"
-
-	para "enough to bother"
-	line "catching."
-	done
-; 0x6618c
-
-UnknownText_0x6618c: ; 0x6618c
-	text "Oh yeah, I saw a"
-	line "rare #MON about"
-	cont "an hour ago."
-
-	para "It was my first"
-	line "sighting. But I"
-
-	para "didn't have any"
-	line "# BALLS…"
-
-	para "Would BILL laugh"
-	line "at my mistakes?"
-	done
-; 0x66214
-
-UnknownText_0x66214: ; 0x66214
-	text "You've got time"
-	line "like usual, right?"
-
-	para "Feel like having a"
-	line "battle?"
-
-	para "It'll be a chance"
-	line "to see my rare"
-
-	para "#MON. It'll be"
-	line "worth your time!"
-
-	para "You know where--"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x662a9
-
-UnknownText_0x662a9: ; 0x662a9
-	text "So that's it then."
-	done
-; 0x662bc
-
-UnknownText_0x662bc: ; 0x662bc
-	text "Did you know…?"
-	line "BILL's father is"
-
-	para "supposed to be a"
-	line "great #MANIAC."
-	done
-; 0x662fc
-
-UnknownText_0x662fc: ; 0x662fc
-	text "Did you know…?"
-	line "Apparently BILL's"
-
-	para "grandpa isn't a"
-	line "#MANIAC."
-	done
-; 0x66335
-
-UnknownText_0x66335: ; 0x66335
-	text "Did you know…?"
-	line "BILL's originally"
-	cont "from GOLDENROD."
-	done
-; 0x66366
-
-UnknownText_0x66366: ; 0x66366
-	text "Did you know…?"
-	line "BILL evidently"
-
-	para "lives on ROUTE 25"
-	line "in KANTO."
-	done
-; 0x663a1
-
-UnknownText_0x663a1: ; 0x663a1
-	text "Did you know…?"
-	line "ABRA was the first"
-
-	para "#MON that BILL"
-	line "ostensibly caught."
-	done
-; 0x663e6
-
-UnknownText_0x663e6: ; 0x663e6
-	text "Did you know…?"
-	line "BILL's younger"
-
-	para "sister apparently"
-	line "can't wink."
-	done
-; 0x66421
-
-UnknownText_0x66421: ; 0x66421
-	text "Did you know…?"
-	line "BILL supposedly"
-
-	para "hates milk and"
-	line "can't drink it."
-	done
-; 0x6645f
-
-UnknownText_0x6645f: ; 0x6645f
-	text "Did you know…?"
-	line "Evidently, BILL"
-
-	para "isn't very good at"
-	line "battling."
-	done
-; 0x6649b
-
-UnknownText_0x6649b: ; 0x6649b
-	text "Did you know…?"
-	line "BILL appears to"
-
-	para "like the lady at"
-	line "the FLOWER SHOP."
-	done
-; 0x664dd
-
-UnknownText_0x664dd: ; 0x664dd
-	text "Did you know…?"
-	line "BILL's mother is"
-
-	para "said to have been"
-	line "a KIMONO GIRL."
-	done
-; 0x6651e
-
-UnknownText_0x6651e: ; 0x6651e
-	text "You wanted to hear"
-	line "about BILL?"
-
-	para "Sorry, but I'm too"
-	line "busy for you."
-
-	para "I'll call when I"
-	line "have time."
-	done
-; 0x66579
-
-UnknownText_0x66579: ; 0x66579
-	text "You want to see my"
-	line "rare #MON."
-
-	para "Hurry over to"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x665ad
-
-UnknownText_0x665ad: ; 0x665ad
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "adorable, don't"
-
-	para "you think so?"
-	line "I always sleep"
-
-	para "with it--it's so"
-	line "fluffy and warm!"
-	done
-; 0x66605
-
-UnknownText_0x66605: ; 0x66605
-	text "Oh, and we had to"
-	line "battle a wild"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " a while"
-	line "ago…"
-
-	para "My CLEFAIRY came"
-	line "close to fainting!"
-
-	para "Isn't that awful?"
-
-	para "I hate those nasty"
-	line "@"
-	text_from_ram StringBuffer4
-	text "!"
-	done
-; 0x66688
-
-UnknownText_0x66688: ; 0x66688
-	text "Oh, and we had to"
-	line "battle a wild"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " a while"
-	line "ago…"
-
-	para "My CLEFAIRY got"
-	line "frightened, so we"
-
-	para "ran away as fast"
-	line "as we could!"
-
-	para "I just can't help"
-	line "feeling protective"
-	cont "of my CLEFAIRY."
-	done
-; 0x66730
-
-UnknownText_0x66730: ; 0x66730
-	text "I know this might"
-	line "surprise you, but"
-
-	para "would you like to"
-	line "battle?"
-
-	para "I'll be waiting"
-	line "with CLEFAIRY on"
-	cont "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x66796
-
-TiffanyItsAwfulText: ; 0x66796
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "It's awful."
-	line "My CLEFAIRY…"
-
-	para "Huh? <PLAY_G>?"
-
-	para "Oh, sorry! I was"
-	line "in a hurry, and I…"
-
-	para "I have to go!"
-	line "Bye-bye!"
-	done
-; 0x667f7
-
-UnknownText_0x667f7: ; 0x667f7
-	text "Bye-bye!"
-	done
-; 0x66801
-
-UnknownText_0x66801: ; 0x66801
-	text "I bought some PINK"
-	line "BOWS at GOLDENROD"
-
-	para "DEPT.STORE for my"
-	line "CLEFAIRY."
-
-	para "I got too many, so"
-	line "I'll give you one!"
-
-	para "Come collect it on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x66882
-
-UnknownText_0x66882: ; 0x66882
-	text "I love dressing up"
-	line "my CLEFAIRY!"
-	done
-; 0x668a3
-
-UnknownText_0x668a3: ; 0x668a3
-	text "What's wrong?"
-	line "Can't you visit?"
-
-	para "CLEFAIRY got tired"
-	line "and fell asleep."
-
-	para "I'm not sure if I"
-	line "can wake it up…"
-
-	para "Please hurry to"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x6691d
-
-UnknownText_0x6691d: ; 0x6691d
-	text "What's wrong?"
-	line "Can't you visit?"
-
-	para "I'm sure this will"
-	line "look good on your"
-	cont "CLEFAIRY."
-
-	para "Please hurry to"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x66980
-
-VanceLiftoffText: ; 0x66980
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "become tougher."
-
-	para "We've achieved"
-	line "liftoff!"
-	done
-; 0x669b2
-
-UnknownText_0x669b2: ; 0x669b2
-	text "We can easily beat"
-	line "@"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "…Huh? You too?"
-	line "Isn't that great?"
-	done
-; 0x669ed
-
-UnknownText_0x669ed: ; 0x669ed
-	text "But get this, a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text ""
-	para "just barely eluded"
-	line "us."
-
-	para "I wanted to FLY"
-	line "after it…"
-	done
-; 0x66a3a
-
-UnknownText_0x66a3a: ; 0x66a3a
-	text "Right now, I'm on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-
-	para "You know, where I"
-	line "first met you?"
-
-	para "Want to battle?"
-	line "I'll wait here."
-	done
-; 0x66a93
-
-UnknownText_0x66a93: ; 0x66a93
-	text "OK, bye for now!"
-	done
-; 0x66aa5
-
-VanceLookingForwardText: ; 0x66aa5
-	text "I'll be looking"
-	line "forward to our"
-	cont "next battle!"
-	done
-; 0x66ad1
-
-VanceHurryHurryText: ; 0x66ad1
-	text "Oh, <PLAY_G>!"
-	line "Hurry, hurry!"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "!"
-	line "FLY over now!"
-	done
-; 0x66afc
-
-WiltonGrownText: ; 0x66afc
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "grown impressive!"
-
-	para "My fishing skills"
-	line "have improved too!"
-	done
-; 0x66b3e
-
-UnknownText_0x66b3e: ; 0x66b3e
-	text "We beat a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text "…"
-
-	para "You know, I have"
-	line "more fun fishing"
-
-	para "than beating wild"
-	line "#MON."
-	done
-; 0x66b8f
-
-UnknownText_0x66b8f: ; 0x66b8f
-	text "But a while back,"
-	line "we came this close"
-
-	para "to landing a wild"
-	line "@"
-	text_from_ram StringBuffer4
-	text "."
-
-	para "I tell you, it was"
-	line "huge. Believe me."
-	done
-; 0x66bf3
-
-UnknownText_0x66bf3: ; 0x66bf3
-	text "I'm fishing on"
-	line "@"
-	text_from_ram StringBuffer5
-	text ","
-
-	para "but nothing's"
-	line "biting today."
-
-	para "Help me while my"
-	line "time away, come"
-	cont "over for a battle."
-	done
-; 0x66c58
-
-UnknownText_0x66c58: ; 0x66c58
-	text "All right, later."
-	done
-; 0x66c6b
-
-UnknownText_0x66c6b: ; 0x66c6b
-	text "I snagged an item"
-	line "while fishing."
-
-	para "Come pick it up on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "."
-	done
-; 0x66ca7
-
-WiltonHaventFoundAnythingText: ; 0x66ca7
-	text "Nah, I haven't"
-	line "found anything"
-
-	para "that's worth your"
-	line "time."
-
-	para "You have to have"
-	line "patience."
-	done
-; 0x66cf7
-
-WiltonNotBitingText: ; 0x66cf7
-	text "Sigh…"
-	line "They're not biting"
-
-	para "like before on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "…"
-
-	para "You have to come"
-	line "for a battle!"
-	done
-; 0x66d45
-
-WiltonWantThisText: ; 0x66d45
-	text "Don't you want"
-	line "this item?"
-
-	para "Hah? You don't"
-	line "know where?"
-
-	para "@"
-	text_from_ram StringBuffer5
-	text "…"
-	line "Just head from"
-
-	para "MAHOGANY toward"
-	line "BLACKTHORN!"
-	done
-; 0x66dab
-
-UnknownText_0x66dab: ; 0x66dab
-	text "Anyway, we'll chat"
-	line "again!"
-	done
-; 0x66dc5
-
-UnknownText_0x66dc5: ; 0x66dc5
-	text "Are you still on"
-	line "your journey?"
-
-	para "I remain dedicated"
-	line "to my training."
-
-	para "Oooooaaarrrgh!"
-	done
-; 0x66e17
-
-UnknownText_0x66e17: ; 0x66e17
-	text "I'm in training"
-	line "now. I apologize,"
-
-	para "but call me back"
-	line "another time."
-
-	para "Oooooaaarrrgh!"
-	done
-; 0x66e67
-
-UnknownText_0x66e67: ; 0x66e67
-	text "I apologize, but I"
-	line "don't have time to"
-
-	para "chat while I am in"
-	line "training!"
-
-	para "I'll have time to"
-	line "chat tomorrow!"
-
-	para "Yiiihah!"
-	done
-; 0x66ed3
-
-UnknownText_0x66ed3: ; 0x66ed3
-	text "I plan to take a"
-	line "lunch break, so"
-
-	para "come see me then!"
-	line "Ayiiiyah!"
-	done
-; 0x66f11
-
-KenjiBreakText: ; 0x66f11
-	text "I'm taking a break"
-	line "on ROUTE 45!"
-
-	para "Why not drop by if"
-	line "you are free?"
-	done
-; 0x66f52
-
-UnknownText_0x66f52: ; 0x66f52
-	text "I rested up over"
-	line "my lunch break."
-
-	para "Now it's time to"
-	line "resume training!"
-
-	para "Oooryaah!"
-	done
-; 0x66f9f
-
-ParryNoMatchText: ; 0x66f9f
-	text "Nothing can match"
-	line "my @"
-	text_from_ram StringBuffer4
-	text " now."
-	done
-; 0x66fc0
-
-UnknownText_0x66fc0: ; 0x66fc0
-	text "Yeah, we KO'd a"
-	line "wild @"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "That was OK, but I"
-	line "wanted to get it…"
-	done
-; 0x67001
-
-UnknownText_0x67001: ; 0x67001
-	text "And yesterday, we"
-	line "spotted a wild"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text "."
-	line "We were debating"
-
-	para "whether to catch"
-	line "it or beat it."
-
-	para "When along came"
-	line "another guy who"
-
-	para "caught it!"
-	line "How about that!"
-	done
-; 0x67096
-
-UnknownText_0x67096: ; 0x67096
-	text "You're thinking"
-	line "you'd like to"
-
-	para "battle me. Am I"
-	line "right or what?"
-
-	para "Yep! We'll meet on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x670eb
-
-UnknownText_0x670eb: ; 0x670eb
-	text "OK, give me a call"
-	line "again!"
-	done
-; 0x67106
-
-ParryBattleWithMeText: ; 0x67106
-	text "You'll battle with"
-	line "me again, right?"
-	done
-; 0x6712a
-
-ParryHaventYouGottenToText: ; 0x6712a
-	text "Haven't you gotten"
-	line "to @"
-	text_from_ram StringBuffer5
-	text "?"
-
-	para "Waiting here isn't"
-	line "bad, but I'd sure"
-	cont "like to battle!"
-	done
-; 0x6717a
-
-UnknownText_0x6717a: ; 0x6717a
-	text_from_ram StringBuffer3
-	text "'s @"
-	text_from_ram StringBuffer4
-	text ""
-	line "is much stronger"
-	cont "than before!"
-	done
-; 0x671a4
-
-UnknownText_0x671a4: ; 0x671a4
-	text "And, and…"
-	line "I just battled and"
-	cont "beat @"
-	text_from_ram StringBuffer4
-	text "!"
-
-	para "I've raised my"
-	line "#MON properly!"
-	done
-; 0x671eb
-
-UnknownText_0x671eb: ; 0x671eb
-	text "But, but…"
-
-	para "A wild @"
-	text_from_ram StringBuffer4
-	text ""
-	line "got away from me"
-
-	para "again. It's just"
-	line "not fair!"
-	done
-; 0x6722e
-
-UnknownText_0x6722e: ; 0x6722e
-	text "I'm ERIN. Want to"
-	line "battle me again?"
-
-	para "I won't lose this"
-	line "time!"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x67281
-
-UnknownText_0x67281: ; 0x67281
-	text "See you. Bye-bye!"
-	done
-; 0x67294
-
-ErinWorkingHardText: ; 0x67294
-	text "I'm working hard"
-	line "to raise my"
-	cont "#MON!"
-
-	para "Come back for"
-	line "another battle!"
-	done
-; 0x672d5
-
-ErinComeBattleText: ; 0x672d5
-	text "Oh, <PLAY_G>!"
-	line "Come battle ERIN!"
-
-	para "I'll be waiting on"
-	line "@"
-	text_from_ram StringBuffer5
-	text "!"
-	done
-; 0x67308
--- a/text/phone/extra2.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
-
-JackIntelligenceText: ; 0x1740c0
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "intelligence keeps"
-
-	para "rising. It might"
-	line "be smarter than"
-	cont "yours!"
-	done
-; 0x174106
-
-JackDefeatedMonText: ; 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
-
-JackThunderTriviaText: ; 0x174261
-	text "Did you know?"
-
-	para "When it's raining,"
-	line "THUNDER is sure to"
-	cont "strike."
-	done
-; 0x17429d
-
-JackRolloutTriviaText: ; 0x17429d
-	text "Did you know…?"
-
-	para "If you use DEFENSE"
-	line "CURL, ROLLOUT's"
-
-	para "power goes way up"
-	line "past normal."
-	done
-; 0x1742ee
-
-JackSolarbeamTriviaText: ; 0x1742ee
-	text "Did you know…?"
-
-	para "If the sunlight is"
-	line "harsh, SOLARBEAM"
-
-	para "doesn't need to be"
-	line "charged up."
-	done
-; 0x174340
-
-JackStompTriviaText: ; 0x174340
-	text "Did you know…?"
-
-	para "If the opponent"
-	line "uses MINIMIZE,"
-
-	para "your STOMP becomes"
-	line "more powerful."
-	done
-; 0x174391
-
-JackGustTriviaText: ; 0x174391
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "is FLYing, your"
-
-	para "GUST becomes much"
-	line "more powerful."
-	done
-; 0x1743e3
-
-JackTwisterTriviaText: ; 0x1743e3
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "is FLYing, your"
-
-	para "TWISTER becomes"
-	line "more powerful."
-	done
-; 0x174433
-
-JackEarthquakeTriviaText: ; 0x174433
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "uses DIG, your"
-
-	para "EARTHQUAKE becomes"
-	line "more powerful."
-	done
-; 0x174485
-
-JackMagnitudeTriviaText: ; 0x174485
-	text "Did you know…?"
-
-	para "If your opponent"
-	line "uses DIG, your"
-
-	para "MAGNITUDE becomes"
-	line "more powerful."
-	done
-; 0x1744d6
-
-JackSandstormTriviaText: ; 0x1744d6
-	text "Did you know…?"
-
-	para "The rock, ground"
-	line "and steel types"
-
-	para "can't be hurt by"
-	line "SANDSTORM."
-	done
-; 0x174522
-
-JackSunnyDayTriviaText: ; 0x174522
-	text "Did you know…?"
-
-	para "If the sunlight is"
-	line "harsh, water-type"
-
-	para "moves become much"
-	line "weaker."
-	done
-; 0x174571
-
-JackRainDanceTriviaText: ; 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
-
-BeverlyFoundNuggetText: ; 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
-
-GavenGreaterText: ; 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
-
-BethForgetDealText: ; 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
-
-JoseAromaText: ; 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
-
-JoseFoundSomethingText: ; 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
-
-JoeySharperText: ; 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
-
-WadeAreYouGrowingText: ; 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
-
-WadeBugCatchingContestText: ; 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
-
-WadeFoundBerryText: ; 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
-
-RalphNeglectingKidsText: ; 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
-
-LizHiTaniaText: ; 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
-
-AnthonyAteBerriesText: ; 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
-
-ToddLooksCuteLikeMeText: ; 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/gaven_overworld.asm
+++ /dev/null
@@ -1,63 +1,0 @@
-GavenAskNumber1Text:
-	text "Wow, you're tough."
-	line "I haven't battled"
-
-	para "that seriously in"
-	line "a long time."
-
-	para "Could I get your"
-	line "phone number?"
-
-	para "I'd like to battle"
-	line "again when I heal"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " and the"
-	line "rest of my team."
-	done
-
-GavenAskNumber2Text:
-	text "Could I get your"
-	line "phone number?"
-
-	para "I'd like to battle"
-	line "again when I heal"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " and the"
-	line "rest of my team."
-	done
-
-GavenNumberAcceptedText:
-	text "How should I beat"
-	line "you? I'm tormented"
-
-	para "by those thoughts"
-	line "all the time…"
-	done
-
-GavenNumberDeclinedText:
-	text "OK… I understand…"
-	line "But if you change"
-
-	para "your mind, give me"
-	line "a shout anytime."
-	done
-
-GavenPhoneFullText:
-	text "Your phone's"
-	line "memory is full."
-
-	para "You can't register"
-	line "my number."
-	done
-
-GavenRematchText:
-	text "Hi! I've been"
-	line "waiting for you!"
-
-	para "This time, I'm"
-	line "going to win!"
-	done
--- a/text/phone/gina_overworld.asm
+++ /dev/null
@@ -1,67 +1,0 @@
-GinaAskNumber1Text:
-	text "Whenever I see a"
-	line "strong trainer, I"
-
-	para "want to be their"
-	line "cheerleader."
-
-	para "When I'm on my"
-	line "walk, I sometimes"
-	cont "pick up items."
-
-	para "If I get anything,"
-	line "you can have it!"
-
-	para "Want to give me"
-	line "your number?"
-
-	para "I'll call as soon"
-	line "as I get anything."
-	done
-
-GinaAskNumber2Text:
-	text "If I find an item,"
-	line "you can have it!"
-
-	para "Want to give me"
-	line "your number?"
-	done
-
-GinaNumberAcceptedText:
-	text "I'll call as soon"
-	line "as I get anything!"
-	done
-
-GinaNumberDeclinedText:
-	text "Is that so? Well,"
-	line "I'll still be"
-	cont "rooting for you!"
-	done
-
-GinaPhoneFullText:
-	text "But your phone is"
-	line "all filled up!"
-	done
-
-GinaRematchText:
-	text "I've been waiting!"
-
-	para "I've gotten a bit"
-	line "better at this!"
-	done
-
-GinaGiftText:
-	text "So you're finally"
-	line "here!"
-
-	para "I think this will"
-	line "make you happy."
-	done
-
-GinaPackFullText:
-	text "Your PACK looks"
-	line "completely full."
-
-	para "I'll have to hold"
-	line "on to this."
-	done
--- a/text/phone/huey_overworld.asm
+++ /dev/null
@@ -1,80 +1,0 @@
-HueyAskNumber1Text:
-	text "Cool! That's the"
-	line "first time I've"
-	cont "lost in a while!"
-
-	para "Hey, give me your"
-	line "phone number."
-
-	para "You'd be fun to"
-	line "battle, so I'll"
-
-	para "call you when I"
-	line "get stronger!"
-	done
-
-HueyAskNumber2Text:
-	text "Hey, give me your"
-	line "phone number."
-
-	para "You'd be fun to"
-	line "battle, so I'll"
-
-	para "call you when I"
-	line "get stronger!"
-	done
-
-HueyNumberAcceptedText:
-	text "Hey, let's battle"
-	line "again!"
-	done
-
-HueyNumberDeclinedText:
-	text "Looks like you're"
-	line "a wimp…"
-	done
-
-HueyPhoneFullText:
-	text "Hey! Your phone's"
-	line "already full!"
-	done
-
-HueyRematchText:
-	text "Hey! I'm tired of"
-	line "waiting for you!"
-	done
-
-HueyPackFullText:
-	text "Oh… Your PACK's"
-	line "full. I'll give it"
-	cont "to you later."
-	done
-
-HueyRematchGiftText:
-	text "Man! You're as"
-	line "tough as ever!"
-
-	para "I've battled you"
-	line "over and over, but"
-
-	para "<PLAYER>, I haven't"
-	line "won once."
-
-	para "I bought tons of"
-	line "items to toughen"
-
-	para "up my #MON, but"
-	line "to no avail…"
-
-	para "Items alone aren't"
-	line "the answer."
-
-	para "That must be what"
-	line "it is…"
-
-	para "Here, take this,"
-	line "<PLAYER>."
-
-	para "I won't be needing"
-	line "it anymore…"
-	done
--- a/text/phone/irwin_overworld.asm
+++ /dev/null
@@ -1,53 +1,0 @@
-IrwinAskNumber1Text:
-	text "You're the best"
-	line "I've ever battled!"
-
-	para "Huh? You're the"
-	line "one who saved all"
-	cont "the SLOWPOKE?"
-
-	para "Well, no wonder I"
-	line "couldn't beat you!"
-
-	para "Would it be OK to"
-	line "get your number?"
-
-	para "I don't want to"
-	line "miss anything you"
-	cont "do from now on!"
-	done
-
-IrwinAskNumber2Text:
-	text "You will tell me"
-	line "your phone number?"
-	done
-
-IrwinNumberAcceptedText:
-	text "Wow! Gee, thanks!"
-	line "Now I can call you"
-
-	para "anytime, whether"
-	line "anything's up or"
-
-	para "not. You know,"
-	line "just to chat!"
-	done
-
-IrwinNumberDeclinedText:
-	text "Oh, but…"
-	line "I'm not dangerous!"
-
-	para "I just want to"
-	line "call and chat"
-
-	para "about everything"
-	line "and nothing!"
-	done
-
-IrwinPhoneFullText:
-	text "Your phone list is"
-	line "already full…"
-
-	para "You must be really"
-	line "popular…"
-	done
--- a/text/phone/jack_overworld.asm
+++ /dev/null
@@ -1,55 +1,0 @@
-JackAskNumber1Text:
-	text "Your knowledge is"
-	line "impressive!"
-
-	para "I like that!"
-
-	para "Want to trade"
-	line "battle tips?"
-
-	para "I'll phone if I"
-	line "get good info."
-
-	para "Would you tell me"
-	line "your number?"
-	done
-
-JackAskNumber2Text:
-	text "Want to trade"
-	line "battle tips?"
-
-	para "I'll phone if I"
-	line "get good info."
-
-	para "Would you tell me"
-	line "your number?"
-	done
-
-JackNumberAcceptedText:
-	text "I'll call you if I"
-	line "hear anything!"
-	done
-
-JackNumberDeclinedText:
-	text "Oh, OK. Too bad…"
-
-	para "Well, if you ever"
-	line "want my number,"
-	cont "come see me, OK?"
-	done
-
-JackPhoneFullText:
-	text "Oh?"
-	line "Your phone's full."
-
-	para "It can't register"
-	line "my number."
-	done
-
-JackRematchText:
-	text "Hi, I was waiting"
-	line "for you to show!"
-
-	para "Let's get started"
-	line "right away!"
-	done
--- a/text/phone/joey_overworld.asm
+++ /dev/null
@@ -1,71 +1,0 @@
-JoeyAskNumber1Text:
-	text "Listen, can I get"
-	line "your phone number?"
-
-	para "I'll ring you for"
-	line "some battles."
-
-	para "I'm a rookie too, "
-	line "so I think it'd be"
-	cont "a good motivator."
-	done
-
-JoeyAskNumber2Text:
-	text "Can I get your"
-	line "phone number?"
-
-	para "I don't want to"
-	line "lose against you!"
-
-	para "We have to battle"
-	line "again, OK?"
-	done
-
-JoeyNumberAcceptedText:
-	text "I'll ring you"
-	line "whenever I get the"
-	cont "urge to battle!"
-	done
-
-JoeyNumberDeclinedText:
-	text "Oh, all right…"
-
-	para "But I won't lose"
-	line "to you again!"
-	done
-
-JoeyPhoneFullText:
-	text "Huh, what? Your"
-	line "phone's full."
-	done
-
-JoeyRematchText:
-	text "I've been waiting!"
-	line "Let's battle now!"
-	done
-
-JoeyPackFullText:
-	text "Hey, wait! Your"
-	line "PACK is stuffed!"
-
-	para "Well, we'll leave"
-	line "it till next time."
-	done
-
-JoeyRematchGiftText:
-	text "And yet another"
-	line "loss…"
-
-	para "No doubt about"
-	line "it--you're tough."
-
-	para "Being beaten this"
-	line "often actually"
-	cont "feels good now!"
-
-	para "Here, take this. "
-	line "Use it to get even"
-
-	para "tougher. That will"
-	line "toughen me up too!"
-	done
--- a/text/phone/jose_overworld.asm
+++ /dev/null
@@ -1,73 +1,0 @@
-JoseAskNumber1Text:
-	text "If my @"
-	text_from_ram StringBuffer4
-	text ""
-	line "sees anything"
-
-	para "pretty, it goes"
-	line "and gets it."
-
-	para "Do you like pretty"
-	line "things?"
-
-	para "I could share if"
-	line "it gets some more."
-
-	para "What's your phone"
-	line "number? I'll call."
-
-	para "Don't expect a"
-	line "whole lot, OK?"
-	done
-
-JoseAskNumber2Text:
-	text "Do you like pretty"
-	line "things?"
-
-	para "I could share if"
-	line "FARFETCH'D goes"
-	cont "and gets more."
-
-	para "What's your phone"
-	line "number? I'll call."
-	done
-
-JoseNumberAcceptedText:
-	text "I'll call you as"
-	line "soon as I get"
-	cont "something pretty."
-	done
-
-JoseNumberDeclinedText:
-	text "You sure? Well,"
-	line "tell me if you"
-	cont "change your mind."
-	done
-
-JosePhoneFullText:
-	text "Huh? Your phone"
-	line "list is full."
-	done
-
-JoseRematchText:
-	text "Tweet! Tweeeet!"
-
-	para "Kept me waiting!"
-	line "Go, FARFETCH'D!"
-	done
-
-JoseGiftText:
-	text "Kept me waiting!"
-	line "Look, this is it!"
-
-	para "See? Isn't it some"
-	line "kind of pretty?"
-	done
-
-JosePackFullText:
-	text "Huh? You don't"
-	line "have anywhere to"
-
-	para "put this. Better"
-	line "come back for it."
-	done
--- a/text/phone/kenji_overworld.asm
+++ /dev/null
@@ -1,67 +1,0 @@
-KenjiAskNumber1Text:
-	text "Our battle was"
-	line "remarkable!"
-
-	para "I wish for some-"
-	line "thing to remember"
-	cont "you by!"
-
-	para "Perhaps your phone"
-	line "number will do?"
-
-	para "My training makes"
-	line "it impossible to"
-	cont "chat much, but…"
-	done
-
-KenjiAskNumber2Text:
-	text "My training makes"
-	line "chatting tough,"
-
-	para "but will you take"
-	line "down my number?"
-	done
-
-KenjiNumberAcceptedText:
-	text "I must train"
-	line "harder to become"
-	cont "the mightiest!"
-	done
-
-KenjiNumberDeclinedText:
-	text "If you decide you"
-	line "want my number,"
-	cont "come see me."
-	done
-
-KenjiPhoneFullText:
-	text "Your phone appears"
-	line "to be full."
-
-	para "Come back later!"
-	done
-
-KenjiGiftText:
-	text "I wish to thank"
-	line "you, <PLAYER>!"
-
-	para "I've been training"
-	line "all alone…"
-
-	para "I was happy that"
-	line "you cared to call…"
-
-	para "I want you to have"
-	line "this!"
-	done
-
-KenjiPackFullText:
-	text "Your strength will"
-	line "not let you carry"
-
-	para "another thing!"
-	line "I will hold this"
-
-	para "till you lighten"
-	line "your PACK!"
-	done
--- a/text/phone/liz_overworld.asm
+++ /dev/null
@@ -1,44 +1,0 @@
-LizAskNumber1Text:
-	text "Oh? You're on a"
-	line "big journey to see"
-	cont "the sights? Neat!"
-
-	para "Let's be friends!"
-	line "Can I have your"
-	cont "phone number?"
-
-	para "I want to hear"
-	line "about everything"
-	cont "you've seen!"
-	done
-
-LizAskNumber2Text:
-	text "Let's be friends!"
-	line "Can I have your"
-	cont "phone number?"
-
-	para "I want to hear"
-	line "about everything"
-	cont "you've seen!"
-	done
-
-LizNumberAcceptedText:
-	text "I'll telephone you"
-	line "if I hear anything"
-	cont "interesting."
-	done
-
-LizNumberDeclinedText:
-	text "Aww… You won't be"
-	line "my friend?"
-	done
-
-LizPhoneFullText:
-	text "Wait! Your phone"
-	line "list is filled up!"
-	done
-
-LizRematchText:
-	text "You're late! Let's"
-	line "get started now!"
-	done
--- a/text/phone/mom.asm
+++ /dev/null
@@ -1,165 +1,0 @@
-MomPhoneGreetingText: ; 0x1b4000
-	text "Hello?"
-
-	para "Oh, hi, <PLAYER>!"
-	line "Working hard?"
-	done
-
-MomPhoneLandmarkText: ; 0x1b4021
-	text "Oh, so you're in"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Isn't that where"
-	line "@"
-	text_from_ram StringBuffer4
-	text ""
-	para "is? Did you go"
-	line "take a look?"
-	done
-
-MomPhoneGenericAreaText: ; 0x1b406b
-	text "Really, you're in"
-	line "@"
-	text_from_ram StringBuffer3
-	text "?"
-
-	para "I've never gone"
-	line "there. That's kind"
-	cont "of neat, <PLAYER>."
-	done
-
-MomPhoneNewBarkText: ; 0x1b40b1
-	text "What? You're in"
-	line "@"
-	text_from_ram StringBuffer3
-	text "?"
-
-	para "Come see your MOM"
-	line "sometime!"
-	done
-
-MomPhoneCherrygroveText: ; 0x1b40e4
-	text "You're visiting"
-	line "@"
-	text_from_ram StringBuffer3
-	text "?"
-
-	para "How about coming"
-	line "home for a bit?"
-	done
-
-MomOtherAreaText: ; 0x1b411c
-	text "Wow, you're in"
-	line "@"
-	text_from_ram StringBuffer3
-	text "?"
-
-	para "Good luck on your"
-	line "#MON quest!"
-	done
-
-MomDeterminedText: ; 0x1b4150
-	text "That sounds really"
-	line "tough."
-
-	para "But, <PLAYER>, I"
-	line "know you're really"
-
-	para "determined. You'll"
-	line "be OK, right?"
-	done
-
-MomCheckBalanceText: ; 0x1b41a7
-	text "By the way, you've"
-	line "saved up ¥@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Do you want to"
-	line "keep on saving?"
-	done
-
-MomImportantToSaveText: ; 0x1b41ea
-	text "It's important to"
-	line "save your money."
-	done
-
-MomYoureNotSavingText: ; 0x1b420d
-	text "Oh, <PLAYER>,"
-	line "you're not saving"
-
-	para "any money. Would"
-	line "you like to save?"
-	done
-
-MomYouveSavedText: ; 0x1b4249
-	text "By the way, you've"
-	line "saved up ¥@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Want to start"
-	line "saving again?"
-	done
-
-MomOKIllSaveText: ; 0x1b4289
-	text "OK. I'll save your"
-	line "money."
-	done
-
-MomPhoneWontSaveMoneyText: ; 0x1b42a3
-	text "OK. I won't save"
-	line "your money."
-	done
-
-MomPhoneHangUpText: ; 0x1b42c0
-	text "<PLAYER>, keep it"
-	line "up! I'm rooting"
-	cont "for you, baby!"
-	done
-
-MomPhoneNoPokemonText: ; 0x1b42ea
-	text "Hello?"
-
-	para "Oh, hi, <PLAYER>!"
-	line "Wasn't PROF.ELM"
-	cont "waiting for you?"
-	done
-
-MomPhoneNoPokedexText: ; 0x1b431d
-	text "Hello?"
-
-	para "Oh, hi, <PLAYER>!"
-	line "You're on a big"
-
-	para "mission for PROF."
-	line "ELM? Be good!"
-	done
-
-MomPhoneNoGymQuestText: ; 0x1b435f
-	text "Hello?"
-
-	para "Hi, <PLAYER>! If"
-	line "you're done with"
-
-	para "your errand come"
-	line "on home, dear."
-	done
-
-MomPhoneLectureText: ; 0x1b43a1
-	text "Hello?"
-
-	para "…… <PLAYER>?"
-	line "I heard from PROF."
-
-	para "ELM that you went"
-	line "on a long trip."
-
-	para "I wish you would"
-	line "have told me…"
-
-	para "What about money?"
-	line "Should I save it?"
-	done
--- a/text/phone/parry_overworld.asm
+++ /dev/null
@@ -1,73 +1,0 @@
-ParryAskNumber1Text:
-	text "Sheesh, the way"
-	line "you attacked! That"
-
-	para "was something! We"
-	line "should meet again!"
-
-	para "How about giving"
-	line "me your number?"
-	done
-
-ParryAskNumber2Text:
-	text "So you want to"
-	line "register my phone"
-
-	para "number for a re-"
-	line "match, huh?"
-	done
-
-ParryNumberAcceptedText:
-	text "I'll call you"
-	line "whenever I feel"
-	cont "like battling!"
-	done
-
-ParryNumberDeclinedText:
-	text "No? That's fine."
-
-	para "A definite no is"
-	line "easy to take!"
-
-	para "I'll be right here"
-	line "when you're ready"
-	cont "for a rematch."
-	done
-
-ParryPhoneFullText:
-	text "Oh? There's no"
-	line "room to register"
-	cont "my phone number."
-	done
-
-ParryRematchText:
-	text "Hey, here comes"
-	line "the kid! Let's go!"
-
-	para "Ready for my usual"
-	line "no-brainer, all-"
-	cont "out offense?"
-	done
-
-ParryPackFullText:
-	text "Your PACK looks"
-	line "stuffed full!"
-
-	para "You can't have"
-	line "this now."
-	done
-
-ParryRematchGiftText:
-	text "Well, you're"
-	line "special all right."
-
-	para "If only I'd begun"
-	line "#MON when I was"
-	cont "a tad younger…"
-
-	para "I want you to work"
-	line "and succeed for"
-
-	para "the both of us."
-	line "So take this, OK?"
-	done
--- a/text/phone/ralph_overworld.asm
+++ /dev/null
@@ -1,58 +1,0 @@
-RalphAskNumber1Text:
-	text "Don't young people"
-	line "fish anymore?"
-
-	para "I've seen rare"
-	line "#MON while I've"
-	cont "been fishing…"
-
-	para "You young people"
-	line "like that, right?"
-
-	para "Want to trade"
-	line "phone numbers?"
-
-	para "I'll let you know"
-	line "if I see anything."
-	done
-
-RalphAskNumber2Text:
-	text "Hm? So you do want"
-	line "me to phone if I"
-	cont "see rare #MON?"
-	done
-
-RalphNumberAcceptedText:
-	text "Yep, phone if I"
-	line "see rare #MON."
-
-	para "Don't worry, I"
-	line "won't forget!"
-	done
-
-RalphNumberDeclinedText:
-	text "Oh…"
-	line "My own kids won't"
-
-	para "even give me their"
-	line "phone numbers…"
-
-	para "Is that how young"
-	line "people are today?"
-	done
-
-RalphPhoneFullText:
-	text "Your phone's"
-	line "memory is full."
-
-	para "It seems that"
-	line "young people all"
-	cont "have #GEAR."
-	done
-
-RalphRematchText:
-	text "Hey, kid!"
-
-	para "No losing for me"
-	line "this day!"
-	done
--- a/text/phone/reena_overworld.asm
+++ /dev/null
@@ -1,45 +1,0 @@
-ReenaAskNumber1Text:
-	text "Not bad…"
-	line "It's something to"
-
-	para "beat me, even by"
-	line "an unlikely fluke…"
-
-	para "I like you! Give"
-	line "me your number!"
-
-	para "You can be my"
-	line "practice partner!"
-	done
-
-ReenaAskNumber2Text:
-	text "Give me your phone"
-	line "number!"
-
-	para "You are going to"
-	line "be my practice"
-	cont "partner!"
-	done
-
-ReenaNumberAcceptedText:
-	text "Don't be too proud"
-	line "about beating me!"
-
-	para "It was a fluke!"
-	done
-
-ReenaNumberDeclinedText:
-	text "I don't believe"
-	line "it! You're going"
-	cont "to regret this!"
-	done
-
-ReenaPhoneFullText:
-	text "What? Your phone"
-	line "list has no room!"
-	done
-
-ReenaRematchText:
-	text "What took you?"
-	line "Start right away!"
-	done
--- a/text/phone/tiffany_overworld.asm
+++ /dev/null
@@ -1,62 +1,0 @@
-TiffanyAskNumber1Text:
-	text "Hi! You like"
-	line "CLEFAIRY too?"
-
-	para "They're so very"
-	line "cute, aren't they?"
-
-	para "I think we can be"
-	line "good friends!"
-
-	para "I want to know"
-	line "your phone number!"
-
-	para "Let's talk about"
-	line "CLEFAIRY!"
-	done
-
-TiffanyAskNumber2Text:
-	text "I want to know"
-	line "your phone number!"
-
-	para "Let's talk about"
-	line "CLEFAIRY!"
-	done
-
-TiffanyNumberAcceptedText:
-	text "Isn't my CLEFAIRY"
-	line "super-adorable?"
-	done
-
-TiffanyNumberDeclinedText:
-	text "Aww… Oh well."
-	line "Look for me if you"
-
-	para "want to talk about"
-	line "CLEFAIRY."
-	done
-
-TiffanyPhoneFullText:
-	text "Oh? Your phone"
-	line "registry is full."
-	done
-
-TiffanyRematchText:
-	text "There you are!"
-
-	para "CLEFAIRY, I want"
-	line "you to try hard!"
-	done
-
-TiffanyGiftText:
-	text "You took a long"
-	line "time. See this?"
-
-	para "Isn't it cute?"
-	line "It's a PINK BOW."
-	done
-
-TiffanyPackFullText:
-	text "Uh-oh. Your PACK"
-	line "is crammed full."
-	done
--- a/text/phone/todd_overworld.asm
+++ /dev/null
@@ -1,68 +1,0 @@
-ToddAskNumber1Text:
-	text "From here, I can"
-	line "see GOLDENROD's"
-
-	para "DEPT.STORE. They"
-	line "have bargain sales"
-
-	para "up on the rooftop"
-	line "every so often."
-
-	para "Could I get your"
-	line "phone number?"
-
-	para "I'll call you when"
-	line "they have a sale."
-	done
-
-ToddAskNumber2Text:
-	text "If you give me"
-	line "your number, I'll"
-
-	para "call you when they"
-	line "have a sale."
-	done
-
-ToddNumberAcceptedText:
-	text "I check GOLDENROD"
-	line "DEPT.STORE every"
-
-	para "day, so I know"
-	line "when there's a"
-	cont "sale."
-	done
-
-ToddNumberDeclinedText:
-	text "Anyway…"
-
-	para "If you're short on"
-	line "money, take down"
-	cont "my number."
-
-	para "I'll call you when"
-	line "there's a sale."
-	done
-
-ToddPhoneFullText:
-	text "Your phone doesn't"
-	line "have enough memory"
-	cont "for more numbers."
-	done
-
-ToddRematchText:
-	text "I waited for you!"
-	line "I even cut back my"
-
-	para "shopping to raise"
-	line "my #MON better!"
-	done
-
-UnusedText_0xa43ca:
-; This is unused; Todd says this during the department store sale,
-; but this is a duplicate of the actual string in the Route 34 scripts.
-	text "Shopping under the"
-	line "sky!"
-
-	para "It feels so nice"
-	line "up on a rooftop."
-	done
--- a/text/phone/trainers1.asm
+++ /dev/null
@@ -1,1989 +1,0 @@
-UnknownText_0x1b4dc5: ; 0x1b4dc5
-	text "Hello. This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Good morning,"
-	line "<PLAY_G>!"
-	done
-
-UnknownText_0x1b4ded: ; 0x1b4ded
-	text "Hello. This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "How's it going,"
-	line "<PLAY_G>?"
-	done
-
-UnknownText_0x1b4e16: ; 0x1b4e16
-	text "Hello. This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Good evening,"
-	line "<PLAY_G>!"
-	done
-
-UnknownText_0x1b4e3e: ; 0x1b4e3e
-	text "<PLAY_G>, good"
-	line "morning!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you doing?"
-	done
-
-UnknownText_0x1b4e72: ; 0x1b4e72
-	text "<PLAY_G>, howdy!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Isn't it nice out?"
-	done
-
-UnknownText_0x1b4e9e: ; 0x1b4e9e
-	text "<PLAY_G>, good"
-	line "evening!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Got a minute?"
-	done
-
-UnknownText_0x1b4ecd: ; 0x1b4ecd
-	text "How are your"
-	line "#MON doing?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "so curious, it's a"
-
-	para "problem. Maybe"
-	line "it's like me…"
-	done
-
-UnknownText_0x1b4f21: ; 0x1b4f21
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh! Good morning,"
-	line "<PLAYER>."
-	done
-
-UnknownText_0x1b4f4d: ; 0x1b4f4d
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh! Good day,"
-	line "<PLAYER>."
-	done
-
-UnknownText_0x1b4f75: ; 0x1b4f75
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh! Good evening,"
-	line "<PLAYER>."
-	done
-
-UnknownText_0x1b4fa1: ; 0x1b4fa1
-	text "Hello, <PLAYER>."
-	line "Good morning."
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Were you asleep?"
-	done
-
-UnknownText_0x1b4fda: ; 0x1b4fda
-	text "Hi, <PLAYER>."
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "How are you doing?"
-	done
-
-UnknownText_0x1b5004: ; 0x1b5004
-	text "Hi, <PLAYER>."
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Were you awake?"
-	done
-
-UnknownText_0x1b502b: ; 0x1b502b
-	text "Keeping your"
-	line "#MON happy?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "healthy. It eats a"
-	cont "lot every day."
-	done
-
-UnknownText_0x1b5073: ; 0x1b5073
-	text "Yeah, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Huh? What's up,"
-	line "<PLAYER>?"
-	done
-
-UnknownText_0x1b509b: ; 0x1b509b
-	text "Yeah, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Huh? What's up"
-	line "<PLAYER>?"
-	done
-
-UnknownText_0x1b50c2: ; 0x1b50c2
-	text "Yeah, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Huh? What's up"
-	line "<PLAYER>?"
-	done
-
-UnknownText_0x1b50e9: ; 0x1b50e9
-	text "Yo, <PLAYER>!"
-	line "You awake?"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "How's it going?"
-	done
-
-UnknownText_0x1b511a: ; 0x1b511a
-	text "Yo, <PLAYER>! You"
-	line "free right now?"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "How's it going?"
-	done
-
-UnknownText_0x1b5154: ; 0x1b5154
-	text "Yo, <PLAYER>!"
-	line "Were you asleep?"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "How's it going?"
-	done
-
-UnknownText_0x1b518b: ; 0x1b518b
-	text "How are your"
-	line "#MON doing?"
-
-	para "My #MON are a"
-	line "bit too energetic."
-
-	para "@"
-	text_from_ram StringBuffer4
-	text ","
-	line "especially."
-
-	para "Every time it"
-	line "spots a trainer,"
-	cont "it has to battle."
-
-	para "It gets to be a"
-	line "bit much for me!"
-	done
-
-UnknownText_0x1b522b: ; 0x1b522b
-	text "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "looking tougher"
-	cont "than ever."
-
-	para "It looks even"
-	line "tougher than me!"
-	done
-
-UnknownText_0x1b5270: ; 0x1b5270
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking…"
-
-	para "Hi, <PLAY_G>!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b52a5: ; 0x1b52a5
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking…"
-
-	para "Hi, <PLAY_G>!"
-	done
-
-UnknownText_0x1b52cc: ; 0x1b52cc
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking…"
-
-	para "Hi, <PLAY_G>!"
-	line "Good evening!"
-	done
-
-UnknownText_0x1b5301: ; 0x1b5301
-	text "<PLAY_G>, good"
-	line "morning!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you doing?"
-	done
-
-UnknownText_0x1b5335: ; 0x1b5335
-	text "Hi, <PLAY_G>!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you doing?"
-	done
-
-UnknownText_0x1b535f: ; 0x1b535f
-	text "<PLAY_G>, good"
-	line "evening!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you doing?"
-	done
-
-UnknownText_0x1b5393: ; 0x1b5393
-	text "How are your"
-	line "#MON doing?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "doing as great as"
-	cont "ever."
-
-	para "Let's keep at it"
-	line "and become #MON"
-	cont "CHAMPS!"
-	done
-
-UnknownText_0x1b53f7: ; 0x1b53f7
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	para "Oh, <PLAY_G>."
-	line "Good morning."
-	para ""
-	done
-
-UnknownText_0x1b5424: ; 0x1b5424
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh. Hi, <PLAY_G>."
-	done
-
-UnknownText_0x1b5446: ; 0x1b5446
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh, <PLAY_G>."
-	line "Good evening."
-	done
-
-UnknownText_0x1b5472: ; 0x1b5472
-	text "Good morning,"
-	line "<PLAY_G>!"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Were you sleeping?"
-	done
-
-UnknownText_0x1b54a6: ; 0x1b54a6
-	text "<PLAY_G>, hi!"
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Do you have some"
-	line "time?"
-	done
-
-UnknownText_0x1b54d4: ; 0x1b54d4
-	text "Hi, <PLAY_G>."
-	line "Good evening."
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "I hope you were"
-	line "awake."
-	done
-
-UnknownText_0x1b5510: ; 0x1b5510
-	text "Are you the kind"
-	line "of person who goes"
-
-	para "to #MON CENTERS"
-	line "often?"
-
-	para "I go every day."
-	line "Watching out for"
-
-	para "the health of your"
-	line "#MON is a basic"
-
-	para "part of being a"
-	line "#MON trainer."
-	done
-
-UnknownText_0x1b55ae: ; 0x1b55ae
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, <PLAY_G>?"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b55da: ; 0x1b55da
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, <PLAY_G>? Hi!"
-	done
-
-UnknownText_0x1b55fc: ; 0x1b55fc
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, <PLAY_G>?"
-	line "Good evening!"
-	done
-
-UnknownText_0x1b5628: ; 0x1b5628
-	text "Oh, <PLAY_G>?"
-
-	para "Tweet! Yeah, it's"
-	line "me, @"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b564c: ; 0x1b564c
-	text "Oh, <PLAY_G>?"
-
-	para "Tweet! Yeah, it's"
-	line "me, @"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b5670: ; 0x1b5670
-	text "Oh, <PLAY_G>?"
-
-	para "Tweet! Yeah, it's"
-	line "me, @"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b5694: ; 0x1b5694
-	text "Are your #MON"
-	line "still cooking?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " has"
-	line "too much energy."
-
-	para "Once it takes off,"
-	line "it won't come back"
-	cont "for a while."
-	done
-
-UnknownText_0x1b5702: ; 0x1b5702
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh. Hi, <PLAYER>."
-	line "What's up?"
-	done
-
-UnknownText_0x1b572e: ; 0x1b572e
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, hi, <PLAYER>,"
-	line "what's up?"
-	done
-
-UnknownText_0x1b575a: ; 0x1b575a
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, hi, <PLAYER>,"
-	line "what's up?"
-	done
-
-UnknownText_0x1b5786: ; 0x1b5786
-	text "You're slow! Hurry"
-	line "up and answer!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b57b7: ; 0x1b57b7
-	text "You're slow! Hurry"
-	line "up and answer!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b57e8: ; 0x1b57e8
-	text "You're slow! Hurry"
-	line "up and answer!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b5819: ; 0x1b5819
-	text "Hey, how are your"
-	line "#MON doing?"
-
-	para "What? Great?"
-	line "I see…"
-
-	para "What? My #MON?"
-
-	para "Of course they're"
-	line "doing great! What"
-
-	para "kind of a question"
-	line "is that?"
-	done
-
-UnknownText_0x1b589a: ; 0x1b589a
-	text "Hi, @"
-	text_from_ram StringBuffer3
-	text " here!"
-
-	para "Oh, <PLAYER>? You"
-	line "doing well?"
-	done
-
-UnknownText_0x1b58c2: ; 0x1b58c2
-	text "Hi, @"
-	text_from_ram StringBuffer3
-	text " here!"
-
-	para "Oh, <PLAYER>? You"
-	line "doing well?"
-	done
-
-UnknownText_0x1b58ea: ; 0x1b58ea
-	text "Hi, @"
-	text_from_ram StringBuffer3
-	text " here!"
-
-	para "Oh, <PLAYER>? You"
-	line "doing well?"
-	done
-
-UnknownText_0x1b5912: ; 0x1b5912
-	text "Yo, <PLAYER>!"
-	line "How're you doing?"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text ","
-	line "got a minute?"
-	done
-
-UnknownText_0x1b5948: ; 0x1b5948
-	text "Yo, <PLAYER>! How's"
-	line "it going?"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Got a minute?"
-	done
-
-UnknownText_0x1b597c: ; 0x1b597c
-	text "Yo, <PLAYER>!"
-	line "How're you doing?"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text ","
-	line "got a minute?"
-	done
-
-UnknownText_0x1b59b2: ; 0x1b59b2
-	text "How are your"
-	line "#MON doing?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text "'s"
-	line "raring to go, just"
-	cont "like always."
-
-	para "It's the only one"
-	line "I have. I'm going"
-
-	para "to become a great"
-	line "trainer with it!"
-	done
-
-UnknownText_0x1b5a3b: ; 0x1b5a3b
-	text "Hello? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking."
-
-	para "Oh. Hi, <PLAY_G>!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b5a74: ; 0x1b5a74
-	text "Hello? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking."
-
-	para "Oh, hi, <PLAY_G>!"
-	done
-
-UnknownText_0x1b5a9f: ; 0x1b5a9f
-	text "Hello? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking."
-
-	para "Oh, hi, <PLAY_G>!"
-	line "Good evening!"
-	done
-
-UnknownText_0x1b5ad8: ; 0x1b5ad8
-	text "<PLAY_G>, good"
-	line "morning!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Isn't it nice out?"
-	done
-
-UnknownText_0x1b5b0b: ; 0x1b5b0b
-	text "<PLAY_G>, howdy!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Isn't it nice out?"
-	done
-
-UnknownText_0x1b5b37: ; 0x1b5b37
-	text "Good evening,"
-	line "<PLAY_G>!"
-
-	para "It's me, @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Were you awake?"
-	done
-
-UnknownText_0x1b5b68: ; 0x1b5b68
-	text "How are your"
-	line "#MON doing?"
-
-	para "My #MON have"
-	line "too much energy to"
-
-	para "burn. It gets to"
-	line "be a problem."
-
-	para "Of all my #MON,"
-	line "@"
-	text_from_ram StringBuffer4
-	text " is the"
-	cont "hardest to handle."
-
-	para "Working with it is"
-	line "exhausting."
-	done
-
-UnknownText_0x1b5c10: ; 0x1b5c10
-	text "Yes? Ah, <PLAY_G>."
-
-	para "You're courteous"
-	line "enough to state"
-
-	para "your name when you"
-	line "call on the phone."
-	done
-
-UnknownText_0x1b5c63: ; 0x1b5c63
-	text "Yes? Ah, <PLAY_G>."
-
-	para "You're courteous"
-	line "enough to state"
-
-	para "your name when you"
-	line "call on the phone."
-	done
-
-UnknownText_0x1b5cb6: ; 0x1b5cb6
-	text "Yes? Ah, <PLAY_G>."
-
-	para "You're courteous"
-	line "enough to state"
-
-	para "your name when you"
-	line "call on the phone."
-	done
-
-UnknownText_0x1b5d09: ; 0x1b5d09
-	text "Hiya, it's Uncle"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b5d21: ; 0x1b5d21
-	text "Hiya, it's Uncle"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b5d39: ; 0x1b5d39
-	text "Hiya, it's Uncle"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b5d51: ; 0x1b5d51
-	text "Are you taking"
-	line "good care of your"
-
-	para "#MON? You have"
-	line "to be good to your"
-	cont "partners!"
-	done
-
-UnknownText_0x1b5d9f: ; 0x1b5d9f
-	text "Hello, @"
-	text_from_ram StringBuffer3
-	text ""
-	line "speaking."
-
-	para "Oh, <PLAY_G>."
-	line "Good morning."
-	done
-
-UnknownText_0x1b5dcc: ; 0x1b5dcc
-	text "Hello, @"
-	text_from_ram StringBuffer3
-	text ""
-	line "speaking."
-
-	para "Oh, <PLAY_G>."
-	line "How are you?"
-	done
-
-UnknownText_0x1b5df8: ; 0x1b5df8
-	text "Hello, @"
-	text_from_ram StringBuffer3
-	text ""
-	line "speaking."
-
-	para "Oh, <PLAY_G>."
-	line "Good evening."
-	done
-
-UnknownText_0x1b5e25: ; 0x1b5e25
-	text "Good morning,"
-	line "<PLAY_G>."
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Were you sleeping?"
-	done
-
-UnknownText_0x1b5e59: ; 0x1b5e59
-	text "Hi, <PLAY_G>."
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "How are things"
-	line "going for you?"
-	done
-
-UnknownText_0x1b5e8e: ; 0x1b5e8e
-	text "Good evening,"
-	line "<PLAY_G>."
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Are you awake?"
-	done
-
-UnknownText_0x1b5ebe: ; 0x1b5ebe
-	text "I had some time,"
-	line "so I called you."
-
-	para "So anyway, how are"
-	line "your #MON?"
-
-	para "Me, I take my"
-	line "@"
-	text_from_ram StringBuffer4
-	text " to the"
-
-	para "#MON CENTER in"
-	line "VIOLET every day,"
-
-	para "so it's doing just"
-	line "fantastic!"
-
-	para "I'm friends with"
-	line "the receptionist!"
-	done
-
-UnknownText_0x1b5f7a: ; 0x1b5f7a
-	text "Yeah, @"
-	text_from_ram StringBuffer3
-	text " the"
-	line "HIKER here."
-
-	para "Ah, <PLAYER>!"
-	done
-
-UnknownText_0x1b5f9e: ; 0x1b5f9e
-	text "Yeah, @"
-	text_from_ram StringBuffer3
-	text " the"
-	line "HIKER here."
-
-	para "Ah, <PLAYER>,"
-	line "right?"
-	done
-
-UnknownText_0x1b5fc9: ; 0x1b5fc9
-	text "Yeah, @"
-	text_from_ram StringBuffer3
-	text " the"
-	line "HIKER here."
-
-	para "Ah, <PLAYER>, isn't"
-	line "it?"
-	done
-
-UnknownText_0x1b5ff6: ; 0x1b5ff6
-	text "Yo, <PLAYER>?"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text ""
-	line "the HIKER!"
-	done
-
-UnknownText_0x1b6017: ; 0x1b6017
-	text "Hey, is this"
-	line "<PLAYER>?"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text ""
-	line "the HIKER!"
-	done
-
-UnknownText_0x1b6041: ; 0x1b6041
-	text "<PLAYER>, you still"
-	line "awake?"
-
-	para "This is @"
-	text_from_ram StringBuffer3
-	text ""
-	line "the HIKER!"
-	done
-
-UnknownText_0x1b606f: ; 0x1b606f
-	text "Are your #MON"
-	line "as feisty as ever?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " and"
-	line "me--we have energy"
-
-	para "to burn. We hike"
-	line "up mountains every"
-
-	para "day to work out"
-	line "all our energy."
-	done
-
-UnknownText_0x1b60f5: ; 0x1b60f5
-	text "Yes? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking."
-
-	para "Hey, <PLAY_G>!"
-	done
-
-UnknownText_0x1b611b: ; 0x1b611b
-	text "Yes? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking."
-
-	para "This must be"
-	line "<PLAY_G>."
-	done
-
-UnknownText_0x1b6149: ; 0x1b6149
-	text "Yes? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text " speaking."
-
-	para "Ah, <PLAY_G>!"
-	done
-
-UnknownText_0x1b616e: ; 0x1b616e
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "<PLAY_G>, right?"
-	done
-
-UnknownText_0x1b618f: ; 0x1b618f
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "<PLAY_G>, what are"
-	line "you doing?"
-	done
-
-UnknownText_0x1b61bd: ; 0x1b61bd
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "<PLAY_G>, sorry to"
-	line "call you so late."
-	done
-
-UnknownText_0x1b61f2: ; 0x1b61f2
-	text "How do you raise"
-	line "your #MON?"
-
-	para "I do all sorts"
-	line "of things, like"
-
-	para "leaving them in"
-	line "DAY-CARE and"
-
-	para "toughening them up"
-	line "with items."
-	done
-
-UnknownText_0x1b626a: ; 0x1b626a
-	text "Hello? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, <PLAY_G>!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b6296: ; 0x1b6296
-	text "Hello? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, <PLAY_G>!"
-	line "Hi, how are you?"
-	done
-
-UnknownText_0x1b62c5: ; 0x1b62c5
-	text "Hello? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, <PLAY_G>!"
-	line "Good evening!"
-	done
-
-UnknownText_0x1b62f1: ; 0x1b62f1
-	text "<PLAY_G>?"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Good morning!"
-	done
-
-UnknownText_0x1b630e: ; 0x1b630e
-	text "<PLAY_G>?"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text ". Is"
-	line "this a bad time?"
-	done
-
-UnknownText_0x1b6331: ; 0x1b6331
-	text "<PLAY_G>?"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "Got time to chat?"
-	done
-
-UnknownText_0x1b6352: ; 0x1b6352
-	text "Are your #MON"
-	line "still tough?"
-
-	para "I train every day"
-	line "with @"
-	text_from_ram StringBuffer4
-	text "."
-	done
-
-UnknownText_0x1b638c: ; 0x1b638c
-	text "Hello? @"
-	text_from_ram StringBuffer3
-	text ""
-	line "here…"
-
-	para "Hey, <PLAY_G>!"
-	done
-
-UnknownText_0x1b63a8: ; 0x1b63a8
-	text "Hello? @"
-	text_from_ram StringBuffer3
-	text ""
-	line "here…"
-
-	para "Wow, <PLAY_G>!"
-	done
-
-UnknownText_0x1b63c4: ; 0x1b63c4
-	text "Hello? @"
-	text_from_ram StringBuffer3
-	text ""
-	line "here…"
-
-	para "Yippee, <PLAY_G>!"
-	done
-
-UnknownText_0x1b63e3: ; 0x1b63e3
-	text "Uh, hello."
-	line "<PLAY_G>?"
-
-	para "It's your pal,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6407: ; 0x1b6407
-	text "Uh, hello,"
-	line "<PLAY_G>?"
-
-	para "It's your buddy"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b642c: ; 0x1b642c
-	text "Uh, hello,"
-	line "<PLAY_G>?"
-
-	para "It's your sidekick"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6454: ; 0x1b6454
-	text "Yeah, hello."
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "…Huh, <PLAY_G>? Yo!"
-	done
-
-UnknownText_0x1b647e: ; 0x1b647e
-	text "Yeah, hello, you"
-	line "got @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "…Huh, <PLAY_G>? Yo!"
-	done
-
-UnknownText_0x1b64a8: ; 0x1b64a8
-	text "Yeah, hello, you"
-	line "got @"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "…Huh, <PLAY_G>? Yo!"
-	done
-
-UnknownText_0x1b64d2: ; 0x1b64d2
-	text "Yeah, hello?"
-	line "@"
-	text_from_ram StringBuffer3
-	text " calling."
-
-	para "What are you up"
-	line "to, <PLAY_G>?"
-	done
-
-UnknownText_0x1b6506: ; 0x1b6506
-	text "Yeah, hello?"
-	line "@"
-	text_from_ram StringBuffer3
-	text " calling."
-
-	para "Where are you now,"
-	line "<PLAY_G>?"
-	done
-
-UnknownText_0x1b6539: ; 0x1b6539
-	text "Yeah, hello?"
-	line "@"
-	text_from_ram StringBuffer3
-	text " calling."
-
-	para "Are you awake now,"
-	line "<PLAY_G>?"
-	done
-
-UnknownText_0x1b656c: ; 0x1b656c
-	text "I bet your #MON"
-	line "are a lot stronger"
-	cont "than before."
-	done
-
-UnknownText_0x1b659d: ; 0x1b659d
-	text "Yup, it's @"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Is this <PLAY_G>?"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b65c7: ; 0x1b65c7
-	text "Yup, it's @"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Is that <PLAY_G>?"
-	done
-
-UnknownText_0x1b65e3: ; 0x1b65e3
-	text "Yup, it's @"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Is that <PLAY_G>?"
-	line "Good evening!"
-	done
-
-UnknownText_0x1b660d: ; 0x1b660d
-	text "Hello! It's me,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6624: ; 0x1b6624
-	text "Hello! It's me,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b663b: ; 0x1b663b
-	text "Hello! It's me,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6652: ; 0x1b6652
-	text "<PLAY_G>, are you"
-	line "raising your"
-	cont "#MON properly?"
-
-	para "I read in a book"
-	line "that you should"
-
-	para "raise any #MON"
-	line "you catch with"
-	cont "love and care."
-	done
-
-UnknownText_0x1b66c8: ; 0x1b66c8
-	text "Hi, @"
-	text_from_ram StringBuffer3
-	text " on the"
-	line "line."
-
-	para "Hey! It's <PLAY_G>!"
-	done
-
-UnknownText_0x1b66ec: ; 0x1b66ec
-	text "Hi, @"
-	text_from_ram StringBuffer3
-	text " on the"
-	line "line."
-
-	para "I know!"
-	line "It's <PLAY_G>!"
-	done
-
-UnknownText_0x1b6713: ; 0x1b6713
-	text "Hi, @"
-	text_from_ram StringBuffer3
-	text " on the"
-	line "line."
-
-	para "<PLAY_G>?"
-	line "What's up?"
-	done
-
-UnknownText_0x1b6738: ; 0x1b6738
-	text "Uh, <PLAY_G>?"
-
-	para "It's me!"
-	line "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6757: ; 0x1b6757
-	text "Uh, <PLAY_G>?"
-
-	para "It's me!"
-	line "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6776: ; 0x1b6776
-	text "Uh, <PLAY_G>?"
-
-	para "It's me!"
-	line "It's me, @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b6795: ; 0x1b6795
-	text "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "so full of energy,"
-
-	para "it's a little"
-	line "scary."
-
-	para "How are your"
-	line "#MON doing?"
-	done
-
-UnknownText_0x1b67e2: ; 0x1b67e2
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Hi, <PLAY_G>!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b680e: ; 0x1b680e
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Hi, <PLAY_G>, good"
-	line "day!"
-	done
-
-UnknownText_0x1b6836: ; 0x1b6836
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Hi, <PLAY_G>, good"
-	line "evening!"
-	done
-
-UnknownText_0x1b6862: ; 0x1b6862
-	text "Hi, <PLAY_G>, good"
-	line "morning!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you?"
-	done
-
-UnknownText_0x1b6890: ; 0x1b6890
-	text "Hi, <PLAY_G>, good"
-	line "day!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you?"
-	done
-
-UnknownText_0x1b68ba: ; 0x1b68ba
-	text "Hi, <PLAY_G>, good"
-	line "evening!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "."
-	line "How are you?"
-	done
-
-UnknownText_0x1b68e8: ; 0x1b68e8
-	text "How are your"
-	line "#MON doing?"
-
-	para "You know PROF.OAK,"
-	line "so of course your"
-	cont "#MON are fine!"
-
-	para "My #MON are"
-	line "doing well too."
-
-	para "But then, I am"
-	line "trying to become a"
-
-	para "#MON professor,"
-	line "so that shouldn't"
-	cont "be a big surprise."
-	done
-
-UnknownText_0x1b69a8: ; 0x1b69a8
-	text "Hi, <PLAY_G>?"
-
-	para "Good morning pika."
-	line "What's up pika?"
-	done
-
-UnknownText_0x1b69d2: ; 0x1b69d2
-	text "Hi, <PLAY_G>?"
-
-	para "Good day pika,"
-	line "what's up pika?"
-	done
-
-UnknownText_0x1b69f8: ; 0x1b69f8
-	text "Hi, <PLAY_G>?"
-
-	para "Good evening pika,"
-	line "what's up pika?"
-	done
-
-UnknownText_0x1b6a22: ; 0x1b6a22
-	text "<PLAY_G> pika, good"
-	line "morning!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text ", how"
-	line "pika are you?"
-	done
-
-UnknownText_0x1b6a56: ; 0x1b6a56
-	text "<PLAY_G> pika, good"
-	line "pika day!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text ", how"
-	line "pika are you?"
-	done
-
-UnknownText_0x1b6a8b: ; 0x1b6a8b
-	text "<PLAY_G> pika, good"
-	line "evening!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text ". Were"
-	line "you pika awake?"
-	done
-
-UnknownText_0x1b6ac2: ; 0x1b6ac2
-	text "You have to hear"
-	line "this! My lovable"
-
-	para "@"
-	text_from_ram StringBuffer4
-	text " looked"
-	line "at me and grinned!"
-
-	para "It must be because"
-	line "our hearts beat"
-	cont "together as one!"
-	done
-
-UnknownText_0x1b6b39: ; 0x1b6b39
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, Good morning,"
-	line "<PLAY_G>."
-	done
-
-UnknownText_0x1b6b65: ; 0x1b6b65
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "That voice…"
-	line "<PLAY_G>, right?"
-	done
-
-UnknownText_0x1b6b92: ; 0x1b6b92
-	text "Hello, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "This must be"
-	line "<PLAY_G>!"
-	done
-
-UnknownText_0x1b6bb9: ; 0x1b6bb9
-	text "Hello!"
-	line "@"
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "Good morning! The"
-	line "weather's great!"
-	done
-
-UnknownText_0x1b6bef: ; 0x1b6bef
-	text "Hello!"
-	line "@"
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "What a perfect day"
-	line "for fishing!"
-	done
-
-UnknownText_0x1b6c23: ; 0x1b6c23
-	text "Hello!"
-	line "@"
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "It's a great night"
-	line "for fishing!"
-	done
-
-UnknownText_0x1b6c56: ; 0x1b6c56
-	text "How's your trip"
-	line "coming along?"
-
-	para "I can't complain"
-	line "about my fishing!"
-	done
-
-UnknownText_0x1b6c96: ; 0x1b6c96
-	text "Yes? @"
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "Ah, <PLAYER>. What"
-	line "can I do for you?"
-	done
-
-UnknownText_0x1b6cc6: ; 0x1b6cc6
-	text "Yes? @"
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "Ah, <PLAYER>. What"
-	line "can I do for you?"
-	done
-
-UnknownText_0x1b6cf6: ; 0x1b6cf6
-	text "Yes? @"
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "Ah, <PLAYER>. What"
-	line "can I do for you?"
-	done
-
-UnknownText_0x1b6d26: ; 0x1b6d26
-	text "Hiya, <PLAYER>. How"
-	line "are you doing?"
-
-	para "Hey! It's me,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b6d57: ; 0x1b6d57
-	text "Hiya, <PLAYER>, how"
-	line "are you doing?"
-
-	para "Hey, it's me,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b6d88: ; 0x1b6d88
-	text "Hiya, <PLAYER>, how"
-	line "are you doing?"
-
-	para "Hey, it's me,"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b6db9: ; 0x1b6db9
-	text "Oh yeah, I saw you"
-	line "coming out of a"
-
-	para "#MON CENTER the"
-	line "other day."
-
-	para "You heal your"
-	line "#MON regularly,"
-
-	para "don't you?"
-	line "I'm impressed."
-
-	para "Heh, my @"
-	text_from_ram StringBuffer4
-	text ""
-	line "is so tough, it"
-
-	para "doesn't need to go"
-	line "to #MON CENTERS"
-	cont "often. Heheh!"
-	done
-
-UnknownText_0x1b6e7c: ; 0x1b6e7c
-	text "Yes? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh, <PLAY_G>."
-	line "Good morning."
-	done
-
-UnknownText_0x1b6ea6: ; 0x1b6ea6
-	text "Yes? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh, <PLAY_G>."
-	line "Hello."
-	done
-
-UnknownText_0x1b6ec9: ; 0x1b6ec9
-	text "Yes? This is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "."
-
-	para "Oh, <PLAY_G>, good"
-	line "evening."
-	done
-
-UnknownText_0x1b6ef3: ; 0x1b6ef3
-	text "Is this <PLAY_G>?"
-
-	para "Good morning. This"
-	line "is @"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b6f1c: ; 0x1b6f1c
-	text "Is this <PLAY_G>?"
-
-	para "Hi, it's @"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b6f37: ; 0x1b6f37
-	text "Is this <PLAY_G>?"
-
-	para "Good evening. This"
-	line "is @"
-	text_from_ram StringBuffer3
-	text "."
-	done
-
-UnknownText_0x1b6f60: ; 0x1b6f60
-	text "Are your #MON"
-	line "doing well?"
-
-	para "I hope you take"
-	line "them to a #MON"
-	cont "CENTER every day."
-
-	para "Don't push them"
-	line "too hard."
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " is"
-	line "cute and lively"
-
-	para "precisely because"
-	line "I take it to a"
-
-	para "#MON CENTER"
-	line "every day."
-	done
-
-UnknownText_0x1b7019: ; 0x1b7019
-	text "Yes, hello?"
-	line "@"
-	text_from_ram StringBuffer3
-	text " here!"
-
-	para "Morning, <PLAY_G>!"
-
-	para "Are you using bird"
-	line "#MON?"
-	done
-
-UnknownText_0x1b7057: ; 0x1b7057
-	text "Yes, hello?"
-	line "@"
-	text_from_ram StringBuffer3
-	text " here!"
-
-	para "Hi, <PLAY_G>!"
-
-	para "Are your bird"
-	line "#MON flying?"
-	done
-
-UnknownText_0x1b7092: ; 0x1b7092
-	text "Yes, hello?"
-	line "@"
-	text_from_ram StringBuffer3
-	text " here!"
-
-	para "Evening, <PLAY_G>!"
-	line "Are you letting"
-
-	para "your bird #MON"
-	line "see some action?"
-	done
-
-UnknownText_0x1b70e7: ; 0x1b70e7
-	text "Good morning,"
-	line "<PLAY_G>!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b7112: ; 0x1b7112
-	text "Hi, <PLAY_G>!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "Remember me?"
-	done
-
-UnknownText_0x1b7132: ; 0x1b7132
-	text "Good evening,"
-	line "<PLAY_G>!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "Are you free now?"
-	done
-
-UnknownText_0x1b7161: ; 0x1b7161
-	text "Are you and your"
-	line "#MON fine?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text ""
-	line "looks like it will"
-
-	para "get tough enough"
-	line "to face and beat"
-
-	para "the legendary bird"
-	line "#MON!"
-	done
-
-UnknownText_0x1b71d5: ; 0x1b71d5
-	text "Hello, you have"
-	line "reached @"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Ah, <PLAY_G>."
-	done
-
-UnknownText_0x1b71fc: ; 0x1b71fc
-	text "Hello, you have"
-	line "reached @"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Ah, <PLAY_G>, is"
-	line "it?"
-	done
-
-UnknownText_0x1b722a: ; 0x1b722a
-	text "Hello, you have"
-	line "reached @"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Ah, if it isn't"
-	line "<PLAY_G>."
-	done
-
-UnknownText_0x1b725c: ; 0x1b725c
-	text "Ah, it's @"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Have you got a"
-	line "moment?"
-	done
-
-UnknownText_0x1b7283: ; 0x1b7283
-	text "Ah, it's @"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Can you talk now?"
-	done
-
-UnknownText_0x1b72a5: ; 0x1b72a5
-	text "Ah, it's @"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Sorry for calling"
-	line "so late."
-	done
-
-UnknownText_0x1b72d0: ; 0x1b72d0
-	text "Have your #MON"
-	line "grown any?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " has"
-	line "grown quite a bit."
-	done
-
-UnknownText_0x1b730b: ; 0x1b730b
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "<PLAYER>! Beautiful"
-	line "morning, hey?"
-	done
-
-UnknownText_0x1b7331: ; 0x1b7331
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "<PLAYER>! Beautiful"
-	line "weather, hey?"
-	done
-
-UnknownText_0x1b7357: ; 0x1b7357
-	text_from_ram StringBuffer3
-	text " here…"
-
-	para "<PLAYER>! Beautiful"
-	line "moonlight, hey?"
-	done
-
-UnknownText_0x1b737f: ; 0x1b737f
-	text "Hey, <PLAYER>!"
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b7397: ; 0x1b7397
-	text "Hey, <PLAYER>!"
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b73af: ; 0x1b73af
-	text "Hey, <PLAYER>!"
-	line "This is @"
-	text_from_ram StringBuffer3
-	text "!"
-	done
-
-UnknownText_0x1b73c7: ; 0x1b73c7
-	text "Yup, yup!"
-	line "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Hah, and here's"
-	line "<PLAY_G>!"
-	done
-
-UnknownText_0x1b73ef: ; 0x1b73ef
-	text "Yup, yup!"
-	line "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Hah, and here's"
-	line "<PLAY_G>!"
-	done
-
-UnknownText_0x1b7417: ; 0x1b7417
-	text "Yup, yup!"
-	line "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Hah, and here's"
-	line "<PLAY_G>!"
-	done
-
-UnknownText_0x1b743f: ; 0x1b743f
-	text "<PLAY_G>, it's"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Have you had a"
-	line "proper breakfast?"
-	done
-
-UnknownText_0x1b746f: ; 0x1b746f
-	text "<PLAY_G>, it's"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Have you had a"
-	line "proper lunch?"
-	done
-
-UnknownText_0x1b749b: ; 0x1b749b
-	text "<PLAY_G>, it's"
-	line "@"
-	text_from_ram StringBuffer3
-	text "!"
-
-	para "Have you had a"
-	line "proper dinner?"
-	done
-
-UnknownText_0x1b74c8: ; 0x1b74c8
-	text "Are your #MON"
-	line "looking good?"
-
-	para "My @"
-	text_from_ram StringBuffer4
-	text " and"
-	line "me--we're looking"
-
-	para "mighty dandy!"
-	line "Hahahah!"
-	done
-
-UnknownText_0x1b751a: ; 0x1b751a
-	text "Yes, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh. Hi, <PLAY_G>!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b7548: ; 0x1b7548
-	text "Yes, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, hi, <PLAY_G>!"
-	line "Yahoo!"
-	done
-
-UnknownText_0x1b756f: ; 0x1b756f
-	text "Yes, this is"
-	line "@"
-	text_from_ram StringBuffer3
-	text "…"
-
-	para "Oh, hi, <PLAY_G>!"
-	done
-
-UnknownText_0x1b758f: ; 0x1b758f
-	text "<PLAY_G>!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "Good morning!"
-	done
-
-UnknownText_0x1b75ac: ; 0x1b75ac
-	text "<PLAY_G>!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "Working hard?"
-	done
-
-UnknownText_0x1b75c9: ; 0x1b75c9
-	text "<PLAY_G>!"
-
-	para "It's @"
-	text_from_ram StringBuffer3
-	text "!"
-	line "Were you up?"
-	done
-
-UnknownText_0x1b75e5: ; 0x1b75e5
-	text "Are you raising"
-	line "your #MON?"
-
-	para "Hey, @"
-	text_from_ram StringBuffer3
-	text "'s"
-	line "@"
-	text_from_ram StringBuffer4
-	text " is"
-	cont "looking good!"
-	done
-
-UnusedPhoneText: ; 0x1b7624
-	text "Good morning."
-	done
--- a/text/phone/tully_overworld.asm
+++ /dev/null
@@ -1,73 +1,0 @@
-TullyAskNumber1Text:
-	text "Hey, you're trying"
-	line "to be the ultimate"
-
-	para "trainer too? Then"
-	line "we're comrades!"
-
-	para "If I find any more"
-	line "items by the"
-
-	para "water, I'll give"
-	line "you some."
-
-	para "Just give me your"
-	line "phone number."
-	done
-
-TullyAskNumber2Text:
-	text "If I find any more"
-	line "items by the"
-
-	para "water, I'll give"
-	line "you some."
-
-	para "Just give me your"
-	line "phone number."
-	done
-
-TullyNumberAcceptedText:
-	text "You'll be hearing"
-	line "from me if I find"
-	cont "something good."
-	done
-
-TullyNumberDeclinedText:
-	text "Is that so? Then"
-	line "I'll just have to"
-	cont "use them myself."
-	done
-
-TullyPhoneFullText:
-	text "Your phone list is"
-	line "all filled up."
-
-	para "Come back if you"
-	line "make room for me."
-	done
-
-TullyRematchText:
-	text "I've been doing"
-	line "more than just"
-
-	para "fishing since we"
-	line "last met."
-
-	para "You're in for a"
-	line "big surprise!"
-	done
-
-TullyGiftText:
-	text "Hey, there you"
-	line "are!"
-
-	para "Here's a gift, as"
-	line "promised!"
-	done
-
-TullyPackFullText:
-	text "Your PACK's full?"
-
-	para "Come back later--"
-	line "that'll do it."
-	done
--- a/text/phone/vance_overworld.asm
+++ /dev/null
@@ -1,73 +1,0 @@
-VanceAskNumber1Text:
-	text "You know, you are"
-	line "really strong."
-
-	para "But I don't want"
-	line "to just slink off…"
-
-	para "I know! Could I"
-	line "get your number?"
-
-	para "Let's meet up for"
-	line "more battles!"
-	done
-
-VanceAskNumber2Text:
-	text "I want to battle"
-	line "tough trainers as"
-	cont "often as I can!"
-
-	para "Could I get your"
-	line "number?"
-
-	para "Let's meet up for"
-	line "more battles!"
-	done
-
-VanceNumberAcceptedText:
-	text "Don't forget to"
-	line "come see me when I"
-	cont "challenge you!"
-	done
-
-VanceNumberDeclinedText:
-	text "A bird-user friend"
-	line "isn't a bad thing"
-	cont "to have, I think…"
-
-	para "Won't you"
-	line "reconsider?"
-	done
-
-VancePhoneFullText:
-	text "Your phone's out"
-	line "of memory. Delete"
-	cont "a number for me!"
-	done
-
-VanceRematchText:
-	text "Am I happy to see"
-	line "you! I won't lose!"
-	done
-
-VancePackFullText:
-	text "Oh, too bad. You"
-	line "don't have room."
-
-	para "I'll give it to"
-	line "you next time!"
-	done
-
-VanceRematchGiftText:
-	text "You are really,"
-	line "really strong!"
-
-	para "Thanks for taking"
-	line "me on so often--I"
-
-	para "learned a whole"
-	line "lot from you."
-
-	para "I know! This will"
-	line "do as my thanks!"
-	done
--- a/text/phone/wade_overworld.asm
+++ /dev/null
@@ -1,70 +1,0 @@
-WadeAskNumber1Text:
-	text "You're awesome!"
-	line "I like you!"
-
-	para "I look for #MON"
-	line "here every day."
-
-	para "When I'm in the"
-	line "grass, I find all"
-	cont "kinds of BERRIES."
-
-	para "If you'd like,"
-	line "I'll share some."
-
-	para "Could I get your"
-	line "phone number?"
-	done
-
-WadeAskNumber2Text:
-	text "When I'm in the"
-	line "grass, I find all"
-	cont "kinds of BERRIES."
-
-	para "If you'd like,"
-	line "I'll share some."
-
-	para "Could I get your"
-	line "phone number?"
-	done
-
-WadeNumberAcceptedText:
-	text "You'll hear from"
-	line "me as soon as I"
-
-	para "find anything that"
-	line "you might like."
-	done
-
-WadeNumberDeclinedText:
-	text "Oh well. Don't be"
-	line "shy if you want to"
-	cont "get my number."
-	done
-
-WadePhoneFullText:
-	text "Your phone list"
-	line "has no room for my"
-	cont "number."
-	done
-
-WadeRematchText:
-	text "I was waiting for"
-	line "you. Let's battle!"
-	done
-
-WadeGiftText:
-	text "Good to see you!"
-	line "See? This is what"
-
-	para "I found."
-	line "It's for you!"
-	done
-
-WadePackFullText:
-	text "Oops, your PACK's"
-	line "full. Too bad."
-
-	para "You should come"
-	line "back for it later."
-	done
--- a/text/phone/wilton_overworld.asm
+++ /dev/null
@@ -1,61 +1,0 @@
-WiltonAskNumber1Text:
-	text "Eh, our battle was"
-	line "fun, I'd say…"
-
-	para "When I'm fishing,"
-	line "I sometimes snag"
-
-	para "items that people"
-	line "have dropped."
-
-	para "Do you want them?"
-	line "What's the number?"
-	done
-
-WiltonAskNumber2Text:
-	text "If I snag an item"
-	line "while I'm fishing,"
-
-	para "it's yours. What's"
-	line "your number?"
-	done
-
-WiltonNumberAcceptedText:
-	text "If I snag anything"
-	line "good, I'll be sure"
-	cont "to let you know."
-	done
-
-WiltonNumberDeclinedText:
-	text "All right… Come"
-	line "back if you have a"
-	cont "change of heart."
-	done
-
-WiltonPhoneFullText:
-	text "You can't register"
-	line "another number."
-	done
-
-WiltonRematchText:
-	text "Argh! You startled"
-	line "POLIWAG into"
-	cont "fleeing again!"
-	done
-
-WiltonGiftText:
-	text "So here you are."
-
-	para "See this?"
-	line "I snagged it just"
-
-	para "a little while"
-	line "ago. It's yours."
-	done
-
-WiltonPackFullText:
-	text "Your PACK's full?"
-
-	para "I'll give it to"
-	line "you later."
-	done
--- a/text/stdtext.asm
+++ /dev/null
@@ -1,388 +1,0 @@
-NurseMornText:
-	text "Good morning!"
-	line "Welcome to our"
-	cont "#MON CENTER."
-	done
-
-NurseDayText:
-	text "Hello!"
-	line "Welcome to our"
-	cont "#MON CENTER."
-	done
-
-NurseNiteText:
-	text "Good evening!"
-	line "You're out late."
-
-	para "Welcome to our"
-	line "#MON CENTER."
-	done
-
-PokeComNurseMornText:
-	text "Good morning!"
-
-	para "This is the #-"
-	line "MON COMMUNICATION"
-
-	para "CENTER--or the"
-	line "#COM CENTER."
-	done
-
-PokeComNurseDayText:
-	text "Hello!"
-
-	para "This is the #-"
-	line "MON COMMUNICATION"
-
-	para "CENTER--or the"
-	line "#COM CENTER."
-	done
-
-PokeComNurseNiteText:
-	text "Good to see you"
-	line "working so late."
-
-	para "This is the #-"
-	line "MON COMMUNICATION"
-
-	para "CENTER--or the"
-	line "#COM CENTER."
-	done
-
-NurseAskHealText:
-	text "We can heal your"
-	line "#MON to perfect"
-	cont "health."
-
-	para "Shall we heal your"
-	line "#MON?"
-	done
-
-NurseTakePokemonText:
-	text "OK, may I see your"
-	line "#MON?"
-	done
-
-NurseReturnPokemonText:
-	text "Thank you for"
-	line "waiting."
-
-	para "Your #MON are"
-	line "fully healed."
-	done
-
-NurseGoodbyeText:
-	text "We hope to see you"
-	line "again."
-	done
-
-; not used
-	text "We hope to see you"
-	line "again."
-	done
-
-NursePokerusText:
-	text "Your #MON"
-	line "appear to be"
-
-	para "infected by tiny"
-	line "life forms."
-
-	para "Your #MON are"
-	line "healthy and seem"
-	cont "to be fine."
-
-	para "But we can't tell"
-	line "you anything more"
-
-	para "at a #MON"
-	line "CENTER."
-	done
-
-PokeComNursePokerusText:
-	text "Your #MON"
-	line "appear to be"
-
-	para "infected by tiny"
-	line "life forms."
-
-	para "Your #MON are"
-	line "healthy and seem"
-	cont "to be fine."
-
-	para "But we can't tell"
-	line "you anything more."
-	done
-
-DifficultBookshelfText:
-	text "It's full of"
-	line "difficult books."
-	done
-
-PictureBookshelfText:
-	text "A whole collection"
-	line "of #MON picture"
-	cont "books!"
-	done
-
-MagazineBookshelfText:
-	text "#MON magazines…"
-	line "#MON PAL,"
-
-	para "#MON HANDBOOK,"
-	line "#MON GRAPH…"
-	done
-
-TeamRocketOathText:
-	text "TEAM ROCKET OATH"
-
-	para "Steal #MON for"
-	line "profit!"
-
-	para "Exploit #MON"
-	line "for profit!"
-
-	para "All #MON exist"
-	line "for the glory of"
-	cont "TEAM ROCKET!"
-	done
-
-IncenseBurnerText:
-	text "What is this?"
-
-	para "Oh, it's an"
-	line "incense burner!"
-	done
-
-MerchandiseShelfText:
-	text "Lots of #MON"
-	line "merchandise!"
-	done
-
-TownMapText:
-	text "It's the TOWN MAP."
-	done
-
-WindowText:
-	text "My reflection!"
-	line "Lookin' good!"
-	done
-
-TVText:
-	text "It's a TV."
-	done
-
-HomepageText:
-	text "#MON JOURNAL"
-	line "HOME PAGE…"
-
-	para "It hasn't been"
-	line "updated…"
-	done
-
-; not used
-	text "#MON RADIO!"
-
-	para "Call in with your"
-	line "requests now!"
-	done
-
-TrashCanText:
-	text "There's nothing in"
-	line "here…"
-	done
-
-; not used
-	text "A #MON may be"
-	line "able to move this."
-	done
-
-; not used
-	text "Maybe a #MON"
-	line "can break this."
-	done
-
-PokecenterSignText:
-	text "Heal Your #MON!"
-	line "#MON CENTER"
-	done
-
-MartSignText:
-	text "For All Your"
-	line "#MON Needs"
-
-	para "#MON MART"
-	done
-
-ContestResults_ReadyToJudgeText:
-	text "We will now judge"
-	line "the #MON you've"
-	cont "caught."
-
-	para $56
-	line $56
-
-	para "We have chosen the"
-	line "winners!"
-
-	para "Are you ready for"
-	line "this?"
-	done
-
-ContestResults_PlayerWonAPrizeText:
-	text "<PLAYER>, the No.@"
-	text_from_ram StringBuffer3
-	text ""
-	line "finisher, wins"
-	cont "@"
-	text_from_ram StringBuffer4
-	text "!"
-	done
-
-ReceivedItemText:
-	text "<PLAYER> received"
-	line "@"
-	text_from_ram StringBuffer4
-	text "."
-	done
-
-ContestResults_JoinUsNextTimeText:
-	text "Please join us for"
-	line "the next Contest!"
-	done
-
-ContestResults_ConsolationPrizeText:
-	text "Everyone else gets"
-	line "a BERRY as a con-"
-	cont "solation prize!"
-	done
-
-ContestResults_DidNotWinText:
-	text "We hope you do"
-	line "better next time."
-	done
-
-ContestResults_ReturnPartyText:
-	text "We'll return the"
-	line "#MON we kept"
-
-	para "for you."
-	line "Here you go!"
-	done
-
-ContestResults_PartyFullText:
-	text "Your party's full,"
-	line "so the #MON was"
-
-	para "sent to your BOX"
-	line "in BILL's PC."
-	done
-
-GymStatue_CityGymText:
-	text_from_ram StringBuffer3
-	text ""
-	line "#MON GYM"
-	done
-
-GymStatue_WinningTrainersText:
-	text "LEADER: @"
-	text_from_ram StringBuffer4
-	text ""
-	para "WINNING TRAINERS:"
-	line "<PLAYER>"
-	done
-
-CoinVendor_WelcomeText:
-	text "Welcome to the"
-	line "GAME CORNER."
-	done
-
-CoinVendor_NoCoinCaseText:
-	text "Do you need game"
-	line "coins?"
-
-	para "Oh, you don't have"
-	line "a COIN CASE for"
-	cont "your coins."
-	done
-
-CoinVendor_IntroText:
-	text "Do you need some"
-	line "game coins?"
-
-	para "It costs ¥1000 for"
-	line "50 coins. Do you"
-	cont "want some?"
-	done
-
-CoinVendor_Buy50CoinsText:
-	text "Thank you!"
-	line "Here are 50 coins."
-	done
-
-CoinVendor_Buy500CoinsText:
-	text "Thank you! Here"
-	line "are 500 coins."
-	done
-
-CoinVendor_NotEnoughMoneyText:
-	text "You don't have"
-	line "enough money."
-	done
-
-CoinVendor_CoinCaseFullText:
-	text "Whoops! Your COIN"
-	line "CASE is full."
-	done
-
-CoinVendor_CancelText:
-	text "No coins for you?"
-	line "Come again!"
-	done
-
-BugContestPrizeNoRoomText:
-	text "Oh? Your PACK is"
-	line "full."
-
-	para "We'll keep this"
-	line "for you today, so"
-
-	para "come back when you"
-	line "make room for it."
-	done
-
-HappinessText3:
-	text "Wow! You and your"
-	line "#MON are really"
-	cont "close!"
-	done
-
-HappinessText2:
-	text "#MON get more"
-	line "friendly if you"
-
-	para "spend time with"
-	line "them."
-	done
-
-HappinessText1:
-	text "You haven't tamed"
-	line "your #MON."
-
-	para "If you aren't"
-	line "nice, it'll pout."
-	done
-
-RegisteredNumber1Text:
-	text "<PLAYER> registered"
-	line "@"
-	text_from_ram StringBuffer3
-	text "'s number."
-	done
-
-RegisteredNumber2Text:
-	text "<PLAYER> registered"
-	line "@"
-	text_from_ram StringBuffer3
-	text "'s number."
-	done
--- a/text/unused_gen_1_trainers.asm
+++ /dev/null
@@ -1,92 +1,0 @@
-GetGen1TrainerClassName: ; 50a28
-; XXX
-	ld hl, .Strings
-	ld a, [TrainerClass]
-	dec a
-	ld c, a
-	ld b, 0
-	add hl, bc
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, StringBuffer1
-.copy
-	ld a, [hli]
-	ld [de], a
-	inc de
-	cp "@"
-	jr nz, .copy
-	ret
-
-.Strings: ; 50a42
-; Untranslated trainer class names from Red.
-	dw .Youngster
-	dw .BugCatcher
-	dw .Lass
-	dw OTClassName
-	dw .JrTrainerM
-	dw .JrTrainerF
-	dw .Pokemaniac
-	dw .SuperNerd
-	dw OTClassName
-	dw OTClassName
-	dw .Burglar
-	dw .Engineer
-	dw .Jack
-	dw OTClassName
-	dw .Swimmer
-	dw OTClassName
-	dw OTClassName
-	dw .Beauty
-	dw OTClassName
-	dw .Rocker
-	dw .Juggler
-	dw OTClassName
-	dw OTClassName
-	dw .Blackbelt
-	dw OTClassName
-	dw .ProfOak
-	dw .Chief
-	dw .Scientist
-	dw OTClassName
-	dw .Rocket
-	dw .CooltrainerM
-	dw .CooltrainerF
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-	dw OTClassName
-
-.Youngster:    db "たんパン@"
-.BugCatcher:   db "むしとり@"
-.Lass:         db "ミニスカ@"
-.JrTrainerM:   db "ボーイ@"
-.JrTrainerF:   db "ガール@"
-.Pokemaniac:   db "マニア@"
-.SuperNerd:    db "りかけい@"
-.Burglar:      db "どろぼう@"
-.Engineer:     db "ォヤジ@"
-.Jack:         db "ジャック@"
-.Swimmer:      db "かいパン@"
-.Beauty:       db "おねえさん@"
-.Rocker:       db "グループ@"
-.Juggler:      db "ジャグラー@"
-.Blackbelt:    db "からて@"
-.ProfOak:      db "ォーキド@"
-.Chief:        db "チーフ@"
-.Scientist:    db "けんきゅういん@"
-.Rocket:       db "だんいん@"
-.CooltrainerM: db "エりート♂@"
-.CooltrainerF: db "エりート♀@"
--- a/text/unused_sweet_honey.asm
+++ /dev/null
@@ -1,68 +1,0 @@
-; Sweet Honey is a feature that was scrapped before development.
-; It was later implemented in Pokémon Diamond and Pearl.
-;
-; Sweet Honey was probably reworked into Sweet Scent.
-; A map in the final game has a Butterfree and a woman who gives
-; the Sweet Scent TM.
-
-; Most of these texts seem to be associated with a single NPC.
-; The last text is associated with a second NPC, probably a Butterfree.
-
-UnusedSweetHoneyText: ; 0x5578a
-	text "My #MON is an"
-	line "expert at collect-"
-	cont "ing SWEET HONEY."
-
-	para "I'll share some"
-	line "with you."
-	done
-
-UnusedSweetHoneyBagFullText: ; 0x557d6
-	text "I want to give you"
-	line "some SWEET HONEY,"
-
-	para "but you have no"
-	line "room for it."
-	done
-
-UnusedSweetHoneyGiveText: ; 0x55819
-	text "Here you go! Have"
-	line "some SWEET HONEY!"
-	done
-
-UnusedGotSweetHoneyText: ; 0x5583e
-	text "<PLAYER> received"
-	line "SWEET HONEY."
-	done
-
-UnusedSweetHoneyAfterText1: ; 0x55856
-	text "My little brother"
-	line "takes SWEET HONEY"
-
-	para "and goes somewhere"
-	line "with it."
-
-	para "I wonder what he's"
-	line "up to?"
-	done
-
-UnusedSweetHoneyAfterText2: ; 0x558b1
-	text "Did you put SWEET"
-	line "HONEY on a tree?"
-
-	para "What happened to"
-	line "it?"
-	done
-
-UnusedSweetHoneyAfterText3: ; 0x558ea
-	text "Did you put SWEET"
-	line "HONEY on a tree?"
-
-	para "It takes about a"
-	line "day for #MON to"
-	cont "be drawn to it."
-	done
-
-UnusedSweetHoneyButterfreeText: ; 0x5593f
-	text "BUTTERFREE: Freeh!"
-	done
--- a/tilesets/aerodactyl_word_room_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, WALL, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, WALL ; 1a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- a/tilesets/aerodactyl_word_room_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-�ǎ��מ������������������Ŏ��՞����������������Ø����������������������������������������������������������ǐ���	
-
-
- !"#�Ɉ��٘�@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7�������������Š��հ���������
\ No newline at end of file
--- a/tilesets/aerodactyl_word_room_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
--- a/tilesets/animations.asm
+++ /dev/null
@@ -1,1060 +1,0 @@
-_AnimateTileset:: ; fc000
-; Iterate over a given pointer array of
-; animation functions (one per frame).
-
-; Typically in wra1, vra0
-
-	ld a, [TilesetAnim]
-	ld e, a
-	ld a, [TilesetAnim + 1]
-	ld d, a
-
-	ld a, [hTileAnimFrame]
-	ld l, a
-	inc a
-	ld [hTileAnimFrame], a
-
-	ld h, 0
-	add hl, hl
-	add hl, hl
-	add hl, de
-
-; 2-byte parameter
-; All functions take input de.
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc hl
-
-; Function address
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	jp hl
-; fc01b
-
-Tileset0Anim: ; 0xfc01b
-TilesetJohto2Anim: ; 0xfc01b
-TilesetKantoAnim: ; 0xfc01b
-	dw vTiles2 tile $14, AnimateWaterTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  TileAnimationPalette
-	dw NULL,  WaitTileAnimation
-	dw NULL,  AnimateFlowerTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  StandingTileFrame8
-	dw NULL,  DoneTileAnimation
-; 0xfc047
-
-TilesetParkAnim: ; 0xfc047
-	dw vTiles2 tile $14, AnimateWaterTile
-	dw NULL,  WaitTileAnimation
-	dw vTiles2 tile $5f, AnimateFountain
-	dw NULL,  WaitTileAnimation
-	dw NULL,  TileAnimationPalette
-	dw NULL,  WaitTileAnimation
-	dw NULL,  AnimateFlowerTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  StandingTileFrame8
-	dw NULL,  DoneTileAnimation
-; 0xfc073
-
-TilesetIlexForestAnim: ; 0xfc073
-	dw NULL,  ForestTreeLeftAnimation
-	dw NULL,  ForestTreeRightAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  ForestTreeLeftAnimation2
-	dw NULL,  ForestTreeRightAnimation2
-	dw NULL,  AnimateFlowerTile
-	dw vTiles2 tile $14, AnimateWaterTile
-	dw NULL,  TileAnimationPalette
-	dw NULL,  StandingTileFrame8
-	dw NULL,  DoneTileAnimation
-; 0xfc0a3
-
-TilesetJohto1Anim: ; 0xfc0a3
-	dw vTiles2 tile $14, AnimateWaterTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  TileAnimationPalette
-	dw NULL,  WaitTileAnimation
-	dw NULL,  AnimateFlowerTile
-	dw WhirlpoolFrames1, AnimateWhirlpoolTile
-	dw WhirlpoolFrames2, AnimateWhirlpoolTile
-	dw WhirlpoolFrames3, AnimateWhirlpoolTile
-	dw WhirlpoolFrames4, AnimateWhirlpoolTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  StandingTileFrame8
-	dw NULL,  DoneTileAnimation
-; 0xfc0d7
-
-TilesetAnimfc0d7: ; 0xfc0d7
-	dw vTiles2 tile $03, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw vTiles2 tile $03, WriteTileFromBuffer
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  AnimateFlowerTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  DoneTileAnimation
-; 0xfc103
-
-TilesetAnimfc103: ; 0xfc103
-	dw vTiles2 tile $14, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw vTiles2 tile $14, WriteTileFromBuffer
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  DoneTileAnimation
-; 0xfc12f
-
-TilesetPortAnim: ; 0xfc12f
-	dw vTiles2 tile $14, AnimateWaterTile
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  TileAnimationPalette
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  StandingTileFrame8
-	dw NULL,  DoneTileAnimation
-; 0xfc15f
-
-TilesetGym1Anim: ; 0xfc15f
-	dw NULL,  SafariFountainAnim2
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  SafariFountainAnim1
-	dw NULL,  WaitTileAnimation
-	dw NULL,  StandingTileFrame8
-	dw NULL,  DoneTileAnimation
-; 0xfc17f
-
-TilesetAnimfc17f: ; 0xfc17f
-	dw vTiles2 tile $53, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileDown
-	dw wTileAnimBuffer, ScrollTileDown
-	dw vTiles2 tile $53, WriteTileFromBuffer
-	dw vTiles2 tile $03, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw vTiles2 tile $03, WriteTileFromBuffer
-	dw vTiles2 tile $53, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileDown
-	dw wTileAnimBuffer, ScrollTileDown
-	dw vTiles2 tile $53, WriteTileFromBuffer
-	dw NULL,  DoneTileAnimation
-; 0xfc1af
-
-TilesetAnimfc1af: ; 0xfc1af
-	dw vTiles2 tile $54, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileDown
-	dw wTileAnimBuffer, ScrollTileDown
-	dw vTiles2 tile $54, WriteTileFromBuffer
-	dw NULL,  WaitTileAnimation
-	dw vTiles2 tile $03, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw vTiles2 tile $03, WriteTileFromBuffer
-	dw NULL,  WaitTileAnimation
-	dw vTiles2 tile $54, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileDown
-	dw wTileAnimBuffer, ScrollTileDown
-	dw vTiles2 tile $54, WriteTileFromBuffer
-	dw NULL,  DoneTileAnimation
-; 0xfc1e7
-
-TilesetCaveAnim: ; 0xfc1e7
-TilesetWhirlIslandsAnim: ; 0xfc1e7
-	dw vTiles2 tile $14, WriteTileToBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw vTiles2 tile $14, WriteTileFromBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw NULL,  TileAnimationPalette
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw vTiles2 tile $40, WriteTileToBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileDown
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileDown
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileDown
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw vTiles2 tile $40, WriteTileFromBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw NULL,  DoneTileAnimation
-; 0xfc233
-
-TilesetIcePathAnim: ; 0xfc233
-	dw vTiles2 tile $35, WriteTileToBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw vTiles2 tile $35, WriteTileFromBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw NULL,  TileAnimationPalette
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw vTiles2 tile $31, WriteTileToBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileDown
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileDown
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw wTileAnimBuffer, ScrollTileDown
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw vTiles2 tile $31, WriteTileFromBuffer
-	dw NULL,  FlickeringCaveEntrancePalette
-	dw NULL,  DoneTileAnimation
-; 0xfc27f
-
-TilesetSproutTowerAnim: ; 0xfc27f
-	dw SproutPillarTilePointer9,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer10, AnimateSproutPillarTile
-	dw SproutPillarTilePointer7,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer8,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer5,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer6,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer3,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer4,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer1,  AnimateSproutPillarTile
-	dw SproutPillarTilePointer2,  AnimateSproutPillarTile
-	dw NULL,  StandingTileFrame
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  DoneTileAnimation
-; 0xfc2bf
-
-TilesetAnimfc2bf: ; 0xfc2bf
-	dw vTiles2 tile $4f, WriteTileToBuffer
-	dw wTileAnimBuffer, ScrollTileRightLeft
-	dw vTiles2 tile $4f, WriteTileFromBuffer
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  WaitTileAnimation
-	dw NULL,  DoneTileAnimation
-; 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
-	dw NULL,  WaitTileAnimation
-	dw NULL,  DoneTileAnimation
-; 0xfc2fb
-
-DoneTileAnimation: ; fc2fb
-; Reset the animation command loop.
-	xor a
-	ld [hTileAnimFrame], a
-
-WaitTileAnimation: ; fc2fe
-; Do nothing this frame.
-	ret
-; fc2ff
-
-StandingTileFrame8: ; fc2ff
-	ld a, [TileAnimationTimer]
-	inc a
-	and 7
-	ld [TileAnimationTimer], a
-	ret
-; fc309
-
-
-ScrollTileRightLeft: ; fc309
-; Scroll right for 4 ticks, then left for 4 ticks.
-	ld a, [TileAnimationTimer]
-	inc a
-	and 7
-	ld [TileAnimationTimer], a
-	and 4
-	jr nz, ScrollTileLeft
-	jr ScrollTileRight
-; fc318
-
-ScrollTileUpDown: ; fc318
-; Scroll up for 4 ticks, then down for 4 ticks.
-	ld a, [TileAnimationTimer]
-	inc a
-	and 7
-	ld [TileAnimationTimer], a
-	and 4
-	jr nz, ScrollTileDown
-	jr ScrollTileUp
-; fc327
-
-ScrollTileLeft: ; fc327
-	ld h, d
-	ld l, e
-	ld c, 4
-.loop
-	rept 4
-	ld a, [hl]
-	rlca
-	ld [hli], a
-	endr
-	dec c
-	jr nz, .loop
-	ret
-; fc33b
-
-ScrollTileRight: ; fc33b
-	ld h, d
-	ld l, e
-	ld c, 4
-.loop
-	rept 4
-	ld a, [hl]
-	rrca
-	ld [hli], a
-	endr
-	dec c
-	jr nz, .loop
-	ret
-; fc34f
-
-ScrollTileUp: ; fc34f
-	ld h, d
-	ld l, e
-	ld d, [hl]
-	inc hl
-	ld e, [hl]
-	ld bc, $e
-	add hl, bc
-	ld a, 4
-.loop
-	ld c, [hl]
-	ld [hl], e
-	dec hl
-	ld b, [hl]
-	ld [hl], d
-	dec hl
-	ld e, [hl]
-	ld [hl], c
-	dec hl
-	ld d, [hl]
-	ld [hl], b
-	dec hl
-	dec a
-	jr nz, .loop
-	ret
-; fc36a
-
-ScrollTileDown: ; fc36a
-	ld h, d
-	ld l, e
-	ld de, $e
-	push hl
-	add hl, de
-	ld d, [hl]
-	inc hl
-	ld e, [hl]
-	pop hl
-	ld a, 4
-.loop
-	ld b, [hl]
-	ld [hl], d
-	inc hl
-	ld c, [hl]
-	ld [hl], e
-	inc hl
-	ld d, [hl]
-	ld [hl], b
-	inc hl
-	ld e, [hl]
-	ld [hl], c
-	inc hl
-	dec a
-	jr nz, .loop
-	ret
-; fc387
-
-
-AnimateFountain: ; fc387
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-	ld hl, .frames
-	ld a, [TileAnimationTimer]
-	and 7
-	add a
-	add l
-	ld l, a
-	jr nc, .okay
-	inc h
-.okay
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld sp, hl
-	ld l, e
-	ld h, d
-	jp WriteTile
-
-.frames
-	dw .frame1
-	dw .frame2
-	dw .frame3
-	dw .frame4
-	dw .frame3
-	dw .frame4
-	dw .frame5
-	dw .frame1
-
-.frame1 INCBIN "gfx/tilesets/fountain/1.2bpp"
-.frame2 INCBIN "gfx/tilesets/fountain/2.2bpp"
-.frame3 INCBIN "gfx/tilesets/fountain/3.2bpp"
-.frame4 INCBIN "gfx/tilesets/fountain/4.2bpp"
-.frame5 INCBIN "gfx/tilesets/fountain/5.2bpp"
-; fc402
-
-
-AnimateWaterTile: ; fc402
-; Draw a water tile for the current frame in VRAM tile at de.
-
-; Save sp in bc (see WriteTile).
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-	ld a, [TileAnimationTimer]
-
-; 4 tile graphics, updated every other frame.
-	and 3 << 1
-
-; 2 x 8 = 16 bytes per tile
-	add a
-	add a
-	add a
-
-	add LOW(WaterTileFrames)
-	ld l, a
-	ld a, 0
-	adc HIGH(WaterTileFrames)
-	ld h, a
-
-; Stack now points to the start of the tile for this frame.
-	ld sp, hl
-
-	ld l, e
-	ld h, d
-
-	jp WriteTile
-; fc41c
-
-WaterTileFrames: ; fc41c
-	INCBIN "gfx/tilesets/water/water.2bpp"
-; fc45c
-
-
-ForestTreeLeftAnimation: ; fc45c
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-; Only during the Celebi event.
-	ld a, [wCelebiEvent]
-	bit 2, a
-	jr nz, .asm_fc46c
-	ld hl, ForestTreeLeftFrames
-	jr .asm_fc47d
-
-.asm_fc46c
-	ld a, [TileAnimationTimer]
-	call GetForestTreeFrame
-	add a
-	add a
-	add a
-	add LOW(ForestTreeLeftFrames)
-	ld l, a
-	ld a, 0
-	adc HIGH(ForestTreeLeftFrames)
-	ld h, a
-
-.asm_fc47d
-	ld sp, hl
-	ld hl, vTiles2 tile $0c
-	jp WriteTile
-; fc484
-
-
-ForestTreeLeftFrames: ; fc484
-	INCBIN "gfx/tilesets/forest-tree/1.2bpp"
-	INCBIN "gfx/tilesets/forest-tree/2.2bpp"
-; fc4a4
-
-ForestTreeRightFrames: ; fc4a4
-	INCBIN "gfx/tilesets/forest-tree/3.2bpp"
-	INCBIN "gfx/tilesets/forest-tree/4.2bpp"
-; fc4c4
-
-
-ForestTreeRightAnimation: ; fc4c4
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-; Only during the Celebi event.
-	ld a, [wCelebiEvent]
-	bit 2, a
-	jr nz, .asm_fc4d4
-	ld hl, ForestTreeRightFrames
-	jr .asm_fc4eb
-
-.asm_fc4d4
-	ld a, [TileAnimationTimer]
-	call GetForestTreeFrame
-	add a
-	add a
-	add a
-	add LOW(ForestTreeLeftFrames)
-	ld l, a
-	ld a, 0
-	adc HIGH(ForestTreeLeftFrames)
-	ld h, a
-	push bc
-	ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
-	add hl, bc
-	pop bc
-
-.asm_fc4eb
-	ld sp, hl
-	ld hl, vTiles2 tile $0f
-	jp WriteTile
-; fc4f2
-
-
-ForestTreeLeftAnimation2: ; fc4f2
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-; Only during the Celebi event.
-	ld a, [wCelebiEvent]
-	bit 2, a
-	jr nz, .asm_fc502
-	ld hl, ForestTreeLeftFrames
-	jr .asm_fc515
-
-.asm_fc502
-	ld a, [TileAnimationTimer]
-	call GetForestTreeFrame
-	xor 2
-	add a
-	add a
-	add a
-	add LOW(ForestTreeLeftFrames)
-	ld l, a
-	ld a, 0
-	adc HIGH(ForestTreeLeftFrames)
-	ld h, a
-
-.asm_fc515
-	ld sp, hl
-	ld hl, vTiles2 tile $0c
-	jp WriteTile
-; fc51c
-
-
-ForestTreeRightAnimation2: ; fc51c
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-; Only during the Celebi event.
-	ld a, [wCelebiEvent]
-	bit 2, a
-	jr nz, .asm_fc52c
-	ld hl, ForestTreeRightFrames
-	jr .asm_fc545
-
-.asm_fc52c
-	ld a, [TileAnimationTimer]
-	call GetForestTreeFrame
-	xor 2
-	add a
-	add a
-	add a
-	add LOW(ForestTreeLeftFrames)
-	ld l, a
-	ld a, 0
-	adc HIGH(ForestTreeLeftFrames)
-	ld h, a
-	push bc
-	ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
-	add hl, bc
-	pop bc
-
-.asm_fc545
-	ld sp, hl
-	ld hl, vTiles2 tile $0f
-	jp WriteTile
-; fc54c
-
-
-GetForestTreeFrame: ; fc54c
-; Return 0 if a is even, or 2 if odd.
-	and a
-	jr z, .even
-	cp 1
-	jr z, .odd
-	cp 2
-	jr z, .even
-	cp 3
-	jr z, .odd
-	cp 4
-	jr z, .even
-	cp 5
-	jr z, .odd
-	cp 6
-	jr z, .even
-.odd
-	ld a, 2
-	scf
-	ret
-.even
-	xor a
-	ret
-; fc56d
-
-
-AnimateFlowerTile: ; fc56d
-; No parameters.
-
-; Save sp in bc (see WriteTile).
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-; Alternate tile graphic every other frame
-	ld a, [TileAnimationTimer]
-	and 1 << 1
-	ld e, a
-
-; CGB has different color mappings for flowers.
-	ld a, [hCGB]
-	and 1
-
-	add e
-	swap a ; << 4 (16 bytes)
-	ld e, a
-	ld d, 0
-	ld hl, FlowerTileFrames
-	add hl, de
-	ld sp, hl
-
-	ld hl, vTiles2 + $30 ; tile 4
-
-	jp WriteTile
-; fc58c
-
-FlowerTileFrames: ; fc58c
-	INCBIN "gfx/tilesets/flower/dmg_1.2bpp"
-	INCBIN "gfx/tilesets/flower/cgb_1.2bpp"
-	INCBIN "gfx/tilesets/flower/dmg_2.2bpp"
-	INCBIN "gfx/tilesets/flower/cgb_2.2bpp"
-; fc5cc
-
-
-SafariFountainAnim1: ; fc5cc
-; Splash in the bottom-right corner of the fountain.
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-	ld a, [TileAnimationTimer]
-	and 6
-	srl a
-	inc a
-	inc a
-	and 3
-	swap a
-	ld e, a
-	ld d, 0
-	ld hl, SafariFountainFrames
-	add hl, de
-	ld sp, hl
-	ld hl, vTiles2 tile $5b
-	jp WriteTile
-; fc5eb
-
-
-SafariFountainAnim2: ; fc5eb
-; Splash in the top-left corner of the fountain.
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-	ld a, [TileAnimationTimer]
-	and 6
-	add a
-	add a
-	add a
-	ld e, a
-	ld d, 0
-	ld hl, SafariFountainFrames
-	add hl, de
-	ld sp, hl
-	ld hl, vTiles2 tile $38
-	jp WriteTile
-; fc605
-
-
-SafariFountainFrames: ; fc605
-	INCBIN "gfx/tilesets/safari/1.2bpp"
-	INCBIN "gfx/tilesets/safari/2.2bpp"
-	INCBIN "gfx/tilesets/safari/3.2bpp"
-	INCBIN "gfx/tilesets/safari/4.2bpp"
-; fc645
-
-
-AnimateSproutPillarTile: ; fc645
-; Read from struct at de:
-; 	Destination (VRAM)
-;	Address of the first tile in the frame array
-
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-	ld a, [TileAnimationTimer]
-	and 7
-
-; Get frame index a
-	ld hl, .frames
-	add l
-	ld l, a
-	ld a, 0
-	adc h
-	ld h, a
-	ld a, [hl]
-
-; Destination
-	ld l, e
-	ld h, d
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc hl
-
-; Add the frame index to the starting address
-	add [hl]
-	inc hl
-	ld h, [hl]
-	ld l, a
-	ld a, 0
-	adc h
-	ld h, a
-
-	ld sp, hl
-	ld l, e
-	ld h, d
-	jr WriteTile
-
-.frames
-	db $00, $10, $20, $30, $40, $30, $20, $10
-; fc673
-
-
-StandingTileFrame: ; fc673
-	ld hl, TileAnimationTimer
-	inc [hl]
-	ret
-; fc678
-
-
-AnimateWhirlpoolTile: ; fc678
-; Update whirlpool tile using struct at de.
-
-; Struct:
-; 	VRAM address
-;	Address of the first tile
-
-; Only does one of 4 tiles at a time.
-
-; Save sp in bc (see WriteTile).
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-; de = VRAM address
-	ld l, e
-	ld h, d
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc hl
-; Tile address is now at hl.
-
-; Get the tile for this frame.
-	ld a, [TileAnimationTimer]
-	and %11 ; 4 frames x2
-	swap a  ; * 16 bytes per tile
-
-	add [hl]
-	inc hl
-	ld h, [hl]
-	ld l, a
-	ld a, 0
-	adc h
-	ld h, a
-
-; Stack now points to the desired frame.
-	ld sp, hl
-
-	ld l, e
-	ld h, d
-
-	jr WriteTile
-; fc696
-
-
-WriteTileFromBuffer: ; fc696
-; Write tiledata at wTileAnimBuffer to de.
-; wTileAnimBuffer is loaded to sp for WriteTile.
-
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-	ld hl, wTileAnimBuffer
-	ld sp, hl
-
-	ld h, d
-	ld l, e
-	jr WriteTile
-; fc6a2
-
-
-WriteTileToBuffer: ; fc6a2
-; Write tiledata de to wTileAnimBuffer.
-; de is loaded to sp for WriteTile.
-
-	ld hl, sp+0
-	ld b, h
-	ld c, l
-
-	ld h, d
-	ld l, e
-	ld sp, hl
-
-	ld hl, wTileAnimBuffer
-
-	; fallthrough
-
-WriteTile: ; fc6ac
-; Write one 8x8 tile ($10 bytes) from sp to hl.
-
-; Warning: sp is saved in bc so we can abuse pop.
-; sp is restored to address bc. Save sp in bc before calling.
-
-	pop de
-	ld [hl], e
-	inc hl
-	ld [hl], d
-
-rept 7
-	pop de
-	inc hl
-	ld [hl], e
-	inc hl
-	ld [hl], d
-endr
-
-; restore sp
-	ld h, b
-	ld l, c
-	ld sp, hl
-	ret
-; fc6d7
-
-
-TileAnimationPalette: ; fc6d7
-; Transition between color values 0-2 for color 0 in palette 3.
-
-; No palette changes on DMG.
-	ld a, [hCGB]
-	and a
-	ret z
-
-; We don't want to mess with non-standard palettes.
-	ld a, [rBGP] ; BGP
-	cp %11100100
-	ret nz
-
-; Only update on even frames.
-	ld a, [TileAnimationTimer]
-	ld l, a
-	and 1 ; odd
-	ret nz
-
-; Ready for BGPD input...
-
-	ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_WATER
-	ld [rBGPI], a
-
-	ld a, [rSVBK]
-	push af
-	ld a, BANK(wBGPals1)
-	ld [rSVBK], a
-
-; Update color 0 in order 0 1 2 1
-	ld a, l
-	and %110 ; frames 0 2 4 6
-	jr z, .color0
-	cp 4
-	jr z, .color2
-
-.color1
-	ld hl, wBGPals1 palette PAL_BG_WATER + 2
-	ld a, [hli]
-	ld [rBGPD], a
-	ld a, [hli]
-	ld [rBGPD], a
-	jr .end
-
-.color0
-	ld hl, wBGPals1 palette PAL_BG_WATER
-	ld a, [hli]
-	ld [rBGPD], a
-	ld a, [hli]
-	ld [rBGPD], a
-	jr .end
-
-.color2
-	ld hl, wBGPals1 palette PAL_BG_WATER + 4
-	ld a, [hli]
-	ld [rBGPD], a
-	ld a, [hli]
-	ld [rBGPD], a
-
-.end
-	pop af
-	ld [rSVBK], a
-	ret
-; fc71e
-
-
-FlickeringCaveEntrancePalette: ; fc71e
-; No palette changes on DMG.
-	ld a, [hCGB]
-	and a
-	ret z
-; We don't want to mess with non-standard palettes.
-	ld a, [rBGP]
-	cp %11100100
-	ret nz
-; We only want to be here if we're in a dark cave.
-	ld a, [wTimeOfDayPalset]
-	cp $ff ; 3,3,3,3
-	ret nz
-
-	ld a, [rSVBK]
-	push af
-	ld a, BANK(wBGPals1)
-	ld [rSVBK], a
-; Ready for BGPD input...
-	ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_YELLOW
-	ld [rBGPI], a
-	ld a, [hVBlankCounter]
-	and 1 << 1
-	jr nz, .bit1set
-	ld hl, wBGPals1 palette PAL_BG_YELLOW
-	jr .okay
-
-.bit1set
-	ld hl, wBGPals1 palette PAL_BG_YELLOW + 2
-
-.okay
-	ld a, [hli]
-	ld [rBGPD], a
-	ld a, [hli]
-	ld [rBGPD], a
-
-	pop af
-	ld [rSVBK], a
-	ret
-; fc750
-
-
-SproutPillarTilePointer1:  dw vTiles2 tile $2d, SproutPillarTile1
-SproutPillarTilePointer2:  dw vTiles2 tile $2f, SproutPillarTile2
-SproutPillarTilePointer3:  dw vTiles2 tile $3d, SproutPillarTile3
-SproutPillarTilePointer4:  dw vTiles2 tile $3f, SproutPillarTile4
-SproutPillarTilePointer5:  dw vTiles2 tile $3c, SproutPillarTile5
-SproutPillarTilePointer6:  dw vTiles2 tile $2c, SproutPillarTile6
-SproutPillarTilePointer7:  dw vTiles2 tile $4d, SproutPillarTile7
-SproutPillarTilePointer8:  dw vTiles2 tile $4f, SproutPillarTile8
-SproutPillarTilePointer9:  dw vTiles2 tile $5d, SproutPillarTile9
-SproutPillarTilePointer10: dw vTiles2 tile $5f, SproutPillarTile10
-
-SproutPillarTile1:  INCBIN "gfx/tilesets/sprout-pillar/1.2bpp"
-SproutPillarTile2:  INCBIN "gfx/tilesets/sprout-pillar/2.2bpp"
-SproutPillarTile3:  INCBIN "gfx/tilesets/sprout-pillar/3.2bpp"
-SproutPillarTile4:  INCBIN "gfx/tilesets/sprout-pillar/4.2bpp"
-SproutPillarTile5:  INCBIN "gfx/tilesets/sprout-pillar/5.2bpp"
-SproutPillarTile6:  INCBIN "gfx/tilesets/sprout-pillar/6.2bpp"
-SproutPillarTile7:  INCBIN "gfx/tilesets/sprout-pillar/7.2bpp"
-SproutPillarTile8:  INCBIN "gfx/tilesets/sprout-pillar/8.2bpp"
-SproutPillarTile9:  INCBIN "gfx/tilesets/sprout-pillar/9.2bpp"
-SproutPillarTile10: INCBIN "gfx/tilesets/sprout-pillar/10.2bpp"
-; fca98
-
-
-WhirlpoolFrames1: dw vTiles2 tile $32, WhirlpoolTiles1
-WhirlpoolFrames2: dw vTiles2 tile $33, WhirlpoolTiles2
-WhirlpoolFrames3: dw vTiles2 tile $42, WhirlpoolTiles3
-WhirlpoolFrames4: dw vTiles2 tile $43, WhirlpoolTiles4
-; fcaa8
-
-WhirlpoolTiles1: INCBIN "gfx/tilesets/whirlpool/1.2bpp"
-WhirlpoolTiles2: INCBIN "gfx/tilesets/whirlpool/2.2bpp"
-WhirlpoolTiles3: INCBIN "gfx/tilesets/whirlpool/3.2bpp"
-WhirlpoolTiles4: INCBIN "gfx/tilesets/whirlpool/4.2bpp"
-; fcba8
--- a/tilesets/battle_tower_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
-	tilecoll WALL, DOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 07
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 09
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll DOOR, WALL, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 12
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 15
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 16
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 18
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 19
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1a
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1f
-	tilecoll WALL, WALL, FLOOR, WALL ; 20
-	tilecoll WALL, WALL, WALL, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 22
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 25
-	tilecoll WALL, FLOOR, FLOOR, DOOR ; 26
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 28
-	tilecoll WALL, PC, FLOOR, FLOOR ; 29
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
-	tilecoll WALL, WALL, WALL, FLOOR ; 2b
-	tilecoll WALL, WALL, FLOOR, WALL ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, DOOR ; 2d
-	tilecoll FLOOR, FLOOR, DOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll WALL, WALL, FLOOR, WALL ; 37
-	tilecoll WALL, WALL, WALL, FLOOR ; 38
-	tilecoll WALL, WALL, FLOOR, WALL ; 39
-	tilecoll WALL, WALL, WALL, WALL ; 3a
-	tilecoll WALL, WALL, WALL, FLOOR ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, WALL, FLOOR, WALL ; 3d
-	tilecoll WALL, WALL, FLOOR, WALL ; 3e
-	tilecoll WALL, WALL, WALL, FLOOR ; 3f
-	tilecoll WALL, WALL, FLOOR, WALL ; 40
binary files a/tilesets/battle_tower_metatiles.bin /dev/null differ
--- a/tilesets/battle_tower_outside_collision.asm
+++ /dev/null
@@ -1,128 +1,0 @@
-	tilecoll 01, 01, 01, 01 ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, WALL, WALL ; 09
-	tilecoll WALL, WALL, WALL, WALL ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0d
-	tilecoll FLOOR, WALL, WALL, WALL ; 0e
-	tilecoll WALL, WALL, WALL, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 11
-	tilecoll WALL, WALL, FLOOR, WALL ; 12
-	tilecoll WALL, WALL, DOOR, DOOR ; 13
-	tilecoll WALL, WALL, WALL, FLOOR ; 14
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll WALL, WALL, DOOR, WALL ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, WALL ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 1d
-	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 20
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 21
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll WALL, WALL, WALL, WALL ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, FLOOR, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll WALL, FLOOR, WALL, WALL ; 30
-	tilecoll WALL, WALL, WALL, WALL ; 31
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 32
-	tilecoll WALL, HEADBUTT_TREE, WALL, HEADBUTT_TREE ; 33
-	tilecoll WALL, WALL, WALL, WALL ; 34
-	tilecoll WHIRLPOOL, FLOOR, WHIRLPOOL, FLOOR ; 35
-	tilecoll WHIRLPOOL, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll 5B, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll 5B, 01, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 41
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 42
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 43
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 44
-	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 45
-	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 46
-	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 47
-	tilecoll FLOOR, FLOOR, BRAKE_45, FLOOR ; 48
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 49
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 50
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 51
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 52
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 53
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 54
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 55
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 56
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 57
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 58
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 59
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 60
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 61
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 62
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 63
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 64
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 65
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 66
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 67
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 68
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 69
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 6f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 70
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 71
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 73
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 74
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 75
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 76
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 77
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 78
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 79
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 80
binary files a/tilesets/battle_tower_outside_metatiles.bin /dev/null differ
--- a/tilesets/battle_tower_outside_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
--- a/tilesets/battle_tower_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
--- a/tilesets/beta_word_room_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, WALL, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, WALL ; 1a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- a/tilesets/beta_word_room_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-�À��Ӑ��������������������������������������������������Ǧ��׶������������������������������������������������������ǀ��א�����������������	
-
-
- !"#����@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7�����������������������������������������������������������������������������������������������������������������������𠡀��������������������������������Ő������������������������������������������������������������Ѳ�����������������������������������������
\ No newline at end of file
--- a/tilesets/beta_word_room_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
--- a/tilesets/cave_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 05
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 06
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 08
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 0c
-	tilecoll WALL, FLOOR, WALL, WALL ; 0d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, WALL, WALL ; 0f
-	tilecoll WATER, WATER, WATER, WATER ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, WALL, CAVE ; 14
-	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 15
-	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 16
-	tilecoll WALL, FLOOR, WALL, WARP_CARPET_DOWN ; 17
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, WALL, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1a
-	tilecoll WALL, WALL, FLOOR, WALL ; 1b
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 1c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 20
-	tilecoll WALL, FLOOR, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 22
-	tilecoll FLOOR, WALL, WALL, WALL ; 23
-	tilecoll UP_WALL, WALL, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 25
-	tilecoll WATER, WATER, WATER, WATER ; 26
-	tilecoll WATER, WATER, WATER, WATER ; 27
-	tilecoll WATER, WATER, WATER, WATER ; 28
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2a
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2c
-	tilecoll WATERFALL, WATERFALL, WATERFALL, WATERFALL ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WATER, WATER, WATER, WATER ; 33
-	tilecoll WATER, WATER, WATER, WATER ; 34
-	tilecoll WALL, WALL, WALL, WALL ; 35
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 36
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
-	tilecoll WALL, WALL, WALL, CAVE ; 38
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 39
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 3a
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 3b
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 3c
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 3d
-	tilecoll WATER, WATER, WATER, WATER ; 3e
-	tilecoll WATER, WATER, WATER, WATER ; 3f
-	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 40
--- a/tilesets/cave_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/cave_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
--- a/tilesets/celadon_mansion_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 06
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 07
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0a
-	tilecoll WALL, WALL, FLOOR, WALL ; 0b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0c
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0d
-	tilecoll WALL, WALL, FLOOR, WALL ; 0e
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0f
-	tilecoll WALL, WALL, BOOKSHELF, INCENSE_BURNER ; 10
-	tilecoll WALL, WALL, WALL, WALL ; 11
-	tilecoll WALL, WALL, BOOKSHELF, WALL ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 15
-	tilecoll STAIRCASE, STAIRCASE, FLOOR, FLOOR ; 16
-	tilecoll STAIRCASE, STAIRCASE, FLOOR, FLOOR ; 17
-	tilecoll WALL, DOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, BOOKSHELF, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1c
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1e
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1f
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 20
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 21
-	tilecoll RIGHT_WALL, LEFT_WALL, WALL, FLOOR ; 22
-	tilecoll WALL, WALL, FLOOR, WALL ; 23
-	tilecoll WALL, WALL, STAIRCASE, LEFT_WALL ; 24
-	tilecoll WALL, WALL, WALL, STAIRCASE ; 25
-	tilecoll WALL, WALL, LEFT_WALL, FLOOR ; 26
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 27
-	tilecoll WALL, WALL, DOOR, WALL ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 29
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 2a
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll RIGHT_WALL, LEFT_WALL, RIGHT_WALL, LEFT_WALL ; 2d
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll WALL, WALL, WALL, FLOOR ; 30
-	tilecoll WALL, WALL, FLOOR, WALL ; 31
-	tilecoll WALL, WALL, FLOOR, WALL ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll WALL, WALL, WALL, FLOOR ; 34
-	tilecoll WALL, WALL, WALL, WALL ; 35
-	tilecoll FLOOR, WALL, WALL, WALL ; 36
-	tilecoll WALL, WALL, FLOOR, WALL ; 37
-	tilecoll WALL, FLOOR, WALL, WALL ; 38
-	tilecoll WALL, WALL, FLOOR, WALL ; 39
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll WALL, FLOOR, WALL, WALL ; 3e
-	tilecoll FLOOR, WALL, WALL, WALL ; 3f
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 40
binary files a/tilesets/celadon_mansion_metatiles.bin /dev/null differ
--- a/tilesets/celadon_mansion_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
--- a/tilesets/data.asm
+++ /dev/null
@@ -1,429 +1,0 @@
-SECTION "Tileset Data 1", ROMX
-
-TilesetKantoGFX: ; 0x18000
-INCBIN "gfx/tilesets/kanto.2bpp.lz"
-; 0x18606
-
-TilesetKantoMeta: ; 0x18606
-INCBIN "tilesets/kanto_metatiles.bin"
-; 0x18e06
-
-TilesetKantoColl: ; 0x18e06
-INCLUDE "tilesets/kanto_collision.asm"
-; 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
-INCLUDE "tilesets/johto_1_collision.asm"
-; 0x1a60e
-
-TilesetIcePathGFX: ; 0x1a60e
-INCBIN "gfx/tilesets/ice_path.2bpp.lz"
-; 0x1af3e
-
-TilesetIcePathMeta: ; 0x1af3e
-INCBIN "tilesets/ice_path_metatiles.bin"
-; 0x1b33e
-
-TilesetIcePathColl: ; 0x1b33e
-INCLUDE "tilesets/ice_path_collision.asm"
-; 0x1b43e
-
-TilesetPlayersHouse2FGFX: ; 0x1b43e
-INCBIN "gfx/tilesets/players_house_2f.2bpp.lz"
-; 0x1b8fe
-
-TilesetPlayersHouse2FMeta: ; 0x1b8fe
-INCBIN "tilesets/players_house_2f_metatiles.bin"
-; 0x1bcfe
-
-TilesetPlayersHouse2FColl: ; 0x1bcfe
-INCLUDE "tilesets/players_house_2f_collision.asm"
-; 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
-INCLUDE "tilesets/pokecenter_collision.asm"
-; 0x1cc3c
-
-TilesetPortGFX: ; 0x1cc3c
-INCBIN "gfx/tilesets/port.2bpp.lz"
-; 0x1d04c
-
-TilesetPortMeta: ; 0x1d04c
-INCBIN "tilesets/port_metatiles.bin"
-; 0x1d44c
-
-TilesetPortColl: ; 0x1d44c
-INCLUDE "tilesets/port_collision.asm"
-; 0x1d54c
-
-TilesetPlayersHouseGFX: ; 0x1d54c
-INCBIN "gfx/tilesets/players_house.2bpp.lz"
-; 0x1d92c
-
-TilesetPlayersHouseMeta: ; 0x1d92c
-INCBIN "tilesets/players_house_metatiles.bin"
-; 0x1dd2c
-
-TilesetPlayersHouseColl: ; 0x1dd2c
-INCLUDE "tilesets/players_house_collision.asm"
-; 0x1de2c
-
-TilesetCeladonMansionGFX: ; 0x1de2c
-INCBIN "gfx/tilesets/celadon_mansion.2bpp.lz"
-; 0x1e58c
-
-TilesetCeladonMansionMeta: ; 0x1e58c
-INCBIN "tilesets/celadon_mansion_metatiles.bin"
-; 0x1e98c
-
-TilesetCeladonMansionColl: ; 0x1e98c
-INCLUDE "tilesets/celadon_mansion_collision.asm"
-; 0x1ea8c
-
-TilesetCaveGFX: ; 0x1ea8c
-INCBIN "gfx/tilesets/cave.2bpp.lz"
-; 0x1ee1c
-
-TilesetCaveMeta: ; 0x1ee1c
-TilesetWhirlIslandsMeta: ; 0x1ee1c
-INCBIN "tilesets/cave_metatiles.bin"
-; 0x1f21c
-
-TilesetCaveColl: ; 0x1f21c
-TilesetWhirlIslandsColl: ; 0x1f21c
-INCLUDE "tilesets/cave_collision.asm"
-; 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
-INCLUDE "tilesets/sprout_tower_collision.asm"
-; 0x20be1
-
-TilesetLabGFX: ; 0x20be1
-INCBIN "gfx/tilesets/lab.2bpp.lz"
-; 0x213e1
-
-TilesetLabMeta: ; 0x213e1
-INCBIN "tilesets/lab_metatiles.bin"
-; 0x217e1
-
-TilesetLabColl: ; 0x217e1
-INCLUDE "tilesets/lab_collision.asm"
-; 0x218e1
-
-TilesetMartGFX: ; 0x218e1
-INCBIN "gfx/tilesets/mart.2bpp.lz"
-; 0x22031
-
-TilesetMartMeta: ; 0x22031
-INCBIN "tilesets/mart_metatiles.bin"
-; 0x22431
-
-TilesetMartColl: ; 0x22431
-INCLUDE "tilesets/mart_collision.asm"
-; 0x22531
-
-TilesetGameCornerGFX: ; 0x22531
-INCBIN "gfx/tilesets/game_corner.2bpp.lz"
-; 0x22af1
-
-TilesetGameCornerMeta: ; 0x22af1
-INCBIN "tilesets/game_corner_metatiles.bin"
-; 0x22ef1
-
-TilesetGameCornerColl: ; 0x22ef1
-INCLUDE "tilesets/game_corner_collision.asm"
-; 0x22ff1
-
-TilesetTrainStationGFX: ; 0x22ff1
-INCBIN "gfx/tilesets/train_station.2bpp.lz"
-; 0x23391
-
-TilesetTrainStationMeta: ; 0x23391
-INCBIN "tilesets/train_station_metatiles.bin"
-; 0x23791
-
-TilesetTrainStationColl: ; 0x23791
-INCLUDE "tilesets/train_station_collision.asm"
-; 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
-INCLUDE "tilesets/gym_1_collision.asm"
-; 0x309e0
-
-TilesetParkGFX: ; 0x309e0
-INCBIN "gfx/tilesets/park.2bpp.lz"
-; 0x30e80
-
-TilesetParkMeta: ; 0x30e80
-INCBIN "tilesets/park_metatiles.bin"
-; 0x31280
-
-TilesetParkColl: ; 0x31280
-INCLUDE "tilesets/park_collision.asm"
-; 0x31380
-
-TilesetRadioTowerGFX: ; 0x31380
-INCBIN "gfx/tilesets/radio_tower.2bpp.lz"
-; 0x318e0
-
-TilesetRadioTowerMeta: ; 0x318e0
-INCBIN "tilesets/radio_tower_metatiles.bin"
-; 0x31ce0
-
-TilesetRadioTowerColl: ; 0x31ce0
-INCLUDE "tilesets/radio_tower_collision.asm"
-; 0x31de0
-
-TilesetUndergroundGFX: ; 0x31de0
-INCBIN "gfx/tilesets/underground.2bpp.lz"
-; 0x321b0
-
-TilesetUndergroundMeta: ; 0x321b0
-INCBIN "tilesets/underground_metatiles.bin"
-; 0x325b0
-
-TilesetUndergroundColl: ; 0x325b0
-INCLUDE "tilesets/underground_collision.asm"
-; 0x326b0
-
-TilesetWhirlIslandsGFX: ; 0x326b0
-INCBIN "gfx/tilesets/whirl_islands.2bpp.lz"
-; 0x329f0
-
-UnusedTilesetWhirlIslandsMeta: ; 0x329f0
-INCBIN "tilesets/unused_whirl_islands_metatiles.bin"
-; 0x331f0
-
-UnusedTilesetWhirlIslandsColl: ; 0x331f0
-INCLUDE "tilesets/unused_whirl_islands_collision.asm"
-; 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
-INCLUDE "tilesets/pokecom_center_collision.asm"
-; 0xb4da0
-
-TilesetBattleTowerGFX: ; 0xb4da0
-INCBIN "gfx/tilesets/battle_tower.2bpp.lz"
-; 0xb50e0
-
-TilesetBattleTowerMeta: ; 0xb50e0
-INCBIN "tilesets/battle_tower_metatiles.bin"
-; 0xb54e0
-
-TilesetBattleTowerColl: ; 0xb54e0
-INCLUDE "tilesets/battle_tower_collision.asm"
-; 0xb55e0
-
-TilesetGateGFX: ; 0xb55e0
-INCBIN "gfx/tilesets/gate.2bpp.lz"
-; 0xb59e0
-
-TilesetGateMeta: ; 0xb59e0
-INCBIN "tilesets/gate_metatiles.bin"
-; 0xb5de0
-
-TilesetGateColl: ; 0xb5de0
-INCLUDE "tilesets/gate_collision.asm"
-; 0xb5ee0
-
-TilesetJohto2GFX: ; 0xb5ee0
-TilesetBattleTowerOutsideGFX: ; 0xb5ee0
-INCBIN "gfx/tilesets/johto_2.2bpp.lz"
-; 0xb6ae8
-
-TilesetJohto2Meta: ; 0xb6ae8
-INCBIN "tilesets/johto_2_metatiles.bin"
-; 0xb72e8
-
-TilesetJohto2Coll: ; 0xb72e8
-INCLUDE "tilesets/johto_2_collision.asm"
-; 0xb74e8
-
-TilesetKurtsHouseGFX: ; 0xb74e8
-INCBIN "gfx/tilesets/kurts_house.2bpp.lz"
-; 0xb79a8
-
-TilesetKurtsHouseMeta: ; 0xb79a8
-INCBIN "tilesets/kurts_house_metatiles.bin"
-; 0xb7da8
-
-TilesetKurtsHouseColl: ; 0xb7da8
-INCLUDE "tilesets/kurts_house_collision.asm"
-; 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
-INCLUDE "tilesets/olivine_gym_collision.asm"
-; 0xdd150
-
-TilesetHouse1GFX: ; 0xdd150
-INCBIN "gfx/tilesets/house_1.2bpp.lz"
-; 0xdd600
-
-TilesetHouse1Meta: ; 0xdd600
-INCBIN "tilesets/house_1_metatiles.bin"
-; 0xdda00
-
-TilesetHouse1Coll: ; 0xdda00
-INCLUDE "tilesets/house_1_collision.asm"
-; 0xddb00
-
-TilesetLighthouseGFX: ; 0xddb00
-INCBIN "gfx/tilesets/lighthouse.2bpp.lz"
-; 0xddf70
-
-TilesetLighthouseMeta: ; 0xddf70
-INCBIN "tilesets/lighthouse_metatiles.bin"
-; 0xde370
-
-TilesetLighthouseColl: ; 0xde370
-INCLUDE "tilesets/lighthouse_collision.asm"
-; 0xde470
-
-TilesetIlexForestColl: ; 0xde470
-INCLUDE "tilesets/ilex_forest_collision.asm"
-; 0xde570
-
-TilesetPowerPlantGFX: ; 0xde570
-INCBIN "gfx/tilesets/power_plant.2bpp.lz"
-; 0xde990
-
-TilesetPowerPlantMeta: ; 0xde990
-INCBIN "tilesets/power_plant_metatiles.bin"
-; 0xded90
-
-TilesetPowerPlantColl: ; 0xded90
-INCLUDE "tilesets/power_plant_collision.asm"
-; 0xdee90
-
-TilesetBattleTowerOutsideMeta: ; 0xdee90
-INCBIN "tilesets/battle_tower_outside_metatiles.bin"
-; 0xdf690
-
-TilesetBattleTowerOutsideColl: ; 0xdf690
-INCLUDE "tilesets/battle_tower_outside_collision.asm"
-; 0xdf890
-
-TilesetBetaWordRoomMeta: ; 0xdf890
-INCBIN "tilesets/beta_word_room_metatiles.bin"
-; 0xdfc90
-
-TilesetBetaWordRoomColl: ; 0xdfc90
-TilesetHoOhWordRoomColl: ; 0xdfc90
-TilesetKabutoWordRoomColl: ; 0xdfc90
-TilesetOmanyteWordRoomColl: ; 0xdfc90
-TilesetAerodactylWordRoomColl: ; 0xdfc90
-INCLUDE "tilesets/beta_word_room_collision.asm"
-; 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
-INCLUDE "tilesets/ruins_of_alph_collision.asm"
-; 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/game_corner_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll COUNTER, COUNTER, COUNTER, COUNTER ; 08
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 09
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 0a
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0e
-	tilecoll WALL, WALL, WALL, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, COUNTER, COUNTER ; 11
-	tilecoll WALL, WALL, COUNTER, COUNTER ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, COUNTER, FLOOR ; 14
-	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 17
-	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 18
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 19
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1b
-	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 1c
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 1d
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 28
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
-	tilecoll WALL, WALL, FLOOR, WALL ; 2a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
-	tilecoll WALL, WALL, FLOOR, WALL ; 2c
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll WALL, WALL, FLOOR, WALL ; 30
-	tilecoll WALL, WALL, WALL, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files a/tilesets/game_corner_metatiles.bin /dev/null differ
--- a/tilesets/game_corner_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
--- a/tilesets/gate_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
-	tilecoll WALL, WALL, WALL, WALL ; 04
-	tilecoll DOOR, DOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 07
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
-	tilecoll COUNTER, COUNTER, COUNTER, FLOOR ; 09
-	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 0a
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0b
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 0c
-	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 0d
-	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 0e
-	tilecoll WALL, WALL, COUNTER, FLOOR ; 0f
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 10
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 11
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 12
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 13
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 14
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 19
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1b
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 21
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 24
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 26
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 29
-	tilecoll WALL, DOOR, FLOOR, FLOOR ; 2a
-	tilecoll DOOR, WALL, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 2c
-	tilecoll WALL, WALL, FLOOR, PC ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll DOOR, WALL, FLOOR, FLOOR ; 2f
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, COUNTER ; 31
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 32
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 33
-	tilecoll COUNTER, FLOOR, FLOOR, WALL ; 34
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 39
-	tilecoll WALL, WALL, WALL, WALL ; 3a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 3b
-	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, COUNTER, FLOOR ; 3d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 3e
-	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 3f
-	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 40
binary files a/tilesets/gate_metatiles.bin /dev/null differ
--- a/tilesets/gate_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
--- a/tilesets/gym_1_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 04
-	tilecoll WALL, WALL, WALL, FLOOR ; 05
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
-	tilecoll WALL, WALL, FLOOR, WALL ; 07
-	tilecoll WALL, WALL, WALL, WALL ; 08
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 0a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 0c
-	tilecoll WALL, FLOOR, WALL, WALL ; 0d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, WALL, WALL ; 0f
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 11
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 14
-	tilecoll WALL, WALL, WALL, WALL ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll LADDER, LADDER, FLOOR, FLOOR ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 19
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
-	tilecoll WALL, FLOOR, WALL, WALL ; 1c
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 1d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 21
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 22
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 23
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 26
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll WALL, WALL, WALL, WALL ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll ICE, ICE, ICE, FLOOR ; 2f
-	tilecoll ICE, ICE, FLOOR, ICE ; 30
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, ICE, ICE, ICE ; 32
-	tilecoll ICE, FLOOR, ICE, ICE ; 33
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 34
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 35
-	tilecoll ICE, WALL, ICE, WALL ; 36
-	tilecoll WALL, ICE, WALL, ICE ; 37
-	tilecoll WALL, WALL, WALL, WALL ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll ICE, ICE, ICE, ICE ; 3a
-	tilecoll WALL, FLOOR, FLOOR, WALL ; 3b
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll DOOR, DOOR, FLOOR, FLOOR ; 3d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3e
-	tilecoll WALL, WALL, WALL, WALL ; 3f
-	tilecoll WALL, WALL, WALL, WALL ; 40
binary files a/tilesets/gym_1_metatiles.bin /dev/null differ
--- a/tilesets/gym_1_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
--- a/tilesets/ho_oh_word_room_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, WALL, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, WALL ; 1a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- a/tilesets/ho_oh_word_room_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/ho_oh_word_room_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
--- a/tilesets/house_1_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 02
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 03
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 05
-	tilecoll WALL, WINDOW, FLOOR, FLOOR ; 06
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 07
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 08
-	tilecoll WALL, WINDOW, FLOOR, FLOOR ; 09
-	tilecoll WALL, WALL, FLOOR, BOOKSHELF ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0c
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0d
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll WALL, TOWN_MAP, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll WALL, WALL, PC, WALL ; 11
-	tilecoll WALL, WALL, WALL, FLOOR ; 12
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 13
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 15
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 16
-	tilecoll WINDOW, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, WARP_CARPET_LEFT, FLOOR ; 18
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 1a
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 1b
-	tilecoll WARP_CARPET_LEFT, FLOOR, FLOOR, FLOOR ; 1c
-	tilecoll WALL, WALL, FLOOR, PC ; 1d
-	tilecoll WALL, WALL, FLOOR, RADIO ; 1e
-	tilecoll WALL, TOWN_MAP, TV, FLOOR ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 22
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 23
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 24
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 25
-	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 27
-	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 28
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll WALL, WALL, FLOOR, WALL ; 30
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 32
-	tilecoll WALL, WINDOW, WALL, WALL ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files a/tilesets/house_1_metatiles.bin /dev/null differ
--- a/tilesets/house_1_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
--- a/tilesets/ice_path_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 04
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 05
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 06
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 08
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll WALL, FLOOR, WALL, WALL ; 0d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, WALL, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, WALL, CAVE ; 14
-	tilecoll WALL, WALL, WALL, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, WALL ; 17
-	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 18
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
-	tilecoll FLOOR, PIT, FLOOR, FLOOR ; 1c
-	tilecoll WALL, FLOOR, WALL, WALL ; 1d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1e
-	tilecoll FLOOR, WALL, WALL, WALL ; 1f
-	tilecoll ICE, ICE, ICE, ICE ; 20
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 22
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 24
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 25
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 26
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 27
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 28
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 29
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll WALL, ICE, ICE, ICE ; 2d
-	tilecoll ICE, ICE, WALL, ICE ; 2e
-	tilecoll ICE, WALL, ICE, ICE ; 2f
-	tilecoll ICE, ICE, ICE, WALL ; 30
-	tilecoll WALL, WALL, FLOOR, WALL ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WALL, WALL, WALL, FLOOR ; 33
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 39
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 3e
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 3f
-	tilecoll ICE, ICE, ICE, LADDER ; 40
--- a/tilesets/ice_path_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/ice_path_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
--- a/tilesets/ilex_forest_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll WATER, WATER, WATER, WATER ; 03
-	tilecoll WATER, WATER, WATER, WATER ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 07
-	tilecoll WATER, WATER, WATER, WATER ; 08
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, FLOOR ; 09
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 0a
-	tilecoll WATER, WATER, WATER, WATER ; 0b
-	tilecoll WATER, WATER, WATER, WATER ; 0c
-	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, FLOOR ; 0d
-	tilecoll WATER, WATER, WATER, WATER ; 0e
-	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, HEADBUTT_TREE ; 0f
-	tilecoll FLOOR, FLOOR, CUT_TREE, HEADBUTT_TREE ; 10
-	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 11
-	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 12
-	tilecoll FLOOR, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 14
-	tilecoll HEADBUTT_TREE, FLOOR, FLOOR, FLOOR ; 15
-	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, FLOOR ; 16
-	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, HEADBUTT_TREE ; 18
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 19
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 1a
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 1b
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 1c
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, DOOR ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 29
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2f
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 30
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 32
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 33
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 34
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 35
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 36
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 37
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 38
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 39
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3f
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 40
--- a/tilesets/ilex_forest_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/ilex_forest_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
--- a/tilesets/johto_1_collision.asm
+++ /dev/null
@@ -1,128 +1,0 @@
-	tilecoll 01, 01, 01, 01 ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll LADDER, LADDER, LADDER, LADDER ; 07
-	tilecoll WHIRLPOOL, BUOY, WATER, BUOY ; 08
-	tilecoll WALL, WALL, WALL, WALL ; 09
-	tilecoll WALL, WALL, WALL, WALL ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 0d
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 0e
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, WALL, WALL ; 11
-	tilecoll WALL, WALL, WALL, WALL ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WALL, WALL, DOOR ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll WALL, WALL, WALL, DOOR ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, DOOR ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, DOOR, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, DOOR, WALL ; 28
-	tilecoll WALL, WALL, WALL, DOOR ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 2b
-	tilecoll WALL, WALL, WALL, WALL ; 2c
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 2d
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, DOOR ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll BUOY, BUOY, BUOY, WATER ; 31
-	tilecoll BUOY, BUOY, WATER, WATER ; 32
-	tilecoll BUOY, BUOY, WATER, BUOY ; 33
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 34
-	tilecoll BUOY, WATER, BUOY, WATER ; 35
-	tilecoll WATER, WATER, WATER, WATER ; 36
-	tilecoll WATER, BUOY, WATER, BUOY ; 37
-	tilecoll WALL, WALL, WALL, DOOR ; 38
-	tilecoll BUOY, WATER, BUOY, BUOY ; 39
-	tilecoll WATER, WATER, BUOY, BUOY ; 3a
-	tilecoll WATER, BUOY, BUOY, BUOY ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll HEADBUTT_TREE, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, HEADBUTT_TREE ; 40
-	tilecoll WALL, WALL, WALL, FLOOR ; 41
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 42
-	tilecoll WALL, WALL, FLOOR, WALL ; 43
-	tilecoll WATER, WATER, WATER, WATER ; 44
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 45
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 46
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 47
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 48
-	tilecoll WALL, FLOOR, WALL, WALL ; 49
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 4a
-	tilecoll FLOOR, WALL, WALL, WALL ; 4b
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 4c
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4d
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 4e
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4f
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 50
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 51
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 52
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 53
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 54
-	tilecoll WATER, WATER, WATER, WATER ; 55
-	tilecoll WATER, WATER, WATER, WATER ; 56
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 57
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 58
-	tilecoll WATER, WATER, WATER, WATER ; 59
-	tilecoll WATER, WATER, WATER, WATER ; 5a
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 5b
-	tilecoll HEADBUTT_TREE, CUT_TREE, FLOOR, FLOOR ; 5c
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, FLOOR ; 5d
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 5e
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, HEADBUTT_TREE ; 5f
-	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, CUT_TREE ; 60
-	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, FLOOR ; 61
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 62
-	tilecoll FLOOR, HEADBUTT_TREE, FLOOR, HEADBUTT_TREE ; 63
-	tilecoll FLOOR, FLOOR, CUT_TREE, HEADBUTT_TREE ; 64
-	tilecoll HEADBUTT_TREE, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 65
-	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 66
-	tilecoll FLOOR, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 67
-	tilecoll CUT_TREE, FLOOR, HEADBUTT_TREE, FLOOR ; 68
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 69
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 6a
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 6b
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 6c
-	tilecoll WALL, FLOOR, WALL, WALL ; 6d
-	tilecoll FLOOR, WALL, WALL, WALL ; 6e
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 71
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 73
-	tilecoll FLOOR, FLOOR, CAVE, WALL ; 74
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 75
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 76
-	tilecoll WATER, WATER, WATER, WATER ; 77
-	tilecoll WALL, WALL, DOOR, WALL ; 78
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 79
-	tilecoll WATER, WATER, WATER, WATER ; 7a
-	tilecoll WATER, WATER, WATER, WATER ; 7b
-	tilecoll WALL, WALL, WALL, WALL ; 7c
-	tilecoll WALL, WALL, WALL, WALL ; 7d
-	tilecoll WALL, WALL, WALL, WALL ; 7e
-	tilecoll WALL, WALL, WALL, WALL ; 7f
-	tilecoll WALL, WALL, WALL, WALL ; 80
binary files a/tilesets/johto_1_metatiles.bin /dev/null differ
--- a/tilesets/johto_1_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
--- a/tilesets/johto_2_collision.asm
+++ /dev/null
@@ -1,128 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, WALL, WALL ; 09
-	tilecoll WALL, WALL, WALL, WALL ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 0d
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 0e
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, WALL, WALL ; 11
-	tilecoll WALL, WALL, WALL, WALL ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WALL, WALL, DOOR ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll WALL, WALL, WALL, DOOR ; 17
-	tilecoll WALL, WALL, DOOR, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, DOOR ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, DOOR, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, DOOR, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll WALL, WALL, WALL, WALL ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, WALL, DOOR ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, FLOOR, FLOOR ; 30
-	tilecoll BUOY, BUOY, BUOY, WATER ; 31
-	tilecoll BUOY, BUOY, WATER, WATER ; 32
-	tilecoll BUOY, BUOY, WATER, BUOY ; 33
-	tilecoll WALL, WALL, WALL, WALL ; 34
-	tilecoll BUOY, WATER, BUOY, WATER ; 35
-	tilecoll WATER, WATER, WATER, WATER ; 36
-	tilecoll WATER, BUOY, WATER, BUOY ; 37
-	tilecoll HEADBUTT_TREE, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll BUOY, WATER, BUOY, BUOY ; 39
-	tilecoll WATER, WATER, BUOY, BUOY ; 3a
-	tilecoll WATER, BUOY, BUOY, BUOY ; 3b
-	tilecoll FLOOR, FLOOR, HEADBUTT_TREE, HEADBUTT_TREE ; 3c
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 3d
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, WALL, WALL ; 3e
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3f
-	tilecoll HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE, HEADBUTT_TREE ; 40
-	tilecoll WALL, WALL, WALL, FLOOR ; 41
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 42
-	tilecoll WALL, WALL, FLOOR, WALL ; 43
-	tilecoll WATER, WATER, WATER, WATER ; 44
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 45
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 46
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 47
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 48
-	tilecoll WALL, FLOOR, WALL, WALL ; 49
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 4a
-	tilecoll FLOOR, WALL, WALL, WALL ; 4b
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 4c
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4d
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 4e
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4f
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 50
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 51
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 52
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 53
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 54
-	tilecoll WATER, WATER, WATER, WATER ; 55
-	tilecoll WATER, WATER, WATER, WATER ; 56
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 57
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 58
-	tilecoll WATER, WATER, WATER, WATER ; 59
-	tilecoll WATER, WATER, WATER, WATER ; 5a
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 5b
-	tilecoll WALL, WALL, WALL, CAVE ; 5c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 5d
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 5e
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 5f
-	tilecoll WALL, WALL, WALL, WALL ; 60
-	tilecoll WATER, WATER, WALL, WALL ; 61
-	tilecoll WATER, WATER, WALL, WALL ; 62
-	tilecoll WATER, WATER, WALL, WALL ; 63
-	tilecoll WATER, WATER, WATER, WATER ; 64
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 65
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 66
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 67
-	tilecoll WALL, WALL, WALL, WALL ; 68
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 69
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 6a
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 6b
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 6c
-	tilecoll WALL, FLOOR, WALL, WALL ; 6d
-	tilecoll FLOOR, WALL, WALL, WALL ; 6e
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 71
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 73
-	tilecoll FLOOR, FLOOR, WALL, CAVE ; 74
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 75
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 76
-	tilecoll WATER, WATER, WATER, WATER ; 77
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 78
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 79
-	tilecoll WATER, WATER, WATER, WATER ; 7a
-	tilecoll WATER, WATER, WATER, WATER ; 7b
-	tilecoll WALL, WALL, WALL, WALL ; 7c
-	tilecoll WALL, WALL, WALL, WALL ; 7d
-	tilecoll WALL, WALL, WALL, WALL ; 7e
-	tilecoll WALL, WALL, WALL, WALL ; 7f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 80
binary files a/tilesets/johto_2_metatiles.bin /dev/null differ
--- a/tilesets/johto_2_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
--- a/tilesets/kabuto_word_room_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, WALL, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, WALL ; 1a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- a/tilesets/kabuto_word_room_metatiles.bin
+++ /dev/null
@@ -1,17 +1,0 @@
-���ɼ��������ͬ��ݼ��Æ��Ӗ������Ŏ��՞��������������È��Ә������������������������Ø��������������������ǎ��מ�����	
-
-
- !"#��������@ABC	89
-
-
-
-
-
-
-
-
-
-
-TVXY	
-C 6!@	#8
-6"7������
\ No newline at end of file
--- a/tilesets/kabuto_word_room_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
--- a/tilesets/kanto_collision.asm
+++ /dev/null
@@ -1,128 +1,0 @@
-	tilecoll CUT_TREE, CUT_TREE, CUT_TREE, CUT_TREE ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, WALL, DOOR ; 03
-	tilecoll WALL, WALL, WALL, WALL ; 04
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 05
-	tilecoll LADDER, LADDER, LADDER, LADDER ; 06
-	tilecoll FLOOR, FLOOR, CAVE, WALL ; 07
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 09
-	tilecoll WALL, WALL, WALL, WALL ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 0c
-	tilecoll WALL, WALL, WALL, WALL ; 0d
-	tilecoll WALL, WALL, WALL, WALL ; 0e
-	tilecoll WALL, WALL, WALL, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, WALL, WALL ; 11
-	tilecoll WALL, WALL, WALL, WALL ; 12
-	tilecoll WALL, WALL, DOOR, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WATER, WALL, WALL ; 15
-	tilecoll WATER, WALL, WALL, WALL ; 16
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 17
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 18
-	tilecoll WALL, WATER, WALL, WATER ; 19
-	tilecoll WATER, WALL, WATER, WALL ; 1a
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 1b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1d
-	tilecoll WATER, WATER, WATER, WATER ; 1e
-	tilecoll WATER, WATER, WATER, WATER ; 1f
-	tilecoll WATER, WATER, WATER, WATER ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll WALL, FLOOR, WALL, WALL ; 25
-	tilecoll FLOOR, WALL, WALL, WALL ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 29
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 2a
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll WATER, WATER, WATER, WATER ; 2e
-	tilecoll WATER, WATER, WATER, WATER ; 2f
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 30
-	tilecoll WALL, WALL, WALL, WALL ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll WALL, CUT_TREE, WALL, FLOOR ; 33
-	tilecoll WALL, WALL, FLOOR, CUT_TREE ; 34
-	tilecoll CUT_TREE, FLOOR, WALL, WALL ; 35
-	tilecoll FLOOR, CUT_TREE, WALL, FLOOR ; 36
-	tilecoll WALL, WALL, FLOOR, WALL ; 37
-	tilecoll WALL, WALL, WALL, WALL ; 38
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 39
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 3a
-	tilecoll WALL, WALL, DOOR, WALL ; 3b
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 3c
-	tilecoll WALL, WALL, WALL, DOOR ; 3d
-	tilecoll WALL, WALL, WALL, WALL ; 3e
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 3f
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 40
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 41
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 42
-	tilecoll HOP_DOWN, WALL, WALL, WALL ; 43
-	tilecoll WATER, WATER, WATER, WATER ; 44
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 45
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 46
-	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 47
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 48
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 49
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 4a
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 4b
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 4c
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 4d
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 4e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 4f
-	tilecoll FLOOR, WALL, WALL, WALL ; 50
-	tilecoll WALL, FLOOR, WALL, WALL ; 51
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 52
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 53
-	tilecoll WALL, WALL, WALL, DOOR ; 54
-	tilecoll WALL, WALL, WALL, WALL ; 55
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 56
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 57
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 58
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 59
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 5a
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 5b
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 5c
-	tilecoll FLOOR, HOP_DOWN, FLOOR, WALL ; 5d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 5f
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 60
-	tilecoll FLOOR, WALL, CUT_TREE, WALL ; 61
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 62
-	tilecoll WALL, WALL, WALL, FLOOR ; 63
-	tilecoll WALL, WALL, FLOOR, WALL ; 64
-	tilecoll WATER, WATER, WATER, WATER ; 65
-	tilecoll WATER, WATER, WATER, WATER ; 66
-	tilecoll WALL, WALL, WALL, WALL ; 67
-	tilecoll WALL, WATER, WALL, WATER ; 68
-	tilecoll WALL, WALL, WALL, WALL ; 69
-	tilecoll WALL, WALL, WALL, WALL ; 6a
-	tilecoll WATER, WALL, WATER, WALL ; 6b
-	tilecoll WATER, WATER, WALL, WALL ; 6c
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 6d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 6e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 6f
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 70
-	tilecoll FLOOR, WALL, CAVE, WALL ; 71
-	tilecoll WALL, WALL, WALL, WALL ; 72
-	tilecoll WALL, WALL, WALL, WALL ; 73
-	tilecoll WALL, WALL, WALL, WALL ; 74
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 75
-	tilecoll WALL, WALL, WALL, WALL ; 76
-	tilecoll WALL, WALL, WALL, WALL ; 77
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 78
-	tilecoll WATER, WATER, WATER, WATER ; 79
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 7a
-	tilecoll WALL, WALL, WALL, WALL ; 7b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 7c
-	tilecoll WALL, WALL, WALL, DOOR ; 7d
-	tilecoll WALL, WALL, WALL, WALL ; 7e
-	tilecoll WALL, WALL, WALL, WALL ; 7f
-	tilecoll WALL, WALL, WALL, WALL ; 80
binary files a/tilesets/kanto_metatiles.bin /dev/null differ
--- a/tilesets/kanto_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
--- a/tilesets/kurts_house_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, RADIO, FLOOR ; 02
-	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 03
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 07
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
-	tilecoll WALL, WALL, WALL, WALL ; 0a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 0c
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 13
-	tilecoll WALL, WALL, INCENSE_BURNER, BOOKSHELF ; 14
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 15
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 16
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 1a
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 1b
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 1c
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1e
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 22
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 23
-	tilecoll WALL, WALL, RADIO, FLOOR ; 24
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 25
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 27
-	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, HOP_DOWN, HOP_DOWN ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 30
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll WALL, WALL, WALL, FLOOR ; 34
-	tilecoll WALL, WALL, WALL, FLOOR ; 35
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 36
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll WALL, WALL, FLOOR, WALL ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 39
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 3a
-	tilecoll 04, 03, 03, 03 ; 3b
-	tilecoll 03, 03, 03, 03 ; 3c
-	tilecoll 03, 03, 04, 04 ; 3d
-	tilecoll 04, 04, 04, 04 ; 3e
-	tilecoll 03, 03, 03, 03 ; 3f
-	tilecoll WARP_CARPET_DOWN, 04, 03, 03 ; 40
binary files a/tilesets/kurts_house_metatiles.bin /dev/null differ
--- a/tilesets/kurts_house_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
--- a/tilesets/lab_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 03
-	tilecoll WALL, WALL, WALL, WALL ; 04
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 05
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 07
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 08
-	tilecoll WALL, WALL, WALL, WALL ; 09
-	tilecoll WINDOW, WALL, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 0f
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 13
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 15
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 1a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 20
-	tilecoll WINDOW, WINDOW, FLOOR, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files a/tilesets/lab_metatiles.bin /dev/null differ
--- a/tilesets/lab_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
--- a/tilesets/lighthouse_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll WALL, WALL, WALL, WALL ; 03
-	tilecoll WALL, WALL, WALL, WALL ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 0a
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll WALL, WALL, WALL, WALL ; 0d
-	tilecoll WALL, WALL, WALL, WALL ; 0e
-	tilecoll WALL, WALL, WALL, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll 9C, FLOOR, COUNTER, FLOOR ; 11
-	tilecoll WALL, WALL, WALL, WALL ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WARP_CARPET_DOWN, WALL, WALL ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll 9C, FLOOR, COUNTER, FLOOR ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 19
-	tilecoll WALL, WALL, WALL, STAIRCASE ; 1a
-	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 1b
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 21
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 22
-	tilecoll WALL, FLOOR, WALL, WALL ; 23
-	tilecoll FLOOR, WALL, WALL, WALL ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, PIT, PIT ; 29
-	tilecoll WALL, WALL, WINDOW, WINDOW ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2f
-	tilecoll WALL, WALL, WALL, BOOKSHELF ; 30
-	tilecoll WALL, WALL, FLOOR, WALL ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 34
-	tilecoll WALL, WALL, PC, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 36
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
-	tilecoll WALL, WALL, WALL, WALL ; 38
-	tilecoll WALL, WALL, FLOOR, WALL ; 39
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, WALL, WALL, WALL ; 3d
-	tilecoll WALL, WALL, WINDOW, WALL ; 3e
-	tilecoll WALL, WALL, WALL, WALL ; 3f
-	tilecoll WALL, WALL, WALL, WALL ; 40
binary files a/tilesets/lighthouse_metatiles.bin /dev/null differ
--- a/tilesets/lighthouse_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
--- a/tilesets/mart_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 02
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 03
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 07
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 09
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0a
-	tilecoll WALL, WALL, COUNTER, FLOOR ; 0b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 0c
-	tilecoll FLOOR, COUNTER, FLOOR, FLOOR ; 0d
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 0e
-	tilecoll COUNTER, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, WALL, WALL, WALL ; 10
-	tilecoll COUNTER, COUNTER, COUNTER, FLOOR ; 11
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, MART_SHELF, FLOOR, MART_SHELF ; 13
-	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 14
-	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 15
-	tilecoll WALL, WALL, MART_SHELF, MART_SHELF ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 18
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 1a
-	tilecoll COUNTER, COUNTER, COUNTER, FLOOR ; 1b
-	tilecoll COUNTER, COUNTER, FLOOR, COUNTER ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 1f
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 20
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 23
-	tilecoll FLOOR, MART_SHELF, FLOOR, MART_SHELF ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 26
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
-	tilecoll WALL, WALL, COUNTER, MART_SHELF ; 28
-	tilecoll FLOOR, MART_SHELF, FLOOR, MART_SHELF ; 29
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll COUNTER, COUNTER, FLOOR, MART_SHELF ; 2d
-	tilecoll FLOOR, MART_SHELF, COUNTER, COUNTER ; 2e
-	tilecoll COUNTER, FLOOR, COUNTER, COUNTER ; 2f
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 30
-	tilecoll WALL, WALL, WALL, WALL ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll WALL, FLOOR, WALL, WALL ; 34
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 35
-	tilecoll FLOOR, WALL, WALL, WALL ; 36
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, STAIRCASE ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, WALL, WALL, WALL ; 3d
-	tilecoll WALL, WALL, WALL, WALL ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll WALL, WALL, WALL, WALL ; 40
--- a/tilesets/mart_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/mart_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
--- a/tilesets/olivine_gym_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, FLOOR, WALL ; 02
-	tilecoll WALL, WALL, WALL, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 04
-	tilecoll WALL, WALL, WALL, WALL ; 05
-	tilecoll WALL, WALL, COUNTER, FLOOR ; 06
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 07
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 09
-	tilecoll WALL, FLOOR, FLOOR, WALL ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll WALL, WALL, LADDER, LADDER ; 0c
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0d
-	tilecoll WALL, WALL, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll WALL, WALL, WALL, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll WALL, WALL, FLOOR, WALL ; 14
-	tilecoll WALL, FLOOR, WALL, WALL ; 15
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 16
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 19
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 1d
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 1e
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
-	tilecoll WALL, FLOOR, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, WALL, WALL, WALL ; 23
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 24
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 30
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 35
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 36
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
-	tilecoll FLOOR, WALL, WALL, WALL ; 38
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 39
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 3a
-	tilecoll WALL, WALL, WALL, WALL ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll WALL, FLOOR, WALL, WALL ; 3f
-	tilecoll FLOOR, WALL, WALL, WALL ; 40
--- a/tilesets/olivine_gym_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/olivine_gym_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
--- a/tilesets/omanyte_word_room_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, WALL, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, WALL ; 1a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- a/tilesets/omanyte_word_room_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/omanyte_word_room_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
--- a/tilesets/palette_maps.asm
+++ /dev/null
@@ -1,130 +1,0 @@
-TilesetKantoPalMap: ; 0x4c075
-INCLUDE "tilesets/kanto_palette_map.asm"
-; 0x4c0e5
-
-Tileset0PalMap: ; 0x4c0e5
-TilesetJohto1PalMap: ; 0x4c0e5
-INCLUDE "tilesets/johto_1_palette_map.asm"
-; 0x4c155
-
-TilesetJohto2PalMap: ; 0x4c155
-INCLUDE "tilesets/johto_2_palette_map.asm"
-; 0x4c1c5
-
-TilesetHouse1PalMap: ; 0x4c1c5
-INCLUDE "tilesets/house_1_palette_map.asm"
-; 0x4c235
-
-TilesetPlayersHousePalMap: ; 0x4c235
-INCLUDE "tilesets/players_house_palette_map.asm"
-; 0x4c2a5
-
-TilesetPokecenterPalMap: ; 0x4c2a5
-INCLUDE "tilesets/pokecenter_palette_map.asm"
-; 0x4c315
-
-TilesetGatePalMap: ; 0x4c315
-INCLUDE "tilesets/gate_palette_map.asm"
-; 0x4c385
-
-TilesetPortPalMap: ; 0x4c385
-INCLUDE "tilesets/port_palette_map.asm"
-; 0x4c3f5
-
-TilesetLabPalMap: ; 0x4c3f5
-INCLUDE "tilesets/lab_palette_map.asm"
-; 0x4c465
-
-TilesetPowerPlantPalMap: ; 0x4c465
-INCLUDE "tilesets/power_plant_palette_map.asm"
-; 0x4c4d5
-
-TilesetMartPalMap: ; 0x4c4d5
-INCLUDE "tilesets/mart_palette_map.asm"
-; 0x4c545
-
-TilesetCeladonMansionPalMap: ; 0x4c545
-INCLUDE "tilesets/celadon_mansion_palette_map.asm"
-; 0x4c5b5
-
-TilesetGameCornerPalMap: ; 0x4c5b5
-INCLUDE "tilesets/game_corner_palette_map.asm"
-; 0x4c625
-
-TilesetGym1PalMap: ; 0x4c625
-INCLUDE "tilesets/gym_1_palette_map.asm"
-; 0x4c695
-
-TilesetKurtsHousePalMap: ; 0x4c695
-INCLUDE "tilesets/kurts_house_palette_map.asm"
-; 0x4c705
-
-TilesetSproutTowerPalMap: ; 0x4c705
-INCLUDE "tilesets/sprout_tower_palette_map.asm"
-; 0x4c775
-
-TilesetCavePalMap: ; 0x4c775
-TilesetWhirlIslandsPalMap: ; 0x4c775
-INCLUDE "tilesets/cave_palette_map.asm"
-; 0x4c7e5
-
-TilesetParkPalMap: ; 0x4c7e5
-INCLUDE "tilesets/park_palette_map.asm"
-; 0x4c855
-
-TilesetRuinsOfAlphPalMap: ; 0x4c855
-TilesetBetaWordRoomPalMap: ; 0x4c855
-TilesetHoOhWordRoomPalMap: ; 0x4c855
-TilesetKabutoWordRoomPalMap: ; 0x4c855
-TilesetOmanyteWordRoomPalMap: ; 0x4c855
-TilesetAerodactylWordRoomPalMap: ; 0x4c855
-INCLUDE "tilesets/ruins_of_alph_palette_map.asm"
-; 0x4c8c5
-
-TilesetRadioTowerPalMap: ; 0x4c8c5
-INCLUDE "tilesets/radio_tower_palette_map.asm"
-; 0x4c935
-
-TilesetTrainStationPalMap: ; 0x4c935
-INCLUDE "tilesets/train_station_palette_map.asm"
-; 0x4c9a5
-
-TilesetUndergroundPalMap: ; 0x4c9a5
-INCLUDE "tilesets/underground_palette_map.asm"
-; 0x4ca15
-
-TilesetOlivineGymPalMap: ; 0x4ca15
-INCLUDE "tilesets/olivine_gym_palette_map.asm"
-; 0x4ca85
-
-TilesetLighthousePalMap: ; 0x4ca85
-INCLUDE "tilesets/lighthouse_palette_map.asm"
-; 0x4caf5
-
-TilesetPlayersHouse2FPalMap: ; 0x4caf5
-INCLUDE "tilesets/players_house_2f_palette_map.asm"
-; 0x4cb65
-
-UnusedMuseumPalMap: ; 0x4cb65
-INCLUDE "tilesets/unused_museum_palette_map.asm"
-; 4cbd5
-
-TilesetIcePathPalMap: ; 0x4cbd5
-INCLUDE "tilesets/ice_path_palette_map.asm"
-; 0x4cc45
-
-TilesetIlexForestPalMap: ; 0x4cc45
-INCLUDE "tilesets/ilex_forest_palette_map.asm"
-; 0x4ccb5
-
-TilesetPokeComCenterPalMap: ; 0x4ccb5
-INCLUDE "tilesets/pokecom_center_palette_map.asm"
-; 0x4cd25
-
-TilesetBattleTowerPalMap: ; 0x4cd25
-INCLUDE "tilesets/battle_tower_palette_map.asm"
-; 0x4cd95
-
-TilesetBattleTowerOutsidePalMap: ; 0x4cd95
-INCLUDE "tilesets/battle_tower_outside_palette_map.asm"
-; 0x4ce05
--- a/tilesets/park_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll WALL, WALL, WALL, WALL ; 07
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 08
-	tilecoll WALL, WALL, WALL, WALL ; 09
-	tilecoll WALL, WALL, WALL, WALL ; 0a
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0b
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0c
-	tilecoll WALL, WALL, WALL, WALL ; 0d
-	tilecoll WALL, WALL, WALL, WALL ; 0e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0f
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll WALL, WALL, WALL, FLOOR ; 11
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
-	tilecoll WALL, WALL, FLOOR, WALL ; 13
-	tilecoll LONG_GRASS, LONG_GRASS, LONG_GRASS, LONG_GRASS ; 14
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 15
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 16
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 17
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 18
-	tilecoll WALL, FLOOR, WALL, WALL ; 19
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 1a
-	tilecoll FLOOR, WALL, WALL, WALL ; 1b
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1c
-	tilecoll WALL, WALL, WALL, FLOOR ; 1d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, FLOOR, WALL ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 20
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll WALL, FLOOR, WALL, WALL ; 25
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 26
-	tilecoll FLOOR, WALL, WALL, WALL ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 30
-	tilecoll WALL, WALL, WALL, WALL ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll LONG_GRASS, LONG_GRASS, LONG_GRASS, LONG_GRASS ; 34
-	tilecoll WALL, WALL, WALL, WALL ; 35
-	tilecoll WALL, WALL, WALL, WALL ; 36
-	tilecoll WALL, WALL, WALL, WALL ; 37
-	tilecoll WALL, WALL, WALL, WALL ; 38
-	tilecoll WALL, WALL, WALL, WALL ; 39
-	tilecoll WALL, WALL, WALL, WALL ; 3a
-	tilecoll WALL, WALL, WALL, WALL ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, WALL, WALL, WALL ; 3d
-	tilecoll WALL, WALL, WALL, WALL ; 3e
-	tilecoll WALL, WALL, WALL, WALL ; 3f
-	tilecoll LONG_GRASS, LONG_GRASS, LONG_GRASS, LONG_GRASS ; 40
binary files a/tilesets/park_metatiles.bin /dev/null differ
--- a/tilesets/park_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
--- a/tilesets/players_house_2f_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 03
-	tilecoll WALL, WALL, TV, BOOKSHELF ; 04
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 15
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 16
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 17
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 18
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 19
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1f
-	tilecoll TOWN_MAP, STAIRCASE, FLOOR, FLOOR ; 20
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 21
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 23
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 24
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 25
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 26
-	tilecoll FF, FF, FF, FF ; 27
-	tilecoll FF, FF, FF, FF ; 28
-	tilecoll FF, FF, FF, FF ; 29
-	tilecoll FF, FF, FF, FF ; 2a
-	tilecoll FF, FF, FF, FF ; 2b
-	tilecoll FF, FF, FF, FF ; 2c
-	tilecoll FF, FF, FF, FF ; 2d
-	tilecoll FF, FF, FF, FF ; 2e
-	tilecoll FF, FF, FF, FF ; 2f
-	tilecoll FF, FF, FF, FF ; 30
-	tilecoll FF, FF, FF, FF ; 31
-	tilecoll FF, FF, FF, FF ; 32
-	tilecoll FF, FF, FF, FF ; 33
-	tilecoll FF, FF, FF, FF ; 34
-	tilecoll FF, FF, FF, FF ; 35
-	tilecoll FF, FF, FF, FF ; 36
-	tilecoll FF, FF, FF, FF ; 37
-	tilecoll FF, FF, FF, FF ; 38
-	tilecoll FF, FF, FF, FF ; 39
-	tilecoll FF, FF, FF, FF ; 3a
-	tilecoll FF, FF, FF, FF ; 3b
-	tilecoll FF, FF, FF, FF ; 3c
-	tilecoll FF, FF, FF, FF ; 3d
-	tilecoll FF, FF, FF, FF ; 3e
-	tilecoll FF, FF, FF, FF ; 3f
-	tilecoll FF, FF, FF, FF ; 40
binary files a/tilesets/players_house_2f_metatiles.bin /dev/null differ
--- a/tilesets/players_house_2f_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
--- a/tilesets/players_house_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WINDOW, WALL, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, FLOOR, TV ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, WALL, WALL ; 05
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 07
-	tilecoll WALL, WALL, WALL, WALL ; 08
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 09
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 0a
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 0b
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0d
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, PC, FLOOR ; 11
-	tilecoll WALL, WALL, TV, WALL ; 12
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 13
-	tilecoll FLOOR, TV, FLOOR, WALL ; 14
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 15
-	tilecoll WALL, WALL, FLOOR, WALL ; 16
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 17
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, RADIO, PC ; 19
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
-	tilecoll WALL, WALL, RADIO, FLOOR ; 1b
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 1c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, VIRTUAL_BOY, FLOOR ; 1f
-	tilecoll WALL, WALL, PC, RADIO ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, TV, BOOKSHELF ; 22
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 23
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 24
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 25
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 26
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 27
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files a/tilesets/players_house_metatiles.bin /dev/null differ
--- a/tilesets/players_house_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
--- a/tilesets/pokecenter_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll WALL, WALL, WALL, FLOOR ; 03
-	tilecoll WALL, WALL, FLOOR, WALL ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 06
-	tilecoll WALL, COUNTER, FLOOR, FLOOR ; 07
-	tilecoll COUNTER, WALL, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, PC ; 09
-	tilecoll WALL, WALL, FLOOR, WALL ; 0a
-	tilecoll WALL, DOOR, FLOOR, FLOOR ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0d
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0e
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 0f
-	tilecoll WALL, WALL, FLOOR, WALL ; 10
-	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 12
-	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 13
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 15
-	tilecoll WALL, DOOR, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, FLOOR, WALL ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, WALL ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1f
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, FLOOR, PC ; 22
-	tilecoll WALL, WALL, WALL, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 25
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 26
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 28
-	tilecoll WALL, WALL, FLOOR, WALL ; 29
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll WALL, WALL, WALL, FLOOR ; 2b
-	tilecoll WALL, DOOR, FLOOR, FLOOR ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2f
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 30
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 31
-	tilecoll WALL, WALL, FLOOR, WALL ; 32
-	tilecoll PC, WALL, FLOOR, WALL ; 33
-	tilecoll FLOOR, WARP_PANEL, FLOOR, FLOOR ; 34
-	tilecoll DOOR, WALL, FLOOR, FLOOR ; 35
-	tilecoll DOOR, WALL, FLOOR, WALL ; 36
-	tilecoll DOOR, WALL, FLOOR, FLOOR ; 37
-	tilecoll DOOR, WALL, FLOOR, WALL ; 38
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 39
-	tilecoll WALL, WALL, FLOOR, WALL ; 3a
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll WALL, WALL, FLOOR, WALL ; 3c
-	tilecoll WARP_PANEL, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll WARP_PANEL, FLOOR, FLOOR, FLOOR ; 3e
-	tilecoll WARP_PANEL, WARP_PANEL, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, WARP_PANEL, FLOOR, FLOOR ; 40
binary files a/tilesets/pokecenter_metatiles.bin /dev/null differ
--- a/tilesets/pokecenter_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
--- a/tilesets/pokecom_center_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 03
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, WALL, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll WALL, WALL, WALL, FLOOR ; 07
-	tilecoll WALL, WALL, FLOOR, PC ; 08
-	tilecoll WALL, WALL, WALL, FLOOR ; 09
-	tilecoll WALL, COUNTER, FLOOR, FLOOR ; 0a
-	tilecoll WALL, COUNTER, FLOOR, FLOOR ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll WALL, WALL, FLOOR, WALL ; 0d
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 0f
-	tilecoll WALL, WALL, FLOOR, WALL ; 10
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 11
-	tilecoll WALL, WALL, WALL, FLOOR ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WALL, WALL, WALL ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, WALL, WALL ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, FLOOR, WALL ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 2d
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll WALL, WALL, WALL, WALL ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 34
-	tilecoll WALL, WALL, WALL, WALL ; 35
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 36
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 38
-	tilecoll WALL, WALL, WALL, WALL ; 39
-	tilecoll WALL, WALL, WALL, WALL ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 3c
-	tilecoll WALL, WALL, WALL, WALL ; 3d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 3e
-	tilecoll WALL, WALL, WALL, WALL ; 3f
-	tilecoll WALL, WALL, WALL, WALL ; 40
--- a/tilesets/pokecom_center_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/pokecom_center_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
--- a/tilesets/port_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll BUOY, WATER, BUOY, WATER ; 03
-	tilecoll WATER, BUOY, WATER, BUOY ; 04
-	tilecoll LADDER, LADDER, LADDER, LADDER ; 05
-	tilecoll WALL, WALL, WALL, WATER ; 06
-	tilecoll WALL, WALL, WATER, WATER ; 07
-	tilecoll WALL, WALL, WATER, WALL ; 08
-	tilecoll WATER, WATER, WATER, WATER ; 09
-	tilecoll WALL, WATER, WALL, WATER ; 0a
-	tilecoll WATER, WATER, WATER, WATER ; 0b
-	tilecoll WATER, WALL, WATER, WALL ; 0c
-	tilecoll WATER, WATER, FLOOR, FLOOR ; 0d
-	tilecoll WALL, WATER, WALL, WALL ; 0e
-	tilecoll WATER, WATER, WALL, WALL ; 0f
-	tilecoll WATER, WALL, WALL, WALL ; 10
-	tilecoll WATER, WATER, WATER, WATER ; 11
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 12
-	tilecoll WATER, WATER, WATER, WATER ; 13
-	tilecoll WATER, FLOOR, WATER, FLOOR ; 14
-	tilecoll WATER, FLOOR, WATER, FLOOR ; 15
-	tilecoll WATER, WATER, WATER, WATER ; 16
-	tilecoll WATER, WATER, WATER, WATER ; 17
-	tilecoll WATER, FLOOR, WALL, WARP_CARPET_DOWN ; 18
-	tilecoll WATER, WATER, WALL, WALL ; 19
-	tilecoll WATER, FLOOR, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, WALL ; 1b
-	tilecoll WALL, WATER, WALL, WALL ; 1c
-	tilecoll WATER_21, WATER_21, WALL, WALL ; 1d
-	tilecoll WATER_21, WATER_21, WALL, WALL ; 1e
-	tilecoll WATER_21, WATER_21, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WATER ; 20
-	tilecoll WALL, FLOOR, WATER, WARP_CARPET_DOWN ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 22
-	tilecoll BUOY, BUOY, BUOY, WATER ; 23
-	tilecoll BUOY, BUOY, WATER, BUOY ; 24
-	tilecoll BUOY, BUOY, WATER, WATER ; 25
-	tilecoll BUOY, BUOY, WATER, WATER ; 26
-	tilecoll LADDER, LADDER, LADDER, LADDER ; 27
-	tilecoll FLOOR, FLOOR, WATER, WATER ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, WATER ; 29
-	tilecoll FLOOR, FLOOR, WATER, FLOOR ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2c
-	tilecoll FLOOR, WATER, FLOOR, FLOOR ; 2d
-	tilecoll WATER, FLOOR, FLOOR, FLOOR ; 2e
-	tilecoll FLOOR, WATER, FLOOR, WATER ; 2f
-	tilecoll WATER, FLOOR, WATER, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, WATER, WATER ; 31
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 34
-	tilecoll FLOOR, WATER, FLOOR, WATER ; 35
-	tilecoll WALL, WALL, FLOOR, LADDER ; 36
-	tilecoll WATER, WATER, WATER, WATER ; 37
-	tilecoll FLOOR, WATER, FLOOR, WATER ; 38
-	tilecoll WATER, FLOOR, WATER, FLOOR ; 39
-	tilecoll WATER, WATER, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3b
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3c
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 40
--- a/tilesets/port_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/port_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
--- a/tilesets/power_plant_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, WALL, WALL ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 06
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 09
-	tilecoll WALL, WALL, WALL, FLOOR ; 0a
-	tilecoll WALL, WALL, FLOOR, WALL ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 0e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 15
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 16
-	tilecoll WALL, WALL, WALL, WALL ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, FLOOR ; 1b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 1f
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 20
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 21
-	tilecoll WALL, WALL, WALL, FLOOR ; 22
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 23
-	tilecoll WALL, FLOOR, WALL, WALL ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 25
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 29
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2a
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2c
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2f
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 31
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 32
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 34
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 35
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 36
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 39
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, WALL, WALL, WALL ; 3b
-	tilecoll WALL, WALL, FLOOR, WALL ; 3c
-	tilecoll WALL, WALL, WALL, FLOOR ; 3d
-	tilecoll WALL, WALL, FLOOR, WALL ; 3e
-	tilecoll WALL, FLOOR, WALL, WALL ; 3f
-	tilecoll FLOOR, COUNTER, COUNTER, COUNTER ; 40
--- a/tilesets/power_plant_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/power_plant_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
--- a/tilesets/radio_tower_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 03
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, WALL, COUNTER ; 06
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 07
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 08
-	tilecoll COUNTER, COUNTER, FLOOR, FLOOR ; 09
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 0a
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 0d
-	tilecoll WALL, STAIRCASE, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, FLOOR, FLOOR, COUNTER ; 0f
-	tilecoll FLOOR, FLOOR, COUNTER, FLOOR ; 10
-	tilecoll FLOOR, COUNTER, FLOOR, FLOOR ; 11
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 12
-	tilecoll WALL, WALL, PC, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 14
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 15
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 16
-	tilecoll WALL, WALL, WALL, WALL ; 17
-	tilecoll FLOOR, FLOOR, COUNTER, FLOOR ; 18
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, COUNTER ; 1a
-	tilecoll WALL, COUNTER, FLOOR, COUNTER ; 1b
-	tilecoll COUNTER, FLOOR, FLOOR, FLOOR ; 1c
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1d
-	tilecoll STAIRCASE, WALL, FLOOR, FLOOR ; 1e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1f
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 20
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 21
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 22
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, FLOOR, BOOKSHELF ; 25
-	tilecoll COUNTER, FLOOR, COUNTER, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 27
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28
-	tilecoll WALL, WALL, FLOOR, WALL ; 29
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 2a
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 2c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2d
-	tilecoll FLOOR, COUNTER, FLOOR, COUNTER ; 2e
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
-	tilecoll WALL, WALL, FLOOR, WALL ; 32
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 33
-	tilecoll WALL, WALL, WALL, FLOOR ; 34
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 35
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
-	tilecoll FLOOR, FLOOR, COUNTER, COUNTER ; 39
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 3d
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 3e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
binary files a/tilesets/radio_tower_metatiles.bin /dev/null differ
--- a/tilesets/radio_tower_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
--- a/tilesets/roofs.asm
+++ /dev/null
@@ -1,20 +1,0 @@
-LoadMapGroupRoof:: ; 1c000
-	ld a, [MapGroup]
-	ld e, a
-	ld d, 0
-	ld hl, MapGroupRoofs
-	add hl, de
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld hl, Roofs
-	ld bc, $90
-	call AddNTimes
-	ld de, vTiles2 tile $0a
-	ld bc, $90
-	call CopyBytes
-	ret
-; 1c021
-
-
-INCLUDE "data/maps/roofs.asm"
--- a/tilesets/ruins_of_alph_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, FLOOR ; 02
-	tilecoll WALL, WALL, FLOOR, WALL ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, FLOOR ; 06
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 07
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, FLOOR, WALL ; 09
-	tilecoll WALL, FLOOR, WALL, WALL ; 0a
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0b
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0c
-	tilecoll FLOOR, WALL, WALL, WALL ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 0f
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 10
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 11
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 14
-	tilecoll WALL, FLOOR, WALL, WALL ; 15
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 16
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 17
-	tilecoll FLOOR, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, WALL, PIT ; 19
-	tilecoll WALL, WALL, PIT, WALL ; 1a
-	tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 1b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1d
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1e
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 1f
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 20
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 21
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 22
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 23
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, WALL, WALL, WALL ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WALL ; 2c
-	tilecoll FLOOR, FLOOR, WALL, WARP_CARPET_DOWN ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2f
-	tilecoll FLOOR, FLOOR, FLOOR, PIT ; 30
-	tilecoll CAVE, WALL, FLOOR, FLOOR ; 31
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 32
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 33
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll WALL, WALL, WALL, PIT ; 35
-	tilecoll WALL, WALL, PIT, WALL ; 36
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 37
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, FLOOR, GRASS_4A, FLOOR ; 39
-	tilecoll FLOOR, FLOOR, GRASS_4B, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, CUT_28, FLOOR ; 3b
-	tilecoll FLOOR, FLOOR, WATER, FLOOR ; 3c
-	tilecoll 64, FLOOR, WATERFALL_UP, FLOOR ; 3d
-	tilecoll 65, FLOOR, WATERFALL, FLOOR ; 3e
-	tilecoll WATERFALL_UP, FLOOR, WARP_CARPET_DOWN, FLOOR ; 3f
-	tilecoll WATERFALL, FLOOR, DOOR, FLOOR ; 40
binary files a/tilesets/ruins_of_alph_metatiles.bin /dev/null differ
--- a/tilesets/ruins_of_alph_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
--- a/tilesets/special_palettes.asm
+++ /dev/null
@@ -1,200 +1,0 @@
-LoadSpecialMapPalette: ; 494ac
-	ld a, [wTileset]
-	cp TILESET_POKECOM_CENTER
-	jr z, .pokecom_2f
-	cp TILESET_BATTLE_TOWER
-	jr z, .battle_tower
-	cp TILESET_ICE_PATH
-	jr z, .ice_path
-	cp TILESET_HOUSE_1
-	jr z, .house
-	cp TILESET_RADIO_TOWER
-	jr z, .radio_tower
-	cp TILESET_CELADON_MANSION
-	jr z, .mansion_mobile
-	jr .do_nothing
-
-.pokecom_2f
-	call LoadPokeComPalette
-	scf
-	ret
-
-.battle_tower
-	call LoadBattleTowerPalette
-	scf
-	ret
-
-.ice_path
-	ld a, [wEnvironment]
-	and $7
-	cp INDOOR ; Hall of Fame
-	jr z, .do_nothing
-	call LoadIcePathPalette
-	scf
-	ret
-
-.house
-	call LoadHousePalette
-	scf
-	ret
-
-.radio_tower
-	call LoadRadioTowerPalette
-	scf
-	ret
-
-.mansion_mobile
-	call LoadMansionPalette
-	scf
-	ret
-
-.do_nothing
-	and a
-	ret
-; 494f2
-
-LoadPokeComPalette: ; 494f2
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1
-	ld hl, PokeComPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 49501
-
-PokeComPalette: ; 49501
-INCLUDE "data/palettes/tilesets/pokecom_center.pal"
-; 49541
-
-LoadBattleTowerPalette: ; 49541
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1
-	ld hl, BattleTowerPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 49550
-
-BattleTowerPalette: ; 49550
-INCLUDE "data/palettes/tilesets/battle_tower.pal"
-; 49590
-
-LoadIcePathPalette: ; 49590
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1
-	ld hl, IcePathPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 4959f
-
-IcePathPalette: ; 4959f
-INCLUDE "data/palettes/tilesets/ice_path.pal"
-; 495df
-
-LoadHousePalette: ; 495df
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1
-	ld hl, HousePalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 495ee
-
-HousePalette: ; 495ee
-INCLUDE "data/palettes/tilesets/house_1.pal"
-; 4962e
-
-LoadRadioTowerPalette: ; 4962e
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1
-	ld hl, RadioTowerPalette
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ret
-; 4963d
-
-RadioTowerPalette: ; 4963d
-INCLUDE "data/palettes/tilesets/radio_tower.pal"
-; 4967d
-
-MansionPalette1: ; 4967d
-	RGB 30, 28, 26
-	RGB 19, 19, 19
-	RGB 13, 13, 13
-	RGB 07, 07, 07
-
-	RGB 30, 28, 26
-	RGB 31, 19, 24
-	RGB 30, 10, 06
-	RGB 07, 07, 07
-
-	RGB 18, 24, 09
-	RGB 15, 20, 01
-	RGB 09, 13, 00
-	RGB 07, 07, 07
-
-	RGB 30, 28, 26
-	RGB 15, 16, 31
-	RGB 09, 09, 31
-	RGB 07, 07, 07
-
-	RGB 30, 28, 26
-	RGB 31, 31, 07
-	RGB 31, 16, 01
-	RGB 07, 07, 07
-
-	RGB 26, 24, 17
-	RGB 21, 17, 07
-	RGB 16, 13, 03
-	RGB 07, 07, 07
-
-MansionPalette3: ; 496ad
-	RGB 30, 28, 26
-	RGB 17, 19, 31
-	RGB 14, 16, 31
-	RGB 07, 07, 07
-
-	RGB 31, 31, 16
-	RGB 31, 31, 16
-	RGB 14, 09, 00
-	RGB 00, 00, 00
-; 496bd
-
-MansionPalette4: ; 496bd
-	RGB 05, 05, 16
-	RGB 08, 19, 28
-	RGB 00, 00, 00
-	RGB 31, 31, 31
-; 496c5
-
-LoadMansionPalette: ; 496c5
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1
-	ld hl, MansionPalette1
-	ld bc, 8 palettes
-	call FarCopyWRAM
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1 palette PAL_BG_YELLOW
-	ld hl, MansionPalette2
-	ld bc, 1 palettes
-	call FarCopyWRAM
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1 palette PAL_BG_WATER
-	ld hl, MansionPalette3
-	ld bc, 1 palettes
-	call FarCopyWRAM
-	ld a, BANK(wBGPals1)
-	ld de, wBGPals1 palette PAL_BG_ROOF
-	ld hl, MansionPalette4
-	ld bc, 1 palettes
-	call FarCopyWRAM
-	ret
-; 496fe
-
-MansionPalette2: ; 496fe
-	RGB 25, 24, 23
-	RGB 20, 19, 19
-	RGB 14, 16, 31
-	RGB 07, 07, 07
-; 49706
--- a/tilesets/sprout_tower_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 04
-	tilecoll WALL, WALL, WALL, FLOOR ; 05
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 06
-	tilecoll WALL, WALL, FLOOR, WALL ; 07
-	tilecoll WALL, WALL, WALL, WALL ; 08
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll WALL, FLOOR, WALL, WALL ; 0d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, WALL, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 11
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 12
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 13
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 14
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 15
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 16
-	tilecoll WALL, FLOOR, WALL, WALL ; 17
-	tilecoll FLOOR, WALL, WALL, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 1e
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, FLOOR ; 1f
-	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 20
-	tilecoll LADDER, FLOOR, FLOOR, FLOOR ; 21
-	tilecoll WALL, WALL, WALL, FLOOR ; 22
-	tilecoll WALL, WALL, FLOOR, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll FLOOR, FLOOR, WARP_PANEL, FLOOR ; 25
-	tilecoll WALL, WALL, PIT, FLOOR ; 26
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 27
-	tilecoll WARP_CARPET_UP, WARP_CARPET_UP, FLOOR, FLOOR ; 28
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 2a
-	tilecoll WALL, WALL, WALL, WALL ; 2b
-	tilecoll WALL, HOP_LEFT, WALL, WALL ; 2c
-	tilecoll HOP_RIGHT, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 2e
-	tilecoll WALL, WALL, WALL, FLOOR ; 2f
-	tilecoll WALL, WALL, FLOOR, WALL ; 30
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 31
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 32
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 33
-	tilecoll WALL, WALL, WALL, FLOOR ; 34
-	tilecoll WALL, WALL, FLOOR, WALL ; 35
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 36
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
-	tilecoll PIT, PIT, FLOOR, FLOOR ; 38
-	tilecoll FLOOR, PIT, FLOOR, PIT ; 39
-	tilecoll PIT, FLOOR, PIT, FLOOR ; 3a
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 3b
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 3c
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 3d
-	tilecoll WALL, HOP_DOWN, WALL, WALL ; 3e
-	tilecoll HOP_DOWN, WALL, WALL, WALL ; 3f
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 40
--- a/tilesets/sprout_tower_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/sprout_tower_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
--- a/tilesets/tilesets.asm
+++ /dev/null
@@ -1,47 +1,0 @@
-tileset: MACRO
-	dba \1GFX, \1Meta, \1Coll
-	dw \1Anim
-	dw NULL
-	dw \1PalMap
-ENDM
-
-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
--- a/tilesets/train_station_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll FF, FF, FF, FF ; 01
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 02
-	tilecoll UP_WALL, FLOOR, UP_WALL, FLOOR ; 03
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 07
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 08
-	tilecoll WALL, FLOOR, WALL, WALL ; 09
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 0d
-	tilecoll WALL, WALL, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, WALL, WALL ; 11
-	tilecoll WALL, WALL, DOOR, WALL ; 12
-	tilecoll WALL, WALL, WALL, DOOR ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WALL, WALL, WALL ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll WALL, WALL, WALL, WALL ; 17
-	tilecoll WALL, WALL, WALL, WALL ; 18
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 19
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1a
-	tilecoll WALL, WALL, WALL, WALL ; 1b
-	tilecoll WALL, WALL, WALL, WALL ; 1c
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 1d
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 22
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 23
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 24
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 25
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 26
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 27
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 28
-	tilecoll WALL, WALL, WALL, FLOOR ; 29
-	tilecoll WALL, WALL, FLOOR, WALL ; 2a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 2c
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 2d
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 30
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 31
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 32
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 33
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 34
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 35
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 36
-	tilecoll WALL, WALL, WALL, FLOOR ; 37
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 38
-	tilecoll WALL, WALL, FLOOR, WALL ; 39
-	tilecoll WALL, FLOOR, WALL, WALL ; 3a
-	tilecoll WALL, WALL, WALL, WALL ; 3b
-	tilecoll FLOOR, WALL, WALL, WALL ; 3c
-	tilecoll WALL, WALL, WALL, WALL ; 3d
-	tilecoll WALL, WALL, WALL, WALL ; 3e
-	tilecoll WALL, WALL, WALL, WALL ; 3f
-	tilecoll WALL, WALL, WALL, WALL ; 40
binary files a/tilesets/train_station_metatiles.bin /dev/null differ
--- a/tilesets/train_station_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
--- a/tilesets/underground_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 03
-	tilecoll FLOOR, LADDER, FLOOR, FLOOR ; 04
-	tilecoll WALL, WALL, WALL, FLOOR ; 05
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 06
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, PIT, PIT ; 08
-	tilecoll WALL, WALL, WALL, FLOOR ; 09
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 0a
-	tilecoll WALL, WALL, FLOOR, WALL ; 0b
-	tilecoll WALL, WALL, WALL, WALL ; 0c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0f
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_PANEL ; 10
-	tilecoll WALL, FLOOR, WALL, WALL ; 11
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 12
-	tilecoll FLOOR, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 14
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 15
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 16
-	tilecoll WALL, FLOOR, WALL, WALL ; 17
-	tilecoll FLOOR, WALL, WALL, WALL ; 18
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 19
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1b
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1c
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 1d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1e
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 1f
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 20
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 21
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 22
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 23
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 25
-	tilecoll WALL, WARP_CARPET_UP, FLOOR, FLOOR ; 26
-	tilecoll WARP_CARPET_UP, WALL, FLOOR, FLOOR ; 27
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 28
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 29
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 2a
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 2b
-	tilecoll WALL, WALL, WALL, WALL ; 2c
-	tilecoll WALL, WALL, WALL, WALL ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll WARP_CARPET_DOWN, WARP_CARPET_DOWN, WALL, WALL ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll WALL, WALL, WALL, WALL ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WALL, WALL, WALL, WALL ; 33
-	tilecoll WALL, WALL, WALL, WALL ; 34
-	tilecoll WALL, WALL, WALL, WALL ; 35
-	tilecoll WALL, WALL, WALL, WALL ; 36
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 37
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 38
-	tilecoll WALL, WALL, WALL, WALL ; 39
-	tilecoll WALL, WALL, WALL, WALL ; 3a
-	tilecoll WALL, WALL, WALL, WALL ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, WALL, WALL, WALL ; 3d
-	tilecoll WALL, WALL, BOOKSHELF, BOOKSHELF ; 3e
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 40
--- a/tilesets/underground_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/underground_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
--- a/tilesets/unused_museum_palette_map.asm
+++ /dev/null
@@ -1,32 +1,0 @@
-; Matches pokered's "gate" tileset (notable for its Pewter Museum tiles)
-; https://tcrf.net/Pok%C3%A9mon_Gold_and_Silver#Unused_Tile_Palette_Assignment_Data
-
-	tilepal 0, WATER, RED, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
-	tilepal 0, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
-	tilepal 0, BROWN, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
-	tilepal 0, ROOF, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF
-	tilepal 0, ROOF, ROOF, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
-	tilepal 0, ROOF, GRAY, ROOF, BROWN, ROOF, ROOF, GRAY, GRAY
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, ROOF
-	tilepal 0, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
-	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, WATER, RED, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
-	tilepal 1, BROWN, BROWN, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, YELLOW, YELLOW, RED, GREEN, GREEN, BROWN
-	tilepal 1, BROWN, ROOF, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
-	tilepal 1, ROOF, BROWN, BROWN, BROWN, ROOF, ROOF, ROOF, ROOF
-	tilepal 1, ROOF, ROOF, BROWN, BROWN, GRAY, BROWN, BROWN, ROOF
-	tilepal 1, ROOF, GRAY, ROOF, BROWN, ROOF, ROOF, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, ROOF, ROOF
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, RED, RED
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
-	tilepal 1, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY
--- a/tilesets/unused_whirl_islands_collision.asm
+++ /dev/null
@@ -1,128 +1,0 @@
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 01
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS_10, TALL_GRASS_10, TALL_GRASS_10, TALL_GRASS_10 ; 04
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 05
-	tilecoll WALL, WALL, WALL, WALL ; 06
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 08
-	tilecoll WALL, WALL, WALL, WALL ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll WALL, WALL, WALL, WALL ; 0b
-	tilecoll WARP_CARPET_LEFT, FLOOR, WARP_CARPET_LEFT, FLOOR ; 0c
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 0d
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e
-	tilecoll FLOOR, WARP_CARPET_RIGHT, FLOOR, WARP_CARPET_RIGHT ; 0f
-	tilecoll WALL, WALL, WALL, WALL ; 10
-	tilecoll WALL, WALL, WALL, WALL ; 11
-	tilecoll WALL, WALL, WALL, WALL ; 12
-	tilecoll WALL, WALL, WALL, WALL ; 13
-	tilecoll WALL, WALL, WALL, WALL ; 14
-	tilecoll WALL, WALL, WALL, DOOR ; 15
-	tilecoll WALL, WALL, WALL, WALL ; 16
-	tilecoll WALL, WALL, WALL, DOOR ; 17
-	tilecoll WALL, WALL, TOWN_MAP, WALL ; 18
-	tilecoll WALL, WALL, WALL, WALL ; 19
-	tilecoll WALL, WALL, WALL, WALL ; 1a
-	tilecoll WALL, WALL, WALL, DOOR ; 1b
-	tilecoll WALL, WALL, TOWN_MAP, WALL ; 1c
-	tilecoll WALL, WALL, WALL, WALL ; 1d
-	tilecoll WALL, WALL, DOOR, WALL ; 1e
-	tilecoll WALL, WALL, WALL, WALL ; 1f
-	tilecoll WALL, WALL, WALL, WALL ; 20
-	tilecoll WALL, WALL, WALL, WALL ; 21
-	tilecoll WALL, WALL, WALL, WALL ; 22
-	tilecoll WALL, WALL, WALL, WALL ; 23
-	tilecoll WALL, WALL, WALL, WALL ; 24
-	tilecoll WALL, WALL, WALL, WALL ; 25
-	tilecoll WALL, WALL, WALL, WALL ; 26
-	tilecoll WALL, WALL, WALL, WALL ; 27
-	tilecoll WALL, WALL, WALL, WALL ; 28
-	tilecoll WALL, WALL, WALL, DOOR ; 29
-	tilecoll WALL, WALL, WALL, WALL ; 2a
-	tilecoll WALL, WALL, WALL, DOOR ; 2b
-	tilecoll WALL, WALL, WALL, WALL ; 2c
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 2d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, DOOR ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll BUOY, BUOY, BUOY, WATER_21 ; 31
-	tilecoll BUOY, BUOY, WATER_21, WATER_21 ; 32
-	tilecoll BUOY, BUOY, WATER_21, BUOY ; 33
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 34
-	tilecoll BUOY, WATER_21, BUOY, WATER_21 ; 35
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 36
-	tilecoll WATER_21, BUOY, WATER_21, BUOY ; 37
-	tilecoll WALL, WALL, WALL, WALL ; 38
-	tilecoll BUOY, WATER_21, BUOY, BUOY ; 39
-	tilecoll WATER_21, WATER_21, BUOY, BUOY ; 3a
-	tilecoll WATER_21, BUOY, BUOY, BUOY ; 3b
-	tilecoll WALL, WALL, WALL, WALL ; 3c
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 3d
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3e
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 3f
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 40
-	tilecoll WALL, WALL, WALL, FLOOR ; 41
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 42
-	tilecoll WALL, WALL, FLOOR, WALL ; 43
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 44
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 45
-	tilecoll TOWN_MAP, FLOOR, FLOOR, FLOOR ; 46
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 47
-	tilecoll FLOOR, FLOOR, FLOOR, TOWN_MAP ; 48
-	tilecoll WALL, FLOOR, WALL, WALL ; 49
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 4a
-	tilecoll FLOOR, WALL, WALL, WALL ; 4b
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 4c
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4d
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 4e
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 4f
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 50
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 51
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 52
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 53
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 54
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 55
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 56
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 57
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 58
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 59
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 5a
-	tilecoll HOP_DOWN, FLOOR, WALL, FLOOR ; 5b
-	tilecoll WALL, CUT_TREE, FLOOR, FLOOR ; 5c
-	tilecoll WALL, WALL, WALL, FLOOR ; 5d
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 5e
-	tilecoll WALL, WALL, FLOOR, WALL ; 5f
-	tilecoll FLOOR, WALL, FLOOR, CUT_TREE ; 60
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 61
-	tilecoll WALL, WALL, WALL, WALL ; 62
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 63
-	tilecoll FLOOR, FLOOR, CUT_TREE, WALL ; 64
-	tilecoll WALL, FLOOR, WALL, WALL ; 65
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 66
-	tilecoll FLOOR, WALL, WALL, WALL ; 67
-	tilecoll CUT_TREE, FLOOR, WALL, FLOOR ; 68
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 69
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 6a
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 6b
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 6c
-	tilecoll WALL, FLOOR, WALL, WALL ; 6d
-	tilecoll FLOOR, WALL, WALL, WALL ; 6e
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 71
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 72
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 73
-	tilecoll FLOOR, FLOOR, DOOR, WALL ; 74
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 75
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 76
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 77
-	tilecoll WALL, WALL, WALL, WALL ; 78
-	tilecoll WALL, WALL, WALL, WALL ; 79
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 7a
-	tilecoll WATER_21, WATER_21, WATER_21, WATER_21 ; 7b
-	tilecoll WALL, WALL, WALL, WALL ; 7c
-	tilecoll WALL, WALL, WALL, WALL ; 7d
-	tilecoll WALL, WALL, WALL, WALL ; 7e
-	tilecoll WALL, WALL, WALL, WALL ; 7f
-	tilecoll WALL, WALL, WALL, WALL ; 80
binary files a/tilesets/unused_whirl_islands_metatiles.bin /dev/null differ
--- a/tilesets/whirl_islands_collision.asm
+++ /dev/null
@@ -1,64 +1,0 @@
-	tilecoll WALL, WALL, WALL, WALL ; 01
-	tilecoll WALL, WALL, WALL, WALL ; 02
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 03
-	tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 04
-	tilecoll WALL, UP_WALL, WALL, FLOOR ; 05
-	tilecoll UP_WALL, UP_WALL, FLOOR, FLOOR ; 06
-	tilecoll UP_WALL, WALL, FLOOR, WALL ; 07
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 08
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 09
-	tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0a
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 0b
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 0c
-	tilecoll WALL, FLOOR, WALL, WALL ; 0d
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 0e
-	tilecoll FLOOR, WALL, WALL, WALL ; 0f
-	tilecoll WATER, WATER, WATER, WATER ; 10
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 11
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 12
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 13
-	tilecoll FLOOR, FLOOR, WALL, CAVE ; 14
-	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 15
-	tilecoll UP_WALL, UP_WALL, FLOOR, LADDER ; 16
-	tilecoll WALL, FLOOR, WALL, WARP_CARPET_DOWN ; 17
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 18
-	tilecoll WALL, WALL, WALL, FLOOR ; 19
-	tilecoll WALL, WALL, FLOOR, FLOOR ; 1a
-	tilecoll WALL, WALL, FLOOR, WALL ; 1b
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 1c
-	tilecoll WALL, FLOOR, WALL, FLOOR ; 1d
-	tilecoll WALL, WALL, WALL, WALL ; 1e
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 1f
-	tilecoll FLOOR, FLOOR, FLOOR, LADDER ; 20
-	tilecoll WALL, FLOOR, WALL, WALL ; 21
-	tilecoll FLOOR, FLOOR, WALL, WALL ; 22
-	tilecoll FLOOR, WALL, WALL, WALL ; 23
-	tilecoll UP_WALL, WALL, FLOOR, FLOOR ; 24
-	tilecoll FLOOR, FLOOR, FLOOR, WARP_CARPET_DOWN ; 25
-	tilecoll WATER, WATER, WATER, WATER ; 26
-	tilecoll WATER, WATER, WATER, WATER ; 27
-	tilecoll WATER, WATER, WATER, WATER ; 28
-	tilecoll WALL, FLOOR, FLOOR, FLOOR ; 29
-	tilecoll FLOOR, FLOOR, WALL, FLOOR ; 2a
-	tilecoll FLOOR, WALL, FLOOR, FLOOR ; 2b
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 2c
-	tilecoll WATERFALL, WATERFALL, WATERFALL, WATERFALL ; 2d
-	tilecoll WALL, WALL, WALL, WALL ; 2e
-	tilecoll WALL, WALL, WALL, WALL ; 2f
-	tilecoll WALL, WALL, WALL, WALL ; 30
-	tilecoll FLOOR, FLOOR, FLOOR, WALL ; 31
-	tilecoll WALL, WALL, WALL, WALL ; 32
-	tilecoll WATER, WATER, WATER, WATER ; 33
-	tilecoll WATER, WATER, WATER, WATER ; 34
-	tilecoll WALL, WALL, WALL, WALL ; 35
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 36
-	tilecoll FLOOR, WALL, FLOOR, WALL ; 37
-	tilecoll WALL, WALL, WALL, CAVE ; 38
-	tilecoll WALL, HOP_DOWN_LEFT, WALL, WALL ; 39
-	tilecoll HOP_DOWN, HOP_DOWN, WALL, WALL ; 3a
-	tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 3b
-	tilecoll WALL, HOP_LEFT, WALL, HOP_LEFT ; 3c
-	tilecoll HOP_RIGHT, WALL, HOP_RIGHT, WALL ; 3d
-	tilecoll WATER, WATER, WATER, WATER ; 3e
-	tilecoll WATER, WATER, WATER, WATER ; 3f
-	tilecoll FLOOR, FLOOR, PIT, FLOOR ; 40
--- a/tilesets/whirl_islands_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/whirl_islands_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
--- /dev/null
+++ b/tools/sort_symfile.sh
@@ -1,0 +1,10 @@
+#!/bin/sh
+sed $1 \
+    -e "s/^..:[0-3]/0_ROM0@&/g" \
+    -e "s/^..:[4-7]/1_ROMX@&/g" \
+    -e "s/^..:[8-9]/2_VRAM@&/g" \
+    -e "s/^..:[A-B]/3_SRAM@&/g" \
+    -e "s/^00:[C-D]/4_WRAM0@&/g" \
+    -e "s/^..:[D-D]/5_WRAMX@&/g" \
+| sort -o $1
+sed -i $1 -e "s/^\w*@//g"
--- a/version.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-_CRYSTAL EQU 1
-VERSION  EQU 0
--- a/wram.asm
+++ b/wram.asm
@@ -1,4 +1,4 @@
-INCLUDE "includes.asm"
+INCLUDE "constants.asm"
 INCLUDE "macros/wram.asm"
 
 
@@ -152,7 +152,7 @@
 
 wPrinterConnectionOpen:: db
 wPrinterOpcode:: db
-wLastDexEntry:: db
+wPrevDexEntry:: db
 wDisableTextAcceleration:: db
 wPreviousLandmark:: db
 wCurrentLandmark:: db
@@ -303,20 +303,46 @@
 SECTION "Sprites", WRAM0
 
 Sprites:: ; c400
-; 4 bytes per sprite
-; 40 sprites
-; struct:
-;	y (px)
-;	x (px)
-;	tile id
-;	attributes:
-;		bit 7: priority
-;		bit 6: y flip
-;		bit 5: x flip
-;		bit 4: pal # (non-cgb)
-;		bit 3: vram bank (cgb only)
-;		bit 2-0: pal # (cgb only)
-	ds 4 * 40
+Sprite01:: sprite_oam_struct Sprite01
+Sprite02:: sprite_oam_struct Sprite02
+Sprite03:: sprite_oam_struct Sprite03
+Sprite04:: sprite_oam_struct Sprite04
+Sprite05:: sprite_oam_struct Sprite05
+Sprite06:: sprite_oam_struct Sprite06
+Sprite07:: sprite_oam_struct Sprite07
+Sprite08:: sprite_oam_struct Sprite08
+Sprite09:: sprite_oam_struct Sprite09
+Sprite10:: sprite_oam_struct Sprite10
+Sprite11:: sprite_oam_struct Sprite11
+Sprite12:: sprite_oam_struct Sprite12
+Sprite13:: sprite_oam_struct Sprite13
+Sprite14:: sprite_oam_struct Sprite14
+Sprite15:: sprite_oam_struct Sprite15
+Sprite16:: sprite_oam_struct Sprite16
+Sprite17:: sprite_oam_struct Sprite17
+Sprite18:: sprite_oam_struct Sprite18
+Sprite19:: sprite_oam_struct Sprite19
+Sprite20:: sprite_oam_struct Sprite20
+Sprite21:: sprite_oam_struct Sprite21
+Sprite22:: sprite_oam_struct Sprite22
+Sprite23:: sprite_oam_struct Sprite23
+Sprite24:: sprite_oam_struct Sprite24
+Sprite25:: sprite_oam_struct Sprite25
+Sprite26:: sprite_oam_struct Sprite26
+Sprite27:: sprite_oam_struct Sprite27
+Sprite28:: sprite_oam_struct Sprite28
+Sprite29:: sprite_oam_struct Sprite29
+Sprite30:: sprite_oam_struct Sprite30
+Sprite31:: sprite_oam_struct Sprite31
+Sprite32:: sprite_oam_struct Sprite32
+Sprite33:: sprite_oam_struct Sprite33
+Sprite34:: sprite_oam_struct Sprite34
+Sprite35:: sprite_oam_struct Sprite35
+Sprite36:: sprite_oam_struct Sprite36
+Sprite37:: sprite_oam_struct Sprite37
+Sprite38:: sprite_oam_struct Sprite38
+Sprite39:: sprite_oam_struct Sprite39
+Sprite40:: sprite_oam_struct Sprite40
 SpritesEnd::
 
 
@@ -342,8 +368,8 @@
 NEXTU ; c608
 ; odd egg
 wOddEgg:: party_struct OddEgg
-wOddEggName:: ds PKMN_NAME_LENGTH
-wOddEggOTName:: ds PKMN_NAME_LENGTH
+wOddEggName:: ds MON_NAME_LENGTH
+wOddEggOTName:: ds MON_NAME_LENGTH
 
 NEXTU ; c608
 ; battle tower temp struct
@@ -372,8 +398,8 @@
 wEnemyMoveStruct::  move_struct wEnemyMoveStruct ; c608
 wPlayerMoveStruct:: move_struct wPlayerMoveStruct ; c60f
 
-EnemyMonNick::  ds PKMN_NAME_LENGTH ; c616
-BattleMonNick:: ds PKMN_NAME_LENGTH ; c621
+EnemyMonNick::  ds MON_NAME_LENGTH ; c616
+BattleMonNick:: ds MON_NAME_LENGTH ; c621
 
 BattleMon:: battle_struct BattleMon ; c62c
 
@@ -827,7 +853,7 @@
 wBackupDexListingCursor:: db
 wBackupDexListingPage:: db
 wDexCurrentLocation:: db
-if DEF(CRYSTAL11)
+if DEF(_CRYSTAL11)
 wPokedexStatus:: db
 wPokedexDataEnd::
 else
@@ -851,7 +877,8 @@
 ENDU ; c7e8
 ENDU ; c7e8
 
-wc7e8:: ds 24 ; ????
+wc7e8:: ds 24
+wc7e8_End::
 
 
 SECTION "Overworld Map", WRAM0
@@ -873,7 +900,7 @@
 wca80:: db
 wPrinterRowIndex:: db
 
-; Printer data header
+; Printer data
 wPrinterData:: ds 4
 wPrinterChecksum:: dw ; ca86
 wPrinterHandshake:: db
@@ -927,7 +954,7 @@
 wTimeCapsulePartyMon5:: red_party_struct wTimeCapsulePartyMon5
 wTimeCapsulePartyMon6:: red_party_struct wTimeCapsulePartyMon6
 wTimeCapsulePartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
-wTimeCapsulePartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
+wTimeCapsulePartyMonNicks:: ds PARTY_LENGTH * MON_NAME_LENGTH
 wTimeCapsulePlayerDataEnd::
 
 NEXTU ; c813
@@ -940,7 +967,7 @@
 wLinkPlayerPartyMon5:: party_struct wLinkPlayerPartyMon5
 wLinkPlayerPartyMon6:: party_struct wLinkPlayerPartyMon6
 wLinkPlayerPartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
-wLinkPlayerPartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
+wLinkPlayerPartyMonNicks:: ds PARTY_LENGTH * MON_NAME_LENGTH
 wLinkPlayerDataEnd::
 ENDU ; c9b7
 
@@ -1202,8 +1229,7 @@
 wOTMonSelection:: ds 2 ; ds 3
 wcd77:: ds 1
 
-wcd78:: ds 1
-wcd79:: ds 1
+wMobileCrashCheckPointer:: dw
 wcd7a:: ds 2
 wcd7c:: ds 3
 wcd7f:: ds 1
@@ -1276,8 +1302,8 @@
 
 	ds 1
 
-wBattleTowerBattleEnded::
 wJumptableIndex::
+wBattleTowerBattleEnded::
 	db
 
 UNION ; cf64
@@ -1289,7 +1315,11 @@
 NEXTU ; cf64
 ; intro and title data
 wIntroSceneFrameCounter:: db
+UNION ; cf65
+wIntroSceneTimer:: db
+NEXTU ; cf65
 wTitleScreenTimer:: dw
+ENDU
 
 NEXTU ; cf64
 ; credits data
@@ -1298,12 +1328,33 @@
 wCreditsLYOverride:: db
 
 NEXTU ; cf64
-; unown puzzle data
-wHoldingUnownPuzzlePiece:: db
-wUnownPuzzleCursorPosition:: db
-wUnownPuzzleHeldPiece:: db
+; pokedex
+wPrevDexEntryJumptableIndex:: db
+if DEF(_CRYSTAL11)
+wPrevDexEntryBackup:: db
+else
+wPrevDexEntryBackup::
+wPokedexStatus:: db
+endc
 
 NEXTU ; cf64
+; pokegear
+wPokegearCard:: db
+wPokegearMapRegion:: db
+
+NEXTU ; cf64
+; pack
+wPackJumptableIndex:: db
+wCurrPocket:: db
+wPackUsedItem:: db
+
+NEXTU ; cf64
+; trainer card badges
+wTrainerCardBadgeFrameCounter:: db
+wTrainerCardBadgeTileID:: db
+wTrainerCardBadgeAttributes:: db
+
+NEXTU ; cf64
 ; card flip data
 wCardFlipCursorY:: db
 wCardFlipCursorX:: db
@@ -1310,19 +1361,26 @@
 wCardFlipWhichCard:: db
 
 NEXTU ; cf64
-; pokedex
-wDexEntryPrevJumptableIndex:: db
-if !DEF(CRYSTAL11)
-wPokedexStatus:: db
-endc
+; magnet train
+wMagnetTrainOffset:: db
+wMagnetTrainPosition:: db
+wMagnetTrainWaitCounter:: db
 
 NEXTU ; cf64
+; unown puzzle data
+wHoldingUnownPuzzlePiece:: db
+wUnownPuzzleCursorPosition:: db
+wUnownPuzzleHeldPiece:: db
+
+NEXTU ; cf64
 ; miscellaneous
+wFrameCounter::
 wNrOfBeatenBattleTowerTrainers::
 wMomBankDigitCursorPosition::
+wNamingScreenLetterCase::
+wHallOfFameMonCounter::
 wSlotsDelay::
 	db
-wCurrPocket::
 wPrinterQueueLength::
 	db
 ENDU ; cf67
@@ -1361,37 +1419,28 @@
 wMenuDataHeaderEnd::
 
 wMenuData2::
-UNION ; cf91
 ; MenuData2
-wMenuData2Flags:: ; cf91
-; bit 7: When set, start printing text one tile to the right of the border
-;        In scrolling menus, SELECT is functional
-; bit 6: When set, start printing text one tile below the border
-;        In scrolling menus, START is functional
-; bit 5: ????
-; bit 4: ????
-; bit 3: ????
-; bit 2: ????
-; bit 1: Enable Select button
-; bit 0: Disable B button
-	db
+
+wMenuData2Flags:: db ; cf91
+
+UNION ; cf92
+; Vertical Menu/DoNthMenu/SetUpMenu
 wMenuData2Items:: db ; cf92
 wMenuData2IndicesPointer:: dw ; cf94
 wMenuData2DisplayFunctionPointer:: dw ; cf96
 wMenuData2PointerTableAddr:: dw ; cf97
 
-NEXTU ; cf91
-; 2D menu
-	ds 2 ; cf91
-wMenuData2Spacing:: db ; cf93
+NEXTU ; cf92
+; 2D Menu
+wMenuData2_2DMenuDimensions:: db ; cf92
+wMenuData2_2DMenuSpacing:: db ; cf93
 wMenuData2_2DMenuItemStringsBank:: db ; cf94
 wMenuData2_2DMenuItemStringsAddr:: dw ; cf96
 wMenuData2_2DMenuFunctionBank:: db ; cf97
 wMenuData2_2DMenuFunctionAddr:: dw ; cf98
 
-NEXTU ; cf91
-; scrolling menu
-	ds 1 ; cf91
+NEXTU ; cf92
+; Scrolling Menu
 wMenuData2_ScrollingMenuHeight:: db ; cf92
 wMenuData2_ScrollingMenuWidth:: db ; cf93
 wMenuData2_ScrollingMenuSpacing:: db ; cf94
@@ -1408,7 +1457,16 @@
 w2DMenuCursorInitX:: db ; cfa2
 w2DMenuNumRows:: db ; cfa3
 w2DMenuNumCols:: db ; cfa4
-w2DMenuFlags1:: db ; cfa5
+w2DMenuFlags1:: ; cfa5
+; bit 7: Disable checking of wMenuJoypadFilter
+; bit 6: Enable sprite animations
+; bit 5: Wrap around vertically
+; bit 4: Wrap around horizontally
+; bit 3: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far down
+; bit 2: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far up
+; bit 1: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far left
+; bit 0: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far right
+	db
 w2DMenuFlags2:: db ; cfa6
 w2DMenuCursorOffsets:: db ; cfa7
 wMenuJoypadFilter:: db ; cfa8
@@ -1508,7 +1566,7 @@
 
 SECTION "WRAM 1", WRAMX
 
-wd000:: ds 1
+wGBCOnlyDecompressBuffer:: ds 1 ; also uses the next $53f bytes for $540 total
 
 DefaultSpawnpoint:: db
 
@@ -1519,7 +1577,7 @@
 NEXTU ; d002
 ; poke seer
 wSeerAction:: db
-wSeerNickname:: ds PKMN_NAME_LENGTH
+wSeerNickname:: ds MON_NAME_LENGTH
 wSeerCaughtLocation:: ds 17
 wSeerTimeOfDay:: ds NAME_LENGTH
 wSeerOTName:: ds NAME_LENGTH
@@ -1531,7 +1589,7 @@
 
 NEXTU ; d002
 ; mon buffer
-wBufferMonNick:: ds PKMN_NAME_LENGTH ; d002
+wBufferMonNick:: ds MON_NAME_LENGTH ; d002
 wBufferMonOT:: ds NAME_LENGTH ; d00d
 wBufferMon:: party_struct wBufferMon ; d018
 	ds 8
@@ -1724,7 +1782,7 @@
 NEXTU ; d03e
 ; trainer data
 	ds 3
-wTempTrainerHeader::
+wTempTrainer::
 wTempTrainerEventFlag:: dw
 wTempTrainerClass:: db
 wTempTrainerID:: db
@@ -1733,7 +1791,7 @@
 wLossTextPointer:: dw
 wScriptAfterPointer:: dw
 wRunningTrainerBattleScript:: db
-wTempTrainerHeaderEnd::
+wTempTrainerEnd::
 
 NEXTU ; d03e
 ; player movement data
@@ -1935,23 +1993,26 @@
 wMetatileStandingY:: db ; d196
 wMetatileStandingX:: db ; d197
 
-wSecondMapHeaderBank:: db ; d198
+wPartialMapDef::
+wMapDataBank:: db ; d198
 wTileset:: db ; d199
 wEnvironment:: db ; d19a
-wSecondMapHeaderAddr:: dw ; d19b
+wMapDataPointer:: dw ; d19b
+wPartialMapDefEnd::
 
-; width/height are in blocks (2x2 walkable tiles, 4x4 graphics tiles)
-MapHeader:: ; d19d
+wMapData:: ; d19d
 MapBorderBlock:: db ; d19d
+; width/height are in blocks (2x2 walkable tiles, 4x4 graphics tiles)
 MapHeight:: db ; d19e
 MapWidth:: db ; d19f
-MapBlockDataBank:: db; d1a0
-MapBlockDataPointer:: dw ; d1a1
-MapScriptHeaderBank:: db ; d1a3
-MapScriptHeaderPointer:: dw ; d1a4
-MapEventHeaderPointer:: dw ; d1a6
+MapBlocksBank:: db; d1a0
+MapBlocksPointer:: dw ; d1a1
+MapScriptsBank:: db ; d1a3
+MapScriptsPointer:: dw ; d1a4
+MapEventsPointer:: dw ; d1a6
 ; bit set
 MapConnections:: db ; d1a8
+wMapDataEnd::
 
 NorthMapConnection:: map_connection_struct North ; d1a9
 SouthMapConnection:: map_connection_struct South ; d1b5
@@ -2156,7 +2217,7 @@
 OTPartyMonsEnd::
 
 OTPartyMonOT:: ds NAME_LENGTH * PARTY_LENGTH ; d3a8
-OTPartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; d3ea
+OTPartyMonNicknames:: ds MON_NAME_LENGTH * PARTY_LENGTH ; d3ea
 OTPartyDataEnd::
 	ds 4
 
@@ -2279,6 +2340,7 @@
 wRTC:: ds 8 ; d4ba
 wDST:: db ; d4c2
 
+GameTime::
 GameTimeCap::     db ; d4c3
 GameTimeHours::   dw ; d4c4
 GameTimeMinutes:: db ; d4c6
@@ -2420,7 +2482,7 @@
 PlayerState:: db ; d95d
 
 wHallOfFameCount:: dw
-wTradeFlags:: flag_array 6 ; d960
+wTradeFlags:: flag_array PARTY_LENGTH ; d960
 	ds 1
 MooMooBerries:: db ; d962
 UndergroundSwitchPositions:: db ; d963
@@ -2438,9 +2500,9 @@
 wRoute25SceneID::                                 db ; d978
 wTrainerHouseB1FSceneID::                         db ; d979
 wVictoryRoadGateSceneID::                         db ; d97a
-wSaffronTrainStationSceneID::                     db ; d97b
+wSaffronMagnetTrainStationSceneID::               db ; d97b
 wRoute16GateSceneID::                             db ; d97c
-wRoute1718GateSceneID::                           db ; d97d
+wRoute17Route18GateSceneID::                      db ; d97d
 wIndigoPlateauPokecenter1FSceneID::               db ; d97e
 wWillsRoomSceneID::                               db ; d97f
 wKogasRoomSceneID::                               db ; d980
@@ -2572,17 +2634,17 @@
 
 wCurrentCaller:: dw ; dbf9
 wCurrMapWarpCount:: db ; dbfb
-wCurrMapWarpHeaderPointer:: dw ; dbfc
+wCurrMapWarpsPointer:: dw ; dbfc
 wCurrMapCoordEventCount:: db ; dbfe
-wCurrMapCoordEventHeaderPointer:: dw ; dbff
+wCurrMapCoordEventsPointer:: dw ; dbff
 wCurrMapBGEventCount:: db ; dc01
-wCurrMapBGEventHeaderPointer:: dw ; dc02
+wCurrMapBGEventsPointer:: dw ; dc02
 wCurrMapObjectEventCount:: db ; dc04
-wCurrMapObjectEventHeaderPointer:: dw ; dc05
+wCurrMapObjectEventsPointer:: dw ; dc05
 wCurrMapSceneScriptCount:: db ; dc07
-wCurrMapSceneScriptHeaderPointer:: dw ; dc08
+wCurrMapSceneScriptsPointer:: dw ; dc08
 wCurrMapCallbackCount:: db ; dc0a
-wCurrMapCallbackHeaderPointer:: dw ; dc0b
+wCurrMapCallbacksPointer:: dw ; dc0b
 
 	ds 2
 
@@ -2661,7 +2723,7 @@
 wPlayerDataEnd::
 
 
-wMapData::
+wCurrMapData::
 
 wVisitedSpawns:: flag_array NUM_SPAWNS ; dca5
 
@@ -2687,7 +2749,7 @@
 XCoord:: db ; dcb8 ; current x coordinate relative to top-left corner of current map
 wScreenSave:: ds 6 * 5
 
-wMapDataEnd::
+wCurrMapDataEnd::
 
 
 SECTION "Party", WRAMX
@@ -2708,7 +2770,7 @@
 
 PartyMonOT:: ds NAME_LENGTH * PARTY_LENGTH ; ddff
 
-PartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; de41
+PartyMonNicknames:: ds MON_NAME_LENGTH * PARTY_LENGTH ; de41
 PartyMonNicknamesEnd::
 
 	ds 22
@@ -2731,7 +2793,7 @@
 	db
 
 wBreedMon1::
-wBreedMon1Nick::  ds PKMN_NAME_LENGTH ; def6
+wBreedMon1Nick::  ds MON_NAME_LENGTH ; def6
 wBreedMon1OT::    ds NAME_LENGTH ; df01
 wBreedMon1Stats:: box_struct wBreedMon1 ; df0c
 
@@ -2748,11 +2810,11 @@
 	db
 
 wBreedMon2::
-wBreedMon2Nick::  ds PKMN_NAME_LENGTH ; df2f
+wBreedMon2Nick::  ds MON_NAME_LENGTH ; df2f
 wBreedMon2OT::    ds NAME_LENGTH ; df3a
 wBreedMon2Stats:: box_struct wBreedMon2 ; df45
 
-wEggNick:: ds PKMN_NAME_LENGTH ; df65
+wEggNick:: ds MON_NAME_LENGTH ; df65
 wEggOT::   ds NAME_LENGTH ; df70
 wEggMon::  box_struct wEggMon ; df7b
 
@@ -2787,7 +2849,7 @@
 ; 20x18 grid of 8x8 tiles
 	ds SCREEN_WIDTH * SCREEN_HEIGHT ; $168 = 360
 
-; PokeAnim Header
+; PokeAnim data
 wPokeAnimSceneIndex:: db
 wPokeAnimPointer:: dw
 wPokeAnimSpecies:: db
@@ -2826,7 +2888,8 @@
 w3_d000:: ds 1 ; d000
 w3_d001:: ds 1
 w3_d002:: ds $7e
-w3_d080:: ds $10
+w3_d080:: ds 1
+w3_d081:: ds $f
 w3_d090:: ds $70
 
 w3_d100::
@@ -2880,6 +2943,7 @@
 SECTION "GBC Video", WRAMX
 
 ; eight 4-color palettes each
+wPals::
 wBGPals1:: ds 8 palettes ; d000
 wOBPals1:: ds 8 palettes ; d040
 wBGPals2:: ds 8 palettes ; d080
@@ -2890,6 +2954,7 @@
 
 	ds 1
 
+wMagnetTrain::
 wMagnetTrainDirection:: db
 wMagnetTrainInitPosition:: db
 wMagnetTrainHoldPosition:: db