shithub: pokecrystal

Download patch

ref: 9c5473e965520f672640daf4ee76622640e0de15
parent: 1c1fe276ca59726bb0008c60006c6b48cd093573
parent: 40802da3cf27a453f62c8c4b712e876b06a9d834
author: yenatch <yenatch@gmail.com>
date: Thu Nov 12 19:44:06 EST 2015

Merge pull request #326 from PikalaxALT/master

Reopen #325

--- a/audio/cry_pointers.asm
+++ b/audio/cry_pointers.asm
@@ -1,70 +1,70 @@
 ; e91b0
-	dbw BANK(Cry_00), Cry_00
-	dbw BANK(Cry_01), Cry_01
-	dbw BANK(Cry_02), Cry_02
-	dbw BANK(Cry_03), Cry_03
-	dbw BANK(Cry_04), Cry_04
-	dbw BANK(Cry_05), Cry_05
-	dbw BANK(Cry_06), Cry_06
-	dbw BANK(Cry_07), Cry_07
-	dbw BANK(Cry_08), Cry_08
-	dbw BANK(Cry_09), Cry_09
-	dbw BANK(Cry_0A), Cry_0A
-	dbw BANK(Cry_0B), Cry_0B
-	dbw BANK(Cry_0C), Cry_0C
-	dbw BANK(Cry_0D), Cry_0D
-	dbw BANK(Cry_0E), Cry_0E
-	dbw BANK(Cry_0F), Cry_0F
-	dbw BANK(Cry_10), Cry_10
-	dbw BANK(Cry_11), Cry_11
-	dbw BANK(Cry_12), Cry_12
-	dbw BANK(Cry_13), Cry_13
-	dbw BANK(Cry_14), Cry_14
-	dbw BANK(Cry_15), Cry_15
-	dbw BANK(Cry_16), Cry_16
-	dbw BANK(Cry_17), Cry_17
-	dbw BANK(Cry_18), Cry_18
-	dbw BANK(Cry_19), Cry_19
-	dbw BANK(Cry_1A), Cry_1A
-	dbw BANK(Cry_1B), Cry_1B
-	dbw BANK(Cry_1C), Cry_1C
-	dbw BANK(Cry_1D), Cry_1D
-	dbw BANK(Cry_1E), Cry_1E
-	dbw BANK(Cry_1F), Cry_1F
-	dbw BANK(Cry_20), Cry_20
-	dbw BANK(Cry_21), Cry_21
-	dbw BANK(Cry_22), Cry_22
-	dbw BANK(Cry_23), Cry_23
-	dbw BANK(Cry_24), Cry_24
-	dbw BANK(Cry_25), Cry_25
-	dbw BANK(Cry_26), Cry_26
-	dbw BANK(Cry_27), Cry_27
-	dbw BANK(Cry_28), Cry_28
-	dbw BANK(Cry_29), Cry_29
-	dbw BANK(Cry_2A), Cry_2A
-	dbw BANK(Cry_2B), Cry_2B
-	dbw BANK(Cry_2C), Cry_2C
-	dbw BANK(Cry_2D), Cry_2D
-	dbw BANK(Cry_2E), Cry_2E
-	dbw BANK(Cry_2F), Cry_2F
-	dbw BANK(Cry_30), Cry_30
-	dbw BANK(Cry_31), Cry_31
-	dbw BANK(Cry_32), Cry_32
-	dbw BANK(Cry_33), Cry_33
-	dbw BANK(Cry_34), Cry_34
-	dbw BANK(Cry_35), Cry_35
-	dbw BANK(Cry_36), Cry_36
-	dbw BANK(Cry_37), Cry_37
-	dbw BANK(Cry_38), Cry_38
-	dbw BANK(Cry_39), Cry_39
-	dbw BANK(Cry_3A), Cry_3A
-	dbw BANK(Cry_3B), Cry_3B
-	dbw BANK(Cry_3C), Cry_3C
-	dbw BANK(Cry_3D), Cry_3D
-	dbw BANK(Cry_3E), Cry_3E
-	dbw BANK(Cry_3F), Cry_3F
-	dbw BANK(Cry_40), Cry_40
-	dbw BANK(Cry_41), Cry_41
-	dbw BANK(Cry_42), Cry_42
-	dbw BANK(Cry_43), Cry_43
+	dba Cry_00
+	dba Cry_01
+	dba Cry_02
+	dba Cry_03
+	dba Cry_04
+	dba Cry_05
+	dba Cry_06
+	dba Cry_07
+	dba Cry_08
+	dba Cry_09
+	dba Cry_0A
+	dba Cry_0B
+	dba Cry_0C
+	dba Cry_0D
+	dba Cry_0E
+	dba Cry_0F
+	dba Cry_10
+	dba Cry_11
+	dba Cry_12
+	dba Cry_13
+	dba Cry_14
+	dba Cry_15
+	dba Cry_16
+	dba Cry_17
+	dba Cry_18
+	dba Cry_19
+	dba Cry_1A
+	dba Cry_1B
+	dba Cry_1C
+	dba Cry_1D
+	dba Cry_1E
+	dba Cry_1F
+	dba Cry_20
+	dba Cry_21
+	dba Cry_22
+	dba Cry_23
+	dba Cry_24
+	dba Cry_25
+	dba Cry_26
+	dba Cry_27
+	dba Cry_28
+	dba Cry_29
+	dba Cry_2A
+	dba Cry_2B
+	dba Cry_2C
+	dba Cry_2D
+	dba Cry_2E
+	dba Cry_2F
+	dba Cry_30
+	dba Cry_31
+	dba Cry_32
+	dba Cry_33
+	dba Cry_34
+	dba Cry_35
+	dba Cry_36
+	dba Cry_37
+	dba Cry_38
+	dba Cry_39
+	dba Cry_3A
+	dba Cry_3B
+	dba Cry_3C
+	dba Cry_3D
+	dba Cry_3E
+	dba Cry_3F
+	dba Cry_40
+	dba Cry_41
+	dba Cry_42
+	dba Cry_43
 ; e927c
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -6,7 +6,7 @@
 ; 	FadeMusic
 ; 	PlayStereoSFX
 
-_SoundRestart:: ; e8000
+_MapSetup_Sound_Off:: ; e8000
 ; restart sound operation
 ; clear all relevant hardware registers & wram
 	push hl
@@ -26,7 +26,7 @@
 .clearsound
 ;   sound channel   1      2      3      4
 	xor a
-	ld [hli], a ; rNR10, $ff15, rNR30, $ff1f ; sweep = 0
+	ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
 
 	ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
 	ld a, $08
@@ -63,7 +63,7 @@
 	push af
 	ld a, [MusicFadeIDLo]
 	push af
-	call _SoundRestart
+	call _MapSetup_Sound_Off
 	pop af
 	ld [MusicFadeIDLo], a
 	pop af
@@ -345,7 +345,7 @@
 	ld a, [rNR52]
 	and a, %10001101 ; ch2 off
 	ld [rNR52], a
-	ld hl, $ff15
+	ld hl, rNR20
 	call ClearChannel
 	ret
 .asm_e8204
@@ -418,39 +418,39 @@
 endr
 	ld de, WaveSamples
 	add hl, de
-	; load wavepattern into $ff30-$ff3f
+	; load wavepattern into rWave_0-rWave_f
 	ld a, [hli]
-	ld [$ff30], a
+	ld [rWave_0], a
 	ld a, [hli]
-	ld [$ff31], a
+	ld [rWave_1], a
 	ld a, [hli]
-	ld [$ff32], a
+	ld [rWave_2], a
 	ld a, [hli]
-	ld [$ff33], a
+	ld [rWave_3], a
 	ld a, [hli]
-	ld [$ff34], a
+	ld [rWave_4], a
 	ld a, [hli]
-	ld [$ff35], a
+	ld [rWave_5], a
 	ld a, [hli]
-	ld [$ff36], a
+	ld [rWave_6], a
 	ld a, [hli]
-	ld [$ff37], a
+	ld [rWave_7], a
 	ld a, [hli]
-	ld [$ff38], a
+	ld [rWave_8], a
 	ld a, [hli]
-	ld [$ff39], a
+	ld [rWave_9], a
 	ld a, [hli]
-	ld [$ff3a], a
+	ld [rWave_a], a
 	ld a, [hli]
-	ld [$ff3b], a
+	ld [rWave_b], a
 	ld a, [hli]
-	ld [$ff3c], a
+	ld [rWave_c], a
 	ld a, [hli]
-	ld [$ff3d], a
+	ld [rWave_d], a
 	ld a, [hli]
-	ld [$ff3e], a
+	ld [rWave_e], a
 	ld a, [hli]
-	ld [$ff3f], a
+	ld [rWave_f], a
 	pop hl
 	ld a, [wc293]
 	and a, $f0
@@ -475,7 +475,7 @@
 	ld a, [rNR52]
 	and a, %10000111 ; ch4 off
 	ld [rNR52], a
-	ld hl, $ff1f
+	ld hl, rNR40
 	call ClearChannel
 	ret
 .asm_e82d4
@@ -613,6 +613,7 @@
 	jr z, .novolume
 	dec a
 	jr .updatevolume
+
 .novolume
 	; make sure volume is off
 	xor a
@@ -660,6 +661,7 @@
 	ld hl, MusicFade
 	set 7, [hl]
 	ret
+
 .fadein
 	; are we done?
 	cp a, $07
@@ -3159,7 +3161,7 @@
 
 ClearChannels:: ; e8fe9
 ; runs ClearChannel for all 4 channels
-; doesn't seem to be used, but functionally identical to SoundRestart
+; doesn't seem to be used, but functionally identical to MapSetup_Sound_Off
 	ld hl, rNR50
 	xor a
 rept 2
@@ -3177,12 +3179,12 @@
 ; e8ffe
 
 ClearChannel: ; e8ffe
-; input: hl = beginning hw sound register (rNR10, $ff15, rNR30, $ff1f)
+; input: hl = beginning hw sound register (rNR10, rNR20, rNR30, rNR40)
 ; output: 00 00 80 00 80
 
 ;   sound channel   1      2      3      4
 	xor a
-	ld [hli], a ; rNR10, $ff15, rNR30, $ff1f ; sweep = 0
+	ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
 
 	ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
 	ld a, $08
--- a/audio/music_pointers.asm
+++ b/audio/music_pointers.asm
@@ -9,110 +9,110 @@
 ; 	Songs V
 
 ; e906e
-	dbw BANK(Music_Nothing), Music_Nothing ; 0xe91a3
-	dbw BANK(Music_TitleScreen), Music_TitleScreen ; 0xeb808
-	dbw BANK(Music_Route1), Music_Route1 ; 0xec000
-	dbw BANK(Music_Route3), Music_Route3 ; 0xec2ca
-	dbw BANK(Music_Route12), Music_Route12 ; 0xec506
-	dbw BANK(Music_MagnetTrain), Music_MagnetTrain ; 0xef5f0
-	dbw BANK(Music_KantoGymBattle), Music_KantoGymBattle ; 0xec720
-	dbw BANK(Music_KantoTrainerBattle), Music_KantoTrainerBattle ; 0xec9fa
-	dbw BANK(Music_KantoWildBattle), Music_KantoWildBattle ; 0xed06d
-	dbw BANK(Music_PokemonCenter), Music_PokemonCenter ; 0xed5c6
-	dbw BANK(Music_LookHiker), Music_LookHiker ; 0xf7411
-	dbw BANK(Music_LookLass), Music_LookLass ; 0xed79b
-	dbw BANK(Music_LookOfficer), Music_LookOfficer ; 0xed82d
-	dbw BANK(Music_HealPokemon), Music_HealPokemon ; 0xf0697
-	dbw BANK(Music_LavenderTown), Music_LavenderTown ; 0xef72f
-	dbw BANK(Music_Route2), Music_Route2 ; 0xed8dd
-	dbw BANK(Music_MtMoon), Music_MtMoon ; 0xedb29
-	dbw BANK(Music_ShowMeAround), Music_ShowMeAround ; 0xedbd8
-	dbw BANK(Music_GameCorner), Music_GameCorner ; 0xedd6d
-	dbw BANK(Music_Bicycle), Music_Bicycle ; 0xee119
-	dbw BANK(Music_HallOfFame), Music_HallOfFame ; 0xf05bf
-	dbw BANK(Music_ViridianCity), Music_ViridianCity ; 0xf4000
-	dbw BANK(Music_CeladonCity), Music_CeladonCity ; 0xf435b
-	dbw BANK(Music_TrainerVictory), Music_TrainerVictory ; 0xebeab
-	dbw BANK(Music_WildPokemonVictory), Music_WildPokemonVictory ; 0xf4518
-	dbw BANK(Music_GymLeaderVictory), Music_GymLeaderVictory ; 0xf462c
-	dbw BANK(Music_MtMoonSquare), Music_MtMoonSquare ; 0xf4815
-	dbw BANK(Music_Gym), Music_Gym ; 0xf48ae
-	dbw BANK(Music_PalletTown), Music_PalletTown ; 0xf4b0c
-	dbw BANK(Music_ProfOaksPokemonTalk), Music_ProfOaksPokemonTalk ; 0xf4c9f
-	dbw BANK(Music_ProfOak), Music_ProfOak ; 0xf4dea
-	dbw BANK(Music_LookRival), Music_LookRival ; 0xf4f79
-	dbw BANK(Music_AfterTheRivalFight), Music_AfterTheRivalFight ; 0xf5127
-	dbw BANK(Music_Surf), Music_Surf ; 0xf518a
-	dbw BANK(Music_Evolution), Music_Evolution ; 0xf06e1
-	dbw BANK(Music_NationalPark), Music_NationalPark ; 0xf54e8
-	dbw BANK(Music_Credits), Music_Credits ; 0x1f31c
-	dbw BANK(Music_AzaleaTown), Music_AzaleaTown ; 0xf57e8
-	dbw BANK(Music_CherrygroveCity), Music_CherrygroveCity ; 0xf5b03
-	dbw BANK(Music_LookKimonoGirl), Music_LookKimonoGirl ; 0xf79b8
-	dbw BANK(Music_UnionCave), Music_UnionCave ; 0xf5c60
-	dbw BANK(Music_JohtoWildBattle), Music_JohtoWildBattle ; 0xf5dc5
-	dbw BANK(Music_JohtoTrainerBattle), Music_JohtoTrainerBattle ; 0xf6096
-	dbw BANK(Music_Route30), Music_Route30 ; 0xefc01
-	dbw BANK(Music_EcruteakCity), Music_EcruteakCity ; 0xef2d0
-	dbw BANK(Music_VioletCity), Music_VioletCity ; 0xf0000
-	dbw BANK(Music_JohtoGymBattle), Music_JohtoGymBattle ; 0xea50d
-	dbw BANK(Music_ChampionBattle), Music_ChampionBattle ; 0xea9c1
-	dbw BANK(Music_RivalBattle), Music_RivalBattle ; 0xe974f
-	dbw BANK(Music_RocketBattle), Music_RocketBattle ; 0xe9b6f
-	dbw BANK(Music_ElmsLab), Music_ElmsLab ; 0xea040
-	dbw BANK(Music_DarkCave), Music_DarkCave ; 0xea2be
-	dbw BANK(Music_Route29), Music_Route29 ; 0xf0386
-	dbw BANK(Music_Route36), Music_Route36 ; 0xe94e9
-	dbw BANK(Music_SSAqua), Music_SSAqua ; 0xead99
-	dbw BANK(Music_LookYoungster), Music_LookYoungster ; 0xf66c3
-	dbw BANK(Music_LookBeauty), Music_LookBeauty ; 0xeee3e
-	dbw BANK(Music_LookRocket), Music_LookRocket ; 0xf74a2
-	dbw BANK(Music_LookPokemaniac), Music_LookPokemaniac ; 0xebde1
-	dbw BANK(Music_LookSage), Music_LookSage ; 0xee35e
-	dbw BANK(Music_NewBarkTown), Music_NewBarkTown ; 0xeb2d3
-	dbw BANK(Music_GoldenrodCity), Music_GoldenrodCity ; 0xeb453
-	dbw BANK(Music_VermilionCity), Music_VermilionCity ; 0xeb676
-	dbw BANK(Music_PokemonChannel), Music_PokemonChannel ; 0xee45f
-	dbw BANK(Music_PokeFluteChannel), Music_PokeFluteChannel ; 0xf7b13
-	dbw BANK(Music_TinTower), Music_TinTower ; 0xf6811
-	dbw BANK(Music_SproutTower), Music_SproutTower ; 0xf6974
-	dbw BANK(Music_BurnedTower), Music_BurnedTower ; 0xf6a99
-	dbw BANK(Music_Lighthouse), Music_Lighthouse ; 0xee569
-	dbw BANK(Music_LakeOfRage), Music_LakeOfRage ; 0xee6c5
-	dbw BANK(Music_IndigoPlateau), Music_IndigoPlateau ; 0xee852
-	dbw BANK(Music_Route37), Music_Route37 ; 0xee94b
-	dbw BANK(Music_RocketHideout), Music_RocketHideout ; 0xeeb75
-	dbw BANK(Music_DragonsDen), Music_DragonsDen ; 0xeece8
-	dbw BANK(Music_JohtoWildBattleNight), Music_JohtoWildBattleNight ; 0xf605c
-	dbw BANK(Music_RuinsOfAlphRadio), Music_RuinsOfAlphRadio ; 0xeedcb
-	dbw BANK(Music_SuccessfulCapture), Music_SuccessfulCapture ; 0xf4602
-	dbw BANK(Music_Route26), Music_Route26 ; 0xeefb2
-	dbw BANK(Music_Mom), Music_Mom ; 0xf6bf2
-	dbw BANK(Music_VictoryRoad), Music_VictoryRoad ; 0xf6c72
-	dbw BANK(Music_PokemonLullaby), Music_PokemonLullaby ; 0xf6d79
-	dbw BANK(Music_PokemonMarch), Music_PokemonMarch ; 0xf6e23
-	dbw BANK(Music_GoldSilverOpening), Music_GoldSilverOpening ; 0xf7055
-	dbw BANK(Music_GoldSilverOpening2), Music_GoldSilverOpening2 ; 0xf7308
-	dbw BANK(Music_MainMenu), Music_MainMenu ; 0xf78fd
-	dbw BANK(Music_RuinsOfAlphInterior), Music_RuinsOfAlphInterior ; 0xebd9e
-	dbw BANK(Music_RocketTheme), Music_RocketTheme ; 0xf766d
-	dbw BANK(Music_DancingHall), Music_DancingHall ; 0xef9bc
-	dbw BANK(Music_ContestResults), Music_ContestResults ; 0xefb3e
-	dbw BANK(Music_BugCatchingContest), Music_BugCatchingContest ; 0xf7c16
-	dbw BANK(Music_LakeOfRageRocketRadio), Music_LakeOfRageRocketRadio ; 0xef5b1
-	dbw BANK(Music_Printer), Music_Printer ; 0xf07fd
-	dbw BANK(Music_PostCredits), Music_PostCredits ; 0xcfd9e
+	dba Music_Nothing ; 0xe91a3
+	dba Music_TitleScreen ; 0xeb808
+	dba Music_Route1 ; 0xec000
+	dba Music_Route3 ; 0xec2ca
+	dba Music_Route12 ; 0xec506
+	dba Music_MagnetTrain ; 0xef5f0
+	dba Music_KantoGymBattle ; 0xec720
+	dba Music_KantoTrainerBattle ; 0xec9fa
+	dba Music_KantoWildBattle ; 0xed06d
+	dba Music_PokemonCenter ; 0xed5c6
+	dba Music_LookHiker ; 0xf7411
+	dba Music_LookLass ; 0xed79b
+	dba Music_LookOfficer ; 0xed82d
+	dba Music_HealPokemon ; 0xf0697
+	dba Music_LavenderTown ; 0xef72f
+	dba Music_Route2 ; 0xed8dd
+	dba Music_MtMoon ; 0xedb29
+	dba Music_ShowMeAround ; 0xedbd8
+	dba Music_GameCorner ; 0xedd6d
+	dba Music_Bicycle ; 0xee119
+	dba Music_HallOfFame ; 0xf05bf
+	dba Music_ViridianCity ; 0xf4000
+	dba Music_CeladonCity ; 0xf435b
+	dba Music_TrainerVictory ; 0xebeab
+	dba Music_WildPokemonVictory ; 0xf4518
+	dba Music_GymLeaderVictory ; 0xf462c
+	dba Music_MtMoonSquare ; 0xf4815
+	dba Music_Gym ; 0xf48ae
+	dba Music_PalletTown ; 0xf4b0c
+	dba Music_ProfOaksPokemonTalk ; 0xf4c9f
+	dba Music_ProfOak ; 0xf4dea
+	dba Music_LookRival ; 0xf4f79
+	dba Music_AfterTheRivalFight ; 0xf5127
+	dba Music_Surf ; 0xf518a
+	dba Music_Evolution ; 0xf06e1
+	dba Music_NationalPark ; 0xf54e8
+	dba Music_Credits ; 0x1f31c
+	dba Music_AzaleaTown ; 0xf57e8
+	dba Music_CherrygroveCity ; 0xf5b03
+	dba Music_LookKimonoGirl ; 0xf79b8
+	dba Music_UnionCave ; 0xf5c60
+	dba Music_JohtoWildBattle ; 0xf5dc5
+	dba Music_JohtoTrainerBattle ; 0xf6096
+	dba Music_Route30 ; 0xefc01
+	dba Music_EcruteakCity ; 0xef2d0
+	dba Music_VioletCity ; 0xf0000
+	dba Music_JohtoGymBattle ; 0xea50d
+	dba Music_ChampionBattle ; 0xea9c1
+	dba Music_RivalBattle ; 0xe974f
+	dba Music_RocketBattle ; 0xe9b6f
+	dba Music_ElmsLab ; 0xea040
+	dba Music_DarkCave ; 0xea2be
+	dba Music_Route29 ; 0xf0386
+	dba Music_Route36 ; 0xe94e9
+	dba Music_SSAqua ; 0xead99
+	dba Music_LookYoungster ; 0xf66c3
+	dba Music_LookBeauty ; 0xeee3e
+	dba Music_LookRocket ; 0xf74a2
+	dba Music_LookPokemaniac ; 0xebde1
+	dba Music_LookSage ; 0xee35e
+	dba Music_NewBarkTown ; 0xeb2d3
+	dba Music_GoldenrodCity ; 0xeb453
+	dba Music_VermilionCity ; 0xeb676
+	dba Music_PokemonChannel ; 0xee45f
+	dba Music_PokeFluteChannel ; 0xf7b13
+	dba Music_TinTower ; 0xf6811
+	dba Music_SproutTower ; 0xf6974
+	dba Music_BurnedTower ; 0xf6a99
+	dba Music_Lighthouse ; 0xee569
+	dba Music_LakeOfRage ; 0xee6c5
+	dba Music_IndigoPlateau ; 0xee852
+	dba Music_Route37 ; 0xee94b
+	dba Music_RocketHideout ; 0xeeb75
+	dba Music_DragonsDen ; 0xeece8
+	dba Music_JohtoWildBattleNight ; 0xf605c
+	dba Music_RuinsOfAlphRadio ; 0xeedcb
+	dba Music_SuccessfulCapture ; 0xf4602
+	dba Music_Route26 ; 0xeefb2
+	dba Music_Mom ; 0xf6bf2
+	dba Music_VictoryRoad ; 0xf6c72
+	dba Music_PokemonLullaby ; 0xf6d79
+	dba Music_PokemonMarch ; 0xf6e23
+	dba Music_GoldSilverOpening ; 0xf7055
+	dba Music_GoldSilverOpening2 ; 0xf7308
+	dba Music_MainMenu ; 0xf78fd
+	dba Music_RuinsOfAlphInterior ; 0xebd9e
+	dba Music_RocketTheme ; 0xf766d
+	dba Music_DancingHall ; 0xef9bc
+	dba Music_ContestResults ; 0xefb3e
+	dba Music_BugCatchingContest ; 0xf7c16
+	dba Music_LakeOfRageRocketRadio ; 0xef5b1
+	dba Music_Printer ; 0xf07fd
+	dba Music_PostCredits ; 0xcfd9e
 	
 ; Crystal adds the following songs:
 	
-	dbw BANK(Music_Clair), Music_Clair ; 0x1fa8d
-	dbw BANK(Music_MobileAdapterMenu), Music_MobileAdapterMenu ; 0x17801f
-	dbw BANK(Music_MobileAdapter), Music_MobileAdapter ; 0x1fc87
-	dbw BANK(Music_BuenasPassword), Music_BuenasPassword ; 0x178153
-	dbw BANK(Music_LookMysticalMan), Music_LookMysticalMan ; 0x17843b
-	dbw BANK(Music_CrystalOpening), Music_CrystalOpening ; 0x1786e8
-	dbw BANK(Music_BattleTowerTheme), Music_BattleTowerTheme ; 0x178889
-	dbw BANK(Music_SuicuneBattle), Music_SuicuneBattle ; 0x178b81
-	dbw BANK(Music_BattleTowerLobby), Music_BattleTowerLobby ; 0x17948b
-	dbw BANK(Music_MobileCenter), Music_MobileCenter ; 0x17961d
+	dba Music_Clair ; 0x1fa8d
+	dba Music_MobileAdapterMenu ; 0x17801f
+	dba Music_MobileAdapter ; 0x1fc87
+	dba Music_BuenasPassword ; 0x178153
+	dba Music_LookMysticalMan ; 0x17843b
+	dba Music_CrystalOpening ; 0x1786e8
+	dba Music_BattleTowerTheme ; 0x178889
+	dba Music_SuicuneBattle ; 0x178b81
+	dba Music_BattleTowerLobby ; 0x17948b
+	dba Music_MobileCenter ; 0x17961d
 ; e91a3
--- a/audio/sfx_pointers.asm
+++ b/audio/sfx_pointers.asm
@@ -1,212 +1,212 @@
 ; e927c
-	dbw BANK(Sfx_DexFanfare5079), Sfx_DexFanfare5079
-	dbw BANK(Sfx_Item), Sfx_Item
-	dbw BANK(Sfx_CaughtMon), Sfx_CaughtMon
-	dbw BANK(Sfx_PokeballsPlacedOnTable), Sfx_PokeballsPlacedOnTable
-	dbw BANK(Sfx_Potion), Sfx_Potion
-	dbw BANK(Sfx_FullHeal), Sfx_FullHeal
-	dbw BANK(Sfx_Menu), Sfx_Menu
-	dbw BANK(Sfx_ReadText), Sfx_ReadText
-	dbw BANK(Sfx_ReadText2), Sfx_ReadText2
-	dbw BANK(Sfx_DexFanfare2049), Sfx_DexFanfare2049
-	dbw BANK(Sfx_DexFanfare80109), Sfx_DexFanfare80109
-	dbw BANK(Sfx_Poison), Sfx_Poison
-	dbw BANK(Sfx_GotSafariBalls), Sfx_GotSafariBalls
-	dbw BANK(Sfx_BootPc), Sfx_BootPc
-	dbw BANK(Sfx_ShutDownPc), Sfx_ShutDownPc
-	dbw BANK(Sfx_ChoosePcOption), Sfx_ChoosePcOption
-	dbw BANK(Sfx_EscapeRope), Sfx_EscapeRope
-	dbw BANK(Sfx_PushButton), Sfx_PushButton
-	dbw BANK(Sfx_SecondPartOfItemfinder), Sfx_SecondPartOfItemfinder
-	dbw BANK(Sfx_WarpTo), Sfx_WarpTo
-	dbw BANK(Sfx_WarpFrom), Sfx_WarpFrom
-	dbw BANK(Sfx_ChangeDexMode), Sfx_ChangeDexMode
-	dbw BANK(Sfx_JumpOverLedge), Sfx_JumpOverLedge
-	dbw BANK(Sfx_GrassRustle), Sfx_GrassRustle
-	dbw BANK(Sfx_Fly), Sfx_Fly
-	dbw BANK(Sfx_Wrong), Sfx_Wrong
-	dbw BANK(Sfx_Squeak), Sfx_Squeak
-	dbw BANK(Sfx_Strength), Sfx_Strength
-	dbw BANK(Sfx_Boat), Sfx_Boat
-	dbw BANK(Sfx_WallOpen), Sfx_WallOpen
-	dbw BANK(Sfx_PlacePuzzlePieceDown), Sfx_PlacePuzzlePieceDown
-	dbw BANK(Sfx_EnterDoor), Sfx_EnterDoor
-	dbw BANK(Sfx_SwitchPokemon), Sfx_SwitchPokemon
-	dbw BANK(Sfx_Tally), Sfx_Tally
-	dbw BANK(Sfx_Transaction), Sfx_Transaction
-	dbw BANK(Sfx_ExitBuilding), Sfx_ExitBuilding
-	dbw BANK(Sfx_Bump), Sfx_Bump
-	dbw BANK(Sfx_Save), Sfx_Save
-	dbw BANK(Sfx_Pokeflute), Sfx_Pokeflute
-	dbw BANK(Sfx_ElevatorEnd), Sfx_ElevatorEnd
-	dbw BANK(Sfx_ThrowBall), Sfx_ThrowBall
-	dbw BANK(Sfx_BallPoof), Sfx_BallPoof
-	dbw BANK(Sfx_Unknown3A), Sfx_Unknown3A
-	dbw BANK(Sfx_Run), Sfx_Run
-	dbw BANK(Sfx_SlotMachineStart), Sfx_SlotMachineStart
-	dbw BANK(Sfx_Fanfare), Sfx_Fanfare
-	dbw BANK(Sfx_Peck), Sfx_Peck
-	dbw BANK(Sfx_Kinesis), Sfx_Kinesis
-	dbw BANK(Sfx_Lick), Sfx_Lick
-	dbw BANK(Sfx_Pound), Sfx_Pound
-	dbw BANK(Sfx_MovePuzzlePiece), Sfx_MovePuzzlePiece
-	dbw BANK(Sfx_CometPunch), Sfx_CometPunch
-	dbw BANK(Sfx_MegaPunch), Sfx_MegaPunch
-	dbw BANK(Sfx_Scratch), Sfx_Scratch
-	dbw BANK(Sfx_Vicegrip), Sfx_Vicegrip
-	dbw BANK(Sfx_RazorWind), Sfx_RazorWind
-	dbw BANK(Sfx_Cut), Sfx_Cut
-	dbw BANK(Sfx_WingAttack), Sfx_WingAttack
-	dbw BANK(Sfx_Whirlwind), Sfx_Whirlwind
-	dbw BANK(Sfx_Bind), Sfx_Bind
-	dbw BANK(Sfx_VineWhip), Sfx_VineWhip
-	dbw BANK(Sfx_DoubleKick), Sfx_DoubleKick
-	dbw BANK(Sfx_MegaKick), Sfx_MegaKick
-	dbw BANK(Sfx_Headbutt), Sfx_Headbutt
-	dbw BANK(Sfx_HornAttack), Sfx_HornAttack
-	dbw BANK(Sfx_Tackle), Sfx_Tackle
-	dbw BANK(Sfx_PoisonSting), Sfx_PoisonSting
-	dbw BANK(Sfx_Powder), Sfx_Powder
-	dbw BANK(Sfx_Doubleslap), Sfx_Doubleslap
-	dbw BANK(Sfx_Bite), Sfx_Bite
-	dbw BANK(Sfx_JumpKick), Sfx_JumpKick
-	dbw BANK(Sfx_Stomp), Sfx_Stomp
-	dbw BANK(Sfx_TailWhip), Sfx_TailWhip
-	dbw BANK(Sfx_KarateChop), Sfx_KarateChop
-	dbw BANK(Sfx_Submission), Sfx_Submission
-	dbw BANK(Sfx_WaterGun), Sfx_WaterGun
-	dbw BANK(Sfx_SwordsDance), Sfx_SwordsDance
-	dbw BANK(Sfx_Thunder), Sfx_Thunder
-	dbw BANK(Sfx_Supersonic), Sfx_Supersonic
-	dbw BANK(Sfx_Leer), Sfx_Leer
-	dbw BANK(Sfx_Ember), Sfx_Ember
-	dbw BANK(Sfx_Bubblebeam), Sfx_Bubblebeam
-	dbw BANK(Sfx_HydroPump), Sfx_HydroPump
-	dbw BANK(Sfx_Surf), Sfx_Surf
-	dbw BANK(Sfx_Psybeam), Sfx_Psybeam
-	dbw BANK(Sfx_Charge), Sfx_Charge
-	dbw BANK(Sfx_Thundershock), Sfx_Thundershock
-	dbw BANK(Sfx_Psychic), Sfx_Psychic
-	dbw BANK(Sfx_Screech), Sfx_Screech
-	dbw BANK(Sfx_BoneClub), Sfx_BoneClub
-	dbw BANK(Sfx_Sharpen), Sfx_Sharpen
-	dbw BANK(Sfx_EggBomb), Sfx_EggBomb
-	dbw BANK(Sfx_Sing), Sfx_Sing
-	dbw BANK(Sfx_HyperBeam), Sfx_HyperBeam
-	dbw BANK(Sfx_Shine), Sfx_Shine
-	dbw BANK(Sfx_Unknown5F), Sfx_Unknown5F
-	dbw BANK(Sfx_Unknown60), Sfx_Unknown60
-	dbw BANK(Sfx_Unknown61), Sfx_Unknown61
-	dbw BANK(Sfx_Unknown62), Sfx_Unknown62
-	dbw BANK(Sfx_Unknown63), Sfx_Unknown63
-	dbw BANK(Sfx_Burn), Sfx_Burn
-	dbw BANK(Sfx_TitleScreenEntrance), Sfx_TitleScreenEntrance
-	dbw BANK(Sfx_Unknown66), Sfx_Unknown66
-	dbw BANK(Sfx_GetCoinFromSlots), Sfx_GetCoinFromSlots
-	dbw BANK(Sfx_PayDay), Sfx_PayDay
-	dbw BANK(Sfx_Metronome), Sfx_Metronome
-	dbw BANK(Sfx_Call), Sfx_Call
-	dbw BANK(Sfx_HangUp), Sfx_HangUp
-	dbw BANK(Sfx_NoSignal), Sfx_NoSignal
-	dbw BANK(Sfx_Sandstorm), Sfx_Sandstorm
-	dbw BANK(Sfx_Elevator), Sfx_Elevator
-	dbw BANK(Sfx_Protect), Sfx_Protect
-	dbw BANK(Sfx_Sketch), Sfx_Sketch
-	dbw BANK(Sfx_RainDance), Sfx_RainDance
-	dbw BANK(Sfx_Aeroblast), Sfx_Aeroblast
-	dbw BANK(Sfx_Spark), Sfx_Spark
-	dbw BANK(Sfx_Curse), Sfx_Curse
-	dbw BANK(Sfx_Rage), Sfx_Rage
-	dbw BANK(Sfx_Thief), Sfx_Thief
-	dbw BANK(Sfx_Thief2), Sfx_Thief2
-	dbw BANK(Sfx_SpiderWeb), Sfx_SpiderWeb
-	dbw BANK(Sfx_MindReader), Sfx_MindReader
-	dbw BANK(Sfx_Nightmare), Sfx_Nightmare
-	dbw BANK(Sfx_Snore), Sfx_Snore
-	dbw BANK(Sfx_SweetKiss), Sfx_SweetKiss
-	dbw BANK(Sfx_SweetKiss2), Sfx_SweetKiss2
-	dbw BANK(Sfx_BellyDrum), Sfx_BellyDrum
-	dbw BANK(Sfx_Unknown7F), Sfx_Unknown7F
-	dbw BANK(Sfx_SludgeBomb), Sfx_SludgeBomb
-	dbw BANK(Sfx_Foresight), Sfx_Foresight
-	dbw BANK(Sfx_Spite), Sfx_Spite
-	dbw BANK(Sfx_Outrage), Sfx_Outrage
-	dbw BANK(Sfx_PerishSong), Sfx_PerishSong
-	dbw BANK(Sfx_GigaDrain), Sfx_GigaDrain
-	dbw BANK(Sfx_Attract), Sfx_Attract
-	dbw BANK(Sfx_Kinesis2), Sfx_Kinesis2
-	dbw BANK(Sfx_ZapCannon), Sfx_ZapCannon
-	dbw BANK(Sfx_MeanLook), Sfx_MeanLook
-	dbw BANK(Sfx_HealBell), Sfx_HealBell
-	dbw BANK(Sfx_Return), Sfx_Return
-	dbw BANK(Sfx_ExpBar), Sfx_ExpBar
-	dbw BANK(Sfx_MilkDrink), Sfx_MilkDrink
-	dbw BANK(Sfx_Present), Sfx_Present
-	dbw BANK(Sfx_MorningSun), Sfx_MorningSun
-	dbw BANK(Sfx_LevelUp), Sfx_LevelUp
-	dbw BANK(Sfx_KeyItem), Sfx_KeyItem
-	dbw BANK(Sfx_Fanfare2), Sfx_Fanfare2
-	dbw BANK(Sfx_RegisterPhoneNumber), Sfx_RegisterPhoneNumber
-	dbw BANK(Sfx_3RdPlace), Sfx_3RdPlace
-	dbw BANK(Sfx_GetEggFromDaycareMan), Sfx_GetEggFromDaycareMan
-	dbw BANK(Sfx_GetEggFromDaycareLady), Sfx_GetEggFromDaycareLady
-	dbw BANK(Sfx_MoveDeleted), Sfx_MoveDeleted
-	dbw BANK(Sfx_2ndPlace), Sfx_2ndPlace
-	dbw BANK(Sfx_1stPlace), Sfx_1stPlace
-	dbw BANK(Sfx_ChooseACard), Sfx_ChooseACard
-	dbw BANK(Sfx_GetTm), Sfx_GetTm
-	dbw BANK(Sfx_GetBadge), Sfx_GetBadge
-	dbw BANK(Sfx_QuitSlots), Sfx_QuitSlots
-	dbw BANK(Sfx_EggCrack), Sfx_EggCrack
-	dbw BANK(Sfx_DexFanfareLessThan20), Sfx_DexFanfareLessThan20
-	dbw BANK(Sfx_DexFanfare140169), Sfx_DexFanfare140169
-	dbw BANK(Sfx_DexFanfare170199), Sfx_DexFanfare170199
-	dbw BANK(Sfx_DexFanfare200229), Sfx_DexFanfare200229
-	dbw BANK(Sfx_DexFanfare230Plus), Sfx_DexFanfare230Plus
-	dbw BANK(Sfx_Evolved), Sfx_Evolved
-	dbw BANK(Sfx_MasterBall), Sfx_MasterBall
-	dbw BANK(Sfx_EggHatch), Sfx_EggHatch
-	dbw BANK(Sfx_GsIntroCharizardFireball), Sfx_GsIntroCharizardFireball
-	dbw BANK(Sfx_GsIntroPokemonAppears), Sfx_GsIntroPokemonAppears
-	dbw BANK(Sfx_Flash), Sfx_Flash
-	dbw BANK(Sfx_GameFreakLogoGs), Sfx_GameFreakLogoGs
-	dbw BANK(Sfx_NotVeryEffective), Sfx_NotVeryEffective
-	dbw BANK(Sfx_Damage), Sfx_Damage
-	dbw BANK(Sfx_SuperEffective), Sfx_SuperEffective
-	dbw BANK(Sfx_BallBounce), Sfx_BallBounce
-	dbw BANK(Sfx_Moonlight), Sfx_Moonlight
-	dbw BANK(Sfx_Encore), Sfx_Encore
-	dbw BANK(Sfx_BeatUp), Sfx_BeatUp
-	dbw BANK(Sfx_BatonPass), Sfx_BatonPass
-	dbw BANK(Sfx_BallWiggle), Sfx_BallWiggle
-	dbw BANK(Sfx_SweetScent), Sfx_SweetScent
-	dbw BANK(Sfx_SweetScent2), Sfx_SweetScent2
-	dbw BANK(Sfx_HitEndOfExpBar), Sfx_HitEndOfExpBar
-	dbw BANK(Sfx_GiveTrademon), Sfx_GiveTrademon
-	dbw BANK(Sfx_GetTrademon), Sfx_GetTrademon
-	dbw BANK(Sfx_TrainArrived), Sfx_TrainArrived
-	dbw BANK(Sfx_StopSlot), Sfx_StopSlot
-	dbw BANK(Sfx_2Boops), Sfx_2Boops
-	dbw BANK(Sfx_GlassTing), Sfx_GlassTing
-	dbw BANK(Sfx_GlassTing2), Sfx_GlassTing2
+	dba Sfx_DexFanfare5079
+	dba Sfx_Item
+	dba Sfx_CaughtMon
+	dba Sfx_PokeballsPlacedOnTable
+	dba Sfx_Potion
+	dba Sfx_FullHeal
+	dba Sfx_Menu
+	dba Sfx_ReadText
+	dba Sfx_ReadText2
+	dba Sfx_DexFanfare2049
+	dba Sfx_DexFanfare80109
+	dba Sfx_Poison
+	dba Sfx_GotSafariBalls
+	dba Sfx_BootPc
+	dba Sfx_ShutDownPc
+	dba Sfx_ChoosePcOption
+	dba Sfx_EscapeRope
+	dba Sfx_PushButton
+	dba Sfx_SecondPartOfItemfinder
+	dba Sfx_WarpTo
+	dba Sfx_WarpFrom
+	dba Sfx_ChangeDexMode
+	dba Sfx_JumpOverLedge
+	dba Sfx_GrassRustle
+	dba Sfx_Fly
+	dba Sfx_Wrong
+	dba Sfx_Squeak
+	dba Sfx_Strength
+	dba Sfx_Boat
+	dba Sfx_WallOpen
+	dba Sfx_PlacePuzzlePieceDown
+	dba Sfx_EnterDoor
+	dba Sfx_SwitchPokemon
+	dba Sfx_Tally
+	dba Sfx_Transaction
+	dba Sfx_ExitBuilding
+	dba Sfx_Bump
+	dba Sfx_Save
+	dba Sfx_Pokeflute
+	dba Sfx_ElevatorEnd
+	dba Sfx_ThrowBall
+	dba Sfx_BallPoof
+	dba Sfx_Unknown3A
+	dba Sfx_Run
+	dba Sfx_SlotMachineStart
+	dba Sfx_Fanfare
+	dba Sfx_Peck
+	dba Sfx_Kinesis
+	dba Sfx_Lick
+	dba Sfx_Pound
+	dba Sfx_MovePuzzlePiece
+	dba Sfx_CometPunch
+	dba Sfx_MegaPunch
+	dba Sfx_Scratch
+	dba Sfx_Vicegrip
+	dba Sfx_RazorWind
+	dba Sfx_Cut
+	dba Sfx_WingAttack
+	dba Sfx_Whirlwind
+	dba Sfx_Bind
+	dba Sfx_VineWhip
+	dba Sfx_DoubleKick
+	dba Sfx_MegaKick
+	dba Sfx_Headbutt
+	dba Sfx_HornAttack
+	dba Sfx_Tackle
+	dba Sfx_PoisonSting
+	dba Sfx_Powder
+	dba Sfx_Doubleslap
+	dba Sfx_Bite
+	dba Sfx_JumpKick
+	dba Sfx_Stomp
+	dba Sfx_TailWhip
+	dba Sfx_KarateChop
+	dba Sfx_Submission
+	dba Sfx_WaterGun
+	dba Sfx_SwordsDance
+	dba Sfx_Thunder
+	dba Sfx_Supersonic
+	dba Sfx_Leer
+	dba Sfx_Ember
+	dba Sfx_Bubblebeam
+	dba Sfx_HydroPump
+	dba Sfx_Surf
+	dba Sfx_Psybeam
+	dba Sfx_Charge
+	dba Sfx_Thundershock
+	dba Sfx_Psychic
+	dba Sfx_Screech
+	dba Sfx_BoneClub
+	dba Sfx_Sharpen
+	dba Sfx_EggBomb
+	dba Sfx_Sing
+	dba Sfx_HyperBeam
+	dba Sfx_Shine
+	dba Sfx_Unknown5F
+	dba Sfx_Unknown60
+	dba Sfx_Unknown61
+	dba Sfx_Unknown62
+	dba Sfx_Unknown63
+	dba Sfx_Burn
+	dba Sfx_TitleScreenEntrance
+	dba Sfx_Unknown66
+	dba Sfx_GetCoinFromSlots
+	dba Sfx_PayDay
+	dba Sfx_Metronome
+	dba Sfx_Call
+	dba Sfx_HangUp
+	dba Sfx_NoSignal
+	dba Sfx_Sandstorm
+	dba Sfx_Elevator
+	dba Sfx_Protect
+	dba Sfx_Sketch
+	dba Sfx_RainDance
+	dba Sfx_Aeroblast
+	dba Sfx_Spark
+	dba Sfx_Curse
+	dba Sfx_Rage
+	dba Sfx_Thief
+	dba Sfx_Thief2
+	dba Sfx_SpiderWeb
+	dba Sfx_MindReader
+	dba Sfx_Nightmare
+	dba Sfx_Snore
+	dba Sfx_SweetKiss
+	dba Sfx_SweetKiss2
+	dba Sfx_BellyDrum
+	dba Sfx_Unknown7F
+	dba Sfx_SludgeBomb
+	dba Sfx_Foresight
+	dba Sfx_Spite
+	dba Sfx_Outrage
+	dba Sfx_PerishSong
+	dba Sfx_GigaDrain
+	dba Sfx_Attract
+	dba Sfx_Kinesis2
+	dba Sfx_ZapCannon
+	dba Sfx_MeanLook
+	dba Sfx_HealBell
+	dba Sfx_Return
+	dba Sfx_ExpBar
+	dba Sfx_MilkDrink
+	dba Sfx_Present
+	dba Sfx_MorningSun
+	dba Sfx_LevelUp
+	dba Sfx_KeyItem
+	dba Sfx_Fanfare2
+	dba Sfx_RegisterPhoneNumber
+	dba Sfx_3RdPlace
+	dba Sfx_GetEggFromDaycareMan
+	dba Sfx_GetEggFromDaycareLady
+	dba Sfx_MoveDeleted
+	dba Sfx_2ndPlace
+	dba Sfx_1stPlace
+	dba Sfx_ChooseACard
+	dba Sfx_GetTm
+	dba Sfx_GetBadge
+	dba Sfx_QuitSlots
+	dba Sfx_EggCrack
+	dba Sfx_DexFanfareLessThan20
+	dba Sfx_DexFanfare140169
+	dba Sfx_DexFanfare170199
+	dba Sfx_DexFanfare200229
+	dba Sfx_DexFanfare230Plus
+	dba Sfx_Evolved
+	dba Sfx_MasterBall
+	dba Sfx_EggHatch
+	dba Sfx_GsIntroCharizardFireball
+	dba Sfx_GsIntroPokemonAppears
+	dba Sfx_Flash
+	dba Sfx_GameFreakLogoGs
+	dba Sfx_NotVeryEffective
+	dba Sfx_Damage
+	dba Sfx_SuperEffective
+	dba Sfx_BallBounce
+	dba Sfx_Moonlight
+	dba Sfx_Encore
+	dba Sfx_BeatUp
+	dba Sfx_BatonPass
+	dba Sfx_BallWiggle
+	dba Sfx_SweetScent
+	dba Sfx_SweetScent2
+	dba Sfx_HitEndOfExpBar
+	dba Sfx_GiveTrademon
+	dba Sfx_GetTrademon
+	dba Sfx_TrainArrived
+	dba Sfx_StopSlot
+	dba Sfx_2Boops
+	dba Sfx_GlassTing
+	dba Sfx_GlassTing2
 
 ; Crystal adds the following SFX:
 
-	dbw BANK(Sfx_IntroUnown1), Sfx_IntroUnown1
-	dbw BANK(Sfx_IntroUnown2), Sfx_IntroUnown2
-	dbw BANK(Sfx_IntroUnown3), Sfx_IntroUnown3
-	dbw BANK(Sfx_DittoPopUp), Sfx_DittoPopUp
-	dbw BANK(Sfx_DittoTransform), Sfx_DittoTransform
-	dbw BANK(Sfx_IntroSuicune1), Sfx_IntroSuicune1
-	dbw BANK(Sfx_IntroPichu), Sfx_IntroPichu
-	dbw BANK(Sfx_IntroSuicune2), Sfx_IntroSuicune2
-	dbw BANK(Sfx_IntroSuicune3), Sfx_IntroSuicune3
-	dbw BANK(Sfx_DittoBounce), Sfx_DittoBounce
-	dbw BANK(Sfx_IntroSuicune4), Sfx_IntroSuicune4
-	dbw BANK(Sfx_GameFreakPresents), Sfx_GameFreakPresents
-	dbw BANK(Sfx_Tingle), Sfx_Tingle
-	dbw BANK(Sfx_UnknownCB), Sfx_UnknownCB
-	dbw BANK(Sfx_TwoPcBeeps), Sfx_TwoPcBeeps
-	dbw BANK(Sfx_4NoteDitty), Sfx_4NoteDitty
-	dbw BANK(Sfx_Twinkle), Sfx_Twinkle
+	dba Sfx_IntroUnown1
+	dba Sfx_IntroUnown2
+	dba Sfx_IntroUnown3
+	dba Sfx_DittoPopUp
+	dba Sfx_DittoTransform
+	dba Sfx_IntroSuicune1
+	dba Sfx_IntroPichu
+	dba Sfx_IntroSuicune2
+	dba Sfx_IntroSuicune3
+	dba Sfx_DittoBounce
+	dba Sfx_IntroSuicune4
+	dba Sfx_GameFreakPresents
+	dba Sfx_Tingle
+	dba Sfx_UnknownCB
+	dba Sfx_TwoPcBeeps
+	dba Sfx_4NoteDitty
+	dba Sfx_Twinkle
 ; e94e9
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -16,7 +16,7 @@
 	bit SUBSTATUS_CANT_RUN, a
 	jr nz, DontSwitch
 
-	ld a, [wc731]
+	ld a, [wEnemyWrapCount]
 	and a
 	jr nz, DontSwitch
 
@@ -44,8 +44,8 @@
 ; 38045
 
 SwitchOften: ; 38045
-	callab Function34941
-	ld a, [wc717]
+	callab CheckAbleToSwitch
+	ld a, [wEnemySwitchMonParam]
 	and $f0
 	jp z, DontSwitch
 
@@ -52,7 +52,7 @@
 	cp $10
 	jr nz, .not_10
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jr c, .switch
 	jp DontSwitch
 .not_10
@@ -60,7 +60,7 @@
 	cp $20
 	jr nz, .not_20
 	call Random
-	cp 200
+	cp -1 + 79 percent
 	jr c, .switch
 	jp DontSwitch
 .not_20
@@ -67,21 +67,21 @@
 
 	; $30
 	call Random
-	cp 10
+	cp 4 percent
 	jp c, DontSwitch
 
 .switch
-	ld a, [wc717]
+	ld a, [wEnemySwitchMonParam]
 	and $f
 	inc a
 	; In register 'a' is the number (1-6) of the Pkmn to switch to
-	ld [wc718], a
+	ld [wEnemySwitchMonIndex], a
 	jp AI_TrySwitch
 ; 38083
 
 SwitchRarely: ; 38083
-	callab Function34941
-	ld a, [wc717]
+	callab CheckAbleToSwitch
+	ld a, [wEnemySwitchMonParam]
 	and $f0
 	jp z, DontSwitch
 
@@ -88,7 +88,7 @@
 	cp $10
 	jr nz, .not_10
 	call Random
-	cp 20
+	cp 8 percent
 	jr c, .switch
 	jp DontSwitch
 .not_10
@@ -96,7 +96,7 @@
 	cp $20
 	jr nz, .not_20
 	call Random
-	cp 30
+	cp 12 percent
 	jr c, .switch
 	jp DontSwitch
 .not_20
@@ -103,20 +103,20 @@
 
 	; $30
 	call Random
-	cp 200
+	cp -1 + 79 percent
 	jp c, DontSwitch
 
 .switch
-	ld a, [wc717]
+	ld a, [wEnemySwitchMonParam]
 	and $f
 	inc a
-	ld [wc718], a
+	ld [wEnemySwitchMonIndex], a
 	jp AI_TrySwitch
 ; 380c1
 
 SwitchSometimes: ; 380c1
-	callab Function34941
-	ld a, [wc717]
+	callab CheckAbleToSwitch
+	ld a, [wEnemySwitchMonParam]
 	and $f0
 	jp z, DontSwitch
 
@@ -123,7 +123,7 @@
 	cp $10
 	jr nz, .not_10
 	call Random
-	cp 50
+	cp -1 + 20 percent
 	jr c, .switch
 	jp DontSwitch
 .not_10
@@ -131,7 +131,7 @@
 	cp $20
 	jr nz, .not_20
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jr c, .switch
 	jp DontSwitch
 .not_20
@@ -138,14 +138,14 @@
 
 	; $30
 	call Random
-	cp 50
+	cp -1 + 20 percent
 	jp c, DontSwitch
 
 .switch
-	ld a, [wc717]
+	ld a, [wEnemySwitchMonParam]
 	and $f
 	inc a
-	ld [wc718], a
+	ld [wEnemySwitchMonIndex], a
 	jp AI_TrySwitch
 ; 380ff
 
@@ -163,9 +163,9 @@
 	and a
 	ret nz
 
-	ld a, [wc650]
+	ld a, [wEnemyTrainerItem1]
 	ld b, a
-	ld a, [wc651]
+	ld a, [wEnemyTrainerItem2]
 	or b
 	ret z
 
@@ -180,7 +180,7 @@
 	ld b, h
 	ld c, l
 	ld hl, AI_Items
-	ld de, wc650
+	ld de, wEnemyTrainerItem1
 .loop
 	ld a, [hl]
 	and a
@@ -225,7 +225,7 @@
 	xor a
 	ld [de], a
 	inc a
-	ld [wc70f], a
+	ld [wEnemyGoesFirst], a
 
 	ld hl, EnemySubStatus3
 	res SUBSTATUS_BIDE, [hl]
@@ -233,7 +233,7 @@
 	xor a
 	ld [EnemyFuryCutterCount], a
 	ld [EnemyProtectCount], a
-	ld [wc72c], a
+	ld [wEnemyRageCounter], a
 
 	ld hl, EnemySubStatus4
 	res SUBSTATUS_RAGE, [hl]
@@ -250,7 +250,7 @@
 	ld d, a
 	ld e, 0
 	ld hl, OTPartyMon1Level
-	ld bc, OTPartyMon2 - OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 .next
 	ld a, [hl]
 	cp e
@@ -314,7 +314,7 @@
 	bit ALWAYS_USE_F, a
 	jp nz, .Use
 	call Random
-	cp 50
+	cp -1 + 20 percent
 	jp c, .Use
 	jp .DontUse
 
@@ -326,7 +326,7 @@
 	cp 4
 	jr c, .FailToxicCheck
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jp c, .Use
 .FailToxicCheck
 	ld a, [EnemyMonStatus]
@@ -367,7 +367,7 @@
 	callab AICheckEnemyQuarterHP
 	jp nc, .UseHealItem
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jp c, .UseHealItem
 	jp .DontUse
 
@@ -375,7 +375,7 @@
 	callab AICheckEnemyQuarterHP
 	jp c, .DontUse
 	call Random
-	cp $32
+	cp -1 + 20 percent
 	jp c, .DontUse
 	jr .UseHealItem
 
@@ -385,7 +385,7 @@
 	callab AICheckEnemyQuarterHP
 	jp nc, .UseHealItem
 	call Random
-	cp $32
+	cp -1 + 20 percent
 	jp nc, .DontUse
 
 .UseHealItem: ; 38281 (e:4281)
@@ -418,44 +418,44 @@
 
 .asm_382ae: ; This appears to be unused
 	callab AICheckEnemyMaxHP
-	jr c, .asm_382e4
+	jr c, .dont_use
 	push bc
 	ld de, EnemyMonMaxHP + 1
 	ld hl, EnemyMonHP + 1
 	ld a, [de]
 	sub [hl]
-	jr z, .asm_382e7
+	jr z, .check_40_percent
 	dec hl
 	dec de
 	ld c, a
 	sbc [hl]
 	and a
-	jr nz, .asm_382e7
+	jr nz, .check_40_percent
 	ld a, c
 	cp b
-	jp c, .asm_382d5
+	jp c, .check_50_percent
 	callab AICheckEnemyQuarterHP
-	jr c, .asm_382e7
+	jr c, .check_40_percent
 
-.asm_382d5
+.check_50_percent
 	pop bc
 	ld a, [bc]
 	bit UNKNOWN_USE_F, a
 	jp z, .Use
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jp c, .Use
 
-.asm_382e4
+.dont_use
 	jp .DontUse
 
-.asm_382e7
+.check_40_percent
 	pop bc
 	ld a, [bc]
 	bit UNKNOWN_USE_F, a
 	jp z, .DontUse
 	call Random
-	cp $64
+	cp 1 + 39 percent
 	jp c, .Use
 	jp .DontUse
 ; 382f9
@@ -517,13 +517,13 @@
 	bit ALWAYS_USE_F, a
 	jp nz, .Use
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jp c, .DontUse
 	ld a, [bc]
 	bit CONTEXT_USE_F, a
 	jp nz, .Use
 	call Random
-	cp $80
+	cp 1 + 50 percent
 	jp c, .DontUse
 	jp .Use
 .notfirstturnout
@@ -531,7 +531,7 @@
 	bit ALWAYS_USE_F, a
 	jp z, .DontUse
 	call Random
-	cp $32
+	cp -1 + 20 percent
 	jp nc, .DontUse
 	jp .Use
 
@@ -665,7 +665,7 @@
 	xor a
 	ld [wd10a], a
 	call AIUsedItemSound
-	predef Functionc6e0
+	predef AnimateHPBar
 	jp AIUpdateHUD
 
 
@@ -685,7 +685,7 @@
 	inc d
 .fainted
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	dec c
@@ -701,16 +701,17 @@
 AI_Switch: ; 3846c
 	ld a, $1
 	ld [wEnemyIsSwitching], a
-	ld [wc70f], a
+	ld [wEnemyGoesFirst], a
 	ld hl, EnemySubStatus4
 	res SUBSTATUS_RAGE, [hl]
 	xor a
 	ld [hBattleTurn], a
-	callab Function3dc5b
+	callab PursuitSwitch
+
 	push af
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -718,18 +719,20 @@
 	ld bc, $0004
 	call CopyBytes
 	pop af
+
 	jr c, .skiptext
 	ld hl, TextJump_EnemyWithdrew
 	call PrintText
+
 .skiptext
-	ld a, $1
+	ld a, 1
 	ld [wd264], a
 	callab NewEnemyMonStatus
 	callab ResetEnemyStatLevels
 	ld hl, PlayerSubStatus1
 	res SUBSTATUS_IN_LOVE, [hl]
-	callba Function3d4e1
-	callba Function3d57a
+	callba EnemySwitch
+	callba ResetBattleParticipants
 	xor a
 	ld [wd264], a
 	ld a, [wLinkMode]
@@ -754,7 +757,7 @@
 AI_HealStatus: ; 384e0
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	xor a
 	ld [hl], a
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -176,7 +176,7 @@
 	push de
 	ld a, 1
 	ld [hBattleTurn], a
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	pop de
 	pop bc
 	pop hl
@@ -431,7 +431,7 @@
 	push hl
 	ld a, 1
 	ld [hBattleTurn], a
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	pop hl
 
 ; 60% chance to discourage this move if not very effective.
@@ -512,7 +512,7 @@
 
 	push hl
 	push bc
-	callba HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callba BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp $a
 	pop bc
@@ -576,7 +576,7 @@
 
 ; Unless this is the enemy's last Pokemon...
 	push hl
-	callba CountEnemyAliveMons
+	callba FindAliveEnemyMons
 	pop hl
 	jr nc, .asm_388b7
 
@@ -981,7 +981,7 @@
 ; Consider player's type(s) if its moves are unknown.
 
 	push hl
-	callab Function3484e
+	callab CheckPlayerMoveTypeMatchups
 	ld a, [wc716]
 	cp 10 ; neutral
 	pop hl
@@ -1062,7 +1062,7 @@
 ; Bind, Wrap, Fire Spin, Clamp
 
 ; 50% chance to discourage this move if the player is already trapped.
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	and a
 	jr nz, .asm_38a8b
 
@@ -1343,11 +1343,11 @@
 
 ; Encourage this move based on Rage's counter.	
 .asm_38b8c
-	ld a, [wc72c]
+	ld a, [wEnemyRageCounter]
 	cp $2
 	ret c
 	dec [hl]
-	ld a, [wc72c]
+	ld a, [wEnemyRageCounter]
 	cp $3
 	ret c
 	dec [hl]
@@ -1384,7 +1384,7 @@
 
 	ld a, $1
 	ld [hBattleTurn], a
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 
 	ld a, [wd265]
 	cp $a
@@ -1504,7 +1504,7 @@
 	push hl
 	ld a, [wEnemyMoveStruct + MOVE_TYPE]
 	ld hl, EnemyMonType1
-	predef Function347d3
+	predef CheckTypeMatchup
 
 	pop hl
 	ld a, [wd265]
@@ -1719,7 +1719,7 @@
 	ld b, a
 	ld c, 0
 	ld hl, OTPartyMon1HP
-	ld de, OTPartyMon2 - OTPartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 
 .loop
 	push hl
@@ -1783,8 +1783,8 @@
 	ld [hBattleTurn], a
 	push hl
 	callab EnemyAttackDamage
-	callab BattleCommand_DamageCalcWithStats
-	callab BattleCommand_CalcDamageTypeMultiplier
+	callab BattleCommand_DamageCalc
+	callab BattleCommand_Stab
 	pop hl
 	ld a, [CurDamage + 1]
 	ld c, a
@@ -1830,7 +1830,7 @@
 	xor a
 	ld [hBattleTurn], a
 
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 
 	ld a, [wd265]
 	cp $a
@@ -1908,7 +1908,7 @@
 
 ; Otherwise, discourage this move unless the player only has not very effective moves against the enemy.	
 	push hl
-	callab Function3484e
+	callab CheckPlayerMoveTypeMatchups
 	ld a, [wc716]
 	cp $b ; not very effective
 	pop hl
@@ -1933,7 +1933,7 @@
 	ld b, a
 	ld c, 0
 	ld hl, PartyMon1HP
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 
 .loop
 	ld a, [CurBattleMon]
@@ -2028,7 +2028,7 @@
 	jp nz, AIDiscourageMove
 
 	push hl
-	callba CountEnemyAliveMons
+	callba FindAliveEnemyMons
 	pop hl
 	jr nc, .asm_38eb0
 
@@ -2160,7 +2160,7 @@
 
 AI_Smart_PerishSong: ; 38f4a
 	push hl
-	callab CountEnemyAliveMons
+	callab FindAliveEnemyMons
 	pop hl
 	jr c, .no
 
@@ -2169,7 +2169,7 @@
 	jr nz, .yes
 
 	push hl
-	callab Function3484e
+	callab CheckPlayerMoveTypeMatchups
 	ld a, [wc716]
 	cp 10 ; 1.0
 	pop hl
@@ -2431,7 +2431,7 @@
 ; Consider player's type(s) if its moves are unknown.
 
 	push hl
-	callab Function3484e
+	callab CheckPlayerMoveTypeMatchups
 	ld a, [wc716]
 	cp 10 ; neutral
 	pop hl
@@ -2466,7 +2466,7 @@
 ; 80% chance to greatly encourage this move if the enemy is
 ; trapped (Bind effect), seeded, or scattered with spikes.
 
-	ld a, [wc731]
+	ld a, [wEnemyWrapCount]
 	and a
 	jr nz, .asm_39097
 
@@ -2496,7 +2496,7 @@
 	
 ; Calculate Hidden Power's type and base power based on enemy's DVs.
 	callab HiddenPowerDamage
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	pop hl
 
 ; Discourage Hidden Power if not very effective.
@@ -2859,7 +2859,7 @@
 AI_Smart_Stomp: ; 39200
 ; 80% chance to encourage this move if the player has used Minimize.
 
-	ld a, [wc6fe]
+	ld a, [wPlayerMinimized]
 	and a
 	ret z
 
@@ -3375,13 +3375,13 @@
 	ld hl, .ConstantDamageEffects
 	call IsInArray
 	jr nc, .asm_39400
-	callab BattleCommand3f
+	callab BattleCommand_ConstantDamage
 	ret
 
 .asm_39400
 	callab EnemyAttackDamage
-	callab BattleCommand_DamageCalcWithStats
-	callab BattleCommand_CalcDamageTypeMultiplier
+	callab BattleCommand_DamageCalc
+	callab BattleCommand_Stab
 	ret
 
 .ConstantDamageEffects
@@ -3498,7 +3498,7 @@
 	push de
 	ld a, 1
 	ld [hBattleTurn], a
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	pop de
 	pop bc
 	pop hl
--- /dev/null
+++ b/battle/ai/switch.asm
@@ -1,0 +1,666 @@
+CheckPlayerMoveTypeMatchups: ; 3484e
+; Check how well the moves you've already used
+; fare against the enemy's Pokemon.  Used to
+; score a potential switch.
+	push hl
+	push de
+	push bc
+	ld a, 10
+	ld [wc716], a
+	ld hl, PlayerUsedMoves
+	ld a, [hl]
+	and a
+	jr z, .unknown_moves
+
+	ld d, NUM_MOVES
+	ld e, 0
+.loop
+	ld a, [hli]
+	and a
+	jr z, .exit
+	push hl
+	dec a
+	ld hl, Moves + MOVE_POWER
+	call GetMoveAttr
+	and a
+	jr z, .next
+
+	inc hl
+	call GetMoveByte
+	ld hl, EnemyMonType
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	cp 10 + 1 ; 1.0 + 0.1
+	jr nc, .super_effective
+	and a
+	jr z, .next
+	cp 10 ; 1.0
+	jr nc, .neutral
+
+.not_very_effective
+	ld a, e
+	cp 1 ; 0.1
+	jr nc, .next
+	ld e, 1
+	jr .next
+
+.neutral
+	ld e, 2
+	jr .next
+
+.super_effective
+	call .DecreaseScore
+	pop hl
+	jr .done
+
+.next
+	pop hl
+	dec d
+	jr nz, .loop
+
+.exit
+	ld a, e
+	cp 2
+	jr z, .done
+	call .IncreaseScore
+	ld a, e
+	and a
+	jr nz, .done
+	call .IncreaseScore
+	jr .done
+
+.unknown_moves
+	ld a, [BattleMonType1]
+	ld b, a
+	ld hl, EnemyMonType1
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	cp 10 + 1 ; 1.0 + 0.1
+	jr c, .ok
+	call .DecreaseScore
+.ok
+	ld a, [BattleMonType2]
+	cp b
+	jr z, .ok2
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	cp 10 + 1 ; 1.0 + 0.1
+	jr c, .ok2
+	call .DecreaseScore
+.ok2
+
+.done
+	call .CheckEnemyMoveMatchups
+	pop bc
+	pop de
+	pop hl
+	ret
+; 348de
+
+
+.CheckEnemyMoveMatchups: ; 348de
+	ld de, EnemyMonMoves
+	ld b, NUM_MOVES + 1
+	ld c, 0
+
+	ld a, [wTypeMatchup]
+	push af
+.loop2
+	dec b
+	jr z, .exit2
+
+	ld a, [de]
+	and a
+	jr z, .exit2
+
+	inc de
+	dec a
+	ld hl, Moves + MOVE_POWER
+	call GetMoveAttr
+	and a
+	jr z, .loop2
+
+	inc hl
+	call GetMoveByte
+	ld hl, BattleMonType1
+	call CheckTypeMatchup
+
+	ld a, [wTypeMatchup]
+	; immune
+	and a
+	jr z, .loop2
+
+	; not very effective
+	inc c
+	cp 10
+	jr c, .loop2
+
+	; neutral
+rept 5
+	inc c
+endr
+	cp 10
+	jr z, .loop2
+
+	; super effective
+	ld c, 100
+	jr .loop2
+
+.exit2
+	pop af
+	ld [wTypeMatchup], a
+
+	ld a, c
+	and a
+	jr z, .doubledown ; double down
+	cp 5
+	jr c, .DecreaseScore ; down
+	cp 100
+	ret c
+	jr .IncreaseScore ; up
+
+.doubledown
+	call .DecreaseScore
+	
+	; fallthrough
+; 34931
+
+
+.DecreaseScore: ; 34931
+	ld a, [wc716]
+	dec a
+	ld [wc716], a
+	ret
+; 34939
+
+
+.IncreaseScore: ; 34939
+	ld a, [wc716]
+	inc a
+	ld [wc716], a
+	ret
+; 34941
+
+CheckAbleToSwitch: ; 34941
+	xor a
+	ld [wEnemySwitchMonParam], a
+	call FindAliveEnemyMons
+	ret c
+
+	ld a, [EnemySubStatus1]
+	bit SUBSTATUS_PERISH, a
+	jr z, .no_perish
+
+	ld a, [EnemyPerishCount]
+	cp 1
+	jr nz, .no_perish
+
+	; Perish count is 1
+
+	call FindAliveEnemyMons
+	call FindEnemyMonsWithEnoughHP
+	call FindEnemyMonsThatResistPlayer
+	call Function34a85
+
+	ld a, e
+	cp 2
+	jr nz, .not_2
+
+	ld a, [wc716]
+	add $30
+	ld [wEnemySwitchMonParam], a
+	ret
+
+.not_2
+	call FindAliveEnemyMons
+	sla c
+	sla c
+	ld b, $ff
+
+.loop1
+	inc b
+	sla c
+	jr nc, .loop1
+
+	ld a, b
+	add $30
+	ld [wEnemySwitchMonParam], a
+	ret
+
+.no_perish
+
+	call CheckPlayerMoveTypeMatchups
+	ld a, [wc716]
+	cp 11
+	ret nc
+
+	ld a, [LastEnemyCounterMove]
+	and a
+	jr z, .no_last_counter_move
+
+	call Function34a2a
+	ld a, [wc716]
+	and a
+	jr z, .no_last_counter_move
+
+	ld c, a
+	call Function34aa7
+	ld a, [wc716]
+	cp $ff
+	ret z
+
+	ld b, a
+	ld a, e
+	cp 2
+	jr z, .not_2_again
+
+	call CheckPlayerMoveTypeMatchups
+	ld a, [wc716]
+	cp 10
+	ret nc
+
+	ld a, b
+	add $10
+	ld [wEnemySwitchMonParam], a
+	ret
+
+.not_2_again
+	ld c, $10
+	call CheckPlayerMoveTypeMatchups
+	ld a, [wc716]
+	cp 10
+	jr nc, .okay
+	ld c, $20
+
+.okay
+	ld a, b
+	add c
+	ld [wEnemySwitchMonParam], a
+	ret
+
+.no_last_counter_move
+	call CheckPlayerMoveTypeMatchups
+	ld a, [wc716]
+	cp 10
+	ret nc
+
+	call FindAliveEnemyMons
+	call FindEnemyMonsWithEnoughHP
+	call FindEnemyMonsThatResistPlayer
+	call Function34a85
+
+	ld a, e
+	cp $2
+	ret nz
+
+	ld a, [wc716]
+	add $10
+	ld [wEnemySwitchMonParam], a
+	ret
+; 349f4
+
+
+FindAliveEnemyMons: ; 349f4
+	ld a, [OTPartyCount]
+	cp 2
+	jr c, .only_one
+
+	ld d, a
+	ld e, 0
+	ld b, 1 << (PARTY_LENGTH - 1)
+	ld c, 0
+	ld hl, OTPartyMon1HP
+
+.loop
+	ld a, [CurOTMon]
+	cp e
+	jr z, .next
+
+	push bc
+	ld b, [hl]
+	inc hl
+	ld a, [hld]
+	or b
+	pop bc
+	jr z, .next
+
+	ld a, c
+	or b
+	ld c, a
+
+.next
+	srl b
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	inc e
+	dec d
+	jr nz, .loop
+
+	ld a, c
+	and a
+	jr nz, .more_than_one
+
+.only_one
+	scf
+	ret
+
+.more_than_one
+	and a
+	ret
+; 34a2a
+
+
+Function34a2a: ; 34a2a
+	ld hl, OTPartyMon1
+	ld a, [OTPartyCount]
+	ld b, a
+	ld c, 1 << (PARTY_LENGTH - 1)
+	ld d, 0
+	xor a
+	ld [wc716], a
+
+.asm_34a39
+	ld a, [CurOTMon]
+	cp d
+	push hl
+	jr z, .asm_34a77
+
+	push hl
+	push bc
+	ld bc, MON_HP
+	add hl, bc
+	pop bc
+	ld a, [hli]
+	or [hl]
+	pop hl
+	jr z, .asm_34a77
+
+	ld a, [hl]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [LastEnemyCounterMove]
+	dec a
+	ld hl, Moves + MOVE_POWER
+	call GetMoveAttr
+	and a
+	jr z, .asm_34a77
+
+	inc hl
+	call GetMoveByte
+	ld hl, BaseType
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	and a
+	jr nz, .asm_34a77
+
+	ld a, [wc716]
+	or c
+	ld [wc716], a
+.asm_34a77
+	pop hl
+	dec b
+	ret z
+
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+
+	inc d
+	srl c
+	jr .asm_34a39
+; 34a85
+
+
+Function34a85: ; 34a85
+	push bc
+	ld a, [OTPartyCount]
+	ld e, a
+	ld hl, OTPartyMon1HP
+	ld b, 1 << (PARTY_LENGTH - 1)
+	ld c, 0
+.loop
+	ld a, [hli]
+	or [hl]
+	jr z, .next
+
+	ld a, b
+	or c
+	ld c, a
+
+.next
+	srl b
+	push bc
+	ld bc, PartyMon2HP - (PartyMon1HP + 1)
+	add hl, bc
+	pop bc
+	dec e
+	jr nz, .loop
+
+	ld a, c
+	pop bc
+
+	and c
+	ld c, a
+
+	; fallthrough
+; 34aa7
+
+Function34aa7: ; 34aa7
+
+	ld a, $ff
+	ld [wc716], a
+	ld hl, OTPartyMon1Moves
+	ld b, 1 << (PARTY_LENGTH - 1)
+	ld d, 0
+	ld e, 0
+.loop
+	ld a, b
+	and c
+	jr z, .next
+
+	push hl
+	push bc
+	ld b, NUM_MOVES
+	ld c, 0
+.loop3
+	ld a, [hli]
+	and a
+	push hl
+	jr z, .break3
+
+	dec a
+	ld hl, Moves + MOVE_POWER
+	call GetMoveAttr
+	and a
+	jr z, .nope
+
+	inc hl
+	call GetMoveByte
+	ld hl, BattleMonType1
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	cp 10
+	jr c, .nope
+
+	ld e, 1
+	cp 10 + 1
+	jr c, .nope
+
+	ld e, 2
+	jr .break3
+
+.nope
+	pop hl
+	dec b
+	jr nz, .loop3
+
+	jr .done
+
+.break3
+	pop hl
+.done
+	ld a, e
+	pop bc
+	pop hl
+	cp $2
+	jr z, .done2
+
+	cp $1
+	jr nz, .next
+
+	ld a, d
+	or b
+	ld d, a
+	jr .next
+
+.next
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	srl b
+	jr nc, .loop
+
+	ld a, d
+	ld b, a
+	and a
+	ret z
+
+.done2
+	push bc
+	sla b
+	sla b
+	ld c, $ff
+.loop2
+	inc c
+	sla b
+	jr nc, .loop2
+
+	ld a, c
+	ld [wc716], a
+	pop bc
+	ret
+; 34b20
+
+
+FindEnemyMonsThatResistPlayer: ; 34b20
+	push bc
+	ld hl, OTPartySpecies
+	ld b, 1 << (PARTY_LENGTH - 1)
+	ld c, 0
+
+.loop
+	ld a, [hli]
+	cp $ff
+	jr z, .done
+
+	push hl
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [LastEnemyCounterMove]
+	and a
+	jr z, .skip_move
+
+	dec a
+	ld hl, Moves + MOVE_POWER
+	call GetMoveAttr
+	and a
+	jr z, .skip_move
+
+	inc hl
+	call GetMoveByte
+	jr .check_type
+
+.skip_move
+	ld a, [BattleMonType1]
+	ld hl, BaseType
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	cp 10 + 1
+	jr nc, .dont_choose_mon
+	ld a, [BattleMonType2]
+
+.check_type
+	ld hl, BaseType
+	call CheckTypeMatchup
+	ld a, [wTypeMatchup]
+	cp 10 + 1
+	jr nc, .dont_choose_mon
+
+	ld a, b
+	or c
+	ld c, a
+
+.dont_choose_mon
+	srl b
+	pop hl
+	jr .loop
+
+.done
+	ld a, c
+	pop bc
+	and c
+	ld c, a
+	ret
+; 34b77
+
+
+FindEnemyMonsWithEnoughHP: ; 34b77
+	push bc
+	ld de, OTPartySpecies
+	ld b, 1 << (PARTY_LENGTH - 1)
+	ld c, 0
+	ld hl, OTPartyMon1HP
+
+.loop
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .done
+
+	push hl
+	push bc
+	ld b, [hl]
+	inc hl
+	ld c, [hl]
+rept 2
+	inc hl
+endr
+; hl = MaxHP + 1
+; b = (4 * b) % $100 + (c & 3)
+; c = c / 4
+	srl c
+	rl b
+	srl c
+	rl b
+; a = (MaxHP / $100) - b - (1 if c > (MaxHP % $100) else 0)
+	ld a, [hld]
+	cp c
+	ld a, [hl]
+	sbc b
+	pop bc
+	jr nc, .next
+
+	ld a, b
+	or c
+	ld c, a
+
+.next
+	srl b
+	pop hl
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	jr .loop
+
+.done
+	ld a, c
+	pop bc
+	and c
+	ld c, a
+	ret
+; 34bb1
--- a/battle/anim_commands.asm
+++ b/battle/anim_commands.asm
@@ -40,7 +40,7 @@
 	push af
 
 	ld [hl], c
-	call Functioncc11c
+	call BattleAnimRunScript
 
 	pop af
 	ld [hVBlank], a
@@ -55,17 +55,17 @@
 	ret
 ; cc11c
 
-Functioncc11c: ; cc11c
+BattleAnimRunScript: ; cc11c
 
 	ld a, [FXAnimIDHi]
 	and a
-	jr nz, .asm_cc156
+	jr nz, .hi_byte
 
 	callba CheckBattleScene
-	jr c, .asm_cc141
+	jr c, .disabled
 
 	call BattleAnimClearHud
-	call Functioncc163
+	call RunBattleAnimScript
 
 	call BattleAnimAssignPals
 	call BattleAnimRequestPals
@@ -76,14 +76,14 @@
 	call BattleAnimDelayFrame
 	call BattleAnimRestoreHuds
 
-.asm_cc141
+.disabled
 	ld a, [wcfca]
 	and a
-	jr z, .asm_cc15f
+	jr z, .done
 
 	ld l, a
 	ld h, 0
-	ld de, $10e
+	ld de, ANIM_MISS
 	add hl, de
 	ld a, l
 	ld [FXAnimIDLo], a
@@ -90,17 +90,17 @@
 	ld a, h
 	ld [FXAnimIDHi], a
 
-.asm_cc156
+.hi_byte
 	call WaitSFX
 	call Functioncc881
-	call Functioncc163
+	call RunBattleAnimScript
 
-.asm_cc15f
+.done
 	call Functioncc8f6
 	ret
 ; cc163
 
-Functioncc163: ; cc163
+RunBattleAnimScript: ; cc163
 
 	call Functioncc8d3
 
@@ -168,8 +168,8 @@
 	ld [rSVBK], a
 
 	ld hl, UpdateBattleHuds
-	ld a, $f
-	rst FarCall
+	ld a, BANK(UpdatePlayerHUD)
+	rst FarCall ; Why the heck is this a callab?
 
 	pop af
 	ld [rSVBK], a
@@ -257,11 +257,11 @@
 
 	ld a, [BattleAnimFlags]
 	bit 3, a
-	jr z, .asm_cc254
+	jr z, .skip
 
 	ld hl, Sprites + 3
 	ld c, (SpritesEnd - Sprites) / 4
-.asm_cc249
+.loop
 	ld a, [hl]
 	and $f0
 	ld [hli], a
@@ -269,31 +269,31 @@
 	inc hl
 endr
 	dec c
-	jr nz, .asm_cc249
+	jr nz, .loop
 	ret
 
-.asm_cc254
+.skip
 	ld hl, Sprites
 	ld c, SpritesEnd - Sprites
 	xor a
-.asm_cc25a
+.loop2
 	ld [hli], a
 	dec c
-	jr nz, .asm_cc25a
+	jr nz, .loop2
 	ret
 ; cc25f
 
 Functioncc25f: ; cc25f
-	call Functioncc267
+	call .CheckTimer
 	ret nc
-	call Functioncc275
+	call .RunScript
 	ret
 ; cc267
 
-Functioncc267: ; cc267
+.CheckTimer: ; cc267
 	ld a, [BattleAnimDuration]
 	and a
-	jr z, .asm_cc273
+	jr z, .done
 
 	dec a
 	ld [BattleAnimDuration], a
@@ -300,40 +300,40 @@
 	and a
 	ret
 
-.asm_cc273
+.done
 	scf
 	ret
 ; cc275
 
-Functioncc275: ; cc275
-
+.RunScript: ; cc275
+.loop
 	call GetBattleAnimByte
 
 	cp $ff
-	jr nz, .asm_cc286
+	jr nz, .not_done_with_anim
 
 ; Return from a subroutine.
 	ld hl, BattleAnimFlags
 	bit 1, [hl]
-	jr nz, .asm_cc28e
+	jr nz, .do_anim
 
 	set 0, [hl]
 	ret
 
-.asm_cc286
+.not_done_with_anim
 	cp $d0
-	jr nc, .asm_cc28e
+	jr nc, .do_anim
 
 	ld [BattleAnimDuration], a
 	ret
 
-.asm_cc28e
-	call Functioncc293
+.do_anim
+	call .DoCommand
 
-	jr Functioncc275
+	jr .loop
 ; cc293
 
-Functioncc293: ; cc293
+.DoCommand: ; cc293
 ; Execute battle animation command in [BattleAnimByte].
 	ld a, [BattleAnimByte]
 	sub $d0
@@ -353,54 +353,54 @@
 
 
 BattleAnimCommands:: ; cc2a4 (33:42a4)
-	dw BattleAnimCmd_D0
-	dw BattleAnimCmd_D1
-	dw BattleAnimCmd_D2
-	dw BattleAnimCmd_D3
-	dw BattleAnimCmd_D4
-	dw BattleAnimCmd_D5
-	dw BattleAnimCmd_D6
-	dw BattleAnimCmd_D7
-	dw BattleAnimCmd_D8
-	dw BattleAnimCmd_D9
-	dw BattleAnimCmd_DA
-	dw BattleAnimCmd_DB
-	dw BattleAnimCmd_DC
-	dw BattleAnimCmd_DD
-	dw BattleAnimCmd_DE
-	dw BattleAnimCmd_DF
-	dw BattleAnimCmd_E0
-	dw BattleAnimCmd_E1
-	dw BattleAnimCmd_E2
-	dw BattleAnimCmd_E3
-	dw BattleAnimCmd_E4
-	dw BattleAnimCmd_E5
-	dw BattleAnimCmd_E6
+	dw BattleAnimCmd_Obj
+	dw BattleAnimCmd_1GFX
+	dw BattleAnimCmd_2GFX
+	dw BattleAnimCmd_3GFX
+	dw BattleAnimCmd_4GFX
+	dw BattleAnimCmd_5GFX
+	dw BattleAnimCmd_IncObj
+	dw BattleAnimCmd_SetObj
+	dw BattleAnimCmd_IncBGEffect
+	dw BattleAnimCmd_EnemyFeetObj
+	dw BattleAnimCmd_PlayerHeadObj
+	dw BattleAnimCmd_CheckPokeball
+	dw BattleAnimCmd_Transform
+	dw BattleAnimCmd_RaiseSub
+	dw BattleAnimCmd_DropSub
+	dw BattleAnimCmd_ResetObp0
+	dw BattleAnimCmd_Sound
+	dw BattleAnimCmd_Cry
+	dw BattleAnimCmd_MinimizeOpp
+	dw BattleAnimCmd_OAMOn
+	dw BattleAnimCmd_OAMOff
+	dw BattleAnimCmd_ClearObjs
+	dw BattleAnimCmd_BeatUp
 	dw BattleAnimCmd_E7
-	dw BattleAnimCmd_E8
-	dw BattleAnimCmd_E9
-	dw BattleAnimCmd_EA
-	dw BattleAnimCmd_EB
-	dw BattleAnimCmd_EC
-	dw BattleAnimCmd_ED
-	dw BattleAnimCmd_EE
-	dw BattleAnimCmd_EF
-	dw BattleAnimCmd_F0
-	dw BattleAnimCmd_F1
-	dw BattleAnimCmd_F2
-	dw BattleAnimCmd_F3
-	dw BattleAnimCmd_F4
+	dw BattleAnimCmd_UpdateActorPic
+	dw BattleAnimCmd_Minimize
+	dw BattleAnimCmd_EA ; dummy
+	dw BattleAnimCmd_EB ; dummy
+	dw BattleAnimCmd_EC ; dummy
+	dw BattleAnimCmd_ED ; dummy
+	dw BattleAnimCmd_JumpAnd
+	dw BattleAnimCmd_JumpUntil
+	dw BattleAnimCmd_BGEffect
+	dw BattleAnimCmd_BGP
+	dw BattleAnimCmd_OBP0
+	dw BattleAnimCmd_OBP1
+	dw BattleAnimCmd_ClearSprites
 	dw BattleAnimCmd_F5
 	dw BattleAnimCmd_F6
 	dw BattleAnimCmd_F7
-	dw BattleAnimCmd_F8
-	dw BattleAnimCmd_F9
-	dw BattleAnimCmd_FA
-	dw BattleAnimCmd_FB
-	dw BattleAnimCmd_FC
-	dw BattleAnimCmd_FD
-	dw BattleAnimCmd_FE
-	dw BattleAnimCmd_FF
+	dw BattleAnimCmd_JumpIf
+	dw BattleAnimCmd_SetVar
+	dw BattleAnimCmd_IncVar
+	dw BattleAnimCmd_JumpVar
+	dw BattleAnimCmd_Jump
+	dw BattleAnimCmd_Loop
+	dw BattleAnimCmd_Call
+	dw BattleAnimCmd_Ret
 
 
 BattleAnimCmd_EA:
@@ -409,7 +409,7 @@
 BattleAnimCmd_ED: ; cc304 (33:4304)
 	ret
 
-BattleAnimCmd_FF: ; cc305 (33:4305)
+BattleAnimCmd_Ret: ; cc305 (33:4305)
 	ld hl, BattleAnimFlags
 	res 1, [hl]
 	ld hl, BattleAnimParent
@@ -422,7 +422,7 @@
 	ld [hl], d
 	ret
 
-BattleAnimCmd_FE: ; cc317 (33:4317)
+BattleAnimCmd_Call: ; cc317 (33:4317)
 	call GetBattleAnimByte
 	ld e, a
 	call GetBattleAnimByte
@@ -445,7 +445,7 @@
 	set 1, [hl]
 	ret
 
-BattleAnimCmd_FC: ; cc339 (33:4339)
+BattleAnimCmd_Jump: ; cc339 (33:4339)
 	call GetBattleAnimByte
 	ld e, a
 	call GetBattleAnimByte
@@ -456,7 +456,7 @@
 	ld [hl], d
 	ret
 
-BattleAnimCmd_FD: ; cc348 (33:4348)
+BattleAnimCmd_Loop: ; cc348 (33:4348)
 	call GetBattleAnimByte
 	ld hl, BattleAnimFlags
 	bit 2, [hl]
@@ -497,8 +497,8 @@
 	ld [hl], e
 	ret
 
-BattleAnimCmd_EF: ; cc383 (33:4383)
-	ld hl, wc689
+BattleAnimCmd_JumpUntil: ; cc383 (33:4383)
+	ld hl, wKickCounter
 	ld a, [hl]
 	and a
 	jr z, .asm_cc39a
@@ -527,17 +527,17 @@
 	ld [hl], e
 	ret
 
-BattleAnimCmd_F9: ; cc3a6 (33:43a6)
+BattleAnimCmd_SetVar: ; cc3a6 (33:43a6)
 	call GetBattleAnimByte
 	ld [BattleAnimVar], a
 	ret
 
-BattleAnimCmd_FA: ; cc3ad (33:43ad)
+BattleAnimCmd_IncVar: ; cc3ad (33:43ad)
 	ld hl, BattleAnimVar
 	inc [hl]
 	ret
 
-BattleAnimCmd_FB: ; cc3b2 (33:43b2)
+BattleAnimCmd_JumpVar: ; cc3b2 (33:43b2)
 	call GetBattleAnimByte
 	ld hl, BattleAnimVar
 	cp [hl]
@@ -566,9 +566,9 @@
 	ld [hl], d
 	ret
 
-BattleAnimCmd_F8: ; cc3d6 (33:43d6)
+BattleAnimCmd_JumpIf: ; cc3d6 (33:43d6)
 	call GetBattleAnimByte
-	ld hl, wc689
+	ld hl, wKickCounter
 	cp [hl]
 	jr z, .jump
 
@@ -595,10 +595,10 @@
 	ld [hl], d
 	ret
 
-BattleAnimCmd_EE: ; cc3fa (33:43fa)
+BattleAnimCmd_JumpAnd: ; cc3fa (33:43fa)
 	call GetBattleAnimByte
 	ld e, a
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	and e
 	jr nz, .jump
 
@@ -624,7 +624,7 @@
 	ld [hl], d
 	ret
 
-BattleAnimCmd_D0: ; cc41f (33:441f)
+BattleAnimCmd_Obj: ; cc41f (33:441f)
 	call GetBattleAnimByte
 	ld [BattleAnimTemps], a
 	call GetBattleAnimByte
@@ -636,7 +636,7 @@
 	call Functioncc9a1
 	ret
 
-BattleAnimCmd_F0: ; cc43b (33:443b)
+BattleAnimCmd_BGEffect: ; cc43b (33:443b)
 	call GetBattleAnimByte
 	ld [BattleAnimTemps], a
 	call GetBattleAnimByte
@@ -648,23 +648,23 @@
 	call Functionccb4f
 	ret
 
-BattleAnimCmd_F1: ; cc457 (33:4457)
+BattleAnimCmd_BGP: ; cc457 (33:4457)
 	call GetBattleAnimByte
 	ld [wcfc7], a
 	ret
 
-BattleAnimCmd_F2: ; cc45e (33:445e)
+BattleAnimCmd_OBP0: ; cc45e (33:445e)
 	call GetBattleAnimByte
 	ld [wcfc8], a
 	ret
 
-BattleAnimCmd_F3: ; cc465 (33:4465)
+BattleAnimCmd_OBP1: ; cc465 (33:4465)
 	call GetBattleAnimByte
 	ld [wcfc9], a
 	ret
 
-BattleAnimCmd_DF: ; cc46c (33:446c)
-	ld a, [hSGB] ; $ff00+$e7
+BattleAnimCmd_ResetObp0: ; cc46c (33:446c)
+	ld a, [hSGB]
 	and a
 	ld a, $e0
 	jr z, .asm_cc475
@@ -673,7 +673,7 @@
 	ld [wcfc8], a
 	ret
 
-BattleAnimCmd_E5: ; cc479 (33:4479)
+BattleAnimCmd_ClearObjs: ; cc479 (33:4479)
 	ld hl, OTPartyMon3HP
 	ld a, $a0
 .asm_cc47e
@@ -683,11 +683,11 @@
 	jr nz, .asm_cc47e
 	ret
 
-BattleAnimCmd_D1:
-BattleAnimCmd_D2:
-BattleAnimCmd_D3:
-BattleAnimCmd_D4:
-BattleAnimCmd_D5: ; cc485 (33:4485)
+BattleAnimCmd_1GFX:
+BattleAnimCmd_2GFX:
+BattleAnimCmd_3GFX:
+BattleAnimCmd_4GFX:
+BattleAnimCmd_5GFX: ; cc485 (33:4485)
 	ld a, [BattleAnimByte]
 	and $f
 	ld c, a
@@ -722,7 +722,7 @@
 	jr nz, .asm_cc492
 	ret
 
-BattleAnimCmd_D6: ; cc4c0 (33:44c0)
+BattleAnimCmd_IncObj: ; cc4c0 (33:44c0)
 	call GetBattleAnimByte
 	ld e, $a
 	ld bc, OTPartyMon3HP
@@ -746,7 +746,7 @@
 	inc [hl]
 	ret
 
-BattleAnimCmd_D8: ; cc4e3 (33:44e3)
+BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3)
 	call GetBattleAnimByte
 	ld e, $5
 	ld bc, ActiveBGEffects
@@ -770,7 +770,7 @@
 	inc [hl]
 	ret
 
-BattleAnimCmd_D7: ; cc506 (33:4506)
+BattleAnimCmd_SetObj: ; cc506 (33:4506)
 	call GetBattleAnimByte
 	ld e, $a
 	ld bc, OTPartyMon3HP
@@ -795,7 +795,7 @@
 	ld [hl], a
 	ret
 
-BattleAnimCmd_D9: ; cc52c (33:452c)
+BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c)
 
 	ld hl, w5_d300
 .asm_cc52f
@@ -851,7 +851,7 @@
 	jr nz, Functioncc561
 	ret
 
-BattleAnimCmd_DA: ; cc57e (33:457e)
+BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e)
 
 	ld hl, w5_d300
 .asm_cc581
@@ -907,7 +907,7 @@
 	jr nz, Functioncc5b3
 	ret
 
-BattleAnimCmd_DB: ; cc5d0 (33:45d0)
+BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0)
 	callab GetPokeBallWobble
 	ld a, c
 	ld [BattleAnimVar], a
@@ -916,15 +916,15 @@
 BattleAnimCmd_E7: ; cc5db (33:45db)
 	ret
 
-BattleAnimCmd_DC: ; cc5dc (33:45dc)
-	ld a, [rSVBK] ; $ff00+$70
+BattleAnimCmd_Transform: ; cc5dc (33:45dc)
+	ld a, [rSVBK]
 	push af
 	ld a, 1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, [CurPartySpecies] ; CurPartySpecies
 	push af
 
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .player
 
@@ -948,13 +948,13 @@
 	pop af
 	ld [CurPartySpecies], a ; CurPartySpecies
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
-BattleAnimCmd_E8: ; cc622 (33:4622)
+BattleAnimCmd_UpdateActorPic: ; cc622 (33:4622)
 
 	ld de, VTiles0 tile $00
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .player
 
@@ -971,12 +971,12 @@
 	call Request2bpp
 	ret
 
-BattleAnimCmd_DD: ; cc640 (33:4640)
+BattleAnimCmd_RaiseSub: ; cc640 (33:4640)
 
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, 1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
 	call GetSRAMBank
 
@@ -992,7 +992,7 @@
 	or b
 	jr nz, .loop
 
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .player
 
@@ -1037,7 +1037,7 @@
 .done
 	call CloseSRAM
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 CopyMonsterSpriteTile: ; cc6c6 (33:46c6)
@@ -1046,11 +1046,11 @@
 	call FarCopyBytes
 	ret
 
-BattleAnimCmd_E2: ; cc6cf (33:46cf)
-	ld a, [rSVBK] ; $ff00+$70
+BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf)
+	ld a, [rSVBK]
 	push af
 	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
 	call GetSRAMBank
 	call GetMinimizePic
@@ -1057,7 +1057,7 @@
 	call Request2bpp
 	call CloseSRAM
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 GetMinimizePic: ; cc6e7 (33:46e7)
@@ -1071,7 +1071,7 @@
 	or b
 	jr nz, .loop
 
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .player
 
@@ -1102,11 +1102,11 @@
 INCBIN "gfx/battle/minimize.2bpp"
 ; cc735
 
-BattleAnimCmd_E9: ; cc735 (33:4735)
-	ld a, [rSVBK] ; $ff00+$70
+BattleAnimCmd_Minimize: ; cc735 (33:4735)
+	ld a, [rSVBK]
 	push af
 	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
 	call GetSRAMBank
 	call GetMinimizePic
@@ -1114,18 +1114,18 @@
 	call Request2bpp
 	call CloseSRAM
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
-BattleAnimCmd_DE: ; cc750 (33:4750)
-	ld a, [rSVBK] ; $ff00+$70
+BattleAnimCmd_DropSub: ; cc750 (33:4750)
+	ld a, [rSVBK]
 	push af
 	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 
 	ld a, [CurPartySpecies] ; CurPartySpecies
 	push af
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .player
 
@@ -1139,21 +1139,21 @@
 	pop af
 	ld [CurPartySpecies], a ; CurPartySpecies
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
-BattleAnimCmd_E6: ; cc776 (33:4776)
-	ld a, [rSVBK] ; $ff00+$70
+BattleAnimCmd_BeatUp: ; cc776 (33:4776)
+	ld a, [rSVBK]
 	push af
 	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, [CurPartySpecies] ; CurPartySpecies
 	push af
 
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	ld [CurPartySpecies], a ; CurPartySpecies
 
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .player
 
@@ -1175,20 +1175,20 @@
 	ld b, $1
 	call GetSGBLayout
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
-BattleAnimCmd_E3: ; cc7bb (33:47bb)
+BattleAnimCmd_OAMOn: ; cc7bb (33:47bb)
 	xor a
-	ld [hOAMUpdate], a ; $ff00+$d8
+	ld [hOAMUpdate], a
 	ret
 
-BattleAnimCmd_E4: ; cc7bf (33:47bf)
+BattleAnimCmd_OAMOff: ; cc7bf (33:47bf)
 	ld a, $1
-	ld [hOAMUpdate], a ; $ff00+$d8
+	ld [hOAMUpdate], a
 	ret
 
-BattleAnimCmd_F4: ; cc7c4 (33:47c4)
+BattleAnimCmd_ClearSprites: ; cc7c4 (33:47c4)
 	ld hl, BattleAnimFlags
 	set 3, [hl]
 	ret
@@ -1202,7 +1202,7 @@
 BattleAnimCmd_F7: ; cc7cc (33:47cc)
 	ret
 
-BattleAnimCmd_E0: ; cc7cd (33:47cd)
+BattleAnimCmd_Sound: ; cc7cd (33:47cd)
 	call GetBattleAnimByte
 	ld e, a
 	srl a
@@ -1232,7 +1232,7 @@
 ; cc7fc
 
 Functioncc7fc: ; cc7fc (33:47fc)
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr nz, .enemy
 
@@ -1244,7 +1244,7 @@
 	xor 1
 	ret
 
-BattleAnimCmd_E1: ; cc807 (33:4807)
+BattleAnimCmd_Cry: ; cc807 (33:4807)
 	call GetBattleAnimByte
 	and 3
 	ld e, a
@@ -1254,12 +1254,12 @@
 	add hl, de
 endr
 
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, 1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr nz, .enemy
 
@@ -1316,7 +1316,7 @@
 
 .done
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 ; cc871 (33:4871)
 
@@ -1332,11 +1332,11 @@
 Functioncc881: ; cc881
 	ld a, [wcfca]
 	cp $1
-	jr z, .asm_cc88b
+	jr z, .okay
 	cp $4
 	ret nz
 
-.asm_cc88b
+.okay
 	ld a, [TypeModifier]
 	and $7f
 	ret z
@@ -1358,41 +1358,43 @@
 BattleAnimAssignPals: ; cc8a4
 	ld a, [hCGB]
 	and a
-	jr nz, .asm_cc8be
+	jr nz, .cgb
 	ld a, [hSGB]
 	and a
-	ld a, $e0
-	jr z, .asm_cc8b2
-	ld a, $f0
+	ld a, %11100000
+	jr z, .sgb
+	ld a, %11110000
 
-.asm_cc8b2
+.sgb
 	ld [wcfc8], a
-	ld a, $e4
+	ld a, %11100100
 	ld [wcfc7], a
 	ld [wcfc9], a
 	ret
 
-.asm_cc8be
-	ld a, $e4
+.cgb
+	ld a, %11100100
 	ld [wcfc7], a
 	ld [wcfc8], a
 	ld [wcfc9], a
 	call DmgToCgbBGPals
-	ld de, $e4e4
+	lb de, %11100100, %11100100
 	call DmgToCgbObjPals
 	ret
 ; cc8d3
 
 Functioncc8d3: ; cc8d3
+; Clear animation block
 	ld hl, LYOverrides
-	ld bc, $0354
-.asm_cc8d9
+	ld bc, wBattleAnimEnd - LYOverrides
+.loop
 	ld [hl], $0
 	inc hl
 	dec bc
 	ld a, c
 	or b
-	jr nz, .asm_cc8d9
+	jr nz, .loop
+
 	ld hl, FXAnimIDLo
 	ld e, [hl]
 	inc hl
@@ -1401,7 +1403,7 @@
 rept 2
 	add hl, de
 endr
-	call Function3ae1
+	call GetBattleAnimPointer
 	call BattleAnimAssignPals
 	call BattleAnimDelayFrame
 	ret
@@ -1409,12 +1411,12 @@
 
 Functioncc8f6: ; cc8f6
 	call WaitTop
-	ld a, $e4
+	ld a, %11100100
 	ld [wcfc7], a
 	ld [wcfc8], a
 	ld [wcfc9], a
 	call DmgToCgbBGPals
-	ld de, $e4e4
+	lb de, %11100100, %11100100
 	call DmgToCgbObjPals
 	xor a
 	ld [hSCX], a
@@ -1435,7 +1437,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, BGPals
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, [rBGP]
 	ld b, a
 	ld c, $7
--- a/battle/anim_objects.asm
+++ b/battle/anim_objects.asm
@@ -946,14 +946,14 @@
 
 Functioncd249: ; cd249 (33:5249)
 	ld hl, Unknown_cd26c
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, [CurItem] ; CurItem
 	ld e, a
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 .asm_cd25a
 	ld a, [hli]
 	cp $ff
@@ -1694,7 +1694,7 @@
 Functioncd677: ; cd677 (33:5677)
 	call Functionce72c
 	ld a, $42
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	ld a, $58
 	ld [hLCDStatCustom + 1], a
 	ld a, $5e
@@ -1753,7 +1753,7 @@
 	cp $70
 	jr c, asm_cd6da
 	xor a
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	ld [hLCDStatCustom + 1], a
 	ld [hLCDStatCustom + 2], a
 
@@ -2839,7 +2839,7 @@
 
 
 Functioncdcca: ; cdcca (33:5cca)
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_cdcd9
 	ld hl, $b
@@ -3842,7 +3842,7 @@
 
 Functionce260: ; ce260 (33:6260)
 	call Functionce72c
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and a
 	jr nz, .asm_ce26c
 	ld a, $f0
@@ -3893,7 +3893,7 @@
 	srl a
 	ld e, a
 	ld d, $0
-	ld a, [hSGB] ; $ff00+$e7
+	ld a, [hSGB]
 	and a
 	jr nz, .asm_ce2b6
 	ld hl, Unknown_ce2c4
@@ -4949,7 +4949,7 @@
 	ld l, a
 	pop de
 	push bc
-	call Functione73
+	call DecompressRequest2bpp
 	pop bc
 	ret
 ; ce85e (33:685e)
--- a/battle/anims.asm
+++ b/battle/anims.asm
@@ -255,6 +255,7 @@
 	dw BattleAnim_253
 	dw BattleAnim_254
 	dw BattleAnim_SweetScent2
+; $100
 	dw BattleAnim_ThrowPokeBall
 	dw BattleAnim_SendOutMon
 	dw BattleAnim_ReturnMon
@@ -302,10 +303,11 @@
 ; c92c1
 
 BattleAnim_ThrowPokeBall: ; c92c1
-	anim_jumpif $0, BattleAnim_ThrowPokeBall_branch_c92f2
-	anim_jumpif $1, BattleAnim_ThrowPokeBall_branch_c9347
-	anim_jumpif $2, BattleAnim_ThrowPokeBall_branch_c9305
-	anim_jumpif $4, BattleAnim_ThrowPokeBall_branch_c9326
+	anim_jumpif NO_ITEM, .TheTrainerBlockedTheBall
+	anim_jumpif MASTER_BALL, .MasterBall
+	anim_jumpif ULTRA_BALL, .UltraBall
+	anim_jumpif GREAT_BALL, .GreatBall
+	; any other ball
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE
 	anim_sound $1a, SFX_THROW_BALL
 	anim_obj $15, 68, 92, $40
@@ -316,10 +318,10 @@
 	anim_sound $1, SFX_BALL_POOF
 	anim_obj $1c, 136, 64, $10
 	anim_wait 16
-	anim_jump BattleAnim_ThrowPokeBall_branch_c9392
+	anim_jump .Shake
 ; c92f2
 
-BattleAnim_ThrowPokeBall_branch_c92f2: ; c92f2
+.TheTrainerBlockedTheBall: ; c92f2
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_HIT
 	anim_sound $1a, SFX_THROW_BALL
 	anim_obj $16, 64, 92, $20
@@ -329,7 +331,7 @@
 	anim_ret
 ; c9305
 
-BattleAnim_ThrowPokeBall_branch_c9305: ; c9305
+.UltraBall: ; c9305
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE
 	anim_sound $1a, SFX_THROW_BALL
 	anim_obj $15, 68, 92, $40
@@ -340,10 +342,10 @@
 	anim_sound $1, SFX_BALL_POOF
 	anim_obj $1c, 136, 64, $10
 	anim_wait 16
-	anim_jump BattleAnim_ThrowPokeBall_branch_c9392
+	anim_jump .Shake
 ; c9326
 
-BattleAnim_ThrowPokeBall_branch_c9326: ; c9326
+.GreatBall: ; c9326
 	anim_2gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE
 	anim_sound $1a, SFX_THROW_BALL
 	anim_obj $15, 68, 92, $40
@@ -354,10 +356,10 @@
 	anim_sound $1, SFX_BALL_POOF
 	anim_obj $1c, 136, 64, $10
 	anim_wait 16
-	anim_jump BattleAnim_ThrowPokeBall_branch_c9392
+	anim_jump .Shake
 ; c9347
 
-BattleAnim_ThrowPokeBall_branch_c9347: ; c9347
+.MasterBall: ; c9347
 	anim_3gfx ANIM_GFX_POKE_BALL, ANIM_GFX_SMOKE, ANIM_GFX_SPEED
 	anim_sound $1a, SFX_THROW_BALL
 	anim_obj $15, 64, 92, $20
@@ -378,7 +380,7 @@
 	anim_obj $2b, 136, 56, $36
 	anim_obj $2b, 136, 56, $37
 	anim_wait 64
-BattleAnim_ThrowPokeBall_branch_c9392: ; c9392
+.Shake: ; c9392
 	anim_bgeffect ANIM_BG_RETURN_MON, $0, $0, $0
 	anim_wait 8
 	anim_incobj $2
@@ -392,22 +394,22 @@
 	anim_wait 32
 	anim_wait 8
 	anim_setvar $0
-BattleAnim_ThrowPokeBall_branch_c93aa: ; c93aa
+.Loop: ; c93aa
 	anim_wait 48
 	anim_checkpokeball
-	anim_jumpvar $1, BattleAnim_ThrowPokeBall_branch_c93bc
-	anim_jumpvar $2, BattleAnim_ThrowPokeBall_branch_c93be
+	anim_jumpvar $1, .Click
+	anim_jumpvar $2, .BreakFree
 	anim_incobj $1
 	anim_sound $1, SFX_BALL_WIGGLE
-	anim_jump BattleAnim_ThrowPokeBall_branch_c93aa
+	anim_jump .Loop
 ; c93bc
 
-BattleAnim_ThrowPokeBall_branch_c93bc: ; c93bc
+.Click: ; c93bc
 	anim_clearsprites
 	anim_ret
 ; c93be
 
-BattleAnim_ThrowPokeBall_branch_c93be: ; c93be
+.BreakFree: ; c93be
 	anim_setobj $1, $b
 	anim_sound $1, SFX_BALL_POOF
 	anim_obj $1c, 136, 64, $10
--- a/battle/bg_effects.asm
+++ b/battle/bg_effects.asm
@@ -343,14 +343,14 @@
 	call ClearBox
 	pop bc
 	xor a
-	ld [hBGMapThird], a ; $ff00+$d5
+	ld [hBGMapThird], a
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Functionc81e3: ; c81e3 (32:41e3)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
@@ -441,13 +441,13 @@
 .asm_c8271
 	call ClearBox
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	pop bc
 	ret
 
 Functionc827a: ; c827a (32:427a)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
@@ -507,13 +507,13 @@
 .asm_c82de
 	call ClearBox
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	pop bc
 	ret
 
 Functionc82e7: ; c82e7 (32:42e7)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
@@ -595,9 +595,9 @@
 	jr nz, .asm_c8344
 .asm_c8355
 	xor a
-	ld [hBGMapThird], a ; $ff00+$d5
+	ld [hBGMapThird], a
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Functionc80e5
 	ld hl, $3
 	add hl, bc
@@ -606,7 +606,7 @@
 
 Functionc8365: ; c8365 (32:4365)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld hl, $3
 	add hl, bc
 	ld a, [hl]
@@ -723,7 +723,7 @@
 .asm_c841d
 	call Functionc80e5
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 .asm_c8425
 	call Functionc843b
@@ -731,7 +731,7 @@
 
 Functionc842a: ; c842a (32:442a)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld hl, $1
 	add hl, bc
 	ld [hl], $0
@@ -739,7 +739,7 @@
 
 Functionc8434: ; c8434 (32:4434)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call EndBattleBGEffect
 	ret
 
@@ -902,7 +902,7 @@
 	call Functionc8f69
 
 Functionc8557: ; c8557 (32:4557)
-	ld a, [hLCDStatCustom] ; $ff00+$c6
+	ld a, [hLCDStatCustom]
 	and a
 	ret z
 	push bc
@@ -967,7 +967,7 @@
 	call Functionc80e5
 	call Functionc8eca
 	ld a, $42
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	xor a
 	ld [hLCDStatCustom + 1], a
 	ld a, $5e
@@ -1042,7 +1042,7 @@
 	call Functionc80e5
 	call Functionc8eca
 	ld a, $43
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	xor a
 	ld [hLCDStatCustom + 1], a
 	ld a, $5f
@@ -1530,7 +1530,7 @@
 	sub d
 	ld d, a
 	ld h, LYOverridesBackup / $100
-	ld a, [hSCY] ; $ff00+$d0
+	ld a, [hSCY]
 	or a
 	jr nz, .asm_c88d0
 	ld a, [hLCDStatCustom + 1]
@@ -1546,7 +1546,7 @@
 	ld l, a
 	ld [hl], $0
 .asm_c88d6
-	ld a, [hSCY] ; $ff00+$d0
+	ld a, [hSCY]
 	ld l, a
 	ld a, [hLCDStatCustom + 1]
 	sub l
@@ -1953,7 +1953,7 @@
 	ret
 
 Functionc8b00: ; c8b00 (32:4b00)
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	jr nz, asm_c8b7a
 	call Functionc80d7 ;  ;  ; call does not return
@@ -1969,7 +1969,7 @@
 	ld a, $e4
 	call Functionc8ecb
 	ld a, $47
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	xor a
 	ld [hLCDStatCustom + 1], a
 	ld a, $60
@@ -2266,7 +2266,7 @@
 	call Functionc80e5
 	call Functionc8eca
 	ld a, $43
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	xor a
 	ld [hLCDStatCustom + 1], a
 	ld a, $37
@@ -2307,7 +2307,7 @@
 	push af
 	call DelayFrame
 	pop af
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	xor $ff
 	inc a
 	ld [OTPartyMon3SpclAtk], a
@@ -2318,7 +2318,7 @@
 	jr nc, .asm_c8cff
 	xor a
 .asm_c8cff
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ret
 
 Functionc8d02: ; c8d02 (32:4d02)
@@ -2326,7 +2326,7 @@
 	jr nc, .asm_c8d08
 	xor a
 .asm_c8d08
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	ret
 
 Functionc8d0b: ; c8d0b (32:4d0b)
@@ -2373,7 +2373,7 @@
 	jr nc, .asm_c8d53
 	ld d, $6
 	call Functionc905d
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld hl, $3
 	add hl, bc
 	ld a, [hl]
@@ -2382,7 +2382,7 @@
 	ret
 .asm_c8d53
 	xor a
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ret
 
 Functionc8d57: ; c8d57 (32:4d57)
@@ -2410,7 +2410,7 @@
 	ret
 
 Functionc8d77: ; c8d77 (32:4d77)
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	jr nz, asm_c8dd4
 	push de
@@ -2469,7 +2469,7 @@
 Functionc8dc9: ; c8dc9 (32:4dc9)
 	call Functionc8f19
 	ld a, $e4
-	ld [rBGP], a ; $ff00+$47
+	ld [rBGP], a
 	call EndBattleBGEffect
 	ret
 asm_c8dd4: ; c8dd4 (32:4dd4)
@@ -2563,15 +2563,15 @@
 
 Functionc8e52: ; c8e52 (32:4e52)
 	ld h, a
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, h
 	push bc
 	push af
 	ld hl, BGPals ; BGPals
-	ld de, Unkn1Pals ; wd000
+	ld de, wMapPals ; wd000
 	ld b, a
 	ld c, $1
 	call CopyPals
@@ -2583,22 +2583,22 @@
 	call CopyPals
 	pop bc
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 
 Functionc8e7f: ; c8e7f (32:4e7f)
 	ld h, a
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, h
 	push bc
 	push af
 	ld hl, BGPals + 8
-	ld de, Unkn1Pals + 8
+	ld de, wMapPals + 8
 	ld b, a
 	ld c, $1
 	call CopyPals
@@ -2610,9 +2610,9 @@
 	call CopyPals
 	pop bc
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 
 Functionc8eac: ; c8eac (32:4eac)
@@ -2660,7 +2660,7 @@
 	ret
 
 Functionc8ede: ; c8ede (32:4ede)
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	call Functionc9038
 	jr nz, .asm_c8eea
 	ld de, $36
@@ -2675,7 +2675,7 @@
 	ret
 
 Functionc8ef4: ; c8ef4 (32:4ef4)
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	call Functionc9038
 	jr nz, .asm_c8f00
 	ld de, $36
@@ -2695,15 +2695,15 @@
 	ld [hLCDStatCustom + 2], a
 	call Functionc8eca
 	xor a
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	call EndBattleBGEffect
 	ret
 
 Functionc8f19: ; c8f19 (32:4f19)
 	xor a
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	ld a, $e4
-	ld [rBGP], a ; $ff00+$47
+	ld [rBGP], a
 	ld [wcfc7], a
 	ld [wcfc9], a
 	ld [hLCDStatCustom + 1], a
@@ -2902,7 +2902,7 @@
 Functionc9038: ; c9038 (32:5038)
 	ld hl, $2
 	add hl, bc
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and $1
 	xor [hl]
 	ret
@@ -2910,7 +2910,7 @@
 Functionc9042: ; c9042 (32:5042)
 	ld hl, $2
 	add hl, bc
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld a, [hBattleTurn]
 	and $1
 	xor [hl]
 	jr nz, .asm_c9053
@@ -2923,7 +2923,7 @@
 	ret
 
 Functionc9059: ; c9059 (32:5059)
-	ld a, [hSGB] ; $ff00+$e7
+	ld a, [hSGB]
 	and a
 	ret
 
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -3,9 +3,9 @@
 ; Core components of the battle engine.
 
 
-Function3c000: ; 3c000
+SendOutFirstMons: ; 3c000
 	xor a
-	ld [wc664], a
+	ld [wBattleParticipantsNotFainted], a
 	ld [wc6fc], a
 	ld [wd0ec], a
 	ld [BattleEnded], a
@@ -12,43 +12,43 @@
 	inc a
 	ld [wd264], a
 	ld hl, OTPartyMon1HP
-	ld bc, OTPartyMon2 - (OTPartyMon1 + 1)
-	ld d, NUM_MOVES - 1
-.asm_3c019
+	ld bc, PARTYMON_STRUCT_LENGTH - 1
+	ld d, BATTLEACTION_SWITCH1 - 1
+.loop
 	inc d
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3c021
+	jr nz, .alive
 	add hl, bc
-	jr .asm_3c019
+	jr .loop
 
-.asm_3c021
+.alive
 	ld a, d
 	ld [wBattleAction], a
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3c031
+	jr z, .not_linked
 
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr z, .asm_3c04c
+	jr z, .player_2
 
-.asm_3c031
+.not_linked
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3c047
+	jr z, .wild
 	xor a
-	ld [wc718], a
+	ld [wEnemySwitchMonIndex], a
 	call NewEnemyMonStatus
 	call ResetEnemyStatLevels
 	call BreakAttraction
-	call Function3d4e1
+	call EnemySwitch
 
-.asm_3c047
+.wild
 	ld c, 40
 	call DelayFrames
 
-.asm_3c04c
+.player_2
 	call LoadTileMapToTempTileMap
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
@@ -57,19 +57,19 @@
 	call Call_LoadTempTileMapToTileMap
 	ld a, [BattleType]
 	cp BATTLETYPE_DEBUG
-	jp z, .asm_3c0e2
+	jp z, .tutorial_debug
 	cp BATTLETYPE_TUTORIAL
-	jp z, .asm_3c0e2
+	jp z, .tutorial_debug
 	xor a
 	ld [CurPartyMon], a
-.asm_3c06b
+.loop2
 	call CheckIfPartyHasPkmnToBattleWith
-	jr nz, .asm_3c076
+	jr nz, .alive2
 	ld hl, CurPartyMon
 	inc [hl]
-	jr .asm_3c06b
+	jr .loop2
 
-.asm_3c076
+.alive2
 	ld a, [CurBattleMon]
 	ld [LastPlayerMon], a
 	ld a, [CurPartyMon]
@@ -86,13 +86,13 @@
 	ld a, $9
 	call Function3d490
 	call LoadTileMapToTempTileMap
-	call Function3d57a
-	call Function3da0d
+	call ResetBattleParticipants
+	call InitBattleMon
 	call ResetPlayerStatLevels
 	call SendOutPkmnText
 	call NewBattleMonStatus
 	call BreakAttraction
-	call Function3db5f
+	call SendOutPlayerMon
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	call SetPlayerTurn
@@ -99,23 +99,23 @@
 	call SpikesDamage
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3c0df
-	ld a, [$ffcb]
+	jr z, .not_linked_2
+	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr nz, .asm_3c0df
+	jr nz, .not_linked_2
 	xor a
-	ld [wc718], a
+	ld [wEnemySwitchMonIndex], a
 	call NewEnemyMonStatus
 	call ResetEnemyStatLevels
 	call BreakAttraction
-	call Function3d4e1
+	call EnemySwitch
 	call SetEnemyTurn
 	call SpikesDamage
 
-.asm_3c0df
+.not_linked_2
 	jp Function3c12f
 
-.asm_3c0e2
+.tutorial_debug
 	jp BattleMenu
 ; 3c0e5
 
@@ -136,7 +136,7 @@
 	and $c0
 	ld [wBattleResult], a
 	ld hl, BattleText_EnemyFled
-	call Function3d2e0
+	call CheckMobileBattleError
 	jr nc, .asm_3c115
 
 	ld hl, wcd2a
@@ -150,7 +150,7 @@
 
 .asm_3c118
 	call StopDangerSound
-	call Function3d2e0
+	call CheckMobileBattleError
 	jr c, .asm_3c126
 
 	ld de, SFX_RUN
@@ -166,8 +166,8 @@
 
 Function3c12f: ; 3c12f
 .loop
-	call Function3c1bf
-	call Function3c3f5
+	call MobileFn_3c1bf
+	call CheckContestBattleOver
 	jp c, .quit
 
 	xor a
@@ -174,12 +174,12 @@
 	ld [wPlayerIsSwitching], a
 	ld [wEnemyIsSwitching], a
 	ld [wd264], a
-	ld [wc73f], a
-	ld [wc740], a
+	ld [wPlayerJustGotFrozen], a
+	ld [wEnemyJustGotFrozen], a
 	ld [CurDamage], a
 	ld [CurDamage + 1], a
 
-	call Function3c27c
+	call HandleBerserkGene
 	call UpdateBattleMonInParty
 	callba AIChooseMove
 
@@ -191,35 +191,35 @@
 	jp c, .quit
 .not_disconnected
 
-	call Function3c410
-	jr c, .asm_3c18a
-.asm_3c179
+	call CheckPlayerLockedIn
+	jr c, .skip_iteration
+.loop1
 	call BattleMenu
 	jr c, .quit
 	ld a, [BattleEnded]
 	and a
 	jr nz, .quit
-	ld a, [wd232] ; roared/whirlwinded/teleported
+	ld a, [wForcedSwitch] ; roared/whirlwinded/teleported
 	and a
 	jr nz, .quit
-.asm_3c18a
-	call Function3c434
-	jr nz, .asm_3c179
+.skip_iteration
+	call ParsePlayerAction
+	jr nz, .loop1
 
-	call Function3c300
+	call EnemyTriesToFlee
 	jr c, .quit
 
-	call Function3c314
-	jr c, .asm_3c19e
-	call Function3c5fe
-	jr .asm_3c1a1
-.asm_3c19e
-	call Function3c664
-.asm_3c1a1
-	call Function3d2e0
+	call DetermineMoveOrder
+	jr c, .false
+	call Battle_EnemyFirst
+	jr .proceed
+.false
+	call Battle_PlayerFirst
+.proceed
+	call CheckMobileBattleError
 	jr c, .quit
 
-	ld a, [wd232]
+	ld a, [wForcedSwitch]
 	and a
 	jr nz, .quit
 
@@ -227,7 +227,7 @@
 	and a
 	jr nz, .quit
 
-	call Function3c1d6
+	call HandleBetweenTurnEffects
 	ld a, [BattleEnded]
 	and a
 	jr nz, .quit
@@ -237,46 +237,41 @@
 	ret
 ; 3c1bf
 
-Function3c1bf: ; 3c1bf
-	ret
-; 3c1c0
-
-
-Function3c1c0: ; 3c1c0
+MobileFn_3c1bf: mobile
 	ld a, $5
 	call GetSRAMBank
-	ld hl, $a89b
+	ld hl, $a89b ; s5_a89b
 	inc [hl]
-	jr nz, .asm_3c1d2
+	jr nz, .finish
 	dec hl
 	inc [hl]
-	jr nz, .asm_3c1d2
+	jr nz, .finish
 	dec [hl]
 	inc hl
 	dec [hl]
 
-.asm_3c1d2
+.finish
 	call CloseSRAM
 	ret
 ; 3c1d6
 
 
-Function3c1d6: ; 3c1d6
-	ld a, [$ffcb]
+HandleBetweenTurnEffects: ; 3c1d6
+	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .CheckEnemyFirst
 	call CheckFaint_PlayerThenEnemy
 	ret c
-	call Function3ca26
+	call HandleFutureSight
 	call CheckFaint_PlayerThenEnemy
 	ret c
 	call HandleWeather
 	call CheckFaint_PlayerThenEnemy
 	ret c
-	call Function3c874
+	call HandleWrap
 	call CheckFaint_PlayerThenEnemy
 	ret c
-	call Function3c801
+	call HandlePerishSong
 	call CheckFaint_PlayerThenEnemy
 	ret c
 	jr .NoMoreFaintingConditions
@@ -284,27 +279,27 @@
 .CheckEnemyFirst
 	call CheckFaint_EnemyThenPlayer
 	ret c
-	call Function3ca26
+	call HandleFutureSight
 	call CheckFaint_EnemyThenPlayer
 	ret c
 	call HandleWeather
 	call CheckFaint_EnemyThenPlayer
 	ret c
-	call Function3c874
+	call HandleWrap
 	call CheckFaint_EnemyThenPlayer
 	ret c
-	call Function3c801
+	call HandlePerishSong
 	call CheckFaint_EnemyThenPlayer
 	ret c
 
 .NoMoreFaintingConditions
-	call Function3c8eb
-	call Function3c93c
+	call HandleLeftovers
+	call HandleMysteryberry
 	call HanleDefrost
 	call HandleSafeguard
 	call HandleScreens
-	call Function3de97
-	call Function3dcf9
+	call HandleStatBoostingHeldItems
+	call HandleHealingItems
 	call UpdateBattleMonInParty
 	call LoadTileMapToTempTileMap
 	jp Function3c4df
@@ -360,8 +355,8 @@
 	ret
 ; 3c27c
 
-Function3c27c: ; 3c27c
-	ld a, [$ffcb]
+HandleBerserkGene: ; 3c27c
+	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .reverse
 
@@ -417,7 +412,7 @@
 	ld [hl], a
 	ld [AttackMissed], a
 	ld [EffectFailed], a
-	callba BattleCommand77
+	callba BattleCommand_AttackUp2
 	pop af
 	pop hl
 	ld [hl], a
@@ -424,7 +419,7 @@
 	call GetItemName
 	ld hl, BattleText_UsersStringBuffer1Activated
 	call StdBattleTextBox
-	callab BattleCommand8c
+	callab BattleCommand_StatUpMessage
 	pop af
 	bit SUBSTATUS_CONFUSED, a
 	ret nz
@@ -431,74 +426,75 @@
 	xor a
 	ld [wcfca], a
 	ld de, ANIM_CONFUSED
-	call Function3ee0f
+	call Call_PlayBattleAnim_OnlyIfVisible
 	call SwitchTurnCore
 	ld hl, BecameConfusedText
 	jp StdBattleTextBox
 ; 3c300
 
-Function3c300: ; 3c300
+EnemyTriesToFlee: ; 3c300
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3c30d
+	jr z, .not_linked
 	ld a, [wBattleAction]
-	cp $f
-	jr z, .asm_3c30f
+	cp BATTLEACTION_FORFEIT
+	jr z, .forfeit
 
-.asm_3c30d
+.not_linked
 	and a
 	ret
 
-.asm_3c30f
+.forfeit
 	call WildFled_EnemyFled_LinkBattleCanceled
 	scf
 	ret
 ; 3c314
 
-Function3c314: ; 3c314
+DetermineMoveOrder: ; 3c314
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3c35b
+	jr z, .use_move
 	ld a, [wBattleAction]
-	cp $e
-	jr z, .asm_3c35b
-	cp $d
-	jr z, .asm_3c35b
-	sub NUM_MOVES
-	jr c, .asm_3c35b
+	cp BATTLEACTION_E
+	jr z, .use_move
+	cp BATTLEACTION_D
+	jr z, .use_move
+	sub BATTLEACTION_SWITCH1
+	jr c, .use_move
 	ld a, [wd0ec]
 	cp $2
-	jr nz, .asm_3c34c
-	ld a, [$ffcb]
+	jr nz, .switch
+	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr z, .asm_3c341
+	jr z, .player_2
+
 	call BattleRandom
 	cp 1 + (50 percent)
-	jp c, .asm_3c3f1
-	jp Function3c3f3
+	jp c, .player_first
+	jp .enemy_first
 
-.asm_3c341
+.player_2
 	call BattleRandom
 	cp 1 + (50 percent)
-	jp c, Function3c3f3
-	jp .asm_3c3f1
+	jp c, .enemy_first
+	jp .player_first
 
-.asm_3c34c
+.switch
 	callab AI_Switch
 	call SetEnemyTurn
 	call SpikesDamage
-	jp Function3c3f3
+	jp .enemy_first
 
-.asm_3c35b
+.use_move
 	ld a, [wd0ec]
 	and a
-	jp nz, .asm_3c3f1
+	jp nz, .player_first
 	call CompareMovePriority
-	jr z, .asm_3c36d
-	jp c, .asm_3c3f1
-	jp Function3c3f3
+	jr z, .equal_priority
+	jp c, .player_first ; player goes first
+	jp .enemy_first
 
-.asm_3c36d
+.equal_priority
 	call SetPlayerTurn
 	callab GetUserItem
 	push bc
@@ -506,84 +502,84 @@
 	pop de
 	ld a, d
 	cp HELD_QUICK_CLAW
-	jr nz, .asm_3c391
+	jr nz, .player_no_quick_claw
 	ld a, b
 	cp HELD_QUICK_CLAW
-	jr z, .asm_3c39f
+	jr z, .both_have_quick_claw
 	call BattleRandom
 	cp e
-	jr nc, .asm_3c3c5
-	jp .asm_3c3f1
+	jr nc, .speed_check
+	jp .player_first
 
-.asm_3c391
+.player_no_quick_claw
 	ld a, b
 	cp HELD_QUICK_CLAW
-	jr nz, .asm_3c3c5
+	jr nz, .speed_check
 	call BattleRandom
 	cp c
-	jr nc, .asm_3c3c5
-	jp Function3c3f3
+	jr nc, .speed_check
+	jp .enemy_first
 
-.asm_3c39f
-	ld a, [$ffcb]
+.both_have_quick_claw
+	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr z, .asm_3c3b5
+	jr z, .player_2b
 	call BattleRandom
 	cp c
-	jp c, Function3c3f3
+	jp c, .enemy_first
 	call BattleRandom
 	cp e
-	jp c, .asm_3c3f1
-	jr .asm_3c3c5
+	jp c, .player_first
+	jr .speed_check
 
-.asm_3c3b5
+.player_2b
 	call BattleRandom
 	cp e
-	jp c, .asm_3c3f1
+	jp c, .player_first
 	call BattleRandom
 	cp c
-	jp c, Function3c3f3
-	jr .asm_3c3c5
+	jp c, .enemy_first
+	jr .speed_check
 
-.asm_3c3c5
+.speed_check
 	ld de, BattleMonSpeed
 	ld hl, EnemyMonSpeed
-	ld c, $2
+	ld c, 2
 	call StringCmp
-	jr z, .asm_3c3d8
-	jp nc, .asm_3c3f1
-	jp Function3c3f3
+	jr z, .speed_tie
+	jp nc, .player_first
+	jp .enemy_first
 
-.asm_3c3d8
-	ld a, [$ffcb]
+.speed_tie
+	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr z, .asm_3c3e9
+	jr z, .player_2c
 	call BattleRandom
 	cp 1 + (50 percent)
-	jp c, .asm_3c3f1
-	jp Function3c3f3
+	jp c, .player_first
+	jp .enemy_first
 
-.asm_3c3e9
+.player_2c
 	call BattleRandom
 	cp 1 + (50 percent)
-	jp c, Function3c3f3
-.asm_3c3f1
+	jp c, .enemy_first
+.player_first
 	scf
 	ret
 ; 3c3f3
 
-Function3c3f3: ; 3c3f3
+.enemy_first: ; 3c3f3
 	and a
 	ret
 ; 3c3f5
 
-Function3c3f5: ; 3c3f5
+CheckContestBattleOver: ; 3c3f5
 	ld a, [BattleType]
 	cp BATTLETYPE_CONTEST
-	jr nz, .asm_3c40e
-	ld a, [wdc79]
+	jr nz, .contest_not_over
+	ld a, [wParkBallsRemaining]
 	and a
-	jr nz, .asm_3c40e
+	jr nz, .contest_not_over
 	ld a, [wBattleResult]
 	and $c0
 	add $2
@@ -591,12 +587,12 @@
 	scf
 	ret
 
-.asm_3c40e
+.contest_not_over
 	and a
 	ret
 ; 3c410
 
-Function3c410: ; 3c410
+CheckPlayerLockedIn: ; 3c410
 	ld a, [PlayerSubStatus4]
 	and 1 << SUBSTATUS_RECHARGE
 	jp nz, .quit
@@ -622,25 +618,25 @@
 	ret
 ; 3c434
 
-Function3c434: ; 3c434
-	call Function3c410
-	jp c, .asm_3c4ba
+ParsePlayerAction: ; 3c434
+	call CheckPlayerLockedIn
+	jp c, .locked_in
 	ld hl, PlayerSubStatus5
 	bit SUBSTATUS_ENCORED, [hl]
-	jr z, .asm_3c449
+	jr z, .not_encored
 	ld a, [LastPlayerMove]
 	ld [CurPlayerMove], a
-	jr .asm_3c47c
+	jr .encored
 
-.asm_3c449
+.not_encored
 	ld a, [wd0ec]
 	cp $2
-	jr z, .asm_3c4ce
+	jr z, .reset_rage
 	and a
-	jr nz, .asm_3c4b5
+	jr nz, .reset_bide
 	ld a, [PlayerSubStatus3]
 	and 1 << SUBSTATUS_BIDE
-	jr nz, .asm_3c4ba
+	jr nz, .locked_in
 	xor a
 	ld [wd235], a
 	inc a ; POUND
@@ -651,67 +647,67 @@
 	call UpdateBattleHuds
 	ld a, [CurPlayerMove]
 	cp STRUGGLE
-	jr z, .asm_3c476
+	jr z, .struggle
 	call PlayClickSFX
 
-.asm_3c476
+.struggle
 	ld a, $1
 	ld [hBGMapMode], a
 	pop af
 	ret nz
 
-.asm_3c47c
+.encored
 	call SetPlayerTurn
 	callab UpdateMoveData
 	xor a
-	ld [wc732], a
+	ld [wPlayerCharging], a
 	ld a, [wPlayerMoveStruct + MOVE_EFFECT]
 	cp EFFECT_FURY_CUTTER
-	jr z, .asm_3c494
+	jr z, .continue_fury_cutter
 	xor a
 	ld [PlayerFuryCutterCount], a
 
-.asm_3c494
+.continue_fury_cutter
 	ld a, [wPlayerMoveStruct + MOVE_EFFECT]
 	cp EFFECT_RAGE
-	jr z, .asm_3c4a4
+	jr z, .continue_rage
 	ld hl, PlayerSubStatus4
 	res SUBSTATUS_RAGE, [hl]
 	xor a
-	ld [wc72b], a
+	ld [wPlayerRageCounter], a
 
-.asm_3c4a4
+.continue_rage
 	ld a, [wPlayerMoveStruct + MOVE_EFFECT]
 	cp EFFECT_PROTECT
-	jr z, .asm_3c4c9
+	jr z, .continue_protect
 	cp EFFECT_ENDURE
-	jr z, .asm_3c4c9
+	jr z, .continue_protect
 	xor a
 	ld [PlayerProtectCount], a
-	jr .asm_3c4c9
+	jr .continue_protect
 
-.asm_3c4b5
+.reset_bide
 	ld hl, PlayerSubStatus3
 	res SUBSTATUS_BIDE, [hl]
 
-.asm_3c4ba
+.locked_in
 	xor a
 	ld [PlayerFuryCutterCount], a
 	ld [PlayerProtectCount], a
-	ld [wc72b], a
+	ld [wPlayerRageCounter], a
 	ld hl, PlayerSubStatus4
 	res SUBSTATUS_RAGE, [hl]
 
-.asm_3c4c9
-	call Function3e7c1
+.continue_protect
+	call ParseEnemyAction
 	xor a
 	ret
 
-.asm_3c4ce
+.reset_rage
 	xor a
 	ld [PlayerFuryCutterCount], a
 	ld [PlayerProtectCount], a
-	ld [wc72b], a
+	ld [wPlayerRageCounter], a
 	ld hl, PlayerSubStatus4
 	res SUBSTATUS_RAGE, [hl]
 	xor a
@@ -719,7 +715,7 @@
 ; 3c4df
 
 Function3c4df: ; 3c4df
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .asm_3c4ea
 	call .asm_3c4ed
@@ -777,7 +773,7 @@
 ; 3c543
 
 
-Function3c543: ; 3c543
+TryEnemyFlee: ; 3c543
 	ld a, [wBattleMode]
 	dec a
 	jr nz, .Stay
@@ -786,7 +782,7 @@
 	bit SUBSTATUS_CANT_RUN, a
 	jr nz, .Stay
 
-	ld a, [wc731]
+	ld a, [wEnemyWrapCount]
 	and a
 	jr nz, .Stay
 
@@ -936,19 +932,19 @@
 ; 3c5fe
 
 
-Function3c5fe: ; 3c5fe
+Battle_EnemyFirst: ; 3c5fe
 	call LoadTileMapToTempTileMap
-	call Function3c543
+	call TryEnemyFlee
 	jp c, WildFled_EnemyFled_LinkBattleCanceled
 	call SetEnemyTurn
 	ld a, $1
-	ld [wc70f], a
+	ld [wEnemyGoesFirst], a
 	callab AI_SwitchOrTryItem
-	jr c, .asm_3c62f
-	call Function3c6de
-	call Function3d2e0
+	jr c, .switch_item
+	call EnemyTurn_EndOpponentProtectEndureDestinyBond
+	call CheckMobileBattleError
 	ret c
-	ld a, [wd232]
+	ld a, [wForcedSwitch]
 	and a
 	ret nz
 	call HasPlayerFainted
@@ -956,15 +952,15 @@
 	call HasEnemyFainted
 	jp z, HandleEnemyMonFaint
 
-.asm_3c62f
+.switch_item
 	call SetEnemyTurn
 	call ResidualDamage
 	jp z, HandleEnemyMonFaint
 	call RefreshBattleHuds
-	call Function3c6cf
-	call Function3d2e0
+	call PlayerTurn_EndOpponentProtectEndureDestinyBond
+	call CheckMobileBattleError
 	ret c
-	ld a, [wd232]
+	ld a, [wForcedSwitch]
 	and a
 	ret nz
 	call HasEnemyFainted
@@ -980,18 +976,18 @@
 	ret
 ; 3c664
 
-Function3c664: ; 3c664
+Battle_PlayerFirst: ; 3c664
 	xor a
-	ld [wc70f], a
+	ld [wEnemyGoesFirst], a
 	call SetEnemyTurn
 	callab AI_SwitchOrTryItem
 	push af
-	call Function3c6cf
+	call PlayerTurn_EndOpponentProtectEndureDestinyBond
 	pop bc
-	ld a, [wd232]
+	ld a, [wForcedSwitch]
 	and a
 	ret nz
-	call Function3d2e0
+	call CheckMobileBattleError
 	ret c
 	call HasEnemyFainted
 	jp z, HandleEnemyMonFaint
@@ -1005,14 +1001,14 @@
 	push bc
 	call RefreshBattleHuds
 	pop af
-	jr c, .asm_3c6be
+	jr c, .switched_or_used_item
 	call LoadTileMapToTempTileMap
-	call Function3c543
+	call TryEnemyFlee
 	jp c, WildFled_EnemyFled_LinkBattleCanceled
-	call Function3c6de
-	call Function3d2e0
+	call EnemyTurn_EndOpponentProtectEndureDestinyBond
+	call CheckMobileBattleError
 	ret c
-	ld a, [wd232]
+	ld a, [wForcedSwitch]
 	and a
 	ret nz
 	call HasPlayerFainted
@@ -1020,7 +1016,7 @@
 	call HasEnemyFainted
 	jp z, HandleEnemyMonFaint
 
-.asm_3c6be
+.switched_or_used_item
 	call SetEnemyTurn
 	call ResidualDamage
 	jp z, HandleEnemyMonFaint
@@ -1030,21 +1026,21 @@
 	ret
 ; 3c6cf
 
-Function3c6cf: ; 3c6cf
+PlayerTurn_EndOpponentProtectEndureDestinyBond: ; 3c6cf
 	call SetPlayerTurn
-	call Function3c6fe
+	call EndUserDestinyBond
 	callab DoPlayerTurn
-	jp Function3c6ed
+	jp EndOpponentProtectEndureDestinyBond
 ; 3c6de
 
-Function3c6de: ; 3c6de
+EnemyTurn_EndOpponentProtectEndureDestinyBond: ; 3c6de
 	call SetEnemyTurn
-	call Function3c6fe
+	call EndUserDestinyBond
 	callab DoEnemyTurn
-	jp Function3c6ed
+	jp EndOpponentProtectEndureDestinyBond
 ; 3c6ed
 
-Function3c6ed: ; 3c6ed
+EndOpponentProtectEndureDestinyBond: ; 3c6ed
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVarAddr
 	res SUBSTATUS_PROTECT, [hl]
@@ -1055,7 +1051,7 @@
 	ret
 ; 3c6fe
 
-Function3c6fe: ; 3c6fe
+EndUserDestinyBond: ; 3c6fe
 	ld a, BATTLE_VARS_SUBSTATUS5
 	call GetBattleVarAddr
 	res SUBSTATUS_DESTINY_BOND, [hl]
@@ -1106,14 +1102,14 @@
 
 	xor a
 	ld [wcfca], a
-	call Function3ee0f
+	call Call_PlayBattleAnim_OnlyIfVisible
 	call GetEighthMaxHP
 	ld de, PlayerToxicCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c74d
+	jr z, .check_toxic
 	ld de, EnemyToxicCount
-.asm_3c74d
+.check_toxic
 
 	ld a, BATTLE_VARS_SUBSTATUS5
 	call GetBattleVar
@@ -1132,7 +1128,7 @@
 	ld c, l
 .did_toxic
 
-	call Function3cc3f
+	call SubtractHPFromUser
 .did_psn_brn
 
 	call HasUserFainted
@@ -1141,7 +1137,7 @@
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
 	bit SUBSTATUS_LEECH_SEED, [hl]
-	jr z, .asm_3c7a1
+	jr z, .not_seeded
 
 	call SwitchTurnCore
 	xor a
@@ -1150,17 +1146,17 @@
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
-	call z, Function3ee0f
+	call z, Call_PlayBattleAnim_OnlyIfVisible
 	call SwitchTurnCore
 
 	call GetEighthMaxHP
-	call Function3cc3f
+	call SubtractHPFromUser
 	ld a, $1
 	ld [hBGMapMode], a
-	call Function3ccef
+	call RestoreHP
 	ld hl, LeechSeedSapsText
 	call StdBattleTextBox
-.asm_3c7a1
+.not_seeded
 
 	call HasUserFainted
 	jr z, .fainted
@@ -1168,16 +1164,16 @@
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVarAddr
 	bit SUBSTATUS_NIGHTMARE, [hl]
-	jr z, .asm_3c7c5
+	jr z, .not_nightmare
 	xor a
 	ld [wcfca], a
 	ld de, ANIM_IN_NIGHTMARE
-	call Function3ee0f
+	call Call_PlayBattleAnim_OnlyIfVisible
 	call GetQuarterMaxHP
-	call Function3cc3f
+	call SubtractHPFromUser
 	ld hl, HasANightmareText
 	call StdBattleTextBox
-.asm_3c7c5
+.not_nightmare
 
 	call HasUserFainted
 	jr z, .fainted
@@ -1185,25 +1181,25 @@
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVarAddr
 	bit SUBSTATUS_CURSE, [hl]
-	jr z, .asm_3c7e9
+	jr z, .not_cursed
 
 	xor a
 	ld [wcfca], a
 	ld de, ANIM_IN_NIGHTMARE
-	call Function3ee0f
+	call Call_PlayBattleAnim_OnlyIfVisible
 	call GetQuarterMaxHP
-	call Function3cc3f
+	call SubtractHPFromUser
 	ld hl, HurtByCurseText
 	call StdBattleTextBox
 
-.asm_3c7e9
+.not_cursed
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c7f4
+	jr z, .check_fainted
 	ld hl, EnemyMonHP
 
-.asm_3c7f4
+.check_fainted
 	ld a, [hli]
 	or [hl]
 	ret nz
@@ -1216,27 +1212,28 @@
 	ret
 ; 3c801
 
-Function3c801: ; 3c801
-	ld a, [$ffcb]
+HandlePerishSong: ; 3c801
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c813
+	jr z, .EnemyFirst
 	call SetPlayerTurn
-	call .asm_3c81c
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c81c
+	jp .do_it
 
-.asm_3c813
+.EnemyFirst
 	call SetEnemyTurn
-	call .asm_3c81c
+	call .do_it
 	call SetPlayerTurn
-.asm_3c81c
+
+.do_it
 	ld hl, PlayerPerishCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c827
+	jr z, .got_count
 	ld hl, EnemyPerishCount
 
-.asm_3c827
+.got_count
 	ld a, BATTLE_VARS_SUBSTATUS1
 	call GetBattleVar
 	bit SUBSTATUS_PERISH, a
@@ -1284,46 +1281,51 @@
 	ret
 ; 3c874
 
-Function3c874: ; 3c874
-	ld a, [$ffcb]
+HandleWrap: ; 3c874
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c886
+	jr z, .EnemyFirst
 	call SetPlayerTurn
-	call .asm_3c88f
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c88f
+	jp .do_it
 
-.asm_3c886
+.EnemyFirst
 	call SetEnemyTurn
-	call .asm_3c88f
+	call .do_it
 	call SetPlayerTurn
-.asm_3c88f
-	ld hl, wc730
-	ld de, wc72e
+
+.do_it
+	ld hl, wPlayerWrapCount
+	ld de, wPlayerTrappingMove
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c8a0
-	ld hl, wc731
-	ld de, wc72f
+	jr z, .got_addrs
+	ld hl, wEnemyWrapCount
+	ld de, wEnemyTrappingMove
 
-.asm_3c8a0
+.got_addrs
 	ld a, [hl]
 	and a
 	ret z
+
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVar
 	bit SUBSTATUS_SUBSTITUTE, a
 	ret nz
+
 	ld a, [de]
 	ld [wd265], a
 	ld [FXAnimIDLo], a
 	call GetMoveName
 	dec [hl]
-	jr z, .asm_3c8de
+	jr z, .release_from_bounds
+
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVar
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
-	jr nz, .asm_3c8d3
+	jr nz, .skip_anim
+
 	call SwitchTurnCore
 	xor a
 	ld [wcfca], a
@@ -1331,13 +1333,13 @@
 	predef PlayBattleAnim
 	call SwitchTurnCore
 
-.asm_3c8d3
+.skip_anim
 	call GetSixteenthMaxHP
-	call Function3cc3f
+	call SubtractHPFromUser
 	ld hl, BattleText_UsersHurtByStringBuffer1
 	jr .asm_3c8e1
 
-.asm_3c8de
+.release_from_bounds
 	ld hl, BattleText_UserWasReleasedFromStringBuffer1
 
 .asm_3c8e1
@@ -1351,20 +1353,21 @@
 	ret
 ; 3c8eb
 
-Function3c8eb: ; 3c8eb
-	ld a, [$ffcb]
+HandleLeftovers: ; 3c8eb
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c8fd
+	jr z, .DoEnemyFirst
 	call SetPlayerTurn
-	call .asm_3c906
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c906
+	jp .do_it
 
-.asm_3c8fd
+.DoEnemyFirst
 	call SetEnemyTurn
-	call .asm_3c906
+	call .do_it
 	call SetPlayerTurn
-.asm_3c906
+.do_it
+
 	callab GetUserItem
 	ld a, [hl]
 	ld [wd265], a
@@ -1372,13 +1375,15 @@
 	ld a, b
 	cp HELD_LEFTOVERS
 	ret nz
+
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c922
+	jr z, .got_hp
 	ld hl, EnemyMonHP
 
-.asm_3c922
+.got_hp
+; Don't restore if we're already at max HP
 	ld a, [hli]
 	ld b, a
 	ld a, [hli]
@@ -1385,37 +1390,38 @@
 	ld c, a
 	ld a, [hli]
 	cp b
-	jr nz, .asm_3c92d
+	jr nz, .restore
 	ld a, [hl]
 	cp c
 	ret z
 
-.asm_3c92d
+.restore
 	call GetSixteenthMaxHP
 	call SwitchTurnCore
-	call Function3ccef
+	call RestoreHP
 	ld hl, BattleText_0x80880
 	jp StdBattleTextBox
 ; 3c93c
 
-Function3c93c: ; 3c93c
-	ld a, [$ffcb]
+HandleMysteryberry: ; 3c93c
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3c94e
+	jr z, .DoEnemyFirst
 	call SetPlayerTurn
-	call .asm_3c957
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3c957
+	jp .do_it
 
-.asm_3c94e
+.DoEnemyFirst
 	call SetEnemyTurn
-	call .asm_3c957
+	call .do_it
 	call SetPlayerTurn
-.asm_3c957
+
+.do_it
 	callab GetUserItem
 	ld a, b
 	cp HELD_RESTORE_PP
-	jr nz, .asm_3c9ae
+	jr nz, .quit
 	ld hl, PartyMon1PP
 	ld a, [CurBattleMon]
 	call GetPartyLocation
@@ -1426,12 +1432,12 @@
 	call GetPartyLocation
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c99b
+	jr z, .wild
 	ld de, wc739
 	ld hl, wc735
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3c99b
+	jr z, .wild
 	ld hl, OTPartyMon1PP
 	ld a, [CurOTMon]
 	call GetPartyLocation
@@ -1441,33 +1447,33 @@
 	ld a, [CurOTMon]
 	call GetPartyLocation
 
-.asm_3c99b
+.wild
 	ld c, $0
-.asm_3c99d
+.loop
 	ld a, [hl]
 	and a
-	jr z, .asm_3c9ae
+	jr z, .quit
 	ld a, [de]
 	and $3f
-	jr z, .asm_3c9af
+	jr z, .restore
 	inc hl
 	inc de
 	inc c
 	ld a, c
 	cp NUM_MOVES
-	jr nz, .asm_3c99d
+	jr nz, .loop
 
-.asm_3c9ae
+.quit
 	ret
 
-.asm_3c9af
+.restore
 	; lousy hack
 	ld a, [hl]
 	cp SKETCH
 	ld b, 1
-	jr z, .asm_3c9b8
+	jr z, .sketch
 	ld b, 5
-.asm_3c9b8
+.sketch
 	ld a, [de]
 	add b
 	ld [de], a
@@ -1479,10 +1485,10 @@
 	ld hl, BattleMonPP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3c9d2
+	jr z, .player_pp
 	ld de, EnemyMonMoves - 1
 	ld hl, EnemyMonPP
-.asm_3c9d2
+.player_pp
 	inc de
 	pop bc
 	ld b, 0
@@ -1496,67 +1502,68 @@
 
 	ld a, [wd265]
 	cp [hl]
-	jr nz, .asm_3c9f5
+	jr nz, .skip_checks
 	ld a, [hBattleTurn]
 	and a
 	ld a, [PlayerSubStatus5]
-	jr z, .asm_3c9ee
+	jr z, .check_transform
 	ld a, [EnemySubStatus5]
-.asm_3c9ee
+.check_transform
 	bit SUBSTATUS_TRANSFORMED, a
-	jr nz, .asm_3c9f5
+	jr nz, .skip_checks
 	ld a, [de]
 	add b
 	ld [de], a
-.asm_3c9f5
+.skip_checks
 	callab GetUserItem
 	ld a, [hl]
 	ld [wd265], a
 	xor a
 	ld [hl], a
-	call Function3df12
+	call GetPartymonItem
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3ca12
+	jr z, .consume_item
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3ca14
-	call Function3df1f
+	jr z, .skip_consumption
+	call GetOTPartymonItem
 
-.asm_3ca12
+.consume_item
 	xor a
 	ld [hl], a
 
-.asm_3ca14
+.skip_consumption
 	call GetItemName
 	call SwitchTurnCore
-	call Function3ddc8
+	call ItemRecoveryAnim
 	call SwitchTurnCore
 	ld hl, BattleText_UserRecoveredPPUsing
 	jp StdBattleTextBox
 ; 3ca26
 
-Function3ca26: ; 3ca26
-	ld a, [$ffcb]
+HandleFutureSight: ; 3ca26
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3ca38
+	jr z, .enemy_first
 	call SetPlayerTurn
-	call .asm_3ca41
+	call .do_it
 	call SetEnemyTurn
-	jp .asm_3ca41
+	jp .do_it
 
-.asm_3ca38
+.enemy_first
 	call SetEnemyTurn
-	call .asm_3ca41
+	call .do_it
 	call SetPlayerTurn
-.asm_3ca41
-	ld hl, wc71d
+
+.do_it
+	ld hl, wPlayerFutureSightCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3ca4c
-	ld hl, wc71e
+	jr z, .okay
+	ld hl, wEnemyFutureSightCount
 
-.asm_3ca4c
+.okay
 	ld a, [hl]
 	and a
 	ret z
@@ -1595,21 +1602,23 @@
 ; 3ca8f
 
 HanleDefrost: ; 3ca8f
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3ca9a
-	call .asm_3ca9d
-	jr .asm_3cac9
+	jr z, .enemy_first
+	call .do_player_turn
+	jr .do_enemy_turn
 
-.asm_3ca9a
-	call .asm_3cac9
-.asm_3ca9d
+.enemy_first
+	call .do_enemy_turn
+.do_player_turn
 	ld a, [BattleMonStatus]
 	bit FRZ, a
 	ret z
-	ld a, [wc73f]
+
+	ld a, [wPlayerJustGotFrozen]
 	and a
 	ret nz
+
 	call BattleRandom
 	cp 10 percent
 	ret nc
@@ -1624,11 +1633,11 @@
 	ld hl, DefrostedOpponentText
 	jp StdBattleTextBox
 
-.asm_3cac9
+.do_enemy_turn
 	ld a, [EnemyMonStatus]
 	bit FRZ, a
 	ret z
-	ld a, [wc740]
+	ld a, [wEnemyJustGotFrozen]
 	and a
 	ret nz
 	call BattleRandom
@@ -1653,7 +1662,7 @@
 ; 3cafb
 
 HandleSafeguard: ; 3cafb
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .asm_3cb06
 	call .asm_3cb09
@@ -1691,7 +1700,7 @@
 
 
 HandleScreens: ; 3cb36
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp 1
 	jr z, .Both
 	call .CheckPlayer
@@ -1776,7 +1785,7 @@
 	cp WEATHER_SANDSTORM
 	ret nz
 
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp 1
 	jr z, .enemy_first
 
@@ -1826,7 +1835,7 @@
 	call Call_PlayBattleAnim
 	call SwitchTurnCore
 	call GetEighthMaxHP
-	call Function3cc3f
+	call SubtractHPFromUser
 
 	ld hl, SandstormHitsText
 	jp StdBattleTextBox
@@ -1862,19 +1871,19 @@
 	dw BattleText_TheSandstormSubsided
 ; 3cc39
 
-Function3cc39: ; 3cc39
-	call Function3cc45
-	jp Function3cd3c
+SubtractHPFromTarget: ; 3cc39
+	call SubtractHP
+	jp UpdateHPBar
 ; 3cc3f
 
-Function3cc3f: ; 3cc3f
+SubtractHPFromUser: ; 3cc3f
 ; Subtract HP from Pkmn
-	call Function3cc45
-	jp Function3cd36
+	call SubtractHP
+	jp UpdateHPBarBattleHuds
 ; 3cc45
 
 
-Function3cc45: ; 3cc45
+SubtractHP: ; 3cc45
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
@@ -2015,7 +2024,7 @@
 	ret
 ; 3ccde
 
-Function3ccde: ; 3ccde
+CheckUserHasEnoughHP: ; 3ccde
 	ld hl, BattleMonHP + 1
 	ld a, [hBattleTurn]
 	and a
@@ -2031,7 +2040,7 @@
 ; 3ccef
 
 
-Function3ccef: ; 3ccef
+RestoreHP ; 3ccef
 	ld hl, EnemyMonMaxHP
 	ld a, [hBattleTurn]
 	and a
@@ -2039,20 +2048,20 @@
 	ld hl, BattleMonMaxHP
 .ok
 	ld a, [hli]
-	ld [Buffer1 + 1], a
+	ld [Buffer2], a
 	ld a, [hld]
-	ld [Buffer1 + 0], a
+	ld [Buffer1], a
 	dec hl
 	ld a, [hl]
-	ld [Buffer1 + 2], a
+	ld [Buffer3], a
 	add c
 	ld [hld], a
-	ld [Buffer1 + 4], a
+	ld [Buffer5], a
 	ld a, [hl]
-	ld [Buffer1 + 3], a
+	ld [Buffer4], a
 	adc b
 	ld [hli], a
-	ld [Buffer1 + 5], a
+	ld [Buffer6], a
 
 	ld a, [Buffer1]
 	ld c, a
@@ -2065,23 +2074,23 @@
 	jr c, .asm_3cd2d
 	ld a, b
 	ld [hli], a
-	ld [Buffer1 + 5], a
+	ld [Buffer6], a
 	ld a, c
 	ld [hl], a
-	ld [Buffer1 + 4], a
+	ld [Buffer5], a
 .asm_3cd2d
 
 	call SwitchTurnCore
-	call Function3cd36
+	call UpdateHPBarBattleHuds
 	jp SwitchTurnCore
 ; 3cd36
 
-Function3cd36: ; 3cd36
-	call Function3cd3c
+UpdateHPBarBattleHuds: ; 3cd36
+	call UpdateHPBar
 	jp UpdateBattleHuds
 ; 3cd3c
 
-Function3cd3c: ; 3cd3c
+UpdateHPBar: ; 3cd3c
 	hlcoord 10, 9
 	ld a, [hBattleTurn]
 	and a
@@ -2092,7 +2101,7 @@
 .ok
 	push bc
 	ld [wd10a], a
-	predef Functionc6e0
+	predef AnimateHPBar
 	pop bc
 	ret
 ; 3cd55
@@ -2136,18 +2145,18 @@
 	ld hl, BattleMonHP
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3cdba
+	jr nz, .player_mon_not_fainted
 
-	call Function3d1f8
-	jr nc, .asm_3cda4
+	call AskUseNextPokemon
+	jr nc, .dont_flee
 
 	ld a, 1
 	ld [BattleEnded], a
 	ret
 
-.asm_3cda4
-	call Function3d227
-	call Function3d2e0
+.dont_flee
+	call ForcePlayerMonChoice
+	call CheckMobileBattleError
 	jp c, WildFled_EnemyFled_LinkBattleCanceled
 
 	ld a, $1
@@ -2156,7 +2165,7 @@
 	jp z, WildFled_EnemyFled_LinkBattleCanceled
 	jr Function3cdca
 
-.asm_3cdba
+.player_mon_not_fainted
 	ld a, $1
 	ld [wd0ec], a
 	call Function3cf4a
@@ -2167,19 +2176,19 @@
 ; 3cdca
 
 Function3cdca: ; 3cdca
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3cde6
+	jr z, .player_1
 	call ClearSprites
 	hlcoord 1, 0
 	lb bc, 4, 10
 	call ClearBox
-	call Function3d2b3
+	call PlayerPartyMonEntrance
 	ld a, $1
 	call EnemyPartyMonEntrance
-	jr .asm_3cdfc
+	jr .done
 
-.asm_3cde6
+.player_1
 	ld a, [CurPartyMon]
 	push af
 	ld a, $1
@@ -2188,9 +2197,9 @@
 	call LoadTileMapToTempTileMap
 	pop af
 	ld [CurPartyMon], a
-	call Function3d2b3
+	call PlayerPartyMonEntrance
 
-.asm_3cdfc
+.done
 	xor a
 	ld [wd0ec], a
 	ret
@@ -2200,7 +2209,7 @@
 	call UpdateBattleMonInParty
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3ce16
+	jr z, .wild
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1HP
 	call GetPartyLocation
@@ -2208,7 +2217,7 @@
 	ld [hli], a
 	ld [hl], a
 
-.asm_3ce16
+.wild
 	ld hl, PlayerSubStatus3
 	res SUBSTATUS_IN_LOOP, [hl]
 	xor a
@@ -2219,25 +2228,25 @@
 	call BreakAttraction
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3ce2f
-	jr .asm_3ce37
+	jr z, .wild2
+	jr .trainer
 
-.asm_3ce2f
+.wild2
 	call StopDangerSound
 	ld a, $1
 	ld [wc6fd], a
 
-.asm_3ce37
+.trainer
 	ld hl, BattleMonHP
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3ce47
+	jr nz, .player_mon_did_not_faint
 	ld a, [wc6f7]
 	and a
-	jr nz, .asm_3ce47
-	call Function3d1aa
+	jr nz, .player_mon_did_not_faint
+	call PlayerMonFaintHappinessMod
 
-.asm_3ce47
+.player_mon_did_not_faint
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
 	and a
@@ -2250,62 +2259,63 @@
 	ld a, [wBattleResult]
 	and $c0
 	ld [wBattleResult], a
-	call ShareExperiencePoints
-	jr z, .asm_3ce72
+	call DoOthersShareExperience
+	jr z, .skip_exp
 	ld hl, EnemyMonBaseStats
 	ld b, $7
-.asm_3ce6c
+.loop
 	srl [hl]
 	inc hl
 	dec b
-	jr nz, .asm_3ce6c
+	jr nz, .loop
 
-.asm_3ce72
+.skip_exp
 	ld hl, EnemyMonBaseStats
 	ld de, wc720
-	ld bc, $0007
+	ld bc, EnemyMonEnd - EnemyMonBaseStats
 	call CopyBytes
 	xor a
 	ld [wc71f], a
 	call GiveExperiencePoints
-	call ShareExperiencePoints
+	call DoOthersShareExperience
 	ret z
-	ld a, [wc664]
+
+	ld a, [wBattleParticipantsNotFainted]
 	push af
 	ld a, d
-	ld [wc664], a
+	ld [wBattleParticipantsNotFainted], a
 	ld hl, wc720
 	ld de, EnemyMonBaseStats
-	ld bc, $0007
+	ld bc, EnemyMonEnd - EnemyMonBaseStats
 	call CopyBytes
 	ld a, $1
 	ld [wc71f], a
 	call GiveExperiencePoints
 	pop af
-	ld [wc664], a
+	ld [wBattleParticipantsNotFainted], a
 	ret
 ; 3ceaa
 
-ShareExperiencePoints: ; 3ceaa
+DoOthersShareExperience: ; 3ceaa
 	ld a, [PartyCount]
 	ld b, a
 	ld hl, PartyMon1
 	ld c, 1
 	ld d, 0
-.asm_3ceb5
+.loop
 	push hl
 	push bc
-	ld bc, PartyMon1HP - PartyMon1
+	ld bc, MON_HP
 	add hl, bc
 	ld a, [hli]
 	or [hl]
 	pop bc
 	pop hl
-	jr z, .asm_3ced1
+	jr z, .next
 
 	push hl
 	push bc
-	ld bc, PartyMon1Item - PartyMon1
+	ld bc, MON_ITEM
 	add hl, bc
 	pop bc
 	ld a, [hl]
@@ -2312,31 +2322,31 @@
 	pop hl
 
 	cp EXP_SHARE
-	jr nz, .asm_3ced1
+	jr nz, .next
 	ld a, d
 	or c
 	ld d, a
 
-.asm_3ced1
+.next
 	sla c
 	push de
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 	add hl, de
 	pop de
 	dec b
-	jr nz, .asm_3ceb5
+	jr nz, .loop
 
 	ld a, d
 	ld e, 0
 	ld b, PARTY_LENGTH
-.asm_3cee1
+.loop2
 	srl a
-	jr nc, .asm_3cee6
+	jr nc, .okay
 	inc e
 
-.asm_3cee6
+.okay
 	dec b
-	jr nz, .asm_3cee1
+	jr nz, .loop2
 	ld a, e
 	and a
 	ret
@@ -2384,7 +2394,7 @@
 	ld b, a
 	xor a
 	ld hl, OTPartyMon1HP
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 
 .loop
 	or [hl]
@@ -2407,16 +2417,16 @@
 	callba Function2c012
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3cf6d
+	jr z, .not_linked
 
 	call Function3e8e4
 	ld a, [wBattleAction]
-	cp $f
+	cp BATTLEACTION_FORFEIT
 	ret z
 
 	call Call_LoadTempTileMapToTileMap
 
-.asm_3cf6d
+.not_linked
 	ld hl, BattleMonHP
 	ld a, [hli]
 	or [hl]
@@ -2429,7 +2439,7 @@
 EnemyPartyMonEntrance: ; 3cf78
 	push af
 	xor a
-	ld [wc718], a
+	ld [wEnemySwitchMonIndex], a
 	call NewEnemyMonStatus
 	call ResetEnemyStatLevels
 	call BreakAttraction
@@ -2437,14 +2447,14 @@
 	and a
 	jr nz, .asm_3cf8f
 
-	call Function3d4e1
+	call EnemySwitch
 	jr .asm_3cf92
 
 .asm_3cf8f
-	call Function3d517
+	call EnemySwitch_SetMode
 
 .asm_3cf92
-	call Function3d57a
+	call ResetBattleParticipants
 	call SetEnemyTurn
 	call SpikesDamage
 	xor a
@@ -2469,7 +2479,7 @@
 	call StdBattleTextBox
 
 	call IsMobileBattle
-	jr z, .asm_3cff5
+	jr z, .mobile
 	ld a, [wLinkMode]
 	and a
 	ret nz
@@ -2476,7 +2486,7 @@
 
 	ld a, [InBattleTowerBattle]
 	bit 0, a
-	jr nz, .asm_3d006
+	jr nz, .battle_tower
 
 	call Function3ebd8
 	ld c, $28
@@ -2483,33 +2493,33 @@
 	call DelayFrames
 	ld a, [BattleType]
 	cp BATTLETYPE_CANLOSE
-	jr nz, .asm_3cfe8
+	jr nz, .skip_heal
 	predef HealParty
-.asm_3cfe8
+.skip_heal
 	ld a, [wc2cc]
 	bit 0, a
-	jr nz, .asm_3cff2
-	call Function3718
+	jr nz, .skip_win_loss_text
+	call PrintWinLossText
 
-.asm_3cff2
+.skip_win_loss_text
 	jp Function3d02b
 
-.asm_3cff5
+.mobile
 	call Function3ebd8
-	ld c, $28
+	ld c, 40
 	call DelayFrames
 	ld c, $4
 	callba Function4ea0a
 	ret
 
-.asm_3d006
+.battle_tower
 	call Function3ebd8
-	ld c, $28
+	ld c, 40
 	call DelayFrames
 	call EmptyBattleTextBox
 	ld c, $3
-	callba StoreText
-	call Functiona80
+	callba BattleTowerText
+	call WaitPressAorB_BlinkCursor
 	ld hl, wPayDayMoney
 	ld a, [hli]
 	or [hl]
@@ -2517,7 +2527,7 @@
 	or [hl]
 	ret nz
 	call ClearTileMap
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 3d02b
 
@@ -2675,30 +2685,30 @@
 	ld de, MUSIC_WILD_VICTORY
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .asm_3d113
+	jr nz, .trainer_victory
 	push de
-	call ShareExperiencePoints
+	call DoOthersShareExperience
 	pop de
-	jr nz, .asm_3d11e
+	jr nz, .play_music
 	ld hl, wPayDayMoney
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3d11e
-	ld a, [wc664]
+	jr nz, .play_music
+	ld a, [wBattleParticipantsNotFainted]
 	and a
-	jr z, .asm_3d121
-	jr .asm_3d11e
+	jr z, .lost
+	jr .play_music
 
-.asm_3d113
+.trainer_victory
 	ld de, MUSIC_GYM_VICTORY
 	call IsJohtoGymLeader
-	jr c, .asm_3d11e
+	jr c, .play_music
 	ld de, MUSIC_TRAINER_VICTORY
 
-.asm_3d11e
+.play_music
 	call PlayMusic
 
-.asm_3d121
+.lost
 	pop de
 	ret
 ; 3d123
@@ -2767,7 +2777,7 @@
 	call z, FaintEnemyPokemon
 	ld a, $1
 	ld [wc6f7], a
-	call Function3d1aa
+	call PlayerMonFaintHappinessMod
 	call CheckPlayerPartyForFitPkmn
 	ld a, d
 	and a
@@ -2789,15 +2799,15 @@
 	jp z, WinTrainerBattle
 
 .notfainted
-	call Function3d1f8
-	jr nc, .asm_3d190
+	call AskUseNextPokemon
+	jr nc, .switch
 	ld a, $1
 	ld [BattleEnded], a
 	ret
 
-.asm_3d190
-	call Function3d227
-	call Function3d2e0
+.switch
+	call ForcePlayerMonChoice
+	call CheckMobileBattleError
 	jp c, WildFled_EnemyFled_LinkBattleCanceled
 	ld a, c
 	and a
@@ -2809,10 +2819,10 @@
 	jp Function3cdca
 ; 3d1aa
 
-Function3d1aa: ; 3d1aa
+PlayerMonFaintHappinessMod: ; 3d1aa
 	ld a, [CurBattleMon]
 	ld c, a
-	ld hl, wc664
+	ld hl, wBattleParticipantsNotFainted
 	ld b, $0
 	predef FlagPredef
 	ld hl, EnemySubStatus3
@@ -2831,10 +2841,10 @@
 	ld b, a
 	ld a, [EnemyMonLevel]
 	cp b
-	jr c, .asm_3d1dc
+	jr c, .got_param
 	ld c, HAPPINESS_BEATENBYSTRONGFOE
 
-.asm_3d1dc
+.got_param
 	ld a, [CurBattleMon]
 	ld [CurPartyMon], a
 	callab ChangeHappiness
@@ -2845,61 +2855,64 @@
 	ld a, [wc6f7]
 	and a
 	ret z
-	ret
+	ret ; ??????????
 ; 3d1f8
 
-Function3d1f8: ; 3d1f8
+AskUseNextPokemon: ; 3d1f8
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
+; We don't need to be here if we're in a Trainer battle,
+; as that decision is made for us.
 	ld a, [wBattleMode]
 	and a
 	dec a
 	ret nz
+
 	ld hl, BattleText_UseNextMon
 	call StdBattleTextBox
-.asm_3d20a
+.loop
 	lb bc, 1, 7
 	call PlaceYesNoBox
-	ld a, [wcfa9]
-	jr c, .asm_3d217
+	ld a, [MenuSelection2]
+	jr c, .pressed_b
 	and a
 	ret
 
-.asm_3d217
-	ld a, [wcfa9]
-	cp $1
-	jr z, .asm_3d20a
+.pressed_b
+	ld a, [MenuSelection2]
+	cp $1 ; YES
+	jr z, .loop
 	ld hl, PartyMon1Speed
 	ld de, EnemyMonSpeed
 	jp TryToRunAwayFromBattle
 ; 3d227
 
-Function3d227: ; 3d227
+ForcePlayerMonChoice: ; 3d227
 	call EmptyBattleTextBox
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function3d2f7
 	call ForcePickPartyMonInBattle
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3d241
+	jr z, .skip_link
 	ld a, $1
 	ld [wd0ec], a
 	call Function3e8e4
 
-.asm_3d241
+.skip_link
 	xor a
 	ld [wd0ec], a
-	call Function3d2e0
-	jr c, .asm_3d251
+	call CheckMobileBattleError
+	jr c, .enemy_fainted_mobile_error
 	ld hl, EnemyMonHP
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3d26c
+	jr nz, .send_out_pokemon
 
-.asm_3d251
+.enemy_fainted_mobile_error
 	call ClearSprites
-	call WhiteBGMap
-	call Function3eda6
+	call ClearBGPalettes
+	call _LoadHPBar
 	call ExitMenu
 	call LoadTileMapToTempTileMap
 	call WaitBGMap
@@ -2909,18 +2922,18 @@
 	ld c, a
 	ret
 
-.asm_3d26c
+.send_out_pokemon
 	call ClearSprites
 	ld a, [CurBattleMon]
 	ld [LastPlayerMon], a
 	ld a, [CurPartyMon]
 	ld [CurBattleMon], a
-	call Function3d581
-	call Function3da0d
+	call AddBattleParticipant
+	call InitBattleMon
 	call ResetPlayerStatLevels
 	call ClearPalettes
 	call DelayFrame
-	call Function3eda6
+	call _LoadHPBar
 	call WriteBackup
 	call ClearSGB
 	call SetPalettes
@@ -2927,7 +2940,7 @@
 	call SendOutPkmnText
 	call NewBattleMonStatus
 	call BreakAttraction
-	call Function3db5f
+	call SendOutPlayerMon
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	call SetPlayerTurn
@@ -2938,18 +2951,18 @@
 	ret
 ; 3d2b3
 
-Function3d2b3: ; 3d2b3
+PlayerPartyMonEntrance: ; 3d2b3
 	ld a, [CurBattleMon]
 	ld [LastPlayerMon], a
 	ld a, [CurPartyMon]
 	ld [CurBattleMon], a
-	call Function3d581
-	call Function3da0d
+	call AddBattleParticipant
+	call InitBattleMon
 	call ResetPlayerStatLevels
 	call SendOutPkmnText
 	call NewBattleMonStatus
 	call BreakAttraction
-	call Function3db5f
+	call SendOutPlayerMon
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	call SetPlayerTurn
@@ -2957,20 +2970,20 @@
 ; 3d2e0
 
 
-Function3d2e0: ; 3d2e0
+CheckMobileBattleError: ; 3d2e0
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
-	jr nz, .asm_3d2ef ; It's not a mobile battle
+	jr nz, .not_mobile ; It's not a mobile battle
 
 	ld a, [wcd2b]
 	and a
-	jr z, .asm_3d2ef
+	jr z, .not_mobile
 
 ; We have a mobile battle and something else happened
 	scf
 	ret
 
-.asm_3d2ef
+.not_mobile
 	xor a
 	ret
 ; 3d2f1
@@ -2982,8 +2995,8 @@
 ; 3d2f7
 
 Function3d2f7: ; 3d2f7
-	call WhiteBGMap
-Function3d2fa: ; 3d2fa
+	call ClearBGPalettes
+Function3d2fa: ; switch to fullscreen menu?
 	callba Function5004f
 	callba Function50405
 	callba Function8e85
@@ -3046,7 +3059,7 @@
 .pick
 	call PickPartyMonInBattle
 	ret nc
-	call Function3d2e0
+	call CheckMobileBattleError
 	ret c
 
 	ld de, SFX_WRONG
@@ -3071,7 +3084,7 @@
 
 .pick
 	call ForcePickPartyMonInBattle
-	call Function3d2e0
+	call CheckMobileBattleError
 	ret c
 	call SwitchMonAlreadyOut
 	jr c, .pick
@@ -3087,11 +3100,11 @@
 
 	ld a, [InBattleTowerBattle]
 	bit 0, a
-	jr nz, .asm_3d3bd
+	jr nz, .battle_tower
 
 	ld a, [BattleType]
 	cp BATTLETYPE_CANLOSE
-	jr nz, .asm_3d3e3
+	jr nz, .not_canlose
 
 ; Remove the enemy from the screen.
 	hlcoord 0, 0
@@ -3104,12 +3117,12 @@
 
 	ld a, [wc2cc]
 	bit 0, a
-	jr nz, .asm_3d3bc
-	call Function3718
-.asm_3d3bc
+	jr nz, .skip_win_loss_text
+	call PrintWinLossText
+.skip_win_loss_text
 	ret
 
-.asm_3d3bd
+.battle_tower
 ; Remove the enemy from the screen.
 	hlcoord 0, 0
 	lb bc, 8, 21
@@ -3121,13 +3134,13 @@
 
 	call EmptyBattleTextBox
 	ld c, 2
-	callba StoreText
-	call Functiona80
+	callba BattleTowerText
+	call WaitPressAorB_BlinkCursor
 	call ClearTileMap
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 
-.asm_3d3e3
+.not_canlose
 	ld a, [wLinkMode]
 	and a
 	jr nz, .LostLinkBattle
@@ -3141,7 +3154,7 @@
 .LostLinkBattle
 	call UpdateEnemyMonInParty
 	call CheckEnemyTrainerDefeated
-	jr nz, .asm_3d40a
+	jr nz, .not_tied
 	ld hl, TiedAgainstText
 	ld a, [wBattleResult]
 	and $c0
@@ -3149,10 +3162,10 @@
 	ld [wBattleResult], a
 	jr .text
 
-.asm_3d40a
+.not_tied
 	ld hl, LostAgainstText
 	call IsMobileBattle
-	jr z, .asm_3d417
+	jr z, .mobile
 
 .text
 	call StdBattleTextBox
@@ -3161,7 +3174,7 @@
 	scf
 	ret
 
-.asm_3d417
+.mobile
 ; Remove the enemy from the screen.
 	hlcoord 0, 0
 	lb bc, 8, 21
@@ -3293,93 +3306,96 @@
 ; 3d4c3
 
 
-Function3d4c3: ; 3d4c3
+ForceEnemySwitch: ; 3d4c3
 	call ResetEnemyBattleVars
-	ld a, [wc718]
+	ld a, [wEnemySwitchMonIndex]
 	dec a
 	ld b, a
 	call LoadEnemyPkmnToSwitchTo
-	call Function3d7a0
+	call ClearEnemyMonBox
 	call NewEnemyMonStatus
 	call ResetEnemyStatLevels
 	call Function_SetEnemyPkmnAndSendOutAnimation
 	call BreakAttraction
-	call Function3d57a
+	call ResetBattleParticipants
 	ret
 ; 3d4e1
 
 
-Function3d4e1: ; 3d4e1
-	call Function3d714
-	jr nc, Function3d517
+EnemySwitch: ; 3d4e1
+	call CheckWhetherToAskSwitch
+	jr nc, EnemySwitch_SetMode
+	; Shift Mode
 	call ResetEnemyBattleVars
-	call Function3d533
-	jr c, .asm_3d4f1
+	call CheckWhetherSwitchmonIsPredetermined
+	jr c, .skip
 	call FindPkmnInOTPartyToSwitchIntoBattle
-.asm_3d4f1
+.skip
+	; 'b' contains the PartyNr of the Pkmn the AI will switch to
 	call LoadEnemyPkmnToSwitchTo
-	call Function3d74b
+	call OfferSwitch
 	push af
-	call Function3d7a0
+	call ClearEnemyMonBox
 	call Function_BattleTextEnemySentOut
 	call Function_SetEnemyPkmnAndSendOutAnimation
 	pop af
 	ret c
+	; If we're here, then we're switching too
 	xor a
-	ld [wc664], a
+	ld [wBattleParticipantsNotFainted], a
 	ld [wc6fc], a
 	ld [wd0ec], a
 	inc a
 	ld [wEnemyIsSwitching], a
 	call LoadTileMapToTempTileMap
-	jp Function3e3ad
+	jp PlayerSwitch
 ; 3d517
 
-Function3d517: ; 3d517
+EnemySwitch_SetMode: ; 3d517
 	call ResetEnemyBattleVars
-	call Function3d533
-	jr c, .asm_3d522
+	call CheckWhetherSwitchmonIsPredetermined
+	jr c, .skip
 	call FindPkmnInOTPartyToSwitchIntoBattle
-.asm_3d522
+.skip
 	; 'b' contains the PartyNr of the Pkmn the AI will switch to
 	call LoadEnemyPkmnToSwitchTo
 	ld a, 1
 	ld [wEnemyIsSwitching], a
-	call Function3d7a0
+	call ClearEnemyMonBox
 	call Function_BattleTextEnemySentOut
 	jp Function_SetEnemyPkmnAndSendOutAnimation
 ; 3d533
 
-Function3d533: ; 3d533
+CheckWhetherSwitchmonIsPredetermined: ; 3d533
 ; returns carry if: ???
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3d541
+	jr z, .not_linked
 
 	ld a, [wBattleAction]
-	sub NUM_MOVES
+	sub BATTLEACTION_SWITCH1
 	ld b, a
-	jr .asm_3d555
+	jr .return_carry
 
-.asm_3d541
-	ld a, [wc718]
+.not_linked
+	ld a, [wEnemySwitchMonIndex]
 	and a
-	jr z, .asm_3d54b
+	jr z, .check_wd264
 
 	dec a
 	ld b, a
-	jr .asm_3d555
+	jr .return_carry
 
-.asm_3d54b
+.check_wd264
 	ld a, [wd264]
 	and a
 	ld b, $0
-	jr nz, .asm_3d555
+	jr nz, .return_carry
 
 	and a
 	ret
 
-.asm_3d555
+.return_carry
 	scf
 	ret
 ; 3d557
@@ -3394,22 +3410,22 @@
 	dec a
 	ld [wc6e6], a
 	xor a
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	hlcoord 18, 0
 	ld a, $8
 	call Function3d490
 	call EmptyBattleTextBox
-	jp LoadMenuDataHeader_0x1d75
+	jp LoadStandardMenuDataHeader
 ; 3d57a
 
-Function3d57a: ; 3d57a
+ResetBattleParticipants: ; 3d57a
 	xor a
-	ld [wc664], a
+	ld [wBattleParticipantsNotFainted], a
 	ld [wc6fc], a
-Function3d581: ; 3d581
+AddBattleParticipant: ; 3d581
 	ld a, [CurBattleMon]
 	ld c, a
-	ld hl, wc664
+	ld hl, wBattleParticipantsNotFainted
 	ld b, SET_FLAG
 	push bc
 	predef FlagPredef
@@ -3479,7 +3495,7 @@
 	ld a, BANK(Moves)
 	call FarCopyBytes
 	call SetEnemyTurn
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	pop bc
 	pop de
 	pop hl
@@ -3515,13 +3531,13 @@
 	ld a, [BattleMonType1]
 	ld [wPlayerMoveStruct + MOVE_TYPE], a
 	call SetPlayerTurn
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp 10 + 1 ; 1.0 + 0.1
 	jr nc, .asm_3d663
 	ld a, [BattleMonType2]
 	ld [wPlayerMoveStruct + MOVE_TYPE], a
-	callab HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	callab BattleCheckTypeMatchup
 	ld a, [wd265]
 	cp 10 + 1 ; 1.0 + 0.1
 	jr nc, .asm_3d663
@@ -3628,37 +3644,37 @@
 
 	ld a, [CurPartySpecies]
 	cp UNOWN
-	jr nz, .asm_3d708
+	jr nz, .skip_unown
 	ld a, [wdef4]
 	and a
-	jr nz, .asm_3d708
+	jr nz, .skip_unown
 	ld hl, EnemyMonDVs
 	predef GetUnownLetter
 	ld a, [UnownLetter]
 	ld [wdef4], a
-.asm_3d708
+.skip_unown
 
 	ld hl, EnemyMonHP
 	ld a, [hli]
-	ld [wc6ea], a
+	ld [wEnemyHPAtTimeOfPlayerSwitch], a
 	ld a, [hl]
-	ld [wc6eb], a
+	ld [wEnemyHPAtTimeOfPlayerSwitch + 1], a
 	ret
 ; 3d714
 
-Function3d714: ; 3d714
+CheckWhetherToAskSwitch: ; 3d714
 	ld a, [wd264]
 	dec a
-	jp z, .asm_3d749
+	jp z, .return_nc
 	ld a, [PartyCount]
 	dec a
-	jp z, .asm_3d749
+	jp z, .return_nc
 	ld a, [wLinkMode]
 	and a
-	jp nz, .asm_3d749
+	jp nz, .return_nc
 	ld a, [Options]
 	bit BATTLE_SHIFT, a
-	jr nz, .asm_3d749
+	jr nz, .return_nc
 	ld a, [CurPartyMon]
 	push af
 	ld a, [CurBattleMon]
@@ -3667,16 +3683,16 @@
 	pop bc
 	ld a, b
 	ld [CurPartyMon], a
-	jr c, .asm_3d749
+	jr c, .return_nc
 	scf
 	ret
 
-.asm_3d749
+.return_nc
 	and a
 	ret
 ; 3d74b
 
-Function3d74b: ; 3d74b
+OfferSwitch: ; 3d74b
 	ld a, [CurPartyMon]
 	push af
 	callab Battle_GetTrainerName
@@ -3684,12 +3700,12 @@
 	call StdBattleTextBox
 	lb bc, 1, 7
 	call PlaceYesNoBox
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
-	jr nz, .asm_3d79a
+	jr nz, .said_no
 	call Function3d2f7
 	call PickSwitchMonInBattle
-	jr c, .asm_3d791
+	jr c, .canceled_switch
 	ld a, [CurBattleMon]
 	ld [LastPlayerMon], a
 	ld a, [CurPartyMon]
@@ -3696,7 +3712,7 @@
 	ld [CurBattleMon], a
 	call ClearPalettes
 	call DelayFrame
-	call Function3eda6
+	call _LoadHPBar
 	pop af
 	ld [CurPartyMon], a
 	xor a
@@ -3705,12 +3721,12 @@
 	and a
 	ret
 
-.asm_3d791
+.canceled_switch
 	call ClearPalettes
 	call DelayFrame
-	call Function3eda6
+	call _LoadHPBar
 
-.asm_3d79a
+.said_no
 	pop af
 	ld [CurPartyMon], a
 	scf
@@ -3717,7 +3733,7 @@
 	ret
 ; 3d7a0
 
-Function3d7a0: ; 3d7a0
+ClearEnemyMonBox: ; 3d7a0
 	xor a
 	ld [hBGMapMode], a
 	call ExitMenu
@@ -3726,7 +3742,7 @@
 	lb bc, 4, 10
 	call ClearBox
 	call WaitBGMap
-	jp Function3ee27
+	jp FinishBattleAnim
 ; 3d7b8
 
 Function_BattleTextEnemySentOut: ; 3d7b8
@@ -3744,41 +3760,41 @@
 	ld a, OTPARTYMON
 	ld [MonType], a
 	predef CopyPkmnToTempMon
-	call Function3f47c
+	call GetMonFrontpic
 
 	xor a
 	ld [wcfca], a
-	ld [wc689], a
+	ld [wKickCounter], a
 	call SetEnemyTurn
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 
-	call Function3da79
-	jr nc, .asm_3d800
+	call BattleCheckEnemyShininess
+	jr nc, .not_shiny
 	ld a, 1 ; shiny anim
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
-.asm_3d800
+.not_shiny
 
 	ld bc, TempMonSpecies
-	callba Function4e53f
-	jr c, .asm_3d82c
+	callba CheckFaintedFrzSlp
+	jr c, .skip_cry
 	callba CheckBattleScene
-	jr c, .asm_3d821
+	jr c, .cry_no_anim
 	hlcoord 12, 0
 	ld d, $0
-	ld e, $0
-	predef Functiond008e
-	jr .asm_3d82c
+	ld e, ANIM_MON_SLOW
+	predef AnimateFrontpic
+	jr .skip_cry
 
-.asm_3d821
+.cry_no_anim
 	ld a, $f
 	ld [CryTracks], a
 	ld a, [TempEnemyMonSpecies]
 	call PlayStereoCry
 
-.asm_3d82c
+.skip_cry
 	call UpdateEnemyHUD
 	ld a, $1
 	ld [hBGMapMode], a
@@ -3798,11 +3814,11 @@
 	ld [EnemyDisableCount], a
 	ld [EnemyFuryCutterCount], a
 	ld [EnemyProtectCount], a
-	ld [wc72c], a
+	ld [wEnemyRageCounter], a
 	ld [EnemyDisabledMove], a
-	ld [wc6fa], a
-	ld [wc730], a
-	ld [wc731], a
+	ld [wEnemyMinimized], a
+	ld [wPlayerWrapCount], a
+	ld [wEnemyWrapCount], a
 	ld [EnemyTurnsTaken], a
 	ld hl, PlayerSubStatus5
 	res SUBSTATUS_CANT_RUN, [hl]
@@ -3810,8 +3826,8 @@
 ; 3d867
 
 ResetEnemyStatLevels: ; 3d867
-	ld a, 7
-	ld b, 8
+	ld a, BASE_STAT_LEVEL
+	ld b, NUM_LEVEL_STATS
 	ld hl, EnemyStatLevels
 .loop
 	ld [hli], a
@@ -3875,33 +3891,33 @@
 ; Run away from battle, with or without item
 	ld a, [BattleType]
 	cp BATTLETYPE_DEBUG
-	jp z, .asm_3d9a2
+	jp z, .can_escape
 	cp BATTLETYPE_CONTEST
-	jp z, .asm_3d9a2
+	jp z, .can_escape
 	cp BATTLETYPE_TRAP
-	jp z, .asm_3d98d
+	jp z, .cant_escape
 	cp BATTLETYPE_CELEBI
-	jp z, .asm_3d98d
+	jp z, .cant_escape
 	cp BATTLETYPE_SHINY
-	jp z, .asm_3d98d
+	jp z, .cant_escape
 	cp BATTLETYPE_SUICUNE
-	jp z, .asm_3d98d
+	jp z, .cant_escape
 
 	ld a, [wLinkMode]
 	and a
-	jp nz, .asm_3d9a2
+	jp nz, .can_escape
 
 	ld a, [wBattleMode]
 	dec a
-	jp nz, .asm_3d992
+	jp nz, .cant_run_from_trainer
 
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_CANT_RUN, a
-	jp nz, .asm_3d98d
+	jp nz, .cant_escape
 
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	and a
-	jp nz, .asm_3d98d
+	jp nz, .cant_escape
 
 	push hl
 	push de
@@ -3908,20 +3924,20 @@
 	ld a, [BattleMonItem]
 	ld [wd265], a
 	ld b, a
-	callab GetItem
+	callab GetItemHeldEffect
 	ld a, b
 	cp HELD_ESCAPE
 	pop de
 	pop hl
-	jr nz, .asm_3d916
+	jr nz, .no_flee_item
 
 	call SetPlayerTurn
 	call GetItemName
 	ld hl, BattleText_UserFledUsingAStringBuffer1
 	call StdBattleTextBox
-	jp .asm_3d9a2
+	jp .can_escape
 
-.asm_3d916
+.no_flee_item
 	ld a, [wd267]
 	inc a
 	ld [wd267], a
@@ -3939,7 +3955,7 @@
 	ld hl, hStringCmpString1
 	ld c, $2
 	call StringCmp
-	jr nc, .asm_3d9a2
+	jr nc, .can_escape
 
 	xor a
 	ld [hMultiplicand], a
@@ -3950,52 +3966,52 @@
 	ld [hDividend + 0], a
 	ld a, [hProduct + 3]
 	ld [hDividend + 1], a
-	ld a, [$ffb1]
+	ld a, [hStringCmpString1 + 0]
 	ld b, a
-	ld a, [$ffb2]
+	ld a, [hStringCmpString1 + 1]
 	srl b
 	rr a
 	srl b
 	rr a
 	and a
-	jr z, .asm_3d9a2
+	jr z, .can_escape
 	ld [hDivisor], a
 	ld b, $2
 	call Divide
 	ld a, [hQuotient + 1]
 	and a
-	jr nz, .asm_3d9a2
+	jr nz, .can_escape
 	ld a, [wd267]
 	ld c, a
-.asm_3d96c
+.loop
 	dec c
-	jr z, .asm_3d97a
+	jr z, .cant_escape_2
 	ld b, $1e
 	ld a, [hQuotient + 2]
 	add b
-	ld [$ffb6], a
-	jr c, .asm_3d9a2
-	jr .asm_3d96c
+	ld [hQuotient + 2], a
+	jr c, .can_escape
+	jr .loop
 
-.asm_3d97a
+.cant_escape_2
 	call BattleRandom
 	ld b, a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	cp b
-	jr nc, .asm_3d9a2
+	jr nc, .can_escape
 	ld a, $1
 	ld [wd0ec], a
 	ld hl, BattleText_CantEscape2
-	jr .asm_3d995
+	jr .print_inescapable_text
 
-.asm_3d98d
+.cant_escape
 	ld hl, BattleText_CantEscape
-	jr .asm_3d995
+	jr .print_inescapable_text
 
-.asm_3d992
+.cant_run_from_trainer
 	ld hl, BattleText_TheresNoEscapeFromTrainerBattle
 
-.asm_3d995
+.print_inescapable_text
 	call StdBattleTextBox
 	ld a, $1
 	ld [wd266], a
@@ -4003,11 +4019,11 @@
 	and a
 	ret
 
-.asm_3d9a2
+.can_escape
 	ld a, [wLinkMode]
 	and a
-	ld a, $2
-	jr z, .asm_3d9cf
+	ld a, DRAW
+	jr z, .fled
 	call LoadTileMapToTempTileMap
 	xor a
 	ld [wd0ec], a
@@ -4017,16 +4033,16 @@
 	ld [CurPlayerMove], a
 	call Function3e8e4
 	call Call_LoadTempTileMapToTileMap
-	call Function3d2e0
-	jr c, .asm_3d9f5
+	call CheckMobileBattleError
+	jr c, .mobile
 
 	; Got away safely
 	ld a, [wBattleAction]
-	cp $f
-	ld a, $2
-	jr z, .asm_3d9cf
+	cp BATTLEACTION_FORFEIT
+	ld a, DRAW
+	jr z, .fled
 	dec a
-.asm_3d9cf
+.fled
 	ld b, a
 	ld a, [wBattleResult]
 	and $c0
@@ -4045,15 +4061,15 @@
 	scf
 	ret
 
-.asm_3d9f5
+.mobile
 	call StopDangerSound
 	ld hl, wcd2a
 	bit 4, [hl]
-	jr nz, .asm_3da05
+	jr nz, .skip_link_error
 	ld hl, BattleText_LinkErrorBattleCanceled
 	call StdBattleTextBox
 
-.asm_3da05
+.skip_link_error
 	call WaitSFX
 	call LoadTileMapToTempTileMap
 	scf
@@ -4061,22 +4077,22 @@
 ; 3da0d
 
 
-Function3da0d: ; 3da0d
-	ld a, PartyMon1Species - PartyMon1
+InitBattleMon: ; 3da0d
+	ld a, MON_SPECIES
 	call GetPartyParamLocation
 	ld de, BattleMonSpecies
-	ld bc, 1 + 1 + NUM_MOVES ; species, item, moves ; BattleMonDVs - BattleMonSpecies
+	ld bc, MON_ID
 	call CopyBytes
-	ld bc, PartyMon1DVs - (PartyMon1Species + 1 + 1 + NUM_MOVES)
+	ld bc, MON_DVS - MON_ID
 	add hl, bc
 	ld de, BattleMonDVs
-	ld bc, 2 + NUM_MOVES + 1 ; DVs, PP, happiness ; BattleMonLevel - BattleMonDVs
+	ld bc, MON_PKRUS - MON_DVS
 	call CopyBytes
 rept 3
 	inc hl
 endr
 	ld de, BattleMonLevel
-	ld bc, 1 + 1 + 1 + 2 + 2 * 6 ; level, status, unused, stats
+	ld bc, PARTYMON_STRUCT_LENGTH - MON_LEVEL
 	call CopyBytes
 	ld a, [BattleMonSpecies]
 	ld [TempBattleMonSpecies], a
@@ -4095,21 +4111,21 @@
 	call CopyBytes
 	ld hl, BattleMonAttack
 	ld de, PlayerStats
-	ld bc, 2 * 5
+	ld bc, PARTYMON_STRUCT_LENGTH - MON_ATK
 	call CopyBytes
-	call Function3ec2c
+	call ApplyStatusEffectOnPlayerStats
 	call BadgeStatBoosts
 	ret
 ; 3da74
 
-Function3da74: ; 3da74
-	call Function3da85
-	jr Function3da7c
+BattleCheckPlayerShininess: ; 3da74
+	call GetPartyMonDVs
+	jr BattleCheckShininess
 
-Function3da79: ; 3da79
-	call Function3da97
+BattleCheckEnemyShininess: ; 3da79
+	call GetEnemyMonDVs
 
-Function3da7c: ; 3da7c
+BattleCheckShininess: ; 3da7c
 	ld b, h
 	ld c, l
 	callab CheckShininess
@@ -4116,7 +4132,7 @@
 	ret
 ; 3da85
 
-Function3da85: ; 3da85
+GetPartyMonDVs: ; 3da85
 	ld hl, BattleMonDVs
 	ld a, [PlayerSubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
@@ -4126,7 +4142,7 @@
 	jp GetPartyLocation
 ; 3da97
 
-Function3da97: ; 3da97
+GetEnemyMonDVs: ; 3da97
 	ld hl, EnemyMonDVs
 	ld a, [EnemySubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
@@ -4141,8 +4157,8 @@
 ; 3dab1
 
 ResetPlayerStatLevels: ; 3dab1
-	ld a, 7
-	ld b, 8
+	ld a, BASE_STAT_LEVEL
+	ld b, NUM_LEVEL_STATS
 	ld hl, PlayerStatLevels
 .loop
 	ld [hli], a
@@ -4157,18 +4173,18 @@
 	ld hl, OTPartyMon1Species
 	call GetPartyLocation
 	ld de, EnemyMonSpecies
-	ld bc, 1 + 1 + NUM_MOVES
+	ld bc, MON_ID
 	call CopyBytes
-	ld bc, OTPartyMon1DVs - (OTPartyMon1Species + 1 + 1 + NUM_MOVES)
+	ld bc, MON_DVS - MON_ID
 	add hl, bc
 	ld de, EnemyMonDVs
-	ld bc, 2 + NUM_MOVES + 1
+	ld bc, MON_PKRUS - MON_DVS
 	call CopyBytes
 rept 3
 	inc hl
 endr
 	ld de, EnemyMonLevel
-	ld bc, 1 + 1 + 1 + 2 + 2 * 6
+	ld bc, PARTYMON_STRUCT_LENGTH - MON_LEVEL
 	call CopyBytes
 	ld a, [EnemyMonSpecies]
 	ld [CurSpecies], a
@@ -4181,9 +4197,9 @@
 	call CopyBytes
 	ld hl, EnemyMonAttack
 	ld de, EnemyStats
-	ld bc, 2 * 5
+	ld bc, PARTYMON_STRUCT_LENGTH - MON_ATK
 	call CopyBytes
-	call Function3ec30
+	call ApplyStatusEffectOnEnemyStats
 	ld hl, BaseType1
 	ld de, EnemyMonType1
 	ld a, [hli]
@@ -4206,18 +4222,18 @@
 ; 3db32
 
 
-Function3db32: ; 3db32
+SwitchPlayerMon: ; 3db32
 	call ClearSprites
 	ld a, [CurBattleMon]
 	ld [LastPlayerMon], a
 	ld a, [CurPartyMon]
 	ld [CurBattleMon], a
-	call Function3d581
-	call Function3da0d
+	call AddBattleParticipant
+	call InitBattleMon
 	call ResetPlayerStatLevels
 	call NewBattleMonStatus
 	call BreakAttraction
-	call Function3db5f
+	call SendOutPlayerMon
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	ld hl, EnemyMonHP
@@ -4227,7 +4243,7 @@
 ; 3db5f
 
 
-Function3db5f: ; 3db5f
+SendOutPlayerMon: ; 3db5f
 	ld hl, BattleMonDVs
 	predef GetUnownLetter
 	hlcoord 1, 5
@@ -4237,9 +4253,9 @@
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
-	call Function3f43d
+	call GetMonBackpic
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	ld [wd0d2], a
 	ld [CurMoveNum], a
 	ld [TypeModifier], a
@@ -4248,35 +4264,35 @@
 	ld [LastPlayerCounterMove], a
 	ld [LastPlayerMove], a
 	call CheckAmuletCoin
-	call Function3ee27
+	call FinishBattleAnim
 	xor a
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	call SetPlayerTurn
 	xor a
 	ld [wcfca], a
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
-	call Function3da74
-	jr nc, .asm_3dbbc
+	call BattleCheckPlayerShininess
+	jr nc, .not_shiny
 	ld a, $1
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 
-.asm_3dbbc
-	ld a, PartyMon1Species - PartyMon1
+.not_shiny
+	ld a, MON_SPECIES
 	call GetPartyParamLocation
 	ld b, h
 	ld c, l
-	callba Function4e53f
-	jr c, .asm_3dbd6
+	callba CheckFaintedFrzSlp
+	jr c, .statused
 	ld a, $f0
 	ld [CryTracks], a
 	ld a, [CurPartySpecies]
 	call PlayStereoCry
 
-.asm_3dbd6
+.statused
 	call UpdatePlayerHUD
 	ld a, $1
 	ld [hBGMapMode], a
@@ -4301,11 +4317,11 @@
 	ld [PlayerDisableCount], a
 	ld [PlayerFuryCutterCount], a
 	ld [PlayerProtectCount], a
-	ld [wc72b], a
+	ld [wPlayerRageCounter], a
 	ld [DisabledMove], a
-	ld [wc6fe], a
-	ld [wc731], a
-	ld [wc730], a
+	ld [wPlayerMinimized], a
+	ld [wEnemyWrapCount], a
+	ld [wPlayerWrapCount], a
 	ld [PlayerTurnsTaken], a
 	ld hl, EnemySubStatus5
 	res SUBSTATUS_CANT_RUN, [hl]
@@ -4350,7 +4366,7 @@
 	call StdBattleTextBox
 
 	call GetEighthMaxHP
-	call Function3cc39
+	call SubtractHPFromTarget
 
 	pop hl
 	call .hl
@@ -4361,7 +4377,7 @@
 	jp [hl]
 ; 3dc5b
 
-Function3dc5b: ; 3dc5b
+PursuitSwitch: ; 3dc5b
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVar
 	ld b, a
@@ -4368,7 +4384,7 @@
 	call GetMoveEffect
 	ld a, b
 	cp EFFECT_PURSUIT
-	jr nz, .asm_3dce4
+	jr nz, .done
 
 	ld a, [CurBattleMon]
 	push af
@@ -4376,11 +4392,11 @@
 	ld hl, DoPlayerTurn
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3dc7e
+	jr z, .do_turn
 	ld hl, DoEnemyTurn
 	ld a, [LastPlayerMon]
 	ld [CurBattleMon], a
-.asm_3dc7e
+.do_turn
 	ld a, BANK(DoPlayerTurn)
 	rst FarCall
 
@@ -4394,7 +4410,7 @@
 
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3dcc0
+	jr z, .check_enemy_fainted
 
 	ld a, [LastPlayerMon]
 	call UpdateBattleMon
@@ -4401,7 +4417,7 @@
 	ld hl, BattleMonHP
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3dce4
+	jr nz, .done
 
 	ld a, $f0
 	ld [CryTracks], a
@@ -4409,18 +4425,18 @@
 	call PlayStereoCry
 	ld a, [wc71a]
 	ld c, a
-	ld hl, wc664
-	ld b, $0
+	ld hl, wBattleParticipantsNotFainted
+	ld b, RESET_FLAG
 	predef FlagPredef
 	call PlayerMonFaintedAnimation
 	ld hl, BattleText_PkmnFainted
-	jr .asm_3dcdf
+	jr .done_fainted
 
-.asm_3dcc0
+.check_enemy_fainted
 	ld hl, EnemyMonHP
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_3dce4
+	jr nz, .done
 
 	ld de, SFX_KINESIS
 	call PlaySFX
@@ -4431,12 +4447,12 @@
 	call EnemyMonFaintedAnimation
 	ld hl, BattleText_EnemyPkmnFainted
 
-.asm_3dcdf
+.done_fainted
 	call StdBattleTextBox
 	scf
 	ret
 
-.asm_3dce4
+.done
 	and a
 	ret
 ; 3dce6
@@ -4454,31 +4470,31 @@
 	ret
 ; 3dcf9
 
-Function3dcf9: ; 3dcf9
-	ld a, [$ffcb]
+HandleHealingItems: ; 3dcf9
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3dd17
+	jr z, .player_1
 	call SetPlayerTurn
-	call Function3dd2f
-	call Function3dde9
-	call Function3de51
+	call HandleHPHealingItem
+	call UseHeldStatusHealingItem
+	call HandleStatusHealingItem
 	call SetEnemyTurn
-	call Function3dd2f
-	call Function3dde9
-	jp Function3de51
+	call HandleHPHealingItem
+	call UseHeldStatusHealingItem
+	jp HandleStatusHealingItem
 
-.asm_3dd17
+.player_1
 	call SetEnemyTurn
-	call Function3dd2f
-	call Function3dde9
-	call Function3de51
+	call HandleHPHealingItem
+	call UseHeldStatusHealingItem
+	call HandleStatusHealingItem
 	call SetPlayerTurn
-	call Function3dd2f
-	call Function3dde9
-	jp Function3de51
+	call HandleHPHealingItem
+	call UseHeldStatusHealingItem
+	jp HandleStatusHealingItem
 ; 3dd2f
 
-Function3dd2f: ; 3dd2f
+HandleHPHealingItem: ; 3dd2f
 	callab GetOpponentItem
 	ld a, b
 	cp $1
@@ -4487,11 +4503,11 @@
 	ld hl, EnemyMonMaxHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3dd4a
+	jr z, .go
 	ld de, BattleMonHP + 1
 	ld hl, BattleMonMaxHP
 
-.asm_3dd4a
+.go
 	push bc
 	ld a, [de]
 	ld [wd1ec], a
@@ -4507,18 +4523,18 @@
 	cp [hl]
 	ld a, c
 	pop bc
-	jr z, .asm_3dd62
-	jr c, .asm_3dd66
+	jr z, .equal
+	jr c, .less
 	ret
 
-.asm_3dd62
+.equal
 	inc hl
 	cp [hl]
 	dec hl
 	ret nc
 
-.asm_3dd66
-	call Function3ddc8
+.less
+	call ItemRecoveryAnim
 	ld a, [hli]
 	ld [Buffer2], a
 	ld a, [hl]
@@ -4536,13 +4552,13 @@
 	cp c
 	ld a, [hl]
 	sbc b
-	jr nc, .asm_3dd8d
+	jr nc, .okay
 	ld a, [hli]
 	ld [wd1ef], a
 	ld a, [hl]
 	ld [wd1ee], a
 
-.asm_3dd8d
+.okay
 	ld a, [wd1ef]
 	ld [de], a
 	inc de
@@ -4552,25 +4568,25 @@
 	ld [wd10a], a
 	and a
 	hlcoord 2, 2
-	jr z, .asm_3dda4
+	jr z, .got_hp_bar_coords
 	hlcoord 10, 9
 
-.asm_3dda4
+.got_hp_bar_coords
 	ld [wd10a], a
-	predef Functionc6e0
-Function3ddac:
+	predef AnimateHPBar
+UseOpponentItem:
 	call RefreshBattleHuds
 	callab GetOpponentItem
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
-	callab Function27192
+	callab ConsumeHeldItem
 	ld hl, RecoveredUsingText
 	jp StdBattleTextBox
 ; 3ddc8
 
 
-Function3ddc8: ; 3ddc8
+ItemRecoveryAnim: ; 3ddc8
 	push hl
 	push de
 	push bc
@@ -4589,16 +4605,16 @@
 	ret
 ; 3dde9
 
-Function3dde9: ; 3dde9
+UseHeldStatusHealingItem: ; 3dde9
 	callab GetOpponentItem
 	ld hl, .Statuses
-.asm_3ddf2
+.loop
 	ld a, [hli]
 	cp $ff
 	ret z
 	inc hl
 	cp b
-	jr nz, .asm_3ddf2
+	jr nz, .loop
 	dec hl
 	ld b, [hl]
 	ld a, BATTLE_VARS_STATUS_OPP
@@ -4619,26 +4635,26 @@
 	and [hl]
 	res SUBSTATUS_NIGHTMARE, [hl]
 	ld a, b
-	cp $7f
-	jr nz, .asm_3de26
+	cp ALL_STATUS
+	jr nz, .skip_confuse
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVarAddr
 	res SUBSTATUS_CONFUSED, [hl]
 
-.asm_3de26
-	ld hl, Function365fd
+.skip_confuse
+	ld hl, CalcEnemyStats
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3de31
-	ld hl, Function365d7
+	jr z, .got_pointer
+	ld hl, CalcPlayerStats
 
-.asm_3de31
+.got_pointer
 	call SwitchTurnCore
-	ld a, BANK(Function365fd)
+	ld a, BANK(CalcEnemyStats)
 	rst FarCall
 	call SwitchTurnCore
-	call Function3ddc8
-	call Function3ddac
+	call ItemRecoveryAnim
+	call UseOpponentItem
 	ld a, $1
 	and a
 	ret
@@ -4650,12 +4666,12 @@
 	db HELD_HEAL_BURN, 1 << BRN
 	db HELD_HEAL_SLEEP, SLP
 	db HELD_HEAL_PARALYZE, 1 << PAR
-	db HELD_HEAL_STATUS, 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR
+	db HELD_HEAL_STATUS, ALL_STATUS
 	db $ff
 ; 3de51
 
 
-Function3de51: ; 3de51
+HandleStatusHealingItem: ; 3de51
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
 	bit SUBSTATUS_CONFUSED, a
@@ -4663,11 +4679,11 @@
 	callab GetOpponentItem
 	ld a, b
 	cp HELD_HEAL_CONFUSION
-	jr z, .asm_3de67
+	jr z, .heal_status
 	cp HELD_HEAL_STATUS
 	ret nz
 
-.asm_3de67
+.heal_status
 	ld a, [hl]
 	ld [wd265], a
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
@@ -4674,13 +4690,13 @@
 	call GetBattleVarAddr
 	res SUBSTATUS_CONFUSED, [hl]
 	call GetItemName
-	call Function3ddc8
+	call ItemRecoveryAnim
 	ld hl, BattleText_0x80dab
 	call StdBattleTextBox
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_3de90
-	call Function3df1f
+	jr nz, .do_partymon
+	call GetOTPartymonItem
 	xor a
 	ld [bc], a
 	ld a, [wBattleMode]
@@ -4689,8 +4705,8 @@
 	ld [hl], $0
 	ret
 
-.asm_3de90
-	call Function3df12
+.do_partymon
+	call GetPartymonItem
 	xor a
 	ld [bc], a
 	ld [hl], a
@@ -4697,28 +4713,29 @@
 	ret
 ; 3de97
 
-Function3de97: ; 3de97
-	ld a, [$ffcb]
+HandleStatBoostingHeldItems: ; 3de97
+; The effects handled here are not used in-game.
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3dea3
-	call Function3dea9
-	jp Function3deb1
+	jr z, .player_1
+	call .DoEnemy
+	jp .DoPlayer
 
-.asm_3dea3
-	call Function3deb1
-	jp Function3dea9
+.player_1
+	call .DoPlayer
+	jp .DoEnemy
 ; 3dea9
 
-Function3dea9: ; 3dea9
-	call Function3df12
+.DoEnemy: ; 3dea9
+	call GetPartymonItem
 	ld a, $0
-	jp Function3deb6
+	jp .HandleItem
 ; 3deb1
 
-Function3deb1: ; 3deb1
-	call Function3df1f
+.DoPlayer: ; 3deb1
+	call GetOTPartymonItem
 	ld a, $1
-Function3deb6: ; 3deb6
+.HandleItem: ; 3deb6
 	ld [hBattleTurn], a
 	ld d, h
 	ld e, l
@@ -4726,17 +4743,17 @@
 	push bc
 	ld a, [bc]
 	ld b, a
-	callab GetItem
-	ld hl, .data_3defc
-.asm_3dec7
+	callab GetItemHeldEffect
+	ld hl, .StatUpItems
+.loop
 	ld a, [hli]
 	cp $ff
-	jr z, .asm_3def9
+	jr z, .finish
 rept 2
 	inc hl
 endr
 	cp b
-	jr nz, .asm_3dec7
+	jr nz, .loop
 	pop bc
 	ld a, [bc]
 	ld [wd265], a
@@ -4747,7 +4764,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, BANK(BattleCommand70)
+	ld a, BANK(BattleCommand_AttackUp)
 	rst FarCall
 	pop bc
 	pop de
@@ -4760,28 +4777,28 @@
 	call GetItemName
 	ld hl, BattleText_UsersStringBuffer1Activated
 	call StdBattleTextBox
-	callab BattleCommand8c
+	callab BattleCommand_StatUpMessage
 	ret
 
-.asm_3def9
+.finish
 	pop bc
 	pop de
 	ret
 ; 3defc
 
-.data_3defc
-	dbw HELD_ATTACK_UP,     BattleCommand70
-	dbw HELD_DEFENSE_UP,    BattleCommand71
-	dbw HELD_SPEED_UP,      BattleCommand72
-	dbw HELD_SP_ATTACK_UP,  BattleCommand73
-	dbw HELD_SP_DEFENSE_UP, BattleCommand74
-	dbw HELD_ACCURACY_UP,   BattleCommand75
-	dbw HELD_EVASION_UP,    BattleCommand76
+.StatUpItems
+	dbw HELD_ATTACK_UP,     BattleCommand_AttackUp
+	dbw HELD_DEFENSE_UP,    BattleCommand_DefenseUp
+	dbw HELD_SPEED_UP,      BattleCommand_SpeedUp
+	dbw HELD_SP_ATTACK_UP,  BattleCommand_SpecialAttackUp
+	dbw HELD_SP_DEFENSE_UP, BattleCommand_SpecialDefenseUp
+	dbw HELD_ACCURACY_UP,   BattleCommand_AccuracyUp
+	dbw HELD_EVASION_UP,    BattleCommand_EvasionUp
 	db $ff
 ; 3df12
 
 
-Function3df12: ; 3df12
+GetPartymonItem: ; 3df12
 	ld hl, PartyMon1Item
 	ld a, [CurBattleMon]
 	call GetPartyLocation
@@ -4789,7 +4806,7 @@
 	ret
 ; 3df1f
 
-Function3df1f: ; 3df1f
+GetOTPartymonItem: ; 3df1f
 	ld hl, OTPartyMon1Item
 	ld a, [CurOTMon]
 	call GetPartyLocation
@@ -4797,7 +4814,7 @@
 	ret
 ; 3df2c
 
-Function3df2c: ; 3df2c
+UpdateBattleHUDs: ; 3df2c
 	push hl
 	push de
 	push bc
@@ -4945,7 +4962,7 @@
 	push af
 	push hl
 	ld de, BattleMonStatus
-	predef Function50d2e
+	predef PlaceNonFaintStatus
 	pop hl
 	pop bc
 	ret nz
@@ -5024,7 +5041,7 @@
 	push af
 	push hl
 	ld de, EnemyMonStatus
-	predef Function50d2e
+	predef PlaceNonFaintStatus
 	pop hl
 	pop bc
 	jr nz, .asm_3e0be
@@ -5078,14 +5095,14 @@
 	rr a
 	srl b
 	rr a
-	ld [$ffb6], a
+	ld [hProduct + 3], a
 	ld a, b
-	ld [$ffb5], a
+	ld [hProduct + 2], a
 
 .asm_3e105
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	ld [hDividend + 0], a
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	ld [hDividend + 1], a
 	ld a, $2
 	ld b, a
@@ -5101,7 +5118,7 @@
 	ld [wd10a], a
 	hlcoord 2, 2
 	ld b, 0
-	call DrawHPBar
+	call DrawBattleHPBar
 	ret
 ; 3e127
 
@@ -5117,7 +5134,7 @@
 	ld a, [hl]
 	cp b
 	ret z
-	jp Function3ee27
+	jp FinishBattleAnim
 ; 3e138
 
 Function3e138: ; 3e138
@@ -5151,9 +5168,9 @@
 	; Auto input: choose "ITEM"
 	ld a, [InputType]
 	or a
-	jr z, .asm_3e171
+	jr z, .skip_dude_pack_select
 	callba _DudeAutoInput_DownA
-.asm_3e171
+.skip_dude_pack_select
 
 	call LoadBattleMenu2
 	ret c
@@ -5216,7 +5233,7 @@
 	and a
 	jp nz, ItemsCantBeUsed
 
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
@@ -5227,8 +5244,8 @@
 	callba BattlePack
 	ld a, [wd0ec]
 	and a
-	jr z, .asm_3e20d
-	jr .asm_3e209
+	jr z, .didnt_use_item
+	jr .got_item
 
 .tutorial
 	callba Function107bb
@@ -5235,7 +5252,7 @@
 	ld a, POKE_BALL
 	ld [CurItem], a
 	call DoItemEffect
-	jr .asm_3e209
+	jr .got_item
 
 .contest
 	ld a, PARK_BALL
@@ -5242,19 +5259,19 @@
 	ld [CurItem], a
 	call DoItemEffect
 
-.asm_3e209
+.got_item
 	call Function3e234
 	ret
 
-.asm_3e20d
+.didnt_use_item
 	call ClearPalettes
 	call DelayFrame
-	call Function3ed9f
-	call Function3f43d
-	call Function3f47c
+	call _LoadBattleFontsHPBar
+	call GetMonBackpic
+	call GetMonFrontpic
 	call ExitMenu
 	call WaitBGMap
-	call Function3ee27
+	call FinishBattleAnim
 	call LoadTileMapToTempTileMap
 	jp BattleMenu
 ; 3e22b
@@ -5273,28 +5290,28 @@
 	ld a, [wItemAttributeParamBuffer]
 	cp $3
 	jr z, .asm_3e24a
-	call WhiteBGMap
+	call ClearBGPalettes
 
 .asm_3e24a
 	xor a
 	ld [hBGMapMode], a
-	call Function3ed9f
+	call _LoadBattleFontsHPBar
 	call ClearSprites
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
 	jr z, .asm_3e25d
-	call Function3f43d
+	call GetMonBackpic
 
 .asm_3e25d
-	call Function3f47c
+	call GetMonFrontpic
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	call ExitMenu
-	call Function3df2c
+	call UpdateBattleHUDs
 	call WaitBGMap
 	call LoadTileMapToTempTileMap
 	call ResetTextRelatedRAM
-	call Function3ee27
+	call FinishBattleAnim
 	and a
 	ret
 
@@ -5311,11 +5328,11 @@
 ; 3e28d
 
 BattleMenu_PKMN: ; 3e28d
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 Function3e290:
 	call ExitMenu
-	call LoadMenuDataHeader_0x1d75
-	call WhiteBGMap
+	call LoadStandardMenuDataHeader
+	call ClearBGPalettes
 Function3e299:
 	call Function3d2fa
 	xor a
@@ -5328,7 +5345,7 @@
 	call Function3e2f5
 	jr c, .asm_3e2c8
 	call Function1bee
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jp z, Function3e358
 	cp $2
@@ -5338,13 +5355,13 @@
 	jr .asm_3e2a8
 
 .asm_3e2c8
-	call Function3d2e0
+	call CheckMobileBattleError
 	jr c, .asm_3e2da
 	jr Function3e299
 
 .asm_3e2cf
 	call Function3e308
-	call Function3d2e0
+	call CheckMobileBattleError
 	jr c, .asm_3e2da
 	jp Function3e290
 
@@ -5352,7 +5369,7 @@
 	call ClearSprites
 	call ClearPalettes
 	call DelayFrame
-	call Function3eda6
+	call _LoadHPBar
 	call WriteBackup
 	call LoadTileMapToTempTileMap
 	call ClearSGB
@@ -5413,7 +5430,7 @@
 	jp Function3e299
 
 .asm_3e36b
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	and a
 	jr nz, .asm_3e378
 	ld a, [EnemySubStatus5]
@@ -5435,7 +5452,7 @@
 	call ClearPalettes
 	call DelayFrame
 	call ClearSprites
-	call Function3eda6
+	call _LoadHPBar
 	call WriteBackup
 	call ClearSGB
 	call SetPalettes
@@ -5444,57 +5461,57 @@
 	; fallthrough
 ; 3e3ad
 
-Function3e3ad: ; 3e3ad
+PlayerSwitch: ; 3e3ad
 	ld a, 1
 	ld [wPlayerIsSwitching], a
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3e3c1
-	call LoadMenuDataHeader_0x1d75
+	jr z, .not_linked
+	call LoadStandardMenuDataHeader
 	call Function3e8e4
 	call WriteBackup
 
-.asm_3e3c1
-	call Function3e7c1
+.not_linked
+	call ParseEnemyAction
 	ld a, [wLinkMode]
 	and a
-	jr nz, .asm_3e3cf
+	jr nz, .linked
 
-.asm_3e3ca
+.switch
 	call BattleMonEntrance
 	and a
 	ret
 
-.asm_3e3cf
+.linked
 	ld a, [wBattleAction]
-	cp $e
-	jp z, .asm_3e3ca
-	cp $d
-	jp z, .asm_3e3ca
-	cp NUM_MOVES
-	jp c, .asm_3e3ca
-	cp $f
-	jr nz, .asm_3e3e9
+	cp BATTLEACTION_E
+	jp z, .switch
+	cp BATTLEACTION_D
+	jp z, .switch
+	cp BATTLEACTION_SWITCH1
+	jp c, .switch
+	cp BATTLEACTION_FORFEIT
+	jr nz, .dont_run
 	call WildFled_EnemyFled_LinkBattleCanceled
 	ret
 
-.asm_3e3e9
-	ld a, [$ffcb]
+.dont_run
+	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_3e3f7
+	jr z, .player_1
 	call BattleMonEntrance
-	call Function3e3ff
+	call EnemyMonEntrance
 	and a
 	ret
 
-.asm_3e3f7
-	call Function3e3ff
+.player_1
+	call EnemyMonEntrance
 	call BattleMonEntrance
 	and a
 	ret
 ; 3e3ff
 
-Function3e3ff: ; 3e3ff
+EnemyMonEntrance: ; 3e3ff
 	callab AI_Switch
 	call SetEnemyTurn
 	jp SpikesDamage
@@ -5510,7 +5527,7 @@
 	res SUBSTATUS_RAGE, [hl]
 
 	call SetEnemyTurn
-	call Function3dc5b
+	call PursuitSwitch
 	jr c, .ok
 	call Function3dce6
 .ok
@@ -5521,19 +5538,19 @@
 
 	ld a, [CurBattleMon]
 	ld [CurPartyMon], a
-	call Function3d581
-	call Function3da0d
+	call AddBattleParticipant
+	call InitBattleMon
 	call ResetPlayerStatLevels
 	call SendOutPkmnText
 	call NewBattleMonStatus
 	call BreakAttraction
-	call Function3db5f
+	call SendOutPlayerMon
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	call SetPlayerTurn
 	call SpikesDamage
 	ld a, $2
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ret
 ; 3e459
 
@@ -5547,12 +5564,12 @@
 
 	ld a, [CurPartyMon]
 	ld [CurBattleMon], a
-	call Function3d581
-	call Function3da0d
+	call AddBattleParticipant
+	call InitBattleMon
 	xor a
 	ld [wd265], a
 	call ApplyStatLevelMultiplierOnAllStats
-	call Function3db5f
+	call SendOutPlayerMon
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	call SetPlayerTurn
@@ -5563,7 +5580,7 @@
 BattleMenu_Run: ; 3e489
 	call Call_LoadTempTileMapToTileMap
 	ld a, $3
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld hl, BattleMonSpeed
 	ld de, EnemyMonSpeed
 	call TryToRunAwayFromBattle
@@ -5580,7 +5597,7 @@
 CheckAmuletCoin: ; 3e4a8
 	ld a, [BattleMonItem]
 	ld b, a
-	callab GetItem
+	callab GetItemHeldEffect
 	ld a, b
 	cp HELD_AMULET_COIN
 	ret nz
@@ -5608,7 +5625,7 @@
 	jr .asm_3e4e2
 
 .asm_3e4dd
-	ld a, PartyMon1Moves - PartyMon1
+	ld a, MON_MOVES
 	call GetPartyParamLocation
 
 .asm_3e4e2
@@ -5659,7 +5676,7 @@
 	inc a
 
 .asm_3e53e
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1
 	ld [wcfaa], a
 	ld a, [wd0eb]
@@ -5726,9 +5743,9 @@
 
 	xor a
 	ld [wd0e3], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld b, a
 	ld a, [wd235]
 	dec a
@@ -5751,7 +5768,7 @@
 	ret nz
 
 	ld hl, BattleMonPP
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -5767,7 +5784,7 @@
 	ld a, [wc6e1]
 	and a
 	jr nz, .asm_3e606
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld hl, BattleMonMoves
 	ld c, a
 	ld b, 0
@@ -5797,17 +5814,17 @@
 ; 3e61d
 
 .asm_3e61d
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	and a
 	jp nz, .asm_3e57a
 	ld a, [wd0eb]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jp .asm_3e57a
 ; 3e62e
 
 .asm_3e62e ; 3e62e
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 	ld a, [wd0eb]
 rept 2
@@ -5816,7 +5833,7 @@
 	cp b
 	jp nz, .asm_3e57a
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jp .asm_3e57a
 ; 3e643
 
@@ -5833,7 +5850,7 @@
 	swap a
 	and $f
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp b
 	jr nz, .asm_3e671
 	ld a, [hl]
@@ -5852,7 +5869,7 @@
 	ld a, [hl]
 	and $f
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	swap a
 	add b
 	ld [hl], a
@@ -5867,7 +5884,7 @@
 	push hl
 	call .asm_3e6a5
 	pop hl
-	ld bc, PartyMon1PP - PartyMon1Moves
+	ld bc, MON_PP - MON_MOVES
 	add hl, bc
 	call .asm_3e6a5
 
@@ -5886,7 +5903,7 @@
 	ld d, h
 	ld e, l
 	pop hl
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld c, a
 	ld b, 0
@@ -5899,7 +5916,7 @@
 	ret
 
 .asm_3e6bf
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd0e3], a
 	jp MoveSelectionScreen
 ; 3e6c8
@@ -5921,7 +5938,7 @@
 	swap a
 	and $f
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp b
 	jr nz, .asm_3e6f4
 
@@ -5931,11 +5948,11 @@
 	jr .done
 
 .asm_3e6f4
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	dec [hl]
 	call SetPlayerTurn
 	ld hl, BattleMonMoves
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld c, a
 	ld b, 0
 	add hl, bc
@@ -5946,9 +5963,9 @@
 	ld [CurPartyMon], a
 	ld a, WILDMON
 	ld [MonType], a
-	callab Functionf8ec
+	callab GetMaxPPOfMove
 
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld c, [hl]
 	inc [hl]
 	ld b, 0
@@ -6055,13 +6072,13 @@
 
 
 
-Function3e7c1: ; 3e7c1
+ParseEnemyAction: ; 3e7c1
 	ld a, [wEnemyIsSwitching]
 	and a
 	ret nz
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3e817
+	jr z, .not_linked
 	call EmptyBattleTextBox
 	call LoadTileMapToTempTileMap
 	ld a, [wd0ec]
@@ -6069,74 +6086,75 @@
 	call z, Function3e8e4
 	call Call_LoadTempTileMapToTileMap
 	ld a, [wBattleAction]
-	cp $e
-	jp z, .asm_3e8bd
-	cp $d
-	jp z, .asm_3e82c
-	cp NUM_MOVES
+	cp BATTLEACTION_E
+	jp z, .struggle
+	cp BATTLEACTION_D
+	jp z, .battle_action_d
+	cp BATTLEACTION_SWITCH1
 	jp nc, ResetVarsForSubstatusRage
 	ld [CurEnemyMoveNum], a
 	ld c, a
 	ld a, [EnemySubStatus1]
 	bit SUBSTATUS_ROLLOUT, a
-	jp nz, .asm_3e882
+	jp nz, .skip_load
 	ld a, [EnemySubStatus3]
 	and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE
-	jp nz, .asm_3e882
+	jp nz, .skip_load
 
 	ld hl, EnemySubStatus5
 	bit SUBSTATUS_ENCORED, [hl]
 	ld a, [LastEnemyMove]
-	jp nz, .asm_3e87f
+	jp nz, .finish
 	ld hl, EnemyMonMoves
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
-	jp .asm_3e87f
+	jp .finish
 
-.asm_3e817
+.not_linked
 	ld hl, EnemySubStatus5
 	bit SUBSTATUS_ENCORED, [hl]
-	jr z, .asm_3e824
+	jr z, .skip_encore
 	ld a, [LastEnemyMove]
-	jp .asm_3e87f
+	jp .finish
 
-.asm_3e824
+.skip_encore
 	call CheckSubstatus_RechargeChargedRampageBideRollout
 	jp nz, ResetVarsForSubstatusRage
-	jr .asm_3e830
+	jr .continue
 
-.asm_3e82c
+.battle_action_d
 	ld a, $ff
-	jr .asm_3e87f
+	jr .finish
 
-.asm_3e830
+.continue
 	ld hl, EnemyMonMoves
 	ld de, EnemyMonPP
 	ld b, NUM_MOVES
-.asm_3e838
+.loop
 	ld a, [hl]
 	and a
-	jp z, .asm_3e8bd
+	jp z, .struggle
 	ld a, [EnemyDisabledMove]
 	cp [hl]
-	jr z, .asm_3e848
+	jr z, .disabled
 	ld a, [de]
 	and $3f
-	jr nz, .asm_3e84f
+	jr nz, .enough_pp
 
-.asm_3e848
+.disabled
 	inc hl
 	inc de
 	dec b
-	jr nz, .asm_3e838
-	jr .asm_3e8bd
+	jr nz, .loop
+	jr .struggle
 
-.asm_3e84f
+.enough_pp
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .asm_3e882
-.asm_3e855
+	jr nz, .skip_load
+; wild
+.loop2
 	ld hl, EnemyMonMoves
 	call BattleRandom
 	and 3 ; TODO factor in NUM_MOVES
@@ -6148,48 +6166,48 @@
 	and $f
 	dec a
 	cp c
-	jr z, .asm_3e855
+	jr z, .loop2
 	ld a, [hl]
 	and a
-	jr z, .asm_3e855
+	jr z, .loop2
 	ld hl, EnemyMonPP
 	add hl, bc
 	ld b, a
 	ld a, [hl]
 	and $3f
-	jr z, .asm_3e855
+	jr z, .loop2
 	ld a, c
 	ld [CurEnemyMoveNum], a
 	ld a, b
 
-.asm_3e87f
+.finish
 	ld [CurEnemyMove], a
 
-.asm_3e882
+.skip_load
 	call SetEnemyTurn
 	callab UpdateMoveData
 	call CheckSubstatus_RechargeChargedRampageBideRollout
-	jr nz, .asm_3e894
+	jr nz, .raging
 	xor a
-	ld [wc733], a
+	ld [wEnemyCharging], a
 
-.asm_3e894
+.raging
 	ld a, [wEnemyMoveStruct + MOVE_EFFECT]
 	cp EFFECT_FURY_CUTTER
-	jr z, .asm_3e89f
+	jr z, .fury_cutter
 	xor a
 	ld [EnemyFuryCutterCount], a
 
-.asm_3e89f
+.fury_cutter
 	ld a, [wEnemyMoveStruct + MOVE_EFFECT]
 	cp EFFECT_RAGE
-	jr z, .asm_3e8af
+	jr z, .no_rage
 	ld hl, EnemySubStatus4
 	res SUBSTATUS_RAGE, [hl]
 	xor a
-	ld [wc72c], a
+	ld [wEnemyRageCounter], a
 
-.asm_3e8af
+.no_rage
 	ld a, [wEnemyMoveStruct + MOVE_EFFECT]
 	cp EFFECT_PROTECT
 	ret z
@@ -6199,9 +6217,9 @@
 	ld [EnemyProtectCount], a
 	ret
 
-.asm_3e8bd
+.struggle
 	ld a, STRUGGLE
-	jr .asm_3e87f
+	jr .finish
 ; 3e8c1
 
 ResetVarsForSubstatusRage: ; 3e8c1
@@ -6208,7 +6226,7 @@
 	xor a
 	ld [EnemyFuryCutterCount], a
 	ld [EnemyProtectCount], a
-	ld [wc72c], a
+	ld [wEnemyRageCounter], a
 	ld hl, EnemySubStatus4
 	res SUBSTATUS_RAGE, [hl]
 	ret
@@ -6857,7 +6875,7 @@
 Function3ebd8: ; 3ebd8
 	xor a
 	ld [TempEnemyMonSpecies], a
-	call Function3ee27
+	call FinishBattleAnim
 	ld a, [OtherTrainerClass]
 	ld [TrainerClass], a
 	ld de, VTiles2
@@ -6917,25 +6935,25 @@
 ; 3ec2c
 
 
-Function3ec2c: ; 3ec2c
+ApplyStatusEffectOnPlayerStats: ; 3ec2c
 	ld a, 1
-	jr Function3ec31
+	jr ApplyStatusEffectOnStats
 ; 3ec30
 
-Function3ec30: ; 3ec30
+ApplyStatusEffectOnEnemyStats: ; 3ec30
 	xor a
 ; 3ec31
 
-Function3ec31: ; 3ec31
+ApplyStatusEffectOnStats: ; 3ec31
 	ld [hBattleTurn], a
-	call Function3ec39
-	jp Function3ec76
+	call ApplyPrzEffectOnSpeed
+	jp ApplyBrnEffectOnAttack
 ; 3ec39
 
-Function3ec39: ; 3ec39
+ApplyPrzEffectOnSpeed: ; 3ec39
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3ec5a
+	jr z, .enemy
 	ld a, [BattleMonStatus]
 	and 1 << PAR
 	ret z
@@ -6949,14 +6967,14 @@
 	rr b
 	ld [hli], a
 	or b
-	jr nz, .asm_3ec58
+	jr nz, .player_ok
 	ld b, $1
 
-.asm_3ec58
+.player_ok
 	ld [hl], b
 	ret
 
-.asm_3ec5a
+.enemy
 	ld a, [EnemyMonStatus]
 	and 1 << PAR
 	ret z
@@ -6970,18 +6988,18 @@
 	rr b
 	ld [hli], a
 	or b
-	jr nz, .asm_3ec74
+	jr nz, .enemy_ok
 	ld b, $1
 
-.asm_3ec74
+.enemy_ok
 	ld [hl], b
 	ret
 ; 3ec76
 
-Function3ec76: ; 3ec76
+ApplyBrnEffectOnAttack: ; 3ec76
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3ec93
+	jr z, .enemy
 	ld a, [BattleMonStatus]
 	and 1 << BRN
 	ret z
@@ -6993,14 +7011,14 @@
 	rr b
 	ld [hli], a
 	or b
-	jr nz, .asm_3ec91
+	jr nz, .player_ok
 	ld b, $1
 
-.asm_3ec91
+.player_ok
 	ld [hl], b
 	ret
 
-.asm_3ec93
+.enemy
 	ld a, [EnemyMonStatus]
 	and 1 << BRN
 	ret z
@@ -7012,10 +7030,10 @@
 	rr b
 	ld [hli], a
 	or b
-	jr nz, .asm_3eca9
+	jr nz, .enemy_ok
 	ld b, $1
 
-.asm_3eca9
+.enemy_ok
 	ld [hl], b
 	ret
 ; 3ecab
@@ -7023,12 +7041,12 @@
 ApplyStatLevelMultiplierOnAllStats: ; 3ecab
 ; Apply StatLevelMultipliers on all 5 Stats
 	ld c, 0
-.asm_3ecad
+.stat_loop
 	call ApplyStatLevelMultiplier
 	inc c
 	ld a, c
 	cp 5
-	jr nz, .asm_3ecad
+	jr nz, .stat_loop
 	ret
 ; 3ecb7
 
@@ -7041,17 +7059,17 @@
 	ld hl, BattleMonAttack
 	ld de, PlayerStats
 	ld bc, PlayerAtkLevel
-	jr z, .asm_3ecd2
+	jr z, .got_pointers
 	ld hl, EnemyMonAttack
 	ld de, EnemyStats
 	ld bc, EnemyAtkLevel
 
-.asm_3ecd2
+.got_pointers
 	add c
 	ld c, a
-	jr nc, .asm_3ecd7
+	jr nc, .okay
 	inc b
-.asm_3ecd7
+.okay
 	ld a, [bc]
 	pop bc
 	ld b, a
@@ -7062,9 +7080,9 @@
 	ld a, c
 	add e
 	ld e, a
-	jr nc, .asm_3ece6
+	jr nc, .okay2
 	inc d
-.asm_3ece6
+.okay2
 	pop bc
 	push hl
 	ld hl, .StatLevelMultipliers
@@ -7094,24 +7112,24 @@
 	sub 999 % $100
 	ld a, [hQuotient + 1]
 	sbc 999 / $100
-	jp c, .asm_3ed1e
+	jp c, .okay3
 
 	ld a, 999 / $100
-	ld [$ffb5], a
+	ld [hQuotient + 1], a
 	ld a, 999 % $100
-	ld [$ffb6], a
+	ld [hQuotient + 2], a
 
-.asm_3ed1e
-	ld a, [$ffb5]
+.okay3
+	ld a, [hQuotient + 1]
 	ld [hli], a
 	ld b, a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	ld [hl], a
 	or b
-	jr nz, .asm_3ed29
+	jr nz, .okay4
 	inc [hl]
 
-.asm_3ed29
+.okay4
 	pop bc
 	ret
 ; 3ed2b
@@ -7161,18 +7179,18 @@
 
 ; Swap badges 3 (PlainBadge) and 5 (MineralBadge).
 	ld d, a
-	and %00000100
+	and (1 << PLAINBADGE)
 rept 2
 	add a
 endr
 	ld b, a
 	ld a, d
-	and %00010000
+	and (1 << MINERALBADGE)
 	rrca
 	rrca
 	ld c, a
 	ld a, d
-	and %11101011
+	and ((1 << ZEPHYRBADGE) | (1 << HIVEBADGE) | (1 << FOGBADGE) | (1 << STORMBADGE) | (1 << GLACIERBADGE) | (1 << RISINGBADGE))
 	or b
 	or c
 	ld b, a
@@ -7230,29 +7248,29 @@
 ; 3ed9f
 
 
-Function3ed9f: ; 3ed9f
-	callab Functionfb4f2
+_LoadBattleFontsHPBar: ; 3ed9f
+	callab LoadBattleFontsHPBar
 	ret
 ; 3eda6
 
-Function3eda6: ; 3eda6
-	callab Functionfb50d
+_LoadHPBar: ; 3eda6
+	callab LoadHPBar
 	ret
 ; 3edad
 
 
-Function3edad: ; 3edad
-	ld de, GFX_f8ac0
+LoadHPExpBarGFX: ; unreferenced
+	ld de, EnemyHPBarBorderGFX
 	ld hl, VTiles2 tile $6c
-	lb bc, BANK(GFX_f8ac0), 4
+	lb bc, BANK(EnemyHPBarBorderGFX), 4
 	call Get1bpp
-	ld de, GFX_f8ae0
+	ld de, HPExpBarBorderGFX
 	ld hl, VTiles2 tile $73
-	lb bc, BANK(GFX_f8ae0), 6
+	lb bc, BANK(HPExpBarBorderGFX), 6
 	call Get1bpp
-	ld de, GFX_f8b10
+	ld de, ExpBarGFX
 	ld hl, VTiles2 tile $55
-	lb bc, BANK(GFX_f8b10), 8
+	lb bc, BANK(ExpBarGFX), 8
 	jp Get2bpp
 ; 3edd1
 
@@ -7336,7 +7354,7 @@
 ; 3ee0f
 
 
-Function3ee0f: ; 3ee0f
+Call_PlayBattleAnim_OnlyIfVisible: ; 3ee0f
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVar
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
@@ -7352,7 +7370,7 @@
 	predef_jump PlayBattleAnim
 ; 3ee27
 
-Function3ee27: ; 3ee27
+FinishBattleAnim: ; 3ee27
 	push af
 	push bc
 	push de
@@ -7371,6 +7389,7 @@
 
 GiveExperiencePoints: ; 3ee3b
 ; Give experience.
+; Don't give experience if linked or in the Battle Tower.
 	ld a, [wLinkMode]
 	and a
 	ret nz
@@ -7384,24 +7403,25 @@
 	ld [CurPartyMon], a
 	ld bc, PartyMon1Species
 
-.asm_3ee50
-	ld hl, $0022
+.loop
+	ld hl, MON_HP
 	add hl, bc
 	ld a, [hli]
 	or [hl]
-	jp z, .asm_3f0b9
+	jp z, .skip_stats ; fainted
+
 	push bc
-	ld hl, wc664
+	ld hl, wBattleParticipantsNotFainted
 	ld a, [CurPartyMon]
 	ld c, a
-	ld b, $2
+	ld b, CHECK_FLAG
 	ld d, $0
 	predef FlagPredef
 	ld a, c
 	and a
 	pop bc
-	jp z, .asm_3f0b9
-	ld hl, $000c
+	jp z, .skip_stats
+	ld hl, MON_STAT_EXP + 1
 	add hl, bc
 	ld d, h
 	ld e, l
@@ -7408,53 +7428,53 @@
 	ld hl, EnemyMonBaseStats - 1
 	push bc
 	ld c, $5
-.asm_3ee7c
+.loop1
 	inc hl
 	ld a, [de]
 	add [hl]
 	ld [de], a
-	jr nc, .asm_3ee89
+	jr nc, .okay1
 	dec de
 	ld a, [de]
 	inc a
-	jr z, .asm_3eea4
+	jr z, .next
 	ld [de], a
 	inc de
 
-.asm_3ee89
+.okay1
 	push hl
 	push bc
-	ld a, PartyMon1PokerusStatus - PartyMon1
+	ld a, MON_PKRUS
 	call GetPartyParamLocation
 	ld a, [hl]
 	and a
 	pop bc
 	pop hl
-	jr z, .asm_3eea9
+	jr z, .skip
 	ld a, [de]
 	add [hl]
 	ld [de], a
-	jr nc, .asm_3eea9
+	jr nc, .skip
 	dec de
 	ld a, [de]
 	inc a
-	jr z, .asm_3eea4
+	jr z, .next
 	ld [de], a
 	inc de
-	jr .asm_3eea9
+	jr .skip
 
-.asm_3eea4
+.next
 	ld a, $ff
 	ld [de], a
 	inc de
 	ld [de], a
 
-.asm_3eea9
+.skip
 rept 2
 	inc de
 endr
 	dec c
-	jr nz, .asm_3ee7c
+	jr nz, .loop1
 	xor a
 	ld [hMultiplicand + 0], a
 	ld [hMultiplicand + 1], a
@@ -7463,40 +7483,40 @@
 	ld a, [EnemyMonLevel]
 	ld [hMultiplier], a
 	call Multiply
-	ld a, $7
+	ld a, 7
 	ld [hDivisor], a
-	ld b, $4
+	ld b, 4
 	call Divide
 	pop bc
-	ld hl, $0006
+	ld hl, MON_ID
 	add hl, bc
 	ld a, [PlayerID]
 	cp [hl]
-	jr nz, .asm_3eedd
+	jr nz, .boosted
 	inc hl
 	ld a, [PlayerID + 1]
 	cp [hl]
 	ld a, $0
-	jr z, .asm_3eee2
+	jr z, .no_boost
 
-.asm_3eedd
-	call DoubleExp
+.boosted
+	call BoostExp
 	ld a, $1
 
-.asm_3eee2
+.no_boost
 	ld [StringBuffer2 + 2], a
 	ld a, [wBattleMode]
 	dec a
-	call nz, DoubleExp
+	call nz, BoostExp
 	push bc
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 	ld a, [hl]
 	cp LUCKY_EGG
-	call z, DoubleExp
-	ld a, [$ffb6]
+	call z, BoostExp
+	ld a, [hQuotient + 2]
 	ld [StringBuffer2 + 1], a
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	ld [StringBuffer2], a
 	ld a, [CurPartyMon]
 	ld hl, PartyMonNicknames
@@ -7504,28 +7524,28 @@
 	ld hl, Text_PkmnGainedExpPoint
 	call BattleTextBox
 	ld a, [StringBuffer2 + 1]
-	ld [$ffb6], a
+	ld [hQuotient + 2], a
 	ld a, [StringBuffer2]
-	ld [$ffb5], a
+	ld [hQuotient + 1], a
 	pop bc
 	call Function3f136
 	push bc
 	call LoadTileMapToTempTileMap
 	pop bc
-	ld hl, $000a
+	ld hl, MON_EXP + 2
 	add hl, bc
 	ld d, [hl]
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	add d
 	ld [hld], a
 	ld d, [hl]
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	adc d
 	ld [hl], a
-	jr nc, .asm_3ef3d
+	jr nc, .skip2
 	dec hl
 	inc [hl]
-	jr nz, .asm_3ef3d
+	jr nz, .skip2
 	ld a, $ff
 rept 2
 	ld [hli], a
@@ -7532,7 +7552,7 @@
 endr
 	ld [hl], a
 
-.asm_3ef3d
+.skip2
 	ld a, [CurPartyMon]
 	ld e, a
 	ld d, $0
@@ -7543,16 +7563,16 @@
 	call GetBaseData
 	push bc
 	ld d, MAX_LEVEL
-	callab Function50e47
+	callab CalcExpAtLevel
 	pop bc
-	ld hl, $000a
+	ld hl, MON_EXP + 2
 	add hl, bc
 	push bc
-	ld a, [hMultiplicand]
+	ld a, [hQuotient]
 	ld b, a
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	ld c, a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	ld d, a
 	ld a, [hld]
 	sub d
@@ -7560,7 +7580,7 @@
 	sbc c
 	ld a, [hl]
 	sbc b
-	jr c, .asm_3ef74
+	jr c, .max_exp
 	ld a, b
 	ld [hli], a
 	ld a, c
@@ -7568,19 +7588,20 @@
 	ld a, d
 	ld [hld], a
 
-.asm_3ef74
+.max_exp
 	xor a ; PARTYMON
 	ld [MonType], a
 	predef CopyPkmnToTempMon
-	callab Function50e1b
+	callab CalcLevel
 	pop bc
-	ld hl, PartyMon1Level - PartyMon1
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	cp MAX_LEVEL
-	jp nc, .asm_3f0b9
+	jp nc, .skip_stats
 	cp d
-	jp z, .asm_3f0b9
+	jp z, .skip_stats
+; <NICKNAME> grew to level ##!
 	ld [wc719], a
 	ld a, [CurPartyLevel]
 	push af
@@ -7587,23 +7608,23 @@
 	ld a, d
 	ld [CurPartyLevel], a
 	ld [hl], a
-	ld hl, PartyMon1Species - PartyMon1
+	ld hl, MON_SPECIES
 	add hl, bc
 	ld a, [hl]
 	ld [CurSpecies], a
 	ld [wd265], a
 	call GetBaseData
-	ld hl, $0025
+	ld hl, MON_MAXHP + 1
 	add hl, bc
 	ld a, [hld]
 	ld e, a
 	ld d, [hl]
 	push de
-	ld hl, $0024
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, $000a
+	ld hl, MON_EXP + 2
 	add hl, bc
 	push bc
 	ld b, $1
@@ -7610,7 +7631,7 @@
 	predef CalcPkmnStats
 	pop bc
 	pop de
-	ld hl, $0025
+	ld hl, MON_MAXHP + 1
 	add hl, bc
 	ld a, [hld]
 	sub e
@@ -7629,7 +7650,7 @@
 	ld d, a
 	ld a, [CurPartyMon]
 	cp d
-	jr nz, .asm_3f035
+	jr nz, .skip_animation
 	ld de, BattleMonHP
 	ld a, [hli]
 	ld [de], a
@@ -7638,27 +7659,27 @@
 	ld [de], a
 	ld de, BattleMonMaxHP
 	push bc
-	ld bc, $000c
+	ld bc, PARTYMON_STRUCT_LENGTH - MON_MAXHP
 	call CopyBytes
 	pop bc
-	ld hl, $001f
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [BattleMonLevel], a
 	ld a, [PlayerSubStatus5]
 	bit SUBSTATUS_TRANSFORMED, a
-	jr nz, .asm_3f012
-	ld hl, $0026
+	jr nz, .transformed
+	ld hl, MON_ATK
 	add hl, bc
 	ld de, PlayerStats
-	ld bc, $000a
+	ld bc, PARTYMON_STRUCT_LENGTH - MON_ATK
 	call CopyBytes
 
-.asm_3f012
+.transformed
 	xor a
 	ld [wd265], a
 	call ApplyStatLevelMultiplierOnAllStats
-	callab Function3ec2c
+	callab ApplyStatusEffectOnPlayerStats
 	callab BadgeStatBoosts
 	callab UpdatePlayerHUD
 	call EmptyBattleTextBox
@@ -7666,13 +7687,13 @@
 	ld a, $1
 	ld [hBGMapMode], a
 
-.asm_3f035
+.skip_animation
 	callba LevelUpHappinessMod
 	ld a, [CurBattleMon]
 	ld b, a
 	ld a, [CurPartyMon]
 	cp b
-	jr z, .asm_3f057
+	jr z, .skip_animation2
 	ld de, SFX_HIT_END_OF_EXP_BAR
 	call PlaySFX
 	call WaitSFX
@@ -7680,7 +7701,7 @@
 	call StdBattleTextBox
 	call LoadTileMapToTempTileMap
 
-.asm_3f057
+.skip_animation2
 	xor a ; PARTYMON
 	ld [MonType], a
 	predef CopyPkmnToTempMon
@@ -7693,7 +7714,7 @@
 	predef PrintTempMonStats
 	ld c, $1e
 	call DelayFrames
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	call Call_LoadTempTileMapToTileMap
 	xor a ; PARTYMON
 	ld [MonType], a
@@ -7705,7 +7726,7 @@
 	ld a, [wc719]
 	ld b, a
 
-.asm_3f093
+.level_loop
 	inc b
 	ld a, b
 	ld [CurPartyLevel], a
@@ -7714,7 +7735,7 @@
 	pop bc
 	ld a, b
 	cp c
-	jr nz, .asm_3f093
+	jr nz, .level_loop
 	pop af
 	ld [CurPartyLevel], a
 	ld hl, EvolvableFlags
@@ -7725,26 +7746,26 @@
 	pop af
 	ld [CurPartyLevel], a
 
-.asm_3f0b9
+.skip_stats
 	ld a, [PartyCount]
 	ld b, a
 	ld a, [CurPartyMon]
 	inc a
 	cp b
-	jr z, .asm_3f0d1
+	jr z, .done
 	ld [CurPartyMon], a
-	ld a, PartyMon1Species - PartyMon1
+	ld a, MON_SPECIES
 	call GetPartyParamLocation
 	ld b, h
 	ld c, l
-	jp .asm_3ee50
+	jp .loop
 
-.asm_3f0d1
-	jp Function3d57a
+.done
+	jp ResetBattleParticipants
 ; 3f0d4
 
 Function3f0d4: ; 3f0d4
-	ld a, [wc664]
+	ld a, [wBattleParticipantsNotFainted]
 	ld b, a
 	ld c, $6
 	ld d, $0
@@ -7776,19 +7797,23 @@
 	ret
 ; 3f106
 
-DoubleExp: ; 3f106
+BoostExp: ; 3f106
+; Multiply experience by 1.5x
 	push bc
-	ld a, [$ffb5]
+; load experience value
+	ld a, [hProduct + 2]
 	ld b, a
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	ld c, a
+; halve it
 	srl b
 	rr c
+; add it back to the whole exp value
 	add c
-	ld [$ffb6], a
-	ld a, [$ffb5]
+	ld [hProduct + 3], a
+	ld a, [hProduct + 2]
 	adc b
-	ld [$ffb5], a
+	ld [hProduct + 2], a
 	pop bc
 	ret
 ; 3f11b
@@ -7822,20 +7847,20 @@
 	ld hl, CurPartyMon
 	ld a, [CurBattleMon]
 	cp [hl]
-	jp nz, .asm_3f219
+	jp nz, .finish
 
 	ld a, [BattleMonLevel]
 	cp MAX_LEVEL
-	jp nc, .asm_3f219
+	jp nc, .finish
 
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	ld [wd004], a
 	push af
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	ld [wd003], a
 	push af
 	xor a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	xor a ; PARTYMON
 	ld [MonType], a
 	predef CopyPkmnToTempMon
@@ -7844,7 +7869,7 @@
 	ld e, a
 	push de
 	ld de, TempMonExp + 2
-	call Function3f39c
+	call CalcExpBar
 	push bc
 	ld hl, TempMonExp + 2
 	ld a, [wd004]
@@ -7864,12 +7889,12 @@
 
 .asm_3f186
 	ld d, MAX_LEVEL
-	callab Function50e47
-	ld a, [hMultiplicand]
+	callab CalcExpAtLevel
+	ld a, [hProduct + 1]
 	ld b, a
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	ld c, a
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	ld d, a
 	ld hl, TempMonExp + 2
 	ld a, [hld]
@@ -7887,7 +7912,7 @@
 	ld [hld], a
 
 .asm_3f1a8
-	callab Function50e1b
+	callab CalcLevel
 	ld a, d
 	pop bc
 	pop de
@@ -7932,7 +7957,7 @@
 	push bc
 	ld b, d
 	ld de, TempMonExp + 2
-	call Function3f39c
+	call CalcExpBar
 	ld a, b
 	pop bc
 	ld c, a
@@ -7940,11 +7965,11 @@
 	call Function3f22c
 	call Function3dfe
 	pop af
-	ld [$ffb5], a
+	ld [hProduct + 2], a
 	pop af
-	ld [$ffb6], a
+	ld [hProduct + 3], a
 
-.asm_3f219
+.finish
 	pop bc
 	ret
 ; 3f21b
@@ -7968,7 +7993,7 @@
 	push bc
 	push de
 	hlcoord 17, 11
-	call Function3f41c
+	call PlaceExpBar
 	pop de
 	ld a, $1
 	ld [hBGMapMode], a
@@ -7984,7 +8009,7 @@
 	push bc
 	push de
 	hlcoord 17, 11
-	call Function3f41c
+	call PlaceExpBar
 	pop de
 	ld a, $1
 	ld [hBGMapMode], a
@@ -8012,32 +8037,33 @@
 SendOutPkmnText: ; 3f26d
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_3f27c
+	jr z, .not_linked
 
 	ld hl, JumpText_GoPkmn ; If we're in a LinkBattle print just "Go <PlayerMon>"
 
-	ld a, [wd264] ; besides this variable is set. which stands for ???
+	ld a, [wd264] ; unless this (unidentified) variable is set
 	and a
-	jr nz, .asm_3f2ce
+	jr nz, .skip_to_textbox
 
-.asm_3f27c
+.not_linked
 ; Depending on the HP of the enemy Pkmn, the game prints a different text
 	ld hl, EnemyMonHP
 	ld a, [hli]
 	or [hl]
 	ld hl, JumpText_GoPkmn
-	jr z, .asm_3f2ce
+	jr z, .skip_to_textbox
 
+	; compute enemy helth remaining as a percentage
 	xor a
 	ld [hMultiplicand + 0], a
 	ld hl, EnemyMonHP
 	ld a, [hli]
-	ld [wc6ea], a
+	ld [wEnemyHPAtTimeOfPlayerSwitch], a
 	ld [hMultiplicand + 1], a
 	ld a, [hl]
-	ld [wc6eb], a
+	ld [wEnemyHPAtTimeOfPlayerSwitch + 1], a
 	ld [hMultiplicand + 2], a
-	ld a, $19
+	ld a, 25
 	ld [hMultiplier], a
 	call Multiply
 	ld hl, EnemyMonMaxHP
@@ -8048,22 +8074,25 @@
 	srl a
 	rr b
 	ld a, b
-	ld b, $4
+	ld b, 4
 	ld [hDivisor], a
 	call Divide
+
 	ld a, [hQuotient + 2]
 	ld hl, JumpText_GoPkmn
-	cp $46
-	jr nc, .asm_3f2ce
+	cp 70
+	jr nc, .skip_to_textbox
+
 	ld hl, JumpText_DoItPkmn
-	cp $28
-	jr nc, .asm_3f2ce
+	cp 40
+	jr nc, .skip_to_textbox
+
 	ld hl, JumpText_GoForItPkmn
-	cp $a
-	jr nc, .asm_3f2ce
-	ld hl, JumpText_YourFoesWeakGetmPkmn
+	cp 10
+	jr nc, .skip_to_textbox
 
-.asm_3f2ce
+	ld hl, JumpText_YourFoesWeakGetmPkmn
+.skip_to_textbox
 	jp BattleTextBox
 ; 3f2d1
 
@@ -8112,13 +8141,13 @@
 	start_asm
 ; 3f2ff
 
-Function3f2ff: ; 3f2ff
+WithdrawPkmnText: ; 3f2ff
 ; Print text to withdraw Pkmn
 ; depending on HP the message is different
 	push de
 	push bc
 	ld hl, EnemyMonHP + 1
-	ld de, wc6eb
+	ld de, wEnemyHPAtTimeOfPlayerSwitch + 1
 	ld b, [hl]
 	dec hl
 	ld a, [de]
@@ -8129,7 +8158,7 @@
 	ld a, [de]
 	sbc b
 	ld [hMultiplicand + 1], a
-	ld a, $19
+	ld a, 25
 	ld [hMultiplier], a
 	call Multiply
 	ld hl, EnemyMonMaxHP
@@ -8140,7 +8169,7 @@
 	srl a
 	rr b
 	ld a, b
-	ld b, $4
+	ld b, 4
 	ld [hDivisor], a
 	call Divide
 	pop bc
@@ -8151,11 +8180,11 @@
 	ret z
 
 	ld hl, TextJump_ComeBack
-	cp $1e
+	cp 30
 	ret c
 
 	ld hl, TextJump_OKComeBack
-	cp $46
+	cp 70
 	ret c
 
 	ld hl, TextJump_GoodComeBack
@@ -8189,23 +8218,23 @@
 ; 3f360
 
 
-Function3f360: ; 3f360
-	ld hl, wc6f0
+HandleSafariAngerEatingStatus: ; unreferenced
+	ld hl, wSafariMonEating
 	ld a, [hl]
 	and a
-	jr z, .asm_3f36d
+	jr z, .angry
 	dec [hl]
 	ld hl, BattleText_WildPkmnIsEating
-	jr .asm_3f388
+	jr .finish
 
-.asm_3f36d
-	dec hl
+.angry
+	dec hl ; wSafariMonAngerCount
 	ld a, [hl]
 	and a
 	ret z
 	dec [hl]
 	ld hl, BattleText_WildPkmnIsAngry
-	jr nz, .asm_3f388
+	jr nz, .finish
 	push hl
 	ld a, [EnemyMonSpecies]
 	ld [CurSpecies], a
@@ -8214,7 +8243,7 @@
 	ld [EnemyMonCatchRate], a
 	pop hl
 
-.asm_3f388
+.finish
 	push hl
 	call Call_LoadTempTileMapToTileMap
 	pop hl
@@ -8224,19 +8253,22 @@
 
 FillInExpBar: ; 3f390
 	push hl
-	call Function3f39c
+	call CalcExpBar
 	pop hl
-	ld de, $0007
+	ld de, 7
 	add hl, de
-	jp Function3f41c
+	jp PlaceExpBar
 ; 3f39c
 
-Function3f39c: ; 3f39c
+CalcExpBar: ; 3f39c
+; Calculate the percent exp between this level and the next
+; Level in b
 	push de
 	ld d, b
 	push de
-	callab Function50e47
+	callab CalcExpAtLevel
 	pop de
+; exp at current level gets pushed to the stack
 	ld hl, hMultiplicand
 	ld a, [hli]
 	push af
@@ -8244,16 +8276,18 @@
 	push af
 	ld a, [hl]
 	push af
+; next level
 	inc d
-	callab Function50e47
-	ld hl, $ffb6
+	callab CalcExpAtLevel
+; back up the next level exp, and subtract the two levels
+	ld hl, hMultiplicand + 2
 	ld a, [hl]
-	ld [$ffba], a
+	ld [hMathBuffer + 2], a
 	pop bc
 	sub b
 	ld [hld], a
 	ld a, [hl]
-	ld [$ffb9], a
+	ld [hMathBuffer + 1], a
 	pop bc
 	sbc b
 	ld [hld], a
@@ -8263,21 +8297,24 @@
 	sbc b
 	ld [hl], a
 	pop de
-	ld hl, $ffb5
+
+	ld hl, hMultiplicand + 1
 	ld a, [hli]
 	push af
 	ld a, [hl]
 	push af
+
+; get the amount of exp remaining to the next level
 	ld a, [de]
 	dec de
 	ld c, a
-	ld a, [$ffba]
+	ld a, [hMathBuffer + 2]
 	sub c
 	ld [hld], a
 	ld a, [de]
 	dec de
 	ld b, a
-	ld a, [$ffb9]
+	ld a, [hMathBuffer + 1]
 	sbc b
 	ld [hld], a
 	ld a, [de]
@@ -8287,6 +8324,7 @@
 	ld [hld], a
 	xor a
 	ld [hl], a
+; multiply by 64
 	ld a, $40
 	ld [hMultiplier], a
 	call Multiply
@@ -8294,10 +8332,10 @@
 	ld c, a
 	pop af
 	ld b, a
-.asm_3f3f4
+.loop
 	ld a, b
 	and a
-	jr z, .asm_3f40c
+	jr z, .done
 	srl b
 	rr c
 	ld hl, hProduct
@@ -8308,12 +8346,12 @@
 	rr [hl]
 	inc hl
 	rr [hl]
-	jr .asm_3f3f4
+	jr .loop
 
-.asm_3f40c
+.done
 	ld a, c
 	ld [hDivisor], a
-	ld b, $4
+	ld b, 4
 	call Divide
 	ld a, [hQuotient + 2]
 	ld b, a
@@ -8323,49 +8361,49 @@
 	ret
 ; 3f41c
 
-Function3f41c: ; 3f41c
-	ld c, $8
-.asm_3f41e
+PlaceExpBar: ; 3f41c
+	ld c, $8 ; number of tiles
+.loop1
 	ld a, b
 	sub $8
-	jr c, .asm_3f42c
+	jr c, .next
 	ld b, a
-	ld a, $6a
+	ld a, $6a ; full bar
 	ld [hld], a
 	dec c
-	jr z, .asm_3f43c
-	jr .asm_3f41e
+	jr z, .finish
+	jr .loop1
 
-.asm_3f42c
+.next
 	add $8
-	jr z, .asm_3f434
-	add $54
-	jr .asm_3f436
+	jr z, .loop2
+	add $54 ; tile to the left of small exp bar tile
+	jr .skip
 
-.asm_3f434
-	ld a, $62
+.loop2
+	ld a, $62 ; empty bar
 
-.asm_3f436
+.skip
 	ld [hld], a
-	ld a, $62
+	ld a, $62 ; empty bar
 	dec c
-	jr nz, .asm_3f434
+	jr nz, .loop2
 
-.asm_3f43c
+.finish
 	ret
 ; 3f43d
 
-Function3f43d: ; 3f43d
+GetMonBackpic: ; 3f43d
 	ld a, [PlayerSubStatus4]
 	bit SUBSTATUS_SUBSTITUTE, a
-	ld hl, BattleAnimCmd_DD
-	jr nz, Function3f46f
+	ld hl, BattleAnimCmd_RaiseSub
+	jr nz, GetBackpic_DoAnim ; substitute
 
 Function3f447: ; 3f447
-	ld a, [wc6fe]
+	ld a, [wPlayerMinimized]
 	and a
-	ld hl, BattleAnimCmd_E2
-	jr nz, Function3f46f
+	ld hl, BattleAnimCmd_MinimizeOpp
+	jr nz, GetBackpic_DoAnim
 	ld a, [CurPartySpecies]
 	push af
 	ld a, [BattleMonSpecies]
@@ -8379,7 +8417,7 @@
 	ret
 ; 3f46f
 
-Function3f46f: ; 3f46f
+GetBackpic_DoAnim: ; 3f46f
 	ld a, [hBattleTurn]
 	push af
 	xor a
@@ -8391,17 +8429,17 @@
 	ret
 ; 3f47c
 
-Function3f47c: ; 3f47c
+GetMonFrontpic: ; 3f47c
 	ld a, [EnemySubStatus4]
 	bit SUBSTATUS_SUBSTITUTE, a
-	ld hl, BattleAnimCmd_DD
-	jr nz, Function3f4b4
+	ld hl, BattleAnimCmd_RaiseSub
+	jr nz, GetFrontpic_DoAnim
 
 Function3f486: ; 3f486
-	ld a, [wc6fa]
+	ld a, [wEnemyMinimized]
 	and a
-	ld hl, BattleAnimCmd_E2
-	jr nz, Function3f4b4
+	ld hl, BattleAnimCmd_MinimizeOpp
+	jr nz, GetFrontpic_DoAnim
 
 	ld a, [CurPartySpecies]
 	push af
@@ -8418,7 +8456,7 @@
 	ret
 ; 3f4b4
 
-Function3f4b4: ; 3f4b4
+GetFrontpic_DoAnim: ; 3f4b4
 	ld a, [hBattleTurn]
 	push af
 	call SetEnemyTurn
@@ -8440,9 +8478,9 @@
 
 	ld a, [TimeOfDayPal]
 	push af
-	call Function3f4dd
-	call Function3c000
-	call Function3f69e
+	call BattleIntro
+	call SendOutFirstMons
+	call ExitBattle
 	pop af
 	ld [TimeOfDayPal], a
 	scf
@@ -8450,13 +8488,14 @@
 ; 3f4d9
 
 
-Function3f4d9: ; 3f4d9
-	call Function3c000
+_SendOutFirstMons: ; 3f4d9
+; unreferenced
+	call SendOutFirstMons
 	ret
 ; 3f4dd
 
 
-Function3f4dd: ; 3f4dd
+BattleIntro: ; 3f4dd
 	callba MobileFn_106050 ; mobile
 	call LoadTrainerOrWildMonPic
 	xor a
@@ -8463,19 +8502,19 @@
 	ld [TempBattleMonSpecies], a
 	ld [wd0d2], a
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	callba PlayBattleMusic
 	callba ShowLinkBattleParticipants
 	callba FindFirstAliveMon
 	call DisableSpriteUpdates
 	callba ClearBattleRAM
-	call Function3f55e
-	call Function3f568
+	call InitEnemy
+	call BackUpVBGMap2
 	ld b, $0
 	call GetSGBLayout
 	ld hl, rLCDC
 	res 6, [hl]
-	call Function3fb6c
+	call InitBattleDisplay
 	call BattleStartMessage
 	ld hl, rLCDC
 	set 6, [hl]
@@ -8483,10 +8522,10 @@
 	ld [hBGMapMode], a
 	call EmptyBattleTextBox
 	hlcoord 9, 7
-	ld bc, 5 << 8 + 11
+	lb bc, 5, 11
 	call ClearBox
 	hlcoord 1, 0
-	ld bc, 4 << 8 + 10
+	lb bc, 4, 10
 	call ClearBox
 	call ClearSprites
 	ld a, [wBattleMode]
@@ -8509,20 +8548,20 @@
 	ret
 ; 3f55e
 
-Function3f55e: ; 3f55e
+InitEnemy: ; 3f55e
 	ld a, [OtherTrainerClass]
 	and a
-	jp nz, Function3f594 ; trainer
-	jp Function3f607 ; wild
+	jp nz, InitEnemyTrainer ; trainer
+	jp InitEnemyWildmon ; wild
 ; 3f568
 
-Function3f568: ; 3f568
+BackUpVBGMap2: ; 3f568
 	ld a, [rSVBK]
 	push af
-	ld a, $6
+	ld a, $6 ; BANK(w6_d000)
 	ld [rSVBK], a
 	ld hl, w6_d000
-	ld bc, $400
+	ld bc, $40 tiles ; VBGMap3 - VBGMap2
 	ld a, $2
 	call ByteFill
 	ld a, [rVBK]
@@ -8530,8 +8569,8 @@
 	ld a, $1
 	ld [rVBK], a
 	ld de, w6_d000
-	ld hl, VBGMap0
-	ld bc, $0f40
+	ld hl, VBGMap0 ; VBGMap2
+	lb bc, BANK(BackUpVBGMap2), $40
 	call Request2bpp
 	pop af
 	ld [rVBK], a
@@ -8540,7 +8579,7 @@
 	ret
 ; 3f594
 
-Function3f594: ; 3f594
+InitEnemyTrainer: ; 3f594
 	ld [TrainerClass], a
 	callba MobileFn_10606a
 	xor a
@@ -8558,7 +8597,7 @@
 	ld de, VTiles2
 	callab GetTrainerPic
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	dec a
 	ld [wc6e6], a
 	hlcoord 12, 0
@@ -8577,7 +8616,7 @@
 	ld b, a
 .partyloop
 	push bc
-	ld a, PartyMon1HP - PartyMon1
+	ld a, MON_HP
 	call GetPartyParamLocation
 	ld a, [hli]
 	or [hl]
@@ -8595,7 +8634,7 @@
 	ret
 ; 3f607
 
-Function3f607: ; 3f607
+InitEnemyWildmon: ; 3f607
 	ld a, $1
 	ld [wBattleMode], a
 	callba MobileFn_10605d
@@ -8612,18 +8651,18 @@
 	predef GetUnownLetter
 	ld a, [CurPartySpecies]
 	cp UNOWN
-	jr nz, .asm_3f648
+	jr nz, .skip_unown
 	ld a, [wdef4]
 	and a
-	jr nz, .asm_3f648
+	jr nz, .skip_unown
 	ld a, [UnownLetter]
 	ld [wdef4], a
-.asm_3f648
+.skip_unown
 	ld de, VTiles2
 	predef Function5108b
 	xor a
 	ld [TrainerClass], a
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 12, 0
 	lb bc, 7, 7
 	predef FillBox
@@ -8683,9 +8722,9 @@
 ; 3f69e
 
 
-Function3f69e: ; 3f69e
+ExitBattle: ; 3f69e
 	call Function3f6a5
-	call Function3f6d0
+	call CleanUpBattleRAM
 	ret
 ; 3f6a5
 
@@ -8693,7 +8732,7 @@
 	ld a, [wLinkMode]
 	and a
 	jr z, .not_linked
-	call Function3f759
+	call ShowLinkBattleParticipantsAfterEnd
 	ld c, 150
 	call DelayFrames
 	call Function3f77c
@@ -8703,7 +8742,7 @@
 	ld a, [wBattleResult]
 	and $f
 	ret nz
-	call Function3f71d
+	call CheckPayDay
 	xor a
 	ld [wd1e9], a
 	predef Function421e6
@@ -8711,7 +8750,7 @@
 	ret
 ; 3f6d0
 
-Function3f6d0: ; 3f6d0
+CleanUpBattleRAM: ; 3f6d0
 	call Function3f998
 	xor a
 	ld [Danger], a
@@ -8722,7 +8761,7 @@
 	ld [OtherTrainerClass], a
 	ld [wd266], a
 	ld [wd267], a
-	ld [wd232], a
+	ld [wForcedSwitch], a
 	ld [wd0d8], a
 	ld [wKeyItemsPocketCursor], a
 	ld [wItemsPocketCursor], a
@@ -8744,7 +8783,7 @@
 	ret
 ; 3f71d
 
-Function3f71d: ; 3f71d
+CheckPayDay: ; 3f71d
 	ld hl, wPayDayMoney
 	ld a, [hli]
 	or [hl]
@@ -8753,7 +8792,7 @@
 	ret z
 	ld a, [wc73d]
 	and a
-	jr z, .asm_3f73d
+	jr z, .okay
 	ld hl, wPayDayMoney + 2
 	sla [hl]
 	dec hl
@@ -8760,7 +8799,7 @@
 	rl [hl]
 	dec hl
 	rl [hl]
-	jr nc, .asm_3f73d
+	jr nc, .okay
 	ld a, $ff
 rept 2
 	ld [hli], a
@@ -8767,7 +8806,7 @@
 endr
 	ld [hl], a
 
-.asm_3f73d
+.okay
 	ld hl, wPayDayMoney + 2
 	ld de, Money + 2
 	call Function3d0be
@@ -8777,13 +8816,13 @@
 	bit 0, a
 	ret z
 	call ClearTileMap
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 3f759
 
-Function3f759: ; 3f759
+ShowLinkBattleParticipantsAfterEnd: ; 3f759
 	callba MobileFn_1060df
-	callba Function106187
+	callba BackupMobileEventIndex
 	ld a, [CurOTMon]
 	ld hl, OTPartyMon1Status
 	call GetPartyLocation
@@ -8795,54 +8834,60 @@
 ; 3f77c
 
 Function3f77c: ; 3f77c
-	callba Function3d2e0
-	jp c, Function3f80f
-	call Function3f830
-	jr nz, .asm_3f797
+	callba CheckMobileBattleError
+	jp c, .Mobile_InvalidBattle
+	call IsMobileBattle2
+	jr nz, .proceed
+
 	ld hl, wcd2a
 	bit 4, [hl]
-	jr z, .asm_3f797
-	callba Function2b930
+	jr z, .proceed
 
-.asm_3f797
+	callba DetermineLinkBattleResult
+
+.proceed
 	ld a, [wBattleResult]
 	and $f
 	cp $1
-	jr c, .asm_3f7ad
-	jr z, .asm_3f7b8
-	callba MobileFn_106107
+	jr c, .victory
+	jr z, .loss
+	callba MobileFn_SaveBattleResult_Draw
 	ld de, .Draw
-	jr .asm_3f7c3
+	jr .store_result
 
-.asm_3f7ad
-	callba MobileFn_1060fb
+.victory
+	callba MobileFn_SaveBattleResult_Win
 	ld de, .Win
-	jr .asm_3f7c3
+	jr .store_result
 
-.asm_3f7b8
-	callba MobileFn_106101
+.loss
+	callba MobileFn_SaveBattleResult_Lose
 	ld de, .Lose
-	jr .asm_3f7c3
+	jr .store_result
 
-.asm_3f7c3
+.store_result
 	hlcoord 6, 8
 	call PlaceString
-	callba Function106187
-	ld c, $c8
+	callba BackupMobileEventIndex
+	ld c, 200
 	call DelayFrames
+
 	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
+
 	call Function3fa42
 	call Function3f85f
+
 	call CloseSRAM
-	call Function3f830
-	jr z, .asm_3f7ee
-	call Functiona80
+
+	call IsMobileBattle2
+	jr z, .mobile
+	call WaitPressAorB_BlinkCursor
 	call ClearTileMap
 	ret
 
-.asm_3f7ee
-	ld c, $c8
+.mobile
+	ld c, 200
 	call DelayFrames
 	call ClearTileMap
 	ret
@@ -8857,11 +8902,11 @@
 ; 3f80f
 
 
-Function3f80f: ; 3f80f
+.Mobile_InvalidBattle: ; 3f80f
 	hlcoord 6, 8
 	ld de, .Invalid
 	call PlaceString
-	ld c, $c8
+	ld c, 200
 	call DelayFrames
 	call ClearTileMap
 	ret
@@ -8872,7 +8917,7 @@
 ; 3f830
 
 
-Function3f830: ; 3f830
+IsMobileBattle2: ; 3f830
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
 	ret
@@ -8882,7 +8927,9 @@
 Function3f836: ; 3f836
 	ld a, BANK(sLinkBattleStats)
 	call GetSRAMBank
+
 	call Function3f85f
+
 	call CloseSRAM
 	hlcoord 0, 0, AttrMap
 	xor a
@@ -8894,7 +8941,7 @@
 	call SetPalettes
 	ld c, $8
 	call DelayFrames
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	ret
 ; 3f85f
 
@@ -8920,7 +8967,7 @@
 	push hl
 	ld h, d
 	ld l, e
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld bc, $000a
 	call CopyBytes
 	ld a, $50
@@ -8928,7 +8975,7 @@
 	inc de
 	ld bc, $0006
 	call CopyBytes
-	ld de, DefaultFlypoint
+	ld de, wd002
 	pop hl
 	call PlaceString
 	pop hl
@@ -9145,16 +9192,16 @@
 Function3fa42: ; 3fa42
 	ld hl, wd276
 	ld de, StringBuffer1
-	ld bc, $0002
+	ld bc, 2
 	call CopyBytes
 	ld hl, wd26b
-	ld bc, $000a
+	ld bc, 10
 	call CopyBytes
-	ld hl, $b254
+	ld hl, s1_b254
 	call Function3faa0
-	ld hl, $b266
-	ld d, $5
-.asm_3fa62
+	ld hl, s1_b266
+	ld d, 5
+.loop
 	push hl
 rept 2
 	inc hl
@@ -9164,38 +9211,38 @@
 	dec hl
 endr
 	and a
-	jr z, .asm_3fa85
+	jr z, .copy
 	push de
-	ld bc, $000c
+	ld bc, 12
 	ld de, StringBuffer1
 	call CompareLong
 	pop de
 	pop hl
-	jr c, .asm_3fa99
-	ld bc, $0012
+	jr c, .done
+	ld bc, 18
 	add hl, bc
 	dec d
-	jr nz, .asm_3fa62
-	ld bc, $ffee
+	jr nz, .loop
+	ld bc, -18
 	add hl, bc
 	push hl
 
-.asm_3fa85
+.copy
 	ld d, h
 	ld e, l
 	ld hl, StringBuffer1
-	ld bc, $000c
+	ld bc, 12
 	call CopyBytes
-	ld b, $6
+	ld b, 6
 	xor a
-.asm_3fa93
+.loop2
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_3fa93
+	jr nz, .loop2
 	pop hl
 
-.asm_3fa99
+.done
 	call Function3faa0
 	call Function3fac8
 	ret
@@ -9205,13 +9252,13 @@
 	ld a, [wBattleResult]
 	and $f
 	cp $1
-	ld bc, $000d
-	jr c, .asm_3fab4
-	ld bc, $000f
-	jr z, .asm_3fab4
-	ld bc, $0011
+	ld bc, 13
+	jr c, .okay
+	ld bc, 15
+	jr z, .okay
+	ld bc, 17
 
-.asm_3fab4
+.okay
 	add hl, bc
 	call Function3fabe
 	ret nc
@@ -9235,9 +9282,9 @@
 
 Function3fac8: ; 3fac8
 	ld b, $5
-	ld hl, $b277
-	ld de, DefaultFlypoint
-.asm_3fad0
+	ld hl, s1_b277
+	ld de, wd002
+.loop
 	push bc
 	push de
 	push hl
@@ -9253,14 +9300,14 @@
 	ld a, c
 	ld [de], a
 	inc de
-	ld bc, $0012
+	ld bc, 18
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_3fad0
+	jr nz, .loop
 	ld b, $0
 	ld c, $1
-.asm_3faed
+.loop2
 	ld a, b
 rept 2
 	add b
@@ -9267,7 +9314,7 @@
 endr
 	ld e, a
 	ld d, $0
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	add hl, de
 	push hl
 	ld a, c
@@ -9276,7 +9323,7 @@
 endr
 	ld e, a
 	ld d, $0
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	add hl, de
 	ld d, h
 	ld e, l
@@ -9285,45 +9332,45 @@
 	ld c, $3
 	call StringCmp
 	pop bc
-	jr z, .asm_3fb10
-	jr nc, .asm_3fb1f
+	jr z, .equal
+	jr nc, .done
 
-.asm_3fb10
+.equal
 	inc c
 	ld a, c
 	cp $5
-	jr nz, .asm_3faed
+	jr nz, .loop2
 	inc b
 	ld c, b
 	inc c
 	ld a, b
 	cp $4
-	jr nz, .asm_3faed
+	jr nz, .loop2
 	ret
 
-.asm_3fb1f
+.done
 	push bc
 	ld a, b
-	ld bc, $0012
-	ld hl, $b266
+	ld bc, 18
+	ld hl, s1_b266
 	call AddNTimes
 	push hl
-	ld de, DefaultFlypoint
-	ld bc, $0012
+	ld de, wd002
+	ld bc, 18
 	call CopyBytes
 	pop hl
 	pop bc
 	push hl
 	ld a, c
-	ld bc, $0012
-	ld hl, $b266
+	ld bc, 18
+	ld hl, s1_b266
 	call AddNTimes
 	pop de
 	push hl
-	ld bc, $0012
+	ld bc, 18
 	call CopyBytes
-	ld hl, DefaultFlypoint
-	ld bc, $0012
+	ld hl, wd002
+	ld bc, 18
 	pop de
 	call CopyBytes
 	ret
@@ -9341,10 +9388,10 @@
 	ld a, [hld]
 	adc b
 	ld b, a
-	jr nc, .asm_3fb63
+	jr nc, .okay
 	inc e
 
-.asm_3fb63
+.okay
 	ld a, [hld]
 	add c
 	ld c, a
@@ -9356,21 +9403,21 @@
 	ret
 ; 3fb6c
 
-Function3fb6c: ; 3fb6c
-	call Function3fbf8
+InitBattleDisplay: ; 3fb6c
+	call .InitBackPic
 	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
+	ld b, 4
+	ld c, 18
 	call TextBox
 	callba MobileTextBorder
 	hlcoord 1, 5
 	lb bc, 3, 7
 	call ClearBox
-	call Functione51
-	call Function3ed9f
-	call Function3fbd6
+	call LoadStandardFont
+	call _LoadBattleFontsHPBar
+	call .BlankBGMap
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld [hSCY], a
 	ld a, $90
 	ld [hWY], a
@@ -9378,13 +9425,13 @@
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
-	callba Function4e980
+	callba SlideBattlePics
 	ld a, $1
 	ld [hBGMapMode], a
 	ld a, $31
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 2, 6
-	ld bc, $0606
+	lb bc, 6, 6
 	predef FillBox
 	xor a
 	ld [hWY], a
@@ -9401,32 +9448,35 @@
 	ret
 ; 3fbd6
 
-Function3fbd6: ; 3fbd6
+.BlankBGMap: ; 3fbd6
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	ld hl, w6_d000
-	ld bc, $400
-	ld a, $7f
+	ld bc, w6_d400 - w6_d000
+	ld a, " "
 	call ByteFill
+
 	ld de, w6_d000
 	ld hl, VBGMap0
-	lb bc, BANK(Function3fbd6), $40
+	lb bc, BANK(.BlankBGMap), $40
 	call Request2bpp
+
 	pop af
 	ld [rSVBK], a
 	ret
 ; 3fbf8
 
-Function3fbf8: ; 3fbf8
-	call GetBattleBackpic
-	call Function3fc30
+.InitBackPic: ; 3fbf8
+	call GetTrainerBackpic
+	call CopyBackpic
 	ret
 ; 3fbff
 
 
-GetBattleBackpic: ; 3fbff
+GetTrainerBackpic: ; 3fbff
 ; Load the player character's backpic (6x6) into VRAM starting from $9310.
 
 ; Special exception for Dude.
@@ -9461,7 +9511,7 @@
 ; 3fc30
 
 
-Function3fc30: ; 3fc30
+CopyBackpic: ; 3fc30
 	ld a, [rSVBK]
 	push af
 	ld a, $6
@@ -9476,9 +9526,9 @@
 	ld [rSVBK], a
 	call Function3fc5b
 	ld a, $31
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 2, 6
-	ld bc, $0606
+	lb bc, 6, 6
 	predef FillBox
 	ret
 ; 3fc5b
@@ -9489,10 +9539,10 @@
 	ld [hMapObjectIndexBuffer], a
 	ld b, $6
 	ld e, $a8
-.asm_3fc65
+.outer_loop
 	ld c, $3
 	ld d, $40
-.asm_3fc69
+.inner_loop
 	ld [hl], d
 	inc hl
 	ld [hl], e
@@ -9507,7 +9557,7 @@
 	add $8
 	ld d, a
 	dec c
-	jr nz, .asm_3fc69
+	jr nz, .inner_loop
 	ld a, [hMapObjectIndexBuffer]
 	add $3
 	ld [hMapObjectIndexBuffer], a
@@ -9515,7 +9565,7 @@
 	add $8
 	ld e, a
 	dec b
-	jr nz, .asm_3fc65
+	jr nz, .outer_loop
 	ret
 ; 3fc8b
 
@@ -9523,7 +9573,7 @@
 BattleStartMessage: ; 3fc8b
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3fcaa
+	jr z, .wild
 
 	ld de, SFX_SHINE
 	call PlaySFX
@@ -9535,11 +9585,11 @@
 	callba Battle_GetTrainerName
 
 	ld hl, WantsToBattleText
-	jr .asm_3fd0e
+	jr .PlaceBattleStartText
 
-.asm_3fcaa
-	call Function3da79
-	jr nc, .asm_3fcc2
+.wild
+	call BattleCheckEnemyShininess
+	jr nc, .not_shiny
 
 	xor a
 	ld [wcfca], a
@@ -9546,55 +9596,55 @@
 	ld a, 1
 	ld [hBattleTurn], a
 	ld a, 1
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld de, ANIM_SEND_OUT_MON
 	call Call_PlayBattleAnim
 
-.asm_3fcc2
+.not_shiny
 	callba CheckSleepingTreeMon
-	jr c, .asm_3fceb
+	jr c, .skip_cry
 
 	callba CheckBattleScene
-	jr c, .asm_3fce0
+	jr c, .cry_no_anim
 
 	hlcoord 12, 0
 	ld d, $0
-	ld e, $1
-	predef Functiond008e
-	jr .asm_3fceb
+	ld e, ANIM_MON_NORMAL
+	predef AnimateFrontpic
+	jr .skip_cry
 
-.asm_3fce0
+.cry_no_anim
 	ld a, $0f
 	ld [CryTracks], a
 	ld a, [TempEnemyMonSpecies]
 	call PlayStereoCry
 
-.asm_3fceb
+.skip_cry
 	ld a, [BattleType]
 	cp BATTLETYPE_FISH
-	jr nz, .asm_3fcfd
+	jr nz, .NotFishing
 
 	callba MobileFn_106086
 
 	ld hl, HookedPokemonAttackedText
-	jr .asm_3fd0e
+	jr .PlaceBattleStartText
 
-.asm_3fcfd
+.NotFishing
 	ld hl, PokemonFellFromTreeText
 	cp BATTLETYPE_TREE
-	jr z, .asm_3fd0e
+	jr z, .PlaceBattleStartText
 	ld hl, WildCelebiAppearedText
 	cp BATTLETYPE_CELEBI
-	jr z, .asm_3fd0e
+	jr z, .PlaceBattleStartText
 	ld hl, WildPokemonAppearedText
 
-.asm_3fd0e
+.PlaceBattleStartText
 	push hl
 	callba Function2c000
 	pop hl
 	call StdBattleTextBox
 
-	call Function3f830
+	call IsMobileBattle2
 	ret nz
 
 	ld c, $2
--- a/battle/effect_command_pointers.asm
+++ b/battle/effect_command_pointers.asm
@@ -1,180 +1,179 @@
-
 	dw 0 ; padding
 
 BattleCommandPointers: ; 3fd28
-	dw BattleCommand01 ; 34084
-	dw BattleCommand02 ; 343db
-	dw BattleCommand03 ; 34541
-	dw BattleCommand04 ; 34555
-	dw BattleCommand05 ; 34631
-	dw BattleCommand06 ; 352dc
-	dw BattleCommand_CalcDamageTypeMultiplier ; 346d2 - 07
-	dw BattleCommand08 ; 34cfd
-	dw BattleCommand09 ; 34d32
-	dw BattleCommand0a ; 34eee
-	dw BattleCommand0b ; 34f60
-	dw BattleCommand0c ; 35004
-	dw BattleCommand0d ; 35023
-	dw BattleCommand0e ; 3505e
-	dw BattleCommand0f ; 35175
-	dw BattleCommand10 ; 351ad
-	dw BattleCommand11 ; 351c0
-	dw BattleCommand12 ; 35250
-	dw BattleCommand13 ; 35eee
-	dw BattleCommand14 ; 35e5c
-	dw BattleCommand15 ; 35fff
-	dw BattleCommand16 ; 36008
-	dw BattleCommand17 ; 3608c
-	dw BattleCommand18 ; 36102
-	dw BattleCommand19 ; 36165
-	dw BattleCommand1a ; 37380
-	dw BattleCommand1b ; 373c9
-	dw BattleCommand1c ; 361e4
-	dw BattleCommand1d ; 362e3
-	dw BattleCommand1e ; 3705c
-	dw BattleCommand1f ; 3707f
-	dw BattleCommand20 ; 3710e
-	dw BattleCommand21 ; 36671
-	dw BattleCommand22 ; 366e5
-	dw BattleCommand23 ; 3680f
-	dw BattleCommand24 ; 369b6
-	dw BattleCommand25 ; 36aa0
-	dw BattleCommand26 ; 36af3
-	dw BattleCommand27 ; 36cb2
-	dw BattleCommand28 ; 36c7e
-	dw BattleCommand29 ; 36c98
-	dw BattleCommand2a ; 36d3b
-	dw BattleCommand2b ; 36d1d
-	dw BattleCommand2c ; 3713e
-	dw BattleCommand2d ; 371cd
-	dw BattleCommand2e ; 372fc
-	dw BattleCommand2f ; 35f2c
-	dw BattleCommand30 ; 36dc7
-	dw BattleCommand31 ; 36e7c
-	dw BattleCommand32 ; 36f0b
-	dw BattleCommand33 ; 36f46
-	dw BattleCommand34 ; 37418
-	dw BattleCommand35 ; 36f9d
-	dw BattleCommand36 ; 36fe1
-	dw BattleCommand37 ; 36fed
-	dw BattleCommand38 ; 37e85
-	dw BattleCommand39 ; 36b4d
-	dw BattleCommand3a ; 36b3a
-	dw BattleCommand3b ; 36c2d
+	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 BattleCommand3d ; 36751
-	dw BattleCommand3e ; 3671a
-	dw BattleCommand3f ; 35726
-	dw BattleCommand40 ; 35813
-	dw BattleCommand41 ; 35864
-	dw BattleCommand42 ; 35926
-	dw BattleCommand43 ; 359d0
-	dw BattleCommand44 ; 359e6
-	dw BattleCommand45 ; 35a53
-	dw BattleCommand46 ; 35a74
-	dw BattleCommand47 ; 35b16
-	dw BattleCommand48 ; 35b33
-	dw BattleCommand49 ; 35bff
-	dw BattleCommand4a ; 35c0f
-	dw BattleCommand4b ; 35c94
-	dw BattleCommand4c ; 35cc9
-	dw BattleCommand4d ; 36ac9
-	dw BattleCommand4e ; 346b2
-	dw BattleCommand4f ; 346cd
-	dw BattleCommand50 ; 37492
-	dw BattleCommand51 ; 37517
-	dw BattleCommand52 ; 37536
-	dw BattleCommand53 ; 37563
-	dw BattleCommand54 ; 37588
-	dw BattleCommand55 ; 37618
-	dw BattleCommand56 ; 37683
-	dw BattleCommand57 ; 376a0
-	dw BattleCommand58 ; 376c2
-	dw BattleCommand59 ; 376f8
-	dw BattleCommand5a ; 3766f
-	dw BattleCommand5b ; 37718
-	dw BattleCommand5c ; 37734
+	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_KingsRock ; 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 BattleCommand5e ; 37792
-	dw BattleCommand5f ; 377ce
-	dw BattleCommand60 ; 3784b
-	dw BattleCommand61 ; 37874
-	dw BattleCommand_DamageCalcWithStats ; 35612 - 62
-	dw BattleCommand63 ; 3790e
-	dw BattleCommand64 ; 37939
-	dw BattleCommand65 ; 37972
-	dw BattleCommand66 ; 37991
-	dw BattleCommand67 ; 379c9
-	dw BattleCommand68 ; 37b1d
-	dw BattleCommand69 ; 37b39
-	dw BattleCommand6a ; 37b74
-	dw BattleCommand6b ; 37b78
-	dw BattleCommand6c ; 37b7c
-	dw BattleCommand6d ; 37be8
-	dw BattleCommand6e ; 37bf4
-	dw BattleCommand6f ; 37c07
-	dw BattleCommand70 ; 361ac
-	dw BattleCommand71 ; 361b0
-	dw BattleCommand72 ; 361b4
-	dw BattleCommand73 ; 361b8
-	dw BattleCommand74 ; 361bc
-	dw BattleCommand75 ; 361c0
-	dw BattleCommand76 ; 361c4
-	dw BattleCommand77 ; 361c8
-	dw BattleCommand78 ; 361cc
-	dw BattleCommand79 ; 361d0
-	dw BattleCommand7a ; 361d4
-	dw BattleCommand7b ; 361d8
-	dw BattleCommand7c ; 361dc
-	dw BattleCommand7d ; 361e0
-	dw BattleCommand7e ; 362ad
-	dw BattleCommand7f ; 362b1
-	dw BattleCommand80 ; 362b5
-	dw BattleCommand81 ; 362b9
-	dw BattleCommand82 ; 362bd
-	dw BattleCommand83 ; 362c1
-	dw BattleCommand84 ; 362c5
-	dw BattleCommand85 ; 362c9
-	dw BattleCommand86 ; 362cd
-	dw BattleCommand87 ; 362d1
-	dw BattleCommand88 ; 362d5
-	dw BattleCommand89 ; 362d9
-	dw BattleCommand8a ; 362dd
-	dw BattleCommand8b ; 362e1
-	dw BattleCommand8c ; 363b8
-	dw BattleCommand8d ; 363e9
-	dw BattleCommand8e ; 3644c
-	dw BattleCommand8f ; 3646a
-	dw BattleCommand90 ; 34ecc
-	dw BattleCommand91 ; 34fdb
-	dw BattleCommand92 ; 34fd1
+	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 BattleCommand94 ; 36a82
-	dw BattleCommand95 ; 37c1a
-	dw BattleCommand96 ; 37c55
-	dw BattleCommand97 ; 36f1d
-	dw BattleCommand98 ; 36f25
-	dw BattleCommand99 ; 36f2f
-	dw BattleCommand9a ; 37c95
-	dw BattleCommand9b ; 37d0d
-	dw BattleCommand9c ; 37d34
-	dw BattleCommand9d ; 37ce6
-	dw BattleCommand9e ; 37d02
-	dw BattleCommand9f ; 37d94
-	dw BattleCommanda0 ; 36778
-	dw BattleCommanda1 ; 35461
-	dw BattleCommanda2 ; 3527b
-	dw BattleCommanda3 ; 34833
-	dw BattleCommanda4 ; 36500
+	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 BattleCommanda6 ; 365af
-	dw BattleCommanda7 ; 365c3
+	dw BattleCommand_RaiseSubNoAnim ; 365af
+	dw BattleCommand_LowerSubNoAnim ; 365c3
 	dw BattleCommanda8 ; 355b5
-	dw BattleCommand_IfAttackMissedResetDamage ; 355d5 - a9
-	dw BattleCommandaa ; 37e80
-	dw BattleCommandab ; 34f57
-	dw BattleCommandac ; 3658f
-	dw BattleCommandad ; 351a5
-	dw BattleCommandae ; 35197
-	dw BattleCommandaf ; 365a7
+	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/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -17,9 +17,9 @@
 	jr z, DoTurn
 
 	ld a, [wBattleAction]
-	cp $e
+	cp BATTLEACTION_E
 	jr z, DoTurn
-	cp NUM_MOVES
+	cp BATTLEACTION_SWITCH1
 	ret nc
 
 	; fallthrough
@@ -30,12 +30,12 @@
 ; Read in and execute the user's move effects for this turn.
 
 	xor a
-	ld [wc6b4], a
+	ld [wTurnEnded], a
 
 	; Effect command checkturn is called for every move.
 	call CheckTurn
 
-	ld a, [wc6b4]
+	ld a, [wTurnEnded]
 	and a
 	ret nz
 
@@ -119,7 +119,7 @@
 
 
 CheckTurn:
-BattleCommand01: ; 34084
+BattleCommand_CheckTurn: ; 34084
 ; checkturn
 
 ; Repurposed as hardcoded turn handling. Useless as a command.
@@ -128,12 +128,12 @@
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVar
 	inc a
-	jp z, Function34385
+	jp z, EndTurn
 
 	xor a
 	ld [AttackMissed], a
 	ld [EffectFailed], a
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld [AlreadyDisobeyed], a
 	ld [AlreadyFailed], a
 	ld [wc73e], a
@@ -156,7 +156,7 @@
 	ld hl, MustRechargeText
 	call StdBattleTextBox
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .no_recharge
 
@@ -185,7 +185,7 @@
 	ld hl, UpdatePlayerHUD
 	call CallBattleCore
 	ld a, $1
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	ld hl, PlayerSubStatus1
 	res SUBSTATUS_NIGHTMARE, [hl]
 	jr .not_asleep
@@ -202,7 +202,7 @@
 	jr z, .not_asleep
 
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_asleep
 
@@ -222,7 +222,7 @@
 	call StdBattleTextBox
 
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_frozen
 
@@ -236,7 +236,7 @@
 	call StdBattleTextBox
 
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_flinched
 
@@ -293,7 +293,7 @@
 
 	call HitConfusion
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_confused
 
@@ -317,7 +317,7 @@
 	ld hl, InfatuationText
 	call StdBattleTextBox
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_infatuated
 
@@ -334,7 +334,7 @@
 
 	call MoveDisabled
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .no_disabled_move
 
@@ -351,7 +351,7 @@
 	ld hl, FullyParalyzedText
 	call StdBattleTextBox
 	call CantMove
-	jp Function34385
+	jp EndTurn
 ; 341f0
 
 
@@ -371,20 +371,20 @@
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	cp FLY
-	jr z, .asm_3420f
+	jr z, .fly_dig
 
 	cp DIG
 	ret nz
 
-.asm_3420f
+.fly_dig
 	res SUBSTATUS_UNDERGROUND, [hl]
 	res SUBSTATUS_FLYING, [hl]
-	jp Function37ece
+	jp AppearUserRaiseSub
 ; 34216
 
 
 
-Function34216: ; 34216
+OpponentCantMove: ; 34216
 	call BattleCommand_SwitchTurn
 	call CantMove
 	jp BattleCommand_SwitchTurn
@@ -402,7 +402,7 @@
 	ld hl, MustRechargeText
 	call StdBattleTextBox
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .no_recharge
 
@@ -433,7 +433,7 @@
 	ld hl, UpdateEnemyHUD
 	call CallBattleCore
 	ld a, $1
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	ld hl, EnemySubStatus1
 	res SUBSTATUS_NIGHTMARE, [hl]
 	jr .not_asleep
@@ -446,7 +446,7 @@
 	cp SLEEP_TALK
 	jr z, .not_asleep
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_asleep
 
@@ -463,7 +463,7 @@
 	ld hl, FrozenSolidText
 	call StdBattleTextBox
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_frozen
 
@@ -477,7 +477,7 @@
 	call StdBattleTextBox
 
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_flinched
 
@@ -527,7 +527,7 @@
 
 	; 50% chance of hitting itself
 	call BattleRandom
-	cp $80
+	cp 1 + 50 percent
 	jr nc, .not_confused
 
 	; clear confusion-dependent substatus
@@ -538,9 +538,9 @@
 
 	ld hl, HurtItselfText
 	call StdBattleTextBox
-	call Function355dd
-	call BattleCommand_DamageCalcWithStats
-	call BattleCommand0a
+	call HitSelfInConfusion
+	call BattleCommand_DamageCalc
+	call BattleCommand_LowerSub
 	xor a
 	ld [wcfca], a
 
@@ -552,10 +552,10 @@
 	call z, PlayFXAnimID
 
 	ld c, $1
-	call Function35d1c
-	call BattleCommand0c
+	call EnemyHurtItself
+	call BattleCommand_RaiseSub
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_confused
 
@@ -573,13 +573,13 @@
 
 	; 50% chance of infatuation
 	call BattleRandom
-	cp $80
+	cp 1 + 50 percent
 	jr c, .not_infatuated
 
 	ld hl, InfatuationText
 	call StdBattleTextBox
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .not_infatuated
 
@@ -597,7 +597,7 @@
 	call MoveDisabled
 
 	call CantMove
-	jp Function34385
+	jp EndTurn
 
 .no_disabled_move
 
@@ -619,9 +619,9 @@
 ; 34385
 
 
-Function34385: ; 34385
+EndTurn: ; 34385
 	ld a, $1
-	ld [wc6b4], a
+	ld [wTurnEnded], a
 	jp ResetDamage
 ; 3438d
 
@@ -635,7 +635,7 @@
 
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVar
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetMoveName
 
 	ld hl, DisabledMoveText
@@ -651,9 +651,9 @@
 	xor a
 	ld [CriticalHit], a
 
-	call Function355dd
-	call BattleCommand_DamageCalcWithStats
-	call BattleCommand0a
+	call HitSelfInConfusion
+	call BattleCommand_DamageCalc
+	call BattleCommand_LowerSub
 
 	xor a
 	ld [wcfca], a
@@ -668,14 +668,14 @@
 	ld hl, UpdatePlayerHUD
 	call CallBattleCore
 	ld a, $1
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	ld c, $1
-	call Function35d7e
-	jp BattleCommand0c
+	call PlayerHurtItself
+	jp BattleCommand_RaiseSub
 ; 343db
 
 
-BattleCommand02: ; 343db
+BattleCommand_CheckObedience: ; 343db
 ; checkobedience
 
 	; Enemy can't disobey
@@ -683,7 +683,7 @@
 	and a
 	ret nz
 
-	call Function34548
+	call CheckUserIsCharging
 	ret nz
 
 	; If we've already checked this turn
@@ -706,7 +706,7 @@
 
 	; If the monster's id doesn't match the player's,
 	; some conditions need to be met.
-	ld a, PartyMon1ID - PartyMon1
+	ld a, MON_ID
 	call BattlePartyAttr
 
 	ld a, [PlayerID]
@@ -723,22 +723,22 @@
 	ld hl, JohtoBadges
 
 	; risingbadge
-	bit 7, [hl]
+	bit RISINGBADGE, [hl]
 	ld a, MAX_LEVEL + 1
 	jr nz, .getlevel
 
 	; stormbadge
-	bit 5, [hl]
+	bit STORMBADGE, [hl]
 	ld a, 70
 	jr nz, .getlevel
 
 	; fogbadge
-	bit 3, [hl]
+	bit FOGBADGE, [hl]
 	ld a, 50
 	jr nz, .getlevel
 
 	; hivebadge
-	bit 1, [hl]
+	bit HIVEBADGE, [hl]
 	ld a, 30
 	jr nz, .getlevel
 
@@ -1006,7 +1006,7 @@
 ; 34541
 
 
-BattleCommand03: ; 34541
+BattleCommand_UsedMoveText: ; 34541
 ; usedmovetext
 	callba DisplayUsedMoveText
 	ret
@@ -1013,13 +1013,13 @@
 ; 34548
 
 
-Function34548: ; 34548
+CheckUserIsCharging: ; 34548
 
 	ld a, [hBattleTurn]
 	and a
-	ld a, [wc732] ; player
+	ld a, [wPlayerCharging] ; player
 	jr z, .end
-	ld a, [wc733] ; enemy
+	ld a, [wEnemyCharging] ; enemy
 .end
 	and a
 	ret
@@ -1026,8 +1026,8 @@
 ; 34555
 
 
-BattleCommand04: ; 34555
-	call Function34548
+BattleCommand_DoTurn: ; 34555
+	call CheckUserIsCharging
 	ret nz
 
 	ld hl, BattleMonPP
@@ -1058,7 +1058,7 @@
 	and 1 << SUBSTATUS_IN_LOOP | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE
 	ret nz
 
-	call .asm_345ad
+	call .consume_pp
 	ld a, b
 	and a
 	jp nz, EndMoveEffect
@@ -1077,42 +1077,42 @@
 
 	ld hl, PartyMon1PP
 	ld a, [CurBattleMon]
-	jr z, .asm_345a4
+	jr z, .player
 
-; skip this part entirely if wildbattle
+; mimic this part entirely if wildbattle
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_345c5
+	jr z, .wild
 
 	ld hl, OTPartyMon1PP
 	ld a, [CurOTMon]
 
-.asm_345a4
+.player
 	call GetPartyLocation
 	push hl
-	call Function3460b
+	call CheckMimicUsed
 	pop hl
 	ret c
 
-.asm_345ad
+.consume_pp
 	ld a, [hBattleTurn]
 	and a
 	ld a, [CurMoveNum]
-	jr z, .asm_345b8
+	jr z, .okay
 	ld a, [CurEnemyMoveNum]
 
-.asm_345b8
+.okay
 	ld c, a
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
 	and $3f
-	jr z, .asm_345e3
+	jr z, .out_of_pp
 	dec [hl]
 	ld b, 0
 	ret
 
-.asm_345c5
+.wild
 	ld hl, EnemyMonMoves
 	ld a, [CurEnemyMoveNum]
 	ld c, a
@@ -1120,20 +1120,20 @@
 	add hl, bc
 	ld a, [hl]
 	cp MIMIC
-	jr z, .asm_345dc
-	ld hl, wc735
+	jr z, .mimic
+	ld hl, wWildMonMoves
 	add hl, bc
 	ld a, [hl]
 	cp MIMIC
 	ret z
 
-.asm_345dc
-	ld hl, wc739
-	call .asm_345ad
+.mimic
+	ld hl, wWildMonPP
+	call .consume_pp
 	ret
 
-.asm_345e3
-	call BattleCommandaa
+.out_of_pp
+	call BattleCommand_MoveDelay
 ; get move effect
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
@@ -1165,39 +1165,39 @@
 	db $ff
 ; 3460b
 
-Function3460b: ; 3460b
+CheckMimicUsed: ; 3460b
 	ld a, [hBattleTurn]
 	and a
 	ld a, [CurMoveNum]
-	jr z, .asm_34616
+	jr z, .player
 	ld a, [CurEnemyMoveNum]
 
-.asm_34616
+.player
 	ld c, a
-	ld a, 2
+	ld a, MON_MOVES
 	call UserPartyAttr
 
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVar
 	cp MIMIC
-	jr z, .asm_3462f
-
+	jr z, .mimic
+; 
 	ld b, 0
 	add hl, bc
 	ld a, [hl]
 	cp MIMIC
-	jr nz, .asm_3462f
+	jr nz, .mimic
 
 	scf
 	ret
 
-.asm_3462f
+.mimic
 	and a
 	ret
 ; 34631
 
 
-BattleCommand05: ; 34631
+BattleCommand_Critical: ; 34631
 ; critical
 
 ; Determine whether this attack's hit will be critical.
@@ -1297,10 +1297,10 @@
 ; 346b2
 
 
-BattleCommand4e: ; 346b2
+BattleCommand_TripleKick: ; 346b2
 ; triplekick
 
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	ld b, a
 	inc b
 	ld hl, CurDamage + 1
@@ -1308,7 +1308,7 @@
 	ld e, a
 	ld a, [hli]
 	ld d, a
-.asm_346be
+.next_kick
 	dec b
 	ret z
 	ld a, [hl]
@@ -1319,7 +1319,7 @@
 	ld [hli], a
 
 ; No overflow.
-	jr nc, .asm_346be
+	jr nc, .next_kick
 	ld a, $ff
 	ld [hld], a
 	ld [hl], a
@@ -1327,16 +1327,16 @@
 ; 346cd
 
 
-BattleCommand4f: ; 346cd
+BattleCommand_KickCounter: ; 346cd
 ; kickcounter
 
-	ld hl, wc689
+	ld hl, wKickCounter
 	inc [hl]
 	ret
 ; 346d2
 
 
-BattleCommand_CalcDamageTypeMultiplier: ; 346d2
+BattleCommand_Stab: ; 346d2
 ; STAB = Same Type Attack Bonus
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -1368,7 +1368,7 @@
 .go
 	ld a, BATTLE_VARS_MOVE_TYPE
 	call GetBattleVarAddr
-	ld [wd265], a
+	ld [wTypeMatchup], a
 
 	push hl
 	push de
@@ -1384,7 +1384,7 @@
 	pop bc
 	pop de
 
-	ld a, [wd265]
+	ld a, [wTypeMatchup]
 	cp b
 	jr z, .stab
 	cp c
@@ -1512,11 +1512,11 @@
 	jr .TypesLoop
 
 .end
-	call HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
-	ld a, [wd265]
+	call BattleCheckTypeMatchup
+	ld a, [wTypeMatchup]
 	ld b, a
 	ld a, [TypeModifier]
-	and $80
+	and %10000000
 	or b
 	ld [TypeModifier], a
 	ret
@@ -1523,11 +1523,11 @@
 ; 347c8
 
 
-HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn: ; 347c8
+BattleCheckTypeMatchup: ; 347c8
 	ld hl, EnemyMonType1
 	ld a, [hBattleTurn]
 	and a
-	jr z, Function347d3
+	jr z, CheckTypeMatchup
 	ld hl, BattleMonType1
 
 	; fallthrough
@@ -1534,7 +1534,7 @@
 ; 347d3
 
 
-Function347d3: ; 347d3
+CheckTypeMatchup: ; 347d3
 	push hl
 	push de
 	push bc
@@ -1545,7 +1545,7 @@
 	inc hl
 	ld c, [hl]
 	ld a, 10 ; 1.0
-	ld [wd265], a
+	ld [wTypeMatchup], a
 	ld hl, TypeMatchup
 .TypesLoop
 	ld a, [hli]
@@ -1579,7 +1579,7 @@
 	ld [hMultiplicand + 1], a
 	ld a, [hli]
 	ld [hMultiplicand + 2], a
-	ld a, [wd265]
+	ld a, [wTypeMatchup]
 	ld [hMultiplier], a
 	call Multiply
 	ld a, 10
@@ -1589,7 +1589,7 @@
 	call Divide
 	pop bc
 	ld a, [hQuotient + 2]
-	ld [wd265], a
+	ld [wTypeMatchup], a
 	jr .TypesLoop
 
 .End
@@ -1600,12 +1600,14 @@
 ; 34833
 
 
-BattleCommanda3: ; 34833
-	call HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
-	ld a, [wd265]
+BattleCommand_ResetTypeMatchup: ; 34833
+; Reset the type matchup multiplier to 1.0, if the type matchup is not 0.
+; If there is immunity in play, the move automatically misses.
+	call BattleCheckTypeMatchup
+	ld a, [wTypeMatchup]
 	and a
 	ld a, 10 ; 1.0
-	jr nz, .skip
+	jr nz, .reset
 	call ResetDamage
 	xor a
 	ld [TypeModifier], a
@@ -1612,680 +1614,20 @@
 	inc a
 	ld [AttackMissed], a
 	ret
-.skip
-	ld [wd265], a
+
+.reset
+	ld [wTypeMatchup], a
 	ret
 ; 3484e
 
+INCLUDE "battle/ai/switch.asm"
 
-Function3484e: ; 3484e
-	push hl
-	push de
-	push bc
-	ld a, 10
-	ld [wc716], a
-	ld hl, PlayerUsedMoves
-	ld a, [hl]
-	and a
-	jr z, .unknown_moves
-
-	ld d, NUM_MOVES
-	ld e, 0
-.loop
-	ld a, [hli]
-	and a
-	jr z, .exit
-	push hl
-	dec a
-	ld hl, Moves + MOVE_POWER
-	call GetMoveAttr
-	and a
-	jr z, .next
-
-	inc hl
-	call GetMoveByte
-	ld hl, EnemyMonType
-	call Function347d3
-	ld a, [wd265]
-	cp 10 + 1 ; 1.0 + 0.1
-	jr nc, .super_effective
-	and a
-	jr z, .next
-	cp 10 ; 1.0
-	jr nc, .neutral
-
-.not_very_effective
-	ld a, e
-	cp 1 ; 0.1
-	jr nc, .next
-	ld e, 1
-	jr .next
-
-.neutral
-	ld e, 2
-	jr .next
-
-.super_effective
-	call Function34931
-	pop hl
-	jr .done
-
-.next
-	pop hl
-	dec d
-	jr nz, .loop
-
-.exit
-	ld a, e
-	cp 2
-	jr z, .done
-	call Function34939
-	ld a, e
-	and a
-	jr nz, .done
-	call Function34939
-	jr .done
-
-.unknown_moves
-	ld a, [BattleMonType1]
-	ld b, a
-	ld hl, EnemyMonType1
-	call Function347d3
-	ld a, [wd265]
-	cp 10 + 1 ; 1.0 + 0.1
-	jr c, .ok
-	call Function34931
-.ok
-	ld a, [BattleMonType2]
-	cp b
-	jr z, .ok2
-	call Function347d3
-	ld a, [wd265]
-	cp 10 + 1 ; 1.0 + 0.1
-	jr c, .ok2
-	call Function34931
-.ok2
-
-.done
-	call Function348de
-	pop bc
-	pop de
-	pop hl
-	ret
-; 348de
-
-
-Function348de: ; 348de
-	ld de, EnemyMonMoves
-	ld b, NUM_MOVES + 1
-	ld c, 0
-
-	ld a, [wd265]
-	push af
-.loop
-	dec b
-	jr z, .exit
-
-	ld a, [de]
-	and a
-	jr z, .exit
-
-	inc de
-	dec a
-	ld hl, Moves + MOVE_POWER
-	call GetMoveAttr
-	and a
-	jr z, .loop
-
-	inc hl
-	call GetMoveByte
-	ld hl, BattleMonType1
-	call Function347d3
-
-	ld a, [wd265]
-	; immune
-	and a
-	jr z, .loop
-
-	; not very effective
-	inc c
-	cp 10
-	jr c, .loop
-
-	; neutral
-rept 5
-	inc c
-endr
-	cp 10
-	jr z, .loop
-
-	; super effective
-	ld c, 100
-	jr .loop
-
-.exit
-	pop af
-	ld [wd265], a
-
-	ld a, c
-	and a
-	jr z, .doubledown ; double down
-	cp 5
-	jr c, Function34931 ; down
-	cp 100
-	ret c
-	jr Function34939 ; up
-
-.doubledown
-	call Function34931
-	
-	; fallthrough
-; 34931
-
-
-Function34931: ; 34931
-	ld a, [wc716]
-	dec a
-	ld [wc716], a
-	ret
-; 34939
-
-
-Function34939: ; 34939
-	ld a, [wc716]
-	inc a
-	ld [wc716], a
-	ret
-; 34941
-
-
-Function34941: ; 34941
-	xor a
-	ld [wc717], a
-	call CountEnemyAliveMons
-	ret c
-
-	ld a, [EnemySubStatus1]
-	bit SUBSTATUS_PERISH, a
-	jr z, .no_perish
-
-	ld a, [EnemyPerishCount]
-	cp 1
-	jr nz, .no_perish
-
-	; Perish count is 1
-
-	call CountEnemyAliveMons
-	call Function34b77
-	call Function34b20
-	call Function34a85
-
-	ld a, e
-	cp 2
-	jr nz, .asm_34971
-
-	ld a, [wc716]
-	add $30
-	ld [wc717], a
-	ret
-
-.asm_34971
-	call CountEnemyAliveMons
-	sla c
-	sla c
-	ld b, $ff
-
-.asm_3497a
-	inc b
-	sla c
-	jr nc, .asm_3497a
-
-	ld a, b
-	add $30
-	ld [wc717], a
-	ret
-
-.no_perish
-
-	call Function3484e
-	ld a, [wc716]
-	cp 11
-	ret nc
-
-	ld a, [LastEnemyCounterMove]
-	and a
-	jr z, .asm_349d2
-
-	call Function34a2a
-	ld a, [wc716]
-	and a
-	jr z, .asm_349d2
-
-	ld c, a
-	call Function34aa7
-	ld a, [wc716]
-	cp $ff
-	ret z
-
-	ld b, a
-	ld a, e
-	cp 2
-	jr z, .asm_349be
-
-	call Function3484e
-	ld a, [wc716]
-	cp 10
-	ret nc
-
-	ld a, b
-	add $10
-	ld [wc717], a
-	ret
-
-.asm_349be
-	ld c, $10
-	call Function3484e
-	ld a, [wc716]
-	cp 10
-	jr nc, .asm_349cc
-	ld c, $20
-
-.asm_349cc
-	ld a, b
-	add c
-	ld [wc717], a
-	ret
-
-.asm_349d2
-	call Function3484e
-	ld a, [wc716]
-	cp 10
-	ret nc
-
-	call CountEnemyAliveMons
-	call Function34b77
-	call Function34b20
-	call Function34a85
-
-	ld a, e
-	cp $2
-	ret nz
-
-	ld a, [wc716]
-	add $10
-	ld [wc717], a
-	ret
-; 349f4
-
-
-CountEnemyAliveMons: ; 349f4
-	ld a, [OTPartyCount]
-	cp 2
-	jr c, .only_one
-
-	ld d, a
-	ld e, 0
-	ld b, 1 << (PARTY_LENGTH - 1)
-	ld c, 0
-	ld hl, OTPartyMon1HP
-
-.loop
-	ld a, [CurOTMon]
-	cp e
-	jr z, .next
-
-	push bc
-	ld b, [hl]
-	inc hl
-	ld a, [hld]
-	or b
-	pop bc
-	jr z, .next
-
-	ld a, c
-	or b
-	ld c, a
-
-.next
-	srl b
-	push bc
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop bc
-	inc e
-	dec d
-	jr nz, .loop
-
-	ld a, c
-	and a
-	jr nz, .more_than_one
-
-.only_one
-	scf
-	ret
-
-.more_than_one
-	and a
-	ret
-; 34a2a
-
-
-Function34a2a: ; 34a2a
-	ld hl, OTPartyMon1
-	ld a, [OTPartyCount]
-	ld b, a
-	ld c, 1 << (PARTY_LENGTH - 1)
-	ld d, 0
-	xor a
-	ld [wc716], a
-
-.asm_34a39
-	ld a, [CurOTMon]
-	cp d
-	push hl
-	jr z, .asm_34a77
-
-	push hl
-	push bc
-	ld bc, PartyMon1HP - PartyMon1
-	add hl, bc
-	pop bc
-	ld a, [hli]
-	or [hl]
-	pop hl
-	jr z, .asm_34a77
-
-	ld a, [hl]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, [LastEnemyCounterMove]
-	dec a
-	ld hl, Moves + MOVE_POWER
-	call GetMoveAttr
-	and a
-	jr z, .asm_34a77
-
-	inc hl
-	call GetMoveByte
-	ld hl, BaseType
-	call Function347d3
-	ld a, [wd265]
-	and a
-	jr nz, .asm_34a77
-
-	ld a, [wc716]
-	or c
-	ld [wc716], a
-.asm_34a77
-	pop hl
-	dec b
-	ret z
-
-	push bc
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop bc
-
-	inc d
-	srl c
-	jr .asm_34a39
-; 34a85
-
-
-Function34a85: ; 34a85
-	push bc
-	ld a, [OTPartyCount]
-	ld e, a
-	ld hl, OTPartyMon1HP
-	ld b, 1 << (PARTY_LENGTH - 1)
-	ld c, 0
-.asm_34a91
-	ld a, [hli]
-	or [hl]
-	jr z, .asm_34a98
-
-	ld a, b
-	or c
-	ld c, a
-
-.asm_34a98
-	srl b
-	push bc
-	ld bc, PartyMon2HP - (PartyMon1HP + 1)
-	add hl, bc
-	pop bc
-	dec e
-	jr nz, .asm_34a91
-
-	ld a, c
-	pop bc
-
-	and c
-	ld c, a
-
-	; fallthrough
-; 34aa7
-
-Function34aa7: ; 34aa7
-
-	ld a, $ff
-	ld [wc716], a
-	ld hl, OTPartyMon1Moves
-	ld b, 1 << (PARTY_LENGTH - 1)
-	ld d, 0
-	ld e, 0
-.asm_34ab5
-	ld a, b
-	and c
-	jr z, .asm_34b00
-
-	push hl
-	push bc
-	ld b, NUM_MOVES
-	ld c, 0
-.asm_34abf
-	ld a, [hli]
-	and a
-	push hl
-	jr z, .asm_34aef
-
-	dec a
-	ld hl, Moves + MOVE_POWER
-	call GetMoveAttr
-	and a
-	jr z, .asm_34ae9
-
-	inc hl
-	call GetMoveByte
-	ld hl, BattleMonType1
-	call Function347d3
-	ld a, [wd265]
-	cp 10
-	jr c, .asm_34ae9
-
-	ld e, 1
-	cp 11
-	jr c, .asm_34ae9
-
-	ld e, 2
-	jr .asm_34aef
-
-.asm_34ae9
-	pop hl
-	dec b
-	jr nz, .asm_34abf
-
-	jr .asm_34af0
-
-.asm_34aef
-	pop hl
-.asm_34af0
-	ld a, e
-	pop bc
-	pop hl
-	cp $2
-	jr z, .asm_34b0e
-
-	cp $1
-	jr nz, .asm_34b00
-
-	ld a, d
-	or b
-	ld d, a
-	jr .asm_34b00
-
-.asm_34b00
-	push bc
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop bc
-	srl b
-	jr nc, .asm_34ab5
-
-	ld a, d
-	ld b, a
-	and a
-	ret z
-
-.asm_34b0e
-	push bc
-	sla b
-	sla b
-	ld c, $ff
-.asm_34b15
-	inc c
-	sla b
-	jr nc, .asm_34b15
-
-	ld a, c
-	ld [wc716], a
-	pop bc
-	ret
-; 34b20
-
-
-Function34b20: ; 34b20
-	push bc
-	ld hl, OTPartySpecies
-	ld b, 1 << (PARTY_LENGTH - 1)
-	ld c, 0
-
-.asm_34b28
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_34b72
-
-	push hl
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, [LastEnemyCounterMove]
-	and a
-	jr z, .asm_34b4a
-
-	dec a
-	ld hl, Moves + MOVE_POWER
-	call GetMoveAttr
-	and a
-	jr z, .asm_34b4a
-
-	inc hl
-	call GetMoveByte
-	jr .asm_34b5d
-
-.asm_34b4a
-	ld a, [BattleMonType1]
-	ld hl, BaseType
-	call Function347d3
-	ld a, [wd265]
-	cp $b
-	jr nc, .asm_34b6d
-	ld a, [BattleMonType2]
-
-.asm_34b5d
-	ld hl, BaseType
-	call Function347d3
-	ld a, [wd265]
-	cp $b
-	jr nc, .asm_34b6d
-
-	ld a, b
-	or c
-	ld c, a
-
-.asm_34b6d
-	srl b
-	pop hl
-	jr .asm_34b28
-
-.asm_34b72
-	ld a, c
-	pop bc
-	and c
-	ld c, a
-	ret
-; 34b77
-
-
-Function34b77: ; 34b77
-	push bc
-	ld de, OTPartySpecies
-	ld b, 1 << (PARTY_LENGTH - 1)
-	ld c, 0
-	ld hl, OTPartyMon1HP
-
-.loop
-	ld a, [de]
-	inc de
-	cp $ff
-	jr z, .done
-
-	push hl
-	push bc
-	ld b, [hl]
-	inc hl
-	ld c, [hl]
-rept 2
-	inc hl
-endr
-	srl c
-	rl b
-	srl c
-	rl b
-	ld a, [hld]
-	cp c
-	ld a, [hl]
-	sbc b
-	pop bc
-	jr nc, .next
-
-	ld a, b
-	or c
-	ld c, a
-
-.next
-	srl b
-	pop hl
-	push bc
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop bc
-	jr .loop
-
-.done
-	ld a, c
-	pop bc
-	and c
-	ld c, a
-	ret
-; 34bb1
-
-
 TypeMatchup: ; 34bb1
 INCLUDE "battle/type_matchup.asm"
 ; 34cfd
 
 
-BattleCommand08: ; 34cfd
+BattleCommand_DamageVariation: ; 34cfd
 ; damagevariation
 
 ; Modify the damage spread between 85% and 100%.
@@ -2340,7 +1682,7 @@
 ; 34d32
 
 
-BattleCommand09: ; 34d32
+BattleCommand_CheckHit: ; 34d32
 ; checkhit
 
 	call .DreamEater
@@ -2624,9 +1966,9 @@
 	ld a, [hQuotient + 1]
 	or b
 	jr nz, .asm_34ea2
-	ld [$ffb5], a
+	ld [hQuotient + 1], a
 	ld a, $1
-	ld [$ffb6], a
+	ld [hQuotient + 2], a
 
 .asm_34ea2
 	ld b, c
@@ -2633,9 +1975,9 @@
 	dec d
 	jr nz, .asm_34e7a
 
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	and a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	jr z, .asm_34eaf
 	ld a, $ff
 
@@ -2662,7 +2004,7 @@
 ; 34ecc
 
 
-BattleCommand90: ; 34ecc
+BattleCommand_EffectChance: ; 34ecc
 ; effectchance
 
 	xor a
@@ -2691,7 +2033,7 @@
 ; 34eee
 
 
-BattleCommand0a: ; 34eee
+BattleCommand_LowerSub: ; 34eee
 ; lowersub
 
 	ld a, BATTLE_VARS_SUBSTATUS4
@@ -2702,57 +2044,57 @@
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVar
 	bit SUBSTATUS_CHARGED, a
-	jr nz, .asm_34f18
+	jr nz, .already_charged
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_RAZOR_WIND
-	jr z, .asm_34f21
+	jr z, .charge_turn
 	cp EFFECT_SKY_ATTACK
-	jr z, .asm_34f21
+	jr z, .charge_turn
 	cp EFFECT_SKULL_BASH
-	jr z, .asm_34f21
+	jr z, .charge_turn
 	cp EFFECT_SOLARBEAM
-	jr z, .asm_34f21
+	jr z, .charge_turn
 	cp EFFECT_FLY
-	jr z, .asm_34f21
+	jr z, .charge_turn
 
-.asm_34f18
+.already_charged
 	call .Rampage
-	jr z, .asm_34f21
+	jr z, .charge_turn
 
-	call Function34548
+	call CheckUserIsCharging
 	ret nz
 
-.asm_34f21
-	call Function37ed5
-	jr c, .asm_34f36
+.charge_turn
+	call _CheckBattleScene
+	jr c, .mimic_anims
 
 	xor a
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
 	inc a
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld a, SUBSTITUTE
-	jp Function37e44
+	jp LoadAnim
 
-.asm_34f36
-	call BattleCommanda7
-	jp BattleCommandaa
+.mimic_anims
+	call BattleCommand_LowerSubNoAnim
+	jp BattleCommand_MoveDelay
 
 .Rampage
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_ROLLOUT
-	jr z, .asm_34f4d
+	jr z, .rollout_rampage
 	cp EFFECT_RAMPAGE
-	jr z, .asm_34f4d
+	jr z, .rollout_rampage
 
 	ld a, 1
 	and a
 	ret
 
-.asm_34f4d
+.rollout_rampage
 	ld a, [wc73e]
 	and a
 	ld a, 0
@@ -2761,45 +2103,45 @@
 ; 34f57
 
 
-BattleCommandab: ; 34f57
+BattleCommand_HitTarget: ; 34f57
 ; hittarget
-	call BattleCommand0a
-	call BattleCommand0b
-	jp BattleCommand0c
+	call BattleCommand_LowerSub
+	call BattleCommand_HitTargetNoSub
+	jp BattleCommand_RaiseSub
 ; 34f60
 
 
-BattleCommand0b: ; 34f60
+BattleCommand_HitTargetNoSub: ; 34f60
 	ld a, [AttackMissed]
 	and a
-	jp nz, BattleCommandaa
+	jp nz, BattleCommand_MoveDelay
 
 	ld a, [hBattleTurn]
 	and a
 	ld de, PlayerRolloutCount
-	ld a, 1
-	jr z, .asm_34f76
+	ld a, BATTLEANIM_ENEMY_DAMAGE
+	jr z, .got_rollout_count
 	ld de, EnemyRolloutCount
-	ld a, 4
+	ld a, BATTLEANIM_PLAYER_DAMAGE
 
-.asm_34f76
+.got_rollout_count
 	ld [wcfca], a
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_MULTI_HIT
-	jr z, .asm_34fb0
+	jr z, .multihit
 	cp EFFECT_CONVERSION
-	jr z, .asm_34fb0
+	jr z, .conversion
 	cp EFFECT_DOUBLE_HIT
-	jr z, .asm_34fb0
+	jr z, .doublehit
 	cp EFFECT_TWINEEDLE
-	jr z, .asm_34fb0
+	jr z, .twineedle
 	cp EFFECT_TRIPLE_KICK
-	jr z, .asm_34f96
+	jr z, .triplekick
 	xor a
-	ld [wc689], a
+	ld [wKickCounter], a
 
-.asm_34f96
+.triplekick
 
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -2810,18 +2152,21 @@
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	cp FLY
-	jr z, .asm_34fad
+	jr z, .fly_dig
 	cp DIG
 	ret nz
 
-.asm_34fad
+.fly_dig
 ; clear sprite
-	jp Function37ec7
-.asm_34fb0
-	ld a, [wc689]
+	jp AppearUserLowerSub
+.multihit
+.conversion
+.doublehit
+.twineedle
+	ld a, [wKickCounter]
 	and 1
 	xor 1
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld a, [de]
 	cp $1
 	push af
@@ -2837,35 +2182,35 @@
 ; 34fd1
 
 
-BattleCommand92: ; 34fd1
+BattleCommand_StatUpAnim: ; 34fd1
 	ld a, [AttackMissed]
 	and a
-	jp nz, BattleCommandaa
+	jp nz, BattleCommand_MoveDelay
 
 	xor a
-	jr BattleCommand91_92
+	jr BattleCommand_StatUpDownAnim
 ; 34fdb
 
 
-BattleCommand91: ; 34fdb
+BattleCommand_StatDownAnim: ; 34fdb
 	ld a, [AttackMissed]
 	and a
-	jp nz, BattleCommandaa
+	jp nz, BattleCommand_MoveDelay
 
 	ld a, [hBattleTurn]
 	and a
-	ld a, 2
-	jr z, BattleCommand91_92
-	ld a, 5
+	ld a, BATTLEANIM_ENEMY_STAT_DOWN
+	jr z, BattleCommand_StatUpDownAnim
+	ld a, BATTLEANIM_WOBBLE
 
 	; fallthrough
 ; 34feb
 
 
-BattleCommand91_92: ; 34feb
+BattleCommand_StatUpDownAnim: ; 34feb
 	ld [wcfca], a
 	xor a
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	ld e, a
@@ -2884,7 +2229,7 @@
 ; 35004
 
 
-BattleCommand0c: ; 35004
+BattleCommand_RaiseSub: ; 35004
 ; raisesub
 
 	ld a, BATTLE_VARS_SUBSTATUS4
@@ -2892,33 +2237,36 @@
 	bit SUBSTATUS_SUBSTITUTE, a
 	ret z
 
-	call Function37ed5
-	jp c, BattleCommanda6
+	call _CheckBattleScene
+	jp c, BattleCommand_RaiseSubNoAnim
 
 	xor a
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
 	ld a, $2
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld a, SUBSTITUTE
-	jp Function37e44
+	jp LoadAnim
 ; 35023
 
 
-BattleCommand0d: ; 35023
-; resulttext
+BattleCommand_FailureText: ; 35023
+; failuretext
+; If the move missed or failed, load the appropriate
+; text, and end the effects of multi-turn or multi-
+; hit moves.
 	ld a, [AttackMissed]
 	and a
 	ret z
 
-	call Function350e4
+	call GetFailureResultText
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVarAddr
 
 	cp FLY
-	jr z, .asm_3504f
+	jr z, .fly_dig
 	cp DIG
-	jr z, .asm_3504f
+	jr z, .fly_dig
 
 ; Move effect:
 	inc hl
@@ -2925,86 +2273,86 @@
 	ld a, [hl]
 
 	cp EFFECT_MULTI_HIT
-	jr z, .asm_35049
+	jr z, .multihit
 	cp EFFECT_DOUBLE_HIT
-	jr z, .asm_35049
+	jr z, .multihit
 	cp EFFECT_TWINEEDLE
-	jr z, .asm_35049
+	jr z, .multihit
 	jp EndMoveEffect
 
-.asm_35049
-	call BattleCommand0c
+.multihit
+	call BattleCommand_RaiseSub
 	jp EndMoveEffect
 
-.asm_3504f
+.fly_dig
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	res SUBSTATUS_UNDERGROUND, [hl]
 	res SUBSTATUS_FLYING, [hl]
-	call Function37ece
+	call AppearUserRaiseSub
 	jp EndMoveEffect
 ; 3505e
 
 
-BattleCommand0e: ; 3505e
+BattleCommand_CheckFaint: ; 3505e
 ; checkfaint
 
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
 	bit SUBSTATUS_ENDURE, a
-	jr z, .asm_35072
-	call BattleCommand4b
+	jr z, .not_enduring
+	call BattleCommand_FalseSwipe
 	ld b, $0
-	jr nc, .asm_3508b
+	jr nc, .okay
 	ld b, $1
-	jr .asm_3508b
+	jr .okay
 
-.asm_35072
+.not_enduring
 	call GetOpponentItem
 	ld a, b
 	cp HELD_FOCUS_BAND
 	ld b, $0
-	jr nz, .asm_3508b
+	jr nz, .okay
 	call BattleRandom
 	cp c
-	jr nc, .asm_3508b
-	call BattleCommand4b
+	jr nc, .okay
+	call BattleCommand_FalseSwipe
 	ld b, $0
-	jr nc, .asm_3508b
+	jr nc, .okay
 	ld b, $2
-.asm_3508b
+.okay
 	push bc
-	call .asm_50bb
+	call .check_sub
 	ld c, $0
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_3509b
-	call Function35d1c
-	jr .asm_3509e
+	jr nz, .damage_player
+	call EnemyHurtItself
+	jr .done_damage
 
-.asm_3509b
-	call Function35d7e
+.damage_player
+	call PlayerHurtItself
 
-.asm_3509e
+.done_damage
 	pop bc
 	ld a, b
 	and a
 	ret z
 	dec a
-	jr nz, .asm_350ab
+	jr nz, .not_enduring2
 	ld hl, EnduredText
 	jp StdBattleTextBox
 
-.asm_350ab
+.not_enduring2
 	call GetOpponentItem
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 
 	ld hl, HungOnText
 	jp StdBattleTextBox
 
-.asm_50bb
+.check_sub
 	ld a, BATTLE_VARS_SUBSTATUS4_OPP
 	call GetBattleVar
 	bit SUBSTATUS_SUBSTITUTE, a
@@ -3013,10 +2361,10 @@
 	ld de, PlayerDamageTaken + 1
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_350ce
+	jr nz, .damage_taken
 	ld de, EnemyDamageTaken + 1
 
-.asm_350ce
+.damage_taken
 	ld a, [CurDamage + 1]
 	ld b, a
 	ld a, [de]
@@ -3037,26 +2385,26 @@
 ; 350e4
 
 
-Function350e4: ; 350e4
+GetFailureResultText: ; 350e4
 	ld hl, DoesntAffectText
 	ld de, DoesntAffectText
 	ld a, [TypeModifier]
 	and $7f
-	jr z, .asm_35110
+	jr z, .got_text
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_FUTURE_SIGHT
 	ld hl, ButItFailedText
 	ld de, ItFailedText
-	jr z, .asm_35110
+	jr z, .got_text
 	ld hl, AttackMissedText
 	ld de, AttackMissed2Text
 	ld a, [CriticalHit]
 	cp $ff
-	jr nz, .asm_35110
+	jr nz, .got_text
 	ld hl, UnaffectedText
-.asm_35110
-	call Function35157
+.got_text
+	call FailText_CheckOpponentProtect
 	xor a
 	ld [CriticalHit], a
 
@@ -3064,9 +2412,11 @@
 	call GetBattleVar
 	cp EFFECT_JUMP_KICK
 	ret nz
+
 	ld a, [TypeModifier]
 	and $7f
 	ret z
+
 	ld hl, CurDamage
 	ld a, [hli]
 	ld b, [hl]
@@ -3078,29 +2428,29 @@
 	dec hl
 	ld [hli], a
 	or b
-	jr nz, .asm_3513e
+	jr nz, .do_at_least_1_damage
 	inc a
 	ld [hl], a
-.asm_3513e
+.do_at_least_1_damage
 	ld hl, CrashedText
 	call StdBattleTextBox
 	ld a, $1
-	ld [wc689], a
-	call Function37e36
+	ld [wKickCounter], a
+	call LoadMoveAnim
 	ld c, $1
 	ld a, [hBattleTurn]
 	and a
-	jp nz, Function35d1c
-	jp Function35d7e
+	jp nz, EnemyHurtItself
+	jp PlayerHurtItself
 
-Function35157: ; 35157
+FailText_CheckOpponentProtect: ; 35157
 	ld a, BATTLE_VARS_SUBSTATUS1_OPP
 	call GetBattleVar
 	bit SUBSTATUS_PROTECT, a
-	jr z, .asm_35162
+	jr z, .not_protected
 	ld h, d
 	ld l, e
-.asm_35162
+.not_protected
 	jp StdBattleTextBox
 ; 35165
 
@@ -3117,7 +2467,7 @@
 ; 35175
 
 
-BattleCommand0f: ; 35175
+BattleCommand_CriticalText: ; 35175
 ; criticaltext
 ; Prints the message for critical hits or one-hit KOs.
 
@@ -3150,7 +2500,7 @@
 ; 35197
 
 
-BattleCommandae: ; 35197
+BattleCommand_StartLoop: ; 35197
 ; startloop
 
 	ld hl, PlayerRolloutCount
@@ -3165,7 +2515,7 @@
 ; 351a5
 
 
-BattleCommandad: ; 351a5
+BattleCommand_SuperEffectiveLoopText: ; 351a5
 ; supereffectivelooptext
 
 	ld a, BATTLE_VARS_SUBSTATUS3
@@ -3177,7 +2527,7 @@
 ; 351ad
 
 
-BattleCommand10: ; 351ad
+BattleCommand_SuperEffectiveText: ; 351ad
 ; supereffectivetext
 
 	ld a, [TypeModifier]
@@ -3192,7 +2542,7 @@
 ; 351c0
 
 
-BattleCommand11: ; 351c0
+BattleCommand_CheckDestinyBond: ; 351c0
 ; checkdestinybond
 
 ; Faint the user if it fainted an opponent using Destiny Bond.
@@ -3233,18 +2583,18 @@
 	ld a, [hld]
 	ld [Buffer2], a
 	ld a, [hl]
-	ld [wd1ec], a
+	ld [Buffer3], a
 	xor a
 	ld [hld], a
 	ld a, [hl]
-	ld [wd1ed], a
+	ld [Buffer4], a
 	xor a
 	ld [hl], a
-	ld [wd1ee], a
-	ld [wd1ef], a
+	ld [Buffer5], a
+	ld [Buffer6], a
 	ld h, b
 	ld l, c
-	predef Functionc6e0
+	predef AnimateHPBar
 	call RefreshBattleHuds
 
 	call BattleCommand_SwitchTurn
@@ -3252,9 +2602,9 @@
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
 	inc a
-	ld [wc689], a
-	ld a, $c2
-	call Function37e44
+	ld [wKickCounter], a
+	ld a, DESTINY_BOND
+	call LoadAnim
 	call BattleCommand_SwitchTurn
 
 	jr .asm_3524d ; 3522f $1c
@@ -3274,7 +2624,7 @@
 	jr nz, .asm_3524d
 
 .asm_3524a
-	call BattleCommand0c
+	call BattleCommand_RaiseSub
 
 .asm_3524d
 	jp EndMoveEffect
@@ -3281,7 +2631,7 @@
 ; 35250
 
 
-BattleCommand12: ; 35250
+BattleCommand_BuildOpponentRage: ; 35250
 ; buildopponentrage
 
 	jp .start
@@ -3295,12 +2645,12 @@
 	bit SUBSTATUS_RAGE, a
 	ret z
 
-	ld de, wc72c
+	ld de, wEnemyRageCounter
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3526b
-	ld de, wc72b
-.asm_3526b
+	jr z, .player
+	ld de, wPlayerRageCounter
+.player
 	ld a, [de]
 	inc a
 	ret z
@@ -3313,7 +2663,7 @@
 ; 3527b
 
 
-BattleCommanda2: ; 3527b
+BattleCommand_RageDamage: ; 3527b
 ; ragedamage
 
 	ld a, [CurDamage]
@@ -3324,9 +2674,9 @@
 	ld c, a
 	ld a, [hBattleTurn]
 	and a
-	ld a, [wc72b]
+	ld a, [wPlayerRageCounter]
 	jr z, .asm_35290
-	ld a, [wc72c]
+	ld a, [wEnemyRageCounter]
 .asm_35290
 	and a
 	jr z, .asm_3529a
@@ -3333,7 +2683,7 @@
 	dec a
 	add hl, bc
 	jr nc, .asm_35290
-	ld hl, $ffff
+	ld hl, -1
 .asm_3529a
 	ld a, h
 	ld [CurDamage], a
@@ -3358,7 +2708,7 @@
 
 
 DittoMetalPowder: ; 352b1
-	ld a, PartyMon1Species - PartyMon1
+	ld a, MON_SPECIES
 	call BattlePartyAttr
 	ld a, [hBattleTurn]
 	and a
@@ -3395,7 +2745,7 @@
 ; 352dc
 
 
-BattleCommand06: ; 352dc
+BattleCommand_DamageStats: ; 352dc
 ; damagestats
 
 	ld a, [hBattleTurn]
@@ -3478,7 +2828,7 @@
 	call ThickClubBoost
 
 .done
-	call Function3534d
+	call TruncateHL_BC
 
 	ld a, [BattleMonLevel]
 	ld e, a
@@ -3490,13 +2840,14 @@
 ; 3534d
 
 
-Function3534d: ; 3534d
+TruncateHL_BC: ; 3534d
+.loop
 ; Truncate 16-bit values hl and bc to 8-bit values b and c respectively.
 ; b = hl, c = bc
 
 	ld a, h
 	or b
-	jr z, .asm_3536b
+	jr z, .finish
 
 	srl b
 	rr c
@@ -3505,10 +2856,10 @@
 
 	ld a, c
 	or b
-	jr nz, .asm_3535e
+	jr nz, .done_bc
 	inc c
 
-.asm_3535e
+.done_bc
 	srl h
 	rr l
 	srl h
@@ -3516,10 +2867,10 @@
 
 	ld a, l
 	or h
-	jr nz, .asm_3536b
+	jr nz, .finish
 	inc l
 
-.asm_3536b
+.finish
 	ld a, [wLinkMode]
 	cp 3
 	jr z, .done
@@ -3526,7 +2877,7 @@
 
 	ld a, h
 	or b
-	jr nz, Function3534d
+	jr nz, .loop
 
 .done
 	ld b, l
@@ -3633,7 +2984,7 @@
 	ld h, a
 
 	push hl
-	ld a, PartyMon1Species - PartyMon1
+	ld a, MON_SPECIES
 	call BattlePartyAttr
 
 	ld a, [hBattleTurn]
@@ -3645,11 +2996,11 @@
 	pop hl
 
 	cp b
-	jr z, .GetItem
+	jr z, .GetItemHeldEffect
 	cp c
 	ret nz
 
-.GetItem
+.GetItemHeldEffect
 	push hl
 	call GetUserItem
 	ld a, [hl]
@@ -3732,7 +3083,7 @@
 	call ThickClubBoost
 
 .done
-	call Function3534d
+	call TruncateHL_BC
 
 	ld a, [EnemyMonLevel]
 	ld e, a
@@ -3744,50 +3095,53 @@
 ; 35461
 
 
-BattleCommanda1: ; 35461
+BattleCommand_BeatUp: ; 35461
 ; beatup
 
 	call ResetDamage
 	ld a, [hBattleTurn]
 	and a
-	jp nz, .asm_354ef
+	jp nz, .enemy_beats_up
 	ld a, [PlayerSubStatus3]
 	bit SUBSTATUS_IN_LOOP, a
-	jr nz, .asm_35482
+	jr nz, .next_mon
 	ld c, 20
 	call DelayFrames
 	xor a
 	ld [PlayerRolloutCount], a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld [wc72d], a
-	jr .asm_3548d
-.asm_35482
+	jr .got_mon
+
+.next_mon
 	ld a, [PlayerRolloutCount]
 	ld b, a
 	ld a, [PartyCount]
 	sub b
-	ld [DefaultFlypoint], a
-.asm_3548d
-	ld a, [DefaultFlypoint]
+	ld [wd002], a
+
+.got_mon
+	ld a, [wd002]
 	ld hl, PartyMonNicknames
 	call GetNick
-	ld a, $22
-	call Function355bd
+	ld a, MON_HP
+	call GetBeatupMonLocation
 	ld a, [hli]
 	or [hl]
-	jp z, Function355b0
-	ld a, [DefaultFlypoint]
+	jp z, .beatup_fail ; fainted
+	ld a, [wd002]
 	ld c, a
 	ld a, [CurBattleMon]
 	cp [hl]
 	ld hl, BattleMonStatus
-	jr z, .asm_354b2
-	ld a, $20
-	call Function355bd
-.asm_354b2
+	jr z, .active_mon
+	ld a, MON_STATUS
+	call GetBeatupMonLocation
+.active_mon
 	ld a, [hl]
 	and a
-	jp nz, Function355b0
+	jp nz, .beatup_fail
+
 	ld a, $1
 	ld [wc72d], a
 	ld hl, BeatUpAttackText
@@ -3798,8 +3152,8 @@
 	ld a, [BaseDefense]
 	ld c, a
 	push bc
-	ld a, $0
-	call Function355bd
+	ld a, MON_SPECIES
+	call GetBeatupMonLocation
 	ld a, [hl]
 	ld [CurSpecies], a
 	call GetBaseData
@@ -3807,8 +3161,8 @@
 	pop bc
 	ld b, a
 	push bc
-	ld a, $1f
-	call Function355bd
+	ld a, MON_LEVEL
+	call GetBeatupMonLocation
 	ld a, [hl]
 	ld e, a
 	pop bc
@@ -3816,85 +3170,86 @@
 	ld d, a
 	ret
 
-.asm_354ef
+.enemy_beats_up
 	ld a, [EnemySubStatus3]
 	bit SUBSTATUS_IN_LOOP, a
-	jr nz, .asm_35502
+	jr nz, .not_first_enemy_beatup
 
 	xor a
 	ld [EnemyRolloutCount], a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld [wc72d], a
-	jr .asm_3550d
+	jr .enemy_continue
 
-.asm_35502
+.not_first_enemy_beatup
 	ld a, [EnemyRolloutCount]
 	ld b, a
 	ld a, [OTPartyCount]
 	sub b
-	ld [DefaultFlypoint], a
-.asm_3550d
+	ld [wd002], a
+.enemy_continue
 	ld a, [wBattleMode]
 	dec a
-	jr z, .asm_3556b
+	jr z, .wild
 
 	ld a, [wLinkMode]
 	and a
-	jr nz, .asm_35532
+	jr nz, .link_or_tower
 
 	ld a, [InBattleTowerBattle]
 	and a
-	jr nz, .asm_35532
+	jr nz, .link_or_tower
 
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld c, a
 	ld b, 0
 	ld hl, OTPartySpecies
 	add hl, bc
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
-	jr .asm_35544
+	jr .got_enemy_nick
 
-.asm_35532
-	ld a, [DefaultFlypoint]
+.link_or_tower
+	ld a, [wd002]
 	ld hl, OTPartyMonNicknames
 	ld bc, NAME_LENGTH
 	call AddNTimes
 	ld de, StringBuffer1
 	call CopyBytes
-.asm_35544
-	ld a, $22
-	call Function355bd
+.got_enemy_nick
+	ld a, MON_HP
+	call GetBeatupMonLocation
 	ld a, [hli]
 	or [hl]
-	jp z, Function355b0
-	ld a, [DefaultFlypoint]
+	jp z, .beatup_fail
+	ld a, [wd002]
 	ld b, a
 	ld a, [CurOTMon]
 	cp b
 	ld hl, EnemyMonStatus
-	jr z, .asm_35560
+	jr z, .active_enemy
 
-	ld a, $20
-	call Function355bd
-.asm_35560
+	ld a, MON_STATUS
+	call GetBeatupMonLocation
+.active_enemy
 	ld a, [hl]
 	and a
-	jr nz, Function355b0
+	jr nz, .beatup_fail
 
 	ld a, $1
 	ld [wc72d], a
-	jr .asm_3557d
+	jr .finish_beatup
 
-.asm_3556b
+.wild
 	ld a, [EnemyMonSpecies]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, BeatUpAttackText
 	call StdBattleTextBox
 	jp EnemyAttackDamage
-.asm_3557d
+
+.finish_beatup
 	ld hl, BeatUpAttackText
 	call StdBattleTextBox
 	ld a, [BattleMonSpecies]
@@ -3903,8 +3258,8 @@
 	ld a, [BaseDefense]
 	ld c, a
 	push bc
-	ld a, $0
-	call Function355bd
+	ld a, MON_SPECIES
+	call GetBeatupMonLocation
 	ld a, [hl]
 	ld [CurSpecies], a
 	call GetBaseData
@@ -3912,8 +3267,8 @@
 	pop bc
 	ld b, a
 	push bc
-	ld a, $1f
-	call Function355bd
+	ld a, MON_LEVEL
+	call GetBeatupMonLocation
 	ld a, [hl]
 	ld e, a
 	pop bc
@@ -3923,7 +3278,7 @@
 ; 355b0
 
 
-Function355b0: ; 355b0
+.beatup_fail: ; 355b0
 	ld b, buildopponentrage_command
 	jp SkipToBattleCommand
 ; 355b5
@@ -3938,7 +3293,7 @@
 ; 355bd
 
 
-Function355bd: ; 355bd
+GetBeatupMonLocation: ; 355bd
 	push bc
 	ld c, a
 	ld b, 0
@@ -3949,7 +3304,7 @@
 	ld hl, OTPartyMon1Species
 
 .asm_355cc
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	add hl, bc
 	call GetPartyLocation
 	pop bc
@@ -3956,7 +3311,7 @@
 	ret
 
 
-BattleCommand_IfAttackMissedResetDamage: ; 355d5
+BattleCommand_ClearMissDamage: ; 355d5
 ; clearmissdamage
 	ld a, [AttackMissed]
 	and a
@@ -3966,7 +3321,7 @@
 ; 355dd
 
 
-Function355dd: ; 355dd
+HitSelfInConfusion: ; 355dd
 	call ResetDamage
 	ld a, [hBattleTurn]
 	and a
@@ -3973,12 +3328,12 @@
 	ld hl, BattleMonDefense
 	ld de, PlayerScreens
 	ld a, [BattleMonLevel]
-	jr z, .asm_355f7
+	jr z, .got_it
 
 	ld hl, EnemyMonDefense
 	ld de, EnemyScreens
 	ld a, [EnemyMonLevel]
-.asm_355f7
+.got_it
 	push af
 	ld a, [hli]
 	ld b, a
@@ -3985,11 +3340,11 @@
 	ld c, [hl]
 	ld a, [de]
 	bit SCREENS_REFLECT, a
-	jr z, .asm_35604
+	jr z, .mimic_screen
 
 	sla c
 	rl b
-.asm_35604
+.mimic_screen
 rept 3
 	dec hl
 endr
@@ -3996,7 +3351,7 @@
 	ld a, [hli]
 	ld l, [hl]
 	ld h, a
-	call Function3534d
+	call TruncateHL_BC
 	ld d, $28
 	pop af
 	ld e, a
@@ -4004,7 +3359,7 @@
 ; 35612
 
 
-BattleCommand_DamageCalcWithStats: ; 35612
+BattleCommand_DamageCalc: ; 35612
 ; damagecalc
 
 ; Return a damage value for move power d, player level e, enemy defense c and player attack b.
@@ -4016,20 +3371,20 @@
 
 ; Selfdestruct and Explosion halve defense.
 	cp EFFECT_EXPLOSION
-	jr nz, .asm_35620
+	jr nz, .dont_explode
 
 	srl c
-	jr nz, .asm_35620
+	jr nz, .dont_explode
 	inc c
 
-.asm_35620
+.dont_explode
 
 ; Variable-hit moves and Conversion can have a power of 0.
 	cp EFFECT_MULTI_HIT
-	jr z, .asm_3562b
+	jr z, .skip_zero_damage_check
 
 	cp EFFECT_CONVERSION
-	jr z, .asm_3562b
+	jr z, .skip_zero_damage_check
 
 ; No damage if move power is 0.
 	ld a, d
@@ -4036,13 +3391,13 @@
 	and a
 	ret z
 
-.asm_3562b
+.skip_zero_damage_check
 ; Minimum defense value is 1.
 	ld a, c
 	and a
-	jr nz, .asm_35631
+	jr nz, .not_dividing_by_zero
 	ld c, 1
-.asm_35631
+.not_dividing_by_zero
 
 	xor a
 	ld hl, hDividend
@@ -4054,9 +3409,9 @@
 ; Level * 2
 	ld a, e
 	add a
-	jr nc, .asm_3563e
+	jr nc, .level_not_overflowing
 	ld [hl], $1
-.asm_3563e
+.level_not_overflowing
 	inc hl
 	ld [hli], a
 
@@ -4138,44 +3493,44 @@
 ; Update CurDamage (capped at 997).
 	ld hl, CurDamage
 	ld b, [hl]
-	ld a, [hQuotient + 2]
+	ld a, [hProduct + 3]
 	add b
-	ld [$ffb6], a
-	jr nc, .asm_356a5
+	ld [hProduct + 3], a
+	jr nc, .dont_cap_1
 
-	ld a, [hQuotient + 1]
+	ld a, [hProduct + 2]
 	inc a
-	ld [$ffb5], a
+	ld [hProduct + 2], a
 	and a
 	jr z, .Cap
 
-.asm_356a5
-	ld a, [$ffb3]
+.dont_cap_1
+	ld a, [hProduct]
 	ld b, a
-	ld a, [$ffb4]
+	ld a, [hProduct + 1]
 	or a
 	jr nz, .Cap
 
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	cp 998 / $100
-	jr c, .asm_356bd
+	jr c, .dont_cap_2
 
 	cp 998 / $100 + 1
 	jr nc, .Cap
 
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	cp 998 % $100
 	jr nc, .Cap
 
-.asm_356bd
+.dont_cap_2
 	inc hl
 
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	ld b, [hl]
 	add b
 	ld [hld], a
 
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	ld b, [hl]
 	adc b
 	ld [hl], a
@@ -4183,7 +3538,7 @@
 
 	ld a, [hl]
 	cp 998 / $100
-	jr c, .asm_356df
+	jr c, .dont_cap_3
 
 	cp 998 / $100 + 1
 	jr nc, .Cap
@@ -4191,7 +3546,7 @@
 	inc hl
 	ld a, [hld]
 	cp 998 % $100
-	jr c, .asm_356df
+	jr c, .dont_cap_3
 
 .Cap
 	ld a, 997 / $100
@@ -4200,15 +3555,15 @@
 	ld [hld], a
 
 
-.asm_356df
+.dont_cap_3
 ; Minimum neutral damage is 2 (bringing the cap to 999).
 	inc hl
 	ld a, [hl]
 	add 2
 	ld [hld], a
-	jr nc, .asm_356e7
+	jr nc, .dont_floor
 	inc [hl]
-.asm_356e7
+.dont_floor
 
 	ld a, 1
 	and a
@@ -4221,20 +3576,20 @@
 	ret z
 
 ; x2
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	add a
-	ld [$ffb6], a
+	ld [hProduct + 3], a
 
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	rl a
-	ld [$ffb5], a
+	ld [hProduct + 2], a
 
 ; Cap at $ffff.
 	ret nc
 
 	ld a, $ff
-	ld [$ffb5], a
-	ld [$ffb6], a
+	ld [hProduct + 2], a
+	ld [hProduct + 3], a
 
 	ret
 ; 35703
@@ -4262,61 +3617,62 @@
 ; 35726
 
 
-BattleCommand3f: ; 35726
+BattleCommand_ConstantDamage: ; 35726
 ; constantdamage
 
 	ld hl, BattleMonLevel
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35731
+	jr z, .got_turn
 	ld hl, EnemyMonLevel
 
-.asm_35731
+.got_turn
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_LEVEL_DAMAGE
 	ld b, [hl]
 	ld a, 0
-	jr z, .asm_3578c
+	jr z, .got_power
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_PSYWAVE
-	jr z, .asm_35758
+	jr z, .psywave
 
 	cp EFFECT_SUPER_FANG
-	jr z, .asm_3576b
+	jr z, .super_fang
 
 	cp EFFECT_REVERSAL
-	jr z, .asm_35792
+	jr z, .reversal
 
 	ld a, BATTLE_VARS_MOVE_POWER
 	call GetBattleVar
 	ld b, a
 	ld a, $0
-	jr .asm_3578c
+	jr .got_power
 
-.asm_35758
+.psywave
 	ld a, b
 	srl a
 	add b
 	ld b, a
-.asm_3575d
+.psywave_loop
 	call BattleRandom
 	and a
-	jr z, .asm_3575d ; 35761 $fa
+	jr z, .psywave_loop ; 35761 $fa
 	cp b
-	jr nc, .asm_3575d ; 35764 $f7
+	jr nc, .psywave_loop ; 35764 $f7
 	ld b, a
 	ld a, $0
-	jr .asm_3578c ; 35769 $21
-.asm_3576b
+	jr .got_power ; 35769 $21
+
+.super_fang
 	ld hl, EnemyMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35776 ; 35771 $3
+	jr z, .got_hp ; 35771 $3
 	ld hl, BattleMonHP
-.asm_35776
+.got_hp
 	ld a, [hli]
 	srl a
 	ld b, a
@@ -4326,26 +3682,28 @@
 	ld a, b
 	pop bc
 	and a
-	jr nz, .asm_3578c ; 35781 $9
+	jr nz, .got_power ; 35781 $9
 	or b
 	ld a, $0
-	jr nz, .asm_3578c ; 35786 $4
+	jr nz, .got_power ; 35786 $4
 	ld b, $1
-	jr .asm_3578c ; 3578a $0
-.asm_3578c
+	jr .got_power ; 3578a $0
+
+.got_power
 	ld hl, CurDamage
 	ld [hli], a
 	ld [hl], b
 	ret
-.asm_35792
+
+.reversal
 	ld hl, BattleMonHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3579d ; 35798 $3
+	jr z, .reversal_got_hp ; 35798 $3
 	ld hl, EnemyMonHP
-.asm_3579d
+.reversal_got_hp
 	xor a
-	ld [$ffb3], a
+	ld [hDividend], a
 	ld [hMultiplicand + 0], a
 	ld a, [hli]
 	ld [hMultiplicand + 1], a
@@ -4360,9 +3718,9 @@
 	ld [hDivisor], a
 	ld a, b
 	and a
-	jr z, .asm_357d6
+	jr z, .skip_to_divide
 
-	ld a, [$ffb7]
+	ld a, [hProduct + 4]
 	srl b
 	rr a
 	srl b
@@ -4379,7 +3737,7 @@
 	ld a, b
 	ld [hDividend + 2], a
 
-.asm_357d6
+.skip_to_divide
 	ld b, $4
 	call Divide
 	ld a, [hQuotient + 2]
@@ -4386,14 +3744,14 @@
 	ld b, a
 	ld hl, .FlailPower
 
-.asm_357e1
+.reversal_loop
 	ld a, [hli]
 	cp b
-	jr nc, .asm_357e8
+	jr nc, .break_loop
 	inc hl
-	jr .asm_357e1
+	jr .reversal_loop
 
-.asm_357e8
+.break_loop
 	ld a, [hBattleTurn]
 	and a
 	ld a, [hl]
@@ -4412,7 +3770,7 @@
 	call EnemyAttackDamage
 
 .notEnemysTurn
-	call BattleCommand_DamageCalcWithStats
+	call BattleCommand_DamageCalc
 	pop hl
 	ld [hl], 1
 	ret
@@ -4428,7 +3786,7 @@
 ; 35813
 
 
-BattleCommand40: ; 35813
+BattleCommand_Counter: ; 35813
 ; counter
 
 	ld a, 1
@@ -4444,12 +3802,12 @@
 	cp EFFECT_COUNTER
 	ret z
 
-	call BattleCommanda3
-	ld a, [wd265]
+	call BattleCommand_ResetTypeMatchup
+	ld a, [wTypeMatchup]
 	and a
 	ret z
 
-	call Function36abf
+	call CheckOpponentWentFirst
 	ret z
 
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
@@ -4489,7 +3847,7 @@
 ; 35864
 
 
-BattleCommand41: ; 35864
+BattleCommand_Encore: ; 35864
 ; encore
 
 	ld hl, EnemyMonMoves
@@ -4536,7 +3894,7 @@
 	inc a
 endr
 	ld [de], a
-	call Function36abf
+	call CheckOpponentWentFirst
 	jr nz, .asm_3591a
 	ld a, [hBattleTurn]
 	and a
@@ -4613,43 +3971,43 @@
 ; 35926
 
 
-BattleCommand42: ; 35926
+BattleCommand_PainSplit: ; 35926
 ; painsplit
 
 	ld a, [AttackMissed]
 	and a
-	jp nz, Function359cd
+	jp nz, PainSplit_PrintButItFailed
 	call CheckSubstituteOpp
-	jp nz, Function359cd
+	jp nz, PainSplit_PrintButItFailed
 	call AnimateCurrentMove
 	ld hl, BattleMonMaxHP + 1
 	ld de, EnemyMonMaxHP + 1
-	call .asm_3597d
+	call .PlayerShareHP
 	ld a, $1
 	ld [wd10a], a
 	hlcoord 10, 9
-	predef Functionc6e0
+	predef AnimateHPBar
 	ld hl, EnemyMonHP
 	ld a, [hli]
-	ld [wd1ed], a
+	ld [Buffer4], a
 	ld a, [hli]
-	ld [wd1ec], a
+	ld [Buffer3], a
 	ld a, [hli]
 	ld [Buffer2], a
 	ld a, [hl]
 	ld [Buffer1], a
-	call Function359ac
+	call .EnemyShareHP
 	xor a
 	ld [wd10a], a
 	call ResetDamage
 	hlcoord 2, 2
-	predef Functionc6e0
-	callba Function178000
+	predef AnimateHPBar
+	callba _UpdateBattleHUDs
 
 	ld hl, SharedPainText
 	jp StdBattleTextBox
 
-.asm_3597d
+.PlayerShareHP
 	ld a, [hld]
 	ld [Buffer1], a
 	ld a, [hld]
@@ -4656,9 +4014,9 @@
 	ld [Buffer2], a
 	ld a, [hld]
 	ld b, a
-	ld [wd1ec], a
+	ld [Buffer3], a
 	ld a, [hl]
-	ld [wd1ed], a
+	ld [Buffer4], a
 rept 2
 	dec de
 endr
@@ -4681,11 +4039,7 @@
 	inc de
 endr
 
-	; fallthrough
-; 359ac
-
-
-Function359ac: ; 359ac
+.EnemyShareHP: ; 359ac
 	ld c, [hl]
 	dec hl
 	ld a, [CurDamage + 1]
@@ -4694,28 +4048,28 @@
 	dec hl
 	ld a, [CurDamage]
 	sbc b
-	jr nc, .asm_359c2
+	jr nc, .skip
 
 	ld a, [CurDamage]
 	ld b, a
 	ld a, [CurDamage + 1]
 	ld c, a
-.asm_359c2
+.skip
 	ld a, c
 	ld [hld], a
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld a, b
 	ld [hli], a
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ret
 ; 359cd
 
-Function359cd: ; 359cd
+PainSplit_PrintButItFailed: ; 359cd
 	jp PrintDidntAffect2
 ; 359d0
 
 
-BattleCommand43: ; 359d0
+BattleCommand_Snore: ; 359d0
 ; snore
 	ld a, BATTLE_VARS_STATUS
 	call GetBattleVar
@@ -4724,12 +4078,12 @@
 	call ResetDamage
 	ld a, $1
 	ld [AttackMissed], a
-	call Function37354
+	call FailSnore
 	jp EndMoveEffect
 ; 359e6
 
 
-BattleCommand44: ; 359e6
+BattleCommand_Conversion2: ; 359e6
 ; conversion2
 
 	ld a, [AttackMissed]
@@ -4775,36 +4129,36 @@
 	push hl
 	ld a, d
 	ld [hl], a
-	call HowEffectiveIsTheMovetypeAgainstTheEnemyPkmn
+	call BattleCheckTypeMatchup
 	pop hl
 	pop af
 	ld [hl], a
 	pop hl
-	ld a, [wd265]
-	cp $a
+	ld a, [wTypeMatchup]
+	cp 10
 	jr nc, .asm_35a13
 	call BattleCommand_SwitchTurn
 
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	predef GetTypeName
 	ld hl, TransformedTypeText
 	jp StdBattleTextBox
 
 .asm_35a50
-	jp Function37354
+	jp FailConversion2
 ; 35a53
 
 
-BattleCommand45: ; 35a53
+BattleCommand_LockOn: ; 35a53
 ; lockon
 
 	call CheckSubstituteOpp
-	jr nz, .asm_35a6e
+	jr nz, .fail
 
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_35a6e
+	jr nz, .fail
 
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVarAddr
@@ -4814,67 +4168,77 @@
 	ld hl, TookAimText
 	jp StdBattleTextBox
 
-.asm_35a6e
+.fail
 	call AnimateFailedMove
 	jp PrintDidntAffect
 ; 35a74
 
 
-BattleCommand46: ; 35a74
+BattleCommand_Sketch: ; 35a74
 ; sketch
 
-	call Function372d8
-
+	call ClearLastMove
+; Don't sketch during a link battle
 	ld a, [wLinkMode]
 	and a
-	jr z, .asm_35a83
+	jr z, .not_linked
 	call AnimateFailedMove
 	jp PrintNothingHappened
-.asm_35a83
 
+.not_linked
+; If the opponent has a substitute up, fail.
 	call CheckSubstituteOpp
-	jp nz, .asm_35b10
-
+	jp nz, .fail
+; If the opponent is transformed, fail.
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVarAddr
 	bit SUBSTATUS_TRANSFORMED, [hl]
-	jp nz, .asm_35b10
-
-	ld a, PartyMon1Moves - PartyMon1
+	jp nz, .fail
+; Get the user's moveset in its party struct.
+; This move replacement shall be permanent.
+; Pointer will be in de.
+	ld a, MON_MOVES
 	call UserPartyAttr
 	ld d, h
 	ld e, l
+; Get the battle move structs.
 	ld hl, BattleMonMoves
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35aa5
+	jr z, .get_last_move
 	ld hl, EnemyMonMoves
-.asm_35aa5
+.get_last_move
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
-	ld [wd265], a
+	ld [wTypeMatchup], a
 	ld b, a
+; Fail if move is invalid or is Struggle.
 	and a
-	jr z, .asm_35b10
+	jr z, .fail
 	cp STRUGGLE
-	jr z, .asm_35b10
+	jr z, .fail
+; Fail if user already knows that move
 	ld c, NUM_MOVES
-.asm_35ab7
+.does_user_already_know_move
 	ld a, [hli]
 	cp b
-	jr z, .asm_35b10
+	jr z, .fail
 	dec c
-	jr nz, .asm_35ab7
+	jr nz, .does_user_already_know_move
+; Find Sketch in the user's moveset.
+; Pointer in hl, and index in c.
 	dec hl
 	ld c, NUM_MOVES
-.asm_35ac1
+.find_sketch
 	dec c
 	ld a, [hld]
 	cp SKETCH
-	jr nz, .asm_35ac1
+	jr nz, .find_sketch
 	inc hl
+; The Sketched move is loaded to that slot.
 	ld a, b
 	ld [hl], a
+; Copy the base PP from that move.
 	push bc
 	push hl
 	dec a
@@ -4885,24 +4249,27 @@
 	add hl, bc
 	ld [hl], a
 	pop bc
+
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35af6
+	jr z, .user_trainer
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .asm_35af6
+	jr nz, .user_trainer
+; wildmon
 	ld a, [hl]
 	push bc
-	ld hl, wc739
+	ld hl, wWildMonPP
 	ld b, 0
 	add hl, bc
 	ld [hl], a
-	ld hl, wc735
+	ld hl, wWildMonMoves
 	add hl, bc
 	pop bc
 	ld [hl], b
-	jr .asm_35b04
-.asm_35af6
+	jr .done_copy
+
+.user_trainer
 	ld a, [hl]
 	push af
 	ld l, c
@@ -4911,10 +4278,10 @@
 	ld a, b
 	ld [hl], a
 	pop af
-	ld de, $0015
+	ld de, MON_PP - MON_MOVES
 	add hl, de
 	ld [hl], a
-.asm_35b04
+.done_copy
 	call GetMoveName
 	call AnimateCurrentMove
 
@@ -4921,13 +4288,13 @@
 	ld hl, SketchedText
 	jp StdBattleTextBox
 
-.asm_35b10
+.fail
 	call AnimateFailedMove
 	jp PrintDidntAffect
 ; 35b16
 
 
-BattleCommand47: ; 35b16
+BattleCommand_DefrostOpponent: ; 35b16
 ; defrostopponent
 ; Thaw the opponent if frozen, and
 ; raise the user's Attack one stage.
@@ -4946,7 +4313,7 @@
 
 	ld a, EFFECT_ATTACK_UP
 	ld [hl], a
-	call BattleCommand1c
+	call BattleCommand_StatUp
 
 	pop af
 	pop hl
@@ -4955,13 +4322,13 @@
 ; 35b33
 
 
-BattleCommand48: ; 35b33
+BattleCommand_SleepTalk: ; 35b33
 ; sleeptalk
 
-	call Function372d8
+	call ClearLastMove
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_35ba3
+	jr nz, .fail
 	ld a, [hBattleTurn]
 	and a
 	ld hl, BattleMonMoves + 1
@@ -4975,12 +4342,12 @@
 	ld a, BATTLE_VARS_STATUS
 	call GetBattleVar
 	and SLP
-	jr z, .asm_35ba3
+	jr z, .fail
 	ld a, [hl]
 	and a
-	jr z, .asm_35ba3
+	jr z, .fail
 	call .asm_35ba9
-	jr c, .asm_35ba3
+	jr c, .fail
 	dec hl
 .asm_35b62
 	push hl
@@ -5007,18 +4374,19 @@
 	call GetBattleVarAddr
 	ld a, e
 	ld [hl], a
-	call Function34548
-	jr nz, .asm_35b9a
-	ld a, [wc689]
+	call CheckUserIsCharging
+	jr nz, .charging
+	ld a, [wKickCounter]
 	push af
-	call BattleCommand0a
+	call BattleCommand_LowerSub
 	pop af
-	ld [wc689], a
-.asm_35b9a
-	call Function37e36
+	ld [wKickCounter], a
+.charging
+	call LoadMoveAnim
 	call UpdateMoveData
 	jp ResetTurn
-.asm_35ba3
+
+.fail
 	call AnimateFailedMove
 	jp TryPrintButItFailed
 
@@ -5100,7 +4468,7 @@
 ; 35bff
 
 
-BattleCommand49: ; 35bff
+BattleCommand_DestinyBond: ; 35bff
 ; destinybond
 
 	ld a, BATTLE_VARS_SUBSTATUS5
@@ -5112,13 +4480,13 @@
 ; 35c0f
 
 
-BattleCommand4a: ; 35c0f
+BattleCommand_Spite: ; 35c0f
 ; spite
 
 	ld a, [AttackMissed]
 	and a
 	jp nz, .asm_35c91
-	ld bc, PartyMon2 - PartyMon1 ; ????
+	ld bc, PARTYMON_STRUCT_LENGTH ; ????
 	ld hl, EnemyMonMoves
 	ld a, [hBattleTurn]
 	and a
@@ -5138,7 +4506,7 @@
 	ld a, [hli]
 	cp b
 	jr nz, .asm_35c33
-	ld [wd265], a
+	ld [wTypeMatchup], a
 	dec hl
 	ld b, 0
 	push bc
@@ -5166,7 +4534,7 @@
 	sub b
 	ld [hl], a
 	push af
-	ld a, PartyMon1PP - PartyMon1
+	ld a, MON_PP
 	call OpponentPartyAttr
 	ld d, b
 	pop af
@@ -5192,7 +4560,7 @@
 	call AnimateCurrentMove
 	pop de
 	ld a, d
-	ld [wd265], a
+	ld [wTypeMatchup], a
 	ld hl, SpiteEffectText
 	jp StdBattleTextBox
 .asm_35c91
@@ -5200,7 +4568,7 @@
 ; 35c94
 
 
-BattleCommand4b: ; 35c94
+BattleCommand_FalseSwipe: ; 35c94
 ; falseswipe
 
 	ld hl, EnemyMonHP
@@ -5244,7 +4612,7 @@
 ; 35cc9
 
 
-BattleCommand4c: ; 35cc9
+BattleCommand_HealBell: ; 35cc9
 ; healbell
 
 	ld a, BATTLE_VARS_SUBSTATUS1
@@ -5262,7 +4630,7 @@
 	ld [hl], a
 	ld h, d
 	ld l, e
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld d, PartyEnd - PartySpecies
 .asm_35ce9
 	ld [hl], a
@@ -5276,8 +4644,8 @@
 
 	ld a, [hBattleTurn]
 	and a
-	jp z, Function365d7
-	jp Function365fd
+	jp z, CalcPlayerStats
+	jp CalcEnemyStats
 ; 35d00
 
 
@@ -5307,39 +4675,40 @@
 ; 35d1c
 
 
-Function35d1c: ; 35d1c
+EnemyHurtItself: ; 35d1c
 	ld hl, CurDamage
 	ld a, [hli]
 	ld b, a
 	ld a, [hl]
 	or b
-	jr z, .asm_35d7b
+	jr z, .did_no_damage
 
 	ld a, c
 	and a
-	jr nz, .asm_35d31
+	jr nz, .mimic_sub_check
 
 	ld a, [EnemySubStatus4]
 	bit SUBSTATUS_SUBSTITUTE, a
-	jp nz, Function35de0
-.asm_35d31
+	jp nz, SelfInflictDamageToSubstitute
+
+.mimic_sub_check
 	ld a, [hld]
 	ld b, a
 	ld a, [EnemyMonHP + 1]
-	ld [wd1ec], a
+	ld [Buffer3], a
 	sub b
 	ld [EnemyMonHP + 1], a
 	ld a, [hl]
 	ld b, a
 	ld a, [EnemyMonHP]
-	ld [wd1ec + 1], a
+	ld [Buffer4], a
 	sbc b
 	ld [EnemyMonHP], a
-	jr nc, .asm_35d59
+	jr nc, .mimic_faint
 
-	ld a, [wd1ed]
+	ld a, [Buffer4]
 	ld [hli], a
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld [hl], a
 
 	xor a
@@ -5347,7 +4716,7 @@
 	ld [hli], a
 	ld [hl], a
 
-.asm_35d59
+.mimic_faint
 	ld hl, EnemyMonMaxHP
 	ld a, [hli]
 	ld [Buffer2], a
@@ -5355,52 +4724,52 @@
 	ld [Buffer1], a
 	ld hl, EnemyMonHP
 	ld a, [hli]
-	ld [wd1ef], a
+	ld [Buffer6], a
 	ld a, [hl]
-	ld [wd1ee], a
+	ld [Buffer5], a
 	hlcoord 2, 2
 	xor a
 	ld [wd10a], a
-	predef Functionc6e0
-.asm_35d7b
+	predef AnimateHPBar
+.did_no_damage
 	jp RefreshBattleHuds
 ; 35d7e
 
 
-Function35d7e: ; 35d7e
+PlayerHurtItself: ; 35d7e
 	ld hl, CurDamage
 	ld a, [hli]
 	ld b, a
 	ld a, [hl]
 	or b
-	jr z, .asm_35ddd
+	jr z, .did_no_damage
 
 	ld a, c
 	and a
-	jr nz, .asm_35d93
+	jr nz, .mimic_sub_check
 
 	ld a, [PlayerSubStatus4]
 	bit SUBSTATUS_SUBSTITUTE, a
-	jp nz, Function35de0
-.asm_35d93
+	jp nz, SelfInflictDamageToSubstitute
+.mimic_sub_check
 	ld a, [hld]
 	ld b, a
 	ld a, [BattleMonHP + 1]
-	ld [wd1ec], a
+	ld [Buffer3], a
 	sub b
 	ld [BattleMonHP + 1], a
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld b, [hl]
 	ld a, [BattleMonHP]
-	ld [wd1ec + 1], a
+	ld [Buffer4], a
 	sbc b
 	ld [BattleMonHP], a
-	ld [wd1ee + 1], a
-	jr nc, .asm_35dc5
+	ld [Buffer6], a
+	jr nc, .mimic_faint
 
-	ld a, [wd1ec + 1]
+	ld a, [Buffer4]
 	ld [hli], a
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld [hl], a
 	xor a
 
@@ -5407,11 +4776,11 @@
 	ld hl, BattleMonHP
 	ld [hli], a
 	ld [hl], a
-	ld hl, wd1ee
+	ld hl, Buffer5
 	ld [hli], a
 	ld [hl], a
 
-.asm_35dc5
+.mimic_faint
 	ld hl, BattleMonMaxHP
 	ld a, [hli]
 	ld [Buffer2], a
@@ -5420,13 +4789,13 @@
 	hlcoord 10, 9
 	ld a, $1
 	ld [wd10a], a
-	predef Functionc6e0
-.asm_35ddd
+	predef AnimateHPBar
+.did_no_damage
 	jp RefreshBattleHuds
 ; 35de0
 
 
-Function35de0: ; 35de0
+SelfInflictDamageToSubstitute: ; 35de0
 
 	ld hl, SubTookDamageText
 	call StdBattleTextBox
@@ -5458,11 +4827,11 @@
 	call StdBattleTextBox
 
 	call BattleCommand_SwitchTurn
-	call BattleCommanda7
+	call BattleCommand_LowerSubNoAnim
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVar
 	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
-	call z, Function37ec7
+	call z, AppearUserLowerSub
 	call BattleCommand_SwitchTurn
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
@@ -5495,8 +4864,8 @@
 
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVar
-	ld [CurSpecies], a ; not CurSpecies
-	ld [wd265], a
+	ld [CurMove], a
+	ld [wNamedObjectIndexBuffer], a
 
 	dec a
 	call GetMoveData
@@ -5505,21 +4874,21 @@
 ; 35e5c
 
 
-BattleCommand14: ; 35e5c
+BattleCommand_SleepTarget: ; 35e5c
 ; sleeptarget
 
 	call GetOpponentItem
 	ld a, b
 	cp HELD_PREVENT_SLEEP
-	jr nz, .asm_35e70
+	jr nz, .not_protected_by_item
 
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	ld hl, ProtectedByText
-	jr .asm_35ec6
+	jr .fail
 
-.asm_35e70
+.not_protected_by_item
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
 	ld d, h
@@ -5527,7 +4896,7 @@
 	ld a, [de]
 	and SLP
 	ld hl, AlreadyAsleepText
-	jr nz, .asm_35ec6
+	jr nz, .fail
 
 	ld a, [AttackMissed]
 	and a
@@ -5534,29 +4903,29 @@
 	jp nz, PrintDidntAffect2
 
 	ld hl, DidntAffect1Text
-	call Function35ece
-	jr c, .asm_35ec6
+	call .CheckAIRandomFail
+	jr c, .fail
 
 	ld a, [de]
 	and a
-	jr nz, .asm_35ec6
+	jr nz, .fail
 
 	call CheckSubstituteOpp
-	jr nz, .asm_35ec6
+	jr nz, .fail
 
 	call AnimateCurrentMove
 	ld b, $7
 	ld a, [InBattleTowerBattle]
 	and a
-	jr z, .asm_35ea4
+	jr z, .random_loop
 	ld b, $3
 
-.asm_35ea4
+.random_loop
 	call BattleRandom
 	and b
-	jr z, .asm_35ea4
+	jr z, .random_loop
 	cp 7
-	jr z, .asm_35ea4
+	jr z, .random_loop
 	inc a
 	ld [de], a
 	call UpdateOpponentInParty
@@ -5565,12 +4934,12 @@
 	ld hl, FellAsleepText
 	call StdBattleTextBox
 
-	callba Function3dde9
+	callba UseHeldStatusHealingItem
 
-	jp z, Function34216
+	jp z, OpponentCantMove
 	ret
 
-.asm_35ec6
+.fail
 	push hl
 	call AnimateFailedMove
 	pop hl
@@ -5578,37 +4947,37 @@
 ; 35ece
 
 
-Function35ece: ; 35ece
+.CheckAIRandomFail: ; 35ece
 	; Enemy turn
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35eec
+	jr z, .dont_fail
 
 	; Not in link battle
 	ld a, [wLinkMode]
 	and a
-	jr nz, .asm_35eec
+	jr nz, .dont_fail
 
 	ld a, [InBattleTowerBattle]
 	and a
-	jr nz, .asm_35eec
+	jr nz, .dont_fail
 
 	; Not locked-on by the enemy
 	ld a, [PlayerSubStatus5]
 	bit SUBSTATUS_LOCK_ON, a
-	jr nz, .asm_35eec
+	jr nz, .dont_fail
 
 	call BattleRandom
-	cp $40
+	cp $40 ; 25%
 	ret c
 
-.asm_35eec
+.dont_fail
 	xor a
 	ret
 ; 35eee
 
 
-BattleCommand13: ; 35eee
+BattleCommand_PoisonTarget: ; 35eee
 ; poisontarget
 
 	call CheckSubstituteOpp
@@ -5620,7 +4989,7 @@
 	ld a, [TypeModifier]
 	and $7f
 	ret z
-	call Function35fe1
+	call CheckIfTargetIsPoisonType
 	ret z
 	call GetOpponentItem
 	ld a, b
@@ -5629,31 +4998,32 @@
 	ld a, [EffectFailed]
 	and a
 	ret nz
-	call Function37962
+	call SafeCheckSafeguard
 	ret nz
-	call Function35ff5
+
+	call PoisonOpponent
 	ld de, ANIM_PSN
-	call Function37e54
+	call PlayOpponentBattleAnim
 	call RefreshBattleHuds
 
 	ld hl, WasPoisonedText
 	call StdBattleTextBox
 
-	callba Function3dde9
+	callba UseHeldStatusHealingItem
 	ret
 ; 35f2c
 
 
-BattleCommand2f: ; 35f2c
+BattleCommand_Poison: ; 35f2c
 ; poison
 
 	ld hl, DoesntAffectText
 	ld a, [TypeModifier]
 	and $7f
-	jp z, .asm_35fb8
+	jp z, .failed
 
-	call Function35fe1
-	jp z, .asm_35fb8
+	call CheckIfTargetIsPoisonType
+	jp z, .failed
 
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVar
@@ -5660,73 +5030,73 @@
 	ld b, a
 	ld hl, AlreadyPoisonedText
 	and 1 << PSN
-	jp nz, .asm_35fb8
+	jp nz, .failed
 
 	call GetOpponentItem
 	ld a, b
 	cp HELD_PREVENT_POISON
-	jr nz, .asm_35f5f
+	jr nz, .do_poison
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	ld hl, ProtectedByText
-	jr .asm_35fb8
+	jr .failed
 
-.asm_35f5f
+.do_poison
 	ld hl, DidntAffect1Text
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVar
 	and a
-	jr nz, .asm_35fb8
+	jr nz, .failed
 
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_35f89
+	jr z, .mimic_random
 
 	ld a, [wLinkMode]
 	and a
-	jr nz, .asm_35f89
+	jr nz, .mimic_random
 
 	ld a, [InBattleTowerBattle]
 	and a
-	jr nz, .asm_35f89
+	jr nz, .mimic_random
 
 	ld a, [PlayerSubStatus5]
 	bit SUBSTATUS_LOCK_ON, a
-	jr nz, .asm_35f89
+	jr nz, .mimic_random
 
 	call BattleRandom
-	cp $40
-	jr c, .asm_35fb8
+	cp $40 ; 25% chance AI fails
+	jr c, .failed
 
-.asm_35f89
+.mimic_random
 	call CheckSubstituteOpp
-	jr nz, .asm_35fb8
+	jr nz, .failed
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_35fb8
-	call Function35fc9
-	jr z, .asm_35fa4
+	jr nz, .failed
+	call .check_toxic
+	jr z, .toxic
 
-	call Function35fc0
+	call .apply_poison
 	ld hl, WasPoisonedText
 	call StdBattleTextBox
-	jr .asm_35fb1
+	jr .finished
 
-.asm_35fa4
+.toxic
 	set SUBSTATUS_TOXIC, [hl]
 	xor a
 	ld [de], a
-	call Function35fc0
+	call .apply_poison
 
 	ld hl, BadlyPoisonedText
 	call StdBattleTextBox
 
-.asm_35fb1
-	callba Function3dde9
+.finished
+	callba UseHeldStatusHealingItem
 	ret
 
-.asm_35fb8
+.failed
 	push hl
 	call AnimateFailedMove
 	pop hl
@@ -5734,14 +5104,14 @@
 ; 35fc0
 
 
-Function35fc0: ; 35fc0
+.apply_poison: ; 35fc0
 	call AnimateCurrentMove
-	call Function35ff5
+	call PoisonOpponent
 	jp RefreshBattleHuds
 ; 35fc9
 
 
-Function35fc9: ; 35fc9
+.check_toxic: ; 35fc9
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVarAddr
 	ld a, [hBattleTurn]
@@ -5757,7 +5127,7 @@
 ; 35fe1
 
 
-Function35fe1: ; 35fe1
+CheckIfTargetIsPoisonType: ; 35fe1
 	ld de, EnemyMonType1
 	ld a, [hBattleTurn]
 	and a
@@ -5774,7 +5144,7 @@
 ; 35ff5
 
 
-Function35ff5: ; 35ff5
+PoisonOpponent: ; 35ff5
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
 	set PSN, [hl]
@@ -5782,45 +5152,45 @@
 ; 35fff
 
 
-BattleCommand15: ; 35fff
+BattleCommand_DrainTarget: ; 35fff
 ; draintarget
-	call Function36011
+	call SapHealth
 	ld hl, SuckedHealthText
 	jp StdBattleTextBox
 ; 36008
 
 
-BattleCommand16: ; 36008
+BattleCommand_EatDream: ; 36008
 ; eatdream
-	call Function36011
+	call SapHealth
 	ld hl, DreamEatenText
 	jp StdBattleTextBox
 ; 36011
 
 
-Function36011: ; 36011
+SapHealth: ; 36011
 	ld hl, CurDamage
 	ld a, [hli]
 	srl a
-	ld [$ffb3], a
+	ld [hDividend], a
 	ld b, a
 	ld a, [hl]
 	rr a
-	ld [$ffb4], a
+	ld [hDividend + 1], a
 	or b
-	jr nz, .asm_36026 ; 0x36020 $4
+	jr nz, .ok1 ; 0x36020 $4
 	ld a, $1
-	ld [$ffb4], a
-.asm_36026
+	ld [hDividend + 1], a
+.ok1
 	ld hl, BattleMonHP
 	ld de, BattleMonMaxHP
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36037 ; 0x3602f $6
+	jr z, .battlemonhp ; 0x3602f $6
 	ld hl, EnemyMonHP
 	ld de, EnemyMonMaxHP
-.asm_36037
-	ld bc, wd1ed
+.battlemonhp
+	ld bc, Buffer4
 	ld a, [hli]
 	ld [bc], a
 	ld a, [hl]
@@ -5833,17 +5203,17 @@
 	ld a, [de]
 	dec bc
 	ld [bc], a
-	ld a, [$ffb4]
+	ld a, [hDividend + 1]
 	ld b, [hl]
 	add b
 	ld [hld], a
-	ld [wd1ee], a
-	ld a, [$ffb3]
+	ld [Buffer5], a
+	ld a, [hDividend]
 	ld b, [hl]
 	adc b
 	ld [hli], a
-	ld [wd1ef], a
-	jr c, .asm_36064 ; 0x36056 $c
+	ld [Buffer6], a
+	jr c, .okay2 ; 0x36056 $c
 	ld a, [hld]
 	ld b, a
 	ld a, [de]
@@ -5854,33 +5224,33 @@
 	ld a, [de]
 	inc de
 	sbc b
-	jr nc, .asm_36070 ; 0x36062 $c
-.asm_36064
+	jr nc, .okay3 ; 0x36062 $c
+.okay2
 	ld a, [de]
 	ld [hld], a
-	ld [wd1ee], a
+	ld [Buffer5], a
 	dec de
 	ld a, [de]
 	ld [hli], a
-	ld [wd1ef], a
+	ld [Buffer6], a
 	inc de
-.asm_36070
+.okay3
 	ld a, [hBattleTurn]
 	and a
 	hlcoord 10, 9
 	ld a, $1
-	jr z, .asm_3607e ; 0x36078 $4
+	jr z, .hp_bar ; 0x36078 $4
 	hlcoord 2, 2
 	xor a
-.asm_3607e
+.hp_bar
 	ld [wd10a], a
-	predef Functionc6e0
+	predef AnimateHPBar
 	call RefreshBattleHuds
 	jp UpdateBattleMonInParty
 ; 3608c
 
 
-BattleCommand17: ; 3608c
+BattleCommand_BurnTarget: ; 3608c
 ; burntarget
 
 	xor a
@@ -5894,7 +5264,7 @@
 	ld a, [TypeModifier]
 	and $7f
 	ret z
-	call Function36e5b
+	call CheckMoveTypeMatchesTarget ; Don't burn a Fire-type
 	ret z
 	call GetOpponentItem
 	ld a, b
@@ -5903,22 +5273,22 @@
 	ld a, [EffectFailed]
 	and a
 	ret nz
-	call Function37962
+	call SafeCheckSafeguard
 	ret nz
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
 	set BRN, [hl]
 	call UpdateOpponentInParty
-	ld hl, Function3ec76
+	ld hl, ApplyBrnEffectOnAttack
 	call CallBattleCore
 	ld de, ANIM_BRN
-	call Function37e54
+	call PlayOpponentBattleAnim
 	call RefreshBattleHuds
 
 	ld hl, WasBurnedText
 	call StdBattleTextBox
 
-	callba Function3dde9
+	callba UseHeldStatusHealingItem
 	ret
 ; 360dd
 
@@ -5950,7 +5320,7 @@
 ; 36102
 
 
-BattleCommand18: ; 36102
+BattleCommand_FreezeTarget: ; 36102
 ; freezetarget
 
 	xor a
@@ -5967,7 +5337,7 @@
 	ld a, [Weather]
 	cp WEATHER_SUN
 	ret z
-	call Function36e5b
+	call CheckMoveTypeMatchesTarget ; Don't freeze an Ice-type
 	ret z
 	call GetOpponentItem
 	ld a, b
@@ -5976,7 +5346,7 @@
 	ld a, [EffectFailed]
 	and a
 	ret nz
-	call Function37962
+	call SafeCheckSafeguard
 	ret nz
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
@@ -5983,28 +5353,29 @@
 	set FRZ, [hl]
 	call UpdateOpponentInParty
 	ld de, ANIM_FRZ
-	call Function37e54
+	call PlayOpponentBattleAnim
 	call RefreshBattleHuds
 
 	ld hl, WasFrozenText
 	call StdBattleTextBox
 
-	callba Function3dde9
+	callba UseHeldStatusHealingItem
 	ret nz
-	call Function34216
+
+	call OpponentCantMove
 	call EndRechargeOpp
-	ld hl, wc740
+	ld hl, wEnemyJustGotFrozen
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36162
-	ld hl, wc73f
-.asm_36162
+	jr z, .finish
+	ld hl, wPlayerJustGotFrozen
+.finish
 	ld [hl], $1
 	ret
 ; 36165
 
 
-BattleCommand19: ; 36165
+BattleCommand_ParalyzeTarget: ; 36165
 ; paralyzetarget
 
 	xor a
@@ -6025,86 +5396,86 @@
 	ld a, [EffectFailed]
 	and a
 	ret nz
-	call Function37962
+	call SafeCheckSafeguard
 	ret nz
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
 	set PAR, [hl]
 	call UpdateOpponentInParty
-	ld hl, Function3ec39
+	ld hl, ApplyPrzEffectOnSpeed
 	call CallBattleCore
 	ld de, ANIM_PAR
-	call Function37e54
+	call PlayOpponentBattleAnim
 	call RefreshBattleHuds
 	call PrintParalyze
-	ld hl, Function3dde9
+	ld hl, UseHeldStatusHealingItem
 	jp CallBattleCore
 ; 361ac
 
 
-BattleCommand70: ; 361ac
+BattleCommand_AttackUp: ; 361ac
 ; attackup
-	ld b, $0
-	jr BattleCommand1c
-BattleCommand71: ; 361b0
+	ld b, ATTACK
+	jr BattleCommand_StatUp
+BattleCommand_DefenseUp: ; 361b0
 ; defenseup
-	ld b, $1
-	jr BattleCommand1c
-BattleCommand72: ; 361b4
+	ld b, DEFENSE
+	jr BattleCommand_StatUp
+BattleCommand_SpeedUp: ; 361b4
 ; speedup
-	ld b, $2
-	jr BattleCommand1c
-BattleCommand73: ; 361b8
+	ld b, SPEED
+	jr BattleCommand_StatUp
+BattleCommand_SpecialAttackUp: ; 361b8
 ; specialattackup
-	ld b, $3
-	jr BattleCommand1c
-BattleCommand74: ; 361bc
+	ld b, SP_ATTACK
+	jr BattleCommand_StatUp
+BattleCommand_SpecialDefenseUp: ; 361bc
 ; specialdefenseup
-	ld b, $4
-	jr BattleCommand1c
-BattleCommand75: ; 361c0
+	ld b, SP_DEFENSE
+	jr BattleCommand_StatUp
+BattleCommand_AccuracyUp: ; 361c0
 ; accuracyup
-	ld b, $5
-	jr BattleCommand1c
-BattleCommand76: ; 361c4
+	ld b, ACCURACY
+	jr BattleCommand_StatUp
+BattleCommand_EvasionUp: ; 361c4
 ; evasionup
-	ld b, $6
-	jr BattleCommand1c
-BattleCommand77: ; 361c8
+	ld b, EVASION
+	jr BattleCommand_StatUp
+BattleCommand_AttackUp2: ; 361c8
 ; attackup2
-	ld b, $10
-	jr BattleCommand1c
-BattleCommand78: ; 361cc
+	ld b, $10 | ATTACK
+	jr BattleCommand_StatUp
+BattleCommand_DefenseUp2: ; 361cc
 ; defenseup2
-	ld b, $11
-	jr BattleCommand1c
-BattleCommand79: ; 361d0
+	ld b, $10 | DEFENSE
+	jr BattleCommand_StatUp
+BattleCommand_SpeedUp2: ; 361d0
 ; speedup2
-	ld b, $12
-	jr BattleCommand1c
-BattleCommand7a: ; 361d4
+	ld b, $10 | SPEED
+	jr BattleCommand_StatUp
+BattleCommand_SpecialAttackUp2: ; 361d4
 ; specialattackup2
-	ld b, $13
-	jr BattleCommand1c
-BattleCommand7b: ; 361d8
+	ld b, $10 | SP_ATTACK
+	jr BattleCommand_StatUp
+BattleCommand_SpecialDefenseUp2: ; 361d8
 ; specialdefenseup2
-	ld b, $14
-	jr BattleCommand1c
-BattleCommand7c: ; 361dc
+	ld b, $10 | SP_DEFENSE
+	jr BattleCommand_StatUp
+BattleCommand_AccuracyUp2: ; 361dc
 ; accuracyup2
-	ld b, $15
-	jr BattleCommand1c
-BattleCommand7d: ; 361e0
+	ld b, $10 | ACCURACY
+	jr BattleCommand_StatUp
+BattleCommand_EvasionUp2: ; 361e0
 ; evasionup2
-	ld b, $16
-	jr BattleCommand1c
-BattleCommand1c: ; 361e4
+	ld b, $10 | EVASION
+	jr BattleCommand_StatUp
+BattleCommand_StatUp: ; 361e4
 ; statup
 	call CheckIfStatCanBeRaised
 	ld a, [FailedMessage]
 	and a
 	ret nz
-	jp Function36281
+	jp StatUpAnimation
 ; 361ef
 
 
@@ -6114,15 +5485,15 @@
 	ld hl, PlayerStatLevels
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_361fe ; 0x361f9 $3
+	jr z, .got_stat_levels ; 0x361f9 $3
 	ld hl, EnemyStatLevels
-.asm_361fe
+.got_stat_levels
 	ld a, [AttackMissed]
 	and a
-	jp nz, Function3627b
+	jp nz, .stat_raise_failed
 	ld a, [EffectFailed]
 	and a
-	jp nz, Function3627b
+	jp nz, .stat_raise_failed
 	ld a, [LoweredStat]
 	and $f
 	ld c, a
@@ -6132,29 +5503,29 @@
 	inc b
 	ld a, $d
 	cp b
-	jp c, Function36270
+	jp c, .cant_raise_stat
 	ld a, [LoweredStat]
 	and $f0
-	jr z, .asm_3622b ; 0x36222 $7
+	jr z, .got_num_stages ; 0x36222 $7
 	inc b
 	ld a, $d
 	cp b
-	jr nc, .asm_3622b ; 0x36228 $1
+	jr nc, .got_num_stages ; 0x36228 $1
 	ld b, a
-.asm_3622b
+.got_num_stages
 	ld [hl], b
 	push hl
 	ld a, c
 	cp $5
-	jr nc, .asm_36268 ; 0x36230 $36
+	jr nc, .done_calcing_stats ; 0x36230 $36
 	ld hl, BattleMonStats + 1
 	ld de, PlayerStats
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36243 ; 0x3623b $6
+	jr z, .got_stats_pointer ; 0x3623b $6
 	ld hl, EnemyMonStats + 1
 	ld de, EnemyStats
-.asm_36243
+.got_stats_pointer
 	push bc
 	sla c
 	ld b, 0
@@ -6162,25 +5533,25 @@
 	ld a, c
 	add e
 	ld e, a
-	jr nc, .asm_3624f ; 0x3624c $1
+	jr nc, .no_carry ; 0x3624c $1
 	inc d
-.asm_3624f
+.no_carry
 	pop bc
 	ld a, [hld]
 	sub 999 % $100
-	jr nz, .asm_3625b ; 0x36253 $6
+	jr nz, .not_already_max ; 0x36253 $6
 	ld a, [hl]
 	sbc 999 / $100
-	jp z, Function3626e
-.asm_3625b
+	jp z, .stats_already_max
+.not_already_max
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36265 ; 0x3625e $5
-	call Function365fd
-	jr .asm_36268 ; 0x36263 $3
-.asm_36265
-	call Function365d7
-.asm_36268
+	jr z, .calc_player_stats ; 0x3625e $5
+	call CalcEnemyStats
+	jr .done_calcing_stats ; 0x36263 $3
+.calc_player_stats
+	call CalcPlayerStats
+.done_calcing_stats
 	pop hl
 	xor a
 	ld [FailedMessage], a
@@ -6188,7 +5559,7 @@
 ; 3626e
 
 
-Function3626e: ; 3626e
+.stats_already_max: ; 3626e
 	pop hl
 	dec [hl]
 	; fallthrough
@@ -6195,7 +5566,7 @@
 ; 36270
 
 
-Function36270: ; 36270
+.cant_raise_stat: ; 36270
 	ld a, $2
 	ld [FailedMessage], a
 	ld a, $1
@@ -6204,7 +5575,7 @@
 ; 3627b
 
 
-Function3627b: ; 3627b
+.stat_raise_failed: ; 3627b
 	ld a, $1
 	ld [FailedMessage], a
 	ret
@@ -6211,93 +5582,95 @@
 ; 36281
 
 
-Function36281: ; 36281
-	ld bc, wc6fe
+StatUpAnimation: ; 36281
+	ld bc, wPlayerMinimized
 	ld hl, Function3f447
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36292 ; 0x3628a $6
-	ld bc, wc6fa
+	jr z, .do_player ; 0x3628a $6
+	ld bc, wEnemyMinimized
 	ld hl, Function3f486
-.asm_36292
+.do_player
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	cp MINIMIZE
 	ret nz
+
 	ld a, $1
 	ld [bc], a
-	call Function37ed5
+	call _CheckBattleScene
 	ret nc
+
 	xor a
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	call CallBattleCore
 	call WaitBGMap
-	jp BattleCommandaa
+	jp BattleCommand_MoveDelay
 ; 362ad
 
 
-BattleCommand7e: ; 362ad
+BattleCommand_AttackDown: ; 362ad
 ; attackdown
 	ld a, ATTACK
-	jr BattleCommand1d
-BattleCommand7f: ; 362b1
+	jr BattleCommand_StatDown
+BattleCommand_DefenseDown: ; 362b1
 ; defensedown
 	ld a, DEFENSE
-	jr BattleCommand1d
-BattleCommand80: ; 362b5
+	jr BattleCommand_StatDown
+BattleCommand_SpeedDown: ; 362b5
 ; speeddown
 	ld a, SPEED
-	jr BattleCommand1d
-BattleCommand81: ; 362b9
+	jr BattleCommand_StatDown
+BattleCommand_SpecialAttackDown: ; 362b9
 ; specialattackdown
 	ld a, SP_ATTACK
-	jr BattleCommand1d
-BattleCommand82: ; 362bd
+	jr BattleCommand_StatDown
+BattleCommand_SpecialDefenseDown: ; 362bd
 ; specialdefensedown
 	ld a, SP_DEFENSE
-	jr BattleCommand1d
-BattleCommand83: ; 362c1
+	jr BattleCommand_StatDown
+BattleCommand_AccuracyDown: ; 362c1
 ; accuracydown
 	ld a, ACCURACY
-	jr BattleCommand1d
-BattleCommand84: ; 362c5
+	jr BattleCommand_StatDown
+BattleCommand_EvasionDown: ; 362c5
 ; evasiondown
 	ld a, EVASION
-	jr BattleCommand1d
-BattleCommand85: ; 362c9
+	jr BattleCommand_StatDown
+BattleCommand_AttackDown2: ; 362c9
 ; attackdown2
 	ld a, $10 | ATTACK
-	jr BattleCommand1d
-BattleCommand86: ; 362cd
+	jr BattleCommand_StatDown
+BattleCommand_DefenseDown2: ; 362cd
 ; defensedown2
 	ld a, $10 | DEFENSE
-	jr BattleCommand1d
-BattleCommand87: ; 362d1
+	jr BattleCommand_StatDown
+BattleCommand_SpeedDown2: ; 362d1
 ; speeddown2
 	ld a, $10 | SPEED
-	jr BattleCommand1d
-BattleCommand88: ; 362d5
+	jr BattleCommand_StatDown
+BattleCommand_SpecialAttackDown2: ; 362d5
 ; specialattackdown2
 	ld a, $10 | SP_ATTACK
-	jr BattleCommand1d
-BattleCommand89: ; 362d9
+	jr BattleCommand_StatDown
+BattleCommand_SpecialDefenseDown2: ; 362d9
 ; specialdefensedown2
 	ld a, $10 | SP_DEFENSE
-	jr BattleCommand1d
-BattleCommand8a: ; 362dd
+	jr BattleCommand_StatDown
+BattleCommand_AccuracyDown2: ; 362dd
 ; accuracydown2
 	ld a, $10 | ACCURACY
-	jr BattleCommand1d
-BattleCommand8b: ; 362e1
+	jr BattleCommand_StatDown
+BattleCommand_EvasionDown2: ; 362e1
 ; evasiondown2
 	ld a, $10 | EVASION
 
-BattleCommand1d: ; 362e3
+BattleCommand_StatDown: ; 362e3
 ; statdown
 
 	ld [LoweredStat], a
 
-	call Function36391
+	call CheckMist
 	jp nz, .Mist
 
 	ld hl, EnemyStatLevels
@@ -6380,11 +5753,11 @@
 	ld de, EnemyStats
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36366
+	jr z, .do_enemy
 	ld hl, BattleMonAttack + 1
 	ld de, PlayerStats
-.asm_36366
-	call Function3641a
+.do_enemy
+	call TryLowerStat
 	pop hl
 	jr z, .CouldntLower
 
@@ -6417,25 +5790,26 @@
 ; 36391
 
 
-Function36391: ; 36391
+CheckMist: ; 36391
 	ld a, BATTLE_VARS_MOVE_EFFECT
 	call GetBattleVar
 	cp EFFECT_ATTACK_DOWN
-	jr c, .asm_363ae
+	jr c, .dont_check_mist
 	cp EFFECT_EVASION_DOWN + 1
-	jr c, .asm_363b0
+	jr c, .check_mist
 	cp EFFECT_ATTACK_DOWN_2
-	jr c, .asm_363ae
+	jr c, .dont_check_mist
 	cp EFFECT_EVASION_DOWN_2 + 1
-	jr c, .asm_363b0
+	jr c, .check_mist
 	cp EFFECT_ATTACK_DOWN_HIT
-	jr c, .asm_363ae
+	jr c, .dont_check_mist
 	cp EFFECT_EVASION_DOWN_HIT + 1
-	jr c, .asm_363b0
-.asm_363ae
+	jr c, .check_mist
+.dont_check_mist
 	xor a
 	ret
-.asm_363b0
+
+.check_mist
 	ld a, BATTLE_VARS_SUBSTATUS4_OPP
 	call GetBattleVar
 	bit SUBSTATUS_MIST, a
@@ -6443,7 +5817,7 @@
 ; 363b8
 
 
-BattleCommand8c: ; 363b8
+BattleCommand_StatUpMessage: ; 363b8
 	ld a, [FailedMessage]
 	and a
 	ret nz
@@ -6477,7 +5851,7 @@
 ; 363e9
 
 
-BattleCommand8d: ; 363e9
+BattleCommand_StatDownMessage: ; 363e9
 	ld a, [FailedMessage]
 	and a
 	ret nz
@@ -6510,7 +5884,7 @@
 ; 3641a
 
 
-Function3641a: ; 3641a
+TryLowerStat: ; 3641a
 ; Lower stat c from stat struct hl (buffer de).
 
 	push bc
@@ -6521,32 +5895,32 @@
 	ld a, c
 	add e
 	ld e, a
-	jr nc, .asm_36426
+	jr nc, .no_carry
 	inc d
-.asm_36426
+.no_carry
 	pop bc
 
 ; The lowest possible stat is 1.
 	ld a, [hld]
 	sub 1
-	jr nz, .asm_3642f
+	jr nz, .not_min
 	ld a, [hl]
 	and a
 	ret z
 
-.asm_3642f
+.not_min
 	ld a, [hBattleTurn]
 	and a
 	jr z, .Player
 
 	call BattleCommand_SwitchTurn
-	call Function365d7
+	call CalcPlayerStats
 	call BattleCommand_SwitchTurn
 	jr .end
 
 .Player
 	call BattleCommand_SwitchTurn
-	call Function365fd
+	call CalcEnemyStats
 	call BattleCommand_SwitchTurn
 .end
 	ld a, 1
@@ -6555,13 +5929,13 @@
 ; 3644c
 
 
-BattleCommand8e: ; 3644c
+BattleCommand_StatUpFailText: ; 3644c
 ; statupfailtext
 	ld a, [FailedMessage]
 	and a
 	ret z
 	push af
-	call BattleCommandaa
+	call BattleCommand_MoveDelay
 	pop af
 	dec a
 	jp z, TryPrintButItFailed
@@ -6575,13 +5949,13 @@
 ; 3646a
 
 
-BattleCommand8f: ; 3646a
+BattleCommand_StatDownFailText: ; 3646a
 ; statdownfailtext
 	ld a, [FailedMessage]
 	and a
 	ret z
 	push af
-	call BattleCommandaa
+	call BattleCommand_MoveDelay
 	pop af
 	dec a
 	jp z, TryPrintButItFailed
@@ -6626,54 +6000,50 @@
 ; 364e6
 
 
-Table0x364e6: ; 364e6
-	db 25, 100
-	db 28, 100
-	db 33, 100
-	db 40, 100
-	db 50, 100
-	db 66, 100
-; 364f2
-
-
-StatLevelMulipliers: ; 364f2
-	db  1,  1 ; 1.0x
-	db 15, 10 ; 1.5x
-	db  2,  1 ; 2.0x
-	db 25, 10 ; 2.5x
-	db  3,  1 ; 3.0x
-	db 35, 10 ; 3.5x
-	db  4,  1 ; 4.0x
+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
 
 
-BattleCommanda4: ; 36500
+BattleCommand_AllStatsUp: ; 36500
 ; allstatsup
 
 ; Attack
 	call ResetMiss
-	call BattleCommand70
-	call BattleCommand8c
+	call BattleCommand_AttackUp
+	call BattleCommand_StatUpMessage
 
 ; Defense
 	call ResetMiss
-	call BattleCommand71
-	call BattleCommand8c
+	call BattleCommand_DefenseUp
+	call BattleCommand_StatUpMessage
 
 ; Speed
 	call ResetMiss
-	call BattleCommand72
-	call BattleCommand8c
+	call BattleCommand_SpeedUp
+	call BattleCommand_StatUpMessage
 
 ; Special Attack
 	call ResetMiss
-	call BattleCommand73
-	call BattleCommand8c
+	call BattleCommand_SpecialAttackUp
+	call BattleCommand_StatUpMessage
 
 ; Special Defense
 	call ResetMiss
-	call BattleCommand74
-	jp   BattleCommand8c
+	call BattleCommand_SpecialDefenseUp
+	jp   BattleCommand_StatUpMessage
 ; 3652d
 
 
@@ -6684,16 +6054,16 @@
 ; 36532
 
 
-Function36532: ; 36532
+LowerStat: ; 36532
 	ld [LoweredStat], a
 
 	ld hl, PlayerStatLevels
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36540
+	jr z, .got_target
 	ld hl, EnemyStatLevels
 
-.asm_36540
+.got_target
 	ld a, [LoweredStat]
 	and $f
 	ld c, a
@@ -6701,20 +6071,20 @@
 	add hl, bc
 	ld b, [hl]
 	dec b
-	jr z, .asm_36589
+	jr z, .cant_lower_anymore
 
 	ld a, [LoweredStat]
 	and $f0
-	jr z, .asm_36558
+	jr z, .got_num_stages
 	dec b
-	jr nz, .asm_36558
+	jr nz, .got_num_stages
 	inc b
 
-.asm_36558
+.got_num_stages
 	ld [hl], b
 	ld a, c
 	cp 5
-	jr nc, .asm_36576
+	jr nc, .accuracy_evasion
 
 	push hl
 	ld hl, BattleMonStats + 1
@@ -6721,36 +6091,36 @@
 	ld de, PlayerStats
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36570
+	jr z, .got_target_2
 	ld hl, EnemyMonStats + 1
 	ld de, EnemyStats
 
-.asm_36570
-	call Function3641a
+.got_target_2
+	call TryLowerStat
 	pop hl
-	jr z, .asm_36588
+	jr z, .failed
 
-.asm_36576
+.accuracy_evasion
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36580
+	jr z, .player
 
-	call Function365fd
+	call CalcEnemyStats
 
-	jr .asm_36583
+	jr .finish
 
-.asm_36580
-	call Function365d7
+.player
+	call CalcPlayerStats
 
-.asm_36583
+.finish
 	xor a
 	ld [FailedMessage], a
 	ret
 
-.asm_36588
+.failed
 	inc [hl]
 
-.asm_36589
+.cant_lower_anymore
 	ld a, 2
 	ld [FailedMessage], a
 	ret
@@ -6757,10 +6127,10 @@
 ; 3658f
 
 
-BattleCommandac: ; 3658f
+BattleCommand_TriStatusChance: ; 3658f
 ; tristatuschance
 
-	call BattleCommand90
+	call BattleCommand_EffectChance
 
 ; 1/3 chance of each status
 .loop
@@ -6774,13 +6144,13 @@
 	rst JumpTable
 	ret
 .ptrs
-	dw BattleCommand19 ; paralyze
-	dw BattleCommand18 ; freeze
-	dw BattleCommand17 ; burn
+	dw BattleCommand_ParalyzeTarget ; paralyze
+	dw BattleCommand_FreezeTarget ; freeze
+	dw BattleCommand_BurnTarget ; burn
 ; 365a7
 
 
-BattleCommandaf: ; 365a7
+BattleCommand_Curl: ; 365a7
 ; curl
 	ld a, BATTLE_VARS_SUBSTATUS2
 	call GetBattleVarAddr
@@ -6789,41 +6159,41 @@
 ; 365af
 
 
-BattleCommanda6: ; 365af
-	ld hl, Function3f43d
+BattleCommand_RaiseSubNoAnim: ; 365af
+	ld hl, GetMonBackpic
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_365ba ; 365b5 $3
-	ld hl, Function3f47c
-.asm_365ba
+	jr z, .PlayerTurn ; 365b5 $3
+	ld hl, GetMonFrontpic
+.PlayerTurn
 	xor a
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	call CallBattleCore
 	jp WaitBGMap
 ; 365c3
 
 
-BattleCommanda7: ; 365c3
+BattleCommand_LowerSubNoAnim: ; 365c3
 	ld hl, Function3f447
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_365ce ; 365c9 $3
+	jr z, .PlayerTurn ; 365c9 $3
 	ld hl, Function3f486
-.asm_365ce
+.PlayerTurn
 	xor a
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	call CallBattleCore
 	jp WaitBGMap
 ; 365d7
 
 
-Function365d7: ; 365d7
+CalcPlayerStats: ; 365d7
 	ld hl, PlayerAtkLevel
 	ld de, PlayerStats
 	ld bc, BattleMonAttack
 
-	ld a, $5
-	call Function3661d
+	ld a, 5
+	call CalcStats
 
 	ld hl, BadgeStatBoosts
 	call CallBattleCore
@@ -6830,10 +6200,10 @@
 
 	call BattleCommand_SwitchTurn
 
-	ld hl, Function3ec39
+	ld hl, ApplyPrzEffectOnSpeed
 	call CallBattleCore
 
-	ld hl, Function3ec76
+	ld hl, ApplyBrnEffectOnAttack
 	call CallBattleCore
 
 	jp BattleCommand_SwitchTurn
@@ -6840,20 +6210,20 @@
 ; 365fd
 
 
-Function365fd: ; 365fd
+CalcEnemyStats: ; 365fd
 	ld hl, EnemyAtkLevel
 	ld de, EnemyStats
 	ld bc, EnemyMonAttack
 
-	ld a, $5
-	call Function3661d
+	ld a, 5
+	call CalcStats
 
 	call BattleCommand_SwitchTurn
 
-	ld hl, Function3ec39
+	ld hl, ApplyPrzEffectOnSpeed
 	call CallBattleCore
 
-	ld hl, Function3ec76
+	ld hl, ApplyBrnEffectOnAttack
 	call CallBattleCore
 
 	jp BattleCommand_SwitchTurn
@@ -6860,8 +6230,8 @@
 ; 3661d
 
 
-Function3661d: ; 3661d
-.asm_3661d
+CalcStats: ; 3661d
+.loop
 	push af
 	ld a, [hli]
 	push hl
@@ -6870,7 +6240,7 @@
 	ld c, a
 	dec c
 	ld b, 0
-	ld hl, Table0x364e6
+	ld hl, StatLevelMultipliers
 rept 2
 	add hl, bc
 endr
@@ -6897,42 +6267,42 @@
 	ld b, a
 	ld a, [hQuotient + 2]
 	or b
-	jr nz, .asm_36651
+	jr nz, .check_maxed_out
 
 	ld a, 1
 	ld [hQuotient + 2], a
-	jr .asm_36662
+	jr .not_maxed_out
 
-.asm_36651
+.check_maxed_out
 	ld a, [hQuotient + 2]
 	cp 999 % $100
 	ld a, b
 	sbc 999 / $100
-	jr c, .asm_36662
+	jr c, .not_maxed_out
 
 	ld a, 999 % $100
-	ld [$ffb6], a
+	ld [hQuotient + 2], a
 	ld a, 999 / $100
-	ld [$ffb5], a
+	ld [hQuotient + 1], a
 
-.asm_36662
+.not_maxed_out
 	pop bc
-	ld a, [$ffb5]
+	ld a, [hQuotient + 1]
 	ld [bc], a
 	inc bc
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	ld [bc], a
 	inc bc
 	pop hl
 	pop af
 	dec a
-	jr nz, .asm_3661d
+	jr nz, .loop
 
 	ret
 ; 36671
 
 
-BattleCommand21: ; 36671
+BattleCommand_StoreEnergy: ; 36671
 ; storeenergy
 
 	ld a, BATTLE_VARS_SUBSTATUS3
@@ -6943,11 +6313,11 @@
 	ld hl, PlayerRolloutCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36684
+	jr z, .check_still_storing_energy
 	ld hl, EnemyRolloutCount
-.asm_36684
+.check_still_storing_energy
 	dec [hl]
-	jr nz, .asm_366dc
+	jr nz, .still_storing
 
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
@@ -6961,13 +6331,13 @@
 	ld a, 1
 	ld [hl], a
 	ld hl, PlayerDamageTaken + 1
-	ld de, wc732
+	ld de, wPlayerCharging ; player
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_366ad
+	jr z, .player
 	ld hl, EnemyDamageTaken + 1
-	ld de, wc733
-.asm_366ad
+	ld de, wEnemyCharging ; enemy
+.player
 	ld a, [hld]
 	add a
 	ld b, a
@@ -6975,16 +6345,16 @@
 	ld a, [hl]
 	rl a
 	ld [CurDamage], a
-	jr nc, .asm_366c3
+	jr nc, .not_maxed
 	ld a, $ff
 	ld [CurDamage], a
 	ld [CurDamage + 1], a
-.asm_366c3
+.not_maxed
 	or b
-	jr nz, .asm_366cb
+	jr nz, .built_up_something
 	ld a, 1
 	ld [AttackMissed], a
-.asm_366cb
+.built_up_something
 	xor a
 	ld [hli], a
 	ld [hl], a
@@ -6998,7 +6368,7 @@
 	ld b, unleashenergy_command
 	jp SkipToBattleCommand
 
-.asm_366dc
+.still_storing
 	ld hl, StoringEnergyText
 	call StdBattleTextBox
 	jp EndMoveEffect
@@ -7005,7 +6375,7 @@
 ; 366e5
 
 
-BattleCommand22: ; 366e5
+BattleCommand_UnleashEnergy: ; 366e5
 ; unleashenergy
 
 	ld de, PlayerDamageTaken
@@ -7032,51 +6402,53 @@
 endr
 	ld [bc], a
 	ld a, 1
-	ld [wc689], a
+	ld [wKickCounter], a
 	call AnimateCurrentMove
 	jp EndMoveEffect
 ; 3671a
 
 
-BattleCommand3e: ; 3671a
+BattleCommand_CheckRampage: ; 3671a
 ; checkrampage
 
 	ld de, PlayerRolloutCount
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36725 ; 36720 $3
+	jr z, .player ; 36720 $3
 	ld de, EnemyRolloutCount
-.asm_36725
+.player
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
-	bit 1, [hl]
+	bit SUBSTATUS_RAMPAGE, [hl]
 	ret z
 	ld a, [de]
 	dec a
 	ld [de], a
-	jr nz, .asm_3674c ; 36730 $1a
-	res 1, [hl]
+	jr nz, .continue_rampage ; 36730 $1a
+
+	res SUBSTATUS_RAMPAGE, [hl]
 	call BattleCommand_SwitchTurn
-	call Function37962
+	call SafeCheckSafeguard
 	push af
 	call BattleCommand_SwitchTurn
 	pop af
-	jr nz, .asm_3674c ; 3673f $b
-	set 7, [hl]
+	jr nz, .continue_rampage ; 3673f $b
+
+	set SUBSTATUS_CONFUSED, [hl]
 	call BattleRandom
-	and $1
+	and %00000001
 rept 2
 	inc a
 endr
-	inc de
+	inc de ; ConfuseCount
 	ld [de], a
-.asm_3674c
+.continue_rampage
 	ld b, rampage_command
 	jp SkipToBattleCommand
 ; 36751
 
 
-BattleCommand3d: ; 36751
+BattleCommand_Rampage: ; 36751
 ; rampage
 
 ; No rampage during Sleep Talk.
@@ -7094,8 +6466,9 @@
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	set SUBSTATUS_RAMPAGE, [hl]
+; Rampage for 1 or 2 more turns
 	call BattleRandom
-	and 1
+	and %00000001
 	inc a
 	ld [de], a
 	ld a, 1
@@ -7104,7 +6477,7 @@
 ; 36778
 
 
-BattleCommanda0: ; 36778
+BattleCommand_Teleport: ; 36778
 ; teleport
 
 	ld a, [BattleType]
@@ -7121,34 +6494,39 @@
 	call GetBattleVar
 	bit SUBSTATUS_CANT_RUN, a
 	jr nz, .failed
+; Only need to check these next things if it's your turn
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_367bf
+	jr nz, .enemy_turn
+; Can't teleport from a trainer battle
 	ld a, [wBattleMode]
 	dec a
 	jr nz, .failed
+; If your level is greater than the opponent's, you run without fail.
 	ld a, [CurPartyLevel]
 	ld b, a
 	ld a, [BattleMonLevel]
 	cp b
-	jr nc, .asm_367df
+	jr nc, .run_away
+; Generate a number between 0 and (YourLevel + TheirLevel).
 	add b
 	ld c, a
 	inc c
-.asm_367ac
+.loop_player
 	call BattleRandom
 	cp c
-	jr nc, .asm_367ac ; 367b0 $fa
+	jr nc, .loop_player ; 367b0 $fa
+; If that number is greater than 4 times your level, run away.
 	srl b
 	srl b
 	cp b
-	jr nc, .asm_367df ; 367b7 $26
+	jr nc, .run_away ; 367b7 $26
 
 .failed
 	call AnimateFailedMove
 	jp PrintButItFailed
 
-.asm_367bf
+.enemy_turn
 	ld a, [wBattleMode]
 	dec a
 	jr nz, .failed
@@ -7156,31 +6534,31 @@
 	ld b, a
 	ld a, [CurPartyLevel]
 	cp b
-	jr nc, .asm_367df ; 367cd $10
+	jr nc, .run_away ; 367cd $10
 	add b
 	ld c, a
 	inc c
-.asm_367d2
+.loop_enemy
 	call BattleRandom
 	cp c
-	jr nc, .asm_367d2 ; 367d6 $fa
+	jr nc, .loop_enemy ; 367d6 $fa
 	srl b
 	srl b
 	cp b
-	jr nc, .asm_367df ; 367dd $0
-.asm_367df
+	jr nc, .run_away ; 367dd $0
+.run_away
 	call UpdateBattleMonInParty
 	xor a
 	ld [wcfca], a
 	inc a
-	ld [wd232], a
-	ld [wc689], a
-	call Function36804
-	call BattleCommand0a
-	call Function37e36
+	ld [wForcedSwitch], a
+	ld [wKickCounter], a
+	call SetBattleDraw
+	call BattleCommand_LowerSub
+	call LoadMoveAnim
 	ld c, 20
 	call DelayFrames
-	call Function36804
+	call SetBattleDraw
 
 	ld hl, FledFromBattleText
 	jp StdBattleTextBox
@@ -7187,7 +6565,7 @@
 ; 36804
 
 
-Function36804: ; 36804
+SetBattleDraw: ; 36804
 	ld a, [wBattleResult]
 	and $c0
 	or $2
@@ -7196,63 +6574,65 @@
 ; 3680f
 
 
-BattleCommand23: ; 3680f
+BattleCommand_ForceSwitch: ; 3680f
 ; forceswitch
 
 	ld a, [BattleType]
 	cp BATTLETYPE_SHINY
-	jp z, .asm_36969
+	jp z, .fail
 	cp BATTLETYPE_TRAP
-	jp z, .asm_36969
+	jp z, .fail
 	cp BATTLETYPE_CELEBI
-	jp z, .asm_36969
+	jp z, .fail
 	cp BATTLETYPE_SUICUNE
-	jp z, .asm_36969
+	jp z, .fail
 	ld a, [hBattleTurn]
 	and a
-	jp nz, .asm_368cd
+	jp nz, .force_player_switch
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_36852 ; 36830 $20
+	jr nz, .missed ; 36830 $20
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .asm_36869 ; 36836 $31
+	jr nz, .trainer ; 36836 $31
 	ld a, [CurPartyLevel]
 	ld b, a
 	ld a, [BattleMonLevel]
 	cp b
-	jr nc, .asm_36855 ; 36840 $13
+	jr nc, .wild_force_flee ; 36840 $13
 	add b
 	ld c, a
 	inc c
-.asm_36845
+.random_loop_wild
 	call BattleRandom
 	cp c
-	jr nc, .asm_36845 ; 36849 $fa
+	jr nc, .random_loop_wild ; 36849 $fa
 	srl b
 	srl b
 	cp b
-	jr nc, .asm_36855 ; 36850 $3
-.asm_36852
-	jp .asm_36969
-.asm_36855
+	jr nc, .wild_force_flee ; 36850 $3
+.missed
+	jp .fail
+
+.wild_force_flee
 	call UpdateBattleMonInParty
 	xor a
 	ld [wcfca], a
 	inc a
-	ld [wd232], a
-	call Function36804
+	ld [wForcedSwitch], a
+	call SetBattleDraw
 	ld a, [wPlayerMoveStruct + MOVE_ANIM]
-	jp .asm_36975
-.asm_36869
-	call CountEnemyAliveMons
-	jr c, .asm_368ca ; 3686c $5c
-	ld a, [wc70f]
+	jp .succeed
+
+.trainer
+	call FindAliveEnemyMons
+	jr c, .switch_fail ; 3686c $5c
+	ld a, [wEnemyGoesFirst]
 	and a
-	jr z, .asm_368ca ; 36872 $56
+	jr z, .switch_fail ; 36872 $56
 	call UpdateEnemyMonInParty
 	ld a, $1
-	ld [wc689], a
+	ld [wKickCounter], a
 	call AnimateCurrentMove
 	ld c, $14
 	call DelayFrames
@@ -7259,19 +6639,20 @@
 	hlcoord 1, 0
 	lb bc, 4, 10
 	call ClearBox
-	ld c, $14
+	ld c, 20
 	call DelayFrames
 	ld a, [OTPartyCount]
 	ld b, a
 	ld a, [CurOTMon]
 	ld c, a
-.asm_3689a
+; select a random enemy mon to switch to
+.random_loop_trainer
 	call BattleRandom
 	and $7
 	cp b
-	jr nc, .asm_3689a ; 368a0 $f8
+	jr nc, .random_loop_trainer ; 368a0 $f8
 	cp c
-	jr z, .asm_3689a ; 368a3 $f5
+	jr z, .random_loop_trainer ; 368a3 $f5
 	push af
 	push bc
 	ld hl, OTPartyMon1HP
@@ -7280,11 +6661,11 @@
 	or [hl]
 	pop bc
 	pop de
-	jr z, .asm_3689a ; 368b1 $e7
+	jr z, .random_loop_trainer ; 368b1 $e7
 	ld a, d
 	inc a
-	ld [wc718], a
-	callab Function3d4c3
+	ld [wEnemySwitchMonIndex], a
+	callab ForceEnemySwitch
 
 	ld hl, DraggedOutText
 	call StdBattleTextBox
@@ -7292,81 +6673,81 @@
 	ld hl, SpikesDamage
 	jp CallBattleCore
 
-.asm_368ca
-	jp .asm_36969
+.switch_fail
+	jp .fail
 
-.asm_368cd
+.force_player_switch
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_368f3
+	jr nz, .player_miss
 
 	ld a, [wBattleMode]
 	dec a
-	jr nz, .asm_36908
+	jr nz, .vs_trainer
 
 	ld a, [BattleMonLevel]
 	ld b, a
 	ld a, [CurPartyLevel]
 	cp b
-	jr nc, .asm_368f5
+	jr nc, .wild_succeed_playeristarget
 
 	add b
 	ld c, a
 	inc c
-.asm_368e6
+.wild_random_loop_playeristarget
 	call BattleRandom
 	cp c
-	jr nc, .asm_368e6
+	jr nc, .wild_random_loop_playeristarget
 
 	srl b
 	srl b
 	cp b
-	jr nc, .asm_368f5
+	jr nc, .wild_succeed_playeristarget
 
-.asm_368f3
-	jr .asm_36969
+.player_miss
+	jr .fail
 
-.asm_368f5
+.wild_succeed_playeristarget
 	call UpdateBattleMonInParty
 	xor a
 	ld [wcfca], a
 	inc a
-	ld [wd232], a
-	call Function36804
+	ld [wForcedSwitch], a
+	call SetBattleDraw
 	ld a, [wEnemyMoveStruct + MOVE_ANIM]
-	jr .asm_36975
+	jr .succeed
 
-.asm_36908
-	call Function36994
-	jr c, .asm_36969
+.vs_trainer
+	call CheckPlayerHasMonToSwitchTo
+	jr c, .fail
 
-	ld a, [wc70f]
+	ld a, [wEnemyGoesFirst]
 	cp $1
-	jr z, .asm_368ca
+	jr z, .switch_fail
 
 	call UpdateBattleMonInParty
 	ld a, $1
-	ld [wc689], a
+	ld [wKickCounter], a
 	call AnimateCurrentMove
-	ld c, $14
+	ld c, 20
 	call DelayFrames
 	hlcoord 9, 7
 	lb bc, 5, 11
 	call ClearBox
-	ld c, $14
+	ld c, 20
 	call DelayFrames
 	ld a, [PartyCount]
 	ld b, a
 	ld a, [CurBattleMon]
 	ld c, a
-.asm_3693a
+.random_loop_trainer_playeristarget
 	call BattleRandom
 	and $7
 	cp b
-	jr nc, .asm_3693a
+	jr nc, .random_loop_trainer_playeristarget
 
 	cp c
-	jr z, .asm_3693a
+	jr z, .random_loop_trainer_playeristarget
 
 	push af
 	push bc
@@ -7376,11 +6757,11 @@
 	or [hl]
 	pop bc
 	pop de
-	jr z, .asm_3693a
+	jr z, .random_loop_trainer_playeristarget
 
 	ld a, d
 	ld [CurPartyMon], a
-	ld hl, Function3db32
+	ld hl, SwitchPlayerMon
 	call CallBattleCore
 
 	ld hl, DraggedOutText
@@ -7389,40 +6770,40 @@
 	ld hl, SpikesDamage
 	jp CallBattleCore
 
-.asm_36969
-	call BattleCommand0a
-	call BattleCommandaa
-	call BattleCommand0c
+.fail
+	call BattleCommand_LowerSub
+	call BattleCommand_MoveDelay
+	call BattleCommand_RaiseSub
 	jp PrintButItFailed
 
-.asm_36975
+.succeed
 	push af
-	call Function36804
+	call SetBattleDraw
 	ld a, $1
-	ld [wc689], a
+	ld [wKickCounter], a
 	call AnimateCurrentMove
-	ld c, $14
+	ld c, 20
 	call DelayFrames
 	pop af
 
 	ld hl, FledInFearText
-	cp $2e
-	jr z, .asm_36991
+	cp ROAR
+	jr z, .do_text
 	ld hl, BlownAwayText
-.asm_36991
+.do_text
 	jp StdBattleTextBox
 ; 36994
 
 
-Function36994: ; 36994
+CheckPlayerHasMonToSwitchTo: ; 36994
 	ld a, [PartyCount]
 	ld d, a
 	ld e, 0
-	ld bc, PartyMon2 - PartyMon1
-.asm_3699d
+	ld bc, PARTYMON_STRUCT_LENGTH
+.loop
 	ld a, [CurBattleMon]
 	cp e
-	jr z, .asm_369ae
+	jr z, .next
 
 	ld a, e
 	ld hl, PartyMon1HP
@@ -7429,23 +6810,23 @@
 	call AddNTimes
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_369b4
+	jr nz, .not_fainted
 
-.asm_369ae
+.next
 	inc e
 	dec d
-	jr nz, .asm_3699d
+	jr nz, .loop
 
 	scf
 	ret
 
-.asm_369b4
+.not_fainted
 	and a
 	ret
 ; 369b6
 
 
-BattleCommand24: ; 369b6
+BattleCommand_EndLoop: ; 369b6
 ; endloop
 
 ; Loop back to the command before 'critical'.
@@ -7578,23 +6959,23 @@
 ; 36a82
 
 
-BattleCommand94: ; 36a82
+BattleCommand_FakeOut: ; 36a82
 	ld a, [AttackMissed]
 	and a
 	ret nz
 
 	call CheckSubstituteOpp
-	jr nz, .asm_36a9a
+	jr nz, .fail
 
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVar
 	and 1 << FRZ | SLP
-	jr nz, .asm_36a9a
+	jr nz, .fail
 
-	call Function36abf
-	jr z, Function36ab5
+	call CheckOpponentWentFirst
+	jr z, FlinchTarget
 
-.asm_36a9a
+.fail
 	ld a, 1
 	ld [AttackMissed], a
 	ret
@@ -7601,7 +6982,7 @@
 ; 36aa0
 
 
-BattleCommand25: ; 36aa0
+BattleCommand_FlinchTarget: ; 36aa0
 	call CheckSubstituteOpp
 	ret nz
 
@@ -7610,7 +6991,7 @@
 	and 1 << FRZ | SLP
 	ret nz
 
-	call Function36abf
+	call CheckOpponentWentFirst
 	ret nz
 
 	ld a, [EffectFailed]
@@ -7621,7 +7002,7 @@
 ; 36ab5
 
 
-Function36ab5: ; 36ab5
+FlinchTarget: ; 36ab5
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVarAddr
 	set SUBSTATUS_FLINCHED, [hl]
@@ -7629,18 +7010,20 @@
 ; 36abf
 
 
-Function36abf: ; 36abf
+CheckOpponentWentFirst: ; 36abf
+; Returns a=0, z if user went first
+; Returns a=1, nz if opponent went first
 	push bc
-	ld a, [wc70f]
+	ld a, [wEnemyGoesFirst] ; 0 if player went first
 	ld b, a
-	ld a, [hBattleTurn]
-	xor b
+	ld a, [hBattleTurn] ; 0 if it's the player's turn
+	xor b ; 1 if opponent went first
 	pop bc
 	ret
 ; 36ac9
 
 
-BattleCommand4d: ; 36ac9
+BattleCommand_KingsRock: ; 36ac9
 ; kingsrock
 
 	ld a, [AttackMissed]
@@ -7670,7 +7053,7 @@
 ; 36af3
 
 
-BattleCommand26: ; 36af3
+BattleCommand_OHKO: ; 36af3
 ; ohko
 
 	call ResetDamage
@@ -7700,7 +7083,7 @@
 	ld a, $ff
 .asm_36b1e
 	ld [bc], a
-	call BattleCommand09
+	call BattleCommand_CheckHit
 	ld hl, CurDamage
 	ld a, $ff
 	ld [hli], a
@@ -7717,7 +7100,7 @@
 ; 36b3a
 
 
-BattleCommand3a: ; 36b3a
+BattleCommand_CheckCharge: ; 36b3a
 ; checkcharge
 
 	ld a, BATTLE_VARS_SUBSTATUS3
@@ -7732,21 +7115,21 @@
 ; 36b4d
 
 
-BattleCommand39: ; 36b4d
+BattleCommand_Charge: ; 36b4d
 ; charge
 
-	call BattleCommand38
+	call BattleCommand_ClearText
 	ld a, BATTLE_VARS_STATUS
 	call GetBattleVar
 	and SLP
-	jr z, .asm_36b65
+	jr z, .awake
 
-	call BattleCommandaa
-	call BattleCommand0c
+	call BattleCommand_MoveDelay
+	call BattleCommand_RaiseSub
 	call PrintButItFailed
 	jp EndMoveEffect
 
-.asm_36b65
+.awake
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	set SUBSTATUS_CHARGED, [hl]
@@ -7756,23 +7139,23 @@
 	and a
 	call nz, StdBattleTextBox
 
-	call BattleCommand0a
+	call BattleCommand_LowerSub
 	xor a
 	ld [wcfca], a
 	inc a
-	ld [wc689], a
-	call Function37e36
+	ld [wKickCounter], a
+	call LoadMoveAnim
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
 	cp FLY
-	jr z, .asm_36b96
+	jr z, .flying
 	cp DIG
-	jr z, .asm_36b96
-	call BattleCommand0c
-	jr .asm_36b99
-.asm_36b96
-	call Function37ec0
-.asm_36b99
+	jr z, .flying
+	call BattleCommand_RaiseSub
+	jr .not_flying
+.flying
+	call DisappearUser
+.not_flying
 	ld a, BATTLE_VARS_SUBSTATUS3
 	call GetBattleVarAddr
 	ld a, BATTLE_VARS_MOVE_ANIM
@@ -7779,18 +7162,18 @@
 	call GetBattleVar
 	ld b, a
 	cp FLY
-	jr z, .asm_36bb0
+	jr z, .set_flying
 	cp DIG
-	jr nz, .asm_36bb2
+	jr nz, .dont_set_digging
 	set SUBSTATUS_UNDERGROUND, [hl]
-	jr .asm_36bb2
+	jr .dont_set_digging
 
-.asm_36bb0
+.set_flying
 	set SUBSTATUS_FLYING, [hl]
 
-.asm_36bb2
-	call Function34548
-	jr nz, .asm_36bc3
+.dont_set_digging
+	call CheckUserIsCharging
+	jr nz, .mimic
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE
 	call GetBattleVarAddr
 	ld [hl], b
@@ -7798,7 +7181,7 @@
 	call GetBattleVarAddr
 	ld [hl], b
 
-.asm_36bc3
+.mimic
 	call ResetDamage
 
 	ld hl, .UsedText
@@ -7881,19 +7264,19 @@
 ; 36c2d
 
 
-BattleCommand3b: ; 36c2d
+BattleCommand_TrapTarget: ; 36c2d
 ; traptarget
 
 	ld a, [AttackMissed]
 	and a
 	ret nz
-	ld hl, wc731
-	ld de, wc72f
+	ld hl, wEnemyWrapCount
+	ld de, wEnemyTrappingMove
 	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_36c43
-	ld hl, wc730
-	ld de, wc72e
+	ld hl, wPlayerWrapCount
+	ld de, wPlayerTrappingMove
 
 .asm_36c43
 	ld a, [hl]
@@ -7939,7 +7322,7 @@
 ; 36c7e
 
 
-BattleCommand28: ; 36c7e
+BattleCommand_Mist: ; 36c7e
 ; mist
 
 	ld a, BATTLE_VARS_SUBSTATUS4
@@ -7956,7 +7339,7 @@
 ; 36c98
 
 
-BattleCommand29: ; 36c98
+BattleCommand_FocusEnergy: ; 36c98
 ; focusenergy
 
 	ld a, BATTLE_VARS_SUBSTATUS4
@@ -7973,7 +7356,7 @@
 ; 36cb2
 
 
-BattleCommand27: ; 36cb2
+BattleCommand_Recoil: ; 36cb2
 ; recoil
 
 	ld hl, BattleMonMaxHP
@@ -8006,20 +7389,20 @@
 	dec hl
 endr
 	ld a, [hl]
-	ld [wd1ec], a
+	ld [Buffer3], a
 	sub c
 	ld [hld], a
-	ld [wd1ee], a
+	ld [Buffer5], a
 	ld a, [hl]
-	ld [wd1ed], a
+	ld [Buffer4], a
 	sbc b
 	ld [hl], a
-	ld [wd1ef], a
+	ld [Buffer6], a
 	jr nc, .asm_36cfe
 	xor a
 	ld [hli], a
 	ld [hl], a
-	ld hl, wd1ee
+	ld hl, Buffer5
 	ld [hli], a
 	ld [hl], a
 .asm_36cfe
@@ -8032,7 +7415,7 @@
 	xor a
 .asm_36d0c
 	ld [wd10a], a
-	predef Functionc6e0
+	predef AnimateHPBar
 	call RefreshBattleHuds
 	ld hl, RecoilText
 	jp StdBattleTextBox
@@ -8039,7 +7422,7 @@
 ; 36d1d
 
 
-BattleCommand2b: ; 36d1d
+BattleCommand_ConfuseTarget: ; 36d1d
 ; confusetarget
 
 	call GetOpponentItem
@@ -8049,7 +7432,7 @@
 	ld a, [EffectFailed]
 	and a
 	ret nz
-	call Function37962
+	call SafeCheckSafeguard
 	ret nz
 	call CheckSubstituteOpp
 	ret nz
@@ -8060,7 +7443,7 @@
 	jr Function36d70
 
 
-BattleCommand2a: ; 36d3b
+BattleCommand_Confuse: ; 36d3b
 ; confuse
 
 	call GetOpponentItem
@@ -8068,7 +7451,7 @@
 	cp HELD_PREVENT_CONFUSE
 	jr nz, .asm_36d53
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	call AnimateFailedMove
 	ld hl, ProtectedByText
@@ -8122,7 +7505,7 @@
 
 .asm_36d99
 	ld de, ANIM_CONFUSED
-	call Function37e54
+	call PlayOpponentBattleAnim
 
 	ld hl, BecameConfusedText
 	call StdBattleTextBox
@@ -8134,7 +7517,7 @@
 	cp HELD_HEAL_CONFUSION
 	ret nz
 .asm_36db0
-	ld hl, Function3de51
+	ld hl, HandleStatusHealingItem
 	jp CallBattleCore
 ; 36db6
 
@@ -8151,7 +7534,7 @@
 ; 36dc7
 
 
-BattleCommand30: ; 36dc7
+BattleCommand_Paralyze: ; 36dc7
 ; paralyze
 
 	ld a, BATTLE_VARS_STATUS_OPP
@@ -8166,7 +7549,7 @@
 	cp HELD_PREVENT_PARALYZE
 	jr nz, .asm_36def
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetItemName
 	call AnimateFailedMove
 	ld hl, ProtectedByText
@@ -8207,16 +7590,16 @@
 	call DelayFrames
 	call AnimateCurrentMove
 	ld a, $1
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	ld a, BATTLE_VARS_STATUS_OPP
 	call GetBattleVarAddr
 	set PAR, [hl]
 	call UpdateOpponentInParty
-	ld hl, Function3ec39
+	ld hl, ApplyPrzEffectOnSpeed
 	call CallBattleCore
 	call UpdateBattleHuds
 	call PrintParalyze
-	ld hl, Function3dde9
+	ld hl, UseHeldStatusHealingItem
 	jp CallBattleCore
 .asm_36e49
 	call AnimateFailedMove
@@ -8230,7 +7613,7 @@
 ; 36e5b
 
 
-Function36e5b: ; 36e5b
+CheckMoveTypeMatchesTarget: ; 36e5b
 ; Compare move type to opponent type.
 ; Return z if matching the opponent type,
 ; unless the move is Normal (Tri Attack).
@@ -8267,10 +7650,10 @@
 ; 36e7c
 
 
-BattleCommand31: ; 36e7c
+BattleCommand_Substitute: ; 36e7c
 ; substitute
 
-	call BattleCommandaa
+	call BattleCommand_MoveDelay
 	ld hl, BattleMonMaxHP
 	ld de, PlayerSubstituteHP
 	ld a, [hBattleTurn]
@@ -8283,7 +7666,7 @@
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVar
 	bit SUBSTATUS_SUBSTITUTE, a
-	jr nz, .asm_36ef4
+	jr nz, .already_has_sub
 
 	ld a, [hli]
 	ld b, [hl]
@@ -8302,10 +7685,10 @@
 	ld a, [hl]
 	sbc 0
 	ld d, a
-	jr c, .asm_36eff
+	jr c, .too_weak_to_sub
 	ld a, d
 	or e
-	jr z, .asm_36eff
+	jr z, .too_weak_to_sub
 	ld [hl], d
 	inc hl
 	ld [hl], e
@@ -8314,51 +7697,51 @@
 	call GetBattleVarAddr
 	set SUBSTATUS_SUBSTITUTE, [hl]
 
-	ld hl, wc730
-	ld de, wc72e
+	ld hl, wPlayerWrapCount
+	ld de, wPlayerTrappingMove
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36ecf
-	ld hl, wc731
-	ld de, wc72f
-.asm_36ecf
+	jr z, .player
+	ld hl, wEnemyWrapCount
+	ld de, wEnemyTrappingMove
+.player
 
 	xor a
 	ld [hl], a
 	ld [de], a
-	call Function37ed5
-	jr c, .asm_36ee8
+	call _CheckBattleScene
+	jr c, .mobile
 
 	xor a
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld a, SUBSTITUTE
-	call Function37e44
-	jr .asm_36eeb
+	call LoadAnim
+	jr .finish
 
-.asm_36ee8
-	call BattleCommanda6
-.asm_36eeb
+.mobile
+	call BattleCommand_RaiseSubNoAnim
+.finish
 	ld hl, MadeSubstituteText
 	call StdBattleTextBox
 	jp RefreshBattleHuds
 
-.asm_36ef4
-	call Function34548
-	call nz, BattleCommand0c
+.already_has_sub
+	call CheckUserIsCharging
+	call nz, BattleCommand_RaiseSub
 	ld hl, HasSubstituteText
-	jr .asm_36f08
+	jr .jp_stdbattletextbox
 
-.asm_36eff
-	call Function34548
-	call nz, BattleCommand0c
+.too_weak_to_sub
+	call CheckUserIsCharging
+	call nz, BattleCommand_RaiseSub
 	ld hl, TooWeakSubText
-.asm_36f08
+.jp_stdbattletextbox
 	jp StdBattleTextBox
 ; 36f0b
 
-BattleCommand32: ; 36f0b
+BattleCommand_RechargeNextTurn: ; 36f0b
 ; rechargenextturn
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
@@ -8377,7 +7760,7 @@
 ; 36f1d
 
 
-BattleCommand97: ; 36f1d
+BattleCommand_Rage: ; 36f1d
 ; rage
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
@@ -8386,7 +7769,7 @@
 ; 36f25
 
 
-BattleCommand98: ; 36f25
+BattleCommand_DoubleFlyingDamage: ; 36f25
 ; doubleflyingdamage
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
@@ -8396,7 +7779,7 @@
 ; 36f2f
 
 
-BattleCommand99: ; 36f2f
+BattleCommand_DoubleUndergroundDamage: ; 36f2f
 ; doubleundergrounddamage
 	ld a, BATTLE_VARS_SUBSTATUS3_OPP
 	call GetBattleVar
@@ -8422,46 +7805,46 @@
 ; 36f46
 
 
-BattleCommand33: ; 36f46
+BattleCommand_Mimic: ; 36f46
 ; mimic
 
-	call Function372d8
-	call BattleCommandaa
+	call ClearLastMove
+	call BattleCommand_MoveDelay
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_36f9a
+	jr nz, .fail
 	ld hl, BattleMonMoves
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_36f5d
+	jr z, .player_turn
 	ld hl, EnemyMonMoves
-.asm_36f5d
+.player_turn
 	call CheckHiddenOpponent
-	jr nz, .asm_36f9a
+	jr nz, .fail
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	and a
-	jr z, .asm_36f9a
+	jr z, .fail
 	cp STRUGGLE
-	jr z, .asm_36f9a
+	jr z, .fail
 	ld b, a
 	ld c, NUM_MOVES
-.asm_36f71
+.check_already_knows_move
 	ld a, [hli]
 	cp b
-	jr z, .asm_36f9a
+	jr z, .fail
 	dec c
-	jr nz, .asm_36f71
+	jr nz, .check_already_knows_move
 	dec hl
-.asm_36f79
+.find_mimic
 	ld a, [hld]
 	cp MIMIC
-	jr nz, .asm_36f79
+	jr nz, .find_mimic
 	inc hl
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	ld [hl], a
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	ld bc, BattleMonPP - BattleMonMoves
 	add hl, bc
 	ld [hl], 5
@@ -8469,12 +7852,13 @@
 	call AnimateCurrentMove
 	ld hl, LearnedMoveText
 	jp StdBattleTextBox
-.asm_36f9a
-	jp Function37357
+
+.fail
+	jp FailMimic
 ; 36f9d
 
 
-BattleCommand35: ; 36f9d
+BattleCommand_LeechSeed: ; 36f9d
 ; leechseed
 	ld a, [AttackMissed]
 	and a
@@ -8517,7 +7901,7 @@
 ; 36fe1
 
 
-BattleCommand36: ; 36fe1
+BattleCommand_Splash: ; 36fe1
 	call AnimateCurrentMove
 	callba MobileFn_1060e5
 	jp PrintNothingHappened
@@ -8524,7 +7908,7 @@
 ; 36fed
 
 
-BattleCommand37: ; 36fed
+BattleCommand_Disable: ; 36fed
 ; disable
 
 	ld a, [AttackMissed]
@@ -8589,16 +7973,16 @@
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
 	call GetBattleVar
 	ld [hl], a
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetMoveName
 	ld hl, WasDisabledText
 	jp StdBattleTextBox
 .asm_37059
-	jp Function37354
+	jp FailDisable
 ; 3705c
 
 
-BattleCommand1e: ; 3705c
+BattleCommand_PayDay: ; 3705c
 ; payday
 
 	xor a
@@ -8627,7 +8011,7 @@
 ; 3707f
 
 
-BattleCommand1f: ; 3707f
+BattleCommand_Conversion: ; 3707f
 ; conversion
 
 	ld hl, BattleMonMoves
@@ -8716,7 +8100,7 @@
 	ld [de], a
 	inc de
 	ld [de], a
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	callba GetTypeName
 	call AnimateCurrentMove
 	ld hl, TransformedTypeText
@@ -8724,7 +8108,7 @@
 ; 3710e
 
 
-BattleCommand20: ; 3710e
+BattleCommand_ResetStats: ; 3710e
 ; resetstats
 
 	ld a, 7 ; neutral
@@ -8737,9 +8121,9 @@
 	push af
 
 	call SetPlayerTurn
-	call Function365d7
+	call CalcPlayerStats
 	call SetEnemyTurn
-	call Function365fd
+	call CalcEnemyStats
 
 	pop af
 	ld [hBattleTurn], a
@@ -8759,7 +8143,7 @@
 ; 3713e
 
 
-BattleCommand2c: ; 3713e
+BattleCommand_Heal: ; 3713e
 ; heal
 
 	ld de, BattleMonHP
@@ -8788,7 +8172,7 @@
 	push hl
 	push de
 	push af
-	call BattleCommandaa
+	call BattleCommand_MoveDelay
 	ld a, BATTLE_VARS_SUBSTATUS5
 	call GetBattleVarAddr
 	res SUBSTATUS_TOXIC, [hl]
@@ -8805,10 +8189,10 @@
 	ld a, [hBattleTurn]
 	and a
 	jr nz, .asm_37193
-	call Function365d7
+	call CalcPlayerStats
 	jr .asm_37196
 .asm_37193
-	call Function365fd
+	call CalcEnemyStats
 .asm_37196
 	pop af
 	pop de
@@ -8824,7 +8208,7 @@
 .asm_371a9
 	call AnimateCurrentMove
 	call BattleCommand_SwitchTurn
-	ld hl, Function3ccef
+	ld hl, RestoreHP
 	call CallBattleCore
 	call BattleCommand_SwitchTurn
 	call UpdateUserInParty
@@ -8839,10 +8223,10 @@
 ; 371cd
 
 
-BattleCommand2d: ; 371cd
+BattleCommand_Transform: ; 371cd
 ; transform
 
-	call Function372d8
+	call ClearLastMove
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVarAddr
 	bit SUBSTATUS_TRANSFORMED, [hl]
@@ -8853,17 +8237,17 @@
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
 	ld a, $1
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
 	bit SUBSTATUS_SUBSTITUTE, [hl]
 	push af
-	jr z, .asm_37200
-	call Function34548
-	jr nz, .asm_37200
+	jr z, .mimic_substitute
+	call CheckUserIsCharging
+	jr nz, .mimic_substitute
 	ld a, SUBSTITUTE
-	call Function37e44
-.asm_37200
+	call LoadAnim
+.mimic_substitute
 	ld a, BATTLE_VARS_SUBSTATUS5
 	call GetBattleVarAddr
 	set SUBSTATUS_TRANSFORMED, [hl]
@@ -8872,12 +8256,12 @@
 	ld de, EnemyMonSpecies
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_3721f
+	jr nz, .got_mon_species
 	ld hl, EnemyMonSpecies
 	ld de, BattleMonSpecies
 	xor a
 	ld [CurMoveNum], a
-.asm_3721f
+.got_mon_species
 	push hl
 	ld a, [hli]
 	ld [de], a
@@ -8889,14 +8273,15 @@
 	call CopyBytes
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3723a
+	jr z, .mimic_enemy_backup
 	ld a, [de]
-	ld [wc6f2], a
+	ld [wEnemyBackupDVs], a
 	inc de
 	ld a, [de]
-	ld [wc6f2 + 1], a
+	ld [wEnemyBackupDVs + 1], a
 	dec de
-.asm_3723a
+.mimic_enemy_backup
+; copy DVs
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -8903,7 +8288,8 @@
 	ld a, [hli]
 	ld [de], a
 	inc de
-	ld bc, $000c
+; move pointer to stats
+	ld bc, BattleMonStats - BattleMonPP
 	add hl, bc
 	push hl
 	ld h, d
@@ -8912,66 +8298,67 @@
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $000c
+	ld bc, BattleMonStructEnd - BattleMonStats
 	call CopyBytes
-	ld bc, $ffe2
+; init the power points
+	ld bc, BattleMonMoves - BattleMonStructEnd
 	add hl, bc
 	push de
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $ffe8
+	ld bc, BattleMonPP - BattleMonStructEnd
 	add hl, bc
 	ld b, NUM_MOVES
-.asm_3725f
+.pp_loop
 	ld a, [de]
 	inc de
 	and a
-	jr z, .asm_3726c
+	jr z, .done_move
 	cp SKETCH
 	ld a, 1
-	jr z, .asm_3726c
+	jr z, .done_move
 	ld a, 5
-.asm_3726c
+.done_move
 	ld [hli], a
 	dec b
-	jr nz, .asm_3725f
+	jr nz, .pp_loop
 	pop hl
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, EnemyStats
 	ld de, PlayerStats
-	ld bc, $000a
+	ld bc, 2 * 5
 	call BattleSideCopy
 	ld hl, EnemyStatLevels
 	ld de, PlayerStatLevels
-	ld bc, $0008
+	ld bc, 8
 	call BattleSideCopy
-	call Function37ed5
-	jr c, .asm_372a8
+	call _CheckBattleScene
+	jr c, .mimic_anims
 	ld a, [hBattleTurn]
 	and a
-	ld a, [wc6fe]
-	jr z, .asm_372a0
-	ld a, [wc6fa]
-.asm_372a0
+	ld a, [wPlayerMinimized]
+	jr z, .got_byte
+	ld a, [wEnemyMinimized]
+.got_byte
 	and a
-	jr nz, .asm_372a8
-	call Function37e36
-	jr .asm_372ae
-.asm_372a8
-	call BattleCommandaa
-	call BattleCommanda6
-.asm_372ae
+	jr nz, .mimic_anims
+	call LoadMoveAnim
+	jr .after_anim
+.mimic_anims
+	call BattleCommand_MoveDelay
+	call BattleCommand_RaiseSubNoAnim
+.after_anim
 	xor a
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
 	ld a, $2
-	ld [wc689], a
+	ld [wKickCounter], a
 	pop af
 	ld a, SUBSTITUTE
-	call nz, Function37e44
+	call nz, LoadAnim
 	ld hl, TransformedText
 	jp StdBattleTextBox
 ; 372c6
@@ -9000,7 +8387,7 @@
 ; 372d8
 
 
-Function372d8: ; 372d8
+ClearLastMove: ; 372d8
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE
 	call GetBattleVarAddr
 	xor a
@@ -9032,7 +8419,7 @@
 ; 372fc
 
 
-BattleCommand2e: ; 372fc
+BattleCommand_Screen: ; 372fc
 ; screen
 
 	ld hl, PlayerScreens
@@ -9109,15 +8496,20 @@
 ; 37354
 
 
-Function37354: ; 37354
+FailSnore:
+FailDisable:
+FailConversion2:
+FailAttract:
+FailForesight:
+FailSpikes:
 	call AnimateFailedMove
 	; fallthrough
 ; 37357
 
-Function37357: ; 37357
+FailMimic: ; 37357
 	ld hl, ButItFailedText ; 'but it failed!'
 	ld de, ItFailedText    ; 'it failed!'
-	jp Function35157
+	jp FailText_CheckOpponentProtect
 ; 37360
 
 
@@ -9132,7 +8524,7 @@
 	call AnimateFailedMove
 	ld hl, DidntAffect1Text ; 'it didn't affect'
 	ld de, DidntAffect2Text ; 'it didn't affect'
-	jp Function35157
+	jp FailText_CheckOpponentProtect
 ; 37372
 
 
@@ -9151,11 +8543,11 @@
 ; 37380
 
 
-BattleCommand1a: ; 37380
+BattleCommand_SelfDestruct: ; 37380
 	callba MobileFn_10610d
-	ld a, $4
+	ld a, BATTLEANIM_PLAYER_DAMAGE
 	ld [wcfca], a
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	ld a, BATTLE_VARS_STATUS
 	call GetBattleVarAddr
@@ -9165,9 +8557,9 @@
 	ld [hli], a
 	ld [hl], a
 	ld a, $1
-	ld [wc689], a
-	call BattleCommand0a
-	call Function37e36
+	ld [wKickCounter], a
+	call BattleCommand_LowerSub
+	call LoadMoveAnim
 	ld a, BATTLE_VARS_SUBSTATUS4
 	call GetBattleVarAddr
 	res SUBSTATUS_LEECH_SEED, [hl]
@@ -9174,7 +8566,7 @@
 	ld a, BATTLE_VARS_SUBSTATUS5_OPP
 	call GetBattleVarAddr
 	res SUBSTATUS_DESTINY_BOND, [hl]
-	call Function37ed5
+	call _CheckBattleScene
 	ret nc
 	callba DrawPlayerHUD
 	callba DrawEnemyHUD
@@ -9215,13 +8607,13 @@
 
 
 ResetTurn: ; 3747b
-	ld hl, wc732
+	ld hl, wPlayerCharging
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37486
-	ld hl, wc733
+	jr z, .player
+	ld hl, wEnemyCharging
 
-.asm_37486
+.player
 	ld [hl], 1
 	xor a
 	ld [AlreadyDisobeyed], a
@@ -9233,7 +8625,7 @@
 INCLUDE "battle/effects/thief.asm"
 
 
-BattleCommand51: ; 37517
+BattleCommand_ArenaTrap: ; 37517
 ; arenatrap
 
 ; Doesn't work on an absent opponent.
@@ -9264,7 +8656,7 @@
 INCLUDE "battle/effects/nightmare.asm"
 
 
-BattleCommand53: ; 37563
+BattleCommand_Defrost: ; 37563
 ; defrost
 
 ; Thaw the user.
@@ -9286,7 +8678,7 @@
 	jr z, .done
 
 .party
-	ld a, PartyMon1Status - PartyMon1
+	ld a, MON_STATUS
 	call UserPartyAttr
 	res FRZ, [hl]
 
@@ -9320,7 +8712,7 @@
 ; 37792
 
 
-BattleCommand5e: ; 37792
+BattleCommand_FuryCutter: ; 37792
 ; furycutter
 
 	ld hl, PlayerFuryCutterCount
@@ -9381,88 +8773,9 @@
 ; 377ce
 
 
-BattleCommand5f: ; 377ce
-; attract
-	ld a, [AttackMissed]
-	and a
-	jr nz, .failed
-	call Function377f5
-	jr c, .failed
-	call CheckHiddenOpponent
-	jr nz, .failed
-	ld a, BATTLE_VARS_SUBSTATUS1_OPP
-	call GetBattleVarAddr
-	bit SUBSTATUS_IN_LOVE, [hl]
-	jr nz, .failed
+INCLUDE "battle/effects/attract.asm"
 
-	set SUBSTATUS_IN_LOVE, [hl]
-	call AnimateCurrentMove
-
-; 'fell in love!'
-	ld hl, FellInLoveText
-	jp StdBattleTextBox
-
-.failed
-	jp Function37354
-; 377f5
-
-
-Function377f5: ; 377f5
-	ld a, PartyMon1Species - PartyMon1
-	call BattlePartyAttr
-	ld a, [hl]
-	ld [CurPartySpecies], a
-
-	ld a, [CurBattleMon]
-	ld [CurPartyMon], a
-	xor a
-	ld [MonType], a
-
-	callba GetGender
-	jr c, .asm_37849
-
-	ld b, 1
-	jr nz, .asm_37815
-	dec b
-
-.asm_37815
-	push bc
-	ld a, [TempEnemyMonSpecies]
-	ld [CurPartySpecies], a
-	ld hl, EnemyMonDVs
-	ld a, [EnemySubStatus5]
-	bit SUBSTATUS_TRANSFORMED, a
-	jr z, .asm_37829
-	ld hl, wc6f2
-.asm_37829
-	ld a, [hli]
-	ld [TempMonDVs], a
-	ld a, [hl]
-	ld [TempMonDVs + 1], a
-	ld a, 3
-	ld [MonType], a
-	callba GetGender
-	pop bc
-	jr c, .asm_37849
-
-	ld a, 1
-	jr nz, .asm_37844
-	dec a
-
-.asm_37844
-	xor b
-	jr z, .asm_37849
-
-	and a
-	ret
-
-.asm_37849
-	scf
-	ret
-; 3784b
-
-
-BattleCommand60: ; 3784b
+BattleCommand_HappinessPower: ; 3784b
 ; happinesspower
 	push bc
 	ld hl, BattleMonHappiness
@@ -9490,102 +8803,9 @@
 ; 37874
 
 
-BattleCommand61: ; 37874
-; present
+INCLUDE "battle/effects/present.asm"
 
-	ld a, [wLinkMode]
-	cp $3
-	jr z, .asm_3787d
-	push bc
-	push de
-.asm_3787d
-
-	call BattleCommand_CalcDamageTypeMultiplier
-
-	ld a, [wLinkMode]
-	cp $3
-	jr z, .asm_37889
-	pop de
-	pop bc
-.asm_37889
-
-	ld a, [wd265]
-	and a
-	jp z, AnimateFailedMove
-	ld a, [AttackMissed]
-	and a
-	jp nz, AnimateFailedMove
-
-	push bc
-	call BattleRandom
-	ld b, a
-	ld hl, .table_37907
-	ld c, 0
-.asm_378a1
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_378b7 ; 378a4 $11
-	cp b
-	jr nc, .asm_378ad ; 378a7 $4
-	inc c
-	inc hl
-	jr .asm_378a1 ; 378ab $f4
-
-.asm_378ad
-	ld a, c
-	ld [wc689], a
-	call Function37de9
-	ld d, [hl]
-	pop bc
-	ret
-
-.asm_378b7
-	pop bc
-	ld a, $3
-	ld [wc689], a
-	call AnimateCurrentMove
-	call BattleCommand_SwitchTurn
-	ld hl, AICheckPlayerMaxHP
-	ld a, [hBattleTurn]
-	and a
-	jr z, .asm_378ce ; 378c9 $3
-	ld hl, AICheckEnemyMaxHP
-.asm_378ce
-	ld a, BANK(AICheckPlayerMaxHP)
-	rst FarCall
-	jr c, .asm_378f3 ; 378d1 $20
-
-	ld hl, GetQuarterMaxHP
-	call CallBattleCore
-	call BattleCommand_SwitchTurn
-	ld hl, Function3ccef
-	call CallBattleCore
-	call BattleCommand_SwitchTurn
-	ld hl, RegainedHealthText
-	call StdBattleTextBox
-	call BattleCommand_SwitchTurn
-	call UpdateOpponentInParty
-	jr .asm_37904 ; 378f1 $11
-
-.asm_378f3
-	call BattleCommand_SwitchTurn
-	call Function37ed5
-	jr nc, .asm_37904 ; 378f9 $9
-	call AnimateFailedMove
-	ld hl, RefusedGiftText
-	call StdBattleTextBox
-.asm_37904
-	jp EndMoveEffect
-
-.table_37907
-	db 40 percent,     40
-	db 70 percent + 1, 80
-	db 80 percent,    120
-	db $ff
-; 3790e
-
-
-BattleCommand63: ; 3790e
+BattleCommand_FrustrationPower: ; 3790e
 ; frustrationpower
 
 	push bc
@@ -9615,7 +8835,7 @@
 ; 37939
 
 
-BattleCommand64: ; 37939
+BattleCommand_Safeguard: ; 37939
 ; safeguard
 
 	ld hl, PlayerScreens
@@ -9640,15 +8860,15 @@
 ; 37962
 
 
-Function37962: ; 37962
+SafeCheckSafeguard: ; 37962
 	push hl
 	ld hl, EnemyScreens
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3796e
+	jr z, .got_turn
 	ld hl, PlayerScreens
 
-.asm_3796e
+.got_turn
 	bit SCREENS_SAFEGUARD, [hl]
 	pop hl
 	ret
@@ -9655,19 +8875,19 @@
 ; 37972
 
 
-BattleCommand65: ; 37972
+BattleCommand_CheckSafeguard: ; 37972
 ; checksafeguard
 	ld hl, EnemyScreens
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_3797d ; 37978 $3
+	jr z, .got_turn ; 37978 $3
 	ld hl, PlayerScreens
-.asm_3797d
+.got_turn
 	bit SCREENS_SAFEGUARD, [hl]
 	ret z
 	ld a, 1
 	ld [AttackMissed], a
-	call BattleCommandaa
+	call BattleCommand_MoveDelay
 	ld hl, SafeguardProtectText
 	call StdBattleTextBox
 	jp EndMoveEffect
@@ -9674,7 +8894,7 @@
 ; 37991
 
 
-BattleCommand66: ; 37991
+BattleCommand_GetMagnitude: ; 37991
 ; getmagnitude
 
 	push bc
@@ -9694,8 +8914,8 @@
 	push de
 	inc hl
 	ld a, [hl]
-	ld [wd265], a
-	call BattleCommandaa
+	ld [wTypeMatchup], a
+	call BattleCommand_MoveDelay
 	ld hl, MagnitudeText
 	call StdBattleTextBox
 	pop de
@@ -9714,7 +8934,7 @@
 ; 379c9
 
 
-BattleCommand67: ; 379c9
+BattleCommand_BatonPass: ; 379c9
 ; batonpass
 
 	ld a, [hBattleTurn]
@@ -9733,7 +8953,7 @@
 	call DelayFrames
 
 ; Transition into switchmon menu
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba Function3d2f7
 
 	callba ForcePickSwitchMonInBattle
@@ -9740,7 +8960,7 @@
 
 ; Return to battle scene
 	call ClearPalettes
-	callba Function3ed9f
+	callba _LoadBattleFontsHPBar
 	call WriteBackup
 	call ClearSprites
 	hlcoord 1, 0
@@ -9752,7 +8972,7 @@
 	call BatonPass_LinkPlayerSwitch
 
 ; Mobile link battles handle entrances differently
-	callba Function3d2e0
+	callba CheckMobileBattleError
 	jp c, EndMoveEffect
 
 	ld hl, PassedBattleMonEntrance
@@ -9777,18 +8997,18 @@
 	call BatonPass_LinkEnemySwitch
 
 ; Mobile link battles handle entrances differently
-	callba Function3d2e0
+	callba CheckMobileBattleError
 	jp c, EndMoveEffect
 
 ; Passed enemy PartyMon entrance
 	xor a
-	ld [wc718], a
-	ld hl, Function3d517
+	ld [wEnemySwitchMonIndex], a
+	ld hl, EnemySwitch_SetMode
 	call CallBattleCore
-	ld hl, Function3d57a
+	ld hl, ResetBattleParticipants
 	call CallBattleCore
 	ld a, 1
-	ld [wd265], a
+	ld [wTypeMatchup], a
 	ld hl, ApplyStatLevelMultiplierOnAllStats
 	call CallBattleCore
 
@@ -9807,7 +9027,7 @@
 	ld a, 1
 	ld [wd0ec], a
 
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld hl, Function3e8e4
 	call CallBattleCore
 	call WriteBackup
@@ -9823,24 +9043,24 @@
 	and a
 	ret z
 
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld hl, Function3e8e4
 	call CallBattleCore
 
 	ld a, [OTPartyCount]
-	add NUM_MOVES
+	add BATTLEACTION_SWITCH1
 	ld b, a
 	ld a, [wBattleAction]
-	cp NUM_MOVES
-	jr c, .asm_37aa0
+	cp BATTLEACTION_SWITCH1
+	jr c, .baton_pass
 	cp b
-	jr c, .asm_37aa8
+	jr c, .switch
 
-.asm_37aa0
+.baton_pass
 	ld a, [CurOTMon]
-	add NUM_MOVES
+	add BATTLEACTION_SWITCH1
 	ld [wBattleAction], a
-.asm_37aa8
+.switch
 	jp WriteBackup
 ; 37aab
 
@@ -9886,8 +9106,8 @@
 	ld [hl], 0
 
 	xor a
-	ld [wc730], a
-	ld [wc731], a
+	ld [wPlayerWrapCount], a
+	ld [wEnemyWrapCount], a
 	ret
 ; 37ae9
 
@@ -9937,7 +9157,7 @@
 
 .next
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	inc c
@@ -9950,7 +9170,7 @@
 ; 37b1d
 
 
-BattleCommand68: ; 37b1d
+BattleCommand_Pursuit: ; 37b1d
 ; pursuit
 ; Double damage if the opponent is switching.
 
@@ -9977,7 +9197,7 @@
 ; 37b39
 
 
-BattleCommand69: ; 37b39
+BattleCommand_ClearHazards: ; 37b39
 ; clearhazards
 
 	ld a, BATTLE_VARS_SUBSTATUS4
@@ -9990,12 +9210,12 @@
 .asm_37b4a
 
 	ld hl, PlayerScreens
-	ld de, wc730
+	ld de, wPlayerWrapCount
 	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_37b5b ; 37b53 $6
 	ld hl, EnemyScreens
-	ld de, wc731
+	ld de, wEnemyWrapCount
 .asm_37b5b
 	bit SCREENS_SPIKES, [hl]
 	jr z, .asm_37b69 ; 37b5d $a
@@ -10016,25 +9236,25 @@
 ; 37b74
 
 
-BattleCommand6a: ; 37b74
+BattleCommand_HealMorn: ; 37b74
 ; healmorn
 	ld b, MORN
-	jr BattleCommand6a6c
+	jr BattleCommand_HealMorn6c
 ; 37b78
 
-BattleCommand6b: ; 37b78
+BattleCommand_HealDay: ; 37b78
 ; healday
 	ld b, DAY
-	jr BattleCommand6a6c
+	jr BattleCommand_HealMorn6c
 ; 37b7c
 
-BattleCommand6c: ; 37b7c
+BattleCommand_HealNite: ; 37b7c
 ; healnite
 	ld b, NITE
 	; fallthrough
 ; 37b7e
 
-BattleCommand6a6c: ; 37b7e
+BattleCommand_HealMorn6c: ; 37b7e
 ; Time- and weather-sensitive heal.
 
 	ld hl, BattleMonMaxHP
@@ -10096,7 +9316,7 @@
 	call AnimateCurrentMove
 	call BattleCommand_SwitchTurn
 
-	callab Function3ccef
+	callab RestoreHP
 
 	call BattleCommand_SwitchTurn
 	call UpdateUserInParty
@@ -10120,7 +9340,7 @@
 ; 37be8
 
 
-BattleCommand6d: ; 37be8
+BattleCommand_HiddenPower: ; 37be8
 ; hiddenpower
 
 	ld a, [AttackMissed]
@@ -10131,7 +9351,7 @@
 ; 37bf4
 
 
-BattleCommand6e: ; 37bf4
+BattleCommand_StartRain: ; 37bf4
 ; startrain
 	ld a, WEATHER_RAIN
 	ld [Weather], a
@@ -10143,7 +9363,7 @@
 ; 37c07
 
 
-BattleCommand6f: ; 37c07
+BattleCommand_StartSun: ; 37c07
 ; startsun
 	ld a, WEATHER_SUN
 	ld [Weather], a
@@ -10155,41 +9375,44 @@
 ; 37c1a
 
 
-BattleCommand95: ; 37c1a
+BattleCommand_BellyDrum: ; 37c1a
 ; bellydrum
-	call BattleCommand77
+; This command is buggy because it raises the user's attack
+; before checking that it has enough HP to use the move.
+; Swap the order of these two blocks to fix.
+	call BattleCommand_AttackUp2
 	ld a, [AttackMissed]
 	and a
-	jr nz, .asm_37c4f
+	jr nz, .failed
 
 	callab GetHalfMaxHP
+	callab CheckUserHasEnoughHP
+	jr nc, .failed
 
-	callab Function3ccde
-	jr nc, .asm_37c4f
-
 	push bc
 	call AnimateCurrentMove
 	pop bc
-	callab Function3cc3f
+	callab SubtractHPFromUser
 	call UpdateUserInParty
 	ld a, 5
 
-.asm_37c41
+.max_attack_loop
 	push af
-	call BattleCommand77
+	call BattleCommand_AttackUp2
 	pop af
 	dec a
-	jr nz, .asm_37c41
+	jr nz, .max_attack_loop
 
 	ld hl, BellyDrumText
 	jp StdBattleTextBox
-.asm_37c4f
+
+.failed
 	call AnimateFailedMove
 	jp PrintButItFailed
 ; 37c55
 
 
-BattleCommand96: ; 37c55
+BattleCommand_PsychUp: ; 37c55
 ; psychup
 
 	ld hl, EnemyStatLevels
@@ -10196,40 +9419,45 @@
 	ld de, PlayerStatLevels
 	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_37c64 ; 37c5e $4
+	jr z, .pointers_correct ; 37c5e $4
+; It's the enemy's turn, so swap the pointers.
 	push hl
 	ld h, d
 	ld l, e
 	pop de
-.asm_37c64
+.pointers_correct
 	push hl
-	ld b, $8
-.asm_37c67
+	ld b, NUM_LEVEL_STATS
+; If any of the enemy's stats is modified from its base level,
+; the move succeeds.  Otherwise, it fails.
+.loop
 	ld a, [hli]
-	cp $7
-	jr nz, .asm_37c76 ; 37c6a $a
+	cp BASE_STAT_LEVEL
+	jr nz, .break ; 37c6a $a
 	dec b
-	jr nz, .asm_37c67 ; 37c6d $f8
+	jr nz, .loop ; 37c6d $f8
 	pop hl
 	call AnimateFailedMove
 	jp PrintButItFailed
-.asm_37c76
+
+.break
 	pop hl
-	ld b, $8
-.asm_37c79
+	ld b, NUM_LEVEL_STATS
+.loop2
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_37c79 ; 37c7d $fa
+	jr nz, .loop2 ; 37c7d $fa
 	ld a, [hBattleTurn]
 	and a
-	jr nz, .asm_37c89 ; 37c82 $5
-	call Function365d7
-	jr .asm_37c8c ; 37c87 $3
-.asm_37c89
-	call Function365fd
-.asm_37c8c
+	jr nz, .calc_enemy_stats ; 37c82 $5
+	call CalcPlayerStats
+	jr .merge ; 37c87 $3
+
+.calc_enemy_stats
+	call CalcEnemyStats
+.merge
 	call AnimateCurrentMove
 	ld hl, CopiedStatsText
 	jp StdBattleTextBox
@@ -10236,7 +9464,7 @@
 ; 37c95
 
 
-BattleCommand9a: ; 37c95
+BattleCommand_MirrorCoat: ; 37c95
 ; mirrorcoat
 
 	ld a, 1
@@ -10253,12 +9481,12 @@
 	cp EFFECT_MIRROR_COAT
 	ret z
 
-	call BattleCommanda3
-	ld a, [wd265]
+	call BattleCommand_ResetTypeMatchup
+	ld a, [wTypeMatchup]
 	and a
 	ret z
 
-	call Function36abf
+	call CheckOpponentWentFirst
 	ret z
 
 	ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP
@@ -10298,14 +9526,14 @@
 ; 37ce6
 
 
-BattleCommand9d: ; 37ce6
+BattleCommand_DoubleMinimizeDamage: ; 37ce6
 ; doubleminimizedamage
 
-	ld hl, wc6fa
+	ld hl, wEnemyMinimized
 	ld a, [hBattleTurn]
 	and a
 	jr z, .ok
-	ld hl, wc6fe
+	ld hl, wPlayerMinimized
 .ok
 	ld a, [hl]
 	and a
@@ -10322,8 +9550,8 @@
 ; 37d02
 
 
-BattleCommand9e: ; 37d02
-; skipsuncharge
+BattleCommand_SkipSunCharge: ; 37d02
+; mimicsuncharge
 	ld a, [Weather]
 	cp WEATHER_SUN
 	ret nz
@@ -10332,15 +9560,15 @@
 ; 37d0d
 
 
-BattleCommand9b: ; 37d0d
+BattleCommand_CheckFutureSight: ; 37d0d
 ; checkfuturesight
 
-	ld hl, wc71d
+	ld hl, wPlayerFutureSightCount
 	ld de, wc727
 	ld a, [hBattleTurn]
 	and a
 	jr z, .ok
-	ld hl, wc71e
+	ld hl, wEnemyFutureSightCount
 	ld de, wc729
 .ok
 
@@ -10360,10 +9588,10 @@
 	jp SkipToBattleCommand
 ; 37d34
 
-BattleCommand9c: ; 37d34
+BattleCommand_FutureSight: ; 37d34
 ; futuresight
 
-	call Function34548
+	call CheckUserIsCharging
 	jr nz, .asm_37d4b ; 37d37 $12
 	ld a, BATTLE_VARS_MOVE_ANIM
 	call GetBattleVar
@@ -10375,11 +9603,11 @@
 	call GetBattleVarAddr
 	ld [hl], b
 .asm_37d4b
-	ld hl, wc71d
+	ld hl, wPlayerFutureSightCount
 	ld a, [hBattleTurn]
 	and a
 	jr z, .asm_37d56 ; 37d51 $3
-	ld hl, wc71e
+	ld hl, wEnemyFutureSightCount
 .asm_37d56
 	ld a, [hl]
 	and a
@@ -10386,11 +9614,11 @@
 	jr nz, .asm_37d87 ; 37d58 $2d
 	ld a, $4
 	ld [hl], a
-	call BattleCommand0a
-	call BattleCommandaa
+	call BattleCommand_LowerSub
+	call BattleCommand_MoveDelay
 	ld hl, ForesawAttackText
 	call StdBattleTextBox
-	call BattleCommand0c
+	call BattleCommand_RaiseSub
 	ld de, wc727
 	ld a, [hBattleTurn]
 	and a
@@ -10416,7 +9644,7 @@
 ; 37d94
 
 
-BattleCommand9f: ; 37d94
+BattleCommand_ThunderAccuracy: ; 37d94
 ; thunderaccuracy
 
 	ld a, BATTLE_VARS_MOVE_TYPE
@@ -10452,7 +9680,7 @@
 	ld hl, EnemyMonItem
 .go
 	ld b, [hl]
-	jp GetItem
+	jp GetItemHeldEffect
 ; 37dc1
 
 
@@ -10465,11 +9693,11 @@
 	ld hl, BattleMonItem
 .go
 	ld b, [hl]
-	jp GetItem
+	jp GetItemHeldEffect
 ; 37dd0
 
 
-GetItem: ; 37dd0
+GetItemHeldEffect: ; 37dd0
 ; Return the effect of item b in bc.
 	ld a, b
 	and a
@@ -10491,17 +9719,17 @@
 ; 37de9
 
 
-Function37de9: ; 37de9
+AnimateCurrentMoveEitherSide: ; 37de9
 	push hl
 	push de
 	push bc
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	push af
-	call BattleCommand0a
+	call BattleCommand_LowerSub
 	pop af
-	ld [wc689], a
-	call Function37e19
-	call BattleCommand0c
+	ld [wKickCounter], a
+	call PlayDamageAnim
+	call BattleCommand_RaiseSub
 	pop bc
 	pop de
 	pop hl
@@ -10513,13 +9741,13 @@
 	push hl
 	push de
 	push bc
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	push af
-	call BattleCommand0a
+	call BattleCommand_LowerSub
 	pop af
-	ld [wc689], a
-	call Function37e36
-	call BattleCommand0c
+	ld [wKickCounter], a
+	call LoadMoveAnim
+	call BattleCommand_RaiseSub
 	pop bc
 	pop de
 	pop hl
@@ -10527,7 +9755,7 @@
 ; 37e19
 
 
-Function37e19: ; 37e19
+PlayDamageAnim: ; 37e19
 	xor a
 	ld [FXAnimIDHi], a
 
@@ -10540,18 +9768,18 @@
 
 	ld a, [hBattleTurn]
 	and a
-	ld a, 1
-	jr z, .asm_37e30
-	ld a, 4
+	ld a, BATTLEANIM_ENEMY_DAMAGE
+	jr z, .player
+	ld a, BATTLEANIM_PLAYER_DAMAGE
 
-.asm_37e30
+.player
 	ld [wcfca], a
 
-	jp Function37e47
+	jp PlayUserBattleAnim
 ; 37e36
 
 
-Function37e36: ; 37e36
+LoadMoveAnim: ; 37e36
 	xor a
 	ld [wcfca], a
 	ld [FXAnimIDHi], a
@@ -10565,7 +9793,7 @@
 ; 37e44
 
 
-Function37e44: ; 37e44
+LoadAnim: ; 37e44
 
 	ld [FXAnimIDLo], a
 
@@ -10573,7 +9801,7 @@
 ; 37e47
 
 
-Function37e47: ; 37e47
+PlayUserBattleAnim: ; 37e47
 	push hl
 	push de
 	push bc
@@ -10585,7 +9813,7 @@
 ; 37e54
 
 
-Function37e54: ; 37e54
+PlayOpponentBattleAnim: ; 37e54
 	ld a, e
 	ld [FXAnimIDLo], a
 	ld a, d
@@ -10616,13 +9844,13 @@
 
 
 AnimateFailedMove: ; 37e77
-	call BattleCommand0a
-	call BattleCommandaa
-	jp BattleCommand0c
+	call BattleCommand_LowerSub
+	call BattleCommand_MoveDelay
+	jp BattleCommand_RaiseSub
 ; 37e80
 
 
-BattleCommandaa: ; 37e80
+BattleCommand_MoveDelay: ; 37e80
 ; movedelay
 ; Wait 40 frames.
 	ld c, 40
@@ -10630,7 +9858,7 @@
 ; 37e85
 
 
-BattleCommand38: ; 37e85
+BattleCommand_ClearText: ; 37e85
 ; cleartext
 
 ; Used in multi-hit moves.
@@ -10647,10 +9875,10 @@
 	ld h, a
 	ld a, [BattleScriptBufferLoc]
 	ld l, a
-.asm_37e94
+.loop
 	ld a, [hli]
 	cp b
-	jr nz, .asm_37e94
+	jr nz, .loop
 
 	ld a, h
 	ld [BattleScriptBufferLoc + 1], a
@@ -10687,26 +9915,26 @@
 ; 37ec0
 
 
-Function37ec0: ; 37ec0
-	callba Functionfbd54
+DisappearUser: ; 37ec0
+	callba _DisappearUser
 	ret
 ; 37ec7
 
 
-Function37ec7: ; 37ec7
-	callba Functionfbd71
+AppearUserLowerSub: ; 37ec7
+	callba _AppearUserLowerSub
 	ret
 ; 37ece
 
 
-Function37ece: ; 37ece
-	callba Functionfbd69
+AppearUserRaiseSub: ; 37ece
+	callba _AppearUserRaiseSub
 	ret
 ; 37ed5
 
 
-Function37ed5: ; 37ed5
-; Related to mobile link battles.
+_CheckBattleScene: ; 37ed5
+; Checks the options.  Returns carry if battle animations are disabled.
 	push hl
 	push de
 	push bc
--- /dev/null
+++ b/battle/effects/attract.asm
@@ -1,0 +1,79 @@
+BattleCommand_Attract: ; 377ce
+; attract
+	ld a, [AttackMissed]
+	and a
+	jr nz, .failed
+	call CheckOppositeGender
+	jr c, .failed
+	call CheckHiddenOpponent
+	jr nz, .failed
+	ld a, BATTLE_VARS_SUBSTATUS1_OPP
+	call GetBattleVarAddr
+	bit SUBSTATUS_IN_LOVE, [hl]
+	jr nz, .failed
+
+	set SUBSTATUS_IN_LOVE, [hl]
+	call AnimateCurrentMove
+
+; 'fell in love!'
+	ld hl, FellInLoveText
+	jp StdBattleTextBox
+
+.failed
+	jp FailAttract
+; 377f5
+
+
+CheckOppositeGender: ; 377f5
+	ld a, MON_SPECIES
+	call BattlePartyAttr
+	ld a, [hl]
+	ld [CurPartySpecies], a
+
+	ld a, [CurBattleMon]
+	ld [CurPartyMon], a
+	xor a
+	ld [MonType], a
+
+	callba GetGender
+	jr c, .genderless_samegender
+
+	ld b, 1
+	jr nz, .got_gender
+	dec b
+
+.got_gender
+	push bc
+	ld a, [TempEnemyMonSpecies]
+	ld [CurPartySpecies], a
+	ld hl, EnemyMonDVs
+	ld a, [EnemySubStatus5]
+	bit SUBSTATUS_TRANSFORMED, a
+	jr z, .not_transformed
+	ld hl, wEnemyBackupDVs
+.not_transformed
+	ld a, [hli]
+	ld [TempMonDVs], a
+	ld a, [hl]
+	ld [TempMonDVs + 1], a
+	ld a, 3
+	ld [MonType], a
+	callba GetGender
+	pop bc
+	jr c, .genderless_samegender
+
+	ld a, 1
+	jr nz, .got_enemy_gender
+	dec a
+
+.got_enemy_gender
+	xor b
+	jr z, .genderless_samegender
+
+	and a
+	ret
+
+.genderless_samegender
+	scf
+	ret
+; 3784b
--- a/battle/effects/curse.asm
+++ b/battle/effects/curse.asm
@@ -1,4 +1,4 @@
-BattleCommand54: ; 37588
+BattleCommand_Curse: ; 37588
 ; curse
 
 	ld de, BattleMonType1
@@ -26,13 +26,13 @@
 
 ; Attack
 	ld a, [bc]
-	cp 13 ; max
+	cp MAX_STAT_LEVEL
 	jr c, .raise
 
 ; Defense
 	inc bc
 	ld a, [bc]
-	cp 13 ; max
+	cp MAX_STAT_LEVEL
 	jr nc, .cantraise
 
 .raise
@@ -40,19 +40,19 @@
 ; Raise Attack and Defense, and lower Speed.
 
 	ld a, $1
-	ld [wc689], a
+	ld [wKickCounter], a
 	call AnimateCurrentMove
-	ld a, $2
-	call Function36532
+	ld a, SPEED
+	call LowerStat
 	call BattleCommand_SwitchTurn
-	call BattleCommand8d
+	call BattleCommand_StatDownMessage
 	call ResetMiss
 	call BattleCommand_SwitchTurn
-	call BattleCommand70
-	call BattleCommand8c
+	call BattleCommand_AttackUp
+	call BattleCommand_StatUpMessage
 	call ResetMiss
-	call BattleCommand71
-	jp BattleCommand8c
+	call BattleCommand_DefenseUp
+	jp BattleCommand_StatUpMessage
 
 
 .ghost
@@ -74,7 +74,7 @@
 	call AnimateCurrentMove
 	ld hl, GetHalfMaxHP
 	call CallBattleCore
-	ld hl, Function3cc3f
+	ld hl, SubtractHPFromUser
 	call CallBattleCore
 	call UpdateUserInParty
 	ld hl, PutACurseText
@@ -89,7 +89,7 @@
 
 ; Can't raise either stat.
 
-	ld b, $8 ; ABILITY
+	ld b, ABILITY + 1
 	call GetStatName
 	call AnimateFailedMove
 	ld hl, WontRiseAnymoreText
--- a/battle/effects/endure.asm
+++ b/battle/effects/endure.asm
@@ -1,4 +1,4 @@
-BattleCommand5a: ; 3766f
+BattleCommand_Endure: ; 3766f
 ; endure
 
 ; Endure shares code with Protect. See protect.asm.
--- a/battle/effects/foresight.asm
+++ b/battle/effects/foresight.asm
@@ -1,4 +1,4 @@
-BattleCommand57: ; 376a0
+BattleCommand_Foresight: ; 376a0
 ; foresight
 
 	ld a, [AttackMissed]
@@ -19,5 +19,5 @@
 	jp StdBattleTextBox
 
 .failed
-	jp Function37354
+	jp FailForesight
 ; 376c2
--- a/battle/effects/metronome.asm
+++ b/battle/effects/metronome.asm
@@ -1,18 +1,18 @@
-BattleCommand34: ; 37418
+BattleCommand_Metronome: ; 37418
 ; metronome
 
-	call Function372d8
-	call Function34548
+	call ClearLastMove
+	call CheckUserIsCharging
 	jr nz, .asm_3742b
 
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	push af
-	call BattleCommand0a
+	call BattleCommand_LowerSub
 	pop af
-	ld [wc689], a
+	ld [wKickCounter], a
 
 .asm_3742b
-	call Function37e36
+	call LoadMoveAnim
 
 .GetMove
 	call BattleRandom
--- a/battle/effects/mirror_move.asm
+++ b/battle/effects/mirror_move.asm
@@ -1,7 +1,7 @@
-BattleCommand1b: ; 373c9
+BattleCommand_MirrorMove: ; 373c9
 ; mirrormove
 
-	call Function372d8
+	call ClearLastMove
 
 	ld a, BATTLE_VARS_MOVE
 	call GetBattleVarAddr
@@ -37,16 +37,16 @@
 	call GetMoveData
 	call GetMoveName
 	call CopyName1
-	call Function34548
+	call CheckUserIsCharging
 	jr nz, .done
 
-	ld a, [wc689]
+	ld a, [wKickCounter]
 	push af
-	call BattleCommand0a
+	call BattleCommand_LowerSub
 	pop af
-	ld [wc689], a
+	ld [wKickCounter], a
 
 .done
-	call BattleCommandaa
+	call BattleCommand_MoveDelay
 	jp ResetTurn
 ; 37418
--- a/battle/effects/nightmare.asm
+++ b/battle/effects/nightmare.asm
@@ -1,4 +1,4 @@
-BattleCommand52: ; 37536
+BattleCommand_Nightmare: ; 37536
 ; nightmare
 
 ; Can't hit an absent opponent.
--- a/battle/effects/perish_song.asm
+++ b/battle/effects/perish_song.asm
@@ -1,4 +1,4 @@
-BattleCommand58: ; 376c2
+BattleCommand_PerishSong: ; 376c2
 ; perishsong
 
 
--- /dev/null
+++ b/battle/effects/present.asm
@@ -1,0 +1,93 @@
+BattleCommand_Present: ; 37874
+; present
+
+	ld a, [wLinkMode]
+	cp LINK_COLOSSEUM
+	jr z, .colosseum_skippush
+	push bc
+	push de
+.colosseum_skippush
+
+	call BattleCommand_Stab
+
+	ld a, [wLinkMode]
+	cp LINK_COLOSSEUM
+	jr z, .colosseum_skippop
+	pop de
+	pop bc
+.colosseum_skippop
+
+	ld a, [wTypeMatchup]
+	and a
+	jp z, AnimateFailedMove
+	ld a, [AttackMissed]
+	and a
+	jp nz, AnimateFailedMove
+
+	push bc
+	call BattleRandom
+	ld b, a
+	ld hl, .PresentPower
+	ld c, 0
+.next
+	ld a, [hli]
+	cp $ff
+	jr z, .heal_effect ; 378a4 $11
+	cp b
+	jr nc, .got_power ; 378a7 $4
+	inc c
+	inc hl
+	jr .next ; 378ab $f4
+
+.got_power
+	ld a, c
+	ld [wPresentPower], a
+	call AnimateCurrentMoveEitherSide
+	ld d, [hl]
+	pop bc
+	ret
+
+.heal_effect
+	pop bc
+	ld a, $3
+	ld [wPresentPower], a
+	call AnimateCurrentMove
+	call BattleCommand_SwitchTurn
+	ld hl, AICheckPlayerMaxHP
+	ld a, [hBattleTurn]
+	and a
+	jr z, .got_hp_fn_pointer ; 378c9 $3
+	ld hl, AICheckEnemyMaxHP
+.got_hp_fn_pointer
+	ld a, BANK(AICheckPlayerMaxHP)
+	rst FarCall
+	jr c, .already_fully_healed ; 378d1 $20
+
+	ld hl, GetQuarterMaxHP
+	call CallBattleCore
+	call BattleCommand_SwitchTurn
+	ld hl, RestoreHP
+	call CallBattleCore
+	call BattleCommand_SwitchTurn
+	ld hl, RegainedHealthText
+	call StdBattleTextBox
+	call BattleCommand_SwitchTurn
+	call UpdateOpponentInParty
+	jr .do_animation ; 378f1 $11
+
+.already_fully_healed
+	call BattleCommand_SwitchTurn
+	call _CheckBattleScene
+	jr nc, .do_animation ; 378f9 $9
+	call AnimateFailedMove
+	ld hl, RefusedGiftText
+	call StdBattleTextBox
+.do_animation
+	jp EndMoveEffect
+
+.PresentPower
+	db 40 percent,     40
+	db 70 percent + 1, 80
+	db 80 percent,    120
+	db $ff
+; 3790e
--- a/battle/effects/protect.asm
+++ b/battle/effects/protect.asm
@@ -1,4 +1,4 @@
-BattleCommand55: ; 37618
+BattleCommand_Protect: ; 37618
 ; protect
 	call ProtectChance
 	ret c
@@ -23,7 +23,7 @@
 	ld de, EnemyProtectCount
 .asm_37637
 
-	call Function36abf
+	call CheckOpponentWentFirst
 	jr nz, .failed
 
 ; Can't have a substitute.
--- a/battle/effects/rollout.asm
+++ b/battle/effects/rollout.asm
@@ -1,7 +1,7 @@
 MAX_ROLLOUT_COUNT EQU 5
 
 
-BattleCommand5b: ; 37718
+BattleCommand_CheckCurl: ; 37718
 ; checkcurl
 
 	ld de, PlayerRolloutCount
@@ -25,7 +25,7 @@
 ; 37734
 
 
-BattleCommand5c: ; 37734
+BattleCommand_RolloutPower: ; 37734
 ; rolloutpower
 
 	ld a, BATTLE_VARS_STATUS
--- a/battle/effects/sandstorm.asm
+++ b/battle/effects/sandstorm.asm
@@ -1,4 +1,4 @@
-BattleCommand59: ; 376f8
+BattleCommand_StartSandstorm: ; 376f8
 ; startsandstorm
 
 	ld a, [Weather]
--- a/battle/effects/spikes.asm
+++ b/battle/effects/spikes.asm
@@ -1,4 +1,4 @@
-BattleCommand56: ; 37683
+BattleCommand_Spikes: ; 37683
 ; spikes
 
 	ld hl, EnemyScreens
@@ -23,5 +23,5 @@
 	jp StdBattleTextBox
 
 .failed
-	jp Function37354
+	jp FailSpikes
 ; 376a0
--- a/battle/effects/thief.asm
+++ b/battle/effects/thief.asm
@@ -1,4 +1,4 @@
-BattleCommand50: ; 37492
+BattleCommand_Thief: ; 37492
 ; thief
 
 	ld a, [hBattleTurn]
--- a/battle/hidden_power.asm
+++ b/battle/hidden_power.asm
@@ -106,7 +106,7 @@
 ; based on the new type, but keep base power.
 	ld a, d
 	push af
-	callba BattleCommand06 ; damagestats
+	callba BattleCommand_DamageStats ; damagestats
 	pop af
 	ld d, a
 	ret
--- a/battle/misc.asm
+++ b/battle/misc.asm
@@ -1,50 +1,50 @@
-Functionfbd54: ; fbd54
+_DisappearUser: ; fbd54
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld [hBGMapMode], a
+	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_fbd61
-	call Functionfbd96
-	jr .asm_fbd64
-.asm_fbd61
-	call Functionfbd9d
-.asm_fbd64
+	jr z, .player
+	call GetEnemyFrontpicCoords
+	jr .okay
+.player
+	call GetPlayerBackpicCoords
+.okay
 	call ClearBox
-	jr Functionfbd91
+	jr FinishAppearDisappearUser
 
-Functionfbd69: ; fbd69 (3e:7d69)
-	callba BattleCommanda6
-	jr Functionfbd77
+_AppearUserRaiseSub: ; fbd69 (3e:7d69)
+	callba BattleCommand_RaiseSubNoAnim
+	jr AppearUser
 
-Functionfbd71: ; fbd71 (3e:7d71)
-	callba BattleCommanda7
+_AppearUserLowerSub: ; fbd71 (3e:7d71)
+	callba BattleCommand_LowerSubNoAnim
 
-Functionfbd77: ; fbd77 (3e:7d77)
+AppearUser: ; fbd77 (3e:7d77)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld a, [hBattleTurn] ; $ff00+$e4
+	ld [hBGMapMode], a
+	ld a, [hBattleTurn]
 	and a
-	jr z, .asm_fbd85
-	call Functionfbd96
+	jr z, .player
+	call GetEnemyFrontpicCoords
 	xor a
-	jr .asm_fbd8a
-.asm_fbd85
-	call Functionfbd9d
+	jr .okay
+.player
+	call GetPlayerBackpicCoords
 	ld a, $31
-.asm_fbd8a
-	ld [$ffad], a
+.okay
+	ld [hFillBox], a
 	predef FillBox
-Functionfbd91: ; fbd91 (3e:7d91)
+FinishAppearDisappearUser: ; fbd91 (3e:7d91)
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
-Functionfbd96: ; fbd96 (3e:7d96)
+GetEnemyFrontpicCoords: ; fbd96 (3e:7d96)
 	hlcoord 12, 0
 	lb bc, 7, 7
 	ret
 
-Functionfbd9d: ; fbd9d (3e:7d9d)
+GetPlayerBackpicCoords: ; fbd9d (3e:7d9d)
 	hlcoord 2, 6
 	lb bc, 6, 6
 	ret
@@ -62,7 +62,7 @@
 	ld a, [de]
 	inc de
 	cp $ff
-	jr z, .asm_fbdc0
+	jr z, .done_weather_types
 
 	cp b
 	jr nz, .NextWeatherType
@@ -78,7 +78,7 @@
 	jr .CheckWeatherType
 
 
-.asm_fbdc0
+.done_weather_types
 	ld de, .WeatherMoveModifiers
 
 	ld a, BATTLE_VARS_MOVE_EFFECT
@@ -217,10 +217,10 @@
 
 	ld a, e
 	or d
-	jr nz, .asm_fbe6f
+	jr nz, .done_min
 	ld e, 1
 
-.asm_fbe6f
+.done_min
 	add hl, de
 	jr nc, .Update
 
--- a/battle/moves/move_effects.asm
+++ b/battle/moves/move_effects.asm
@@ -44,7 +44,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -83,7 +83,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -107,7 +107,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -133,7 +133,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -158,7 +158,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -187,7 +187,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -208,8 +208,8 @@
 	damagevariation
 	checkhit
 	selfdestruct
-	effect0x0b
-	resulttext
+	hittargetnosub
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -229,7 +229,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -252,10 +252,10 @@
 	usedmovetext
 	doturn
 	attackup
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -266,10 +266,10 @@
 	usedmovetext
 	doturn
 	defenseup
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -278,10 +278,10 @@
 	usedmovetext
 	doturn
 	speedup
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -291,10 +291,10 @@
 	usedmovetext
 	doturn
 	specialattackup
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -303,10 +303,10 @@
 	usedmovetext
 	doturn
 	specialdefenseup
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -315,10 +315,10 @@
 	usedmovetext
 	doturn
 	accuracyup
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -328,12 +328,12 @@
 	checkobedience
 	usedmovetext
 	doturn
-	effect0x0a
+	lowersub
 	evasionup
-	effect0x92
-	effect0xa7
-	effect0x0c
-	statmessageuser
+	statupanim
+	lowersubnoanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -343,10 +343,10 @@
 	usedmovetext
 	doturn
 	attackup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -357,10 +357,10 @@
 	usedmovetext
 	doturn
 	defenseup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -370,10 +370,10 @@
 	usedmovetext
 	doturn
 	speedup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -382,10 +382,10 @@
 	usedmovetext
 	doturn
 	specialattackup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -395,10 +395,10 @@
 	usedmovetext
 	doturn
 	specialdefenseup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -407,10 +407,10 @@
 	usedmovetext
 	doturn
 	accuracyup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -419,10 +419,10 @@
 	usedmovetext
 	doturn
 	evasionup2
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
 
@@ -433,10 +433,10 @@
 	doturn
 	checkhit
 	attackdown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -448,10 +448,10 @@
 	doturn
 	checkhit
 	defensedown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -462,10 +462,10 @@
 	doturn
 	checkhit
 	speeddown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -475,10 +475,10 @@
 	doturn
 	checkhit
 	specialattackdown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -488,10 +488,10 @@
 	doturn
 	checkhit
 	specialdefensedown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -505,10 +505,10 @@
 	doturn
 	checkhit
 	accuracydown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -519,10 +519,10 @@
 	doturn
 	checkhit
 	evasiondown
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -533,10 +533,10 @@
 	doturn
 	checkhit
 	attackdown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -547,10 +547,10 @@
 	doturn
 	checkhit
 	defensedown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -562,10 +562,10 @@
 	doturn
 	checkhit
 	speeddown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -575,10 +575,10 @@
 	doturn
 	checkhit
 	specialattackdown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -588,10 +588,10 @@
 	doturn
 	checkhit
 	specialdefensedown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -601,10 +601,10 @@
 	doturn
 	checkhit
 	accuracydown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -614,10 +614,10 @@
 	doturn
 	checkhit
 	evasiondown2
-	effect0x0a
-	effect0x91
-	effect0x0c
-	statmessagetarget
+	lowersub
+	statdownanim
+	raisesub
+	statdownmessage
 	statdownfailtext
 	endmove
 
@@ -634,7 +634,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -641,7 +641,7 @@
 	checkdestinybond
 	buildopponentrage
 	attackdown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 Acid:
@@ -659,7 +659,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -667,7 +667,7 @@
 	buildopponentrage
 	effectchance
 	defensedown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 Bubblebeam:
@@ -686,7 +686,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -693,7 +693,7 @@
 	checkdestinybond
 	buildopponentrage
 	speeddown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 SpecialAttackDownHit:
@@ -708,7 +708,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -715,7 +715,7 @@
 	checkdestinybond
 	buildopponentrage
 	specialattackdown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 PsychicM:
@@ -733,7 +733,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -740,7 +740,7 @@
 	checkdestinybond
 	buildopponentrage
 	specialdefensedown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 MudSlap:
@@ -757,7 +757,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -764,7 +764,7 @@
 	checkdestinybond
 	buildopponentrage
 	accuracydown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 EvasionDownHit:
@@ -779,7 +779,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -786,7 +786,7 @@
 	checkdestinybond
 	buildopponentrage
 	evasiondown
-	statmessagetarget
+	statdownmessage
 	endmove
 
 SteelWing:
@@ -802,7 +802,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -809,7 +809,7 @@
 	checkdestinybond
 	buildopponentrage
 	defenseup
-	statmessageuser
+	statupmessage
 	endmove
 
 MetalClaw:
@@ -825,7 +825,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -832,7 +832,7 @@
 	checkdestinybond
 	buildopponentrage
 	attackup
-	statmessageuser
+	statupmessage
 	endmove
 
 Ancientpower:
@@ -848,7 +848,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -868,7 +868,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -898,7 +898,7 @@
 	doturn
 	usedmovetext
 	unleashenergy
-	effect0xa3
+	resettypematchup
 	checkhit
 	hittarget
 	effect0xa5
@@ -925,7 +925,7 @@
 	damagevariation
 	clearmissdamage
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -958,7 +958,7 @@
 	usedmovetext
 	doturn
 	startloop
-	effect0x0a
+	lowersub
 	checkhit
 	critical
 	damagestats
@@ -966,8 +966,8 @@
 	stab
 	damagevariation
 	clearmissdamage
-	effect0x0b
-	resulttext
+	hittargetnosub
+	failuretext
 	checkfaint
 	criticaltext
 	cleartext
@@ -975,7 +975,7 @@
 	checkdestinybond
 	buildopponentrage
 	endloop
-	effect0x0c
+	raisesub
 	kingsrock
 	endmove
 
@@ -985,7 +985,7 @@
 	usedmovetext
 	doturn
 	startloop
-	effect0x0a
+	lowersub
 	checkhit
 	effectchance
 	critical
@@ -994,8 +994,8 @@
 	stab
 	damagevariation
 	clearmissdamage
-	effect0x0b
-	resulttext
+	hittargetnosub
+	failuretext
 	checkfaint
 	criticaltext
 	cleartext
@@ -1003,7 +1003,7 @@
 	checkdestinybond
 	buildopponentrage
 	endloop
-	effect0x0c
+	raisesub
 	kingsrock
 	poisontarget
 	endmove
@@ -1027,7 +1027,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1046,7 +1046,7 @@
 	stab
 	ohko
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1069,7 +1069,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1122,7 +1122,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1169,7 +1169,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1218,7 +1218,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1246,7 +1246,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1267,7 +1267,7 @@
 	ragedamage
 	damagevariation
 	hittarget
-	resulttext
+	failuretext
 	rage
 	checkfaint
 	criticaltext
@@ -1328,7 +1328,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1350,9 +1350,9 @@
 	stab
 	damagevariation
 	checkhit
-	effect0x0b
-	effect0x0c
-	resulttext
+	hittargetnosub
+	raisesub
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1377,7 +1377,7 @@
 	damagevariation
 	clearmissdamage
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1398,9 +1398,9 @@
 	doturn
 	constantdamage
 	checkhit
-	effect0xa3
+	resettypematchup
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	checkdestinybond
 	buildopponentrage
@@ -1416,7 +1416,7 @@
 	stab
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	supereffectivetext
 	checkdestinybond
@@ -1430,7 +1430,7 @@
 	doturn
 	counter
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	checkdestinybond
 	buildopponentrage
@@ -1466,7 +1466,7 @@
 	effectchance
 	snore
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1541,7 +1541,7 @@
 	falseswipe
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1562,7 +1562,7 @@
 	usedmovetext
 	doturn
 	startloop
-	effect0x0a
+	lowersub
 	checkhit
 	critical
 	damagestats
@@ -1571,8 +1571,8 @@
 	stab
 	damagevariation
 	clearmissdamage
-	effect0x0b
-	resulttext
+	hittargetnosub
+	failuretext
 	checkfaint
 	criticaltext
 	cleartext
@@ -1581,7 +1581,7 @@
 	buildopponentrage
 	kickcounter
 	endloop
-	effect0x0c
+	raisesub
 	kingsrock
 	endmove
 
@@ -1597,7 +1597,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1634,7 +1634,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1708,7 +1708,7 @@
 	rolloutpower
 	damagevariation
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1725,12 +1725,12 @@
 	switchturn
 	attackup2
 	switchturn
-	effect0x0a
-	effect0x92
-	effect0x0c
-	resulttext
+	lowersub
+	statupanim
+	raisesub
+	failuretext
 	switchturn
-	statmessageuser
+	statupmessage
 	switchturn
 	confusetarget
 	endmove
@@ -1747,7 +1747,7 @@
 	furycutter
 	damagevariation
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1776,7 +1776,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1797,7 +1797,7 @@
 	stab
 	damagevariation
 	clearmissdamage
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1818,7 +1818,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1846,7 +1846,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1869,7 +1869,7 @@
 	checkhit
 	doubleundergrounddamage
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1897,7 +1897,7 @@
 	pursuit
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1917,7 +1917,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1959,7 +1959,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -1989,7 +1989,7 @@
 	checkhit
 	fakeout
 	hittarget
-	resulttext
+	failuretext
 	endmove
 
 BellyDrum:
@@ -2012,7 +2012,7 @@
 	doturn
 	mirrorcoat
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	checkdestinybond
 	buildopponentrage
@@ -2032,7 +2032,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2041,7 +2041,7 @@
 	kingsrock
 	endturn
 	defenseup
-	statmessageuser
+	statupmessage
 	endmove
 
 Twister:
@@ -2057,7 +2057,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2079,7 +2079,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2097,8 +2097,8 @@
 	futuresight
 	damagevariation
 	checkhit
-	effect0x0b
-	resulttext
+	hittargetnosub
+	failuretext
 	checkfaint
 	checkdestinybond
 	buildopponentrage
@@ -2116,7 +2116,7 @@
 	doubleflyingdamage
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2137,7 +2137,7 @@
 	checkhit
 	effectchance
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2160,7 +2160,7 @@
 	damagevariation
 	checkhit
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2182,7 +2182,7 @@
 	stab
 	damagevariation
 	hittarget
-	resulttext
+	failuretext
 	checkfaint
 	criticaltext
 	supereffectivetext
@@ -2204,7 +2204,7 @@
 	movedelay
 	doturn
 	startloop
-	effect0x0a
+	lowersub
 	checkhit
 	critical
 	beatup
@@ -2211,8 +2211,8 @@
 	damagecalc
 	damagevariation
 	clearmissdamage
-	effect0x0b
-	resulttext
+	hittargetnosub
+	failuretext
 	checkfaint
 	criticaltext
 	cleartext
@@ -2221,7 +2221,7 @@
 	buildopponentrage
 	endloop
 	effect0xa8
-	effect0x0c
+	raisesub
 	kingsrock
 	endmove
 
@@ -2231,9 +2231,9 @@
 	doturn
 	defenseup
 	curl
-	effect0x0a
-	effect0x92
-	effect0x0c
-	statmessageuser
+	lowersub
+	statupanim
+	raisesub
+	statupmessage
 	statupfailtext
 	endmove
--- /dev/null
+++ b/battle/sliding_intro.asm
@@ -1,0 +1,107 @@
+SlideBattlePics: ; 4e980
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call .subfunction1
+	ld a, rSCX - $ff00
+	ld [hLCDStatCustom], a
+	call .subfunction2
+	xor a
+	ld [hLCDStatCustom], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 4e998
+
+.subfunction1: ; 4e998
+	call .subfunction4
+	ld a, $90
+	ld [hSCX], a
+	ld a, %11100100
+	call DmgToCgbBGPals
+	lb de, %11100100, %11100100
+	call DmgToCgbObjPals
+	ret
+; 4e9ab
+
+.subfunction2: ; 4e9ab
+	ld d, $90
+	ld e, $72
+	ld a, $48
+	inc a
+.loop1
+	push af
+.loop2
+	ld a, [rLY]
+	cp $60
+	jr c, .loop2
+	ld a, d
+	ld [hSCX], a
+	call .subfunction5
+rept 2
+	inc e
+endr
+rept 2
+	dec d
+endr
+	pop af
+	push af
+	cp $1
+	jr z, .skip1
+	push de
+	call .subfunction3
+	pop de
+
+.skip1
+	call DelayFrame
+	pop af
+	dec a
+	jr nz, .loop1
+	ret
+; 4e9d6
+
+.subfunction3: ; 4e9d6
+	ld hl, Sprites + 1
+	ld c, $12 ; 18
+	ld de, $4
+.loop3
+rept 2
+	dec [hl]
+endr
+	add hl, de
+	dec c
+	jr nz, .loop3
+	ret
+; 4e9e5
+
+.subfunction4: ; 4e9e5
+	ld hl, LYOverrides
+	ld a, $90
+	ld bc, SCREEN_HEIGHT_PX
+	call ByteFill
+	ret
+; 4e9f1
+
+.subfunction5: ; 4e9f1
+	ld hl, LYOverrides
+	ld a, d
+	ld c, $3e ; 62
+.loop4
+	ld [hli], a
+	dec c
+	jr nz, .loop4
+	ld a, e
+	ld c, $22 ; 34
+.loop5
+	ld [hli], a
+	dec c
+	jr nz, .loop5
+	xor a
+	ld c, $30 ; 48
+.loop6
+	ld [hli], a
+	dec c
+	jr nz, .loop6
+	ret
+; 4ea0a
--- a/compare.sh
+++ b/compare.sh
@@ -3,7 +3,7 @@
 
 # create baserom.txt if necessary
 if [ ! -f baserom.txt ]; then
-    hexdump -C baserom.gbc > baserom.txt
+	hexdump -C baserom.gbc > baserom.txt
 fi
 
 hexdump -C pokecrystal.gbc > pokecrystal.txt
--- /dev/null
+++ b/compare2.sh
@@ -1,0 +1,51 @@
+#!/bin/sh
+# Compares baserom.gbc and pokecrystal.gbc
+
+# create baserom.txt if necessary
+crystal_md5=9f2922b235a5eeb78d65594e82ef5dde
+if [ ! -f baserom.gbc ]; then
+    echo "FATAL: Baserom not found"
+    exit 1
+fi
+
+if [ $1 ]; then
+	if [ $1 == "-v" ]; then
+		verbose=1
+	else
+		verbose = 0
+	fi
+else
+	verbose=0
+fi
+
+base_md5=`md5sum baserom.gbc | cut -d' ' -f1`
+if [ $verbose == 1 ]; then
+	echo "baserom.gbc:     $base_md5"
+fi
+if [ $base_md5 != $crystal_md5 ]; then
+    echo "FATAL: Baserom is incorrect"
+    exit 1
+fi
+
+built_md5=`md5sum pokecrystal.gbc | cut -d' ' -f1`
+if [ $verbose == 1 ]; then
+	echo "pokecrystal.gbc: $built_md5"
+fi
+if [ $built_md5 != $crystal_md5 ]
+then
+	if [ $verbose == 1 ]; then
+		echo "Checksums do not match, here's where the ROMs differ..."
+	fi
+    if [ ! -f baserom.txt ]; then
+        hexdump -C baserom.gbc > baserom.txt
+    fi
+
+    hexdump -C pokecrystal.gbc > pokecrystal.txt
+
+    diff -u baserom.txt pokecrystal.txt | less
+else
+	if [ $verbose == 1 ]; then
+		echo "Checksums match! :D"
+	fi
+fi
+
--- a/constants.asm
+++ b/constants.asm
@@ -28,3 +28,4 @@
 INCLUDE "constants/radio_constants.asm"
 INCLUDE "constants/sprite_constants.asm"
 INCLUDE "constants/tilemap_constants.asm"
+INCLUDE "constants/battle_tower_constants.asm"
--- a/constants/animation_constants.asm
+++ b/constants/animation_constants.asm
@@ -1,26 +1,3 @@
-ANIM_SWEET_SCENT_2 EQU 255 ; unused?
-ANIM_THROW_POKE_BALL EQU 256
-ANIM_SEND_OUT_MON EQU 257 ; seems to also cover shiny
-ANIM_RETURN_MON EQU 258
-ANIM_CONFUSED EQU 259
-ANIM_SLP EQU 260
-ANIM_BRN EQU 261
-ANIM_PSN EQU 262
-ANIM_SAP EQU 263
-ANIM_FRZ EQU 264
-ANIM_PAR EQU 265
-ANIM_IN_LOVE EQU 266
-ANIM_IN_SANDSTORM EQU 267
-ANIM_IN_NIGHTMARE EQU 268
-ANIM_IN_WHIRLPOOL EQU 269
-ANIM_MISS EQU 270
-ANIM_ENEMY_DAMAGE EQU 271
-ANIM_ENEMY_STAT_DOWN EQU 272 ; vibrate horizontally
-ANIM_PLAYER_STAT_DOWN EQU 273 ; wobble horizontally
-ANIM_PLAYER_DAMAGE EQU 274
-ANIM_WOBBLE EQU 275
-ANIM_SHAKE EQU 276
-ANIM_HIT_CONFUSION EQU 277
 
 ANIM_OBJ_BURNED EQU $10
 ANIM_OBJ_FROZEN EQU $2a
@@ -60,3 +37,14 @@
 
 ANIM_BG_VIBRATE_MON EQU $33
 ANIM_BG_WOBBLE_MON EQU $34
+
+	const_def
+	const ANIM_MON_SLOW    ; 0
+	const ANIM_MON_NORMAL  ; 1
+	const ANIM_MON_MENU    ; 2
+	const ANIM_MON_TRADE   ; 3
+	const ANIM_MON_EVOLVE  ; 4
+	const ANIM_MON_HATCH   ; 5
+	const ANIM_MON_UNUSED  ; 6
+	const ANIM_MON_EGG1    ; 7
+	const ANIM_MON_EGG2    ; 8
--- a/constants/battle_constants.asm
+++ b/constants/battle_constants.asm
@@ -4,6 +4,8 @@
 NUM_MOVES EQU 4
 
 REST_TURNS EQU 2
+MAX_STAT_LEVEL EQU 13
+BASE_STAT_LEVEL EQU 7
 
 	const_def
 	const ATTACK
@@ -13,6 +15,8 @@
 	const SP_DEFENSE
 	const ACCURACY
 	const EVASION
+	const ABILITY
+NUM_LEVEL_STATS EQU const_value
 
 ; move struct
 	const_def
@@ -94,6 +98,8 @@
 	const PAR
 	const SLP ; 7 turns
 
+ALL_STATUS EQU (1 << PSN) + (1 << BRN) + (1 << FRZ) + (1 << PAR) + SLP
+
 ; substatus
 	enum_start 7, -1
 	enum SUBSTATUS_IN_LOVE
@@ -344,3 +350,27 @@
 	const ENEMY_COUNTER_MOVE
 	const PLAYER_LAST_MOVE
 	const ENEMY_LAST_MOVE
+
+; wBattleAction
+	const_def
+	const BATTLEACTION_MOVE1
+	const BATTLEACTION_MOVE2
+	const BATTLEACTION_MOVE3
+	const BATTLEACTION_MOVE4
+	const BATTLEACTION_SWITCH1
+	const BATTLEACTION_SWITCH2
+	const BATTLEACTION_SWITCH3
+	const BATTLEACTION_SWITCH4
+	const BATTLEACTION_SWITCH5
+	const BATTLEACTION_SWITCH6
+	const BATTLEACTION_A
+	const BATTLEACTION_B
+	const BATTLEACTION_C
+	const BATTLEACTION_D
+	const BATTLEACTION_E
+	const BATTLEACTION_FORFEIT
+
+	const_def
+	const WIN
+	const LOSE
+	const DRAW
--- /dev/null
+++ b/constants/battle_tower_constants.asm
@@ -1,0 +1,33 @@
+	const_def
+	const BATTLE_TOWER_ACTION_00
+	const BATTLE_TOWER_ACTION_01
+	const BATTLE_TOWER_ACTION_02
+	const BATTLE_TOWER_ACTION_03
+	const BATTLE_TOWER_ACTION_04
+	const BATTLE_TOWER_ACTION_05
+	const BATTLE_TOWER_ACTION_06
+	const BATTLE_TOWER_ACTION_07
+	const BATTLE_TOWER_ACTION_08
+	const BATTLE_TOWER_ACTION_09
+	const BATTLE_TOWER_ACTION_0A
+	const BATTLE_TOWER_ACTION_0B
+	const BATTLE_TOWER_ACTION_0C
+	const BATTLE_TOWER_ACTION_0D
+	const BATTLE_TOWER_ACTION_0E
+	const BATTLE_TOWER_ACTION_0F
+	const BATTLE_TOWER_ACTION_10
+	const BATTLE_TOWER_ACTION_11
+	const BATTLE_TOWER_ACTION_12
+	const BATTLE_TOWER_ACTION_13
+	const BATTLE_TOWER_ACTION_14
+	const BATTLE_TOWER_ACTION_15
+	const BATTLE_TOWER_ACTION_16
+	const BATTLE_TOWER_ACTION_17
+	const BATTLE_TOWER_ACTION_18
+	const BATTLE_TOWER_ACTION_19
+	const BATTLE_TOWER_ACTION_1A
+	const BATTLE_TOWER_ACTION_1B
+	const BATTLE_TOWER_ACTION_1C
+	const BATTLE_TOWER_ACTION_1D
+	const BATTLE_TOWER_ACTION_1E
+	const BATTLE_TOWER_ACTION_1F
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -39,4 +39,8 @@
 	const ANIM_GFX_WAVE
 	const ANIM_GFX_AEROBLAST
 
+
+LEN_2BPP_TILE EQU 16
+LEN_1BPP_TILE EQU 8
+TILES_PER_FRAME EQU 6
 TILESIZE EQU $10
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -191,74 +191,75 @@
 	const MIRAGE_MAIL  ; $BD
 	const ITEM_BE      ; $BE
 
-	add_tm DYNAMICPUNCH
-	add_tm HEADBUTT
-	add_tm CURSE
-	add_tm ROLLOUT
-	const ITEM_C3
-	add_tm ROAR
-	add_tm TOXIC
-	add_tm ZAP_CANNON
-	add_tm ROCK_SMASH
-	add_tm PSYCH_UP
-	add_tm HIDDEN_POWER
-	add_tm SUNNY_DAY
-	add_tm SWEET_SCENT
-	add_tm SNORE
-	add_tm BLIZZARD
-	add_tm HYPER_BEAM
-	add_tm ICY_WIND
-	add_tm PROTECT
-	add_tm RAIN_DANCE
-	add_tm GIGA_DRAIN
-	add_tm ENDURE
-	add_tm FRUSTRATION
-	add_tm SOLARBEAM
-	add_tm IRON_TAIL
-	add_tm DRAGONBREATH
-	add_tm THUNDER
-	add_tm EARTHQUAKE
-	add_tm RETURN
-	add_tm DIG
-	const ITEM_DC
-	add_tm PSYCHIC
-	add_tm SHADOW_BALL
-	add_tm MUD_SLAP
-	add_tm DOUBLE_TEAM
-	add_tm ICE_PUNCH
-	add_tm SWAGGER
-	add_tm SLEEP_TALK
-	add_tm SLUDGE_BOMB
-	add_tm SANDSTORM
-	add_tm FIRE_BLAST
-	add_tm SWIFT
-	add_tm DEFENSE_CURL
-	add_tm THUNDERPUNCH
-	add_tm DREAM_EATER
-	add_tm DETECT
-	add_tm REST
-	add_tm ATTRACT
-	add_tm THIEF
-	add_tm STEEL_WING
-	add_tm FIRE_PUNCH
-	add_tm FURY_CUTTER
-	add_tm NIGHTMARE
+	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      ; $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
 
-	add_hm CUT
-	add_hm FLY
-	add_hm SURF
-	add_hm STRENGTH
-	add_hm FLASH
-	add_hm WHIRLPOOL
-	add_hm WATERFALL
+	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 HM_08
+	const HM_08         ; $FA
 
 	add_mt FLAMETHROWER
 	add_mt THUNDERBOLT
 	add_mt ICE_BEAM
 
+ITEM_FROM_MEM EQU $ff
 
 
 ; leftovers from red
@@ -265,7 +266,6 @@
 SAFARI_BALL    EQU  8 ; MOON_STONE
 MOON_STONE_RED EQU 10 ; BURN_HEAL
 FULL_HEAL_RED  EQU 52 ; X_SPEED
-
 MAIL_MAX_LENGTH EQU $20
 
 ; pockets
@@ -318,6 +318,7 @@
 	const HELD_SP_DEFENSE_UP
 	const HELD_ACCURACY_UP
 	const HELD_EVASION_UP
+	const HELD_38
 
 const_value SET 40
 	const HELD_40
@@ -412,3 +413,28 @@
 	const MART_MT_MOON
 	const MART_INDIGO_PLATEAU
 	const MART_UNDERGROUND
+
+; PartyMenuActionText
+	const_def
+	const PARTYMENUACTION_00
+	const PARTYMENUACTION_HEALING_ITEM
+	const PARTYMENUACTION_02
+	const PARTYMENUACTION_TEACH_TM
+	const PARTYMENUACTION_04
+	const PARTYMENUACTION_EVO_STONE
+	const PARTYMENUACTION_06
+	const PARTYMENUACTION_07
+	const PARTYMENUACTION_08
+	const PARTYMENUACTION_MOBILE
+
+const_value set $f0
+	const PARTYMENUTEXT_HEAL_PSN
+	const PARTYMENUTEXT_HEAL_BRN
+	const PARTYMENUTEXT_HEAL_FRZ
+	const PARTYMENUTEXT_HEAL_SLP
+	const PARTYMENUTEXT_HEAL_PAR
+	const PARTYMENUTEXT_HEAL_HP
+	const PARTYMENUTEXT_HEAL_ALL
+	const PARTYMENUTEXT_REVIVE
+	const PARTYMENUTEXT_LEVEL_UP
+	const PARTYMENUTEXT_HEAL_CONFUSION
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -494,6 +494,11 @@
 	const _ROOF
 
 ; connection directions
+	const_def
+	const EAST_F
+	const WEST_F
+	const SOUTH_F
+	const NORTH_F
 
 	const_def
 	shift_const EAST
@@ -540,7 +545,7 @@
 	const OBJECT_SPRITE_Y
 	const OBJECT_SPRITE_X_OFFSET
 	const OBJECT_SPRITE_Y_OFFSET
-	const OBJECT_27
+	const OBJECT_MOVEMENT_BYTE_INDEX
 	const OBJECT_28
 	const OBJECT_29
 	const OBJECT_30
@@ -566,11 +571,10 @@
 	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_3_DATA_WIDTH EQU 6
-OBJECT_STRUCT_3_DATA_HEIGHT EQU 37
 
 OW_DOWN  EQU DOWN  << 2
 OW_UP    EQU UP    << 2
@@ -586,7 +590,10 @@
 	const EMOTE_BOLT ; 5
 	const EMOTE_SLEEP ; 6
 	const EMOTE_FISH ; 7
-	const EMOTE_ROD ; 8 - add directional constant
+	const EMOTE_08 ; 8
+	const EMOTE_09 ; 9
+	const EMOTE_0A ; 10
+	const EMOTE_0B ; 11
 EMOTE_MEM EQU -1
 
 	const_def
--- a/constants/map_setup_constants.asm
+++ b/constants/map_setup_constants.asm
@@ -1,16 +1,16 @@
-const_value SET $f0
-	const MAPSETUP_00
+const_value SET $f1
 	const MAPSETUP_WARP
-	const MAPSETUP_02
+	const MAPSETUP_CONTINUE
 	const MAPSETUP_RELOADMAP
-	const MAPSETUP_04
-	const MAPSETUP_05
-	const MAPSETUP_06
-	const MAPSETUP_07
-	const MAPSETUP_08
-	const MAPSETUP_09
-	const MAPSETUP_10
+	const MAPSETUP_TELEPORT
+	const MAPSETUP_DOOR
+	const MAPSETUP_FALL
+	const MAPSETUP_CONNECTION
+	const MAPSETUP_LINKRETURN
+	const MAPSETUP_TRAIN
+	const MAPSETUP_SUBMENU
 	const MAPSETUP_BADWARP
+	const MAPSETUP_FLY
 
 ; Command descriptions from Condensation water's scripting compendium.	const_def
 	const_def
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -7,6 +7,7 @@
 
 ; strings
 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
@@ -109,15 +110,20 @@
 	const MOM_ITEM
 	const MOM_DOLL
 
-BATTLETOWER_PKMNSTRUCTLENGTH EQU $30
 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
 
 NUM_WILDMONS_PER_AREA_TIME_OF_DAY EQU 7
 WILDMON_GRASS_STRUCTURE_LENGTH EQU 2 + 3 * (1 + 2 * NUM_WILDMONS_PER_AREA_TIME_OF_DAY)
 
+MOBILE_EVENT_OBJECT_GS_BALL EQU $b
 
+MALE EQU 0
+FEMALE EQU 1
+
 PRINTNUM_MONEY_F        EQU 5
 PRINTNUM_RIGHTALIGN_F   EQU 6
 PRINTNUM_LEADINGZEROS_F EQU 7
@@ -157,3 +163,64 @@
 
 HMENURETURN_SCRIPT EQU %10000000
 HMENURETURN_ASM    EQU %11111111
+
+NUM_MON_SUBMENU_ITEMS EQU 8
+
+	const_def
+	const ZEPHYRBADGE
+	const HIVEBADGE
+	const PLAINBADGE
+	const FOGBADGE
+	const MINERALBADGE
+	const STORMBADGE
+	const GLACIERBADGE
+	const RISINGBADGE
+NUM_JOHTO_BADGES EQU const_value
+	const_def
+	const BOULDERBADGE
+	const CASCADEBADGE
+	const THUNDERBADGE
+	const RAINBOWBADGE
+	const SOULBADGE
+	const MARSHBADGE
+	const VOLCANOBADGE
+	const EARTHBADGE
+NUM_KANTO_BADGES EQU const_value
+NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES
+
+	const_def
+	const JUMPTABLE_8D24B_FUNCTION_00
+	const JUMPTABLE_8D24B_FUNCTION_01
+	const JUMPTABLE_8D24B_FUNCTION_02
+	const JUMPTABLE_8D24B_FUNCTION_03
+	const JUMPTABLE_8D24B_FUNCTION_04
+	const JUMPTABLE_8D24B_FUNCTION_05
+	const JUMPTABLE_8D24B_FUNCTION_06
+	const JUMPTABLE_8D24B_FUNCTION_07
+	const JUMPTABLE_8D24B_FUNCTION_08
+	const JUMPTABLE_8D24B_FUNCTION_09
+	const JUMPTABLE_8D24B_FUNCTION_0A
+	const JUMPTABLE_8D24B_FUNCTION_0B
+	const JUMPTABLE_8D24B_FUNCTION_0C
+	const JUMPTABLE_8D24B_FUNCTION_0D
+	const JUMPTABLE_8D24B_FUNCTION_0E
+	const JUMPTABLE_8D24B_FUNCTION_0F
+	const JUMPTABLE_8D24B_FUNCTION_10
+	const JUMPTABLE_8D24B_FUNCTION_11
+	const JUMPTABLE_8D24B_FUNCTION_12
+	const JUMPTABLE_8D24B_FUNCTION_13
+	const JUMPTABLE_8D24B_FUNCTION_14
+	const JUMPTABLE_8D24B_FUNCTION_15
+	const JUMPTABLE_8D24B_FUNCTION_16
+	const JUMPTABLE_8D24B_FUNCTION_17
+	const JUMPTABLE_8D24B_FUNCTION_18
+	const JUMPTABLE_8D24B_FUNCTION_19
+	const JUMPTABLE_8D24B_FUNCTION_1A
+	const JUMPTABLE_8D24B_FUNCTION_1B
+	const JUMPTABLE_8D24B_FUNCTION_1C
+	const JUMPTABLE_8D24B_FUNCTION_1D
+	const JUMPTABLE_8D24B_FUNCTION_1E
+	const JUMPTABLE_8D24B_FUNCTION_1F
+	const JUMPTABLE_8D24B_FUNCTION_20
+	const JUMPTABLE_8D24B_FUNCTION_21
+	const JUMPTABLE_8D24B_FUNCTION_22
--- a/constants/move_constants.asm
+++ b/constants/move_constants.asm
@@ -256,3 +256,44 @@
 const_value SET const_value + -1
 
 	const NUM_ATTACKS  ; $fb
+
+; Battle animations use the same constants
+; as the moves up to this point.
+	const ANIM_FC                ; $fc
+	const ANIM_FD                ; $fd
+	const ANIM_FE                ; $fe
+	const ANIM_SWEET_SCENT_2     ; $ff
+	const ANIM_THROW_POKE_BALL   ; $100
+	const ANIM_SEND_OUT_MON      ; $101
+	const ANIM_RETURN_MON        ; $102
+	const ANIM_CONFUSED          ; $103
+	const ANIM_SLP               ; $104
+	const ANIM_BRN               ; $105
+	const ANIM_PSN               ; $106
+	const ANIM_SAP               ; $107
+	const ANIM_FRZ               ; $108
+	const ANIM_PAR               ; $109
+	const ANIM_IN_LOVE           ; $10a
+	const ANIM_IN_SANDSTORM      ; $10b
+	const ANIM_IN_NIGHTMARE      ; $10c
+	const ANIM_IN_WHIRLPOOL      ; $10d
+; battle anims
+	const ANIM_MISS              ; $10e
+	const ANIM_ENEMY_DAMAGE      ; $10f
+	const ANIM_ENEMY_STAT_DOWN   ; $110
+	const ANIM_PLAYER_STAT_DOWN  ; $111
+	const ANIM_PLAYER_DAMAGE     ; $112
+	const ANIM_WOBBLE            ; $113
+	const ANIM_SHAKE             ; $114
+	const ANIM_HIT_CONFUSION     ; $115
+
+; wcfca uses offsets from ANIM_MISS
+	const_def
+	const BATTLEANIM_NONE
+	const BATTLEANIM_ENEMY_DAMAGE
+	const BATTLEANIM_ENEMY_STAT_DOWN
+	const BATTLEANIM_PLAYER_STAT_DOWN
+	const BATTLEANIM_PLAYER_DAMAGE
+	const BATTLEANIM_WOBBLE
+	const BATTLEANIM_SHAKE
+	const BATTLEANIM_HIT_CONFUSION
\ No newline at end of file
--- a/constants/pokemon_constants.asm
+++ b/constants/pokemon_constants.asm
@@ -260,30 +260,62 @@
 EGG EQU 253
 
 ; pokemon structure in RAM
-MON_SPECIES            EQUS "PartyMon1Species - PartyMon1"
-MON_ITEM               EQUS "PartyMon1Item - PartyMon1"
-MON_MOVES              EQUS "PartyMon1Moves - PartyMon1"
-MON_ID                 EQUS "PartyMon1ID - PartyMon1"
-MON_EXP                EQUS "PartyMon1Exp - PartyMon1"
-MON_HP_EXP             EQUS "PartyMon1HPExp - PartyMon1"
-MON_ATK_EXP            EQUS "PartyMon1AtkExp - PartyMon1"
-MON_DEF_EXP            EQUS "PartyMon1DefExp - PartyMon1"
-MON_SPD_EXP            EQUS "PartyMon1SpdExp - PartyMon1"
-MON_SPC_EXP            EQUS "PartyMon1SpcExp - PartyMon1"
-MON_DVS                EQUS "PartyMon1DVs - PartyMon1"
-MON_PP                 EQUS "PartyMon1PP - PartyMon1"
-MON_HAPPINESS          EQUS "PartyMon1Happiness - PartyMon1"
-MON_PKRUS              EQUS "PartyMon1PokerusStatus - PartyMon1"
-MON_CAUGHTTIME         EQUS "PartyMon1CaughtTime - PartyMon1"
-MON_CAUGHTGENDER       EQUS "PartyMon1CaughtGender - PartyMon1"
-MON_LEVEL              EQUS "PartyMon1Level - PartyMon1"
-MON_STATUS             EQUS "PartyMon1Status - PartyMon1"
-MON_HP                 EQUS "PartyMon1HP - PartyMon1"
-MON_MAXHP              EQUS "PartyMon1MaxHP - PartyMon1"
-MON_ATK                EQUS "PartyMon1Attack - PartyMon1"
-MON_DEF                EQUS "PartyMon1Defense - PartyMon1"
-MON_SPD                EQUS "PartyMon1Speed - PartyMon1"
-MON_SAT                EQUS "PartyMon1SpclAtk - PartyMon1"
-MON_SDF                EQUS "PartyMon1SpclDef - PartyMon1"
-BOXMON_STRUCT_LENGTH   EQUS "PartyMon1Status - PartyMon1"
-PARTYMON_STRUCT_LENGTH EQUS "PartyMon1StatsEnd - PartyMon1"
+MON_SPECIES              EQUS "(PartyMon1Species - PartyMon1)"
+MON_ITEM                 EQUS "(PartyMon1Item - PartyMon1)"
+MON_MOVES                EQUS "(PartyMon1Moves - PartyMon1)"
+MON_ID                   EQUS "(PartyMon1ID - PartyMon1)"
+MON_EXP                  EQUS "(PartyMon1Exp - PartyMon1)"
+MON_STAT_EXP             EQUS "(PartyMon1StatExp - PartyMon1)"
+MON_HP_EXP               EQUS "(PartyMon1HPExp - PartyMon1)"
+MON_ATK_EXP              EQUS "(PartyMon1AtkExp - PartyMon1)"
+MON_DEF_EXP              EQUS "(PartyMon1DefExp - PartyMon1)"
+MON_SPD_EXP              EQUS "(PartyMon1SpdExp - PartyMon1)"
+MON_SPC_EXP              EQUS "(PartyMon1SpcExp - PartyMon1)"
+MON_DVS                  EQUS "(PartyMon1DVs - PartyMon1)"
+MON_PP                   EQUS "(PartyMon1PP - PartyMon1)"
+MON_HAPPINESS            EQUS "(PartyMon1Happiness - PartyMon1)"
+MON_PKRUS                EQUS "(PartyMon1PokerusStatus - PartyMon1)"
+MON_CAUGHTDATA           EQUS "(PartyMon1CaughtData - PartyMon1)"
+MON_CAUGHTLEVEL          EQUS "(PartyMon1CaughtLevel - PartyMon1)"
+MON_CAUGHTTIME           EQUS "(PartyMon1CaughtTime - PartyMon1)"
+MON_CAUGHTGENDER         EQUS "(PartyMon1CaughtGender - PartyMon1)"
+MON_CAUGHTLOCATION       EQUS "(PartyMon1CaughtLocation - PartyMon1)"
+MON_LEVEL                EQUS "(PartyMon1Level - PartyMon1)"
+MON_STATUS               EQUS "(PartyMon1Status - PartyMon1)"
+MON_HP                   EQUS "(PartyMon1HP - PartyMon1)"
+MON_MAXHP                EQUS "(PartyMon1MaxHP - PartyMon1)"
+MON_ATK                  EQUS "(PartyMon1Attack - PartyMon1)"
+MON_DEF                  EQUS "(PartyMon1Defense - PartyMon1)"
+MON_SPD                  EQUS "(PartyMon1Speed - PartyMon1)"
+MON_SAT                  EQUS "(PartyMon1SpclAtk - PartyMon1)"
+MON_SDF                  EQUS "(PartyMon1SpclDef - PartyMon1)"
+BOXMON_STRUCT_LENGTH     EQUS "(PartyMon1End - PartyMon1)"
+PARTYMON_STRUCT_LENGTH   EQUS "(PartyMon1StatsEnd - PartyMon1)"
+SCRATCHMON_STRUCT_LENGTH EQUS "(PartyMon1StatsEnd - PartyMon1Item)"
+
+const_value SET 1
+	const MONMENU_CUT        ; 1
+	const MONMENU_FLY        ; 2
+	const MONMENU_SURF       ; 3
+	const MONMENU_STRENGTH   ; 4
+	const MONMENU_WATERFALL  ; 5
+	const MONMENU_FLASH      ; 6
+	const MONMENU_WHIRLPOOL  ; 7
+	const MONMENU_DIG        ; 8
+	const MONMENU_TELEPORT   ; 9
+	const MONMENU_SOFTBOILED ; 10
+	const MONMENU_HEADBUTT   ; 11
+	const MONMENU_ROCKSMASH  ; 12
+	const MONMENU_MILKDRINK  ; 13
+	const MONMENU_SWEETSCENT ; 14
+
+	const MONMENU_STATS      ; 15
+	const MONMENU_SWITCH     ; 16
+	const MONMENU_ITEM       ; 17
+	const MONMENU_CANCEL     ; 18
+	const MONMENU_MOVE       ; 19
+	const MONMENU_MAIL       ; 20
+	const MONMENU_ERROR      ; 21
+
+MONMENU_FIELD_MOVE EQU 0
+MONMENU_MENUOPTION EQU 1
--- a/constants/radio_constants.asm
+++ b/constants/radio_constants.asm
@@ -93,3 +93,18 @@
 	const BUENA_ITEM
 	const BUENA_MOVE
 	const BUENA_STRING
+
+	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
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -35,3 +35,17 @@
 RETVAR_STRBUF2 EQU (0 << 6)
 RETVAR_ADDR_DE EQU (1 << 6)
 RETVAR_EXECUTE EQU (2 << 6)
+
+const_value SET -1
+	const PLAYEREVENT_MAPSCRIPT
+	const PLAYEREVENT_NONE
+	const PLAYEREVENT_SEENBYTRAINER
+	const PLAYEREVENT_TALKTOTRAINER
+	const PLAYEREVENT_ITEMBALL
+	const PLAYEREVENT_CONNECTION
+	const PLAYEREVENT_WARP
+	const PLAYEREVENT_FALL
+	const PLAYEREVENT_WHITEOUT
+	const PLAYEREVENT_HATCH
+	const PLAYEREVENT_JOYCHANGEFACING
+NUM_PLAYER_EVENTS EQU const_value
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -170,6 +170,16 @@
 	const STANDING_SPRITE
 	const STILL_SPRITE
 
+; sprite header fields
+	const_def
+	const SPRITEHEADER_ADDR_LO
+	const SPRITEHEADER_ADDR_HI
+	const SPRITEHEADER_SIZE
+	const SPRITEHEADER_BANK
+	const SPRITEHEADER_TYPE
+	const SPRITEHEADER_PALETTE
+NUM_SPRITEHEADER_FIELDS EQU const_value
+
 ; sprite palettes
 	const_def
 	const PAL_OW_RED
@@ -184,9 +194,9 @@
 ; sprite movement data table indices
 	const_def
 	const SPRITEMOVEDATA_00
-	const SPRITEMOVEDATA_01
-	const SPRITEMOVEDATA_02
-	const SPRITEMOVEDATA_03
+	const SPRITEMOVEDATA_ITEM_TREE
+	const SPRITEMOVEDATA_WANDER
+	const SPRITEMOVEDATA_SPINRANDOM_SLOW
 	const SPRITEMOVEDATA_WALK_UP_DOWN
 	const SPRITEMOVEDATA_WALK_LEFT_RIGHT
 	const SPRITEMOVEDATA_STANDING_DOWN
@@ -193,8 +203,8 @@
 	const SPRITEMOVEDATA_STANDING_UP
 	const SPRITEMOVEDATA_STANDING_LEFT
 	const SPRITEMOVEDATA_STANDING_RIGHT
-	const SPRITEMOVEDATA_0A
-	const SPRITEMOVEDATA_0B
+	const SPRITEMOVEDATA_SPINRANDOM_FAST
+	const SPRITEMOVEDATA_PLAYER
 	const SPRITEMOVEDATA_0C
 	const SPRITEMOVEDATA_0D
 	const SPRITEMOVEDATA_0E
@@ -202,36 +212,38 @@
 	const SPRITEMOVEDATA_10
 	const SPRITEMOVEDATA_11
 	const SPRITEMOVEDATA_12
-	const SPRITEMOVEDATA_13
-	const SPRITEMOVEDATA_14
-	const SPRITEMOVEDATA_15
-	const SPRITEMOVEDATA_16
-	const SPRITEMOVEDATA_17
-	const SPRITEMOVEDATA_18
-	const SPRITEMOVEDATA_19
-	const SPRITEMOVEDATA_1A
+	const SPRITEMOVEDATA_FOLLOWING
+	const SPRITEMOVEDATA_SCRIPTED
+	const SPRITEMOVEDATA_SNORLAX
+	const SPRITEMOVEDATA_POKEMON
+	const SPRITEMOVEDATA_SUDOWOODO
+	const SPRITEMOVEDATA_SMASHABLE_ROCK
+	const SPRITEMOVEDATA_STRENGTH_BOULDER
+	const SPRITEMOVEDATA_FOLLOWNOTEXACT
 	const SPRITEMOVEDATA_1B
 	const SPRITEMOVEDATA_1C
 	const SPRITEMOVEDATA_1D
-	const SPRITEMOVEDATA_1E
-	const SPRITEMOVEDATA_1F
+	const SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
+	const SPRITEMOVEDATA_SPINCLOCKWISE
 	const SPRITEMOVEDATA_20
-	const SPRITEMOVEDATA_21
+	const SPRITEMOVEDATA_BIGDOLL
 	const SPRITEMOVEDATA_22
 	const SPRITEMOVEDATA_23
-	const SPRITEMOVEDATA_24
+	const SPRITEMOVEDATA_LAPRAS
 	const SPRITEMOVEDATA_25
+NUM_SPRITEMOVEDATA EQU const_value +- 1
+SPRITEMOVEDATA_FIELDS EQU 6
 
 ; sprite movement functions
 	const_def
 	const SPRITEMOVEFN_00
-	const SPRITEMOVEFN_01
-	const SPRITEMOVEFN_02
-	const SPRITEMOVEFN_03
-	const SPRITEMOVEFN_04
-	const SPRITEMOVEFN_05
-	const SPRITEMOVEFN_06
-	const SPRITEMOVEFN_07
+	const SPRITEMOVEFN_RANDOM_WALK_Y
+	const SPRITEMOVEFN_RANDOM_WALK_X
+	const SPRITEMOVEFN_RANDOM_WALK_XY
+	const SPRITEMOVEFN_SLOW_RANDOM_SPIN
+	const SPRITEMOVEFN_FAST_RANDOM_SPIN
+	const SPRITEMOVEFN_STANDING
+	const SPRITEMOVEFN_OBEY_DPAD
 	const SPRITEMOVEFN_08
 	const SPRITEMOVEFN_09
 	const SPRITEMOVEFN_0A
@@ -239,16 +251,18 @@
 	const SPRITEMOVEFN_0C
 	const SPRITEMOVEFN_0D
 	const SPRITEMOVEFN_0E
-	const SPRITEMOVEFN_0F
-	const SPRITEMOVEFN_10
-	const SPRITEMOVEFN_11
-	const SPRITEMOVEFN_12
+	const SPRITEMOVEFN_FOLLOW
+	const SPRITEMOVEFN_SCRIPTED
+	const SPRITEMOVEFN_STRENGTH
+	const SPRITEMOVEFN_FOLLOWNOTEXACT
 	const SPRITEMOVEFN_13
 	const SPRITEMOVEFN_14
-	const SPRITEMOVEFN_15
-	const SPRITEMOVEFN_16
+	const SPRITEMOVEFN_BIG_SNORLAX
+	const SPRITEMOVEFN_BOUNCE
 	const SPRITEMOVEFN_17
-	const SPRITEMOVEFN_18
-	const SPRITEMOVEFN_19
+	const SPRITEMOVEFN_SPIN_CLOCKWISE
+	const SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE
 	const SPRITEMOVEFN_1A
 	const SPRITEMOVEFN_1B
+
+MAX_OUTDOOR_SPRITES EQU 23
--- a/constants/tilemap_constants.asm
+++ b/constants/tilemap_constants.asm
@@ -3,3 +3,41 @@
 WATRTILE EQU 15
 
 TALK     EQU  1 << 4
+
+const_value SET 1
+	const TILESET_JOHTO_OUTSIDE_1                    ; 01
+	const TILESET_JOHTO_OUTSIDE_2                    ; 02
+	const TILESET_KANTO_OUTSIDE                      ; 03
+	const TILESET_BATTLE_TOWER_OUTSIDE               ; 04
+	const TILESET_HOUSE_1                            ; 05
+	const TILESET_KRISS_HOUSE                        ; 06
+	const TILESET_POKECENTER                         ; 07
+	const TILESET_GATE                               ; 08
+	const TILESET_PORT                               ; 09
+	const TILESET_LAB                                ; 0a
+	const TILESET_POWER_PLANT                        ; 0b
+	const TILESET_MART                               ; 0c
+	const TILESET_CELADON_MANSION                    ; 0d
+	const TILESET_GAME_CORNER                        ; 0e
+	const TILESET_GYM_1                              ; 0f
+	const TILESET_KURT_HOUSE                         ; 10
+	const TILESET_TRAIN_STATION                      ; 11
+	const TILESET_OLIVINE_GYM                        ; 12
+	const TILESET_LIGHTHOUSE                         ; 13
+	const TILESET_KRISS_HOUSE_2F                     ; 14
+	const TILESET_GOLDENROD_POKECOM_CENTER_2F_MOBILE ; 15
+	const TILESET_BATTLE_TOWER                       ; 16
+	const TILESET_SPROUT_TOWER                       ; 17
+	const TILESET_CAVE                               ; 18
+	const TILESET_PARK                               ; 19
+	const TILESET_RUINS_OF_ALPH                      ; 1a
+	const TILESET_RADIO_TOWER                        ; 1b
+	const TILESET_UNDERGROUND                        ; 1c
+	const TILESET_ICE_PATH                           ; 1d
+	const TILESET_WHIRL_ISLANDS                      ; 1e
+	const TILESET_ILEX_FOREST                        ; 1f
+	const TILESET_20                                 ; 20
+	const TILESET_HO_OH_WORD_ROOM                    ; 21
+	const TILESET_KABUTO_WORD_ROOM                   ; 22
+	const TILESET_OMANYTE_WORD_ROOM                  ; 23
+	const TILESET_AERODACTYL_WORD_ROOM               ; 24
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -54,7 +54,6 @@
 PLAYER_OBJECT EQU 0
 
 NUM_OBJECTS   EQU $10
-OBJECT_LENGTH EQU $10
 
 ; InputType: ; c2c7
 AUTO_INPUT EQU $ff
@@ -76,3 +75,9 @@
 ; After-Champion Spawn
 SPAWN_LANCE EQU 1
 SPAWN_RED EQU 2
+
+; wPokemonWithdrawDepositParameter
+PC_WITHDRAW EQU 0
+PC_DEPOSIT EQU 1
+DAYCARE_WITHDRAW EQU 2
+DAYCARE_DEPOSIT EQU 3
--- a/data/battle_tower.asm
+++ b/data/battle_tower.asm
@@ -1,13 +1,13 @@
 Function_LoadOpponentTrainerAndPokemons: ; 1f8000
 	ld a, [rSVBK]
 	push af
-	ld a, $3
+	ld a, BANK(BT_OTTrainer)
 	ld [rSVBK], a
 	
-	; Fill BT_OTrainer with zeros
+	; Fill BT_OTTrainer with zeros
 	xor a
-	ld hl, BT_OTrainer
-	ld bc, BT_OTrainerEnd - BT_OTrainer
+	ld hl, BT_OTTrainer
+	ld bc, BT_OTTrainerEnd - BT_OTTrainer
 	call ByteFill
 	
 	; Write $ff into the Item-Slots
@@ -17,36 +17,36 @@
 	ld [BT_OTPkmn3Item], a
 	
 	; Set BT_OTTrainer as start address to write the following data to
-	ld de, BT_OTrainer
+	ld de, BT_OTTrainer
 
 	ld a, [hRandomAdd]
 	ld b, a
-.asm_1f8022 ; loop to find a random trainer
+.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 $7f
-	cp $46
+	and (1 << 7) - 1
+	cp 70
 ELSE
-	and $1f
-	cp $15
+	and (1 << 5) - 1
+	cp 21
 ENDC
-	jr nc, .asm_1f8022
+	jr nc, .resample
 	ld b, a
 
-	ld a, BANK(sNrOfBeatenBattleTowerTrainers)
+	ld a, BANK(sBTTrainers)
 	call GetSRAMBank
 
 	ld c, BATTLETOWER_NROFTRAINERS
 	ld hl, sBTTrainers
-.asm_1f803a
+.next_trainer
 	ld a, [hli]
 	cp b
-	jr z, .asm_1f8022
+	jr z, .resample
 	dec c
-	jr nz, .asm_1f803a ; c <= 7  initialise all 7 trainers?
+	jr nz, .next_trainer ; c <= 7  initialise all 7 trainers?
 
 	ld hl, sBTTrainers
 	ld a, [sNrOfBeatenBattleTowerTrainers]
@@ -61,9 +61,9 @@
 	push af
 ; Copy name (10 bytes) and class (1 byte) of trainer
 	ld hl, BattleTowerTrainers
-	ld bc, 11
+	ld bc, NAME_LENGTH
 	call AddNTimes
-	ld bc, 11
+	ld bc, NAME_LENGTH
 	call CopyBytes
 
 	call Function_LoadRandomBattleTowerPkmn
@@ -73,7 +73,7 @@
 	ld bc, BATTLETOWER_TRAINERDATALENGTH
 	call AddNTimes
 	ld bc, BATTLETOWER_TRAINERDATALENGTH
-.asm_1f8070
+.copy_bt_trainer_data_loop
 	ld a, BANK(BattleTowerTrainerData)
 	call GetFarByte
 	ld [de], a
@@ -82,7 +82,7 @@
 	dec bc
 	ld a, b
 	or c
-	jr nz, .asm_1f8070
+	jr nz, .copy_bt_trainer_data_loop
 
 	pop af
 	ld [rSVBK], a
@@ -108,20 +108,20 @@
 
 	ld a, [hRandomAdd]
 	ld b, a
-.asm_1f8099
+.resample
 	call Random
 	ld a, [hRandomAdd]
 	add b
 	ld b, a
 	and $1f
-	cp (BattleTowerMons2 - BattleTowerMons1) / ($3b)
-	jr nc, .asm_1f8099
+	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, BATTLETOWER_PKMNSTRUCTLENGTH + $b
+	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
 	call AddNTimes
 	ld a, [hli]
 	ld b, a
@@ -164,17 +164,17 @@
 	cp b
 	jr z, .FindARandomBattleTowerPkmn
 
-	ld bc, BATTLETOWER_PKMNSTRUCTLENGTH + $b
+	ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
 	call CopyBytes
 
-	ld a, [wd265]
+	ld a, [wNamedObjectIndexBuffer]
 	push af
 	push de
-	ld hl, - (BATTLETOWER_PKMNSTRUCTLENGTH + $b)
+	ld hl, - (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH)
 	add hl, de
 	ld a, [hl]
-	ld [wd265], a
-	ld bc, BATTLETOWER_PKMNSTRUCTLENGTH
+	ld [wNamedObjectIndexBuffer], a
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	push hl
 	call GetPokemonName
@@ -186,7 +186,7 @@
 
 	pop de
 	pop af
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	pop bc
 	dec c
 	jp nz, .loop
@@ -229,6 +229,7 @@
 	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
@@ -282,7 +283,7 @@
 
 
 BattleTowerMons: ; 1f8450
-
+; 10 groups of 21 mons.
 BattleTowerMons1:
 
 	db JOLTEON
--- /dev/null
+++ b/data/battle_tower_2.asm
@@ -1,0 +1,72 @@
+BattleTowerTrainerData:: ; What exactly it is, I don't know
+; Size is 70 (Nr of Trainers in BattleTower) * 0x24 (Nr of Bytes that are copied)
+	db $37, $03, $0e, $09, $25, $0b, $1c, $0d, $12, $0d, $00, $05, $0e, $09, $1a, $0b, $30, $04, $3f, $06, $20, $04, $21, $0d, $0e, $09, $30, $04, $20, $04, $0b, $06, $34, $03, $06, $05
+	db $36, $03, $ca, $00, $22, $08, $20, $04, $33, $0d, $11, $0d, $37, $05, $06, $05, $3f, $06, $ca, $00, $20, $04, $06, $0d, $ca, $00, $21, $03, $09, $06, $12, $04, $28, $0b, $0c, $0d
+	db $32, $06, $31, $04, $02, $02, $03, $04, $22, $02, $00, $05, $40, $04, $2d, $06, $13, $0d, $18, $03, $3f, $04, $13, $0d, $1a, $0c, $33, $04, $32, $0d, $09, $06, $22, $02, $13, $0d
+	db $22, $0c, $22, $0c, $0a, $09, $0b, $08, $2f, $06, $22, $07, $22, $06, $2c, $04, $1a, $06, $0d, $07, $3f, $0d, $00, $05, $0b, $08, $09, $06, $2c, $04, $1f, $0e, $1c, $0b, $41, $0b
+	db $a3, $00, $41, $03, $1f, $04, $29, $00, $1c, $04, $03, $02, $3d, $05, $38, $06, $71, $00, $18, $03, $30, $06, $53, $00, $1e, $05, $b9, $00, $21, $0d, $30, $06, $d1, $00, $0a, $06
+	db $13, $02, $31, $06, $04, $02, $1c, $04, $0d, $0d, $31, $0d, $39, $07, $31, $06, $24, $07, $3d, $04, $40, $04, $30, $0d, $03, $06, $08, $05, $02, $05, $14, $07, $08, $05, $1a, $0d
+	db $0d, $02, $07, $02, $00, $05, $22, $02, $10, $0b, $0a, $0d, $16, $02, $01, $02, $08, $0d, $2c, $04, $23, $07, $23, $0d, $16, $02, $01, $02, $08, $0d, $02, $03, $20, $04, $23, $0d
+	db $1e, $02, $22, $02, $00, $05, $20, $08, $2c, $04, $03, $02, $1d, $05, $41, $08, $41, $08, $35, $05, $40, $0b, $00, $05, $0b, $05, $0b, $02, $00, $05, $04, $04, $14, $08, $00, $05
+	db $06, $0c, $09, $06, $00, $00, $0b, $09, $1e, $0c, $37, $0d, $41, $03, $06, $04, $34, $06, $22, $0c, $15, $09, $23, $0d, $02, $03, $22, $08, $41, $0d, $26, $04, $31, $0d, $01, $05
+	db $22, $0c, $30, $04, $01, $05, $2c, $04, $23, $07, $01, $05, $37, $03, $3d, $04, $3c, $0d, $1c, $03, $29, $08, $3c, $0d, $18, $04, $30, $0d, $06, $05, $14, $07, $30, $0d, $06, $05
+	db $0e, $06, $04, $05, $2c, $04, $1e, $0c, $38, $0d, $00, $05, $3f, $03, $3f, $06, $20, $04, $33, $0d, $04, $0d, $00, $00, $20, $04, $26, $0d, $04, $05, $0c, $04, $26, $0d, $04, $05
+	db $18, $02, $33, $03, $28, $04, $2c, $04, $09, $07, $03, $05, $30, $04, $08, $09, $00, $05, $1a, $02, $32, $03, $00, $05, $3f, $05, $26, $07, $01, $05, $26, $05, $0f, $02, $00, $05
+	db $3a, $0b, $3a, $0b, $00, $05, $42, $03, $19, $08, $30, $04, $39, $03, $13, $06, $13, $06, $19, $08, $21, $0d, $00, $00, $39, $03, $09, $02, $00, $05, $40, $03, $3a, $08, $2a, $0d
+	db $31, $05, $11, $0e, $30, $04, $1b, $08, $07, $08, $0c, $0d, $1b, $02, $1b, $02, $01, $05, $15, $02, $0a, $04, $0e, $0d, $22, $05, $31, $06, $02, $05, $1d, $06, $3b, $07, $0e, $0d
+	db $1b, $02, $2c, $04, $0d, $0d, $34, $03, $00, $03, $11, $0d, $1b, $08, $31, $04, $0b, $0d, $2f, $08, $01, $05, $00, $00, $06, $05, $10, $05, $0f, $06, $11, $0d, $06, $05, $00, $00
+	db $42, $03, $30, $04, $1f, $0b, $16, $0e, $10, $07, $34, $0d, $17, $0e, $04, $0d, $00, $00, $42, $03, $19, $08, $30, $04, $0c, $05, $35, $05, $01, $05, $1e, $06, $36, $08, $41, $0d
+	db $18, $03, $42, $03, $43, $04, $3a, $0b, $3b, $0b, $03, $05, $2c, $05, $06, $05, $1b, $03, $43, $04, $39, $0b, $3c, $04, $14, $0b, $0f, $05, $06, $05, $40, $03, $3f, $04, $20, $0e
+	db $0c, $05, $36, $07, $30, $04, $27, $0b, $10, $08, $31, $0d, $11, $0e, $30, $04, $41, $03, $07, $0d, $2f, $08, $03, $05, $06, $05, $3f, $06, $11, $0e, $30, $04, $30, $07, $06, $05
+	db $36, $03, $06, $06, $44, $04, $0b, $0e, $16, $0d, $00, $05, $32, $0d, $08, $06, $09, $0e, $44, $04, $09, $08, $22, $0d, $04, $0e, $09, $0e, $44, $04, $29, $08, $05, $0d, $00, $00
+	db $3f, $06, $2c, $04, $34, $0d, $14, $05, $13, $02, $04, $02, $0c, $05, $3f, $04, $38, $0d, $02, $03, $29, $08, $32, $0d, $35, $05, $15, $06, $40, $05, $02, $03, $34, $07, $04, $0d
+	db $12, $03, $02, $04, $07, $07, $28, $04, $2c, $0d, $00, $05, $2c, $03, $12, $03, $2b, $06, $0a, $04, $06, $0d, $31, $0d, $2c, $03, $12, $03, $06, $04, $0d, $06, $28, $0b, $02, $05
+	db $41, $04, $3c, $0b, $34, $0d, $40, $03, $00, $03, $0d, $0d, $13, $0c, $33, $08, $31, $0d, $1e, $09, $27, $07, $3b, $0d, $22, $08, $15, $04, $11, $0d, $2c, $03, $0c, $04, $3b, $0d
+	db $03, $0a, $3a, $0d, $2c, $04, $1c, $0b, $35, $07, $26, $0d, $24, $09, $43, $04, $26, $0d, $0f, $03, $1f, $07, $04, $05, $02, $03, $24, $08, $26, $0d, $3f, $03, $13, $04, $04, $05
+	db $06, $05, $06, $05, $06, $05, $06, $05, $2c, $04, $03, $05, $06, $05, $06, $05, $06, $05, $06, $05, $07, $04, $03, $05, $06, $05, $06, $05, $06, $05, $06, $05, $33, $04, $03, $05
+	db $27, $05, $01, $05, $00, $00, $18, $04, $19, $0d, $01, $05, $41, $05, $00, $00, $00, $00, $16, $06, $3d, $04, $19, $0d, $20, $04, $05, $05, $00, $00, $21, $03, $0c, $04, $19, $0d
+	db $03, $02, $43, $03, $27, $04, $28, $04, $2d, $0d, $00, $05, $30, $05, $04, $05, $02, $03, $38, $06, $3e, $04, $41, $0d, $16, $0e, $04, $05, $02, $03, $38, $06, $20, $04, $41, $0d
+	db $34, $03, $00, $03, $11, $0d, $03, $04, $1c, $0b, $07, $0d, $29, $05, $00, $05, $00, $00, $40, $04, $11, $0d, $3e, $0d, $03, $06, $11, $0d, $00, $05, $16, $0e, $0d, $06, $20, $06
+	db $19, $03, $17, $0b, $20, $06, $1b, $0b, $06, $0c, $1a, $0b, $34, $03, $06, $04, $20, $06, $1b, $0b, $06, $0c, $1a, $0b, $34, $03, $36, $04, $20, $06, $1b, $0b, $06, $0c, $1a, $0b
+	db $0a, $03, $0c, $0c, $25, $0a, $21, $0e, $2c, $04, $03, $02, $10, $09, $03, $08, $09, $06, $0a, $03, $31, $04, $16, $0d, $27, $05, $17, $07, $04, $05, $02, $0c, $0a, $09, $2f, $0d
+	db $15, $02, $2c, $04, $03, $02, $24, $04, $39, $04, $0f, $0d, $1e, $02, $11, $02, $01, $05, $0d, $04, $39, $08, $05, $0d, $29, $05, $08, $02, $00, $05, $43, $03, $0c, $04, $3b, $0d
+	db $10, $0b, $04, $04, $00, $05, $05, $08, $21, $0d, $00, $00, $1f, $05, $01, $02, $00, $05, $18, $03, $3c, $08, $31, $0d, $02, $06, $23, $0b, $31, $03, $43, $03, $13, $07, $16, $0d
+	db $0f, $0e, $19, $0d, $00, $05, $0b, $0e, $2c, $04, $19, $0d, $0e, $0e, $2c, $04, $06, $05, $1f, $07, $19, $0d, $01, $05, $06, $05, $37, $03, $29, $04, $32, $0d, $19, $0d, $01, $05
+	db $35, $03, $06, $04, $0d, $06, $29, $0b, $05, $0d, $00, $00, $16, $0e, $30, $04, $0b, $0d, $29, $08, $16, $0d, $00, $05, $11, $0e, $30, $04, $30, $07, $06, $05, $29, $08, $03, $05
+	db $18, $04, $03, $05, $0b, $0d, $2c, $04, $1e, $0c, $01, $05, $1f, $05, $1d, $07, $1d, $07, $2c, $04, $21, $07, $01, $05, $0a, $05, $12, $02, $32, $0d, $11, $0c, $0c, $06, $1a, $0d
+	db $0c, $0c, $37, $03, $1a, $03, $40, $04, $23, $0b, $26, $0a, $3f, $06, $09, $04, $1b, $07, $37, $03, $22, $08, $27, $06, $04, $0e, $03, $05, $00, $00, $26, $0a, $3b, $08, $1b, $07
+	db $18, $03, $1b, $08, $29, $0b, $40, $08, $32, $0d, $00, $05, $2f, $06, $29, $0b, $0b, $0d, $2f, $08, $23, $0d, $02, $0d, $35, $05, $13, $0e, $2e, $06, $22, $06, $2f, $08, $27, $06
+	db $1c, $03, $02, $0e, $31, $03, $2a, $0d, $24, $0d, $00, $00, $18, $03, $0b, $0d, $30, $08, $40, $08, $04, $05, $00, $00, $1c, $05, $01, $05, $03, $03, $02, $0e, $27, $04, $34, $0d
+	db $33, $03, $30, $04, $2c, $04, $1c, $0b, $35, $07, $00, $05, $30, $04, $2c, $04, $20, $06, $1e, $09, $40, $06, $40, $04, $30, $04, $2c, $04, $20, $06, $1e, $09, $40, $06, $22, $07
+	db $22, $0c, $22, $0c, $16, $0a, $35, $0d, $1c, $0b, $3f, $0d, $13, $05, $16, $0a, $40, $06, $23, $07, $06, $0d, $06, $05, $3f, $06, $16, $0a, $16, $0d, $37, $03, $2c, $04, $26, $07
+	db $0e, $06, $05, $08, $04, $0d, $00, $00, $00, $00, $00, $00, $14, $05, $06, $05, $12, $02, $00, $00, $00, $00, $00, $00, $23, $05, $01, $06, $18, $0d, $00, $00, $00, $00, $00, $00
+	db $18, $03, $27, $03, $03, $05, $20, $0b, $27, $06, $06, $05, $20, $0e, $12, $07, $2b, $0d, $2c, $03, $0e, $08, $35, $07, $37, $03, $27, $03, $03, $05, $42, $07, $2f, $08, $06, $05
+	db $36, $03, $30, $04, $17, $04, $2c, $03, $0c, $04, $3b, $0d, $18, $03, $32, $07, $15, $0d, $35, $05, $0d, $07, $07, $0d, $09, $05, $06, $05, $0f, $0c, $09, $04, $07, $0d, $3b, $0d
+	db $0b, $05, $14, $06, $24, $04, $0a, $0d, $3c, $0d, $00, $05, $14, $05, $09, $02, $32, $0d, $1e, $06, $04, $07, $06, $0d, $1a, $05, $33, $04, $03, $05, $16, $02, $00, $02, $07, $05
+	db $0a, $03, $32, $07, $0b, $0e, $22, $06, $2c, $04, $29, $0b, $0a, $03, $12, $0d, $24, $04, $1a, $0b, $33, $0d, $03, $0d, $0a, $03, $35, $04, $1b, $07, $06, $05, $1e, $06, $14, $07
+	db $0e, $06, $2c, $04, $00, $0d, $06, $03, $31, $04, $04, $0d, $0c, $05, $12, $02, $00, $05, $40, $03, $09, $04, $01, $0d, $35, $05, $36, $08, $00, $05, $02, $03, $31, $04, $21, $0d
+	db $22, $05, $07, $0e, $30, $04, $c5, $00, $10, $02, $01, $05, $0c, $0c, $00, $01, $30, $04, $82, $00, $21, $04, $01, $05, $10, $01, $11, $05, $30, $04, $c3, $00, $3f, $04, $06, $05
+	db $3a, $07, $3b, $07, $36, $03, $30, $04, $21, $04, $06, $0d, $17, $0e, $03, $05, $00, $00, $3f, $06, $21, $04, $21, $0d, $36, $05, $36, $03, $30, $04, $33, $06, $3f, $04, $0c, $0d
+	db $43, $03, $20, $04, $41, $0d, $17, $06, $06, $03, $0a, $04, $3a, $06, $13, $04, $04, $0d, $08, $06, $3f, $04, $31, $0d, $43, $03, $39, $04, $04, $05, $17, $06, $39, $04, $41, $0d
+	db $36, $03, $16, $04, $08, $06, $09, $08, $06, $0d, $00, $00, $1f, $0b, $03, $05, $12, $0e, $0f, $0e, $2c, $0d, $00, $05, $3a, $06, $16, $04, $38, $06, $38, $06, $2c, $0d, $00, $05
+	db $11, $05, $25, $03, $33, $04, $2f, $08, $19, $0d, $00, $05, $11, $05, $25, $03, $3f, $06, $26, $04, $19, $0d, $00, $05, $11, $05, $21, $03, $35, $04, $14, $07, $19, $0d, $06, $05
+	db $2c, $04, $0a, $0d, $04, $05, $33, $03, $29, $0b, $05, $0d, $00, $06, $04, $05, $09, $02, $33, $03, $07, $04, $35, $07, $33, $03, $3a, $08, $05, $0d, $3f, $06, $29, $08, $05, $0d
+	db $05, $03, $1b, $04, $41, $03, $39, $0b, $3a, $0b, $01, $05, $2c, $04, $03, $05, $00, $00, $40, $07, $3e, $0d, $00, $05, $00, $0e, $09, $05, $04, $05, $19, $09, $1d, $0b, $03, $05
+	db $1c, $0c, $20, $06, $05, $08, $3e, $0d, $00, $05, $00, $00, $18, $03, $1f, $0e, $11, $0a, $1c, $0b, $15, $0b, $1c, $06, $03, $0e, $06, $0c, $21, $0c, $14, $0d, $06, $05, $1f, $08
+	db $37, $03, $0e, $01, $08, $01, $19, $06, $27, $0b, $03, $02, $0e, $01, $08, $01, $1b, $08, $05, $08, $21, $0d, $00, $00, $36, $03, $33, $04, $04, $05, $00, $04, $41, $08, $3b, $0d
+	db $06, $02, $00, $05, $34, $03, $00, $03, $0d, $0d, $00, $05, $3c, $06, $05, $08, $16, $04, $2f, $08, $33, $0d, $02, $0d, $1c, $05, $00, $05, $18, $03, $05, $08, $1b, $04, $0c, $0d
+	db $2c, $04, $13, $09, $20, $06, $39, $03, $20, $04, $3c, $0d, $05, $03, $43, $04, $0b, $0d, $22, $04, $06, $0d, $31, $0d, $24, $08, $00, $05, $02, $03, $09, $08, $06, $0d, $3b, $0d
+	db $06, $03, $20, $04, $24, $0d, $24, $04, $10, $0b, $00, $05, $39, $07, $00, $05, $2a, $06, $04, $04, $3c, $04, $00, $00, $24, $04, $1c, $0b, $07, $0d, $2f, $08, $09, $06, $06, $05
+	db $44, $07, $23, $0b, $33, $0d, $2c, $04, $20, $06, $24, $08, $24, $08, $00, $05, $0e, $0e, $12, $08, $09, $0b, $28, $06, $24, $08, $00, $05, $02, $03, $13, $06, $11, $08, $41, $0d
+	db $36, $03, $06, $06, $30, $04, $0f, $0b, $02, $0b, $3b, $0d, $31, $0d, $00, $05, $39, $03, $20, $04, $21, $0d, $00, $00, $04, $0e, $02, $05, $06, $06, $20, $0e, $0b, $06, $27, $06
+	db $14, $05, $04, $02, $09, $0e, $08, $08, $2e, $08, $41, $0d, $34, $05, $2e, $08, $21, $0d, $3f, $03, $18, $08, $00, $05, $36, $05, $05, $02, $00, $05, $17, $06, $39, $04, $00, $05
+	db $34, $03, $00, $03, $11, $0d, $41, $08, $0b, $06, $06, $04, $39, $07, $00, $05, $00, $00, $36, $03, $30, $04, $07, $08, $10, $05, $15, $08, $00, $05, $3a, $06, $1e, $06, $14, $0d
+	db $37, $05, $37, $05, $00, $05, $38, $05, $38, $05, $41, $05, $25, $05, $04, $05, $32, $05, $31, $05, $41, $05, $41, $05, $0f, $05, $04, $05, $0f, $05, $0f, $05, $16, $05, $01, $05
+	db $1f, $0e, $36, $04, $40, $0d, $2f, $08, $1a, $0d, $00, $05, $21, $06, $35, $05, $24, $06, $1a, $06, $12, $0e, $00, $00, $1b, $05, $31, $06, $02, $05, $28, $0d, $27, $0d, $00, $00
+	db $41, $08, $0b, $06, $37, $03, $08, $06, $20, $04, $3b, $0d, $15, $02, $16, $06, $26, $07, $13, $0c, $33, $08, $32, $0d, $2d, $07, $00, $05, $35, $03, $0b, $04, $28, $06, $06, $05
+	db $0c, $08, $2c, $04, $1c, $0b, $06, $07, $0a, $0d, $03, $05, $30, $06, $06, $07, $00, $05, $2c, $04, $20, $06, $24, $07, $30, $06, $0b, $07, $00, $05, $2c, $04, $20, $06, $22, $07
+	db $22, $0c, $22, $0c, $0a, $09, $04, $0b, $02, $07, $27, $06, $0f, $0c, $0a, $0a, $22, $06, $02, $07, $27, $06, $04, $05, $3a, $06, $0e, $0a, $22, $06, $05, $08, $02, $07, $04, $05
+	db $2d, $0b, $02, $08, $37, $0d, $10, $05, $29, $07, $03, $05, $20, $0e, $0e, $0e, $0d, $06, $42, $07, $30, $08, $28, $06, $10, $05, $04, $05, $04, $05, $10, $05, $10, $05, $04, $05
+	db $3f, $03, $16, $0e, $3f, $08, $0b, $0d, $2f, $08, $41, $0d, $34, $05, $00, $05, $02, $03, $3a, $06, $31, $07, $31, $0d, $21, $0e, $03, $05, $3f, $03, $16, $0e, $26, $07, $03, $05
+	db $3a, $06, $2c, $03, $12, $03, $17, $0c, $28, $0b, $06, $0d, $3a, $06, $17, $0c, $23, $0b, $0d, $06, $2f, $08, $22, $0d, $14, $07, $04, $05, $17, $0c, $1c, $0b, $1b, $07, $00, $05
+	db $1b, $02, $00, $05, $0c, $08, $2c, $04, $23, $0b, $32, $0d, $2b, $07, $1f, $04, $3b, $0d, $09, $07, $09, $07, $00, $05, $26, $05, $00, $05, $3f, $03, $22, $07, $d1, $00, $32, $0d
--- a/data/evos_attacks.asm
+++ b/data/evos_attacks.asm
@@ -10,3389 +10,3389 @@
 EvosAttacks::
 
 BulbasaurEvosAttacks:
-	db EVOLVE_LEVEL,16,IVYSAUR
+	db EVOLVE_LEVEL, 16, IVYSAUR
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 4,GROWL
-	db 7,LEECH_SEED
-	db 10,VINE_WHIP
-	db 15,POISONPOWDER
-	db 15,SLEEP_POWDER
-	db 20,RAZOR_LEAF
-	db 25,SWEET_SCENT
-	db 32,GROWTH
-	db 39,SYNTHESIS
-	db 46,SOLARBEAM
+	db 1, TACKLE
+	db 4, GROWL
+	db 7, LEECH_SEED
+	db 10, VINE_WHIP
+	db 15, POISONPOWDER
+	db 15, SLEEP_POWDER
+	db 20, RAZOR_LEAF
+	db 25, SWEET_SCENT
+	db 32, GROWTH
+	db 39, SYNTHESIS
+	db 46, SOLARBEAM
 	db 0 ; no more level-up moves
 
 IvysaurEvosAttacks:
-	db EVOLVE_LEVEL,32,VENUSAUR
+	db EVOLVE_LEVEL, 32, VENUSAUR
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,LEECH_SEED
-	db 4,GROWL
-	db 7,LEECH_SEED
-	db 10,VINE_WHIP
-	db 15,POISONPOWDER
-	db 15,SLEEP_POWDER
-	db 22,RAZOR_LEAF
-	db 29,SWEET_SCENT
-	db 38,GROWTH
-	db 47,SYNTHESIS
-	db 56,SOLARBEAM
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, LEECH_SEED
+	db 4, GROWL
+	db 7, LEECH_SEED
+	db 10, VINE_WHIP
+	db 15, POISONPOWDER
+	db 15, SLEEP_POWDER
+	db 22, RAZOR_LEAF
+	db 29, SWEET_SCENT
+	db 38, GROWTH
+	db 47, SYNTHESIS
+	db 56, SOLARBEAM
 	db 0 ; no more level-up moves
 
 VenusaurEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,LEECH_SEED
-	db 1,VINE_WHIP
-	db 4,GROWL
-	db 7,LEECH_SEED
-	db 10,VINE_WHIP
-	db 15,POISONPOWDER
-	db 15,SLEEP_POWDER
-	db 22,RAZOR_LEAF
-	db 29,SWEET_SCENT
-	db 41,GROWTH
-	db 53,SYNTHESIS
-	db 65,SOLARBEAM
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, LEECH_SEED
+	db 1, VINE_WHIP
+	db 4, GROWL
+	db 7, LEECH_SEED
+	db 10, VINE_WHIP
+	db 15, POISONPOWDER
+	db 15, SLEEP_POWDER
+	db 22, RAZOR_LEAF
+	db 29, SWEET_SCENT
+	db 41, GROWTH
+	db 53, SYNTHESIS
+	db 65, SOLARBEAM
 	db 0 ; no more level-up moves
 
 CharmanderEvosAttacks:
-	db EVOLVE_LEVEL,16,CHARMELEON
+	db EVOLVE_LEVEL, 16, CHARMELEON
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,GROWL
-	db 7,EMBER
-	db 13,SMOKESCREEN
-	db 19,RAGE
-	db 25,SCARY_FACE
-	db 31,FLAMETHROWER
-	db 37,SLASH
-	db 43,DRAGON_RAGE
-	db 49,FIRE_SPIN
+	db 1, SCRATCH
+	db 1, GROWL
+	db 7, EMBER
+	db 13, SMOKESCREEN
+	db 19, RAGE
+	db 25, SCARY_FACE
+	db 31, FLAMETHROWER
+	db 37, SLASH
+	db 43, DRAGON_RAGE
+	db 49, FIRE_SPIN
 	db 0 ; no more level-up moves
 
 CharmeleonEvosAttacks:
-	db EVOLVE_LEVEL,36,CHARIZARD
+	db EVOLVE_LEVEL, 36, CHARIZARD
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,GROWL
-	db 1,EMBER
-	db 7,EMBER
-	db 13,SMOKESCREEN
-	db 20,RAGE
-	db 27,SCARY_FACE
-	db 34,FLAMETHROWER
-	db 41,SLASH
-	db 48,DRAGON_RAGE
-	db 55,FIRE_SPIN
+	db 1, SCRATCH
+	db 1, GROWL
+	db 1, EMBER
+	db 7, EMBER
+	db 13, SMOKESCREEN
+	db 20, RAGE
+	db 27, SCARY_FACE
+	db 34, FLAMETHROWER
+	db 41, SLASH
+	db 48, DRAGON_RAGE
+	db 55, FIRE_SPIN
 	db 0 ; no more level-up moves
 
 CharizardEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,GROWL
-	db 1,EMBER
-	db 1,SMOKESCREEN
-	db 7,EMBER
-	db 13,SMOKESCREEN
-	db 20,RAGE
-	db 27,SCARY_FACE
-	db 34,FLAMETHROWER
-	db 36,WING_ATTACK
-	db 44,SLASH
-	db 54,DRAGON_RAGE
-	db 64,FIRE_SPIN
+	db 1, SCRATCH
+	db 1, GROWL
+	db 1, EMBER
+	db 1, SMOKESCREEN
+	db 7, EMBER
+	db 13, SMOKESCREEN
+	db 20, RAGE
+	db 27, SCARY_FACE
+	db 34, FLAMETHROWER
+	db 36, WING_ATTACK
+	db 44, SLASH
+	db 54, DRAGON_RAGE
+	db 64, FIRE_SPIN
 	db 0 ; no more level-up moves
 
 SquirtleEvosAttacks:
-	db EVOLVE_LEVEL,16,WARTORTLE
+	db EVOLVE_LEVEL, 16, WARTORTLE
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 4,TAIL_WHIP
-	db 7,BUBBLE
-	db 10,WITHDRAW
-	db 13,WATER_GUN
-	db 18,BITE
-	db 23,RAPID_SPIN
-	db 28,PROTECT
-	db 33,RAIN_DANCE
-	db 40,SKULL_BASH
-	db 47,HYDRO_PUMP
+	db 1, TACKLE
+	db 4, TAIL_WHIP
+	db 7, BUBBLE
+	db 10, WITHDRAW
+	db 13, WATER_GUN
+	db 18, BITE
+	db 23, RAPID_SPIN
+	db 28, PROTECT
+	db 33, RAIN_DANCE
+	db 40, SKULL_BASH
+	db 47, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 WartortleEvosAttacks:
-	db EVOLVE_LEVEL,36,BLASTOISE
+	db EVOLVE_LEVEL, 36, BLASTOISE
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 1,BUBBLE
-	db 4,TAIL_WHIP
-	db 7,BUBBLE
-	db 10,WITHDRAW
-	db 13,WATER_GUN
-	db 19,BITE
-	db 25,RAPID_SPIN
-	db 31,PROTECT
-	db 37,RAIN_DANCE
-	db 45,SKULL_BASH
-	db 53,HYDRO_PUMP
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 1, BUBBLE
+	db 4, TAIL_WHIP
+	db 7, BUBBLE
+	db 10, WITHDRAW
+	db 13, WATER_GUN
+	db 19, BITE
+	db 25, RAPID_SPIN
+	db 31, PROTECT
+	db 37, RAIN_DANCE
+	db 45, SKULL_BASH
+	db 53, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 BlastoiseEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 1,BUBBLE
-	db 1,WITHDRAW
-	db 4,TAIL_WHIP
-	db 7,BUBBLE
-	db 10,WITHDRAW
-	db 13,WATER_GUN
-	db 19,BITE
-	db 25,RAPID_SPIN
-	db 31,PROTECT
-	db 42,RAIN_DANCE
-	db 55,SKULL_BASH
-	db 68,HYDRO_PUMP
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 1, BUBBLE
+	db 1, WITHDRAW
+	db 4, TAIL_WHIP
+	db 7, BUBBLE
+	db 10, WITHDRAW
+	db 13, WATER_GUN
+	db 19, BITE
+	db 25, RAPID_SPIN
+	db 31, PROTECT
+	db 42, RAIN_DANCE
+	db 55, SKULL_BASH
+	db 68, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 CaterpieEvosAttacks:
-	db EVOLVE_LEVEL,7,METAPOD
+	db EVOLVE_LEVEL, 7, METAPOD
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,STRING_SHOT
+	db 1, TACKLE
+	db 1, STRING_SHOT
 	db 0 ; no more level-up moves
 
 MetapodEvosAttacks:
-	db EVOLVE_LEVEL,10,BUTTERFREE
+	db EVOLVE_LEVEL, 10, BUTTERFREE
 	db 0 ; no more evolutions
-	db 1,HARDEN
-	db 7,HARDEN
+	db 1, HARDEN
+	db 7, HARDEN
 	db 0 ; no more level-up moves
 
 ButterfreeEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CONFUSION
-	db 10,CONFUSION
-	db 13,POISONPOWDER
-	db 14,STUN_SPORE
-	db 15,SLEEP_POWDER
-	db 18,SUPERSONIC
-	db 23,WHIRLWIND
-	db 28,GUST
-	db 34,PSYBEAM
-	db 40,SAFEGUARD
+	db 1, CONFUSION
+	db 10, CONFUSION
+	db 13, POISONPOWDER
+	db 14, STUN_SPORE
+	db 15, SLEEP_POWDER
+	db 18, SUPERSONIC
+	db 23, WHIRLWIND
+	db 28, GUST
+	db 34, PSYBEAM
+	db 40, SAFEGUARD
 	db 0 ; no more level-up moves
 
 WeedleEvosAttacks:
-	db EVOLVE_LEVEL,7,KAKUNA
+	db EVOLVE_LEVEL, 7, KAKUNA
 	db 0 ; no more evolutions
-	db 1,POISON_STING
-	db 1,STRING_SHOT
+	db 1, POISON_STING
+	db 1, STRING_SHOT
 	db 0 ; no more level-up moves
 
 KakunaEvosAttacks:
-	db EVOLVE_LEVEL,10,BEEDRILL
+	db EVOLVE_LEVEL, 10, BEEDRILL
 	db 0 ; no more evolutions
-	db 1,HARDEN
-	db 7,HARDEN
+	db 1, HARDEN
+	db 7, HARDEN
 	db 0 ; no more level-up moves
 
 BeedrillEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,FURY_ATTACK
-	db 10,FURY_ATTACK
-	db 15,FOCUS_ENERGY
-	db 20,TWINEEDLE
-	db 25,RAGE
-	db 30,PURSUIT
-	db 35,PIN_MISSILE
-	db 40,AGILITY
+	db 1, FURY_ATTACK
+	db 10, FURY_ATTACK
+	db 15, FOCUS_ENERGY
+	db 20, TWINEEDLE
+	db 25, RAGE
+	db 30, PURSUIT
+	db 35, PIN_MISSILE
+	db 40, AGILITY
 	db 0 ; no more level-up moves
 
 PidgeyEvosAttacks:
-	db EVOLVE_LEVEL,18,PIDGEOTTO
+	db EVOLVE_LEVEL, 18, PIDGEOTTO
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 5,SAND_ATTACK
-	db 9,GUST
-	db 15,QUICK_ATTACK
-	db 21,WHIRLWIND
-	db 29,WING_ATTACK
-	db 37,AGILITY
-	db 47,MIRROR_MOVE
+	db 1, TACKLE
+	db 5, SAND_ATTACK
+	db 9, GUST
+	db 15, QUICK_ATTACK
+	db 21, WHIRLWIND
+	db 29, WING_ATTACK
+	db 37, AGILITY
+	db 47, MIRROR_MOVE
 	db 0 ; no more level-up moves
 
 PidgeottoEvosAttacks:
-	db EVOLVE_LEVEL,36,PIDGEOT
+	db EVOLVE_LEVEL, 36, PIDGEOT
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SAND_ATTACK
-	db 1,GUST
-	db 5,SAND_ATTACK
-	db 9,GUST
-	db 15,QUICK_ATTACK
-	db 23,WHIRLWIND
-	db 33,WING_ATTACK
-	db 43,AGILITY
-	db 55,MIRROR_MOVE
+	db 1, TACKLE
+	db 1, SAND_ATTACK
+	db 1, GUST
+	db 5, SAND_ATTACK
+	db 9, GUST
+	db 15, QUICK_ATTACK
+	db 23, WHIRLWIND
+	db 33, WING_ATTACK
+	db 43, AGILITY
+	db 55, MIRROR_MOVE
 	db 0 ; no more level-up moves
 
 PidgeotEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SAND_ATTACK
-	db 1,GUST
-	db 1,QUICK_ATTACK
-	db 5,SAND_ATTACK
-	db 9,GUST
-	db 15,QUICK_ATTACK
-	db 23,WHIRLWIND
-	db 33,WING_ATTACK
-	db 46,AGILITY
-	db 61,MIRROR_MOVE
+	db 1, TACKLE
+	db 1, SAND_ATTACK
+	db 1, GUST
+	db 1, QUICK_ATTACK
+	db 5, SAND_ATTACK
+	db 9, GUST
+	db 15, QUICK_ATTACK
+	db 23, WHIRLWIND
+	db 33, WING_ATTACK
+	db 46, AGILITY
+	db 61, MIRROR_MOVE
 	db 0 ; no more level-up moves
 
 RattataEvosAttacks:
-	db EVOLVE_LEVEL,20,RATICATE
+	db EVOLVE_LEVEL, 20, RATICATE
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 7,QUICK_ATTACK
-	db 13,HYPER_FANG
-	db 20,FOCUS_ENERGY
-	db 27,PURSUIT
-	db 34,SUPER_FANG
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 7, QUICK_ATTACK
+	db 13, HYPER_FANG
+	db 20, FOCUS_ENERGY
+	db 27, PURSUIT
+	db 34, SUPER_FANG
 	db 0 ; no more level-up moves
 
 RaticateEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 1,QUICK_ATTACK
-	db 7,QUICK_ATTACK
-	db 13,HYPER_FANG
-	db 20,SCARY_FACE
-	db 30,PURSUIT
-	db 40,SUPER_FANG
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 1, QUICK_ATTACK
+	db 7, QUICK_ATTACK
+	db 13, HYPER_FANG
+	db 20, SCARY_FACE
+	db 30, PURSUIT
+	db 40, SUPER_FANG
 	db 0 ; no more level-up moves
 
 SpearowEvosAttacks:
-	db EVOLVE_LEVEL,20,FEAROW
+	db EVOLVE_LEVEL, 20, FEAROW
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,GROWL
-	db 7,LEER
-	db 13,FURY_ATTACK
-	db 25,PURSUIT
-	db 31,MIRROR_MOVE
-	db 37,DRILL_PECK
-	db 43,AGILITY
+	db 1, PECK
+	db 1, GROWL
+	db 7, LEER
+	db 13, FURY_ATTACK
+	db 25, PURSUIT
+	db 31, MIRROR_MOVE
+	db 37, DRILL_PECK
+	db 43, AGILITY
 	db 0 ; no more level-up moves
 
 FearowEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,GROWL
-	db 1,LEER
-	db 1,FURY_ATTACK
-	db 7,LEER
-	db 13,FURY_ATTACK
-	db 26,PURSUIT
-	db 32,MIRROR_MOVE
-	db 40,DRILL_PECK
-	db 47,AGILITY
+	db 1, PECK
+	db 1, GROWL
+	db 1, LEER
+	db 1, FURY_ATTACK
+	db 7, LEER
+	db 13, FURY_ATTACK
+	db 26, PURSUIT
+	db 32, MIRROR_MOVE
+	db 40, DRILL_PECK
+	db 47, AGILITY
 	db 0 ; no more level-up moves
 
 EkansEvosAttacks:
-	db EVOLVE_LEVEL,22,ARBOK
+	db EVOLVE_LEVEL, 22, ARBOK
 	db 0 ; no more evolutions
-	db 1,WRAP
-	db 1,LEER
-	db 9,POISON_STING
-	db 15,BITE
-	db 23,GLARE
-	db 29,SCREECH
-	db 37,ACID
-	db 43,HAZE
+	db 1, WRAP
+	db 1, LEER
+	db 9, POISON_STING
+	db 15, BITE
+	db 23, GLARE
+	db 29, SCREECH
+	db 37, ACID
+	db 43, HAZE
 	db 0 ; no more level-up moves
 
 ArbokEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WRAP
-	db 1,LEER
-	db 1,POISON_STING
-	db 1,BITE
-	db 9,POISON_STING
-	db 15,BITE
-	db 25,GLARE
-	db 33,SCREECH
-	db 43,ACID
-	db 51,HAZE
+	db 1, WRAP
+	db 1, LEER
+	db 1, POISON_STING
+	db 1, BITE
+	db 9, POISON_STING
+	db 15, BITE
+	db 25, GLARE
+	db 33, SCREECH
+	db 43, ACID
+	db 51, HAZE
 	db 0 ; no more level-up moves
 
 PikachuEvosAttacks:
-	db EVOLVE_ITEM,THUNDERSTONE,RAICHU
+	db EVOLVE_ITEM, THUNDERSTONE, RAICHU
 	db 0 ; no more evolutions
-	db 1,THUNDERSHOCK
-	db 1,GROWL
-	db 6,TAIL_WHIP
-	db 8,THUNDER_WAVE
-	db 11,QUICK_ATTACK
-	db 15,DOUBLE_TEAM
-	db 20,SLAM
-	db 26,THUNDERBOLT
-	db 33,AGILITY
-	db 41,THUNDER
-	db 50,LIGHT_SCREEN
+	db 1, THUNDERSHOCK
+	db 1, GROWL
+	db 6, TAIL_WHIP
+	db 8, THUNDER_WAVE
+	db 11, QUICK_ATTACK
+	db 15, DOUBLE_TEAM
+	db 20, SLAM
+	db 26, THUNDERBOLT
+	db 33, AGILITY
+	db 41, THUNDER
+	db 50, LIGHT_SCREEN
 	db 0 ; no more level-up moves
 
 RaichuEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,THUNDERSHOCK
-	db 1,TAIL_WHIP
-	db 1,QUICK_ATTACK
-	db 1,THUNDERBOLT
+	db 1, THUNDERSHOCK
+	db 1, TAIL_WHIP
+	db 1, QUICK_ATTACK
+	db 1, THUNDERBOLT
 	db 0 ; no more level-up moves
 
 SandshrewEvosAttacks:
-	db EVOLVE_LEVEL,22,SANDSLASH
+	db EVOLVE_LEVEL, 22, SANDSLASH
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 6,DEFENSE_CURL
-	db 11,SAND_ATTACK
-	db 17,POISON_STING
-	db 23,SLASH
-	db 30,SWIFT
-	db 37,FURY_SWIPES
-	db 45,SANDSTORM
+	db 1, SCRATCH
+	db 6, DEFENSE_CURL
+	db 11, SAND_ATTACK
+	db 17, POISON_STING
+	db 23, SLASH
+	db 30, SWIFT
+	db 37, FURY_SWIPES
+	db 45, SANDSTORM
 	db 0 ; no more level-up moves
 
 SandslashEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,DEFENSE_CURL
-	db 1,SAND_ATTACK
-	db 6,DEFENSE_CURL
-	db 11,SAND_ATTACK
-	db 17,POISON_STING
-	db 24,SLASH
-	db 33,SWIFT
-	db 42,FURY_SWIPES
-	db 52,SANDSTORM
+	db 1, SCRATCH
+	db 1, DEFENSE_CURL
+	db 1, SAND_ATTACK
+	db 6, DEFENSE_CURL
+	db 11, SAND_ATTACK
+	db 17, POISON_STING
+	db 24, SLASH
+	db 33, SWIFT
+	db 42, FURY_SWIPES
+	db 52, SANDSTORM
 	db 0 ; no more level-up moves
 
 NidoranFEvosAttacks:
-	db EVOLVE_LEVEL,16,NIDORINA
+	db EVOLVE_LEVEL, 16, NIDORINA
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 1,TACKLE
-	db 8,SCRATCH
-	db 12,DOUBLE_KICK
-	db 17,POISON_STING
-	db 23,TAIL_WHIP
-	db 30,BITE
-	db 38,FURY_SWIPES
+	db 1, GROWL
+	db 1, TACKLE
+	db 8, SCRATCH
+	db 12, DOUBLE_KICK
+	db 17, POISON_STING
+	db 23, TAIL_WHIP
+	db 30, BITE
+	db 38, FURY_SWIPES
 	db 0 ; no more level-up moves
 
 NidorinaEvosAttacks:
-	db EVOLVE_ITEM,MOON_STONE,NIDOQUEEN
+	db EVOLVE_ITEM, MOON_STONE, NIDOQUEEN
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 1,TACKLE
-	db 8,SCRATCH
-	db 12,DOUBLE_KICK
-	db 19,POISON_STING
-	db 27,TAIL_WHIP
-	db 36,BITE
-	db 46,FURY_SWIPES
+	db 1, GROWL
+	db 1, TACKLE
+	db 8, SCRATCH
+	db 12, DOUBLE_KICK
+	db 19, POISON_STING
+	db 27, TAIL_WHIP
+	db 36, BITE
+	db 46, FURY_SWIPES
 	db 0 ; no more level-up moves
 
 NidoqueenEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SCRATCH
-	db 1,DOUBLE_KICK
-	db 1,TAIL_WHIP
-	db 23,BODY_SLAM
+	db 1, TACKLE
+	db 1, SCRATCH
+	db 1, DOUBLE_KICK
+	db 1, TAIL_WHIP
+	db 23, BODY_SLAM
 	db 0 ; no more level-up moves
 
 NidoranMEvosAttacks:
-	db EVOLVE_LEVEL,16,NIDORINO
+	db EVOLVE_LEVEL, 16, NIDORINO
 	db 0 ; no more evolutions
-	db 1,LEER
-	db 1,TACKLE
-	db 8,HORN_ATTACK
-	db 12,DOUBLE_KICK
-	db 17,POISON_STING
-	db 23,FOCUS_ENERGY
-	db 30,FURY_ATTACK
-	db 38,HORN_DRILL
+	db 1, LEER
+	db 1, TACKLE
+	db 8, HORN_ATTACK
+	db 12, DOUBLE_KICK
+	db 17, POISON_STING
+	db 23, FOCUS_ENERGY
+	db 30, FURY_ATTACK
+	db 38, HORN_DRILL
 	db 0 ; no more level-up moves
 
 NidorinoEvosAttacks:
-	db EVOLVE_ITEM,MOON_STONE,NIDOKING
+	db EVOLVE_ITEM, MOON_STONE, NIDOKING
 	db 0 ; no more evolutions
-	db 1,LEER
-	db 1,TACKLE
-	db 8,HORN_ATTACK
-	db 12,DOUBLE_KICK
-	db 19,POISON_STING
-	db 27,FOCUS_ENERGY
-	db 36,FURY_ATTACK
-	db 46,HORN_DRILL
+	db 1, LEER
+	db 1, TACKLE
+	db 8, HORN_ATTACK
+	db 12, DOUBLE_KICK
+	db 19, POISON_STING
+	db 27, FOCUS_ENERGY
+	db 36, FURY_ATTACK
+	db 46, HORN_DRILL
 	db 0 ; no more level-up moves
 
 NidokingEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,HORN_ATTACK
-	db 1,DOUBLE_KICK
-	db 1,POISON_STING
-	db 23,THRASH
+	db 1, TACKLE
+	db 1, HORN_ATTACK
+	db 1, DOUBLE_KICK
+	db 1, POISON_STING
+	db 23, THRASH
 	db 0 ; no more level-up moves
 
 ClefairyEvosAttacks:
-	db EVOLVE_ITEM,MOON_STONE,CLEFABLE
+	db EVOLVE_ITEM, MOON_STONE, CLEFABLE
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 1,GROWL
-	db 4,ENCORE
-	db 8,SING
-	db 13,DOUBLESLAP
-	db 19,MINIMIZE
-	db 26,DEFENSE_CURL
-	db 34,METRONOME
-	db 43,MOONLIGHT
-	db 53,LIGHT_SCREEN
+	db 1, POUND
+	db 1, GROWL
+	db 4, ENCORE
+	db 8, SING
+	db 13, DOUBLESLAP
+	db 19, MINIMIZE
+	db 26, DEFENSE_CURL
+	db 34, METRONOME
+	db 43, MOONLIGHT
+	db 53, LIGHT_SCREEN
 	db 0 ; no more level-up moves
 
 ClefableEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SING
-	db 1,DOUBLESLAP
-	db 1,METRONOME
-	db 1,MOONLIGHT
+	db 1, SING
+	db 1, DOUBLESLAP
+	db 1, METRONOME
+	db 1, MOONLIGHT
 	db 0 ; no more level-up moves
 
 VulpixEvosAttacks:
-	db EVOLVE_ITEM,FIRE_STONE,NINETALES
+	db EVOLVE_ITEM, FIRE_STONE, NINETALES
 	db 0 ; no more evolutions
-	db 1,EMBER
-	db 1,TAIL_WHIP
-	db 7,QUICK_ATTACK
-	db 13,ROAR
-	db 19,CONFUSE_RAY
-	db 25,SAFEGUARD
-	db 31,FLAMETHROWER
-	db 37,FIRE_SPIN
+	db 1, EMBER
+	db 1, TAIL_WHIP
+	db 7, QUICK_ATTACK
+	db 13, ROAR
+	db 19, CONFUSE_RAY
+	db 25, SAFEGUARD
+	db 31, FLAMETHROWER
+	db 37, FIRE_SPIN
 	db 0 ; no more level-up moves
 
 NinetalesEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,EMBER
-	db 1,QUICK_ATTACK
-	db 1,CONFUSE_RAY
-	db 1,SAFEGUARD
-	db 43,FIRE_SPIN
+	db 1, EMBER
+	db 1, QUICK_ATTACK
+	db 1, CONFUSE_RAY
+	db 1, SAFEGUARD
+	db 43, FIRE_SPIN
 	db 0 ; no more level-up moves
 
 JigglypuffEvosAttacks:
-	db EVOLVE_ITEM,MOON_STONE,WIGGLYTUFF
+	db EVOLVE_ITEM, MOON_STONE, WIGGLYTUFF
 	db 0 ; no more evolutions
-	db 1,SING
-	db 4,DEFENSE_CURL
-	db 9,POUND
-	db 14,DISABLE
-	db 19,ROLLOUT
-	db 24,DOUBLESLAP
-	db 29,REST
-	db 34,BODY_SLAM
-	db 39,DOUBLE_EDGE
+	db 1, SING
+	db 4, DEFENSE_CURL
+	db 9, POUND
+	db 14, DISABLE
+	db 19, ROLLOUT
+	db 24, DOUBLESLAP
+	db 29, REST
+	db 34, BODY_SLAM
+	db 39, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 WigglytuffEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SING
-	db 1,DISABLE
-	db 1,DEFENSE_CURL
-	db 1,DOUBLESLAP
+	db 1, SING
+	db 1, DISABLE
+	db 1, DEFENSE_CURL
+	db 1, DOUBLESLAP
 	db 0 ; no more level-up moves
 
 ZubatEvosAttacks:
-	db EVOLVE_LEVEL,22,GOLBAT
+	db EVOLVE_LEVEL, 22, GOLBAT
 	db 0 ; no more evolutions
-	db 1,LEECH_LIFE
-	db 6,SUPERSONIC
-	db 12,BITE
-	db 19,CONFUSE_RAY
-	db 27,WING_ATTACK
-	db 36,MEAN_LOOK
-	db 46,HAZE
+	db 1, LEECH_LIFE
+	db 6, SUPERSONIC
+	db 12, BITE
+	db 19, CONFUSE_RAY
+	db 27, WING_ATTACK
+	db 36, MEAN_LOOK
+	db 46, HAZE
 	db 0 ; no more level-up moves
 
 GolbatEvosAttacks:
-	db EVOLVE_HAPPINESS,TR_ANYTIME,CROBAT
+	db EVOLVE_HAPPINESS, TR_ANYTIME, CROBAT
 	db 0 ; no more evolutions
-	db 1,SCREECH
-	db 1,LEECH_LIFE
-	db 1,SUPERSONIC
-	db 6,SUPERSONIC
-	db 12,BITE
-	db 19,CONFUSE_RAY
-	db 30,WING_ATTACK
-	db 42,MEAN_LOOK
-	db 55,HAZE
+	db 1, SCREECH
+	db 1, LEECH_LIFE
+	db 1, SUPERSONIC
+	db 6, SUPERSONIC
+	db 12, BITE
+	db 19, CONFUSE_RAY
+	db 30, WING_ATTACK
+	db 42, MEAN_LOOK
+	db 55, HAZE
 	db 0 ; no more level-up moves
 
 OddishEvosAttacks:
-	db EVOLVE_LEVEL,21,GLOOM
+	db EVOLVE_LEVEL, 21, GLOOM
 	db 0 ; no more evolutions
-	db 1,ABSORB
-	db 7,SWEET_SCENT
-	db 14,POISONPOWDER
-	db 16,STUN_SPORE
-	db 18,SLEEP_POWDER
-	db 23,ACID
-	db 32,MOONLIGHT
-	db 39,PETAL_DANCE
+	db 1, ABSORB
+	db 7, SWEET_SCENT
+	db 14, POISONPOWDER
+	db 16, STUN_SPORE
+	db 18, SLEEP_POWDER
+	db 23, ACID
+	db 32, MOONLIGHT
+	db 39, PETAL_DANCE
 	db 0 ; no more level-up moves
 
 GloomEvosAttacks:
-	db EVOLVE_ITEM,LEAF_STONE,VILEPLUME
-	db EVOLVE_ITEM,SUN_STONE,BELLOSSOM
+	db EVOLVE_ITEM, LEAF_STONE, VILEPLUME
+	db EVOLVE_ITEM, SUN_STONE, BELLOSSOM
 	db 0 ; no more evolutions
-	db 1,ABSORB
-	db 1,SWEET_SCENT
-	db 1,POISONPOWDER
-	db 7,SWEET_SCENT
-	db 14,POISONPOWDER
-	db 16,STUN_SPORE
-	db 18,SLEEP_POWDER
-	db 24,ACID
-	db 35,MOONLIGHT
-	db 44,PETAL_DANCE
+	db 1, ABSORB
+	db 1, SWEET_SCENT
+	db 1, POISONPOWDER
+	db 7, SWEET_SCENT
+	db 14, POISONPOWDER
+	db 16, STUN_SPORE
+	db 18, SLEEP_POWDER
+	db 24, ACID
+	db 35, MOONLIGHT
+	db 44, PETAL_DANCE
 	db 0 ; no more level-up moves
 
 VileplumeEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,ABSORB
-	db 1,SWEET_SCENT
-	db 1,STUN_SPORE
-	db 1,PETAL_DANCE
+	db 1, ABSORB
+	db 1, SWEET_SCENT
+	db 1, STUN_SPORE
+	db 1, PETAL_DANCE
 	db 0 ; no more level-up moves
 
 ParasEvosAttacks:
-	db EVOLVE_LEVEL,24,PARASECT
+	db EVOLVE_LEVEL, 24, PARASECT
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 7,STUN_SPORE
-	db 13,POISONPOWDER
-	db 19,LEECH_LIFE
-	db 25,SPORE
-	db 31,SLASH
-	db 37,GROWTH
-	db 43,GIGA_DRAIN
+	db 1, SCRATCH
+	db 7, STUN_SPORE
+	db 13, POISONPOWDER
+	db 19, LEECH_LIFE
+	db 25, SPORE
+	db 31, SLASH
+	db 37, GROWTH
+	db 43, GIGA_DRAIN
 	db 0 ; no more level-up moves
 
 ParasectEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,STUN_SPORE
-	db 1,POISONPOWDER
-	db 7,STUN_SPORE
-	db 13,POISONPOWDER
-	db 19,LEECH_LIFE
-	db 28,SPORE
-	db 37,SLASH
-	db 46,GROWTH
-	db 55,GIGA_DRAIN
+	db 1, SCRATCH
+	db 1, STUN_SPORE
+	db 1, POISONPOWDER
+	db 7, STUN_SPORE
+	db 13, POISONPOWDER
+	db 19, LEECH_LIFE
+	db 28, SPORE
+	db 37, SLASH
+	db 46, GROWTH
+	db 55, GIGA_DRAIN
 	db 0 ; no more level-up moves
 
 VenonatEvosAttacks:
-	db EVOLVE_LEVEL,31,VENOMOTH
+	db EVOLVE_LEVEL, 31, VENOMOTH
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,DISABLE
-	db 1,FORESIGHT
-	db 9,SUPERSONIC
-	db 17,CONFUSION
-	db 20,POISONPOWDER
-	db 25,LEECH_LIFE
-	db 28,STUN_SPORE
-	db 33,PSYBEAM
-	db 36,SLEEP_POWDER
-	db 41,PSYCHIC_M
+	db 1, TACKLE
+	db 1, DISABLE
+	db 1, FORESIGHT
+	db 9, SUPERSONIC
+	db 17, CONFUSION
+	db 20, POISONPOWDER
+	db 25, LEECH_LIFE
+	db 28, STUN_SPORE
+	db 33, PSYBEAM
+	db 36, SLEEP_POWDER
+	db 41, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 VenomothEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,DISABLE
-	db 1,FORESIGHT
-	db 1,SUPERSONIC
-	db 9,SUPERSONIC
-	db 17,CONFUSION
-	db 20,POISONPOWDER
-	db 25,LEECH_LIFE
-	db 28,STUN_SPORE
-	db 31,GUST
-	db 36,PSYBEAM
-	db 42,SLEEP_POWDER
-	db 52,PSYCHIC_M
+	db 1, TACKLE
+	db 1, DISABLE
+	db 1, FORESIGHT
+	db 1, SUPERSONIC
+	db 9, SUPERSONIC
+	db 17, CONFUSION
+	db 20, POISONPOWDER
+	db 25, LEECH_LIFE
+	db 28, STUN_SPORE
+	db 31, GUST
+	db 36, PSYBEAM
+	db 42, SLEEP_POWDER
+	db 52, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 DiglettEvosAttacks:
-	db EVOLVE_LEVEL,26,DUGTRIO
+	db EVOLVE_LEVEL, 26, DUGTRIO
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 5,GROWL
-	db 9,MAGNITUDE
-	db 17,DIG
-	db 25,SAND_ATTACK
-	db 33,SLASH
-	db 41,EARTHQUAKE
-	db 49,FISSURE
+	db 1, SCRATCH
+	db 5, GROWL
+	db 9, MAGNITUDE
+	db 17, DIG
+	db 25, SAND_ATTACK
+	db 33, SLASH
+	db 41, EARTHQUAKE
+	db 49, FISSURE
 	db 0 ; no more level-up moves
 
 DugtrioEvosAttacks:
 	db 0 ; no more evolutions
 if _CRYSTAL
-	db 1,TRI_ATTACK
+	db 1, TRI_ATTACK
 endc
-	db 1,SCRATCH
-	db 1,GROWL
-	db 1,MAGNITUDE
-	db 5,GROWL
-	db 9,MAGNITUDE
-	db 17,DIG
-	db 25,SAND_ATTACK
-	db 37,SLASH
-	db 49,EARTHQUAKE
-	db 61,FISSURE
+	db 1, SCRATCH
+	db 1, GROWL
+	db 1, MAGNITUDE
+	db 5, GROWL
+	db 9, MAGNITUDE
+	db 17, DIG
+	db 25, SAND_ATTACK
+	db 37, SLASH
+	db 49, EARTHQUAKE
+	db 61, FISSURE
 	db 0 ; no more level-up moves
 
 MeowthEvosAttacks:
-	db EVOLVE_LEVEL,28,PERSIAN
+	db EVOLVE_LEVEL, 28, PERSIAN
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,GROWL
-	db 11,BITE
-	db 20,PAY_DAY
-	db 28,FAINT_ATTACK
-	db 35,SCREECH
-	db 41,FURY_SWIPES
-	db 46,SLASH
+	db 1, SCRATCH
+	db 1, GROWL
+	db 11, BITE
+	db 20, PAY_DAY
+	db 28, FAINT_ATTACK
+	db 35, SCREECH
+	db 41, FURY_SWIPES
+	db 46, SLASH
 	db 0 ; no more level-up moves
 
 PersianEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,GROWL
-	db 1,BITE
-	db 11,BITE
-	db 20,PAY_DAY
-	db 29,FAINT_ATTACK
-	db 38,SCREECH
-	db 46,FURY_SWIPES
-	db 53,SLASH
+	db 1, SCRATCH
+	db 1, GROWL
+	db 1, BITE
+	db 11, BITE
+	db 20, PAY_DAY
+	db 29, FAINT_ATTACK
+	db 38, SCREECH
+	db 46, FURY_SWIPES
+	db 53, SLASH
 	db 0 ; no more level-up moves
 
 PsyduckEvosAttacks:
-	db EVOLVE_LEVEL,33,GOLDUCK
+	db EVOLVE_LEVEL, 33, GOLDUCK
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 5,TAIL_WHIP
-	db 10,DISABLE
-	db 16,CONFUSION
-	db 23,SCREECH
-	db 31,PSYCH_UP
-	db 40,FURY_SWIPES
-	db 50,HYDRO_PUMP
+	db 1, SCRATCH
+	db 5, TAIL_WHIP
+	db 10, DISABLE
+	db 16, CONFUSION
+	db 23, SCREECH
+	db 31, PSYCH_UP
+	db 40, FURY_SWIPES
+	db 50, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 GolduckEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,TAIL_WHIP
-	db 1,DISABLE
-	db 1,CONFUSION
-	db 5,TAIL_WHIP
-	db 10,DISABLE
-	db 16,CONFUSION
-	db 23,SCREECH
-	db 31,PSYCH_UP
-	db 44,FURY_SWIPES
-	db 58,HYDRO_PUMP
+	db 1, SCRATCH
+	db 1, TAIL_WHIP
+	db 1, DISABLE
+	db 1, CONFUSION
+	db 5, TAIL_WHIP
+	db 10, DISABLE
+	db 16, CONFUSION
+	db 23, SCREECH
+	db 31, PSYCH_UP
+	db 44, FURY_SWIPES
+	db 58, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 MankeyEvosAttacks:
-	db EVOLVE_LEVEL,28,PRIMEAPE
+	db EVOLVE_LEVEL, 28, PRIMEAPE
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 9,LOW_KICK
-	db 15,KARATE_CHOP
-	db 21,FURY_SWIPES
-	db 27,FOCUS_ENERGY
-	db 33,SEISMIC_TOSS
-	db 39,CROSS_CHOP
-	db 45,SCREECH
-	db 51,THRASH
+	db 1, SCRATCH
+	db 1, LEER
+	db 9, LOW_KICK
+	db 15, KARATE_CHOP
+	db 21, FURY_SWIPES
+	db 27, FOCUS_ENERGY
+	db 33, SEISMIC_TOSS
+	db 39, CROSS_CHOP
+	db 45, SCREECH
+	db 51, THRASH
 	db 0 ; no more level-up moves
 
 PrimeapeEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 1,LOW_KICK
-	db 1,RAGE
-	db 9,LOW_KICK
-	db 15,KARATE_CHOP
-	db 21,FURY_SWIPES
-	db 27,FOCUS_ENERGY
-	db 28,RAGE
-	db 36,SEISMIC_TOSS
-	db 45,CROSS_CHOP
-	db 54,SCREECH
-	db 63,THRASH
+	db 1, SCRATCH
+	db 1, LEER
+	db 1, LOW_KICK
+	db 1, RAGE
+	db 9, LOW_KICK
+	db 15, KARATE_CHOP
+	db 21, FURY_SWIPES
+	db 27, FOCUS_ENERGY
+	db 28, RAGE
+	db 36, SEISMIC_TOSS
+	db 45, CROSS_CHOP
+	db 54, SCREECH
+	db 63, THRASH
 	db 0 ; no more level-up moves
 
 GrowlitheEvosAttacks:
-	db EVOLVE_ITEM,FIRE_STONE,ARCANINE
+	db EVOLVE_ITEM, FIRE_STONE, ARCANINE
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,ROAR
-	db 9,EMBER
-	db 18,LEER
-	db 26,TAKE_DOWN
-	db 34,FLAME_WHEEL
-	db 42,AGILITY
-	db 50,FLAMETHROWER
+	db 1, BITE
+	db 1, ROAR
+	db 9, EMBER
+	db 18, LEER
+	db 26, TAKE_DOWN
+	db 34, FLAME_WHEEL
+	db 42, AGILITY
+	db 50, FLAMETHROWER
 	db 0 ; no more level-up moves
 
 ArcanineEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,ROAR
-	db 1,LEER
-	db 1,TAKE_DOWN
-	db 1,FLAME_WHEEL
-	db 50,EXTREMESPEED
+	db 1, ROAR
+	db 1, LEER
+	db 1, TAKE_DOWN
+	db 1, FLAME_WHEEL
+	db 50, EXTREMESPEED
 	db 0 ; no more level-up moves
 
 PoliwagEvosAttacks:
-	db EVOLVE_LEVEL,25,POLIWHIRL
+	db EVOLVE_LEVEL, 25, POLIWHIRL
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 7,HYPNOSIS
-	db 13,WATER_GUN
-	db 19,DOUBLESLAP
-	db 25,RAIN_DANCE
-	db 31,BODY_SLAM
-	db 37,BELLY_DRUM
-	db 43,HYDRO_PUMP
+	db 1, BUBBLE
+	db 7, HYPNOSIS
+	db 13, WATER_GUN
+	db 19, DOUBLESLAP
+	db 25, RAIN_DANCE
+	db 31, BODY_SLAM
+	db 37, BELLY_DRUM
+	db 43, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 PoliwhirlEvosAttacks:
-	db EVOLVE_ITEM,WATER_STONE,POLIWRATH
-	db EVOLVE_TRADE,KINGS_ROCK,POLITOED
+	db EVOLVE_ITEM, WATER_STONE, POLIWRATH
+	db EVOLVE_TRADE, KINGS_ROCK, POLITOED
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 1,HYPNOSIS
-	db 1,WATER_GUN
-	db 7,HYPNOSIS
-	db 13,WATER_GUN
-	db 19,DOUBLESLAP
-	db 27,RAIN_DANCE
-	db 35,BODY_SLAM
-	db 43,BELLY_DRUM
-	db 51,HYDRO_PUMP
+	db 1, BUBBLE
+	db 1, HYPNOSIS
+	db 1, WATER_GUN
+	db 7, HYPNOSIS
+	db 13, WATER_GUN
+	db 19, DOUBLESLAP
+	db 27, RAIN_DANCE
+	db 35, BODY_SLAM
+	db 43, BELLY_DRUM
+	db 51, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 PoliwrathEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 1,HYPNOSIS
-	db 1,DOUBLESLAP
-	db 1,SUBMISSION
-	db 35,SUBMISSION
-	db 51,MIND_READER
+	db 1, WATER_GUN
+	db 1, HYPNOSIS
+	db 1, DOUBLESLAP
+	db 1, SUBMISSION
+	db 35, SUBMISSION
+	db 51, MIND_READER
 	db 0 ; no more level-up moves
 
 AbraEvosAttacks:
-	db EVOLVE_LEVEL,16,KADABRA
+	db EVOLVE_LEVEL, 16, KADABRA
 	db 0 ; no more evolutions
-	db 1,TELEPORT
+	db 1, TELEPORT
 	db 0 ; no more level-up moves
 
 KadabraEvosAttacks:
-	db EVOLVE_TRADE,$ff,ALAKAZAM
+	db EVOLVE_TRADE, $ff, ALAKAZAM
 	db 0 ; no more evolutions
-	db 1,TELEPORT
-	db 1,KINESIS
-	db 1,CONFUSION
-	db 16,CONFUSION
-	db 18,DISABLE
-	db 21,PSYBEAM
-	db 26,RECOVER
-	db 31,FUTURE_SIGHT
-	db 38,PSYCHIC_M
-	db 45,REFLECT
+	db 1, TELEPORT
+	db 1, KINESIS
+	db 1, CONFUSION
+	db 16, CONFUSION
+	db 18, DISABLE
+	db 21, PSYBEAM
+	db 26, RECOVER
+	db 31, FUTURE_SIGHT
+	db 38, PSYCHIC_M
+	db 45, REFLECT
 	db 0 ; no more level-up moves
 
 AlakazamEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TELEPORT
-	db 1,KINESIS
-	db 1,CONFUSION
-	db 16,CONFUSION
-	db 18,DISABLE
-	db 21,PSYBEAM
-	db 26,RECOVER
-	db 31,FUTURE_SIGHT
-	db 38,PSYCHIC_M
-	db 45,REFLECT
+	db 1, TELEPORT
+	db 1, KINESIS
+	db 1, CONFUSION
+	db 16, CONFUSION
+	db 18, DISABLE
+	db 21, PSYBEAM
+	db 26, RECOVER
+	db 31, FUTURE_SIGHT
+	db 38, PSYCHIC_M
+	db 45, REFLECT
 	db 0 ; no more level-up moves
 
 MachopEvosAttacks:
-	db EVOLVE_LEVEL,28,MACHOKE
+	db EVOLVE_LEVEL, 28, MACHOKE
 	db 0 ; no more evolutions
-	db 1,LOW_KICK
-	db 1,LEER
-	db 7,FOCUS_ENERGY
-	db 13,KARATE_CHOP
-	db 19,SEISMIC_TOSS
-	db 25,FORESIGHT
-	db 31,VITAL_THROW
-	db 37,CROSS_CHOP
-	db 43,SCARY_FACE
-	db 49,SUBMISSION
+	db 1, LOW_KICK
+	db 1, LEER
+	db 7, FOCUS_ENERGY
+	db 13, KARATE_CHOP
+	db 19, SEISMIC_TOSS
+	db 25, FORESIGHT
+	db 31, VITAL_THROW
+	db 37, CROSS_CHOP
+	db 43, SCARY_FACE
+	db 49, SUBMISSION
 	db 0 ; no more level-up moves
 
 MachokeEvosAttacks:
-	db EVOLVE_TRADE,$ff,MACHAMP
+	db EVOLVE_TRADE, $ff, MACHAMP
 	db 0 ; no more evolutions
-	db 1,LOW_KICK
-	db 1,LEER
-	db 1,FOCUS_ENERGY
-	db 8,FOCUS_ENERGY
-	db 15,KARATE_CHOP
-	db 19,SEISMIC_TOSS
-	db 25,FORESIGHT
-	db 34,VITAL_THROW
-	db 43,CROSS_CHOP
-	db 52,SCARY_FACE
-	db 61,SUBMISSION
+	db 1, LOW_KICK
+	db 1, LEER
+	db 1, FOCUS_ENERGY
+	db 8, FOCUS_ENERGY
+	db 15, KARATE_CHOP
+	db 19, SEISMIC_TOSS
+	db 25, FORESIGHT
+	db 34, VITAL_THROW
+	db 43, CROSS_CHOP
+	db 52, SCARY_FACE
+	db 61, SUBMISSION
 	db 0 ; no more level-up moves
 
 MachampEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,LOW_KICK
-	db 1,LEER
-	db 1,FOCUS_ENERGY
-	db 8,FOCUS_ENERGY
-	db 15,KARATE_CHOP
-	db 19,SEISMIC_TOSS
-	db 25,FORESIGHT
-	db 34,VITAL_THROW
-	db 43,CROSS_CHOP
-	db 52,SCARY_FACE
-	db 61,SUBMISSION
+	db 1, LOW_KICK
+	db 1, LEER
+	db 1, FOCUS_ENERGY
+	db 8, FOCUS_ENERGY
+	db 15, KARATE_CHOP
+	db 19, SEISMIC_TOSS
+	db 25, FORESIGHT
+	db 34, VITAL_THROW
+	db 43, CROSS_CHOP
+	db 52, SCARY_FACE
+	db 61, SUBMISSION
 	db 0 ; no more level-up moves
 
 BellsproutEvosAttacks:
-	db EVOLVE_LEVEL,21,WEEPINBELL
+	db EVOLVE_LEVEL, 21, WEEPINBELL
 	db 0 ; no more evolutions
-	db 1,VINE_WHIP
-	db 6,GROWTH
-	db 11,WRAP
-	db 15,SLEEP_POWDER
-	db 17,POISONPOWDER
-	db 19,STUN_SPORE
-	db 23,ACID
-	db 30,SWEET_SCENT
-	db 37,RAZOR_LEAF
-	db 45,SLAM
+	db 1, VINE_WHIP
+	db 6, GROWTH
+	db 11, WRAP
+	db 15, SLEEP_POWDER
+	db 17, POISONPOWDER
+	db 19, STUN_SPORE
+	db 23, ACID
+	db 30, SWEET_SCENT
+	db 37, RAZOR_LEAF
+	db 45, SLAM
 	db 0 ; no more level-up moves
 
 WeepinbellEvosAttacks:
-	db EVOLVE_ITEM,LEAF_STONE,VICTREEBEL
+	db EVOLVE_ITEM, LEAF_STONE, VICTREEBEL
 	db 0 ; no more evolutions
-	db 1,VINE_WHIP
-	db 1,GROWTH
-	db 1,WRAP
-	db 6,GROWTH
-	db 11,WRAP
-	db 15,SLEEP_POWDER
-	db 17,POISONPOWDER
-	db 19,STUN_SPORE
-	db 24,ACID
-	db 33,SWEET_SCENT
-	db 42,RAZOR_LEAF
-	db 54,SLAM
+	db 1, VINE_WHIP
+	db 1, GROWTH
+	db 1, WRAP
+	db 6, GROWTH
+	db 11, WRAP
+	db 15, SLEEP_POWDER
+	db 17, POISONPOWDER
+	db 19, STUN_SPORE
+	db 24, ACID
+	db 33, SWEET_SCENT
+	db 42, RAZOR_LEAF
+	db 54, SLAM
 	db 0 ; no more level-up moves
 
 VictreebelEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,VINE_WHIP
-	db 1,SLEEP_POWDER
-	db 1,SWEET_SCENT
-	db 1,RAZOR_LEAF
+	db 1, VINE_WHIP
+	db 1, SLEEP_POWDER
+	db 1, SWEET_SCENT
+	db 1, RAZOR_LEAF
 	db 0 ; no more level-up moves
 
 TentacoolEvosAttacks:
-	db EVOLVE_LEVEL,30,TENTACRUEL
+	db EVOLVE_LEVEL, 30, TENTACRUEL
 	db 0 ; no more evolutions
-	db 1,POISON_STING
-	db 6,SUPERSONIC
-	db 12,CONSTRICT
-	db 19,ACID
-	db 25,BUBBLEBEAM
-	db 30,WRAP
-	db 36,BARRIER
-	db 43,SCREECH
-	db 49,HYDRO_PUMP
+	db 1, POISON_STING
+	db 6, SUPERSONIC
+	db 12, CONSTRICT
+	db 19, ACID
+	db 25, BUBBLEBEAM
+	db 30, WRAP
+	db 36, BARRIER
+	db 43, SCREECH
+	db 49, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 TentacruelEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POISON_STING
-	db 1,SUPERSONIC
-	db 1,CONSTRICT
-	db 6,SUPERSONIC
-	db 12,CONSTRICT
-	db 19,ACID
-	db 25,BUBBLEBEAM
-	db 30,WRAP
-	db 38,BARRIER
-	db 47,SCREECH
-	db 55,HYDRO_PUMP
+	db 1, POISON_STING
+	db 1, SUPERSONIC
+	db 1, CONSTRICT
+	db 6, SUPERSONIC
+	db 12, CONSTRICT
+	db 19, ACID
+	db 25, BUBBLEBEAM
+	db 30, WRAP
+	db 38, BARRIER
+	db 47, SCREECH
+	db 55, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 GeodudeEvosAttacks:
-	db EVOLVE_LEVEL,25,GRAVELER
+	db EVOLVE_LEVEL, 25, GRAVELER
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 6,DEFENSE_CURL
-	db 11,ROCK_THROW
-	db 16,MAGNITUDE
-	db 21,SELFDESTRUCT
-	db 26,HARDEN
-	db 31,ROLLOUT
-	db 36,EARTHQUAKE
-	db 41,EXPLOSION
+	db 1, TACKLE
+	db 6, DEFENSE_CURL
+	db 11, ROCK_THROW
+	db 16, MAGNITUDE
+	db 21, SELFDESTRUCT
+	db 26, HARDEN
+	db 31, ROLLOUT
+	db 36, EARTHQUAKE
+	db 41, EXPLOSION
 	db 0 ; no more level-up moves
 
 GravelerEvosAttacks:
-	db EVOLVE_TRADE,$ff,GOLEM
+	db EVOLVE_TRADE, $ff, GOLEM
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,DEFENSE_CURL
-	db 1,ROCK_THROW
-	db 6,DEFENSE_CURL
-	db 11,ROCK_THROW
-	db 16,MAGNITUDE
-	db 21,SELFDESTRUCT
-	db 27,HARDEN
-	db 34,ROLLOUT
-	db 41,EARTHQUAKE
-	db 48,EXPLOSION
+	db 1, TACKLE
+	db 1, DEFENSE_CURL
+	db 1, ROCK_THROW
+	db 6, DEFENSE_CURL
+	db 11, ROCK_THROW
+	db 16, MAGNITUDE
+	db 21, SELFDESTRUCT
+	db 27, HARDEN
+	db 34, ROLLOUT
+	db 41, EARTHQUAKE
+	db 48, EXPLOSION
 	db 0 ; no more level-up moves
 
 GolemEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,DEFENSE_CURL
-	db 1,ROCK_THROW
-	db 1,MAGNITUDE
-	db 6,DEFENSE_CURL
-	db 11,ROCK_THROW
-	db 16,MAGNITUDE
-	db 21,SELFDESTRUCT
-	db 27,HARDEN
-	db 34,ROLLOUT
-	db 41,EARTHQUAKE
-	db 48,EXPLOSION
+	db 1, TACKLE
+	db 1, DEFENSE_CURL
+	db 1, ROCK_THROW
+	db 1, MAGNITUDE
+	db 6, DEFENSE_CURL
+	db 11, ROCK_THROW
+	db 16, MAGNITUDE
+	db 21, SELFDESTRUCT
+	db 27, HARDEN
+	db 34, ROLLOUT
+	db 41, EARTHQUAKE
+	db 48, EXPLOSION
 	db 0 ; no more level-up moves
 
 PonytaEvosAttacks:
-	db EVOLVE_LEVEL,40,RAPIDASH
+	db EVOLVE_LEVEL, 40, RAPIDASH
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 4,GROWL
-	db 8,TAIL_WHIP
-	db 13,EMBER
-	db 19,STOMP
-	db 26,FIRE_SPIN
-	db 34,TAKE_DOWN
-	db 43,AGILITY
-	db 53,FIRE_BLAST
+	db 1, TACKLE
+	db 4, GROWL
+	db 8, TAIL_WHIP
+	db 13, EMBER
+	db 19, STOMP
+	db 26, FIRE_SPIN
+	db 34, TAKE_DOWN
+	db 43, AGILITY
+	db 53, FIRE_BLAST
 	db 0 ; no more level-up moves
 
 RapidashEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,TAIL_WHIP
-	db 1,EMBER
-	db 4,GROWL
-	db 8,TAIL_WHIP
-	db 13,EMBER
-	db 19,STOMP
-	db 26,FIRE_SPIN
-	db 34,TAKE_DOWN
-	db 40,FURY_ATTACK
-	db 47,AGILITY
-	db 61,FIRE_BLAST
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, TAIL_WHIP
+	db 1, EMBER
+	db 4, GROWL
+	db 8, TAIL_WHIP
+	db 13, EMBER
+	db 19, STOMP
+	db 26, FIRE_SPIN
+	db 34, TAKE_DOWN
+	db 40, FURY_ATTACK
+	db 47, AGILITY
+	db 61, FIRE_BLAST
 	db 0 ; no more level-up moves
 
 SlowpokeEvosAttacks:
-	db EVOLVE_LEVEL,37,SLOWBRO
-	db EVOLVE_TRADE,KINGS_ROCK,SLOWKING
+	db EVOLVE_LEVEL, 37, SLOWBRO
+	db EVOLVE_TRADE, KINGS_ROCK, SLOWKING
 	db 0 ; no more evolutions
-	db 1,CURSE
-	db 1,TACKLE
-	db 6,GROWL
-	db 15,WATER_GUN
-	db 20,CONFUSION
-	db 29,DISABLE
-	db 34,HEADBUTT
-	db 43,AMNESIA
-	db 48,PSYCHIC_M
+	db 1, CURSE
+	db 1, TACKLE
+	db 6, GROWL
+	db 15, WATER_GUN
+	db 20, CONFUSION
+	db 29, DISABLE
+	db 34, HEADBUTT
+	db 43, AMNESIA
+	db 48, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 SlowbroEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CURSE
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,WATER_GUN
-	db 6,GROWL
-	db 15,WATER_GUN
-	db 20,CONFUSION
-	db 29,DISABLE
-	db 34,HEADBUTT
-	db 37,WITHDRAW
-	db 46,AMNESIA
-	db 54,PSYCHIC_M
+	db 1, CURSE
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, WATER_GUN
+	db 6, GROWL
+	db 15, WATER_GUN
+	db 20, CONFUSION
+	db 29, DISABLE
+	db 34, HEADBUTT
+	db 37, WITHDRAW
+	db 46, AMNESIA
+	db 54, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 MagnemiteEvosAttacks:
-	db EVOLVE_LEVEL,30,MAGNETON
+	db EVOLVE_LEVEL, 30, MAGNETON
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 6,THUNDERSHOCK
-	db 11,SUPERSONIC
-	db 16,SONICBOOM
-	db 21,THUNDER_WAVE
-	db 27,LOCK_ON
-	db 33,SWIFT
-	db 39,SCREECH
-	db 45,ZAP_CANNON
+	db 1, TACKLE
+	db 6, THUNDERSHOCK
+	db 11, SUPERSONIC
+	db 16, SONICBOOM
+	db 21, THUNDER_WAVE
+	db 27, LOCK_ON
+	db 33, SWIFT
+	db 39, SCREECH
+	db 45, ZAP_CANNON
 	db 0 ; no more level-up moves
 
 MagnetonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,THUNDERSHOCK
-	db 1,SUPERSONIC
-	db 1,SONICBOOM
-	db 6,THUNDERSHOCK
-	db 11,SUPERSONIC
-	db 16,SONICBOOM
-	db 21,THUNDER_WAVE
-	db 27,LOCK_ON
+	db 1, TACKLE
+	db 1, THUNDERSHOCK
+	db 1, SUPERSONIC
+	db 1, SONICBOOM
+	db 6, THUNDERSHOCK
+	db 11, SUPERSONIC
+	db 16, SONICBOOM
+	db 21, THUNDER_WAVE
+	db 27, LOCK_ON
 if _CRYSTAL
-	db 35,TRI_ATTACK
+	db 35, TRI_ATTACK
 else
-	db 35,SWIFT
+	db 35, SWIFT
 endc
-	db 43,SCREECH
-	db 53,ZAP_CANNON
+	db 43, SCREECH
+	db 53, ZAP_CANNON
 	db 0 ; no more level-up moves
 
 FarfetchDEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 7,SAND_ATTACK
-	db 13,LEER
-	db 19,FURY_ATTACK
-	db 25,SWORDS_DANCE
-	db 31,AGILITY
-	db 37,SLASH
-	db 44,FALSE_SWIPE
+	db 1, PECK
+	db 7, SAND_ATTACK
+	db 13, LEER
+	db 19, FURY_ATTACK
+	db 25, SWORDS_DANCE
+	db 31, AGILITY
+	db 37, SLASH
+	db 44, FALSE_SWIPE
 	db 0 ; no more level-up moves
 
 DoduoEvosAttacks:
-	db EVOLVE_LEVEL,31,DODRIO
+	db EVOLVE_LEVEL, 31, DODRIO
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,GROWL
-	db 9,PURSUIT
-	db 13,FURY_ATTACK
-	db 21,TRI_ATTACK
-	db 25,RAGE
-	db 33,DRILL_PECK
-	db 37,AGILITY
+	db 1, PECK
+	db 1, GROWL
+	db 9, PURSUIT
+	db 13, FURY_ATTACK
+	db 21, TRI_ATTACK
+	db 25, RAGE
+	db 33, DRILL_PECK
+	db 37, AGILITY
 	db 0 ; no more level-up moves
 
 DodrioEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,GROWL
-	db 1,PURSUIT
-	db 1,FURY_ATTACK
-	db 9,PURSUIT
-	db 13,FURY_ATTACK
-	db 21,TRI_ATTACK
-	db 25,RAGE
-	db 38,DRILL_PECK
-	db 47,AGILITY
+	db 1, PECK
+	db 1, GROWL
+	db 1, PURSUIT
+	db 1, FURY_ATTACK
+	db 9, PURSUIT
+	db 13, FURY_ATTACK
+	db 21, TRI_ATTACK
+	db 25, RAGE
+	db 38, DRILL_PECK
+	db 47, AGILITY
 	db 0 ; no more level-up moves
 
 SeelEvosAttacks:
-	db EVOLVE_LEVEL,34,DEWGONG
+	db EVOLVE_LEVEL, 34, DEWGONG
 	db 0 ; no more evolutions
-	db 1,HEADBUTT
-	db 5,GROWL
-	db 16,AURORA_BEAM
-	db 21,REST
-	db 32,TAKE_DOWN
-	db 37,ICE_BEAM
-	db 48,SAFEGUARD
+	db 1, HEADBUTT
+	db 5, GROWL
+	db 16, AURORA_BEAM
+	db 21, REST
+	db 32, TAKE_DOWN
+	db 37, ICE_BEAM
+	db 48, SAFEGUARD
 	db 0 ; no more level-up moves
 
 DewgongEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,HEADBUTT
-	db 1,GROWL
-	db 1,AURORA_BEAM
-	db 5,GROWL
-	db 16,AURORA_BEAM
-	db 21,REST
-	db 32,TAKE_DOWN
-	db 43,ICE_BEAM
-	db 60,SAFEGUARD
+	db 1, HEADBUTT
+	db 1, GROWL
+	db 1, AURORA_BEAM
+	db 5, GROWL
+	db 16, AURORA_BEAM
+	db 21, REST
+	db 32, TAKE_DOWN
+	db 43, ICE_BEAM
+	db 60, SAFEGUARD
 	db 0 ; no more level-up moves
 
 GrimerEvosAttacks:
-	db EVOLVE_LEVEL,38,MUK
+	db EVOLVE_LEVEL, 38, MUK
 	db 0 ; no more evolutions
-	db 1,POISON_GAS
-	db 1,POUND
-	db 5,HARDEN
-	db 10,DISABLE
-	db 16,SLUDGE
-	db 23,MINIMIZE
-	db 31,SCREECH
-	db 40,ACID_ARMOR
-	db 50,SLUDGE_BOMB
+	db 1, POISON_GAS
+	db 1, POUND
+	db 5, HARDEN
+	db 10, DISABLE
+	db 16, SLUDGE
+	db 23, MINIMIZE
+	db 31, SCREECH
+	db 40, ACID_ARMOR
+	db 50, SLUDGE_BOMB
 	db 0 ; no more level-up moves
 
 MukEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POISON_GAS
-	db 1,POUND
-	db 1,HARDEN
-	db 33,HARDEN
-	db 37,DISABLE
-	db 45,SLUDGE
-	db 23,MINIMIZE
-	db 31,SCREECH
-	db 45,ACID_ARMOR
-	db 60,SLUDGE_BOMB
+	db 1, POISON_GAS
+	db 1, POUND
+	db 1, HARDEN
+	db 33, HARDEN
+	db 37, DISABLE
+	db 45, SLUDGE
+	db 23, MINIMIZE
+	db 31, SCREECH
+	db 45, ACID_ARMOR
+	db 60, SLUDGE_BOMB
 	db 0 ; no more level-up moves
 
 ShellderEvosAttacks:
-	db EVOLVE_ITEM,WATER_STONE,CLOYSTER
+	db EVOLVE_ITEM, WATER_STONE, CLOYSTER
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,WITHDRAW
-	db 9,SUPERSONIC
-	db 17,AURORA_BEAM
-	db 25,PROTECT
-	db 33,LEER
-	db 41,CLAMP
-	db 49,ICE_BEAM
+	db 1, TACKLE
+	db 1, WITHDRAW
+	db 9, SUPERSONIC
+	db 17, AURORA_BEAM
+	db 25, PROTECT
+	db 33, LEER
+	db 41, CLAMP
+	db 49, ICE_BEAM
 	db 0 ; no more level-up moves
 
 CloysterEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WITHDRAW
-	db 1,SUPERSONIC
-	db 1,AURORA_BEAM
-	db 1,PROTECT
+	db 1, WITHDRAW
+	db 1, SUPERSONIC
+	db 1, AURORA_BEAM
+	db 1, PROTECT
 if _CRYSTAL
-	db 33,SPIKES
+	db 33, SPIKES
 endc
-	db 41,SPIKE_CANNON
+	db 41, SPIKE_CANNON
 	db 0 ; no more level-up moves
 
 GastlyEvosAttacks:
-	db EVOLVE_LEVEL,25,HAUNTER
+	db EVOLVE_LEVEL, 25, HAUNTER
 	db 0 ; no more evolutions
-	db 1,HYPNOSIS
-	db 1,LICK
-	db 8,SPITE
-	db 13,MEAN_LOOK
-	db 16,CURSE
-	db 21,NIGHT_SHADE
-	db 28,CONFUSE_RAY
-	db 33,DREAM_EATER
-	db 36,DESTINY_BOND
+	db 1, HYPNOSIS
+	db 1, LICK
+	db 8, SPITE
+	db 13, MEAN_LOOK
+	db 16, CURSE
+	db 21, NIGHT_SHADE
+	db 28, CONFUSE_RAY
+	db 33, DREAM_EATER
+	db 36, DESTINY_BOND
 	db 0 ; no more level-up moves
 
 HaunterEvosAttacks:
-	db EVOLVE_TRADE,$ff,GENGAR
+	db EVOLVE_TRADE, $ff, GENGAR
 	db 0 ; no more evolutions
-	db 1,HYPNOSIS
-	db 1,LICK
-	db 1,SPITE
-	db 8,SPITE
-	db 13,MEAN_LOOK
-	db 16,CURSE
-	db 21,NIGHT_SHADE
-	db 31,CONFUSE_RAY
-	db 39,DREAM_EATER
-	db 48,DESTINY_BOND
+	db 1, HYPNOSIS
+	db 1, LICK
+	db 1, SPITE
+	db 8, SPITE
+	db 13, MEAN_LOOK
+	db 16, CURSE
+	db 21, NIGHT_SHADE
+	db 31, CONFUSE_RAY
+	db 39, DREAM_EATER
+	db 48, DESTINY_BOND
 	db 0 ; no more level-up moves
 
 GengarEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,HYPNOSIS
-	db 1,LICK
-	db 1,SPITE
-	db 8,SPITE
-	db 13,MEAN_LOOK
-	db 16,CURSE
-	db 21,NIGHT_SHADE
-	db 31,CONFUSE_RAY
-	db 39,DREAM_EATER
-	db 48,DESTINY_BOND
+	db 1, HYPNOSIS
+	db 1, LICK
+	db 1, SPITE
+	db 8, SPITE
+	db 13, MEAN_LOOK
+	db 16, CURSE
+	db 21, NIGHT_SHADE
+	db 31, CONFUSE_RAY
+	db 39, DREAM_EATER
+	db 48, DESTINY_BOND
 	db 0 ; no more level-up moves
 
 OnixEvosAttacks:
-	db EVOLVE_TRADE,METAL_COAT,STEELIX
+	db EVOLVE_TRADE, METAL_COAT, STEELIX
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SCREECH
-	db 10,BIND
-	db 14,ROCK_THROW
-	db 23,HARDEN
-	db 27,RAGE
-	db 36,SANDSTORM
-	db 40,SLAM
+	db 1, TACKLE
+	db 1, SCREECH
+	db 10, BIND
+	db 14, ROCK_THROW
+	db 23, HARDEN
+	db 27, RAGE
+	db 36, SANDSTORM
+	db 40, SLAM
 	db 0 ; no more level-up moves
 
 DrowzeeEvosAttacks:
-	db EVOLVE_LEVEL,26,HYPNO
+	db EVOLVE_LEVEL, 26, HYPNO
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 1,HYPNOSIS
-	db 10,DISABLE
-	db 18,CONFUSION
-	db 25,HEADBUTT
-	db 31,POISON_GAS
-	db 36,MEDITATE
-	db 40,PSYCHIC_M
-	db 43,PSYCH_UP
-	db 45,FUTURE_SIGHT
+	db 1, POUND
+	db 1, HYPNOSIS
+	db 10, DISABLE
+	db 18, CONFUSION
+	db 25, HEADBUTT
+	db 31, POISON_GAS
+	db 36, MEDITATE
+	db 40, PSYCHIC_M
+	db 43, PSYCH_UP
+	db 45, FUTURE_SIGHT
 	db 0 ; no more level-up moves
 
 HypnoEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 1,HYPNOSIS
-	db 1,DISABLE
-	db 1,CONFUSION
-	db 10,DISABLE
-	db 18,CONFUSION
-	db 25,HEADBUTT
-	db 33,POISON_GAS
-	db 40,MEDITATE
-	db 49,PSYCHIC_M
-	db 55,PSYCH_UP
-	db 60,FUTURE_SIGHT
+	db 1, POUND
+	db 1, HYPNOSIS
+	db 1, DISABLE
+	db 1, CONFUSION
+	db 10, DISABLE
+	db 18, CONFUSION
+	db 25, HEADBUTT
+	db 33, POISON_GAS
+	db 40, MEDITATE
+	db 49, PSYCHIC_M
+	db 55, PSYCH_UP
+	db 60, FUTURE_SIGHT
 	db 0 ; no more level-up moves
 
 KrabbyEvosAttacks:
-	db EVOLVE_LEVEL,28,KINGLER
+	db EVOLVE_LEVEL, 28, KINGLER
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 5,LEER
-	db 12,VICEGRIP
-	db 16,HARDEN
-	db 23,STOMP
-	db 27,GUILLOTINE
-	db 34,PROTECT
-	db 41,CRABHAMMER
+	db 1, BUBBLE
+	db 5, LEER
+	db 12, VICEGRIP
+	db 16, HARDEN
+	db 23, STOMP
+	db 27, GUILLOTINE
+	db 34, PROTECT
+	db 41, CRABHAMMER
 	db 0 ; no more level-up moves
 
 KinglerEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 1,LEER
-	db 1,VICEGRIP
-	db 5,LEER
-	db 12,VICEGRIP
-	db 16,HARDEN
-	db 23,STOMP
-	db 27,GUILLOTINE
-	db 38,PROTECT
-	db 49,CRABHAMMER
+	db 1, BUBBLE
+	db 1, LEER
+	db 1, VICEGRIP
+	db 5, LEER
+	db 12, VICEGRIP
+	db 16, HARDEN
+	db 23, STOMP
+	db 27, GUILLOTINE
+	db 38, PROTECT
+	db 49, CRABHAMMER
 	db 0 ; no more level-up moves
 
 VoltorbEvosAttacks:
-	db EVOLVE_LEVEL,30,ELECTRODE
+	db EVOLVE_LEVEL, 30, ELECTRODE
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 9,SCREECH
-	db 17,SONICBOOM
-	db 23,SELFDESTRUCT
-	db 29,ROLLOUT
-	db 33,LIGHT_SCREEN
-	db 37,SWIFT
-	db 39,EXPLOSION
-	db 41,MIRROR_COAT
+	db 1, TACKLE
+	db 9, SCREECH
+	db 17, SONICBOOM
+	db 23, SELFDESTRUCT
+	db 29, ROLLOUT
+	db 33, LIGHT_SCREEN
+	db 37, SWIFT
+	db 39, EXPLOSION
+	db 41, MIRROR_COAT
 	db 0 ; no more level-up moves
 
 ElectrodeEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SCREECH
-	db 1,SONICBOOM
-	db 1,SELFDESTRUCT
-	db 9,SCREECH
-	db 17,SONICBOOM
-	db 23,SELFDESTRUCT
-	db 29,ROLLOUT
-	db 34,LIGHT_SCREEN
-	db 40,SWIFT
-	db 44,EXPLOSION
-	db 48,MIRROR_COAT
+	db 1, TACKLE
+	db 1, SCREECH
+	db 1, SONICBOOM
+	db 1, SELFDESTRUCT
+	db 9, SCREECH
+	db 17, SONICBOOM
+	db 23, SELFDESTRUCT
+	db 29, ROLLOUT
+	db 34, LIGHT_SCREEN
+	db 40, SWIFT
+	db 44, EXPLOSION
+	db 48, MIRROR_COAT
 	db 0 ; no more level-up moves
 
 ExeggcuteEvosAttacks:
-	db EVOLVE_ITEM,LEAF_STONE,EXEGGUTOR
+	db EVOLVE_ITEM, LEAF_STONE, EXEGGUTOR
 	db 0 ; no more evolutions
-	db 1,BARRAGE
-	db 1,HYPNOSIS
-	db 7,REFLECT
-	db 13,LEECH_SEED
-	db 19,CONFUSION
-	db 25,STUN_SPORE
-	db 31,POISONPOWDER
-	db 37,SLEEP_POWDER
-	db 43,SOLARBEAM
+	db 1, BARRAGE
+	db 1, HYPNOSIS
+	db 7, REFLECT
+	db 13, LEECH_SEED
+	db 19, CONFUSION
+	db 25, STUN_SPORE
+	db 31, POISONPOWDER
+	db 37, SLEEP_POWDER
+	db 43, SOLARBEAM
 	db 0 ; no more level-up moves
 
 ExeggutorEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BARRAGE
-	db 1,HYPNOSIS
-	db 1,CONFUSION
-	db 19,STOMP
-	db 31,EGG_BOMB
+	db 1, BARRAGE
+	db 1, HYPNOSIS
+	db 1, CONFUSION
+	db 19, STOMP
+	db 31, EGG_BOMB
 	db 0 ; no more level-up moves
 
 CuboneEvosAttacks:
-	db EVOLVE_LEVEL,28,MAROWAK
+	db EVOLVE_LEVEL, 28, MAROWAK
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 5,TAIL_WHIP
-	db 9,BONE_CLUB
-	db 13,HEADBUTT
-	db 17,LEER
-	db 21,FOCUS_ENERGY
-	db 25,BONEMERANG
-	db 29,RAGE
-	db 33,FALSE_SWIPE
-	db 37,THRASH
-	db 41,BONE_RUSH
+	db 1, GROWL
+	db 5, TAIL_WHIP
+	db 9, BONE_CLUB
+	db 13, HEADBUTT
+	db 17, LEER
+	db 21, FOCUS_ENERGY
+	db 25, BONEMERANG
+	db 29, RAGE
+	db 33, FALSE_SWIPE
+	db 37, THRASH
+	db 41, BONE_RUSH
 	db 0 ; no more level-up moves
 
 MarowakEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 1,TAIL_WHIP
-	db 1,BONE_CLUB
-	db 1,HEADBUTT
-	db 5,TAIL_WHIP
-	db 9,BONE_CLUB
-	db 13,HEADBUTT
-	db 17,LEER
-	db 21,FOCUS_ENERGY
-	db 25,BONEMERANG
-	db 32,RAGE
-	db 39,FALSE_SWIPE
-	db 46,THRASH
-	db 53,BONE_RUSH
+	db 1, GROWL
+	db 1, TAIL_WHIP
+	db 1, BONE_CLUB
+	db 1, HEADBUTT
+	db 5, TAIL_WHIP
+	db 9, BONE_CLUB
+	db 13, HEADBUTT
+	db 17, LEER
+	db 21, FOCUS_ENERGY
+	db 25, BONEMERANG
+	db 32, RAGE
+	db 39, FALSE_SWIPE
+	db 46, THRASH
+	db 53, BONE_RUSH
 	db 0 ; no more level-up moves
 
 HitmonleeEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,DOUBLE_KICK
-	db 6,MEDITATE
-	db 11,ROLLING_KICK
-	db 16,JUMP_KICK
-	db 21,FOCUS_ENERGY
-	db 26,HI_JUMP_KICK
-	db 31,MIND_READER
-	db 36,FORESIGHT
-	db 41,ENDURE
-	db 46,MEGA_KICK
-	db 51,REVERSAL
+	db 1, DOUBLE_KICK
+	db 6, MEDITATE
+	db 11, ROLLING_KICK
+	db 16, JUMP_KICK
+	db 21, FOCUS_ENERGY
+	db 26, HI_JUMP_KICK
+	db 31, MIND_READER
+	db 36, FORESIGHT
+	db 41, ENDURE
+	db 46, MEGA_KICK
+	db 51, REVERSAL
 	db 0 ; no more level-up moves
 
 HitmonchanEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,COMET_PUNCH
-	db 7,AGILITY
-	db 13,PURSUIT
-	db 26,THUNDERPUNCH
-	db 26,ICE_PUNCH
-	db 26,FIRE_PUNCH
-	db 32,MACH_PUNCH
-	db 38,MEGA_PUNCH
-	db 44,DETECT
-	db 50,COUNTER
+	db 1, COMET_PUNCH
+	db 7, AGILITY
+	db 13, PURSUIT
+	db 26, THUNDERPUNCH
+	db 26, ICE_PUNCH
+	db 26, FIRE_PUNCH
+	db 32, MACH_PUNCH
+	db 38, MEGA_PUNCH
+	db 44, DETECT
+	db 50, COUNTER
 	db 0 ; no more level-up moves
 
 LickitungEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,LICK
-	db 7,SUPERSONIC
-	db 13,DEFENSE_CURL
-	db 19,STOMP
-	db 25,WRAP
-	db 31,DISABLE
-	db 37,SLAM
-	db 43,SCREECH
+	db 1, LICK
+	db 7, SUPERSONIC
+	db 13, DEFENSE_CURL
+	db 19, STOMP
+	db 25, WRAP
+	db 31, DISABLE
+	db 37, SLAM
+	db 43, SCREECH
 	db 0 ; no more level-up moves
 
 KoffingEvosAttacks:
-	db EVOLVE_LEVEL,35,WEEZING
+	db EVOLVE_LEVEL, 35, WEEZING
 	db 0 ; no more evolutions
-	db 1,POISON_GAS
-	db 1,TACKLE
-	db 9,SMOG
-	db 17,SELFDESTRUCT
-	db 21,SLUDGE
-	db 25,SMOKESCREEN
-	db 33,HAZE
-	db 41,EXPLOSION
-	db 45,DESTINY_BOND
+	db 1, POISON_GAS
+	db 1, TACKLE
+	db 9, SMOG
+	db 17, SELFDESTRUCT
+	db 21, SLUDGE
+	db 25, SMOKESCREEN
+	db 33, HAZE
+	db 41, EXPLOSION
+	db 45, DESTINY_BOND
 	db 0 ; no more level-up moves
 
 WeezingEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POISON_GAS
-	db 1,TACKLE
-	db 1,SMOG
-	db 1,SELFDESTRUCT
-	db 9,SMOG
-	db 17,SELFDESTRUCT
-	db 21,SLUDGE
-	db 25,SMOKESCREEN
-	db 33,HAZE
-	db 44,EXPLOSION
-	db 51,DESTINY_BOND
+	db 1, POISON_GAS
+	db 1, TACKLE
+	db 1, SMOG
+	db 1, SELFDESTRUCT
+	db 9, SMOG
+	db 17, SELFDESTRUCT
+	db 21, SLUDGE
+	db 25, SMOKESCREEN
+	db 33, HAZE
+	db 44, EXPLOSION
+	db 51, DESTINY_BOND
 	db 0 ; no more level-up moves
 
 RhyhornEvosAttacks:
-	db EVOLVE_LEVEL,42,RHYDON
+	db EVOLVE_LEVEL, 42, RHYDON
 	db 0 ; no more evolutions
-	db 1,HORN_ATTACK
-	db 1,TAIL_WHIP
-	db 13,STOMP
-	db 19,FURY_ATTACK
-	db 31,SCARY_FACE
-	db 37,HORN_DRILL
-	db 49,TAKE_DOWN
-	db 55,EARTHQUAKE
+	db 1, HORN_ATTACK
+	db 1, TAIL_WHIP
+	db 13, STOMP
+	db 19, FURY_ATTACK
+	db 31, SCARY_FACE
+	db 37, HORN_DRILL
+	db 49, TAKE_DOWN
+	db 55, EARTHQUAKE
 	db 0 ; no more level-up moves
 
 RhydonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,HORN_ATTACK
-	db 1,TAIL_WHIP
-	db 1,STOMP
-	db 1,FURY_ATTACK
-	db 13,STOMP
-	db 19,FURY_ATTACK
-	db 31,SCARY_FACE
-	db 37,HORN_DRILL
-	db 54,TAKE_DOWN
-	db 65,EARTHQUAKE
+	db 1, HORN_ATTACK
+	db 1, TAIL_WHIP
+	db 1, STOMP
+	db 1, FURY_ATTACK
+	db 13, STOMP
+	db 19, FURY_ATTACK
+	db 31, SCARY_FACE
+	db 37, HORN_DRILL
+	db 54, TAKE_DOWN
+	db 65, EARTHQUAKE
 	db 0 ; no more level-up moves
 
 ChanseyEvosAttacks:
-	db EVOLVE_HAPPINESS,TR_ANYTIME,BLISSEY
+	db EVOLVE_HAPPINESS, TR_ANYTIME, BLISSEY
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 5,GROWL
-	db 9,TAIL_WHIP
-	db 13,SOFTBOILED
-	db 17,DOUBLESLAP
-	db 23,MINIMIZE
-	db 29,SING
-	db 35,EGG_BOMB
-	db 41,DEFENSE_CURL
-	db 49,LIGHT_SCREEN
-	db 57,DOUBLE_EDGE
+	db 1, POUND
+	db 5, GROWL
+	db 9, TAIL_WHIP
+	db 13, SOFTBOILED
+	db 17, DOUBLESLAP
+	db 23, MINIMIZE
+	db 29, SING
+	db 35, EGG_BOMB
+	db 41, DEFENSE_CURL
+	db 49, LIGHT_SCREEN
+	db 57, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 TangelaEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CONSTRICT
-	db 4,SLEEP_POWDER
-	db 10,ABSORB
-	db 13,POISONPOWDER
-	db 19,VINE_WHIP
-	db 25,BIND
-	db 31,MEGA_DRAIN
-	db 34,STUN_SPORE
-	db 40,SLAM
-	db 46,GROWTH
+	db 1, CONSTRICT
+	db 4, SLEEP_POWDER
+	db 10, ABSORB
+	db 13, POISONPOWDER
+	db 19, VINE_WHIP
+	db 25, BIND
+	db 31, MEGA_DRAIN
+	db 34, STUN_SPORE
+	db 40, SLAM
+	db 46, GROWTH
 	db 0 ; no more level-up moves
 
 KangaskhanEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,COMET_PUNCH
-	db 7,LEER
-	db 13,BITE
-	db 19,TAIL_WHIP
-	db 25,MEGA_PUNCH
-	db 31,RAGE
-	db 37,ENDURE
-	db 43,DIZZY_PUNCH
-	db 49,REVERSAL
+	db 1, COMET_PUNCH
+	db 7, LEER
+	db 13, BITE
+	db 19, TAIL_WHIP
+	db 25, MEGA_PUNCH
+	db 31, RAGE
+	db 37, ENDURE
+	db 43, DIZZY_PUNCH
+	db 49, REVERSAL
 	db 0 ; no more level-up moves
 
 HorseaEvosAttacks:
-	db EVOLVE_LEVEL,32,SEADRA
+	db EVOLVE_LEVEL, 32, SEADRA
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 8,SMOKESCREEN
-	db 15,LEER
-	db 22,WATER_GUN
-	db 29,TWISTER
-	db 36,AGILITY
-	db 43,HYDRO_PUMP
+	db 1, BUBBLE
+	db 8, SMOKESCREEN
+	db 15, LEER
+	db 22, WATER_GUN
+	db 29, TWISTER
+	db 36, AGILITY
+	db 43, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 SeadraEvosAttacks:
-	db EVOLVE_TRADE,DRAGON_SCALE,KINGDRA
+	db EVOLVE_TRADE, DRAGON_SCALE, KINGDRA
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 1,SMOKESCREEN
-	db 1,LEER
-	db 1,WATER_GUN
-	db 8,SMOKESCREEN
-	db 15,LEER
-	db 22,WATER_GUN
-	db 29,TWISTER
-	db 40,AGILITY
-	db 51,HYDRO_PUMP
+	db 1, BUBBLE
+	db 1, SMOKESCREEN
+	db 1, LEER
+	db 1, WATER_GUN
+	db 8, SMOKESCREEN
+	db 15, LEER
+	db 22, WATER_GUN
+	db 29, TWISTER
+	db 40, AGILITY
+	db 51, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 GoldeenEvosAttacks:
-	db EVOLVE_LEVEL,33,SEAKING
+	db EVOLVE_LEVEL, 33, SEAKING
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,TAIL_WHIP
-	db 10,SUPERSONIC
-	db 15,HORN_ATTACK
-	db 24,FLAIL
-	db 29,FURY_ATTACK
-	db 38,WATERFALL
-	db 43,HORN_DRILL
-	db 52,AGILITY
+	db 1, PECK
+	db 1, TAIL_WHIP
+	db 10, SUPERSONIC
+	db 15, HORN_ATTACK
+	db 24, FLAIL
+	db 29, FURY_ATTACK
+	db 38, WATERFALL
+	db 43, HORN_DRILL
+	db 52, AGILITY
 	db 0 ; no more level-up moves
 
 SeakingEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,TAIL_WHIP
-	db 1,TAIL_WHIP
-	db 10,SUPERSONIC
-	db 15,HORN_ATTACK
-	db 24,FLAIL
-	db 29,FURY_ATTACK
-	db 41,WATERFALL
-	db 49,HORN_DRILL
-	db 61,AGILITY
+	db 1, PECK
+	db 1, TAIL_WHIP
+	db 1, TAIL_WHIP
+	db 10, SUPERSONIC
+	db 15, HORN_ATTACK
+	db 24, FLAIL
+	db 29, FURY_ATTACK
+	db 41, WATERFALL
+	db 49, HORN_DRILL
+	db 61, AGILITY
 	db 0 ; no more level-up moves
 
 StaryuEvosAttacks:
-	db EVOLVE_ITEM,WATER_STONE,STARMIE
+	db EVOLVE_ITEM, WATER_STONE, STARMIE
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,HARDEN
-	db 7,WATER_GUN
-	db 13,RAPID_SPIN
-	db 19,RECOVER
-	db 25,SWIFT
-	db 31,BUBBLEBEAM
-	db 37,MINIMIZE
-	db 43,LIGHT_SCREEN
-	db 50,HYDRO_PUMP
+	db 1, TACKLE
+	db 1, HARDEN
+	db 7, WATER_GUN
+	db 13, RAPID_SPIN
+	db 19, RECOVER
+	db 25, SWIFT
+	db 31, BUBBLEBEAM
+	db 37, MINIMIZE
+	db 43, LIGHT_SCREEN
+	db 50, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 StarmieEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,RAPID_SPIN
-	db 1,RECOVER
-	db 1,BUBBLEBEAM
-	db 37,CONFUSE_RAY
+	db 1, TACKLE
+	db 1, RAPID_SPIN
+	db 1, RECOVER
+	db 1, BUBBLEBEAM
+	db 37, CONFUSE_RAY
 	db 0 ; no more level-up moves
 
 MrMimeEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BARRIER
-	db 6,CONFUSION
-	db 11,SUBSTITUTE
-	db 16,MEDITATE
-	db 21,DOUBLESLAP
-	db 26,LIGHT_SCREEN
-	db 26,REFLECT
-	db 31,ENCORE
-	db 36,PSYBEAM
-	db 41,BATON_PASS
-	db 46,SAFEGUARD
+	db 1, BARRIER
+	db 6, CONFUSION
+	db 11, SUBSTITUTE
+	db 16, MEDITATE
+	db 21, DOUBLESLAP
+	db 26, LIGHT_SCREEN
+	db 26, REFLECT
+	db 31, ENCORE
+	db 36, PSYBEAM
+	db 41, BATON_PASS
+	db 46, SAFEGUARD
 	db 0 ; no more level-up moves
 
 ScytherEvosAttacks:
-	db EVOLVE_TRADE,METAL_COAT,SCIZOR
+	db EVOLVE_TRADE, METAL_COAT, SCIZOR
 	db 0 ; no more evolutions
-	db 1,QUICK_ATTACK
-	db 1,LEER
-	db 6,FOCUS_ENERGY
-	db 12,PURSUIT
-	db 18,FALSE_SWIPE
-	db 24,AGILITY
-	db 30,WING_ATTACK
-	db 36,SLASH
-	db 42,SWORDS_DANCE
-	db 48,DOUBLE_TEAM
+	db 1, QUICK_ATTACK
+	db 1, LEER
+	db 6, FOCUS_ENERGY
+	db 12, PURSUIT
+	db 18, FALSE_SWIPE
+	db 24, AGILITY
+	db 30, WING_ATTACK
+	db 36, SLASH
+	db 42, SWORDS_DANCE
+	db 48, DOUBLE_TEAM
 	db 0 ; no more level-up moves
 
 JynxEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 1,LICK
-	db 1,LOVELY_KISS
-	db 1,POWDER_SNOW
-	db 9,LOVELY_KISS
-	db 13,POWDER_SNOW
-	db 21,DOUBLESLAP
-	db 25,ICE_PUNCH
-	db 35,MEAN_LOOK
-	db 41,BODY_SLAM
-	db 51,PERISH_SONG
-	db 57,BLIZZARD
+	db 1, POUND
+	db 1, LICK
+	db 1, LOVELY_KISS
+	db 1, POWDER_SNOW
+	db 9, LOVELY_KISS
+	db 13, POWDER_SNOW
+	db 21, DOUBLESLAP
+	db 25, ICE_PUNCH
+	db 35, MEAN_LOOK
+	db 41, BODY_SLAM
+	db 51, PERISH_SONG
+	db 57, BLIZZARD
 	db 0 ; no more level-up moves
 
 ElectabuzzEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,QUICK_ATTACK
-	db 1,LEER
-	db 1,THUNDERPUNCH
-	db 9,THUNDERPUNCH
-	db 17,LIGHT_SCREEN
-	db 25,SWIFT
-	db 36,SCREECH
-	db 47,THUNDERBOLT
-	db 58,THUNDER
+	db 1, QUICK_ATTACK
+	db 1, LEER
+	db 1, THUNDERPUNCH
+	db 9, THUNDERPUNCH
+	db 17, LIGHT_SCREEN
+	db 25, SWIFT
+	db 36, SCREECH
+	db 47, THUNDERBOLT
+	db 58, THUNDER
 	db 0 ; no more level-up moves
 
 MagmarEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,EMBER
-	db 1,LEER
-	db 1,SMOG
-	db 1,FIRE_PUNCH
-	db 7,LEER
-	db 13,SMOG
-	db 19,FIRE_PUNCH
-	db 25,SMOKESCREEN
-	db 33,SUNNY_DAY
-	db 41,FLAMETHROWER
-	db 49,CONFUSE_RAY
-	db 57,FIRE_BLAST
+	db 1, EMBER
+	db 1, LEER
+	db 1, SMOG
+	db 1, FIRE_PUNCH
+	db 7, LEER
+	db 13, SMOG
+	db 19, FIRE_PUNCH
+	db 25, SMOKESCREEN
+	db 33, SUNNY_DAY
+	db 41, FLAMETHROWER
+	db 49, CONFUSE_RAY
+	db 57, FIRE_BLAST
 	db 0 ; no more level-up moves
 
 PinsirEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,VICEGRIP
-	db 7,FOCUS_ENERGY
-	db 13,BIND
-	db 19,SEISMIC_TOSS
-	db 25,HARDEN
-	db 31,GUILLOTINE
-	db 37,SUBMISSION
-	db 43,SWORDS_DANCE
+	db 1, VICEGRIP
+	db 7, FOCUS_ENERGY
+	db 13, BIND
+	db 19, SEISMIC_TOSS
+	db 25, HARDEN
+	db 31, GUILLOTINE
+	db 37, SUBMISSION
+	db 43, SWORDS_DANCE
 	db 0 ; no more level-up moves
 
 TaurosEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 4,TAIL_WHIP
-	db 8,RAGE
-	db 13,HORN_ATTACK
-	db 19,SCARY_FACE
-	db 26,PURSUIT
-	db 34,REST
-	db 43,THRASH
-	db 53,TAKE_DOWN
+	db 1, TACKLE
+	db 4, TAIL_WHIP
+	db 8, RAGE
+	db 13, HORN_ATTACK
+	db 19, SCARY_FACE
+	db 26, PURSUIT
+	db 34, REST
+	db 43, THRASH
+	db 53, TAKE_DOWN
 	db 0 ; no more level-up moves
 
 MagikarpEvosAttacks:
-	db EVOLVE_LEVEL,20,GYARADOS
+	db EVOLVE_LEVEL, 20, GYARADOS
 	db 0 ; no more evolutions
-	db 1,SPLASH
-	db 15,TACKLE
-	db 30,FLAIL
+	db 1, SPLASH
+	db 15, TACKLE
+	db 30, FLAIL
 	db 0 ; no more level-up moves
 
 GyaradosEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,THRASH
-	db 20,BITE
-	db 25,DRAGON_RAGE
-	db 30,LEER
-	db 35,TWISTER
-	db 40,HYDRO_PUMP
-	db 45,RAIN_DANCE
-	db 50,HYPER_BEAM
+	db 1, THRASH
+	db 20, BITE
+	db 25, DRAGON_RAGE
+	db 30, LEER
+	db 35, TWISTER
+	db 40, HYDRO_PUMP
+	db 45, RAIN_DANCE
+	db 50, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 LaprasEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 1,GROWL
-	db 1,SING
-	db 8,MIST
-	db 15,BODY_SLAM
-	db 22,CONFUSE_RAY
-	db 29,PERISH_SONG
-	db 36,ICE_BEAM
-	db 43,RAIN_DANCE
-	db 50,SAFEGUARD
-	db 57,HYDRO_PUMP
+	db 1, WATER_GUN
+	db 1, GROWL
+	db 1, SING
+	db 8, MIST
+	db 15, BODY_SLAM
+	db 22, CONFUSE_RAY
+	db 29, PERISH_SONG
+	db 36, ICE_BEAM
+	db 43, RAIN_DANCE
+	db 50, SAFEGUARD
+	db 57, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 DittoEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TRANSFORM
+	db 1, TRANSFORM
 	db 0 ; no more level-up moves
 
 EeveeEvosAttacks:
-	db EVOLVE_ITEM,THUNDERSTONE,JOLTEON
-	db EVOLVE_ITEM,WATER_STONE,VAPOREON
-	db EVOLVE_ITEM,FIRE_STONE,FLAREON
-	db EVOLVE_HAPPINESS,TR_MORNDAY,ESPEON
-	db EVOLVE_HAPPINESS,TR_NITE,UMBREON
+	db EVOLVE_ITEM, THUNDERSTONE, JOLTEON
+	db EVOLVE_ITEM, WATER_STONE, VAPOREON
+	db EVOLVE_ITEM, FIRE_STONE, FLAREON
+	db EVOLVE_HAPPINESS, TR_MORNDAY, ESPEON
+	db EVOLVE_HAPPINESS, TR_NITE, UMBREON
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 8,SAND_ATTACK
-	db 16,GROWL
-	db 23,QUICK_ATTACK
-	db 30,BITE
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 8, SAND_ATTACK
+	db 16, GROWL
+	db 23, QUICK_ATTACK
+	db 30, BITE
 if _CRYSTAL
-	db 36,BATON_PASS
+	db 36, BATON_PASS
 else
-	db 36,FOCUS_ENERGY
+	db 36, FOCUS_ENERGY
 endc
-	db 42,TAKE_DOWN
+	db 42, TAKE_DOWN
 	db 0 ; no more level-up moves
 
 VaporeonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 8,SAND_ATTACK
-	db 16,WATER_GUN
-	db 23,QUICK_ATTACK
-	db 30,BITE
-	db 36,AURORA_BEAM
-	db 42,HAZE
-	db 47,ACID_ARMOR
-	db 52,HYDRO_PUMP
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 8, SAND_ATTACK
+	db 16, WATER_GUN
+	db 23, QUICK_ATTACK
+	db 30, BITE
+	db 36, AURORA_BEAM
+	db 42, HAZE
+	db 47, ACID_ARMOR
+	db 52, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 JolteonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 8,SAND_ATTACK
-	db 16,THUNDERSHOCK
-	db 23,QUICK_ATTACK
-	db 30,DOUBLE_KICK
-	db 36,PIN_MISSILE
-	db 42,THUNDER_WAVE
-	db 47,AGILITY
-	db 52,THUNDER
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 8, SAND_ATTACK
+	db 16, THUNDERSHOCK
+	db 23, QUICK_ATTACK
+	db 30, DOUBLE_KICK
+	db 36, PIN_MISSILE
+	db 42, THUNDER_WAVE
+	db 47, AGILITY
+	db 52, THUNDER
 	db 0 ; no more level-up moves
 
 FlareonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 8,SAND_ATTACK
-	db 16,EMBER
-	db 23,QUICK_ATTACK
-	db 30,BITE
-	db 36,FIRE_SPIN
-	db 42,SMOG
-	db 47,LEER
-	db 52,FLAMETHROWER
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 8, SAND_ATTACK
+	db 16, EMBER
+	db 23, QUICK_ATTACK
+	db 30, BITE
+	db 36, FIRE_SPIN
+	db 42, SMOG
+	db 47, LEER
+	db 52, FLAMETHROWER
 	db 0 ; no more level-up moves
 
 PorygonEvosAttacks:
-	db EVOLVE_TRADE,UP_GRADE,PORYGON2
+	db EVOLVE_TRADE, UP_GRADE, PORYGON2
 	db 0 ; no more evolutions
-	db 1,CONVERSION2
-	db 1,TACKLE
-	db 1,CONVERSION
-	db 9,AGILITY
-	db 12,PSYBEAM
-	db 20,RECOVER
-	db 24,SHARPEN
-	db 32,LOCK_ON
-	db 36,TRI_ATTACK
-	db 44,ZAP_CANNON
+	db 1, CONVERSION2
+	db 1, TACKLE
+	db 1, CONVERSION
+	db 9, AGILITY
+	db 12, PSYBEAM
+	db 20, RECOVER
+	db 24, SHARPEN
+	db 32, LOCK_ON
+	db 36, TRI_ATTACK
+	db 44, ZAP_CANNON
 	db 0 ; no more level-up moves
 
 OmanyteEvosAttacks:
-	db EVOLVE_LEVEL,40,OMASTAR
+	db EVOLVE_LEVEL, 40, OMASTAR
 	db 0 ; no more evolutions
-	db 1,CONSTRICT
-	db 1,WITHDRAW
-	db 13,BITE
-	db 19,WATER_GUN
-	db 31,LEER
-	db 37,PROTECT
-	db 49,ANCIENTPOWER
-	db 55,HYDRO_PUMP
+	db 1, CONSTRICT
+	db 1, WITHDRAW
+	db 13, BITE
+	db 19, WATER_GUN
+	db 31, LEER
+	db 37, PROTECT
+	db 49, ANCIENTPOWER
+	db 55, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 OmastarEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CONSTRICT
-	db 1,WITHDRAW
-	db 1,BITE
-	db 13,BITE
-	db 19,WATER_GUN
-	db 31,LEER
-	db 37,PROTECT
-	db 40,SPIKE_CANNON
-	db 54,ANCIENTPOWER
-	db 65,HYDRO_PUMP
+	db 1, CONSTRICT
+	db 1, WITHDRAW
+	db 1, BITE
+	db 13, BITE
+	db 19, WATER_GUN
+	db 31, LEER
+	db 37, PROTECT
+	db 40, SPIKE_CANNON
+	db 54, ANCIENTPOWER
+	db 65, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 KabutoEvosAttacks:
-	db EVOLVE_LEVEL,40,KABUTOPS
+	db EVOLVE_LEVEL, 40, KABUTOPS
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,HARDEN
-	db 10,ABSORB
-	db 19,LEER
-	db 28,SAND_ATTACK
-	db 37,ENDURE
-	db 46,MEGA_DRAIN
-	db 55,ANCIENTPOWER
+	db 1, SCRATCH
+	db 1, HARDEN
+	db 10, ABSORB
+	db 19, LEER
+	db 28, SAND_ATTACK
+	db 37, ENDURE
+	db 46, MEGA_DRAIN
+	db 55, ANCIENTPOWER
 	db 0 ; no more level-up moves
 
 KabutopsEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,HARDEN
-	db 1,ABSORB
-	db 10,ABSORB
-	db 19,LEER
-	db 28,SAND_ATTACK
-	db 37,ENDURE
-	db 40,SLASH
-	db 51,MEGA_DRAIN
-	db 65,ANCIENTPOWER
+	db 1, SCRATCH
+	db 1, HARDEN
+	db 1, ABSORB
+	db 10, ABSORB
+	db 19, LEER
+	db 28, SAND_ATTACK
+	db 37, ENDURE
+	db 40, SLASH
+	db 51, MEGA_DRAIN
+	db 65, ANCIENTPOWER
 	db 0 ; no more level-up moves
 
 AerodactylEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WING_ATTACK
-	db 8,AGILITY
-	db 15,BITE
-	db 22,SUPERSONIC
-	db 29,ANCIENTPOWER
-	db 36,SCARY_FACE
-	db 43,TAKE_DOWN
-	db 50,HYPER_BEAM
+	db 1, WING_ATTACK
+	db 8, AGILITY
+	db 15, BITE
+	db 22, SUPERSONIC
+	db 29, ANCIENTPOWER
+	db 36, SCARY_FACE
+	db 43, TAKE_DOWN
+	db 50, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 SnorlaxEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 8,AMNESIA
-	db 15,DEFENSE_CURL
-	db 22,BELLY_DRUM
-	db 29,HEADBUTT
-	db 36,SNORE
-	db 36,REST
-	db 43,BODY_SLAM
-	db 50,ROLLOUT
-	db 57,HYPER_BEAM
+	db 1, TACKLE
+	db 8, AMNESIA
+	db 15, DEFENSE_CURL
+	db 22, BELLY_DRUM
+	db 29, HEADBUTT
+	db 36, SNORE
+	db 36, REST
+	db 43, BODY_SLAM
+	db 50, ROLLOUT
+	db 57, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 ArticunoEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,GUST
-	db 1,POWDER_SNOW
-	db 13,MIST
-	db 25,AGILITY
-	db 37,MIND_READER
-	db 49,ICE_BEAM
-	db 61,REFLECT
-	db 73,BLIZZARD
+	db 1, GUST
+	db 1, POWDER_SNOW
+	db 13, MIST
+	db 25, AGILITY
+	db 37, MIND_READER
+	db 49, ICE_BEAM
+	db 61, REFLECT
+	db 73, BLIZZARD
 	db 0 ; no more level-up moves
 
 ZapdosEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,THUNDERSHOCK
-	db 13,THUNDER_WAVE
-	db 25,AGILITY
-	db 37,DETECT
-	db 49,DRILL_PECK
-	db 61,LIGHT_SCREEN
-	db 73,THUNDER
+	db 1, PECK
+	db 1, THUNDERSHOCK
+	db 13, THUNDER_WAVE
+	db 25, AGILITY
+	db 37, DETECT
+	db 49, DRILL_PECK
+	db 61, LIGHT_SCREEN
+	db 73, THUNDER
 	db 0 ; no more level-up moves
 
 MoltresEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WING_ATTACK
-	db 1,EMBER
-	db 13,FIRE_SPIN
-	db 25,AGILITY
-	db 37,ENDURE
-	db 49,FLAMETHROWER
-	db 61,SAFEGUARD
-	db 73,SKY_ATTACK
+	db 1, WING_ATTACK
+	db 1, EMBER
+	db 13, FIRE_SPIN
+	db 25, AGILITY
+	db 37, ENDURE
+	db 49, FLAMETHROWER
+	db 61, SAFEGUARD
+	db 73, SKY_ATTACK
 	db 0 ; no more level-up moves
 
 DratiniEvosAttacks:
-	db EVOLVE_LEVEL,30,DRAGONAIR
+	db EVOLVE_LEVEL, 30, DRAGONAIR
 	db 0 ; no more evolutions
-	db 1,WRAP
-	db 1,LEER
-	db 8,THUNDER_WAVE
-	db 15,TWISTER
-	db 22,DRAGON_RAGE
-	db 29,SLAM
-	db 36,AGILITY
-	db 43,SAFEGUARD
-	db 50,OUTRAGE
-	db 57,HYPER_BEAM
+	db 1, WRAP
+	db 1, LEER
+	db 8, THUNDER_WAVE
+	db 15, TWISTER
+	db 22, DRAGON_RAGE
+	db 29, SLAM
+	db 36, AGILITY
+	db 43, SAFEGUARD
+	db 50, OUTRAGE
+	db 57, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 DragonairEvosAttacks:
-	db EVOLVE_LEVEL,55,DRAGONITE
+	db EVOLVE_LEVEL, 55, DRAGONITE
 	db 0 ; no more evolutions
-	db 1,WRAP
-	db 1,LEER
-	db 1,THUNDER_WAVE
-	db 1,TWISTER
-	db 8,THUNDER_WAVE
-	db 15,TWISTER
-	db 22,DRAGON_RAGE
-	db 29,SLAM
-	db 38,AGILITY
-	db 47,SAFEGUARD
-	db 56,OUTRAGE
-	db 65,HYPER_BEAM
+	db 1, WRAP
+	db 1, LEER
+	db 1, THUNDER_WAVE
+	db 1, TWISTER
+	db 8, THUNDER_WAVE
+	db 15, TWISTER
+	db 22, DRAGON_RAGE
+	db 29, SLAM
+	db 38, AGILITY
+	db 47, SAFEGUARD
+	db 56, OUTRAGE
+	db 65, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 DragoniteEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WRAP
-	db 1,LEER
-	db 1,THUNDER_WAVE
-	db 1,TWISTER
-	db 8,THUNDER_WAVE
-	db 15,TWISTER
-	db 22,DRAGON_RAGE
-	db 29,SLAM
-	db 38,AGILITY
-	db 47,SAFEGUARD
-	db 55,WING_ATTACK
-	db 61,OUTRAGE
-	db 75,HYPER_BEAM
+	db 1, WRAP
+	db 1, LEER
+	db 1, THUNDER_WAVE
+	db 1, TWISTER
+	db 8, THUNDER_WAVE
+	db 15, TWISTER
+	db 22, DRAGON_RAGE
+	db 29, SLAM
+	db 38, AGILITY
+	db 47, SAFEGUARD
+	db 55, WING_ATTACK
+	db 61, OUTRAGE
+	db 75, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 MewtwoEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CONFUSION
-	db 1,DISABLE
-	db 11,BARRIER
-	db 22,SWIFT
-	db 33,PSYCH_UP
-	db 44,FUTURE_SIGHT
-	db 55,MIST
-	db 66,PSYCHIC_M
-	db 77,AMNESIA
-	db 88,RECOVER
-	db 99,SAFEGUARD
+	db 1, CONFUSION
+	db 1, DISABLE
+	db 11, BARRIER
+	db 22, SWIFT
+	db 33, PSYCH_UP
+	db 44, FUTURE_SIGHT
+	db 55, MIST
+	db 66, PSYCHIC_M
+	db 77, AMNESIA
+	db 88, RECOVER
+	db 99, SAFEGUARD
 	db 0 ; no more level-up moves
 
 MewEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 10,TRANSFORM
-	db 20,MEGA_PUNCH
-	db 30,METRONOME
-	db 40,PSYCHIC_M
-	db 50,ANCIENTPOWER
+	db 1, POUND
+	db 10, TRANSFORM
+	db 20, MEGA_PUNCH
+	db 30, METRONOME
+	db 40, PSYCHIC_M
+	db 50, ANCIENTPOWER
 	db 0 ; no more level-up moves
 
 ChikoritaEvosAttacks:
-	db EVOLVE_LEVEL,16,BAYLEEF
+	db EVOLVE_LEVEL, 16, BAYLEEF
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 8,RAZOR_LEAF
-	db 12,REFLECT
-	db 15,POISONPOWDER
-	db 22,SYNTHESIS
-	db 29,BODY_SLAM
-	db 36,LIGHT_SCREEN
-	db 43,SAFEGUARD
-	db 50,SOLARBEAM
+	db 1, TACKLE
+	db 1, GROWL
+	db 8, RAZOR_LEAF
+	db 12, REFLECT
+	db 15, POISONPOWDER
+	db 22, SYNTHESIS
+	db 29, BODY_SLAM
+	db 36, LIGHT_SCREEN
+	db 43, SAFEGUARD
+	db 50, SOLARBEAM
 	db 0 ; no more level-up moves
 
 BayleefEvosAttacks:
-	db EVOLVE_LEVEL,32,MEGANIUM
+	db EVOLVE_LEVEL, 32, MEGANIUM
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,RAZOR_LEAF
-	db 1,REFLECT
-	db 8,RAZOR_LEAF
-	db 12,REFLECT
-	db 15,POISONPOWDER
-	db 23,SYNTHESIS
-	db 31,BODY_SLAM
-	db 39,LIGHT_SCREEN
-	db 47,SAFEGUARD
-	db 55,SOLARBEAM
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, RAZOR_LEAF
+	db 1, REFLECT
+	db 8, RAZOR_LEAF
+	db 12, REFLECT
+	db 15, POISONPOWDER
+	db 23, SYNTHESIS
+	db 31, BODY_SLAM
+	db 39, LIGHT_SCREEN
+	db 47, SAFEGUARD
+	db 55, SOLARBEAM
 	db 0 ; no more level-up moves
 
 MeganiumEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,RAZOR_LEAF
-	db 1,REFLECT
-	db 8,RAZOR_LEAF
-	db 12,REFLECT
-	db 15,POISONPOWDER
-	db 23,SYNTHESIS
-	db 31,BODY_SLAM
-	db 41,LIGHT_SCREEN
-	db 51,SAFEGUARD
-	db 61,SOLARBEAM
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, RAZOR_LEAF
+	db 1, REFLECT
+	db 8, RAZOR_LEAF
+	db 12, REFLECT
+	db 15, POISONPOWDER
+	db 23, SYNTHESIS
+	db 31, BODY_SLAM
+	db 41, LIGHT_SCREEN
+	db 51, SAFEGUARD
+	db 61, SOLARBEAM
 	db 0 ; no more level-up moves
 
 CyndaquilEvosAttacks:
-	db EVOLVE_LEVEL,14,QUILAVA
+	db EVOLVE_LEVEL, 14, QUILAVA
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,LEER
-	db 6,SMOKESCREEN
-	db 12,EMBER
-	db 19,QUICK_ATTACK
-	db 27,FLAME_WHEEL
-	db 36,SWIFT
-	db 46,FLAMETHROWER
+	db 1, TACKLE
+	db 1, LEER
+	db 6, SMOKESCREEN
+	db 12, EMBER
+	db 19, QUICK_ATTACK
+	db 27, FLAME_WHEEL
+	db 36, SWIFT
+	db 46, FLAMETHROWER
 	db 0 ; no more level-up moves
 
 QuilavaEvosAttacks:
-	db EVOLVE_LEVEL,36,TYPHLOSION
+	db EVOLVE_LEVEL, 36, TYPHLOSION
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,LEER
-	db 1,SMOKESCREEN
-	db 6,SMOKESCREEN
-	db 12,EMBER
-	db 21,QUICK_ATTACK
-	db 31,FLAME_WHEEL
-	db 42,SWIFT
-	db 54,FLAMETHROWER
+	db 1, TACKLE
+	db 1, LEER
+	db 1, SMOKESCREEN
+	db 6, SMOKESCREEN
+	db 12, EMBER
+	db 21, QUICK_ATTACK
+	db 31, FLAME_WHEEL
+	db 42, SWIFT
+	db 54, FLAMETHROWER
 	db 0 ; no more level-up moves
 
 TyphlosionEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,LEER
-	db 1,SMOKESCREEN
-	db 1,EMBER
-	db 6,SMOKESCREEN
-	db 12,EMBER
-	db 21,QUICK_ATTACK
-	db 31,FLAME_WHEEL
-	db 45,SWIFT
-	db 60,FLAMETHROWER
+	db 1, TACKLE
+	db 1, LEER
+	db 1, SMOKESCREEN
+	db 1, EMBER
+	db 6, SMOKESCREEN
+	db 12, EMBER
+	db 21, QUICK_ATTACK
+	db 31, FLAME_WHEEL
+	db 45, SWIFT
+	db 60, FLAMETHROWER
 	db 0 ; no more level-up moves
 
 TotodileEvosAttacks:
-	db EVOLVE_LEVEL,18,CROCONAW
+	db EVOLVE_LEVEL, 18, CROCONAW
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 7,RAGE
-	db 13,WATER_GUN
-	db 20,BITE
-	db 27,SCARY_FACE
-	db 35,SLASH
-	db 43,SCREECH
-	db 52,HYDRO_PUMP
+	db 1, SCRATCH
+	db 1, LEER
+	db 7, RAGE
+	db 13, WATER_GUN
+	db 20, BITE
+	db 27, SCARY_FACE
+	db 35, SLASH
+	db 43, SCREECH
+	db 52, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 CroconawEvosAttacks:
-	db EVOLVE_LEVEL,30,FERALIGATR
+	db EVOLVE_LEVEL, 30, FERALIGATR
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 1,RAGE
-	db 7,RAGE
-	db 13,WATER_GUN
-	db 21,BITE
-	db 28,SCARY_FACE
-	db 37,SLASH
-	db 45,SCREECH
-	db 55,HYDRO_PUMP
+	db 1, SCRATCH
+	db 1, LEER
+	db 1, RAGE
+	db 7, RAGE
+	db 13, WATER_GUN
+	db 21, BITE
+	db 28, SCARY_FACE
+	db 37, SLASH
+	db 45, SCREECH
+	db 55, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 FeraligatrEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 1,RAGE
-	db 1,WATER_GUN
-	db 7,RAGE
-	db 13,WATER_GUN
-	db 21,BITE
-	db 28,SCARY_FACE
-	db 38,SLASH
-	db 47,SCREECH
-	db 58,HYDRO_PUMP
+	db 1, SCRATCH
+	db 1, LEER
+	db 1, RAGE
+	db 1, WATER_GUN
+	db 7, RAGE
+	db 13, WATER_GUN
+	db 21, BITE
+	db 28, SCARY_FACE
+	db 38, SLASH
+	db 47, SCREECH
+	db 58, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 SentretEvosAttacks:
-	db EVOLVE_LEVEL,15,FURRET
+	db EVOLVE_LEVEL, 15, FURRET
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 5,DEFENSE_CURL
-	db 11,QUICK_ATTACK
-	db 17,FURY_SWIPES
-	db 25,SLAM
-	db 33,REST
-	db 41,AMNESIA
+	db 1, TACKLE
+	db 5, DEFENSE_CURL
+	db 11, QUICK_ATTACK
+	db 17, FURY_SWIPES
+	db 25, SLAM
+	db 33, REST
+	db 41, AMNESIA
 	db 0 ; no more level-up moves
 
 FurretEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,DEFENSE_CURL
-	db 1,QUICK_ATTACK
-	db 5,DEFENSE_CURL
-	db 11,QUICK_ATTACK
-	db 18,FURY_SWIPES
-	db 28,SLAM
-	db 38,REST
-	db 48,AMNESIA
+	db 1, SCRATCH
+	db 1, DEFENSE_CURL
+	db 1, QUICK_ATTACK
+	db 5, DEFENSE_CURL
+	db 11, QUICK_ATTACK
+	db 18, FURY_SWIPES
+	db 28, SLAM
+	db 38, REST
+	db 48, AMNESIA
 	db 0 ; no more level-up moves
 
 HoothootEvosAttacks:
-	db EVOLVE_LEVEL,20,NOCTOWL
+	db EVOLVE_LEVEL, 20, NOCTOWL
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 6,FORESIGHT
-	db 11,PECK
-	db 16,HYPNOSIS
-	db 22,REFLECT
-	db 28,TAKE_DOWN
-	db 34,CONFUSION
-	db 48,DREAM_EATER
+	db 1, TACKLE
+	db 1, GROWL
+	db 6, FORESIGHT
+	db 11, PECK
+	db 16, HYPNOSIS
+	db 22, REFLECT
+	db 28, TAKE_DOWN
+	db 34, CONFUSION
+	db 48, DREAM_EATER
 	db 0 ; no more level-up moves
 
 NoctowlEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,FORESIGHT
-	db 1,PECK
-	db 6,FORESIGHT
-	db 11,PECK
-	db 16,HYPNOSIS
-	db 25,REFLECT
-	db 33,TAKE_DOWN
-	db 41,CONFUSION
-	db 57,DREAM_EATER
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, FORESIGHT
+	db 1, PECK
+	db 6, FORESIGHT
+	db 11, PECK
+	db 16, HYPNOSIS
+	db 25, REFLECT
+	db 33, TAKE_DOWN
+	db 41, CONFUSION
+	db 57, DREAM_EATER
 	db 0 ; no more level-up moves
 
 LedybaEvosAttacks:
-	db EVOLVE_LEVEL,18,LEDIAN
+	db EVOLVE_LEVEL, 18, LEDIAN
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 8,SUPERSONIC
-	db 15,COMET_PUNCH
-	db 22,LIGHT_SCREEN
-	db 22,REFLECT
-	db 22,SAFEGUARD
-	db 29,BATON_PASS
-	db 36,SWIFT
-	db 43,AGILITY
-	db 50,DOUBLE_EDGE
+	db 1, TACKLE
+	db 8, SUPERSONIC
+	db 15, COMET_PUNCH
+	db 22, LIGHT_SCREEN
+	db 22, REFLECT
+	db 22, SAFEGUARD
+	db 29, BATON_PASS
+	db 36, SWIFT
+	db 43, AGILITY
+	db 50, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 LedianEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SUPERSONIC
-	db 8,SUPERSONIC
-	db 15,COMET_PUNCH
-	db 24,LIGHT_SCREEN
-	db 24,REFLECT
-	db 24,SAFEGUARD
-	db 33,BATON_PASS
-	db 42,SWIFT
-	db 51,AGILITY
-	db 60,DOUBLE_EDGE
+	db 1, TACKLE
+	db 1, SUPERSONIC
+	db 8, SUPERSONIC
+	db 15, COMET_PUNCH
+	db 24, LIGHT_SCREEN
+	db 24, REFLECT
+	db 24, SAFEGUARD
+	db 33, BATON_PASS
+	db 42, SWIFT
+	db 51, AGILITY
+	db 60, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 SpinarakEvosAttacks:
-	db EVOLVE_LEVEL,22,ARIADOS
+	db EVOLVE_LEVEL, 22, ARIADOS
 	db 0 ; no more evolutions
-	db 1,POISON_STING
-	db 1,STRING_SHOT
-	db 6,SCARY_FACE
-	db 11,CONSTRICT
-	db 17,NIGHT_SHADE
-	db 23,LEECH_LIFE
-	db 30,FURY_SWIPES
-	db 37,SPIDER_WEB
+	db 1, POISON_STING
+	db 1, STRING_SHOT
+	db 6, SCARY_FACE
+	db 11, CONSTRICT
+	db 17, NIGHT_SHADE
+	db 23, LEECH_LIFE
+	db 30, FURY_SWIPES
+	db 37, SPIDER_WEB
 if _CRYSTAL
-	db 45,AGILITY
+	db 45, AGILITY
 else
-	db 45,SCREECH
+	db 45, SCREECH
 endc
-	db 53,PSYCHIC_M
+	db 53, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 AriadosEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POISON_STING
-	db 1,STRING_SHOT
-	db 1,SCARY_FACE
-	db 1,CONSTRICT
-	db 6,SCARY_FACE
-	db 11,CONSTRICT
-	db 17,NIGHT_SHADE
-	db 25,LEECH_LIFE
-	db 34,FURY_SWIPES
-	db 43,SPIDER_WEB
+	db 1, POISON_STING
+	db 1, STRING_SHOT
+	db 1, SCARY_FACE
+	db 1, CONSTRICT
+	db 6, SCARY_FACE
+	db 11, CONSTRICT
+	db 17, NIGHT_SHADE
+	db 25, LEECH_LIFE
+	db 34, FURY_SWIPES
+	db 43, SPIDER_WEB
 if _CRYSTAL
-	db 53,AGILITY
+	db 53, AGILITY
 else
-	db 53,SCREECH
+	db 53, SCREECH
 endc
-	db 63,PSYCHIC_M
+	db 63, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 CrobatEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCREECH
-	db 1,LEECH_LIFE
-	db 1,SUPERSONIC
-	db 6,SUPERSONIC
-	db 12,BITE
-	db 19,CONFUSE_RAY
-	db 30,WING_ATTACK
-	db 42,MEAN_LOOK
-	db 55,HAZE
+	db 1, SCREECH
+	db 1, LEECH_LIFE
+	db 1, SUPERSONIC
+	db 6, SUPERSONIC
+	db 12, BITE
+	db 19, CONFUSE_RAY
+	db 30, WING_ATTACK
+	db 42, MEAN_LOOK
+	db 55, HAZE
 	db 0 ; no more level-up moves
 
 ChinchouEvosAttacks:
-	db EVOLVE_LEVEL,27,LANTURN
+	db EVOLVE_LEVEL, 27, LANTURN
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 1,THUNDER_WAVE
-	db 5,SUPERSONIC
-	db 13,FLAIL
-	db 17,WATER_GUN
-	db 25,SPARK
-	db 29,CONFUSE_RAY
-	db 37,TAKE_DOWN
-	db 41,HYDRO_PUMP
+	db 1, BUBBLE
+	db 1, THUNDER_WAVE
+	db 5, SUPERSONIC
+	db 13, FLAIL
+	db 17, WATER_GUN
+	db 25, SPARK
+	db 29, CONFUSE_RAY
+	db 37, TAKE_DOWN
+	db 41, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 LanturnEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 1,THUNDER_WAVE
-	db 1,SUPERSONIC
-	db 5,SUPERSONIC
-	db 13,FLAIL
-	db 17,WATER_GUN
-	db 25,SPARK
-	db 33,CONFUSE_RAY
-	db 45,TAKE_DOWN
-	db 53,HYDRO_PUMP
+	db 1, BUBBLE
+	db 1, THUNDER_WAVE
+	db 1, SUPERSONIC
+	db 5, SUPERSONIC
+	db 13, FLAIL
+	db 17, WATER_GUN
+	db 25, SPARK
+	db 33, CONFUSE_RAY
+	db 45, TAKE_DOWN
+	db 53, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 PichuEvosAttacks:
-	db EVOLVE_HAPPINESS,TR_ANYTIME,PIKACHU
+	db EVOLVE_HAPPINESS, TR_ANYTIME, PIKACHU
 	db 0 ; no more evolutions
-	db 1,THUNDERSHOCK
-	db 1,CHARM
-	db 6,TAIL_WHIP
-	db 8,THUNDER_WAVE
-	db 11,SWEET_KISS
+	db 1, THUNDERSHOCK
+	db 1, CHARM
+	db 6, TAIL_WHIP
+	db 8, THUNDER_WAVE
+	db 11, SWEET_KISS
 	db 0 ; no more level-up moves
 
 CleffaEvosAttacks:
-	db EVOLVE_HAPPINESS,TR_ANYTIME,CLEFAIRY
+	db EVOLVE_HAPPINESS, TR_ANYTIME, CLEFAIRY
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 1,CHARM
-	db 4,ENCORE
-	db 8,SING
-	db 13,SWEET_KISS
+	db 1, POUND
+	db 1, CHARM
+	db 4, ENCORE
+	db 8, SING
+	db 13, SWEET_KISS
 	db 0 ; no more level-up moves
 
 IgglybuffEvosAttacks:
-	db EVOLVE_HAPPINESS,TR_ANYTIME,JIGGLYPUFF
+	db EVOLVE_HAPPINESS, TR_ANYTIME, JIGGLYPUFF
 	db 0 ; no more evolutions
-	db 1,SING
-	db 1,CHARM
-	db 4,DEFENSE_CURL
-	db 9,POUND
-	db 14,SWEET_KISS
+	db 1, SING
+	db 1, CHARM
+	db 4, DEFENSE_CURL
+	db 9, POUND
+	db 14, SWEET_KISS
 	db 0 ; no more level-up moves
 
 TogepiEvosAttacks:
-	db EVOLVE_HAPPINESS,TR_ANYTIME,TOGETIC
+	db EVOLVE_HAPPINESS, TR_ANYTIME, TOGETIC
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 1,CHARM
-	db 7,METRONOME
-	db 18,SWEET_KISS
-	db 25,ENCORE
-	db 31,SAFEGUARD
-	db 38,DOUBLE_EDGE
+	db 1, GROWL
+	db 1, CHARM
+	db 7, METRONOME
+	db 18, SWEET_KISS
+	db 25, ENCORE
+	db 31, SAFEGUARD
+	db 38, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 TogeticEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 1,CHARM
-	db 7,METRONOME
-	db 18,SWEET_KISS
-	db 25,ENCORE
-	db 31,SAFEGUARD
-	db 38,DOUBLE_EDGE
+	db 1, GROWL
+	db 1, CHARM
+	db 7, METRONOME
+	db 18, SWEET_KISS
+	db 25, ENCORE
+	db 31, SAFEGUARD
+	db 38, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 NatuEvosAttacks:
-	db EVOLVE_LEVEL,25,XATU
+	db EVOLVE_LEVEL, 25, XATU
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,LEER
-	db 10,NIGHT_SHADE
-	db 20,TELEPORT
-	db 30,FUTURE_SIGHT
-	db 40,CONFUSE_RAY
-	db 50,PSYCHIC_M
+	db 1, PECK
+	db 1, LEER
+	db 10, NIGHT_SHADE
+	db 20, TELEPORT
+	db 30, FUTURE_SIGHT
+	db 40, CONFUSE_RAY
+	db 50, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 XatuEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 1,LEER
-	db 1,NIGHT_SHADE
-	db 10,NIGHT_SHADE
-	db 20,TELEPORT
-	db 35,FUTURE_SIGHT
-	db 50,CONFUSE_RAY
-	db 65,PSYCHIC_M
+	db 1, PECK
+	db 1, LEER
+	db 1, NIGHT_SHADE
+	db 10, NIGHT_SHADE
+	db 20, TELEPORT
+	db 35, FUTURE_SIGHT
+	db 50, CONFUSE_RAY
+	db 65, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 MareepEvosAttacks:
-	db EVOLVE_LEVEL,15,FLAAFFY
+	db EVOLVE_LEVEL, 15, FLAAFFY
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 9,THUNDERSHOCK
-	db 16,THUNDER_WAVE
-	db 23,COTTON_SPORE
-	db 30,LIGHT_SCREEN
-	db 37,THUNDER
+	db 1, TACKLE
+	db 1, GROWL
+	db 9, THUNDERSHOCK
+	db 16, THUNDER_WAVE
+	db 23, COTTON_SPORE
+	db 30, LIGHT_SCREEN
+	db 37, THUNDER
 	db 0 ; no more level-up moves
 
 FlaaffyEvosAttacks:
-	db EVOLVE_LEVEL,30,AMPHAROS
+	db EVOLVE_LEVEL, 30, AMPHAROS
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,THUNDERSHOCK
-	db 9,THUNDERSHOCK
-	db 18,THUNDER_WAVE
-	db 27,COTTON_SPORE
-	db 36,LIGHT_SCREEN
-	db 45,THUNDER
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, THUNDERSHOCK
+	db 9, THUNDERSHOCK
+	db 18, THUNDER_WAVE
+	db 27, COTTON_SPORE
+	db 36, LIGHT_SCREEN
+	db 45, THUNDER
 	db 0 ; no more level-up moves
 
 AmpharosEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,THUNDERSHOCK
-	db 1,THUNDER_WAVE
-	db 9,THUNDERSHOCK
-	db 18,THUNDER_WAVE
-	db 27,COTTON_SPORE
-	db 30,THUNDERPUNCH
-	db 42,LIGHT_SCREEN
-	db 57,THUNDER
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, THUNDERSHOCK
+	db 1, THUNDER_WAVE
+	db 9, THUNDERSHOCK
+	db 18, THUNDER_WAVE
+	db 27, COTTON_SPORE
+	db 30, THUNDERPUNCH
+	db 42, LIGHT_SCREEN
+	db 57, THUNDER
 	db 0 ; no more level-up moves
 
 BellossomEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,ABSORB
-	db 1,SWEET_SCENT
-	db 1,STUN_SPORE
-	db 1,PETAL_DANCE
-	db 55,SOLARBEAM
+	db 1, ABSORB
+	db 1, SWEET_SCENT
+	db 1, STUN_SPORE
+	db 1, PETAL_DANCE
+	db 55, SOLARBEAM
 	db 0 ; no more level-up moves
 
 MarillEvosAttacks:
-	db EVOLVE_LEVEL,18,AZUMARILL
+	db EVOLVE_LEVEL, 18, AZUMARILL
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 3,DEFENSE_CURL
-	db 6,TAIL_WHIP
-	db 10,WATER_GUN
-	db 15,ROLLOUT
-	db 21,BUBBLEBEAM
-	db 28,DOUBLE_EDGE
-	db 36,RAIN_DANCE
+	db 1, TACKLE
+	db 3, DEFENSE_CURL
+	db 6, TAIL_WHIP
+	db 10, WATER_GUN
+	db 15, ROLLOUT
+	db 21, BUBBLEBEAM
+	db 28, DOUBLE_EDGE
+	db 36, RAIN_DANCE
 	db 0 ; no more level-up moves
 
 AzumarillEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,DEFENSE_CURL
-	db 1,TAIL_WHIP
-	db 1,WATER_GUN
-	db 3,DEFENSE_CURL
-	db 6,TAIL_WHIP
-	db 10,WATER_GUN
-	db 15,ROLLOUT
-	db 25,BUBBLEBEAM
-	db 36,DOUBLE_EDGE
-	db 48,RAIN_DANCE
+	db 1, TACKLE
+	db 1, DEFENSE_CURL
+	db 1, TAIL_WHIP
+	db 1, WATER_GUN
+	db 3, DEFENSE_CURL
+	db 6, TAIL_WHIP
+	db 10, WATER_GUN
+	db 15, ROLLOUT
+	db 25, BUBBLEBEAM
+	db 36, DOUBLE_EDGE
+	db 48, RAIN_DANCE
 	db 0 ; no more level-up moves
 
 SudowoodoEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,ROCK_THROW
-	db 1,MIMIC
-	db 10,FLAIL
-	db 19,LOW_KICK
-	db 28,ROCK_SLIDE
-	db 37,FAINT_ATTACK
-	db 46,SLAM
+	db 1, ROCK_THROW
+	db 1, MIMIC
+	db 10, FLAIL
+	db 19, LOW_KICK
+	db 28, ROCK_SLIDE
+	db 37, FAINT_ATTACK
+	db 46, SLAM
 	db 0 ; no more level-up moves
 
 PolitoedEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 1,HYPNOSIS
-	db 1,DOUBLESLAP
-	db 1,PERISH_SONG
-	db 35,PERISH_SONG
-	db 51,SWAGGER
+	db 1, WATER_GUN
+	db 1, HYPNOSIS
+	db 1, DOUBLESLAP
+	db 1, PERISH_SONG
+	db 35, PERISH_SONG
+	db 51, SWAGGER
 	db 0 ; no more level-up moves
 
 HoppipEvosAttacks:
-	db EVOLVE_LEVEL,18,SKIPLOOM
+	db EVOLVE_LEVEL, 18, SKIPLOOM
 	db 0 ; no more evolutions
-	db 1,SPLASH
+	db 1, SPLASH
 if _CRYSTAL
-	db 5,SYNTHESIS
+	db 5, SYNTHESIS
 else
-	db 1,SYNTHESIS
+	db 1, SYNTHESIS
 endc
-	db 5,TAIL_WHIP
-	db 10,TACKLE
-	db 13,POISONPOWDER
-	db 15,STUN_SPORE
-	db 17,SLEEP_POWDER
-	db 20,LEECH_SEED
-	db 25,COTTON_SPORE
-	db 30,MEGA_DRAIN
+	db 5, TAIL_WHIP
+	db 10, TACKLE
+	db 13, POISONPOWDER
+	db 15, STUN_SPORE
+	db 17, SLEEP_POWDER
+	db 20, LEECH_SEED
+	db 25, COTTON_SPORE
+	db 30, MEGA_DRAIN
 	db 0 ; no more level-up moves
 
 SkiploomEvosAttacks:
-	db EVOLVE_LEVEL,27,JUMPLUFF
+	db EVOLVE_LEVEL, 27, JUMPLUFF
 	db 0 ; no more evolutions
-	db 1,SPLASH
-	db 1,SYNTHESIS
-	db 1,TAIL_WHIP
-	db 1,TACKLE
+	db 1, SPLASH
+	db 1, SYNTHESIS
+	db 1, TAIL_WHIP
+	db 1, TACKLE
 if _CRYSTAL
-	db 5,SYNTHESIS
+	db 5, SYNTHESIS
 endc
-	db 5,TAIL_WHIP
-	db 10,TACKLE
-	db 13,POISONPOWDER
-	db 15,STUN_SPORE
-	db 17,SLEEP_POWDER
-	db 22,LEECH_SEED
-	db 29,COTTON_SPORE
-	db 36,MEGA_DRAIN
+	db 5, TAIL_WHIP
+	db 10, TACKLE
+	db 13, POISONPOWDER
+	db 15, STUN_SPORE
+	db 17, SLEEP_POWDER
+	db 22, LEECH_SEED
+	db 29, COTTON_SPORE
+	db 36, MEGA_DRAIN
 	db 0 ; no more level-up moves
 
 JumpluffEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SPLASH
-	db 1,SYNTHESIS
-	db 1,TAIL_WHIP
-	db 1,TACKLE
+	db 1, SPLASH
+	db 1, SYNTHESIS
+	db 1, TAIL_WHIP
+	db 1, TACKLE
 if _CRYSTAL
-	db 5,SYNTHESIS
+	db 5, SYNTHESIS
 endc
-	db 5,TAIL_WHIP
-	db 10,TACKLE
-	db 13,POISONPOWDER
-	db 15,STUN_SPORE
-	db 17,SLEEP_POWDER
-	db 22,LEECH_SEED
-	db 33,COTTON_SPORE
-	db 44,MEGA_DRAIN
+	db 5, TAIL_WHIP
+	db 10, TACKLE
+	db 13, POISONPOWDER
+	db 15, STUN_SPORE
+	db 17, SLEEP_POWDER
+	db 22, LEECH_SEED
+	db 33, COTTON_SPORE
+	db 44, MEGA_DRAIN
 	db 0 ; no more level-up moves
 
 AipomEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,TAIL_WHIP
-	db 6,SAND_ATTACK
-	db 12,BATON_PASS
-	db 19,FURY_SWIPES
-	db 27,SWIFT
-	db 36,SCREECH
-	db 46,AGILITY
+	db 1, SCRATCH
+	db 1, TAIL_WHIP
+	db 6, SAND_ATTACK
+	db 12, BATON_PASS
+	db 19, FURY_SWIPES
+	db 27, SWIFT
+	db 36, SCREECH
+	db 46, AGILITY
 	db 0 ; no more level-up moves
 
 SunkernEvosAttacks:
-	db EVOLVE_ITEM,SUN_STONE,SUNFLORA
+	db EVOLVE_ITEM, SUN_STONE, SUNFLORA
 	db 0 ; no more evolutions
-	db 1,ABSORB
-	db 4,GROWTH
-	db 10,MEGA_DRAIN
-	db 19,SUNNY_DAY
-	db 31,SYNTHESIS
-	db 46,GIGA_DRAIN
+	db 1, ABSORB
+	db 4, GROWTH
+	db 10, MEGA_DRAIN
+	db 19, SUNNY_DAY
+	db 31, SYNTHESIS
+	db 46, GIGA_DRAIN
 	db 0 ; no more level-up moves
 
 SunfloraEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,ABSORB
-	db 1,POUND
-	db 4,GROWTH
-	db 10,RAZOR_LEAF
-	db 19,SUNNY_DAY
-	db 31,PETAL_DANCE
-	db 46,SOLARBEAM
+	db 1, ABSORB
+	db 1, POUND
+	db 4, GROWTH
+	db 10, RAZOR_LEAF
+	db 19, SUNNY_DAY
+	db 31, PETAL_DANCE
+	db 46, SOLARBEAM
 	db 0 ; no more level-up moves
 
 YanmaEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,FORESIGHT
-	db 7,QUICK_ATTACK
-	db 13,DOUBLE_TEAM
-	db 19,SONICBOOM
-	db 25,DETECT
-	db 31,SUPERSONIC
+	db 1, TACKLE
+	db 1, FORESIGHT
+	db 7, QUICK_ATTACK
+	db 13, DOUBLE_TEAM
+	db 19, SONICBOOM
+	db 25, DETECT
+	db 31, SUPERSONIC
 if _CRYSTAL
-	db 37,WING_ATTACK
+	db 37, WING_ATTACK
 else
-	db 37,SWIFT
+	db 37, SWIFT
 endc
-	db 43,SCREECH
+	db 43, SCREECH
 	db 0 ; no more level-up moves
 
 WooperEvosAttacks:
-	db EVOLVE_LEVEL,20,QUAGSIRE
+	db EVOLVE_LEVEL, 20, QUAGSIRE
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 1,TAIL_WHIP
-	db 11,SLAM
-	db 21,AMNESIA
-	db 31,EARTHQUAKE
-	db 41,RAIN_DANCE
-	db 51,MIST
-	db 51,HAZE
+	db 1, WATER_GUN
+	db 1, TAIL_WHIP
+	db 11, SLAM
+	db 21, AMNESIA
+	db 31, EARTHQUAKE
+	db 41, RAIN_DANCE
+	db 51, MIST
+	db 51, HAZE
 	db 0 ; no more level-up moves
 
 QuagsireEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 1,TAIL_WHIP
-	db 11,SLAM
-	db 23,AMNESIA
-	db 35,EARTHQUAKE
-	db 47,RAIN_DANCE
-	db 59,MIST
-	db 59,HAZE
+	db 1, WATER_GUN
+	db 1, TAIL_WHIP
+	db 11, SLAM
+	db 23, AMNESIA
+	db 35, EARTHQUAKE
+	db 47, RAIN_DANCE
+	db 59, MIST
+	db 59, HAZE
 	db 0 ; no more level-up moves
 
 EspeonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 8,SAND_ATTACK
-	db 16,CONFUSION
-	db 23,QUICK_ATTACK
-	db 30,SWIFT
-	db 36,PSYBEAM
-	db 42,PSYCH_UP
-	db 47,PSYCHIC_M
-	db 52,MORNING_SUN
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 8, SAND_ATTACK
+	db 16, CONFUSION
+	db 23, QUICK_ATTACK
+	db 30, SWIFT
+	db 36, PSYBEAM
+	db 42, PSYCH_UP
+	db 47, PSYCHIC_M
+	db 52, MORNING_SUN
 	db 0 ; no more level-up moves
 
 UmbreonEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,TAIL_WHIP
-	db 8,SAND_ATTACK
-	db 16,PURSUIT
-	db 23,QUICK_ATTACK
-	db 30,CONFUSE_RAY
-	db 36,FAINT_ATTACK
-	db 42,MEAN_LOOK
-	db 47,SCREECH
-	db 52,MOONLIGHT
+	db 1, TACKLE
+	db 1, TAIL_WHIP
+	db 8, SAND_ATTACK
+	db 16, PURSUIT
+	db 23, QUICK_ATTACK
+	db 30, CONFUSE_RAY
+	db 36, FAINT_ATTACK
+	db 42, MEAN_LOOK
+	db 47, SCREECH
+	db 52, MOONLIGHT
 	db 0 ; no more level-up moves
 
 MurkrowEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PECK
-	db 11,PURSUIT
-	db 16,HAZE
-	db 26,NIGHT_SHADE
-	db 31,FAINT_ATTACK
-	db 41,MEAN_LOOK
+	db 1, PECK
+	db 11, PURSUIT
+	db 16, HAZE
+	db 26, NIGHT_SHADE
+	db 31, FAINT_ATTACK
+	db 41, MEAN_LOOK
 	db 0 ; no more level-up moves
 
 SlowkingEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CURSE
-	db 1,TACKLE
-	db 6,GROWL
-	db 15,WATER_GUN
-	db 20,CONFUSION
-	db 29,DISABLE
-	db 34,HEADBUTT
-	db 43,SWAGGER
-	db 48,PSYCHIC_M
+	db 1, CURSE
+	db 1, TACKLE
+	db 6, GROWL
+	db 15, WATER_GUN
+	db 20, CONFUSION
+	db 29, DISABLE
+	db 34, HEADBUTT
+	db 43, SWAGGER
+	db 48, PSYCHIC_M
 	db 0 ; no more level-up moves
 
 MisdreavusEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,GROWL
-	db 1,PSYWAVE
-	db 6,SPITE
-	db 12,CONFUSE_RAY
-	db 19,MEAN_LOOK
-	db 27,PSYBEAM
-	db 36,PAIN_SPLIT
-	db 46,PERISH_SONG
+	db 1, GROWL
+	db 1, PSYWAVE
+	db 6, SPITE
+	db 12, CONFUSE_RAY
+	db 19, MEAN_LOOK
+	db 27, PSYBEAM
+	db 36, PAIN_SPLIT
+	db 46, PERISH_SONG
 	db 0 ; no more level-up moves
 
 UnownEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,HIDDEN_POWER
+	db 1, HIDDEN_POWER
 	db 0 ; no more level-up moves
 
 WobbuffetEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,COUNTER
-	db 1,MIRROR_COAT
-	db 1,SAFEGUARD
-	db 1,DESTINY_BOND
+	db 1, COUNTER
+	db 1, MIRROR_COAT
+	db 1, SAFEGUARD
+	db 1, DESTINY_BOND
 	db 0 ; no more level-up moves
 
 GirafarigEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 1,CONFUSION
-	db 1,STOMP
-	db 7,CONFUSION
-	db 13,STOMP
-	db 20,AGILITY
-	db 30,BATON_PASS
-	db 41,PSYBEAM
-	db 54,CRUNCH
+	db 1, TACKLE
+	db 1, GROWL
+	db 1, CONFUSION
+	db 1, STOMP
+	db 7, CONFUSION
+	db 13, STOMP
+	db 20, AGILITY
+	db 30, BATON_PASS
+	db 41, PSYBEAM
+	db 54, CRUNCH
 	db 0 ; no more level-up moves
 
 PinecoEvosAttacks:
-	db EVOLVE_LEVEL,31,FORRETRESS
+	db EVOLVE_LEVEL, 31, FORRETRESS
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,PROTECT
-	db 8,SELFDESTRUCT
-	db 15,TAKE_DOWN
-	db 22,RAPID_SPIN
-	db 29,BIDE
-	db 36,EXPLOSION
-	db 43,SPIKES
-	db 50,DOUBLE_EDGE
+	db 1, TACKLE
+	db 1, PROTECT
+	db 8, SELFDESTRUCT
+	db 15, TAKE_DOWN
+	db 22, RAPID_SPIN
+	db 29, BIDE
+	db 36, EXPLOSION
+	db 43, SPIKES
+	db 50, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 ForretressEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,PROTECT
-	db 1,SELFDESTRUCT
-	db 8,SELFDESTRUCT
-	db 15,TAKE_DOWN
-	db 22,RAPID_SPIN
-	db 29,BIDE
-	db 39,EXPLOSION
-	db 49,SPIKES
-	db 59,DOUBLE_EDGE
+	db 1, TACKLE
+	db 1, PROTECT
+	db 1, SELFDESTRUCT
+	db 8, SELFDESTRUCT
+	db 15, TAKE_DOWN
+	db 22, RAPID_SPIN
+	db 29, BIDE
+	db 39, EXPLOSION
+	db 49, SPIKES
+	db 59, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 DunsparceEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,RAGE
-	db 5,DEFENSE_CURL
-	db 13,GLARE
-	db 18,SPITE
-	db 26,PURSUIT
-	db 30,SCREECH
-	db 38,TAKE_DOWN
+	db 1, RAGE
+	db 5, DEFENSE_CURL
+	db 13, GLARE
+	db 18, SPITE
+	db 26, PURSUIT
+	db 30, SCREECH
+	db 38, TAKE_DOWN
 	db 0 ; no more level-up moves
 
 GligarEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POISON_STING
-	db 6,SAND_ATTACK
-	db 13,HARDEN
-	db 20,QUICK_ATTACK
-	db 28,FAINT_ATTACK
-	db 36,SLASH
-	db 44,SCREECH
-	db 52,GUILLOTINE
+	db 1, POISON_STING
+	db 6, SAND_ATTACK
+	db 13, HARDEN
+	db 20, QUICK_ATTACK
+	db 28, FAINT_ATTACK
+	db 36, SLASH
+	db 44, SCREECH
+	db 52, GUILLOTINE
 	db 0 ; no more level-up moves
 
 SteelixEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SCREECH
-	db 10,BIND
-	db 14,ROCK_THROW
-	db 23,HARDEN
-	db 27,RAGE
-	db 36,SANDSTORM
-	db 40,SLAM
-	db 49,CRUNCH
+	db 1, TACKLE
+	db 1, SCREECH
+	db 10, BIND
+	db 14, ROCK_THROW
+	db 23, HARDEN
+	db 27, RAGE
+	db 36, SANDSTORM
+	db 40, SLAM
+	db 49, CRUNCH
 	db 0 ; no more level-up moves
 
 SnubbullEvosAttacks:
-	db EVOLVE_LEVEL,23,GRANBULL
+	db EVOLVE_LEVEL, 23, GRANBULL
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SCARY_FACE
-	db 4,TAIL_WHIP
-	db 8,CHARM
-	db 13,BITE
-	db 19,LICK
-	db 26,ROAR
-	db 34,RAGE
-	db 43,TAKE_DOWN
+	db 1, TACKLE
+	db 1, SCARY_FACE
+	db 4, TAIL_WHIP
+	db 8, CHARM
+	db 13, BITE
+	db 19, LICK
+	db 26, ROAR
+	db 34, RAGE
+	db 43, TAKE_DOWN
 	db 0 ; no more level-up moves
 
 GranbullEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,SCARY_FACE
-	db 4,TAIL_WHIP
-	db 8,CHARM
-	db 13,BITE
-	db 19,LICK
-	db 28,ROAR
-	db 38,RAGE
-	db 51,TAKE_DOWN
+	db 1, TACKLE
+	db 1, SCARY_FACE
+	db 4, TAIL_WHIP
+	db 8, CHARM
+	db 13, BITE
+	db 19, LICK
+	db 28, ROAR
+	db 38, RAGE
+	db 51, TAKE_DOWN
 	db 0 ; no more level-up moves
 
 QwilfishEvosAttacks:
 	db 0 ; no more evolutions
 if _CRYSTAL
-	db 1,SPIKES
+	db 1, SPIKES
 endc
-	db 1,TACKLE
-	db 1,POISON_STING
-	db 10,HARDEN
-	db 10,MINIMIZE
-	db 19,WATER_GUN
-	db 28,PIN_MISSILE
-	db 37,TAKE_DOWN
-	db 46,HYDRO_PUMP
+	db 1, TACKLE
+	db 1, POISON_STING
+	db 10, HARDEN
+	db 10, MINIMIZE
+	db 19, WATER_GUN
+	db 28, PIN_MISSILE
+	db 37, TAKE_DOWN
+	db 46, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 ScizorEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,QUICK_ATTACK
-	db 1,LEER
-	db 6,FOCUS_ENERGY
-	db 12,PURSUIT
-	db 18,FALSE_SWIPE
-	db 24,AGILITY
-	db 30,METAL_CLAW
-	db 36,SLASH
-	db 42,SWORDS_DANCE
-	db 48,DOUBLE_TEAM
+	db 1, QUICK_ATTACK
+	db 1, LEER
+	db 6, FOCUS_ENERGY
+	db 12, PURSUIT
+	db 18, FALSE_SWIPE
+	db 24, AGILITY
+	db 30, METAL_CLAW
+	db 36, SLASH
+	db 42, SWORDS_DANCE
+	db 48, DOUBLE_TEAM
 	db 0 ; no more level-up moves
 
 ShuckleEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CONSTRICT
-	db 1,WITHDRAW
-	db 9,WRAP
-	db 14,ENCORE
-	db 23,SAFEGUARD
-	db 28,BIDE
-	db 37,REST
+	db 1, CONSTRICT
+	db 1, WITHDRAW
+	db 9, WRAP
+	db 14, ENCORE
+	db 23, SAFEGUARD
+	db 28, BIDE
+	db 37, REST
 	db 0 ; no more level-up moves
 
 HeracrossEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,LEER
-	db 6,HORN_ATTACK
-	db 12,ENDURE
-	db 19,FURY_ATTACK
-	db 27,COUNTER
-	db 35,TAKE_DOWN
-	db 44,REVERSAL
-	db 54,MEGAHORN
+	db 1, TACKLE
+	db 1, LEER
+	db 6, HORN_ATTACK
+	db 12, ENDURE
+	db 19, FURY_ATTACK
+	db 27, COUNTER
+	db 35, TAKE_DOWN
+	db 44, REVERSAL
+	db 54, MEGAHORN
 	db 0 ; no more level-up moves
 
 SneaselEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 9,QUICK_ATTACK
-	db 17,SCREECH
-	db 25,FAINT_ATTACK
-	db 33,FURY_SWIPES
-	db 41,AGILITY
-	db 49,SLASH
-	db 57,BEAT_UP
+	db 1, SCRATCH
+	db 1, LEER
+	db 9, QUICK_ATTACK
+	db 17, SCREECH
+	db 25, FAINT_ATTACK
+	db 33, FURY_SWIPES
+	db 41, AGILITY
+	db 49, SLASH
+	db 57, BEAT_UP
 if _CRYSTAL
-	db 65,METAL_CLAW
+	db 65, METAL_CLAW
 endc
 	db 0 ; no more level-up moves
 
 TeddiursaEvosAttacks:
-	db EVOLVE_LEVEL,30,URSARING
+	db EVOLVE_LEVEL, 30, URSARING
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 8,LICK
-	db 15,FURY_SWIPES
-	db 22,FAINT_ATTACK
-	db 29,REST
-	db 36,SLASH
-	db 43,SNORE
-	db 50,THRASH
+	db 1, SCRATCH
+	db 1, LEER
+	db 8, LICK
+	db 15, FURY_SWIPES
+	db 22, FAINT_ATTACK
+	db 29, REST
+	db 36, SLASH
+	db 43, SNORE
+	db 50, THRASH
 	db 0 ; no more level-up moves
 
 UrsaringEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SCRATCH
-	db 1,LEER
-	db 1,LICK
-	db 1,FURY_SWIPES
-	db 8,LICK
-	db 15,FURY_SWIPES
-	db 22,FAINT_ATTACK
-	db 29,REST
-	db 39,SLASH
-	db 49,SNORE
-	db 59,THRASH
+	db 1, SCRATCH
+	db 1, LEER
+	db 1, LICK
+	db 1, FURY_SWIPES
+	db 8, LICK
+	db 15, FURY_SWIPES
+	db 22, FAINT_ATTACK
+	db 29, REST
+	db 39, SLASH
+	db 49, SNORE
+	db 59, THRASH
 	db 0 ; no more level-up moves
 
 SlugmaEvosAttacks:
-	db EVOLVE_LEVEL,38,MAGCARGO
+	db EVOLVE_LEVEL, 38, MAGCARGO
 	db 0 ; no more evolutions
-	db 1,SMOG
-	db 8,EMBER
-	db 15,ROCK_THROW
-	db 22,HARDEN
-	db 29,AMNESIA
-	db 36,FLAMETHROWER
-	db 43,ROCK_SLIDE
-	db 50,BODY_SLAM
+	db 1, SMOG
+	db 8, EMBER
+	db 15, ROCK_THROW
+	db 22, HARDEN
+	db 29, AMNESIA
+	db 36, FLAMETHROWER
+	db 43, ROCK_SLIDE
+	db 50, BODY_SLAM
 	db 0 ; no more level-up moves
 
 MagcargoEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SMOG
-	db 1,EMBER
-	db 1,ROCK_THROW
-	db 8,EMBER
-	db 15,ROCK_THROW
-	db 22,HARDEN
-	db 29,AMNESIA
-	db 36,FLAMETHROWER
-	db 48,ROCK_SLIDE
-	db 60,BODY_SLAM
+	db 1, SMOG
+	db 1, EMBER
+	db 1, ROCK_THROW
+	db 8, EMBER
+	db 15, ROCK_THROW
+	db 22, HARDEN
+	db 29, AMNESIA
+	db 36, FLAMETHROWER
+	db 48, ROCK_SLIDE
+	db 60, BODY_SLAM
 	db 0 ; no more level-up moves
 
 SwinubEvosAttacks:
-	db EVOLVE_LEVEL,33,PILOSWINE
+	db EVOLVE_LEVEL, 33, PILOSWINE
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 10,POWDER_SNOW
-	db 19,ENDURE
-	db 28,TAKE_DOWN
-	db 37,MIST
-	db 46,BLIZZARD
+	db 1, TACKLE
+	db 10, POWDER_SNOW
+	db 19, ENDURE
+	db 28, TAKE_DOWN
+	db 37, MIST
+	db 46, BLIZZARD
 if _CRYSTAL
-	db 55,AMNESIA
+	db 55, AMNESIA
 endc
 	db 0 ; no more level-up moves
 
 PiloswineEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,HORN_ATTACK
-	db 1,POWDER_SNOW
-	db 1,ENDURE
-	db 10,POWDER_SNOW
-	db 19,ENDURE
-	db 28,TAKE_DOWN
-	db 33,FURY_ATTACK
-	db 42,MIST
-	db 56,BLIZZARD
+	db 1, HORN_ATTACK
+	db 1, POWDER_SNOW
+	db 1, ENDURE
+	db 10, POWDER_SNOW
+	db 19, ENDURE
+	db 28, TAKE_DOWN
+	db 33, FURY_ATTACK
+	db 42, MIST
+	db 56, BLIZZARD
 if _CRYSTAL
-	db 70,AMNESIA
+	db 70, AMNESIA
 endc
 	db 0 ; no more level-up moves
 
 CorsolaEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 7,HARDEN
-	db 13,BUBBLE
-	db 19,RECOVER
-	db 25,BUBBLEBEAM
-	db 31,SPIKE_CANNON
-	db 37,MIRROR_COAT
-	db 43,ANCIENTPOWER
+	db 1, TACKLE
+	db 7, HARDEN
+	db 13, BUBBLE
+	db 19, RECOVER
+	db 25, BUBBLEBEAM
+	db 31, SPIKE_CANNON
+	db 37, MIRROR_COAT
+	db 43, ANCIENTPOWER
 	db 0 ; no more level-up moves
 
 RemoraidEvosAttacks:
-	db EVOLVE_LEVEL,25,OCTILLERY
+	db EVOLVE_LEVEL, 25, OCTILLERY
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 11,LOCK_ON
-	db 22,PSYBEAM
-	db 22,AURORA_BEAM
-	db 22,BUBBLEBEAM
-	db 33,FOCUS_ENERGY
-	db 44,ICE_BEAM
-	db 55,HYPER_BEAM
+	db 1, WATER_GUN
+	db 11, LOCK_ON
+	db 22, PSYBEAM
+	db 22, AURORA_BEAM
+	db 22, BUBBLEBEAM
+	db 33, FOCUS_ENERGY
+	db 44, ICE_BEAM
+	db 55, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 OctilleryEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,WATER_GUN
-	db 11,CONSTRICT
-	db 22,PSYBEAM
-	db 22,AURORA_BEAM
-	db 22,BUBBLEBEAM
-	db 25,OCTAZOOKA
-	db 38,FOCUS_ENERGY
-	db 54,ICE_BEAM
-	db 70,HYPER_BEAM
+	db 1, WATER_GUN
+	db 11, CONSTRICT
+	db 22, PSYBEAM
+	db 22, AURORA_BEAM
+	db 22, BUBBLEBEAM
+	db 25, OCTAZOOKA
+	db 38, FOCUS_ENERGY
+	db 54, ICE_BEAM
+	db 70, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 DelibirdEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,PRESENT
+	db 1, PRESENT
 	db 0 ; no more level-up moves
 
 MantineEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,BUBBLE
-	db 10,SUPERSONIC
-	db 18,BUBBLEBEAM
-	db 25,TAKE_DOWN
-	db 32,AGILITY
-	db 40,WING_ATTACK
-	db 49,CONFUSE_RAY
+	db 1, TACKLE
+	db 1, BUBBLE
+	db 10, SUPERSONIC
+	db 18, BUBBLEBEAM
+	db 25, TAKE_DOWN
+	db 32, AGILITY
+	db 40, WING_ATTACK
+	db 49, CONFUSE_RAY
 	db 0 ; no more level-up moves
 
 SkarmoryEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,LEER
-	db 1,PECK
-	db 13,SAND_ATTACK
-	db 19,SWIFT
-	db 25,AGILITY
-	db 37,FURY_ATTACK
-	db 49,STEEL_WING
+	db 1, LEER
+	db 1, PECK
+	db 13, SAND_ATTACK
+	db 19, SWIFT
+	db 25, AGILITY
+	db 37, FURY_ATTACK
+	db 49, STEEL_WING
 	db 0 ; no more level-up moves
 
 HoundourEvosAttacks:
-	db EVOLVE_LEVEL,24,HOUNDOOM
+	db EVOLVE_LEVEL, 24, HOUNDOOM
 	db 0 ; no more evolutions
-	db 1,LEER
-	db 1,EMBER
-	db 7,ROAR
-	db 13,SMOG
-	db 20,BITE
-	db 27,FAINT_ATTACK
-	db 35,FLAMETHROWER
-	db 43,CRUNCH
+	db 1, LEER
+	db 1, EMBER
+	db 7, ROAR
+	db 13, SMOG
+	db 20, BITE
+	db 27, FAINT_ATTACK
+	db 35, FLAMETHROWER
+	db 43, CRUNCH
 	db 0 ; no more level-up moves
 
 HoundoomEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,LEER
-	db 1,EMBER
-	db 7,ROAR
-	db 13,SMOG
-	db 20,BITE
-	db 30,FAINT_ATTACK
-	db 41,FLAMETHROWER
-	db 52,CRUNCH
+	db 1, LEER
+	db 1, EMBER
+	db 7, ROAR
+	db 13, SMOG
+	db 20, BITE
+	db 30, FAINT_ATTACK
+	db 41, FLAMETHROWER
+	db 52, CRUNCH
 	db 0 ; no more level-up moves
 
 KingdraEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BUBBLE
-	db 1,SMOKESCREEN
-	db 1,LEER
-	db 1,WATER_GUN
-	db 8,SMOKESCREEN
-	db 15,LEER
-	db 22,WATER_GUN
-	db 29,TWISTER
-	db 40,AGILITY
-	db 51,HYDRO_PUMP
+	db 1, BUBBLE
+	db 1, SMOKESCREEN
+	db 1, LEER
+	db 1, WATER_GUN
+	db 8, SMOKESCREEN
+	db 15, LEER
+	db 22, WATER_GUN
+	db 29, TWISTER
+	db 40, AGILITY
+	db 51, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 PhanpyEvosAttacks:
-	db EVOLVE_LEVEL,25,DONPHAN
+	db EVOLVE_LEVEL, 25, DONPHAN
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 1,GROWL
-	db 9,DEFENSE_CURL
-	db 17,FLAIL
-	db 25,TAKE_DOWN
-	db 33,ROLLOUT
-	db 41,ENDURE
-	db 49,DOUBLE_EDGE
+	db 1, TACKLE
+	db 1, GROWL
+	db 9, DEFENSE_CURL
+	db 17, FLAIL
+	db 25, TAKE_DOWN
+	db 33, ROLLOUT
+	db 41, ENDURE
+	db 49, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 DonphanEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,HORN_ATTACK
-	db 1,GROWL
-	db 9,DEFENSE_CURL
-	db 17,FLAIL
-	db 25,FURY_ATTACK
-	db 33,ROLLOUT
-	db 41,RAPID_SPIN
-	db 49,EARTHQUAKE
+	db 1, HORN_ATTACK
+	db 1, GROWL
+	db 9, DEFENSE_CURL
+	db 17, FLAIL
+	db 25, FURY_ATTACK
+	db 33, ROLLOUT
+	db 41, RAPID_SPIN
+	db 49, EARTHQUAKE
 	db 0 ; no more level-up moves
 
 Porygon2EvosAttacks:
 	db 0 ; no more evolutions
-	db 1,CONVERSION2
-	db 1,TACKLE
-	db 1,CONVERSION
-	db 9,AGILITY
-	db 12,PSYBEAM
-	db 20,RECOVER
-	db 24,DEFENSE_CURL
-	db 32,LOCK_ON
-	db 36,TRI_ATTACK
-	db 44,ZAP_CANNON
+	db 1, CONVERSION2
+	db 1, TACKLE
+	db 1, CONVERSION
+	db 9, AGILITY
+	db 12, PSYBEAM
+	db 20, RECOVER
+	db 24, DEFENSE_CURL
+	db 32, LOCK_ON
+	db 36, TRI_ATTACK
+	db 44, ZAP_CANNON
 	db 0 ; no more level-up moves
 
 StantlerEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 8,LEER
-	db 15,HYPNOSIS
-	db 23,STOMP
-	db 31,SAND_ATTACK
-	db 40,TAKE_DOWN
-	db 49,CONFUSE_RAY
+	db 1, TACKLE
+	db 8, LEER
+	db 15, HYPNOSIS
+	db 23, STOMP
+	db 31, SAND_ATTACK
+	db 40, TAKE_DOWN
+	db 49, CONFUSE_RAY
 	db 0 ; no more level-up moves
 
 SmeargleEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SKETCH
-	db 11,SKETCH
-	db 21,SKETCH
-	db 31,SKETCH
-	db 41,SKETCH
-	db 51,SKETCH
-	db 61,SKETCH
-	db 71,SKETCH
-	db 81,SKETCH
-	db 91,SKETCH
+	db 1, SKETCH
+	db 11, SKETCH
+	db 21, SKETCH
+	db 31, SKETCH
+	db 41, SKETCH
+	db 51, SKETCH
+	db 61, SKETCH
+	db 71, SKETCH
+	db 81, SKETCH
+	db 91, SKETCH
 	db 0 ; no more level-up moves
 
 TyrogueEvosAttacks:
-	db EVOLVE_STAT,20,ATK_LT_DEF,HITMONCHAN
-	db EVOLVE_STAT,20,ATK_GT_DEF,HITMONLEE
-	db EVOLVE_STAT,20,ATK_EQ_DEF,HITMONTOP
+	db EVOLVE_STAT, 20, ATK_LT_DEF, HITMONCHAN
+	db EVOLVE_STAT, 20, ATK_GT_DEF, HITMONLEE
+	db EVOLVE_STAT, 20, ATK_EQ_DEF, HITMONTOP
 	db 0 ; no more evolutions
-	db 1,TACKLE
+	db 1, TACKLE
 	db 0 ; no more level-up moves
 
 HitmontopEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,ROLLING_KICK
-	db 7,FOCUS_ENERGY
-	db 13,PURSUIT
-	db 19,QUICK_ATTACK
-	db 25,RAPID_SPIN
-	db 31,COUNTER
-	db 37,AGILITY
-	db 43,DETECT
-	db 49,TRIPLE_KICK
+	db 1, ROLLING_KICK
+	db 7, FOCUS_ENERGY
+	db 13, PURSUIT
+	db 19, QUICK_ATTACK
+	db 25, RAPID_SPIN
+	db 31, COUNTER
+	db 37, AGILITY
+	db 43, DETECT
+	db 49, TRIPLE_KICK
 	db 0 ; no more level-up moves
 
 SmoochumEvosAttacks:
-	db EVOLVE_LEVEL,30,JYNX
+	db EVOLVE_LEVEL, 30, JYNX
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 1,LICK
-	db 9,SWEET_KISS
-	db 13,POWDER_SNOW
-	db 21,CONFUSION
-	db 25,SING
-	db 33,MEAN_LOOK
-	db 37,PSYCHIC_M
-	db 45,PERISH_SONG
-	db 49,BLIZZARD
+	db 1, POUND
+	db 1, LICK
+	db 9, SWEET_KISS
+	db 13, POWDER_SNOW
+	db 21, CONFUSION
+	db 25, SING
+	db 33, MEAN_LOOK
+	db 37, PSYCHIC_M
+	db 45, PERISH_SONG
+	db 49, BLIZZARD
 	db 0 ; no more level-up moves
 
 ElekidEvosAttacks:
-	db EVOLVE_LEVEL,30,ELECTABUZZ
+	db EVOLVE_LEVEL, 30, ELECTABUZZ
 	db 0 ; no more evolutions
-	db 1,QUICK_ATTACK
-	db 1,LEER
-	db 9,THUNDERPUNCH
-	db 17,LIGHT_SCREEN
-	db 25,SWIFT
-	db 33,SCREECH
-	db 41,THUNDERBOLT
-	db 49,THUNDER
+	db 1, QUICK_ATTACK
+	db 1, LEER
+	db 9, THUNDERPUNCH
+	db 17, LIGHT_SCREEN
+	db 25, SWIFT
+	db 33, SCREECH
+	db 41, THUNDERBOLT
+	db 49, THUNDER
 	db 0 ; no more level-up moves
 
 MagbyEvosAttacks:
-	db EVOLVE_LEVEL,30,MAGMAR
+	db EVOLVE_LEVEL, 30, MAGMAR
 	db 0 ; no more evolutions
-	db 1,EMBER
-	db 7,LEER
-	db 13,SMOG
-	db 19,FIRE_PUNCH
-	db 25,SMOKESCREEN
-	db 31,SUNNY_DAY
-	db 37,FLAMETHROWER
-	db 43,CONFUSE_RAY
-	db 49,FIRE_BLAST
+	db 1, EMBER
+	db 7, LEER
+	db 13, SMOG
+	db 19, FIRE_PUNCH
+	db 25, SMOKESCREEN
+	db 31, SUNNY_DAY
+	db 37, FLAMETHROWER
+	db 43, CONFUSE_RAY
+	db 49, FIRE_BLAST
 	db 0 ; no more level-up moves
 
 MiltankEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,TACKLE
-	db 4,GROWL
-	db 8,DEFENSE_CURL
-	db 13,STOMP
-	db 19,MILK_DRINK
-	db 26,BIDE
-	db 34,ROLLOUT
-	db 43,BODY_SLAM
-	db 53,HEAL_BELL
+	db 1, TACKLE
+	db 4, GROWL
+	db 8, DEFENSE_CURL
+	db 13, STOMP
+	db 19, MILK_DRINK
+	db 26, BIDE
+	db 34, ROLLOUT
+	db 43, BODY_SLAM
+	db 53, HEAL_BELL
 	db 0 ; no more level-up moves
 
 BlisseyEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,POUND
-	db 4,GROWL
-	db 7,TAIL_WHIP
-	db 10,SOFTBOILED
-	db 13,DOUBLESLAP
-	db 18,MINIMIZE
-	db 23,SING
-	db 28,EGG_BOMB
-	db 33,DEFENSE_CURL
-	db 40,LIGHT_SCREEN
-	db 47,DOUBLE_EDGE
+	db 1, POUND
+	db 4, GROWL
+	db 7, TAIL_WHIP
+	db 10, SOFTBOILED
+	db 13, DOUBLESLAP
+	db 18, MINIMIZE
+	db 23, SING
+	db 28, EGG_BOMB
+	db 33, DEFENSE_CURL
+	db 40, LIGHT_SCREEN
+	db 47, DOUBLE_EDGE
 	db 0 ; no more level-up moves
 
 RaikouEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,LEER
-	db 11,THUNDERSHOCK
-	db 21,ROAR
-	db 31,QUICK_ATTACK
-	db 41,SPARK
-	db 51,REFLECT
-	db 61,CRUNCH
-	db 71,THUNDER
+	db 1, BITE
+	db 1, LEER
+	db 11, THUNDERSHOCK
+	db 21, ROAR
+	db 31, QUICK_ATTACK
+	db 41, SPARK
+	db 51, REFLECT
+	db 61, CRUNCH
+	db 71, THUNDER
 	db 0 ; no more level-up moves
 
 EnteiEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,LEER
-	db 11,EMBER
-	db 21,ROAR
-	db 31,FIRE_SPIN
-	db 41,STOMP
-	db 51,FLAMETHROWER
-	db 61,SWAGGER
-	db 71,FIRE_BLAST
+	db 1, BITE
+	db 1, LEER
+	db 11, EMBER
+	db 21, ROAR
+	db 31, FIRE_SPIN
+	db 41, STOMP
+	db 51, FLAMETHROWER
+	db 61, SWAGGER
+	db 71, FIRE_BLAST
 	db 0 ; no more level-up moves
 
 SuicuneEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,LEER
+	db 1, BITE
+	db 1, LEER
 if _CRYSTAL
-	db 11,BUBBLEBEAM
-	db 21,RAIN_DANCE
-	db 31,GUST
-	db 41,AURORA_BEAM
+	db 11, BUBBLEBEAM
+	db 21, RAIN_DANCE
+	db 31, GUST
+	db 41, AURORA_BEAM
 else
-	db 11,WATER_GUN
-	db 21,ROAR
-	db 31,GUST
-	db 41,BUBBLEBEAM
+	db 11, WATER_GUN
+	db 21, ROAR
+	db 31, GUST
+	db 41, BUBBLEBEAM
 endc
-	db 51,MIST
-	db 61,MIRROR_COAT
-	db 71,HYDRO_PUMP
+	db 51, MIST
+	db 61, MIRROR_COAT
+	db 71, HYDRO_PUMP
 	db 0 ; no more level-up moves
 
 LarvitarEvosAttacks:
-	db EVOLVE_LEVEL,30,PUPITAR
+	db EVOLVE_LEVEL, 30, PUPITAR
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,LEER
-	db 8,SANDSTORM
-	db 15,SCREECH
-	db 22,ROCK_SLIDE
-	db 29,THRASH
-	db 36,SCARY_FACE
-	db 43,CRUNCH
-	db 50,EARTHQUAKE
-	db 57,HYPER_BEAM
+	db 1, BITE
+	db 1, LEER
+	db 8, SANDSTORM
+	db 15, SCREECH
+	db 22, ROCK_SLIDE
+	db 29, THRASH
+	db 36, SCARY_FACE
+	db 43, CRUNCH
+	db 50, EARTHQUAKE
+	db 57, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 PupitarEvosAttacks:
-	db EVOLVE_LEVEL,55,TYRANITAR
+	db EVOLVE_LEVEL, 55, TYRANITAR
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,LEER
-	db 1,SANDSTORM
-	db 1,SCREECH
-	db 8,SANDSTORM
-	db 15,SCREECH
-	db 22,ROCK_SLIDE
-	db 29,THRASH
-	db 38,SCARY_FACE
-	db 47,CRUNCH
-	db 56,EARTHQUAKE
-	db 65,HYPER_BEAM
+	db 1, BITE
+	db 1, LEER
+	db 1, SANDSTORM
+	db 1, SCREECH
+	db 8, SANDSTORM
+	db 15, SCREECH
+	db 22, ROCK_SLIDE
+	db 29, THRASH
+	db 38, SCARY_FACE
+	db 47, CRUNCH
+	db 56, EARTHQUAKE
+	db 65, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 TyranitarEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,BITE
-	db 1,LEER
-	db 1,SANDSTORM
-	db 1,SCREECH
-	db 8,SANDSTORM
-	db 15,SCREECH
-	db 22,ROCK_SLIDE
-	db 29,THRASH
-	db 38,SCARY_FACE
-	db 47,CRUNCH
-	db 61,EARTHQUAKE
-	db 75,HYPER_BEAM
+	db 1, BITE
+	db 1, LEER
+	db 1, SANDSTORM
+	db 1, SCREECH
+	db 8, SANDSTORM
+	db 15, SCREECH
+	db 22, ROCK_SLIDE
+	db 29, THRASH
+	db 38, SCARY_FACE
+	db 47, CRUNCH
+	db 61, EARTHQUAKE
+	db 75, HYPER_BEAM
 	db 0 ; no more level-up moves
 
 LugiaEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,AEROBLAST
-	db 11,SAFEGUARD
-	db 22,GUST
-	db 33,RECOVER
-	db 44,HYDRO_PUMP
-	db 55,RAIN_DANCE
-	db 66,SWIFT
-	db 77,WHIRLWIND
-	db 88,ANCIENTPOWER
-	db 99,FUTURE_SIGHT
+	db 1, AEROBLAST
+	db 11, SAFEGUARD
+	db 22, GUST
+	db 33, RECOVER
+	db 44, HYDRO_PUMP
+	db 55, RAIN_DANCE
+	db 66, SWIFT
+	db 77, WHIRLWIND
+	db 88, ANCIENTPOWER
+	db 99, FUTURE_SIGHT
 	db 0 ; no more level-up moves
 
 HoOhEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,SACRED_FIRE
-	db 11,SAFEGUARD
-	db 22,GUST
-	db 33,RECOVER
-	db 44,FIRE_BLAST
-	db 55,SUNNY_DAY
-	db 66,SWIFT
-	db 77,WHIRLWIND
-	db 88,ANCIENTPOWER
-	db 99,FUTURE_SIGHT
+	db 1, SACRED_FIRE
+	db 11, SAFEGUARD
+	db 22, GUST
+	db 33, RECOVER
+	db 44, FIRE_BLAST
+	db 55, SUNNY_DAY
+	db 66, SWIFT
+	db 77, WHIRLWIND
+	db 88, ANCIENTPOWER
+	db 99, FUTURE_SIGHT
 	db 0 ; no more level-up moves
 
 CelebiEvosAttacks:
 	db 0 ; no more evolutions
-	db 1,LEECH_SEED
-	db 1,CONFUSION
-	db 1,RECOVER
-	db 1,HEAL_BELL
-	db 10,SAFEGUARD
-	db 20,ANCIENTPOWER
-	db 30,FUTURE_SIGHT
-	db 40,BATON_PASS
-	db 50,PERISH_SONG
+	db 1, LEECH_SEED
+	db 1, CONFUSION
+	db 1, RECOVER
+	db 1, HEAL_BELL
+	db 10, SAFEGUARD
+	db 20, ANCIENTPOWER
+	db 30, FUTURE_SIGHT
+	db 40, BATON_PASS
+	db 50, PERISH_SONG
 	db 0 ; no more level-up moves
--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -44,7 +44,7 @@
 	call AddNTimes
 
 	ld de, OddEggSpecies
-	ld bc, party_struct_length + 2 * PKMN_NAME_LENGTH
+	ld bc, PARTYMON_STRUCT_LENGTH + 2 * PKMN_NAME_LENGTH
 	call CopyBytes
 
 	ld a, EGG_TICKET
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -26,7 +26,7 @@
 	ld a, $5
 	ld [rSVBK], a
 
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld bc, $0040
 	xor a
 	call ByteFill
@@ -254,7 +254,7 @@
 	call StartTrainerBattle_NextScene
 	xor a
 	ld [wcf64], a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 StartTrainerBattle_Flash: ; 8c3ab (23:43ab)
@@ -309,10 +309,10 @@
 StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8)
 	callba Function5602
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	ld a, $43
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	xor a
 	ld [hLCDStatCustom + 1], a
 	ld a, $90
@@ -365,7 +365,7 @@
 StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d)
 	callba Function5602
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	xor a
 	ld [wcf64], a
@@ -386,7 +386,7 @@
 
 StartTrainerBattle_SpinToBlack: ; 8c44f (23:444f)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, [wcf64]
 	ld e, a
 	ld d, 0
@@ -400,7 +400,7 @@
 	ld [wcf65], a
 	call .load
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call DelayFrame
 	call DelayFrame
 	ld hl, wcf64
@@ -409,12 +409,12 @@
 
 .end
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call DelayFrame
 	call DelayFrame
 	call DelayFrame
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $20
 	ld [wJumptableIndex], a
 	ret
@@ -508,12 +508,12 @@
 StartTrainerBattle_SetUpForRandomScatterOutro: ; 8c578 (23:4578)
 	callba Function5602
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	ld a, $10
 	ld [wcf64], a
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 StartTrainerBattle_SpeckleToBlack: ; 8c58f (23:458f)
@@ -533,12 +533,12 @@
 
 .done
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call DelayFrame
 	call DelayFrame
 	call DelayFrame
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $20
 	ld [wJumptableIndex], a
 	ret
@@ -580,7 +580,7 @@
 	jp z, .nextscene
 
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	hlcoord 0, 0, AttrMap
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	inc b
@@ -636,11 +636,11 @@
 	dec b
 	jr nz, .loop2
 
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	jr nz, .cgb
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call DelayFrame
 	call DelayFrame
 	jr .nextscene
@@ -653,13 +653,13 @@
 	jr nz, .daytime
 	ld hl, .nightpals
 .daytime
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5 ; WRAM5 = palettes
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	call .copypals
 	push hl
-	ld de, Unkn1Pals + 8 * 7
+	ld de, wMapPals + 8 * 7
 	ld bc, $8
 	call CopyBytes
 	pop hl
@@ -667,9 +667,9 @@
 	ld bc, $8
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	call DelayFrame
 	call Function8cf4f
 
@@ -678,7 +678,7 @@
 	ret
 
 .copypals: ; 8c677 (23:4677)
-	ld de, Unkn1Pals + 8 * 7
+	ld de, wMapPals + 8 * 7
 	call .copy
 	ld de, BGPals + 8 * 7
 	call .copy
@@ -829,7 +829,7 @@
 	inc de
 	ld h, a
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call .Copy
 	call WaitBGMap
 	jr .loop
--- /dev/null
+++ b/engine/billspc.asm
@@ -1,0 +1,2667 @@
+_DepositPKMN: ; e2391 (38:6391)
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [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 Functione2963
+	xor a
+	ld [wcb2e], a
+	call DelayFrame
+.asm_e23b4
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e23c6
+	call Functione23d5
+	call DelayFrame
+	jr .asm_e23b4
+.asm_e23c6
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+
+Functione23d5: ; e23d5 (38:63d5)
+	ld a, [wJumptableIndex]
+	ld hl, Jumptable_e23df
+	call Functione33df
+	jp [hl]
+
+Jumptable_e23df: ; e23df (38:63df)
+	dw Functione23e9
+	dw Functione241a
+	dw Functione245d
+	dw Functione247d
+	dw Functione2992
+
+
+Functione23e9: ; e23e9 (38:63e9)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2d30
+	call Functione2a8e
+	ld de, PCString_ChooseaPKMN
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $ff
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	call WaitBGMap
+	call Functione2e01
+	call Functione298d
+	ret
+
+Functione241a: ; e241a (38:641a)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e2457
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e2443
+	call Functione29b5
+	and a
+	ret z
+	call Functione2e01
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+.asm_e2443
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	jr z, .asm_e2457
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+; e2452 (38:6452)
+
+.asm_e2452
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e2457
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+
+Functione245d: ; e245d (38:645d)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ld a, $1
+	ld [MenuSelection2], a
+	call Functione298d
+	ret
+
+Functione247d: ; e247d (38:647d)
+	ld hl, BillsPCDepositMenuDataHeader
+	call CopyMenuDataHeader
+	ld a, [MenuSelection2]
+	call Function1d4b
+	call InterpretMenu2
+	jp c, BillsPCDepositFuncCancel
+	ld a, [MenuSelection2]
+	dec a
+	and $3
+	ld e, a
+	ld d, 0
+	ld hl, BillsPCDepositJumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+BillsPCDepositJumptable: ; e24a1 (38:64a1)
+	dw BillsPCDepositFuncDeposit ; Deposit Pokemon
+	dw BillsPCDepositFuncStats ; Pokemon Stats
+	dw BillsPCDepositFuncRelease ; Release Pokemon
+	dw BillsPCDepositFuncCancel ; Cancel
+
+
+BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
+	call Functione2f18
+	jp c, BillsPCDepositFuncCancel
+	call Functione307c
+	jr c, .no_overflow_31
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ret
+.no_overflow_31
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ret
+
+BillsPCDepositFuncStats: ; e24c8 (38:64c8)
+	call LoadStandardMenuDataHeader
+	call Functione2f7e
+	call ExitMenu
+	call PCMonInfo
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ret
+
+BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
+	call Functione2f18
+	jr c, BillsPCDepositFuncCancel
+	call Functione2f5f
+	jr c, BillsPCDepositFuncCancel
+	ld a, [MenuSelection2]
+	push af
+	ld de, PCString_ReleasePKMN
+	call Functione2a6e
+	call LoadStandardMenuDataHeader
+	lb bc, 14, 11
+	call PlaceYesNoBox
+	ld a, [MenuSelection2]
+	dec a
+	call ExitMenu
+	and a
+	jr nz, .asm_e252c
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	call Functione3180
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	pop af
+	ret
+.asm_e252c
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	pop af
+	ld [MenuSelection2], a
+	ret
+
+BillsPCDepositFuncCancel: ; e2537 (38:6537)
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e253d (38:653d)
+
+BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
+	db $40 ; flags
+	db 04, 09 ; start coords
+	db 13, 19 ; end coords
+	dw BillsPCDepositMenuData
+	db 1 ; default option
+; 0xe2545
+
+BillsPCDepositMenuData: ; 0xe2545 (38:6545)
+	db $80 ; flags
+	db 4 ; items
+	db "DEPOSIT@"
+	db "STATS@"
+	db "RELEASE@"
+	db "CANCEL@"
+; 0xe2564 (38:6564)
+
+Functione2564: ; e2564
+	hlcoord 0, 0
+	ld b, $4
+	ld c, $8
+	call ClearBox
+	hlcoord 0, 4
+	ld b, $a
+	ld c, $9
+	call ClearBox
+	hlcoord 0, 14
+	ld b, $2
+	ld c, $8
+	call ClearBox
+	ret
+; e2583
+
+_WithdrawPKMN: ; e2583 (38:6583)
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [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 Functione2963
+	ld a, $f
+	ld [wcb2e], a
+	call DelayFrame
+.asm_e25a7
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .no_overflow_49
+	call Functione25c8
+	call DelayFrame
+	jr .asm_e25a7
+.no_overflow_49
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+
+Functione25c8: ; e25c8 (38:65c8)
+	ld a, [wJumptableIndex]
+	ld hl, .jumptable
+	call Functione33df
+	jp [hl]
+
+.jumptable: ; e25d2 (38:65d2)
+	dw Functione25dc
+	dw Functione2612
+	dw Functione2655
+	dw BillsPC_Withdraw
+	dw Functione2992
+
+
+Functione25dc: ; e25dc (38:65dc)
+	ld a, $f
+	ld [wcb2e], a
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2d30
+	call Functione2a8e
+	ld de, PCString_ChooseaPKMN
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $ff
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	call WaitBGMap
+	call Functione2e01
+	call Functione298d
+	ret
+
+Functione2612: ; e2612 (38:6612)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e264f
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e263b
+	call Functione29b5
+	and a
+	ret z
+	call Functione2e01
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+.asm_e263b
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	jr z, .asm_e264f
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+; e264a (38:664a)
+
+.asm_e264a
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e264f
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; e2655
+
+Functione2655: ; e2655 (38:6655)
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ld a, $1
+	ld [MenuSelection2], a
+	call Functione298d
+	ret
+
+BillsPC_Withdraw: ; e2675 (38:6675)
+	ld hl, .MenuDataHeader
+	call CopyMenuDataHeader
+	ld a, [MenuSelection2]
+	call Function1d4b
+	call InterpretMenu2
+	jp c, .cancel
+	ld a, [MenuSelection2]
+	dec a
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, .jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.jumptable: ; e2699 (38:6699) #mark
+	dw .withdraw ; Withdraw
+	dw .stats ; Stats
+	dw .release ; Release
+	dw .cancel ; Cancel
+
+
+.withdraw: ; e26a1 (38:66a1)
+	call Functione2f18
+	jp c, .cancel
+	call TryWithdrawPokemon
+	jr c, .FailedWithdraw
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ret
+.FailedWithdraw
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ret
+
+.stats: ; e26c0 (38:66c0)
+	call LoadStandardMenuDataHeader
+	call Functione2f7e
+	call ExitMenu
+	call PCMonInfo
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ret
+
+.release: ; e26d8 (38:66d8)
+	ld a, [MenuSelection2]
+	push af
+	call Functione2f5f
+	jr c, .FailedRelease
+	ld de, PCString_ReleasePKMN
+	call Functione2a6e
+	call LoadStandardMenuDataHeader
+	lb bc, 14, 11
+	call PlaceYesNoBox
+	ld a, [MenuSelection2]
+	dec a
+	call ExitMenu
+	and a
+	jr nz, .FailedRelease
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	call Functione3180
+	ld a, $0
+	ld [wJumptableIndex], a
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	pop af
+	ret
+.FailedRelease
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	pop af
+	ld [MenuSelection2], a
+	ret
+
+.cancel: ; e272b (38:672b)
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e2731 (38:6731)
+
+.MenuDataHeader: ; 0xe2731
+	db $40 ; flags
+	db 04, 09 ; start coords
+	db 13, 19 ; end coords
+	dw .MenuData
+	db 1 ; default option
+; 0xe2739
+
+.MenuData: ; 0xe2739
+	db $80 ; flags
+	db 4 ; items
+	db "WITHDRAW@"
+	db "STATS@"
+	db "RELEASE@"
+	db "CANCEL@"
+; 0xe2759
+
+_MovePKMNWithoutMail: ; e2759
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [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 Functione2963
+	ld a, [wCurBox]
+	and $f
+	inc a
+	ld [wcb2e], a
+	call DelayFrame
+.asm_e2781
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e2793
+	call Functione27a2
+	call DelayFrame
+	jr .asm_e2781
+
+.asm_e2793
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+; e27a2
+
+Functione27a2: ; e27a2
+	ld a, [wJumptableIndex]
+	ld hl, Jumptable_e27ac
+	call Functione33df
+	jp [hl]
+; e27ac
+
+Jumptable_e27ac: ; e27ac
+	dw Functione27ba
+	dw Functione27eb
+	dw Functione283d
+	dw Functione285d
+	dw Functione28df
+	dw Functione2903
+	dw Functione2992
+; e27ba
+
+Functione27ba: ; e27ba
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2d30
+	ld de, PCString_ChooseaPKMN
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call Functione2a80
+	call PCMonInfo
+	ld a, $ff
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	call WaitBGMap
+	call Functione2e01
+	call Functione298d
+	ret
+; e27eb
+
+Functione27eb: ; e27eb
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e2837
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e2823
+	call Functione29d0
+	jr c, .asm_e2816
+	and a
+	ret z
+	call Functione2e01
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	call PCMonInfo
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+
+.asm_e2816
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e2823
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	jr z, .asm_e2837
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e2837
+	ld a, $6
+	ld [wJumptableIndex], a
+	ret
+; e283d
+
+Functione283d: ; e283d
+	xor a
+	ld [hBGMapMode], a
+	call ClearSprites
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ld de, PCString_WhatsUp
+	call Functione2a6e
+	ld a, $1
+	ld [MenuSelection2], a
+	call Functione298d
+	ret
+; e285d
+
+Functione285d: ; e285d
+	ld hl, MenuDataHeader_0xe28c3
+	call CopyMenuDataHeader
+	ld a, [MenuSelection2]
+	call Function1d4b
+	call InterpretMenu2
+	jp c, Functione28bd
+	ld a, [MenuSelection2]
+	dec a
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_e2881
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e2881
+
+Jumptable_e2881: ; e2881
+	dw Functione2887
+	dw Functione28a5
+	dw Functione28bd
+; e2887
+
+Functione2887: ; e2887
+	call Functione2f18
+	jp c, Functione28bd
+	ld a, [wcb2a]
+	ld [wcb2f], a
+	ld a, [wcb2b]
+	ld [wcb30], a
+	ld a, [wcb2e]
+	ld [wcb31], a
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; e28a5
+
+Functione28a5: ; e28a5
+	call LoadStandardMenuDataHeader
+	call Functione2f7e
+	call ExitMenu
+	call PCMonInfo
+	call Functione2def
+	ld [CurPartySpecies], a
+	ld a, $17
+	call Functione33d0
+	ret
+; e28bd
+
+Functione28bd: ; e28bd
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e28c3
+
+MenuDataHeader_0xe28c3: ; 0xe28c3
+	db $40 ; flags
+	db 04, 09 ; start coords
+	db 13, 19 ; end coords
+	dw MenuData2_0xe28cb
+	db 1 ; default option
+; 0xe28cb
+
+MenuData2_0xe28cb: ; 0xe28cb
+	db $80 ; flags
+	db 3 ; items
+	db "MOVE@"
+	db "STATS@"
+	db "CANCEL@"
+; 0xe28df
+
+Functione28df: ; e28df
+	xor a
+	ld [hBGMapMode], a
+	call Functione2d30
+	ld de, PCString_MoveToWhere
+	call Functione2a6e
+	ld a, $5
+	ld [wcb2d], a
+	call Functione2c2c
+	call Functione2a80
+	call ClearSprites
+	call Functione2e8c
+	call WaitBGMap
+	call Functione298d
+	ret
+; e2903
+
+Functione2903: ; e2903
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_e294b
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_e2938
+	call Functione29f4
+	jr c, .asm_e292b
+	and a
+	ret z
+	call Functione2e8c
+	xor a
+	ld [hBGMapMode], a
+	call Functione2c2c
+	ld a, $1
+	ld [hBGMapMode], a
+	call DelayFrame
+	call DelayFrame
+	ret
+
+.asm_e292b
+	xor a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e2938
+	call Functione2ee5
+	jr c, .asm_e2946
+	call Functione31e7
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e2946
+	ld hl, wJumptableIndex
+	dec [hl]
+	ret
+
+.asm_e294b
+	ld a, [wcb2f]
+	ld [wcb2a], a
+	ld a, [wcb30]
+	ld [wcb2b], a
+	ld a, [wcb31]
+	ld [wcb2e], a
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; e2963
+
+Functione2963: ; e2963 (38:6963)
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearTileMap
+	call Functione33e8
+	ld hl, OverworldMap
+	ld bc, $338
+	xor a
+	call ByteFill
+	xor a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ld [wcb2b], a
+	ld [wcb2a], a
+	ret
+
+Functione298d: ; e298d (38:698d)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Functione2992: ; e2992 (38:6992)
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Functione2998: ; e2998 (38:6998)
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	and a
+	jr z, .asm_e29b2
+	dec a
+	cp $1
+	jr z, .asm_e29b2
+	ld e, a
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+.asm_e29b2
+	jp Functione2a65
+
+Functione29b5: ; e29b5 (38:69b5)
+	ld hl, hJoyLast
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	ld e, a
+	and a
+	jr z, .asm_e29cd
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+.asm_e29cd
+	jp Functione2a65
+; e29d0 (38:69d0)
+
+Functione29d0: ; e29d0
+	ld hl, hJoyLast
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	ld e, a
+	and a
+	jr z, .asm_e29e8
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+
+.asm_e29e8
+	ld a, [hl]
+	and D_LEFT
+	jr nz, Functione2a48
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, Functione2a56
+	jr Functione2a65
+
+Functione29f4: ; e29f4
+	ld hl, hJoyLast
+	ld a, [wcb2d]
+	ld d, a
+	ld a, [wcb2c]
+	ld e, a
+	and a
+	jr z, .asm_e2a0c
+
+	ld a, [hl]
+	and D_UP
+	jr nz, Functione2a18
+	ld a, [hl]
+	and D_DOWN
+	jr nz, Functione2a2c
+
+.asm_e2a0c
+	ld a, [hl]
+	and D_LEFT
+	jr nz, Functione2a48
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, Functione2a56
+	jr Functione2a65
+
+Functione2a18: ; e2a18 (38:6a18)
+	ld hl, wcb2b
+	ld a, [hl]
+	and a
+	jr z, .asm_e2a22
+	dec [hl]
+	jr Functione2a68
+
+.asm_e2a22
+	ld hl, wcb2a
+	ld a, [hl]
+	and a
+	jr z, Functione2a65
+	dec [hl]
+	jr Functione2a68
+
+Functione2a2c: ; e2a2c (38:6a2c)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	inc a
+	cp e
+	jr nc, Functione2a65
+
+	ld hl, wcb2b
+	ld a, [hl]
+	inc a
+	cp d
+	jr nc, .asm_e2a42
+	inc [hl]
+	jr Functione2a68
+
+.asm_e2a42
+	ld hl, wcb2a
+	inc [hl]
+	jr Functione2a68
+; e2a48 (38:6a48)
+
+Functione2a48: ; e2a48
+	ld hl, wcb2e
+	ld a, [hl]
+	and a
+	jr z, .asm_e2a52
+	dec [hl]
+	jr Functione2a6c
+
+.asm_e2a52
+	ld [hl], $e
+	jr Functione2a6c
+
+Functione2a56: ; e2a56
+	ld hl, wcb2e
+	ld a, [hl]
+	cp $e
+	jr z, .asm_e2a61
+	inc [hl]
+	jr Functione2a6c
+
+.asm_e2a61
+	ld [hl], $0
+	jr Functione2a6c
+
+Functione2a65: ; e2a65 (38:6a65)
+	xor a
+	and a
+	ret
+
+Functione2a68: ; e2a68 (38:6a68)
+	ld a, $1
+	and a
+	ret
+; e2a6c (38:6a6c)
+
+Functione2a6c: ; e2a6c
+	scf
+	ret
+; e2a6e
+
+Functione2a6e: ; e2a6e (38:6a6e)
+	push de
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	pop de
+	hlcoord 1, 16
+	call PlaceString
+	ret
+; e2a80 (38:6a80)
+
+Functione2a80: ; e2a80
+	call Functione2a8e
+	hlcoord 8, 1
+	ld [hl], $5f
+	hlcoord 19, 1
+	ld [hl], $5e
+	ret
+; e2a8e
+
+Functione2a8e: ; e2a8e (38:6a8e)
+	hlcoord 8, 0
+	lb bc, 1, 10
+	call TextBox
+
+	ld a, [wcb2e]
+	and a
+	jr z, .party
+
+	cp NUM_BOXES + 1
+	jr nz, .gotbox
+
+	ld a, [wCurBox]
+	inc a
+.gotbox
+	dec a
+	ld hl, wBoxNames
+	ld bc, BOX_NAME_LENGTH
+	call AddNTimes
+	ld e, l
+	ld d, h
+	jr .print
+
+.party
+	ld de, String_e2abd
+.print
+	hlcoord 10, 1
+	call PlaceString
+	ret
+; e2abd (38:6abd)
+
+String_e2abd:
+	db "PARTY <PK><MN>@"
+; e2ac6
+
+PCMonInfo: ; e2ac6 (38:6ac6)
+; Display a monster's pic and
+; attributes when highlighting
+; it in a PC menu.
+
+; Includes the neat cascading
+; effect when showing the pic.
+
+; Example: Species, level, gender,
+; whether it's holding an item.
+
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+
+	call Functione2def
+	and a
+	ret z
+	cp $ff
+	ret z
+
+	ld [wd265], a
+	hlcoord 1, 4
+	xor a
+	ld b, 7
+.asm_e2ae9
+	ld c, 7
+	push af
+	push hl
+.asm_e2aed
+	ld [hli], a
+	add 7
+	dec c
+	jr nz, .asm_e2aed
+	pop hl
+	ld de, 20
+	add hl, de
+	pop af
+	inc a
+	dec b
+	jr nz, .asm_e2ae9
+
+	call Functione2b6d
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	ld hl, TempMonDVs
+	predef GetUnownLetter
+	call GetBaseData
+	ld de, VTiles2 tile $00
+	predef GetFrontpic
+	xor a
+	ld [wcb32], a
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+
+	cp EGG
+	ret z
+
+	call GetBasePokemonName
+	hlcoord 1, 14
+	call PlaceString
+
+	hlcoord 1, 12
+	call PrintLevel
+
+	ld a, $3
+	ld [MonType], a
+	callba GetGender
+	jr c, .asm_e2b4f
+	ld a, "♂"
+	jr nz, .printgender
+	ld a, "♀"
+.printgender
+	hlcoord 5, 12
+	ld [hl], a
+.asm_e2b4f
+
+	ld a, [TempMonItem]
+	and a
+	ret z
+
+	ld d, a
+	callab ItemIsMail
+	jr c, .mail
+	ld a, $5d ; item icon
+	jr .printitem
+.mail
+	ld a, $1
+	ld [wcb32], a
+	ld a, $5c ; mail icon
+.printitem
+	hlcoord 7, 12
+	ld [hl], a
+	ret
+
+Functione2b6d: ; e2b6d (38:6b6d)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, wc801
+rept 3
+	add hl, de
+endr
+	ld a, [hl]
+	and a
+	jr z, .asm_e2bc6
+	cp $f
+	jr z, .asm_e2bf5
+	ld b, a
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	push hl
+	ld bc, $35
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonLevel], a
+	pop hl
+	push hl
+	ld bc, $17
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonItem], a
+	pop hl
+	ld bc, $2b
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	call CloseSRAM
+	ret
+.asm_e2bc6
+	ld hl, PartyMon1Level
+	ld bc, $30
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonLevel], a
+	ld hl, PartyMon1Item
+	ld bc, $30
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonItem], a
+	ld hl, PartyMon1DVs
+	ld bc, $30
+	ld a, e
+	call AddNTimes
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ret
+
+.asm_e2bf5
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxMon1Level
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonLevel], a
+
+	ld hl, sBoxMon1Item
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	ld [TempMonItem], a
+
+	ld hl, sBoxMon1DVs
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld de, TempMonDVs
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+
+	call CloseSRAM
+	ret
+
+Functione2c2c: ; e2c2c (38:6c2c)
+	hlcoord 8, 2
+	lb bc, 10, 10
+	call TextBox
+
+	hlcoord 8, 2
+	ld [hl], "└"
+	hlcoord 19, 2
+	ld [hl], "┘"
+
+	ld a, [wcb2a]
+	ld e, a
+	ld d, 0
+	ld hl, OverworldMap
+rept 3
+	add hl, de
+endr
+	ld e, l
+	ld d, h
+	hlcoord 9, 4
+	ld a, [wcb2d]
+.asm_e2c53
+	push af
+	push de
+	push hl
+	call Functione2c6e
+	pop hl
+	ld de, $28
+	add hl, de
+	pop de
+rept 3
+	inc de
+endr
+	pop af
+	dec a
+	jr nz, .asm_e2c53
+	ret
+; e2c67 (38:6c67)
+
+String_e2c67:
+	db "CANCEL@"
+; e2c6e
+
+Functione2c6e: ; e2c6e (38:6c6e)
+	ld a, [de]
+	and a
+	ret z
+	cp $ff
+	jr nz, .asm_e2c7c
+	ld de, String_e2c67
+	call PlaceString
+	ret
+.asm_e2c7c
+	inc de
+	ld a, [de]
+	ld b, a
+	inc de
+	ld a, [de]
+	ld e, a
+	ld a, b
+	and a
+	jr z, .asm_e2cc8
+	cp $f
+	jr z, .asm_e2cf1
+	push hl
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	push hl
+	ld bc, $16
+	add hl, bc
+	ld bc, $20
+	ld a, e
+	call AddNTimes
+	ld a, [hl]
+	pop hl
+	and a
+	jr z, .asm_e2cc2
+	ld bc, $372
+	add hl, bc
+	ld bc, $b
+	ld a, e
+	call AddNTimes
+	ld de, StringBuffer1
+	ld bc, $b
+	call CopyBytes
+	call CloseSRAM
+	pop hl
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+.asm_e2cc2
+	call CloseSRAM
+	pop hl
+	jr .asm_e2d23
+.asm_e2cc8
+	push hl
+	ld hl, PartySpecies
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_e2cee
+	ld hl, PartyMonNicknames
+	ld bc, $b
+	ld a, e
+	call AddNTimes
+	ld de, StringBuffer1
+	ld bc, $b
+	call CopyBytes
+	pop hl
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+.asm_e2cee
+	pop hl
+	jr .asm_e2d23
+.asm_e2cf1
+	push hl
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr z, .asm_e2d1f
+	ld hl, sBoxMonNicknames
+	ld bc, PKMN_NAME_LENGTH
+	ld a, e
+	call AddNTimes
+	ld de, StringBuffer1
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	call CloseSRAM
+	pop hl
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+.asm_e2d1f
+	call CloseSRAM
+	pop hl
+.asm_e2d23
+	ld de, String_e2d2a
+	call PlaceString
+	ret
+; e2d2a (38:6d2a)
+
+String_e2d2a:
+	db "-----@"
+; e2d30
+
+Functione2d30: ; e2d30 (38:6d30)
+	xor a
+	ld hl, OverworldMap
+	ld bc, $5a
+	call ByteFill
+	ld de, OverworldMap
+	xor a
+	ld [wd003], a
+	ld [wd004], a
+	ld a, [wcb2e]
+	and a
+	jr z, .asm_e2d87
+	cp $f
+	jr z, .asm_e2db7
+	ld b, a
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	inc hl
+.asm_e2d57
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_e2d79
+	and a
+	jr z, .asm_e2d79
+	ld [de], a
+	inc de
+	ld a, [wcb2e]
+	ld [de], a
+	inc de
+	ld a, [wd003]
+	ld [de], a
+	inc a
+	ld [wd003], a
+	inc de
+	inc hl
+	ld a, [wd004]
+	inc a
+	ld [wd004], a
+	jr .asm_e2d57
+.asm_e2d79
+	call CloseSRAM
+	ld a, $ff
+	ld [de], a
+	ld a, [wd004]
+	inc a
+	ld [wcb2c], a
+	ret
+.asm_e2d87
+	ld hl, PartySpecies
+.asm_e2d8a
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_e2dac
+	and a
+	jr z, .asm_e2dac
+	ld [de], a
+	inc de
+	ld a, [wcb2e]
+	ld [de], a
+	inc de
+	ld a, [wd003]
+	ld [de], a
+	inc a
+	ld [wd003], a
+	inc de
+	inc hl
+	ld a, [wd004]
+	inc a
+	ld [wd004], a
+	jr .asm_e2d8a
+.asm_e2dac
+	ld a, $ff
+	ld [de], a
+	ld a, [wd004]
+	inc a
+	ld [wcb2c], a
+	ret
+.asm_e2db7
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+.asm_e2dbf
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_e2de1
+	and a
+	jr z, .asm_e2de1
+	ld [de], a
+	inc de
+	ld a, [wcb2e]
+	ld [de], a
+	inc de
+	ld a, [wd003]
+	ld [de], a
+	inc a
+	ld [wd003], a
+	inc de
+	inc hl
+	ld a, [wd004]
+	inc a
+	ld [wd004], a
+	jr .asm_e2dbf
+.asm_e2de1
+	call CloseSRAM
+	ld a, $ff
+	ld [de], a
+	ld a, [wd004]
+	inc a
+	ld [wcb2c], a
+	ret
+
+Functione2def: ; e2def (38:6def)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, OverworldMap
+rept 3
+	add hl, de
+endr
+	ld a, [hl]
+	ret
+
+Functione2e01: ; e2e01 (38:6e01)
+	ld a, [wcb2c]
+	and a
+	jr nz, .asm_e2e0b
+	call ClearSprites
+	ret
+.asm_e2e0b
+	ld hl, Unknown_e2e2b
+	ld de, Sprites
+.done1
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, [wcb2b]
+	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 .done1
+; e2e2b (38:6e2b)
+
+Unknown_e2e2b: ; e2e2b
+	db $26, $50, $00, $00
+	db $26, $58, $00, $00
+	db $26, $60, $00, $00
+	db $26, $68, $00, $00
+	db $26, $70, $00, $00
+	db $26, $78, $00, $00
+	db $26, $80, $00, $00
+	db $26, $88, $00, $00
+	db $26, $90, $00, $00
+	db $26, $97, $00, $00
+	db $39, $50, $00, $40
+	db $39, $58, $00, $40
+	db $39, $60, $00, $40
+	db $39, $68, $00, $40
+	db $39, $70, $00, $40
+	db $39, $78, $00, $40
+	db $39, $80, $00, $40
+	db $39, $88, $00, $40
+	db $39, $90, $00, $40
+	db $39, $97, $00, $40
+	db $2e, $4e, $01, $00
+	db $31, $4e, $01, $40
+	db $2e, $99, $01, $20
+	db $31, $99, $01, $60
+	db $ff
+; e2e8c
+
+Functione2e8c: ; e2e8c
+	ld hl, Unknown_e2eac
+	ld de, Sprites
+.asm_e2e92
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, [wcb2b]
+	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 .asm_e2e92
+; e2eac
+
+Unknown_e2eac: ; e2eac
+	db $27, $50, $06, $00
+	db $2b, $58, $00, $40
+	db $2b, $60, $00, $40
+	db $2b, $68, $00, $40
+	db $2b, $70, $00, $40
+	db $2b, $78, $00, $40
+	db $2b, $80, $00, $40
+	db $2b, $88, $00, $40
+	db $2b, $90, $00, $40
+	db $27, $98, $07, $00
+	db $ff
+; e2ed5
+
+Functione2ed5: ; e2ed5
+.asm_e2ed5
+	push bc
+	push hl
+.asm_e2ed7
+	ld [hli], a
+	dec c
+	jr nz, .asm_e2ed7
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_e2ed5
+	ret
+; e2ee5
+
+Functione2ee5: ; e2ee5
+	ld hl, wcb2e
+	ld a, [wcb31]
+	cp [hl]
+	jr z, .asm_e2f00
+	ld a, [wcb2e]
+	and a
+	jr z, .asm_e2ef8
+	ld e, $15
+	jr .asm_e2efa
+
+.asm_e2ef8
+	ld e, $7
+
+.asm_e2efa
+	ld a, [wcb2c]
+	cp e
+	jr nc, .asm_e2f02
+
+.asm_e2f00
+	and a
+	ret
+
+.asm_e2f02
+	ld de, PCString_TheresNoRoom
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+; e2f18
+
+Functione2f18: ; e2f18 (38:6f18)
+	ld a, [wcb2e]
+	and a
+	jr nz, .Okay
+	ld a, [wcb2c]
+	cp $3
+	jr c, .ItsYourLastPokemon
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	callba CheckCurPartyMonFainted
+	jr c, .AllOthersFainted
+	ld a, [wcb32]
+	and a
+	jr nz, .HasMail
+.Okay
+	and a
+	ret
+.HasMail
+	ld de, PCString_RemoveMail
+	jr .NotOkay
+.AllOthersFainted
+	ld de, PCString_NoMoreUsablePKMN
+	jr .NotOkay
+.ItsYourLastPokemon
+	ld de, PCString_ItsYourLastPKMN
+.NotOkay
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+Functione2f5f: ; e2f5f (38:6f5f)
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .asm_e2f68
+	and a
+	ret
+.asm_e2f68
+	ld de, PCString_NoReleasingEGGS
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+Functione2f7e: ; e2f7e (38:6f7e)
+	call LowVolume
+	call Functione2fd6
+	ld a, $3
+	ld [MonType], a
+	predef StatsScreenInit
+	call Functione33e8
+	call MaxVolume
+	ret
+
+Functione2f95: ; e2f95 (38:6f95)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
+	ld [wcf73], a
+	jr nz, .pressed_a_b_right_left
+	ld a, [hl]
+	and D_DOWN | D_UP
+	ld [wcf73], a
+	jr nz, .pressed_down_up
+	jr .pressed_a_b_right_left
+
+.pressed_down_up
+	call Functione2998
+	and a
+	jr z, .asm_e2fd1
+	call Functione2def
+	ld [wd265], a
+	call Functione2b6d
+	ld a, [wd265]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	ld hl, TempMonDVs
+	predef GetUnownLetter
+	call GetBaseData
+	call Functione2fd6
+.pressed_a_b_right_left
+	ret
+
+.asm_e2fd1
+	xor a
+	ld [wcf73], a
+	ret
+
+Functione2fd6: ; e2fd6 (38:6fd6)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, [wcb2e]
+	and a
+	jr z, .asm_e3020
+	cp $f
+	jr nz, .asm_e3048
+	ld a, BANK(sBox)
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+	call Functione3357
+	ld hl, sBoxMonNicknames
+	call Functione3363
+	ld hl, sBoxMonOT
+	call Functione3376
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd018_Mon
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	call CloseSRAM
+	callba Function5088b
+	ret
+
+.asm_e3020
+	ld hl, PartySpecies
+	call Functione3357
+	ld hl, PartyMonNicknames
+	call Functione3363
+	ld hl, PartyMonOT
+	call Functione3376
+	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd018_Mon
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	ret
+
+.asm_e3048
+	ld b, a
+	call Functione3396
+	ld a, b
+	call GetSRAMBank
+	push hl
+	inc hl
+	call Functione3357
+	pop hl
+	push hl
+	ld bc, $372
+	add hl, bc
+	call Functione3363
+	pop hl
+	push hl
+	ld bc, $296
+	add hl, bc
+	call Functione3376
+	pop hl
+	ld bc, $16
+	add hl, bc
+	ld bc, $20
+	call Functione3389
+	call CloseSRAM
+	callba Function5088b
+	ret
+
+Functione307c: ; e307c (38:707c)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld hl, PartyMonNicknames
+	ld a, [CurPartyMon]
+	call GetNick
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	predef SentGetPkmnIntoFromBox
+	jr c, .asm_boxisfull
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ld a, [CurPartySpecies]
+	call PlayCry
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	call WaitBGMap
+	hlcoord 1, 16
+	ld de, PCString_Stored
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld de, StringBuffer1
+	call PlaceString
+	ld a, "!"
+	ld [bc], a
+	ld c, 50
+	call DelayFrames
+	and a
+	ret
+
+.asm_boxisfull
+	ld de, PCString_BoxFull
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+TryWithdrawPokemon: ; e30fa (38:70fa)
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, BANK(sBoxMonNicknames)
+	call GetSRAMBank
+	ld a, [CurPartyMon]
+	ld hl, sBoxMonNicknames
+	call GetNick
+	call CloseSRAM
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	predef SentGetPkmnIntoFromBox
+	jr c, .PartyFull
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ld a, [CurPartySpecies]
+	call PlayCry
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	call WaitBGMap
+	hlcoord 1, 16
+	ld de, PCString_Got
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld de, StringBuffer1
+	call PlaceString
+	ld a, $e7
+	ld [bc], a
+	ld c, 50
+	call DelayFrames
+	and a
+	ret
+
+.PartyFull
+	ld de, PCString_PartyFull
+	call Functione2a6e
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	scf
+	ret
+
+
+Functione3180: ; e3180 (38:7180)
+	hlcoord 0, 0
+	lb bc, 15, 8
+	call ClearBox
+	hlcoord 8, 14
+	lb bc, 1, 3
+	call ClearBox
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+
+	call WaitBGMap
+	ld a, [CurPartySpecies]
+	call GetCryIndex
+	jr c, .asm_e31ab
+	ld e, c
+	ld d, b
+	call PlayCryHeader
+.asm_e31ab
+
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+	hlcoord 1, 16
+	ld de, PCString_ReleasedPKMN
+	call PlaceString
+	ld c, 80
+	call DelayFrames
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	hlcoord 1, 16
+	ld de, PCString_Bye
+	call PlaceString
+	ld l, c
+	ld h, b
+	inc hl
+	ld de, StringBuffer1
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld [hl], $e7
+	ld c, 50
+	call DelayFrames
+	ret
+; e31e7 (38:71e7)
+
+Functione31e7: ; e31e7
+	push hl
+	push de
+	push bc
+	push af
+	hlcoord 0, 15
+	lb bc, 1, 18
+	call TextBox
+	hlcoord 1, 16
+	ld de, String_e3233
+	call PlaceString
+	ld c, 20
+	call DelayFrames
+	pop af
+	pop bc
+	pop de
+	pop hl
+	ld a, [wCurBox]
+	push af
+	ld bc, 0
+	ld a, [wcb31]
+	and a
+	jr nz, .asm_e3215
+	set 0, c
+
+.asm_e3215
+	ld a, [wcb2e]
+	and a
+	jr nz, .asm_e321d
+	set 1, c
+
+.asm_e321d
+	ld hl, Jumptable_e3245
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, Functione322a
+	push de
+	jp [hl]
+; e322a
+
+Functione322a: ; e322a
+	pop af
+	ld e, a
+	callba Function14ad5
+	ret
+; e3233
+
+String_e3233:
+	db "Saving… Leave ON!@"
+; e3245
+
+Jumptable_e3245: ; e3245
+	dw Functione324d
+	dw Functione3267
+	dw Functione327d
+	dw Functione3284
+; e324d
+
+Functione324d: ; e324d
+	ld hl, wcb31
+	ld a, [wcb2e]
+	cp [hl]
+	jr z, .asm_e325d
+	call Functione32b0
+	call Functione32fa
+	ret
+
+.asm_e325d
+	call Functione32b0
+	call Functione328e
+	call Functione32fa
+	ret
+; e3267
+
+Functione3267: ; e3267
+	call Functione3316
+	ld a, $1
+	ld [wc2cd], a
+	callba SaveGameData
+	xor a
+	ld [wc2cd], a
+	call Functione32fa
+	ret
+; e327d
+
+Functione327d: ; e327d
+	call Functione32b0
+	call Functione3346
+	ret
+; e3284
+
+Functione3284: ; e3284
+	call Functione3316
+	call Functione328e
+	call Functione3346
+	ret
+; e328e
+
+Functione328e: ; e328e
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld e, a
+	ld a, [wcb30]
+	ld hl, wcb2f
+	add [hl]
+	cp e
+	ret nc
+	ld hl, wcb2b
+	ld a, [hl]
+	and a
+	jr z, .asm_e32a8
+	dec [hl]
+	ret
+
+.asm_e32a8
+	ld hl, wcb2a
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+; e32b0
+
+Functione32b0: ; e32b0
+	ld a, [wcb31]
+	dec a
+	ld e, a
+	callba Function14ac2
+	ld a, [wcb30]
+	ld hl, wcb2f
+	add [hl]
+	ld [CurPartyMon], a
+	ld a, $1
+	call GetSRAMBank
+	ld hl, sBoxSpecies
+	call Functione3357
+	ld hl, sBoxMonNicknames
+	call Functione3363
+	ld hl, sBoxMonOT
+	call Functione3376
+	ld hl, sBoxMons
+	ld bc, BOXMON_STRUCT_LENGTH
+	call Functione3389
+	call CloseSRAM
+	callba Function5088b
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ret
+; e32fa
+
+Functione32fa: ; e32fa
+	ld a, [wcb2e]
+	dec a
+	ld e, a
+	callba Function14ac2
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	callba Function51322
+	ret
+; e3316
+
+Functione3316: ; e3316
+	ld a, [wcb30]
+	ld hl, wcb2f
+	add [hl]
+	ld [CurPartyMon], a
+	ld hl, PartySpecies
+	call Functione3357
+	ld hl, PartyMonNicknames
+	call Functione3363
+	ld hl, PartyMonOT
+	call Functione3376
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call Functione3389
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callba Functione039
+	ret
+; e3346
+
+Functione3346: ; e3346
+	ld a, [wcb2b]
+	ld hl, wcb2a
+	add [hl]
+	ld [CurPartyMon], a
+	callba Function5138b
+	ret
+; e3357
+
+Functione3357: ; e3357 (38:7357)
+	ld a, [CurPartyMon]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ret
+
+Functione3363: ; e3363 (38:7363)
+	ld bc, $b
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd002
+	ld bc, $b
+	call CopyBytes
+	ret
+
+Functione3376: ; e3376 (38:7376)
+	ld bc, $b
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd00d
+	ld bc, $b
+	call CopyBytes
+	ret
+
+Functione3389: ; e3389 (38:7389)
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld de, wd018
+	call CopyBytes
+	ret
+
+Functione3396: ; e3396 (38:7396)
+	dec b
+	ld c, b
+	ld b, 0
+	ld hl, Unknown_e33a6
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; e33a6 (38:73a6)
+
+Unknown_e33a6: ; e33a6
+	;  bank, address
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
+	dba sBox10
+	dba sBox11
+	dba sBox12
+	dba sBox13
+	dba sBox14
+; e33d0
+
+Functione33d0: ; e33d0 (38:73d0)
+	ld b, a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $fc
+	call Functioncf8
+	ret
+
+Functione33df: ; e33df (38:73df)
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+Functione33e8: ; e33e8 (38:73e8)
+	call DisableLCD
+	ld hl, VTiles2 tile $00
+	ld bc, $310
+	xor a
+	call ByteFill
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	ld hl, PCMailGFX
+	ld de, VTiles2 tile $5c
+	ld bc, $40
+	call CopyBytes
+	ld hl, PCSelectLZ
+	ld de, VTiles0 tile $00
+	call Decompress
+	ld a, 6
+	call SkipMusic
+	call EnableLCD
+	ret
+; e3419 (38:7419)
+
+PCSelectLZ: INCBIN "gfx/pc.2bpp.lz"
+PCMailGFX:  INCBIN "gfx/pc_mail.2bpp"
+; e34dd
+
+PCString_ChooseaPKMN: db "Choose a <PK><MN>.@"
+PCString_WhatsUp: db "What's up?@"
+PCString_ReleasePKMN: db "Release <PK><MN>?@"
+PCString_MoveToWhere: db "Move to where?@"
+PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@"
+PCString_TheresNoRoom: db "There's no room!@"
+PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@"
+PCString_RemoveMail: db "Remove MAIL.@"
+PCString_ReleasedPKMN: db "Released <PK><MN>.@"
+PCString_Bye: db "Bye,@"
+PCString_Stored: db "Stored @"
+PCString_Got: db "Got @"
+PCString_Non: db "Non.@"
+PCString_BoxFull: db "The BOX is full.@"
+PCString_PartyFull: db "The party's full!@"
+PCString_NoReleasingEGGS: db "No releasing EGGS!@"
+; e35aa
+
+
+_ChangeBox: ; e35aa (38:75aa)
+	call LoadStandardMenuDataHeader
+	call Functione35e2
+.loop
+	xor a
+	ld [hBGMapMode], a
+	call Functione36cf
+	call Functione379c
+	ld hl, _ChangeBox_menudataheader
+	call CopyMenuDataHeader
+	xor a
+	ld [wd0e4], a
+	hlcoord 0, 4
+	lb bc, 8, 9
+	call TextBox
+	call HandleScrollingMenu
+	ld a, [wcf73]
+	cp $2
+	jr z, .done
+	call Functione37af
+	call Functione36f9
+	jr .loop
+.done
+	call WriteBackup
+	ret
+
+Functione35e2: ; e35e2 (38:75e2)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, " "
+	call ByteFill
+	ret
+; e35f1 (38:75f1)
+
+_ChangeBox_menudataheader: ; 0xe35f1
+	db $40 ; flags
+	db 05, 01 ; start coords
+	db 12, 09 ; end coords
+	dw .menudata2
+	db 1 ; default option
+; 0xe35f9
+
+.menudata2: ; 0xe35f9
+	db $22 ; flags
+	db 4, 0
+	db 1
+	dba .boxes
+	dba .boxnames
+	dba NULL
+	dba Functione3632
+; e3609
+
+.boxes: ; e3609
+	db NUM_BOXES
+x = 1
+rept NUM_BOXES
+	db x
+x = x + 1
+endr
+	db -1
+; e3619
+
+.boxnames: ; e3619
+	push de
+	ld a, [MenuSelection]
+	dec a
+	call GetBoxName
+	pop hl
+	call PlaceString
+	ret
+; e3626
+
+GetBoxName: ; e3626 (38:7626)
+	ld bc, BOX_NAME_LENGTH
+	ld hl, wBoxNames
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ret
+; e3632 (38:7632)
+
+Functione3632: ; e3632
+	hlcoord 11, 7
+	lb bc, 5, 7
+	call TextBox
+	ld a, [MenuSelection]
+	cp -1
+	ret z
+	hlcoord 12, 9
+	ld de, String_e3663
+	call PlaceString
+	call GetBoxCount
+	ld [wd265], a
+	hlcoord 13, 11
+	ld de, wd265
+	lb bc, 1, 2
+	call PrintNum
+	ld de, String_e3668
+	call PlaceString
+	ret
+; e3663
+
+String_e3663: ; e3663
+	db "#MON@"
+; e3668
+
+String_e3668: ; e3668
+	; db "/20@"
+	db "/"
+	db "0" + MONS_PER_BOX / 10 ; "2"
+	db "0" + MONS_PER_BOX % 10 ; "0"
+	db "@"
+; e366c
+
+GetBoxCount: ; e366c (38:766c)
+	ld a, [wCurBox]
+	ld c, a
+	ld a, [MenuSelection]
+	dec a
+	cp c
+	jr z, .activebox
+	ld c, a
+	ld b, 0
+	ld hl, .boxbanks
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	ld b, a
+	call GetSRAMBank
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	call CloseSRAM
+	ld c, a
+	ld a, [wSavedAtLeastOnce]
+	and a
+	jr z, .newfile
+	ld a, c
+	ret
+
+.newfile
+	xor a
+	ret
+
+.activebox
+	ld a, BANK(sBoxCount)
+	ld b, a
+	call GetSRAMBank
+	ld hl, sBoxCount
+	ld a, [hl]
+	call CloseSRAM
+	ret
+; e36a5 (38:76a5)
+
+.boxbanks: ; e36a5
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
+	dba sBox10
+	dba sBox11
+	dba sBox12
+	dba sBox13
+	dba sBox14
+; e36cf
+
+Functione36cf: ; e36cf (38:76cf)
+	hlcoord 0, 0
+	ld b, 2
+	ld c, 18
+	call TextBox
+	hlcoord 1, 2
+	ld de, String_e36f1
+	call PlaceString
+	ld a, [wCurBox]
+	and $f
+	call GetBoxName
+	hlcoord 11, 2
+	call PlaceString
+	ret
+; e36f1 (38:76f1)
+
+String_e36f1: ; e36f1
+	db "CURRENT@"
+; e36f9
+
+Functione36f9: ; e36f9 (38:76f9)
+	ld hl, MenuDataHeader_0xe377b
+	call LoadMenuDataHeader
+	call InterpretMenu2
+	call ExitMenu
+	ret c
+	ld a, [MenuSelection2]
+	cp $1
+	jr z, .asm_e3734
+	cp $2
+	jr z, .asm_e3745
+	cp $3
+	jr z, .asm_e3717
+	and a
+	ret
+
+.asm_e3717
+	call GetBoxCount
+	and a
+	jr z, .asm_e372f
+	ld e, l
+	ld d, h
+	ld a, [MenuSelection]
+	dec a
+	ld c, a
+	callba Function844bc
+	call Functione35e2
+	and a
+	ret
+
+.asm_e372f
+	call Functione37be
+	and a
+	ret
+
+.asm_e3734
+	ld a, [MenuSelection]
+	dec a
+	ld e, a
+	ld a, [wCurBox]
+	cp e
+	ret z
+	callba Function14a83
+	ret
+
+.asm_e3745
+	ld b, $4
+	ld de, wd002
+	callba NamingScreen
+	call ClearTileMap
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	ld a, [MenuSelection]
+	dec a
+	call GetBoxName
+	ld e, l
+	ld d, h
+	ld hl, wd002
+	ld c, $8
+	call InitString
+	ld a, [MenuSelection]
+	dec a
+	call GetBoxName
+	ld de, wd002
+	call CopyName2
+	ret
+; e3778 (38:7778)
+
+	hlcoord 11, 7 ; XXX
+
+MenuDataHeader_0xe377b: ; 0xe377b
+	db $40 ; flags
+	db 04, 11 ; start coords
+	db 13, 19 ; end coords
+	dw MenuData2_0xe3783
+	db 1 ; default option
+; 0xe3783
+
+MenuData2_0xe3783: ; 0xe3783
+	db $80 ; flags
+	db 4 ; items
+	db "SWITCH@"
+	db "NAME@"
+	db "PRINT@"
+	db "QUIT@"
+; 0xe379c
+
+Functione379c: ; e379c (38:779c)
+	ld de, String_e37a1
+	jr Functione37e3
+; e37a1 (38:77a1)
+
+String_e37a1: ; e37a1
+	db "Choose a BOX.@"
+; e37af
+
+Functione37af: ; e37af (38:77af)
+	ld de, String_e37b4
+	jr Functione37e3
+; e37b4 (38:77b4)
+
+String_e37b4: ; e37b4
+	db "What's up?@"
+; e37be
+
+Functione37be: ; e37be (38:77be)
+	ld de, String_e37d3
+	call Functione37e3
+	ld de, SFX_WRONG
+	call WaitPlaySFX
+	call WaitSFX
+	ld c, 50
+	call DelayFrames
+	ret
+; e37d3 (38:77d3)
+
+String_e37d3: ; e37d3
+	db "There's no #MON.@"
+; e37e3
+
+Functione37e3: ; e37e3 (38:77e3)
+	push de
+	hlcoord 0, 14
+	lb bc, 2, 18
+	call TextBox
+	pop de
+	hlcoord 1, 16
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
--- /dev/null
+++ b/engine/breeding/egg.asm
@@ -1,0 +1,976 @@
+Function16e1d: ; 16e1d
+	call Function16ed6
+	ld c, $0
+	jp nc, .asm_16eb7
+	ld a, [wBreedMon1Species]
+	ld [CurPartySpecies], a
+	ld a, [wBreedMon1DVs]
+	ld [TempMonDVs], a
+	ld a, [wBreedMon1DVs + 1]
+	ld [TempMonDVs + 1], a
+	ld a, $3
+	ld [MonType], a
+	predef GetGender
+	jr c, .asm_16e70
+	ld b, $1
+	jr nz, .asm_16e48
+	inc b
+
+.asm_16e48
+	push bc
+	ld a, [wBreedMon2Species]
+	ld [CurPartySpecies], a
+	ld a, [wBreedMon2DVs]
+	ld [TempMonDVs], a
+	ld a, [wBreedMon2DVs + 1]
+	ld [TempMonDVs + 1], a
+	ld a, $3
+	ld [MonType], a
+	predef GetGender
+	pop bc
+	jr c, .asm_16e70
+	ld a, $1
+	jr nz, .asm_16e6d
+	inc a
+
+.asm_16e6d
+	cp b
+	jr nz, .asm_16e89
+
+.asm_16e70
+	ld c, $0
+	ld a, [wBreedMon1Species]
+	cp DITTO
+	jr z, .asm_16e82
+	ld a, [wBreedMon2Species]
+	cp DITTO
+	jr nz, .asm_16eb7
+	jr .asm_16e89
+
+.asm_16e82
+	ld a, [wBreedMon2Species]
+	cp DITTO
+	jr z, .asm_16eb7
+
+.asm_16e89
+	call Function16ebc
+	ld c, $ff
+	jp z, .asm_16eb7
+	ld a, [wBreedMon2Species]
+	ld b, a
+	ld a, [wBreedMon1Species]
+	cp b
+	ld c, $fe
+	jr z, .asm_16e9f
+	ld c, $80
+.asm_16e9f
+	ld a, [wBreedMon1ID]
+	ld b, a
+	ld a, [wBreedMon2ID]
+	cp b
+	jr nz, .asm_16eb7
+	ld a, [wBreedMon1ID + 1]
+	ld b, a
+	ld a, [wBreedMon2ID + 1]
+	cp b
+	jr nz, .asm_16eb7
+	ld a, c
+	sub $4d
+	ld c, a
+
+.asm_16eb7
+	ld a, c
+	ld [wd265], a
+	ret
+; 16ebc
+
+
+Function16ebc: ; 16ebc (5:6ebc)
+	ld a, [wBreedMon1DVs]
+	and $f
+	ld b, a
+	ld a, [wBreedMon2DVs]
+	and $f
+	cp b
+	ret nz
+	ld a, [wBreedMon1DVs + 1]
+	and $7
+	ld b, a
+	ld a, [wBreedMon2DVs + 1]
+	and $7
+	cp b
+	ret
+; 16ed6
+
+Function16ed6: ; 16ed6
+	ld a, [wBreedMon2Species]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	cp $ff
+	jr z, .asm_16f3a
+	ld a, [wBreedMon1Species]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	cp $ff
+	jr z, .asm_16f3a
+	ld a, [wBreedMon2Species]
+	cp DITTO
+	jr z, .asm_16f3c
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BaseEggGroups]
+	push af
+	and $f
+	ld b, a
+	pop af
+	and $f0
+	swap a
+	ld c, a
+	ld a, [wBreedMon1Species]
+	cp DITTO
+	jr z, .asm_16f3c
+	ld [CurSpecies], a
+	push bc
+	call GetBaseData
+	pop bc
+	ld a, [BaseEggGroups]
+	push af
+	and $f
+	ld d, a
+	pop af
+	and $f0
+	swap a
+	ld e, a
+	ld a, d
+	cp b
+	jr z, .asm_16f3c
+	cp c
+	jr z, .asm_16f3c
+	ld a, e
+	cp b
+	jr z, .asm_16f3c
+	cp c
+	jr z, .asm_16f3c
+
+.asm_16f3a
+	and a
+	ret
+
+.asm_16f3c
+	scf
+	ret
+; 16f3e
+
+DoEggStep:: ; 16f3e
+	ld de, PartySpecies
+	ld hl, PartyMon1Happiness
+	ld c, 0
+.loop
+	ld a, [de]
+	inc de
+	cp -1
+	ret z
+	cp EGG
+	jr nz, .next
+	dec [hl]
+	jr nz, .next
+	ld a, 1
+	and a
+	ret
+
+.next
+	push de
+	ld de, PARTYMON_STRUCT_LENGTH
+	add hl, de
+	pop de
+	jr .loop
+; 16f5e
+
+OverworldHatchEgg:: ; 16f5e
+	call ResetWindow
+	call LoadStandardMenuDataHeader
+	call Function16f70
+	call Function2b4d
+	call RestartMapMusic
+	jp LoadMoveSprites
+; 16f70
+
+Function16f70: ; 16f70 (5:6f70)
+	ld de, PartySpecies
+	ld hl, PartyMon1Happiness
+	xor a
+	ld [CurPartyMon], a
+
+Function16f7a: ; 16f7a (5:6f7a)
+	ld a, [de]
+	inc de
+	cp -1
+	jp z, Function1708a
+	push de
+	push hl
+	cp EGG
+	jp nz, Function1707d
+	ld a, [hl]
+	and a
+	jp nz, Function1707d
+	ld [hl], $78
+
+	push de
+
+	callba Function4dbb8
+	callba MobileFn_10608d
+	ld a, [CurPartyMon]
+	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	dec a
+	call SetSeenAndCaughtMon
+
+	ld a, [CurPartySpecies]
+	cp TOGEPI
+	jr nz, .nottogepi
+	; set the event flag for hatching togepi
+	ld de, EVENT_TOGEPI_HATCHED
+	ld b, SET_FLAG
+	call EventFlagAction
+.nottogepi
+
+	pop de
+
+	ld a, [CurPartySpecies]
+	dec de
+	ld [de], a
+	ld [wd265], a
+	ld [CurSpecies], a
+	call GetPokemonName
+	xor a
+	ld [wd26b], a
+	call GetBaseData
+	ld a, [CurPartyMon]
+	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call AddNTimes
+	push hl
+	ld bc, MON_MAXHP
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	push hl
+	ld bc, MON_LEVEL
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	pop hl
+	push hl
+	ld bc, MON_STATUS
+	add hl, bc
+	xor a
+	ld [hli], a
+	ld [hl], a
+	pop hl
+	push hl
+	ld bc, MON_EXP + 2
+	add hl, bc
+	ld b, $0
+	predef CalcPkmnStats
+	pop bc
+	ld hl, MON_MAXHP
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, MON_HP
+	add hl, bc
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hl], a
+	ld hl, MON_ID
+	add hl, bc
+	ld a, [PlayerID]
+	ld [hli], a
+	ld a, [PlayerID + 1]
+	ld [hl], a
+	ld a, [CurPartyMon]
+	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
+	ld bc, NAME_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, PlayerName
+	call CopyBytes
+	ld hl, UnknownText_0x1708b
+	call PrintText
+	ld a, [CurPartyMon]
+	ld hl, PartyMonNicknames
+	ld bc, PKMN_NAME_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	push de
+	ld hl, UnknownText_0x170ba
+	call PrintText
+	call YesNoBox
+	pop de
+	jr c, .nonickname
+	ld a, $1
+	ld [wd26b], a
+	xor a
+	ld [MonType], a
+	push de
+	ld b, $0
+	callba NamingScreen
+	pop hl
+	ld de, StringBuffer1
+	call InitName
+	jr Function1707d
+.nonickname
+	ld hl, StringBuffer1
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+
+Function1707d: ; 1707d (5:707d)
+	ld hl, CurPartyMon
+	inc [hl]
+	pop hl
+	ld de, PARTYMON_STRUCT_LENGTH
+	add hl, de
+	pop de
+	jp Function16f7a
+
+Function1708a: ; 1708a (5:708a)
+	ret
+; 1708b (5:708b)
+
+UnknownText_0x1708b: ; 0x1708b
+	; Huh? @ @
+	text_jump UnknownText_0x1c0db0
+	start_asm
+; 0x17090
+
+Function17090: ; 17090
+	ld hl, VramState
+	res 0, [hl]
+	push hl
+	push de
+	push bc
+	ld a, [CurPartySpecies]
+	push af
+	call Function1728f
+	ld hl, UnknownText_0x170b0
+	call PrintText
+	pop af
+	ld [CurPartySpecies], a
+	pop bc
+	pop de
+	pop hl
+	ld hl, UnknownText_0x170b5
+	ret
+; 170b0 (5:70b0)
+
+UnknownText_0x170b0: ; 0x170b0
+	;
+	text_jump UnknownText_0x1c0db8
+	db "@"
+; 0x170b5
+
+UnknownText_0x170b5: ; 0x170b5
+	; came out of its EGG!@ @
+	text_jump UnknownText_0x1c0dba
+	db "@"
+; 0x170ba
+
+UnknownText_0x170ba: ; 0x170ba
+	; Give a nickname to @ ?
+	text_jump UnknownText_0x1c0dd8
+	db "@"
+; 0x170bf
+
+Function170bf: ; 170bf
+	call Function17197
+	ld d, h
+	ld e, l
+	ld b, NUM_MOVES
+.loop
+	ld a, [de]
+	and a
+	jr z, .done
+	ld hl, wEggMonMoves
+	ld c, NUM_MOVES
+.next
+	ld a, [de]
+	cp [hl]
+	jr z, .skip
+	inc hl
+	dec c
+	jr nz, .next
+	call Function170e4
+	jr nc, .skip
+	call Function17169
+
+.skip
+	inc de
+	dec b
+	jr nz, .loop
+
+.done
+	ret
+; 170e4
+
+Function170e4: ; 170e4
+GLOBAL EggMoves
+
+	push bc
+	ld a, [wEggMonSpecies]
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, EggMovePointers
+rept 2
+	add hl, bc
+endr
+	ld a, BANK(EggMovePointers)
+	call GetFarHalfword
+.loop
+	ld a, BANK(EggMoves)
+	call GetFarByte
+	cp -1
+	jr z, .found_mon
+	ld b, a
+	ld a, [de]
+	cp b
+	jr z, .done_carry
+	inc hl
+	jr .loop
+
+.found_mon
+	call Function1720b
+	ld b, NUM_MOVES
+.loop2
+	ld a, [de]
+	cp [hl]
+	jr z, .found_eggmove
+	inc hl
+	dec b
+	jr z, .inherit_tmhm
+	jr .loop2
+
+.found_eggmove
+	ld a, [wEggMonSpecies]
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, EvosAttacksPointers
+rept 2
+	add hl, bc
+endr
+	ld a, BANK(EvosAttacksPointers)
+	call GetFarHalfword
+.loop3
+	ld a, BANK(EvosAttacks)
+	call GetFarByte
+	inc hl
+	and a
+	jr nz, .loop3
+.loop4
+	ld a, BANK(EvosAttacks)
+	call GetFarByte
+	and a
+	jr z, .inherit_tmhm
+	inc hl
+	ld a, BANK(EvosAttacks)
+	call GetFarByte
+	ld b, a
+	ld a, [de]
+	cp b
+	jr z, .done_carry
+	inc hl
+	jr .loop4
+
+.inherit_tmhm
+	ld hl, TMHMMoves
+.loop5
+	ld a, BANK(TMHMMoves)
+	call GetFarByte
+	inc hl
+	and a
+	jr z, .done
+	ld b, a
+	ld a, [de]
+	cp b
+	jr nz, .loop5
+	ld [wd262], a
+	predef CanLearnTMHMMove
+	ld a, c
+	and a
+	jr z, .done
+
+.done_carry
+	pop bc
+	scf
+	ret
+
+.done
+	pop bc
+	and a
+	ret
+; 17169
+
+Function17169: ; 17169
+	push de
+	push bc
+	ld a, [de]
+	ld b, a
+	ld hl, wEggMonMoves
+	ld c, NUM_MOVES
+.loop
+	ld a, [hli]
+	and a
+	jr z, .done
+	dec c
+	jr nz, .loop
+	ld de, wEggMonMoves
+	ld hl, wEggMonMoves + 1
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+
+.done
+	dec hl
+	ld [hl], b
+	ld hl, wEggMonMoves
+	ld de, wEggMonPP
+	predef FillPP
+	pop bc
+	pop de
+	ret
+; 17197
+
+Function17197: ; 17197
+	ld hl, wBreedMon2Moves
+	ld a, [wBreedMon1Species]
+	cp DITTO
+	jr z, .ditto1
+	ld a, [wBreedMon2Species]
+	cp DITTO
+	jr z, .ditto2
+	ld a, [wDittoInDaycare]
+	and a
+	ret z
+	ld hl, wBreedMon1Moves
+	ret
+
+.ditto1
+	ld a, [CurPartySpecies]
+	push af
+	ld a, [wBreedMon2Species]
+	ld [CurPartySpecies], a
+	ld a, [wBreedMon2DVs]
+	ld [TempMonDVs], a
+	ld a, [wBreedMon2DVs + 1]
+	ld [TempMonDVs + 1], a
+	ld a, $3
+	ld [MonType], a
+	predef GetGender
+	jr c, .inherit_mon2_moves
+	jr nz, .inherit_mon2_moves
+	jr .inherit_mon1_moves
+
+.ditto2
+	ld a, [CurPartySpecies]
+	push af
+	ld a, [wBreedMon1Species]
+	ld [CurPartySpecies], a
+	ld a, [wBreedMon1DVs]
+	ld [TempMonDVs], a
+	ld a, [wBreedMon1DVs + 1]
+	ld [TempMonDVs + 1], a
+	ld a, $3
+	ld [MonType], a
+	predef GetGender
+	jr c, .inherit_mon1_moves
+	jr nz, .inherit_mon1_moves
+
+.inherit_mon2_moves
+	ld hl, wBreedMon2Moves
+	pop af
+	ld [CurPartySpecies], a
+	ret
+
+.inherit_mon1_moves
+	ld hl, wBreedMon1Moves
+	pop af
+	ld [CurPartySpecies], a
+	ret
+; 1720b
+
+Function1720b: ; 1720b
+	ld hl, wBreedMon1Moves
+	ld a, [wBreedMon1Species]
+	cp DITTO
+	ret z
+	ld a, [wBreedMon2Species]
+	cp DITTO
+	jr z, .ditto
+	ld a, [wDittoInDaycare]
+	and a
+	ret z
+
+.ditto
+	ld hl, wBreedMon2Moves
+	ret
+; 17224
+
+
+Function17224: ; 17224 (5:7224)
+	push de
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	ld hl, BattleMonDVs
+	predef GetUnownLetter
+	pop de
+	predef_jump GetFrontpic
+
+Function1723c: ; 1723c (5:723c)
+	push de
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	ld hl, BattleMonDVs
+	predef GetUnownLetter
+	pop de
+	predef_jump Function5108b
+
+Function17254: ; 17254 (5:7254)
+	push af
+	call WaitTop
+	push hl
+	push bc
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	pop bc
+	pop hl
+	ld a, b
+	ld [hBGMapAddress + 1], a
+	ld a, c
+	ld [hFillBox], a
+	lb bc, 7, 7
+	predef FillBox
+	pop af
+	call Function17363
+	call SetPalettes
+	jp WaitBGMap
+
+Function1727f: ; 1727f (5:727f)
+	push hl
+	push de
+	push bc
+	callab Function8cf69
+	call DelayFrame
+	pop bc
+	pop de
+	pop hl
+	ret
+
+Function1728f: ; 1728f (5:728f)
+	ld a, [wd265]
+	ld [wJumptableIndex], a
+	ld a, [CurSpecies]
+	push af
+	ld de, MUSIC_NONE
+	call PlayMusic
+	callba Function8000
+	call DisableLCD
+	ld hl, EggHatchGFX
+	ld de, VTiles0 tile $00
+	ld bc, $20
+	ld a, BANK(EggHatchGFX)
+	call FarCopyBytes
+	callba Function8cf53
+	ld de, VTiles2 tile $00
+	ld a, [wJumptableIndex]
+	call Function1723c
+	ld de, VTiles2 tile $31
+	ld a, EGG
+	call Function17224
+	ld de, MUSIC_EVOLUTION
+	call PlayMusic
+	call EnableLCD
+	hlcoord 7, 4
+	ld b, $98
+	ld c, $31
+	ld a, EGG
+	call Function17254
+	ld c, $50
+	call DelayFrames
+	xor a
+	ld [wcf64], a
+	ld a, [hSCX]
+	ld b, a
+.asm_172ee
+	ld hl, wcf64
+	ld a, [hl]
+	inc [hl]
+	cp $8
+	jr nc, .asm_17327
+	ld e, [hl]
+.asm_172f8
+	ld a, $2
+	ld [hSCX], a
+	ld a, $fe
+	ld [wc3c0], a
+	call Function1727f
+	ld c, $2
+	call DelayFrames
+	ld a, $fe
+	ld [hSCX], a
+	ld a, $2
+	ld [wc3c0], a
+	call Function1727f
+	ld c, $2
+	call DelayFrames
+	dec e
+	jr nz, .asm_172f8
+	ld c, $10
+	call DelayFrames
+	call Function1736d
+	jr .asm_172ee
+.asm_17327
+	ld de, SFX_EGG_HATCH
+	call PlaySFX
+	xor a
+	ld [hSCX], a
+	ld [wc3c0], a
+	call ClearSprites
+	call Function173b3
+	hlcoord 6, 3
+	ld b, $98
+	ld c, $0
+	ld a, [wJumptableIndex]
+	call Function17254
+	call Function17418
+	call WaitSFX
+	ld a, [wJumptableIndex]
+	ld [CurPartySpecies], a
+	hlcoord 6, 3
+	ld d, $0
+	ld e, ANIM_MON_HATCH
+	predef AnimateFrontpic
+	pop af
+	ld [CurSpecies], a
+	ret
+
+Function17363: ; 17363 (5:7363)
+	ld [PlayerHPPal], a
+	ld b, $b
+	ld c, $0
+	jp GetSGBLayout
+
+Function1736d: ; 1736d (5:736d)
+	ld a, [wcf64]
+	dec a
+	and $7
+	cp $7
+	ret z
+	srl a
+	ret nc
+	swap a
+	srl a
+	add $4c
+	ld d, a
+	ld e, $58
+	ld a, $19
+	call Function3b2a
+	ld hl, $3
+	add hl, bc
+	ld [hl], $0
+	ld de, SFX_EGG_CRACK
+	jp PlaySFX
+; 17393 (5:7393)
+
+EggHatchGFX: ; 17393
+INCBIN "gfx/unknown/017393.2bpp"
+; 173b3
+
+Function173b3: ; 173b3 (5:73b3)
+	callba Function8cf53
+	ld hl, Unknown_173ef
+.loop
+	ld a, [hli]
+	cp $ff
+	jr z, .done
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	push hl
+	push bc
+	ld a, $1c
+	call Function3b2a
+	ld hl, $3
+	add hl, bc
+	ld [hl], $0
+	pop de
+	ld a, e
+	ld hl, $1
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	ld hl, $b
+	add hl, bc
+	ld [hl], d
+	pop hl
+	jr .loop
+.done
+	ld de, SFX_EGG_HATCH
+	call PlaySFX
+	call Function1727f
+	ret
+; 173ef (5:73ef)
+
+Unknown_173ef: ; 173ef
+; Probably OAM.
+	db $54, $48, $00, $3c
+	db $5c, $48, $01, $04
+	db $54, $50, $00, $30
+	db $5c, $50, $01, $10
+	db $54, $58, $02, $24
+	db $5c, $58, $03, $1c
+	db $50, $4c, $00, $36
+	db $60, $4c, $01, $0a
+	db $50, $54, $02, $2a
+	db $60, $54, $03, $16
+	db $ff
+; 17418
+
+Function17418: ; 17418 (5:7418)
+	ld c, $81
+.asm_1741a
+	call Function1727f
+	dec c
+	jr nz, .asm_1741a
+	ret
+
+Special_DayCareMon1: ; 17421
+	ld hl, UnknownText_0x17467
+	call PrintText
+	ld a, [wBreedMon1Species]
+	call PlayCry
+	ld a, [wDaycareLady]
+	bit 0, a
+	jr z, Function1745f
+	call KeepTextOpen
+	ld hl, wBreedMon2Nick
+	call Function1746c
+	jp PrintText
+
+Special_DayCareMon2: ; 17440
+	ld hl, UnknownText_0x17462
+	call PrintText
+	ld a, [wBreedMon2Species]
+	call PlayCry
+	ld a, [wDaycareMan]
+	bit 0, a
+	jr z, Function1745f
+	call KeepTextOpen
+	ld hl, wBreedMon1Nick
+	call Function1746c
+	jp PrintText
+
+Function1745f: ; 1745f
+	jp WaitPressAorB_BlinkCursor
+; 17462
+
+UnknownText_0x17462: ; 0x17462
+	; It's @ that was left with the DAY-CARE LADY.
+	text_jump UnknownText_0x1c0df3
+	db "@"
+; 0x17467
+
+UnknownText_0x17467: ; 0x17467
+	; It's @ that was left with the DAY-CARE MAN.
+	text_jump UnknownText_0x1c0e24
+	db "@"
+; 0x1746c
+
+Function1746c: ; 1746c
+	push bc
+	ld de, StringBuffer1
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	call Function16e1d
+	pop bc
+	ld a, [wd265]
+	ld hl, UnknownText_0x1749c
+	cp $ff
+	jr z, .asm_1749b
+	ld hl, UnknownText_0x174a1
+	and a
+	jr z, .asm_1749b
+	ld hl, UnknownText_0x174a6
+	cp 230
+	jr nc, .asm_1749b
+	cp 70
+	ld hl, UnknownText_0x174ab
+	jr nc, .asm_1749b
+	ld hl, UnknownText_0x174b0
+
+.asm_1749b
+	ret
+; 1749c
+
+UnknownText_0x1749c: ; 0x1749c
+	; It's brimming with energy.
+	text_jump UnknownText_0x1c0e54
+	db "@"
+; 0x174a1
+
+UnknownText_0x174a1: ; 0x174a1
+	; It has no interest in @ .
+	text_jump UnknownText_0x1c0e6f
+	db "@"
+; 0x174a6
+
+UnknownText_0x174a6: ; 0x174a6
+	; It appears to care for @ .
+	text_jump UnknownText_0x1c0e8d
+	db "@"
+; 0x174ab
+
+UnknownText_0x174ab: ; 0x174ab
+	; It's friendly with @ .
+	text_jump UnknownText_0x1c0eac
+	db "@"
+; 0x174b0
+
+UnknownText_0x174b0: ; 0x174b0
+	; It shows interest in @ .
+	text_jump UnknownText_0x1c0ec6
+	db "@"
+; 0x174b5
+
+Function_174b5: ; 174b5
+	ld hl, String_174b9
+	ret
+; 174b9
+
+String_174b9: ; 174b9
+	db "@"
+; 174ba
+
--- /dev/null
+++ b/engine/card_flip.asm
@@ -1,0 +1,2560 @@
+_CardFlip: ; e00ee (38:40ee)
+	ld hl, Options
+	set 4, [hl]
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld de, MUSIC_NONE
+	call PlayMusic
+	call DelayFrame
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsExtra
+	ld hl, LZ_e0d16
+	ld de, VTiles2 tile $00
+	call Decompress
+	ld hl, LZ_e0ea8
+	ld de, VTiles2 tile $3e
+	call Decompress
+	ld hl, LZ_e0cdb
+	ld de, VTiles0 tile $00
+	call Decompress
+	ld hl, GFX_e0cf6
+	ld de, VTiles1 tile $6f
+	ld bc, $10
+	call CopyBytes
+	ld hl, GFX_e0d06
+	ld de, VTiles1 tile $75
+	ld bc, $10
+	call CopyBytes
+	call Functione0521
+	call Functione04c1
+	call Functione0c37
+	call EnableLCD
+	call Function3200
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	call DelayFrame
+	xor a
+	ld [wJumptableIndex], a
+	ld a, $2
+	ld [wcf64], a
+	ld [wcf65], a
+	ld de, MUSIC_GAME_CORNER
+	call PlayMusic
+.MasterLoop
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .leavethegame
+	call .CardFlip
+	jr .MasterLoop
+.leavethegame
+	call WaitSFX
+	ld de, SFX_QUIT_SLOTS
+	call PlaySFX
+	call WaitSFX
+	call ClearBGPalettes
+	ld hl, Options
+	res 4, [hl]
+	ret
+
+.CardFlip: ; e0191 (38:4191)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e01a0 (38:41a0)
+
+.Jumptable: ; e01a0
+	dw .AskPlayWithThree
+	dw .DeductCoins
+	dw .ChooseACard
+	dw .PlaceYourBet
+	dw .CheckTheCard
+	dw .TabulateTheResult
+	dw .PlayAgain
+	dw .Quit
+; e01b0
+
+.Increment: ; e01b0
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e01b5
+
+.AskPlayWithThree: ; e01b5
+	ld hl, .PlayWithThreeCoinsText
+	call Functione0489
+	call YesNoBox
+	jr c, .SaidNo
+	call Functione0366
+	call .Increment
+	ret
+
+.SaidNo
+	ld a, $7
+	ld [wJumptableIndex], a
+	ret
+; e01cd
+
+.PlayWithThreeCoinsText: ; 0xe01cd
+	; Play with three coins?
+	text_jump UnknownText_0x1c5793
+	db "@"
+; 0xe01d2
+
+.DeductCoins: ; e01d2
+	ld a, [Coins]
+	ld h, a
+	ld a, [Coins + 1]
+	ld l, a
+	ld a, h
+	and a
+	jr nz, .deduct ; You have at least 256 coins.
+	ld a, l
+	cp 3
+	jr nc, .deduct ; You have at least 3 coins.
+	ld hl, .NotEnoughCoinsText
+	call Functione0489
+	ld a, $7
+	ld [wJumptableIndex], a
+	ret
+
+.deduct
+	ld de, -3
+	add hl, de
+	ld a, h
+	ld [Coins], a
+	ld a, l
+	ld [Coins + 1], a
+	ld de, SFX_TRANSACTION
+	call PlaySFX
+	xor a
+	ld [hBGMapMode], a
+	call Functione049c
+	ld a, $1
+	ld [hBGMapMode], a
+	call WaitSFX
+	call .Increment
+	ret
+; e0212
+
+.NotEnoughCoinsText: ; 0xe0212
+	; Not enough coins…
+	text_jump UnknownText_0x1c57ab
+	db "@"
+; 0xe0217
+
+.ChooseACard: ; e0217
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	lb bc, 12, 9
+	call Functione04e5
+	hlcoord 9, 0
+	ld bc, SCREEN_WIDTH
+	ld a, [wc6e8]
+	call AddNTimes
+	ld [hl], $f5
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, 20
+	call DelayFrames
+	hlcoord 2, 0
+	call Functione03c1
+	ld a, $1
+	ld [hBGMapMode], a
+	ld c, 20
+	call DelayFrames
+	hlcoord 2, 6
+	call Functione03c1
+	call WaitBGMap
+	ld hl, .ChooseACardText
+	call Functione0489
+	xor a
+	ld [wcf66], a
+.loop
+	call JoyTextDelay
+	ld a, [hJoyLast]
+	and A_BUTTON
+	jr nz, .next
+	ld de, SFX_KINESIS
+	call PlaySFX
+	call Functione0849
+	ld c, 4
+	call DelayFrames
+	ld hl, wcf66
+	ld a, [hl]
+	xor $1
+	ld [hl], a
+	jr .loop
+
+.next
+	ld de, SFX_SLOT_MACHINE_START
+	call PlaySFX
+	ld a, $3
+.loop2
+	push af
+	call Functione0849
+	ld c, 4
+	call DelayFrames
+	call ClearSprites
+	ld c, 4
+	call DelayFrames
+	pop af
+	dec a
+	jr nz, .loop2
+	ld hl, wcf66
+	ld a, [hl]
+	push af
+	xor $1
+	ld [hl], a
+	call Functione03ac
+	lb bc, 6, 5
+	call Functione04e5
+	pop af
+	ld [wcf66], a
+	call .Increment
+	ret
+; e02b2
+
+.ChooseACardText: ; 0xe02b2
+	; Choose a card.
+	text_jump UnknownText_0x1c57be
+	db "@"
+; 0xe02b7
+
+.PlaceYourBet: ; e02b7
+	ld hl, .PlaceYourBetText
+	call Functione0489
+.betloop
+	call JoyTextDelay
+	ld a, [hJoyLast]
+	and A_BUTTON
+	jr nz, .betdone
+	call Functione089c
+	call Functione0960
+	call DelayFrame
+	jr .betloop
+
+.betdone
+	call .Increment
+	ret
+; e02d5
+
+.PlaceYourBetText: ; 0xe02d5
+	; Place your bet.
+	text_jump UnknownText_0x1c57ce
+	db "@"
+; 0xe02da
+
+.CheckTheCard: ; e02da
+	xor a
+	ld [hVBlankCounter], a
+	call Functione0960
+	call WaitSFX
+	ld de, SFX_CHOOSE_A_CARD
+	call PlaySFX
+	call WaitSFX
+	ld a, [wc6e8]
+	ld e, a
+	ld d, 0
+	ld hl, wc6d0
+rept 2
+	add hl, de
+endr
+	ld a, [wcf66]
+	ld e, a
+	add hl, de
+	ld a, [hl]
+	ld [CurEnemyMoveNum], a
+	ld e, a
+	ld hl, wc6ea
+	add hl, de
+	ld [hl], $1
+	call Functione03ac
+	call Functione03ec
+	call Function3200
+	call .Increment
+	ret
+; e0314
+
+.TabulateTheResult: ; e0314
+	call Functione0637
+	call WaitPressAorB_BlinkCursor
+	call .Increment
+	ret
+; e031e
+
+.PlayAgain: ; e031e
+	call ClearSprites
+	ld hl, .PlayAgainText
+	call Functione0489
+	call YesNoBox
+	jr nc, .Continue
+	call .Increment
+	ret
+
+.Continue
+	ld a, [wc6e8]
+	inc a
+	ld [wc6e8], a
+	cp $c
+	jr c, .KeepTheCurrentDeck
+	call Functione04c1
+	ld a, $1
+	ld [hBGMapMode], a
+	call Functione0366
+	ld hl, .CardsShuffledText
+	call PrintText
+	jr .LoopAround
+
+.KeepTheCurrentDeck
+	call Functione0534
+
+.LoopAround
+	ld a, $1
+	ld [wJumptableIndex], a
+	ret
+; e0356
+
+.PlayAgainText: ; 0xe0356
+	; Want to play again?
+	text_jump UnknownText_0x1c57df
+	db "@"
+; 0xe035b
+
+.CardsShuffledText: ; 0xe035b
+	; The cards have been shuffled.
+	text_jump UnknownText_0x1c57f4
+	db "@"
+; 0xe0360
+
+.Quit: ; e0360
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+; e0366
+
+Functione0366: ; e0366
+	ld hl, wc6d0
+	ld bc, $18
+	xor a
+	call ByteFill
+	ld de, wc6d0
+	ld c, $17
+.asm_e0375
+	call Random
+	and $1f
+	cp $18
+	jr nc, .asm_e0375
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0375
+	ld [hl], c
+	dec c
+	jr nz, .asm_e0375
+	xor a
+	ld [wc6e8], a
+	ld hl, wc6ea
+	ld bc, $18
+	call ByteFill
+	ret
+; e0398
+
+Functione0398: ; e0398
+	ld hl, 0
+	ld bc, 6
+	ld a, [wcf64]
+	call AddNTimes
+	ld b, $0
+	ld a, [wcf65]
+	ld c, a
+	add hl, bc
+	ret
+; e03ac
+
+Functione03ac: ; e03ac
+	ld a, [wcf66]
+	and a
+	jr nz, .asm_e03ba
+	hlcoord 2, 0
+	ld bc, $1018
+	jr .asm_e03c0
+
+.asm_e03ba
+	hlcoord 2, 6
+	ld bc, $4018
+
+.asm_e03c0
+	ret
+; e03c1
+
+Functione03c1: ; e03c1
+	xor a
+	ld [hBGMapMode], a
+	ld de, Unknown_e03ce
+	lb bc, 6, 5
+	call Functione04f7
+	ret
+; e03ce
+
+Unknown_e03ce: ; e03ce
+	db $08, $09, $09, $09, $0a
+	db $0b, $28, $2b, $28, $0c
+	db $0b, $2c, $2d, $2e, $0c
+	db $0b, $2f, $30, $31, $0c
+	db $0b, $32, $33, $34, $0c
+	db $0d, $0e, $0e, $0e, $0f
+; e03ec
+
+Functione03ec: ; e03ec
+	xor a
+	ld [hBGMapMode], a
+	push hl
+	push hl
+	ld de, Unknown_e043b
+	lb bc, 6, 5
+	call Functione04f7
+	ld a, [CurEnemyMoveNum]
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_e0459
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	pop hl
+	ld bc, $17
+	add hl, bc
+	ld [hl], e
+	ld bc, SCREEN_HEIGHT
+	add hl, bc
+	ld a, d
+	ld de, SCREEN_WIDTH
+	ld b, $3
+.asm_e0418
+	push hl
+	ld c, $3
+.asm_e041b
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_e041b
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_e0418
+	pop hl
+	ld a, [hCGB]
+	and a
+	ret z
+	ld de, AttrMap - TileMap
+	add hl, de
+	ld a, [CurEnemyMoveNum]
+	and 3
+	inc a
+	lb bc, 6, 5
+	call Functione04e7
+	ret
+; e043b
+
+Unknown_e043b: ; e043b
+	db $18, $19, $19, $19, $1a
+	db $1b, $35, $7f, $7f, $1c
+	db $0b, $28, $28, $28, $0c
+	db $0b, $28, $28, $28, $0c
+	db $0b, $28, $28, $28, $0c
+	db $1d, $1e, $1e, $1e, $1f
+; e0459
+
+Unknown_e0459: ; e0459
+	db $f7,$4e, $f7,$57, $f7,$69, $f7,$60
+	db $f8,$4e, $f8,$57, $f8,$69, $f8,$60
+	db $f9,$4e, $f9,$57, $f9,$69, $f9,$60
+	db $fa,$4e, $fa,$57, $fa,$69, $fa,$60
+	db $fb,$4e, $fb,$57, $fb,$69, $fb,$60
+	db $fc,$4e, $fc,$57, $fc,$69, $fc,$60
+; e0489
+
+Functione0489: ; e0489
+	push hl
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call TextBox
+	pop hl
+	call PrintTextBoxText
+	call Functione049c
+	ret
+; e049c
+
+Functione049c: ; e049c
+	hlcoord 9, 15
+	ld b, $1
+	ld c, $9
+	call TextBox
+	hlcoord 10, 16
+	ld de, String_e04bc
+	call PlaceString
+	hlcoord 15, 16
+	ld de, Coins
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+	call PrintNum
+	ret
+; e04bc
+
+String_e04bc:
+	db "COIN@"
+; e04c1
+
+Functione04c1: ; e04c1 (38:44c1)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	ld a, $29
+	call ByteFill
+	hlcoord 9, 0
+	ld de, Unknown_e110c
+	lb bc, 12, 11
+	call Functione04f7
+	hlcoord 0, 12
+	lb bc, 4, 18
+	call TextBox
+	ret
+; e04e5 (38:44e5)
+
+Functione04e5: ; e04e5
+	ld a, $29
+
+Functione04e7: ; e04e7 (38:44e7)
+	push bc
+	push hl
+.asm_e04e9
+	ld [hli], a
+	dec c
+	jr nz, .asm_e04e9
+	pop hl
+	ld bc, $14
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, Functione04e7
+	ret
+
+Functione04f7: ; e04f7 (38:44f7)
+	push bc
+	push hl
+.asm_e04f9
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_e04f9
+	pop hl
+	ld bc, $14
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, Functione04f7
+	ret
+; e0509 (38:4509)
+
+Functione0509: ; e0509
+	ld de, Sprites
+	ld a, [hli]
+.asm_e050d
+	push af
+	ld a, [hli]
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_e050d
+	ret
+; e0521
+
+Functione0521: ; e0521 (38:4521)
+	ld de, VTiles1 tile $76
+	ld hl, $8f62
+	ld bc, $9e
+	call CopyBytes
+	ld hl, $8ffe
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+; e0534 (38:4534)
+
+Functione0534: ; e0534
+	xor a
+	ld [hBGMapMode], a
+	ld a, [CurEnemyMoveNum]
+	ld e, a
+	ld d, 0
+	and 3
+	ld c, a
+	ld b, 0
+	ld a, e
+	and $1c
+	srl a
+	add Jumptable_e0553 % $100
+	ld l, a
+	ld a, 0
+	adc Jumptable_e0553 / $100
+	ld h, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e0553
+
+Jumptable_e0553: ; e0553
+	dw Functione055f
+	dw Functione0583
+	dw Functione05a7
+	dw Functione05cb
+	dw Functione05ef
+	dw Functione0613
+; e055f
+
+Functione055f: ; e055f
+	ld hl, wc6e6 + 8
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0575
+	hlcoord 13, 3
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $37
+	ret
+
+.asm_e0575
+	hlcoord 13, 3
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3d
+	ret
+; e0583
+
+Functione0583: ; e0583
+	ld hl, wc6e6
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0599
+	hlcoord 13, 4
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3b
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+
+.asm_e0599
+	hlcoord 13, 4
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3d
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+; e05a7
+
+Functione05a7: ; e05a7
+	ld hl, wc6e6 + 8
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e05bd
+	hlcoord 13, 6
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $38
+	ret
+
+.asm_e05bd
+	hlcoord 13, 6
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3d
+	ret
+; e05cb
+
+Functione05cb: ; e05cb
+	ld hl, wc6e6
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e05e1
+	hlcoord 13, 7
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3c
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+
+.asm_e05e1
+	hlcoord 13, 7
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3d
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+; e05ef
+
+Functione05ef: ; e05ef
+	ld hl, wc6e6 + 8
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0605
+	hlcoord 13, 9
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $39
+	ret
+
+.asm_e0605
+	hlcoord 13, 9
+rept 2
+	add hl, bc
+endr
+	ld [hl], $36
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3d
+	ret
+; e0613
+
+Functione0613: ; e0613
+	ld hl, wc6e6
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e0629
+	hlcoord 13, 10
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3c
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+
+.asm_e0629
+	hlcoord 13, 10
+rept 2
+	add hl, bc
+endr
+	ld [hl], $3d
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hl], $3a
+	ret
+; e0637
+
+Functione0637: ; e0637
+	call Functione0398
+	add hl, hl
+	ld de, Jumptable_e0643
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e0643
+
+Jumptable_e0643: ; e0643
+	dw Functione06a3
+	dw Functione06a3
+	dw Functione06a6
+	dw Functione06a6
+	dw Functione06b0
+	dw Functione06b0
+	dw Functione06a3
+	dw Functione06a3
+	dw Functione06ec
+	dw Functione06f6
+	dw Functione0702
+	dw Functione070e
+	dw Functione06c2
+	dw Functione0722
+	dw Functione0770
+	dw Functione0774
+	dw Functione0778
+	dw Functione077c
+	dw Functione06c2
+	dw Functione072c
+	dw Functione0780
+	dw Functione0784
+	dw Functione0788
+	dw Functione078c
+	dw Functione06cc
+	dw Functione0738
+	dw Functione0790
+	dw Functione0794
+	dw Functione0798
+	dw Functione079c
+	dw Functione06cc
+	dw Functione0744
+	dw Functione07a0
+	dw Functione07a4
+	dw Functione07a8
+	dw Functione07ac
+	dw Functione06d8
+	dw Functione0750
+	dw Functione07b0
+	dw Functione07b4
+	dw Functione07b8
+	dw Functione07bc
+	dw Functione06d8
+	dw Functione075c
+	dw Functione07c0
+	dw Functione07c4
+	dw Functione07c8
+	dw Functione07cc
+; e06a3
+
+Functione06a3: ; e06a3
+	jp Functione07db
+; e06a6
+
+Functione06a6: ; e06a6
+	ld a, [CurEnemyMoveNum]
+	and $2
+	jp nz, Functione07db
+	jr Functione06ba
+
+Functione06b0: ; e06b0
+	ld a, [CurEnemyMoveNum]
+	and $2
+	jr nz, Functione06ba
+	jp Functione07db
+
+Functione06ba: ; e06ba
+	ld c, $6
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e06c2
+
+Functione06c2: ; e06c2
+	ld a, [CurEnemyMoveNum]
+	and $18
+	jr z, Functione06e4
+	jp Functione07db
+
+Functione06cc: ; e06cc
+	ld a, [CurEnemyMoveNum]
+	and $18
+	cp $8
+	jr z, Functione06e4
+	jp Functione07db
+
+Functione06d8: ; e06d8
+	ld a, [CurEnemyMoveNum]
+	and $18
+	cp $10
+	jr z, Functione06e4
+	jp Functione07db
+
+Functione06e4: ; e06e4
+	ld c, $9
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e06ec
+
+Functione06ec: ; e06ec
+	ld a, [CurEnemyMoveNum]
+	and $3
+	jr z, Functione071a
+	jp Functione07db
+
+Functione06f6: ; e06f6
+	ld a, [CurEnemyMoveNum]
+	and $3
+	cp $1
+	jr z, Functione071a
+	jp Functione07db
+
+Functione0702: ; e0702
+	ld a, [CurEnemyMoveNum]
+	and $3
+	cp $2
+	jr z, Functione071a
+	jp Functione07db
+
+Functione070e: ; e070e
+	ld a, [CurEnemyMoveNum]
+	and $3
+	cp $3
+	jr z, Functione071a
+	jp Functione07db
+
+Functione071a: ; e071a
+	ld c, $c
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e0722
+
+Functione0722: ; e0722
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	jr z, Functione0768
+	jp Functione07db
+
+Functione072c: ; e072c
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $4
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0738: ; e0738
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $8
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0744: ; e0744
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $c
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0750: ; e0750
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $10
+	jr z, Functione0768
+	jp Functione07db
+
+Functione075c: ; e075c
+	ld a, [CurEnemyMoveNum]
+	and $1c
+	cp $14
+	jr z, Functione0768
+	jp Functione07db
+
+Functione0768: ; e0768
+	ld c, $12
+	ld de, SFX_2ND_PLACE
+	jp Functione07eb
+; e0770
+
+
+Functione0770: ; e0770
+	ld e, $0
+	jr Functione07ce
+
+Functione0774: ; e0774
+	ld e, $1
+	jr Functione07ce
+
+Functione0778: ; e0778
+	ld e, $2
+	jr Functione07ce
+
+Functione077c: ; e077c
+	ld e, $3
+	jr Functione07ce
+
+Functione0780: ; e0780
+	ld e, $4
+	jr Functione07ce
+
+Functione0784: ; e0784
+	ld e, $5
+	jr Functione07ce
+
+Functione0788: ; e0788
+	ld e, $6
+	jr Functione07ce
+
+Functione078c: ; e078c
+	ld e, $7
+	jr Functione07ce
+
+Functione0790: ; e0790
+	ld e, $8
+	jr Functione07ce
+
+Functione0794: ; e0794
+	ld e, $9
+	jr Functione07ce
+
+Functione0798: ; e0798
+	ld e, $a
+	jr Functione07ce
+
+Functione079c: ; e079c
+	ld e, $b
+	jr Functione07ce
+
+Functione07a0: ; e07a0
+	ld e, $c
+	jr Functione07ce
+
+Functione07a4: ; e07a4
+	ld e, $d
+	jr Functione07ce
+
+Functione07a8: ; e07a8
+	ld e, $e
+	jr Functione07ce
+
+Functione07ac: ; e07ac
+	ld e, $f
+	jr Functione07ce
+
+Functione07b0: ; e07b0
+	ld e, $10
+	jr Functione07ce
+
+Functione07b4: ; e07b4
+	ld e, $11
+	jr Functione07ce
+
+Functione07b8: ; e07b8
+	ld e, $12
+	jr Functione07ce
+
+Functione07bc: ; e07bc
+	ld e, $13
+	jr Functione07ce
+
+Functione07c0: ; e07c0
+	ld e, $14
+	jr Functione07ce
+
+Functione07c4: ; e07c4
+	ld e, $15
+	jr Functione07ce
+
+Functione07c8: ; e07c8
+	ld e, $16
+	jr Functione07ce
+
+Functione07cc: ; e07cc
+	ld e, $17
+
+Functione07ce: ; e07ce
+	ld a, [CurEnemyMoveNum]
+	cp e
+	jr nz, Functione07db
+	ld c, $48
+	ld de, SFX_2ND_PLACE
+	jr Functione07eb
+
+Functione07db: ; e07db
+	ld de, SFX_WRONG
+	call PlaySFX
+	ld hl, UnknownText_0xe0816
+	call Functione0489
+	call WaitSFX
+	ret
+
+Functione07eb: ; e07eb
+	push bc
+	push de
+	ld hl, UnknownText_0xe0811
+	call Functione0489
+	pop de
+	call PlaySFX
+	call WaitSFX
+	pop bc
+.asm_e07fb
+	push bc
+	call Functione0833
+	jr c, .asm_e0804
+	call Functione081b
+
+.asm_e0804
+	call Functione049c
+	ld c, 2
+	call DelayFrames
+	pop bc
+	dec c
+	jr nz, .asm_e07fb
+	ret
+; e0811
+
+UnknownText_0xe0811: ; 0xe0811
+	; Yeah!
+	text_jump UnknownText_0x1c5813
+	db "@"
+; 0xe0816
+
+UnknownText_0xe0816: ; 0xe0816
+	; Darn…
+	text_jump UnknownText_0x1c581a
+	db "@"
+; 0xe081b
+
+Functione081b: ; e081b
+	ld a, [Coins]
+	ld h, a
+	ld a, [Coins + 1]
+	ld l, a
+	inc hl
+	ld a, h
+	ld [Coins], a
+	ld a, l
+	ld [Coins + 1], a
+	ld de, SFX_PAY_DAY
+	call PlaySFX
+	ret
+; e0833
+
+Functione0833: ; e0833
+	ld a, [Coins]
+	cp 9999 / $100
+	jr c, .asm_e0847
+	jr z, .asm_e083e
+	jr .asm_e0845
+
+.asm_e083e
+	ld a, [Coins + 1]
+	cp 9999 % $100
+	jr c, .asm_e0847
+
+.asm_e0845
+	scf
+	ret
+
+.asm_e0847
+	and a
+	ret
+; e0849
+
+Functione0849: ; e0849
+	call Functione03ac
+	ld hl, Unknown_e0853
+	call Functione0509
+	ret
+; e0853
+
+Unknown_e0853: ; e0853
+	db 18
+	db $00, $00, $04, $00
+	db $00, $08, $06, $00
+	db $00, $10, $06, $00
+	db $00, $18, $06, $00
+	db $00, $20, $04, $20
+	db $08, $00, $05, $00
+	db $08, $20, $05, $20
+	db $10, $00, $05, $00
+	db $10, $20, $05, $20
+	db $18, $00, $05, $00
+	db $18, $20, $05, $20
+	db $20, $00, $05, $00
+	db $20, $20, $05, $20
+	db $28, $00, $04, $40
+	db $28, $08, $06, $40
+	db $28, $10, $06, $40
+	db $28, $18, $06, $40
+	db $28, $20, $04, $60
+; e089c
+
+Functione089c: ; e089c
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_LEFT
+	jp nz, Functione08b8
+	ld a, [hl]
+	and D_RIGHT
+	jp nz, Functione08ef
+	ld a, [hl]
+	and D_UP
+	jp nz, Functione090a
+	ld a, [hl]
+	and D_DOWN
+	jp nz, Functione093d
+	ret
+; e08b8
+
+Functione08b8: ; e08b8
+	ld hl, wcf65
+	ld a, [wcf64]
+	and a
+	jr z, .asm_e08d5
+	cp $1
+	jr z, .asm_e08cc
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	jp Functione0959
+
+.asm_e08cc
+	ld a, [hl]
+	cp $3
+	jr c, .asm_e08e2
+	dec [hl]
+	jp Functione0959
+
+.asm_e08d5
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $3
+	jr c, .asm_e08e2
+rept 2
+	dec [hl]
+endr
+	jp Functione0959
+
+.asm_e08e2
+	ld a, $2
+	ld [wcf64], a
+	ld a, $1
+	ld [wcf65], a
+	jp Functione0959
+; e08ef
+
+Functione08ef: ; e08ef
+	ld hl, wcf65
+	ld a, [wcf64]
+	and a
+	jr z, .asm_e08ff
+	ld a, [hl]
+	cp $5
+	ret nc
+	inc [hl]
+	jr Functione0959
+
+.asm_e08ff
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $4
+	ret nc
+rept 2
+	inc [hl]
+endr
+	jr Functione0959
+
+Functione090a: ; e090a
+	ld hl, wcf64
+	ld a, [wcf65]
+	and a
+	jr z, .asm_e0925
+	cp $1
+	jr z, .asm_e091d
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	jr Functione0959
+
+.asm_e091d
+	ld a, [hl]
+	cp $3
+	jr c, .asm_e0931
+	dec [hl]
+	jr Functione0959
+
+.asm_e0925
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $3
+	jr c, .asm_e0931
+rept 2
+	dec [hl]
+endr
+	jr Functione0959
+
+.asm_e0931
+	ld a, $1
+	ld [wcf64], a
+	ld a, $2
+	ld [wcf65], a
+	jr Functione0959
+
+Functione093d: ; e093d
+	ld hl, wcf64
+	ld a, [wcf65]
+	and a
+	jr z, .asm_e0950
+	ld hl, wcf64
+	ld a, [hl]
+	cp $7
+	ret nc
+	inc [hl]
+	jr Functione0959
+
+.asm_e0950
+	ld a, [hl]
+	and $e
+	ld [hl], a
+	cp $6
+	ret nc
+rept 2
+	inc [hl]
+endr
+
+Functione0959: ; e0959
+	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
+	call PlaySFX
+	ret
+; e0960
+
+Functione0960: ; e0960
+	call ClearSprites
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_e096d
+	ld a, [hVBlankCounter]
+	and $4
+	ret nz
+
+.asm_e096d
+	call Functione0398
+rept 2
+	add hl, hl
+endr
+	ld de, Unknown_e0981
+	add hl, de
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Functione0509
+	ret
+; e0981
+
+Unknown_e0981: ; e0981
+	dbbw $58, $10, Unknown_e0c26
+	dbbw $60, $10, Unknown_e0c26
+	dbbw $68, $10, Unknown_e0b8d
+	dbbw $68, $10, Unknown_e0b8d
+	dbbw $88, $10, Unknown_e0b8d
+	dbbw $88, $10, Unknown_e0b8d
+
+	dbbw $58, $18, Unknown_e0c26
+	dbbw $60, $18, Unknown_e0c26
+	dbbw $68, $18, Unknown_e0a5a
+	dbbw $78, $18, Unknown_e0a5a
+	dbbw $88, $18, Unknown_e0a5a
+	dbbw $98, $18, Unknown_e0a5a
+
+	dbbw $58, $28, Unknown_e0b14
+	dbbw $60, $28, Unknown_e0ac3
+	dbbw $68, $28, Unknown_e0a41
+	dbbw $78, $28, Unknown_e0a41
+	dbbw $88, $28, Unknown_e0a41
+	dbbw $98, $28, Unknown_e0a41
+	dbbw $58, $28, Unknown_e0b14
+
+	dbbw $60, $34, Unknown_e0ac3
+	dbbw $68, $34, Unknown_e0a41
+	dbbw $78, $34, Unknown_e0a41
+	dbbw $88, $34, Unknown_e0a41
+	dbbw $98, $34, Unknown_e0a41
+
+	dbbw $58, $40, Unknown_e0b14
+	dbbw $60, $40, Unknown_e0ac3
+	dbbw $68, $40, Unknown_e0a41
+	dbbw $78, $40, Unknown_e0a41
+	dbbw $88, $40, Unknown_e0a41
+	dbbw $98, $40, Unknown_e0a41
+	dbbw $58, $40, Unknown_e0b14
+
+	dbbw $60, $4c, Unknown_e0ac3
+	dbbw $68, $4c, Unknown_e0a41
+	dbbw $78, $4c, Unknown_e0a41
+	dbbw $88, $4c, Unknown_e0a41
+	dbbw $98, $4c, Unknown_e0a41
+
+	dbbw $58, $58, Unknown_e0b14
+	dbbw $60, $58, Unknown_e0ac3
+	dbbw $68, $58, Unknown_e0a41
+	dbbw $78, $58, Unknown_e0a41
+	dbbw $88, $58, Unknown_e0a41
+	dbbw $98, $58, Unknown_e0a41
+	dbbw $58, $58, Unknown_e0b14
+
+	dbbw $60, $64, Unknown_e0ac3
+	dbbw $68, $64, Unknown_e0a41
+	dbbw $78, $64, Unknown_e0a41
+	dbbw $88, $64, Unknown_e0a41
+	dbbw $98, $64, Unknown_e0a41
+; e0a41
+
+Unknown_e0a41: ; e0a41
+	db 6
+	db $00, $ff, $00, $80
+	db $00, $00, $02, $80
+	db $00, $08, $03, $80
+	db $05, $ff, $00, $c0
+	db $05, $00, $02, $c0
+	db $05, $08, $03, $80
+
+Unknown_e0a5a: ; e0a5a
+	db 26
+	db $00, $ff, $00, $80
+	db $00, $00, $02, $80
+	db $00, $08, $00, $a0
+	db $08, $ff, $01, $80
+	db $08, $08, $01, $a0
+	db $10, $ff, $01, $80
+	db $10, $08, $03, $80
+	db $18, $ff, $01, $80
+	db $18, $08, $03, $80
+	db $20, $ff, $01, $80
+	db $20, $08, $03, $80
+	db $28, $ff, $01, $80
+	db $28, $08, $03, $80
+	db $30, $ff, $01, $80
+	db $30, $08, $03, $80
+	db $38, $ff, $01, $80
+	db $38, $08, $03, $80
+	db $40, $ff, $01, $80
+	db $40, $08, $03, $80
+	db $48, $ff, $01, $80
+	db $48, $08, $03, $80
+	db $50, $ff, $01, $80
+	db $50, $08, $03, $80
+	db $51, $ff, $00, $c0
+	db $51, $00, $02, $c0
+	db $51, $08, $03, $80
+
+Unknown_e0ac3: ; e0ac3
+	db 20
+	db $00, $ff, $00, $80
+	db $00, $00, $02, $80
+	db $00, $08, $02, $80
+	db $00, $10, $03, $80
+	db $00, $18, $02, $80
+	db $00, $20, $03, $80
+	db $00, $28, $02, $80
+	db $00, $30, $03, $80
+	db $00, $38, $02, $80
+	db $00, $40, $03, $80
+	db $05, $ff, $00, $c0
+	db $05, $00, $02, $c0
+	db $05, $08, $02, $c0
+	db $05, $10, $03, $80
+	db $05, $18, $02, $c0
+	db $05, $20, $03, $80
+	db $05, $28, $02, $c0
+	db $05, $30, $03, $80
+	db $05, $38, $02, $c0
+	db $05, $40, $03, $80
+
+Unknown_e0b14: ; e0b14
+	db 30
+	db $00, $00, $00, $80
+	db $00, $08, $02, $80
+	db $00, $10, $02, $80
+	db $00, $18, $03, $80
+	db $00, $20, $02, $80
+	db $00, $28, $03, $80
+	db $00, $30, $02, $80
+	db $00, $38, $03, $80
+	db $00, $40, $02, $80
+	db $00, $48, $03, $80
+	db $08, $00, $01, $80
+	db $08, $18, $03, $80
+	db $08, $28, $03, $80
+	db $08, $38, $03, $80
+	db $08, $48, $03, $80
+	db $10, $00, $01, $80
+	db $10, $18, $03, $80
+	db $10, $28, $03, $80
+	db $10, $38, $03, $80
+	db $10, $48, $03, $80
+	db $11, $00, $00, $c0
+	db $11, $08, $02, $c0
+	db $11, $10, $02, $c0
+	db $11, $18, $03, $80
+	db $11, $20, $03, $80
+	db $11, $28, $03, $80
+	db $11, $30, $03, $80
+	db $11, $38, $03, $80
+	db $11, $40, $03, $80
+	db $11, $48, $03, $80
+
+Unknown_e0b8d: ; e0b8d
+	db 38
+	db $00, $ff, $00, $80
+	db $00, $18, $00, $a0
+	db $08, $ff, $01, $80
+	db $08, $18, $01, $a0
+	db $10, $ff, $01, $80
+	db $10, $18, $01, $a0
+	db $18, $ff, $01, $80
+	db $18, $08, $03, $80
+	db $18, $18, $03, $80
+	db $20, $ff, $01, $80
+	db $20, $08, $03, $80
+	db $20, $18, $03, $80
+	db $28, $ff, $01, $80
+	db $28, $08, $03, $80
+	db $28, $18, $03, $80
+	db $30, $ff, $01, $80
+	db $30, $08, $03, $80
+	db $30, $18, $03, $80
+	db $38, $ff, $01, $80
+	db $38, $08, $03, $80
+	db $38, $18, $03, $80
+	db $40, $ff, $01, $80
+	db $40, $08, $03, $80
+	db $40, $18, $03, $80
+	db $48, $ff, $01, $80
+	db $48, $08, $03, $80
+	db $48, $18, $03, $80
+	db $50, $ff, $01, $80
+	db $50, $08, $03, $80
+	db $50, $18, $03, $80
+	db $58, $ff, $01, $80
+	db $58, $08, $03, $80
+	db $58, $18, $03, $80
+	db $59, $ff, $00, $c0
+	db $59, $00, $02, $c0
+	db $59, $08, $03, $c0
+	db $59, $10, $02, $c0
+	db $59, $18, $03, $e0
+
+Unknown_e0c26: ; e0c26
+	db 4
+	db $00, $00, $00, $80
+	db $00, $08, $00, $a0
+	db $08, $00, $00, $c0
+	db $08, $08, $00, $e0
+; e0c37
+
+Functione0c37: ; e0c37 (38:4c37)
+	ld a, [hCGB]
+	and a
+	ret z
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	hlcoord 12, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $1
+	call Functione04e7
+	hlcoord 14, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $2
+	call Functione04e7
+	hlcoord 16, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $3
+	call Functione04e7
+	hlcoord 18, 1, AttrMap
+	lb bc, 2, 2
+	ld a, $4
+	call Functione04e7
+	hlcoord 9, 0, AttrMap
+	lb bc, 12, 1
+	ld a, $1
+	call Functione04e7
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_e0c93
+	ld de, wMapPals
+	ld bc, $48
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; e0c93 (38:4c93)
+
+Palette_e0c93: ; e0c93
+	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
+; e0cdb
+
+LZ_e0cdb: ; e0cdb
+INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
+
+GFX_e0cf6: ; e0cf6
+INCBIN "gfx/unknown/0e0cf6.2bpp"
+
+GFX_e0d06: ; e0d06
+INCBIN "gfx/unknown/0e0d06.2bpp"
+
+LZ_e0d16: ; e0d16
+INCBIN "gfx/unknown/0e0d16.2bpp.lz"
+
+LZ_e0ea8: ; e0ea8
+INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
+
+Unknown_e110c: ; e110c
+	db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
+	db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b
+	db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d
+	db $ef, $25, $04, $00, $01, $00, $01, $00, $01, $00, $01
+	db $ef, $05, $14, $10, $11, $10, $11, $10, $11, $10, $11
+	db $ef, $16, $24, $20, $21, $20, $21, $20, $21, $20, $21
+	db $ef, $25, $04, $00, $02, $00, $02, $00, $02, $00, $02
+	db $ef, $05, $14, $10, $12, $10, $12, $10, $12, $10, $12
+	db $ef, $16, $24, $20, $22, $20, $22, $20, $22, $20, $22
+	db $ef, $25, $04, $00, $03, $00, $03, $00, $03, $00, $03
+	db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13
+	db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23
+; e1190
+
+Functione1190: ; e1190
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	call DisableLCD
+	ld hl, wc608
+	ld bc, $1e0
+	xor a
+	call ByteFill
+	ld hl, GFX_e17c5
+	ld de, VTiles1 tile $60
+	ld bc, $40
+	call CopyBytes
+	ld hl, LZ_e1805
+	ld de, VTiles1 tile $6d
+	call Decompress
+	call Functione17a3
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, $ee
+	call ByteFill
+	hlcoord 4, 3
+	lb bc, 12, 12
+	ld a, $ef
+	call Functione13ee
+	call Functione124e
+	call Functione13fe
+	call Functione127d
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	ld [rWY], a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ld a, $93
+	ld [rLCDC], a
+	call WaitBGMap
+	ld b, $18
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $24
+	call Functioncf8
+	xor a
+	ld [wd0ec], a
+	call DelayFrame
+.asm_e1217
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e123d
+	call Functione12ca
+	ld a, [wcf64]
+	and a
+	jr nz, .asm_e1230
+	ld a, [hVBlankCounter]
+	and $10
+	jr z, .asm_e1235
+
+.asm_e1230
+	call Functione14d9
+	jr .asm_e1238
+
+.asm_e1235
+	call ClearSprites
+
+.asm_e1238
+	call DelayFrame
+	jr .asm_e1217
+
+.asm_e123d
+	pop af
+	ld [hInMenu], a
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld a, $e3
+	ld [rLCDC], a
+	ret
+; e124e
+
+Functione124e: ; e124e
+	ld c, $1
+	ld b, $10
+.asm_e1252
+	call Random
+	and $f
+	ld hl, Unknown_e126d
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld e, [hl]
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e1252
+	ld [hl], c
+	inc c
+	dec b
+	jr nz, .asm_e1252
+	ret
+; e126d
+
+Unknown_e126d: ; e126d
+	db $00, $01, $02, $03
+	db $04, $05, $06, $0b
+	db $0c, $11, $12, $17
+	db $18, $1d, $1e, $23
+; e127d
+
+Functione127d: ; e127d
+	call Functione128d
+	hlcoord 5, 16
+	ld a, $f6
+	ld c, $a
+.asm_e1287
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_e1287
+	ret
+; e128d
+
+Functione128d: ; e128d
+	hlcoord 4, 15
+	ld a, $f0
+	ld [hli], a
+	ld bc, $a
+	ld a, $f1
+	call ByteFill
+	hlcoord 15, 15
+	ld a, $f2
+	ld [hli], a
+	hlcoord 4, 16
+	ld a, $f3
+	ld [hli], a
+	ld bc, $a
+	ld a, $ef
+	call ByteFill
+	hlcoord 15, 16
+	ld a, $f3
+	ld [hli], a
+	hlcoord 4, 17
+	ld a, $f4
+	ld [hli], a
+	ld bc, $a
+	ld a, $f1
+	call ByteFill
+	hlcoord 15, 17
+	ld a, $f5
+	ld [hl], a
+	ret
+; e12ca
+
+Functione12ca: ; e12ca
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_e12d9
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e12d9
+
+Jumptable_e12d9: ; e12d9
+	dw Functione12db
+; e12db
+
+Functione12db: ; e12db
+	ld a, [hJoyPressed]
+	and START
+	jp nz, Functione13de
+	ld a, [hJoyPressed]
+	and A_BUTTON
+	jp nz, Functione1376
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .asm_e1301
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .asm_e130d
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .asm_e1325
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .asm_e1345
+	ret
+
+.asm_e1301
+	ld hl, wcf65
+	ld a, [hl]
+	cp $6
+	ret c
+	sub $6
+	ld [hl], a
+	jr .asm_e1364
+
+.asm_e130d
+	ld hl, wcf65
+	ld a, [hl]
+	cp $19
+	ret z
+	cp $1a
+	ret z
+	cp $1b
+	ret z
+	cp $1c
+	ret z
+	cp $1e
+	ret nc
+	add $6
+	ld [hl], a
+	jr .asm_e1364
+
+.asm_e1325
+	ld hl, wcf65
+	ld a, [hl]
+	and a
+	ret z
+	cp $6
+	ret z
+	cp $c
+	ret z
+	cp $12
+	ret z
+	cp $18
+	ret z
+	cp $1e
+	ret z
+	cp $23
+	jr z, .asm_e1341
+	dec [hl]
+	jr .asm_e1364
+
+.asm_e1341
+	ld [hl], $1e
+	jr .asm_e1364
+
+.asm_e1345
+	ld hl, wcf65
+	ld a, [hl]
+	cp $5
+	ret z
+	cp $b
+	ret z
+	cp $11
+	ret z
+	cp $17
+	ret z
+	cp $1d
+	ret z
+	cp $23
+	ret z
+	cp $1e
+	jr z, .asm_e1362
+	inc [hl]
+	jr .asm_e1364
+
+.asm_e1362
+	ld [hl], $23
+
+.asm_e1364
+	ld a, [wcf64]
+	and a
+	jr nz, .asm_e136f
+	ld de, SFX_POUND
+	jr .asm_e1372
+
+.asm_e136f
+	ld de, SFX_MOVE_PUZZLE_PIECE
+
+.asm_e1372
+	call PlaySFX
+	ret
+; e1376
+
+Functione1376: ; e1376
+	ld a, [wcf64]
+	and a
+	jr nz, .asm_e139f
+	call Functione1475
+	and a
+	jr z, Functione13e4
+	ld de, SFX_MEGA_KICK
+	call PlaySFX
+	ld [hl], $0
+	ld [wcf66], a
+	call Functione14d9
+	call Functione1441
+	call WaitBGMap
+	call WaitSFX
+	ld a, $1
+	ld [wcf64], a
+	ret
+
+.asm_e139f
+	call Functione1475
+	and a
+	jr nz, Functione13e4
+	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+	call PlaySFX
+	ld a, [wcf66]
+	ld [hl], a
+	call Functione141f
+	call WaitBGMap
+	xor a
+	ld [wcf66], a
+	call Functione14d9
+	xor a
+	ld [wcf64], a
+	call WaitSFX
+	call Functione14a0
+	ret nc
+	call Functione128d
+	call ClearSprites
+	ld de, SFX_1ST_PLACE
+	call PlaySFX
+	call WaitSFX
+	call SimpleWaitPressAorB
+	ld a, $1
+	ld [wd0ec], a
+
+Functione13de: ; e13de
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Functione13e4: ; e13e4
+	ld de, SFX_WRONG
+	call PlaySFX
+	call WaitSFX
+	ret
+; e13ee
+
+Functione13ee: ; e13ee
+	ld de, SCREEN_WIDTH
+.asm_e13f1
+	push bc
+	push hl
+.asm_e13f3
+	ld [hli], a
+	dec c
+	jr nz, .asm_e13f3
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_e13f1
+	ret
+; e13fe
+
+Functione13fe: ; e13fe
+	xor a
+	ld [wcf65], a
+	ld c, $24
+.asm_e1404
+	push bc
+	call Functione1475
+	ld [wcf66], a
+	and a
+	jr z, .asm_e1413
+	call Functione141f
+	jr .asm_e1416
+
+.asm_e1413
+	call Functione1441
+
+.asm_e1416
+	ld hl, wcf65
+	inc [hl]
+	pop bc
+	dec c
+	jr nz, .asm_e1404
+	ret
+; e141f
+
+Functione141f: ; e141f
+	ld a, $2
+	call Functione1463
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	call Functione1481
+	pop hl
+	ld de, SCREEN_WIDTH
+	ld b, $3
+.asm_e1431
+	ld c, $3
+	push hl
+.asm_e1434
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_e1434
+	add $9
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_e1431
+	ret
+; e1441
+
+Functione1441: ; e1441
+	ld a, $2
+	call Functione1463
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+	ld a, $4
+	call Functione1463
+	ld a, [hl]
+	pop hl
+	ld de, SCREEN_WIDTH
+	ld b, $3
+.asm_e1456
+	ld c, $3
+	push hl
+.asm_e1459
+	ld [hli], a
+	dec c
+	jr nz, .asm_e1459
+	pop hl
+	add hl, de
+	dec b
+	jr nz, .asm_e1456
+	ret
+; e1463
+
+Functione1463: ; e1463
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_e1559
+	add hl, de
+	ld a, [wcf65]
+	ld e, a
+rept 4
+	add hl, de
+endr
+rept 2
+	add hl, de
+endr
+	ret
+; e1475
+
+Functione1475: ; e1475
+	ld hl, wc6d0
+	ld a, [wcf65]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ret
+; e1481
+
+Functione1481: ; e1481
+	ld a, [wcf66]
+	ld hl, Unknown_e148f
+	add l
+	ld l, a
+	ld a, $0
+	adc h
+	ld h, a
+	ld a, [hl]
+	ret
+; e148f
+
+Unknown_e148f: ; e148f
+	db $e0
+	db $00, $03, $06, $09
+	db $24, $27, $2a, $2d
+	db $48, $4b, $4e, $51
+	db $6c, $6f, $72, $75
+; e14a0
+
+Functione14a0: ; e14a0
+	ld hl, Unknown_e14b5
+	ld de, wc6d0
+	ld c, $24
+.asm_e14a8
+	ld a, [de]
+	cp [hl]
+	jr nz, .asm_e14b3
+	inc de
+	inc hl
+	dec c
+	jr nz, .asm_e14a8
+	scf
+	ret
+
+.asm_e14b3
+	and a
+	ret
+; e14b5
+
+Unknown_e14b5: ; e14b5
+	db $00, $00, $00, $00, $00, $00
+	db $00, $01, $02, $03, $04, $00
+	db $00, $05, $06, $07, $08, $00
+	db $00, $09, $0a, $0b, $0c, $00
+	db $00, $0d, $0e, $0f, $10, $00
+	db $00, $00, $00, $00, $00, $00
+; e14d9
+
+Functione14d9: ; e14d9
+	call Functione1481
+	ld [wd002], a
+	xor a
+	call Functione1463
+	ld a, [hli]
+	ld b, [hl]
+	ld c, a
+	ld a, [wd002]
+	cp $e0
+	jr z, .asm_e14f2
+	ld hl, Unknown_e150f
+	jr .asm_e14f5
+
+.asm_e14f2
+	ld hl, Unknown_e1534
+
+.asm_e14f5
+	ld de, Sprites
+.asm_e14f8
+	ld a, [hli]
+	cp $ff
+	ret z
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [wd002]
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	jr .asm_e14f8
+; e150f
+
+Unknown_e150f: ; e150f
+	db $f4, $f4, $00, $00
+	db $f4, $fc, $01, $00
+	db $f4, $04, $02, $00
+	db $fc, $f4, $0c, $00
+	db $fc, $fc, $0d, $00
+	db $fc, $04, $0e, $00
+	db $04, $f4, $18, $00
+	db $04, $fc, $19, $00
+	db $04, $04, $1a, $00
+	db $ff
+
+Unknown_e1534: ; e1534
+	db $f4, $f4, $00, $00
+	db $f4, $fc, $01, $00
+	db $f4, $04, $00, $20
+	db $fc, $f4, $02, $00
+	db $fc, $fc, $03, $00
+	db $fc, $04, $02, $20
+	db $04, $f4, $00, $40
+	db $04, $fc, $01, $40
+	db $04, $04, $00, $60
+	db $ff
+
+Unknown_e1559: ; e1559
+
+macro_e1559: macro
+	db \1, \2
+	dwcoord \3, \4
+	db \5, \6
+endm
+
+	macro_e1559 $1c, $1c,  1,  0, $ee, $00
+	macro_e1559 $34, $1c,  4,  0, $ee, $00
+	macro_e1559 $4c, $1c,  7,  0, $ee, $00
+	macro_e1559 $64, $1c, 10,  0, $ee, $00
+	macro_e1559 $7c, $1c, 13,  0, $ee, $00
+	macro_e1559 $94, $1c, 16,  0, $ee, $00
+	macro_e1559 $1c, $34,  1,  3, $ee, $00
+	macro_e1559 $34, $34,  4,  3, $ef, $00
+	macro_e1559 $4c, $34,  7,  3, $ef, $00
+	macro_e1559 $64, $34, 10,  3, $ef, $00
+	macro_e1559 $7c, $34, 13,  3, $ef, $00
+	macro_e1559 $94, $34, 16,  3, $ee, $00
+	macro_e1559 $1c, $4c,  1,  6, $ee, $00
+	macro_e1559 $34, $4c,  4,  6, $ef, $00
+	macro_e1559 $4c, $4c,  7,  6, $ef, $00
+	macro_e1559 $64, $4c, 10,  6, $ef, $00
+	macro_e1559 $7c, $4c, 13,  6, $ef, $00
+	macro_e1559 $94, $4c, 16,  6, $ee, $00
+	macro_e1559 $1c, $64,  1,  9, $ee, $00
+	macro_e1559 $34, $64,  4,  9, $ef, $00
+	macro_e1559 $4c, $64,  7,  9, $ef, $00
+	macro_e1559 $64, $64, 10,  9, $ef, $00
+	macro_e1559 $7c, $64, 13,  9, $ef, $00
+	macro_e1559 $94, $64, 16,  9, $ee, $00
+	macro_e1559 $1c, $7c,  1, 12, $ee, $00
+	macro_e1559 $34, $7c,  4, 12, $ef, $00
+	macro_e1559 $4c, $7c,  7, 12, $ef, $00
+	macro_e1559 $64, $7c, 10, 12, $ef, $00
+	macro_e1559 $7c, $7c, 13, 12, $ef, $00
+	macro_e1559 $94, $7c, 16, 12, $ee, $00
+	macro_e1559 $1c, $94,  1, 15, $ee, $00
+	macro_e1559 $34, $94,  4, 15, $ee, $00
+	macro_e1559 $4c, $94,  7, 15, $ee, $00
+	macro_e1559 $64, $94, 10, 15, $ee, $00
+	macro_e1559 $7c, $94, 13, 15, $ee, $00
+	macro_e1559 $94, $94, 16, 15, $ee, $00
+
+Functione1631: ; e1631
+	ld hl, VTiles2
+	ld de, VTiles0
+	ld b, $6
+.asm_e1639
+	push bc
+	push hl
+	push hl
+	call Functione1654
+	pop hl
+	ld bc, 8
+	add hl, bc
+	call Functione1654
+	pop hl
+	ld bc, $60
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_e1639
+	call Functione16c7
+	ret
+; e1654
+
+Functione1654: ; e1654
+	ld c, $6
+.asm_e1656
+	push bc
+	push hl
+	push hl
+	ld c, $4
+.asm_e165b
+	push bc
+	ld a, [hli]
+	and $f0
+	swap a
+	call Functione16aa
+	ld c, a
+	ld a, [hli]
+	and $f0
+	swap a
+	call Functione16aa
+	ld b, a
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	pop bc
+	dec c
+	jr nz, .asm_e165b
+	pop hl
+	ld c, $4
+.asm_e1681
+	push bc
+	ld a, [hli]
+	and $f
+	call Functione16aa
+	ld c, a
+	ld a, [hli]
+	and $f
+	call Functione16aa
+	ld b, a
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, b
+	ld [de], a
+	inc de
+	pop bc
+	dec c
+	jr nz, .asm_e1681
+	pop hl
+	ld bc, $10
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_e1656
+	ret
+; e16aa
+
+Functione16aa: ; e16aa
+	push hl
+	ld hl, Unknown_e16b7
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+	pop hl
+	ret
+; e16b7
+
+Unknown_e16b7: ; e16b7
+	db $00, $03, $0c, $0f
+	db $30, $33, $3c, $3f
+	db $c0, $c3, $cc, $cf
+	db $f0, $f3, $fc, $ff
+; e16c7
+
+Functione16c7: ; e16c7
+	ld hl, Unknown_e1703
+	ld a, $8
+.asm_e16cc
+	push af
+	push hl
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Functione16e2
+	pop hl
+rept 4
+	inc hl
+endr
+	pop af
+	dec a
+	jr nz, .asm_e16cc
+	ret
+; e16e2
+
+Functione16e2: ; e16e2
+	lb bc, 4, 4
+.asm_e16e5
+	push bc
+.asm_e16e6
+	push de
+	push hl
+	ld b, $10
+.asm_e16ea
+	ld a, [de]
+	or [hl]
+	ld [hli], a
+	inc de
+	dec b
+	jr nz, .asm_e16ea
+	pop hl
+	ld de, $30
+	add hl, de
+	pop de
+	dec c
+	jr nz, .asm_e16e6
+	ld bc, $180
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_e16e5
+	ret
+; e1703
+
+Unknown_e1703: ; e1703
+	dw GFX_e1723 + $00, $8000
+	dw GFX_e1723 + $10, $8010
+	dw GFX_e1723 + $20, $8020
+	dw GFX_e1723 + $30, $80c0
+	dw GFX_e1723 + $40, $80e0
+	dw GFX_e1723 + $50, $8180
+	dw GFX_e1723 + $60, $8190
+	dw GFX_e1723 + $70, $81a0
+; e1723
+
+GFX_e1723: ; e1723
+INCBIN "gfx/unknown/0e1723.2bpp"
+
+Functione17a3: ; e17a3
+	ld a, [ScriptVar]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_e17bd
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, VTiles2
+	call Decompress
+	call Functione1631
+	ret
+; e17bd
+
+Unknown_e17bd: ; e17bd
+	dw LZ_e1bab
+	dw LZ_e1c9b
+	dw LZ_e19fb
+	dw LZ_e18ab
+; e17c5
+
+GFX_e17c5: ; e17c5
+INCBIN "gfx/unknown/0e17c5.2bpp"
+
+LZ_e1805: ; e1805
+INCBIN "gfx/unknown/0e1805.2bpp.lz"
+
+LZ_e18ab: ; e18ab
+INCBIN "gfx/unknown/0e18ab.2bpp.lz"
+
+LZ_e19fb: ; e19fb
+INCBIN "gfx/unknown/0e19fb.2bpp.lz"
+
+LZ_e1bab: ; e1bab
+INCBIN "gfx/unknown/0e1bab.2bpp.lz"
+
+LZ_e1c9b: ; e1c9b
+INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
--- /dev/null
+++ b/engine/clock_reset.asm
@@ -1,0 +1,251 @@
+
+ResetClock_GetWraparoundTime: ; 20000 (8:4000)
+	push hl
+	dec a
+	ld e, a
+	ld d, 0
+	ld hl, .WrapAroundTimes
+rept 4
+	add hl, de
+endr
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+	ld b, [hl]
+	inc hl
+	ld c, [hl]
+	pop hl
+	ret
+; 20015 (8:4015)
+
+.WrapAroundTimes: ; 20015
+	dw Buffer4
+	db 7, 4
+
+	dw Buffer5
+	db 24, 12
+
+	dw Buffer6
+	db 60, 15
+; 20021
+
+RestartClock: ; 20021 (8:4021)
+; If we're here, we had an RTC overflow.
+	ld hl, .Text_ClockTimeMayBeWrong
+	call PrintText
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	call LoadStandardMenuDataHeader
+	call ClearTileMap
+	ld hl, .Text_SetWithControlPad
+	call PrintText
+	call .SetClock
+	call ExitMenu
+	pop bc
+	ld hl, Options
+	ld [hl], b
+	ld c, a
+	ret
+; 20047 (8:4047)
+
+.Text_ClockTimeMayBeWrong: ; 0x20047
+	; The clock's time may be wrong. Please reset the time.
+	text_jump UnknownText_0x1c40e6
+	db "@"
+; 0x2004c
+
+.Text_SetWithControlPad: ; 0x2004c
+	; Set with the Control Pad. Confirm: A Button Cancel:  B Button
+	text_jump UnknownText_0x1c411c
+	db "@"
+; 0x20051
+
+.SetClock: ; 20051 (8:4051)
+	ld a, 1
+	ld [Buffer1], a ; which digit
+	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ld a, 8
+	ld [Buffer3], a
+	call UpdateTime
+	call GetWeekday
+	ld [Buffer4], a
+	ld a, [hHours]
+	ld [Buffer5], a
+	ld a, [hMinutes]
+	ld [Buffer6], a
+
+.loop
+	call .joy_loop
+	jr nc, .loop
+	and a
+	ret nz
+	call .PrintTime
+	ld hl, .Text_IsThisOK
+	call PrintText
+	call YesNoBox
+	jr c, .cancel
+	ld a, [Buffer4]
+	ld [StringBuffer2], a
+	ld a, [Buffer5]
+	ld [StringBuffer2 + 1], a
+	ld a, [Buffer6]
+	ld [StringBuffer2 + 2], a
+	xor a
+	ld [StringBuffer2 + 3], a
+	call Function677
+	call .PrintTime
+	ld hl, .Text_ClockReset
+	call PrintText
+	call WaitPressAorB_BlinkCursor
+	xor a
+	ret
+
+.cancel
+	ld a, $1
+	ret
+; 200b0 (8:40b0)
+
+.Text_IsThisOK: ; 0x200b0
+	; Is this OK?
+	text_jump UnknownText_0x1c415b
+	db "@"
+; 0x200b5
+
+.Text_ClockReset: ; 0x200b5
+	; The clock has been reset.
+	text_jump UnknownText_0x1c4168
+	db "@"
+; 0x200ba
+
+.joy_loop
+	call Function354b
+	ld c, a
+	push af
+	call .PrintTime
+	pop af
+	bit 0, a
+	jr nz, .press_A
+	bit 1, a
+	jr nz, .press_B
+	bit 6, a
+	jr nz, .pressed_up
+	bit 7, a
+	jr nz, .pressed_down
+	bit 5, a
+	jr nz, .pressed_left
+	bit 4, a
+	jr nz, .pressed_right
+	jr .joy_loop
+
+.press_A
+	ld a, $0
+	scf
+	ret
+
+.press_B
+	ld a, $1
+	scf
+	ret
+
+.pressed_up
+	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	call ResetClock_GetWraparoundTime
+	ld a, [de]
+	inc a
+	ld [de], a
+	cp b
+	jr c, .done_scroll
+	ld a, $0
+	ld [de], a
+	jr .done_scroll
+
+.pressed_down
+	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	call ResetClock_GetWraparoundTime
+	ld a, [de]
+	dec a
+	ld [de], a
+	cp -1
+	jr nz, .done_scroll
+	ld a, b
+	dec a
+	ld [de], a
+	jr .done_scroll
+
+.pressed_left
+	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
+	dec [hl]
+	jr nz, .done_scroll
+	ld [hl], $3
+	jr .done_scroll
+
+.pressed_right
+	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
+	inc [hl]
+	ld a, [hl]
+	cp $4
+	jr c, .done_scroll
+	ld [hl], $1
+
+.done_scroll
+	xor a
+	ret
+
+.PrintTime: ; 2011f (8:411f)
+	hlcoord 0, 5
+	ld b, 5
+	ld c, 18
+	call TextBox
+	decoord 1, 8
+	ld a, [Buffer4]
+	ld b, a
+	callba PrintDayOfWeek
+	ld a, [Buffer5]
+	ld b, a
+	ld a, [Buffer6]
+	ld c, a
+	decoord 11, 8
+	callba PrintHoursMins
+	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
+	lb de, " ", " "
+	call .PlaceChars
+	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	lb de, "▲", "▼"
+	call .PlaceChars
+	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
+	ld [Buffer2], a ; wd1eb (aliases: MovementType)
+	ret
+; 20160 (8:4160)
+
+.unreferenced: ; 20160
+	ld a, [Buffer3]
+	ld b, a
+	call Coord2Tile
+	ret
+; 20168
+
+.PlaceChars: ; 20168 (8:4168)
+	push de
+	call ResetClock_GetWraparoundTime
+	ld a, [Buffer3]
+	dec a
+	ld b, a
+	call Coord2Tile
+	pop de
+	ld [hl], d
+	ld bc, 2 * SCREEN_WIDTH
+	add hl, bc
+	ld [hl], e
+	ret
+; 2017c (8:417c)
+
+String_2017c: ; 2017c
+	db "じ@" ; HR
+; 2017e
+
+String_2017e: ; 2017e
+	db "ふん@" ; MIN
+; 20181
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -149,7 +149,7 @@
 	call CheckCGB
 	ret z
 	ld hl, Palette8b2f
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0008
 	ld a, $5
 	call FarCopyWRAM
@@ -275,7 +275,7 @@
 
 asm_8bd7
 	push hl
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld de, $0008
 .asm_8bde
 	and a
@@ -319,7 +319,7 @@
 	ld a, [EnemySafeguardCount]
 	and $3
 	call Function9663
-	call Function323d
+	call LoadDETile
 	ret
 ; 8c1d
 
@@ -338,7 +338,7 @@
 	call Function976b
 
 .asm_8c33
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	call Function9643
 	call Function9699
 	call Function96b3
@@ -412,11 +412,11 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld a, [hli]
-	ld [Unkn1Pals], a
-	ld [Unkn1Pals + 8 * 2], a
+	ld [wMapPals], a
+	ld [wMapPals + 8 * 2], a
 	ld a, [hl]
-	ld [Unkn1Pals + 1], a
-	ld [Unkn1Pals + 8 * 2 + 1], a
+	ld [wMapPals + 1], a
+	ld [wMapPals + 8 * 2 + 1], a
 	pop af
 	ld [rSVBK], a
 	call Function96a4
@@ -458,7 +458,7 @@
 	ret
 
 .asm_8cf0
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0008
 	ld a, $5
 	call FarCopyWRAM
@@ -525,7 +525,7 @@
 
 Function95f0: ; 95f0
 	ld hl, Palette_9608
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, 8
 	ld a, $5
 	call FarCopyWRAM
@@ -544,7 +544,7 @@
 
 
 CopyFourPalettes: ; 9610
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld c, $4
 
 CopyPalettes: ; 9615
@@ -644,7 +644,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld c, $8
 .asm_9683
 	ld a, $ff
@@ -676,7 +676,7 @@
 ; 96a4
 
 Function96a4: ; 96a4
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld de, BGPals
 	ld bc, $0080
 	ld a, $5
@@ -768,7 +768,7 @@
 
 Function9729: ; 9729
 	push de
-	callba Function3da85
+	callba GetPartyMonDVs
 	ld c, l
 	ld b, h
 	ld a, [TempBattleMonSpecies]
@@ -779,7 +779,7 @@
 
 Function973a: ; 973a
 	push de
-	callba Function3da97
+	callba GetEnemyMonDVs
 	ld c, l
 	ld b, h
 	ld a, [TempEnemyMonSpecies]
@@ -1047,7 +1047,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	call Function98df
 	ld hl, BGPals
 	call Function98df
@@ -1945,7 +1945,7 @@
 ; b1de
 
 Functionb1de: ; b1de
-	callba Function494ac
+	callba LoadSpecialMapPalette
 	jr c, .asm_b230
 
 	ld a, [wPermission]
@@ -1973,7 +1973,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld b, $8
 .asm_b210
 	ld a, [de]
@@ -2036,7 +2036,7 @@
 	inc hl
 endr
 .asm_b26d
-	ld de, Unkn1Pals + 8 * 6 + 2
+	ld de, wMapPals + 8 * 6 + 2
 	ld bc, 4
 	ld a, $5
 	call FarCopyWRAM
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -131,7 +131,7 @@
 	ld a, $5
 	ld [rSVBK], a
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 
@@ -210,7 +210,7 @@
 	jr .asm_1098de
 
 .asm_1098ee
-	call WhiteBGMap
+	call ClearBGPalettes
 	xor a
 	ld [hLCDStatCustom], a
 	ld [hBGMapAddress], a
@@ -300,7 +300,7 @@
 
 Function10995e: ; 10995e (42:595e)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	jp Function109951
 
 Function109964: ; 109964 (42:5964)
@@ -317,13 +317,13 @@
 
 Function10997b: ; 10997b (42:597b)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $8
 	ld [Requested2bpp], a
 	jp Function109951
 
 Function109986: ; 109986 (42:5986)
-	ld a, [rLY] ; $ff00+$44
+	ld a, [rLY]
 	cp $30
 	jr c, Function109986
 	ld a, [wcf66]
@@ -366,7 +366,7 @@
 ; First, let's clear the current text display,
 ; starting from line 5.
 	xor a
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	hlcoord 0, 5
 	ld bc, 20 * 12
 	ld a, " "
@@ -479,9 +479,9 @@
 	ld [CreditsTimer], a
 	
 	xor a
-	ld [$ffd5], a
+	ld [hBGMapThird], a
 	ld a, 1
-	ld [$ffd4], a
+	ld [hBGMapMode], a
 	
 .done
 	jp Function109951
@@ -523,9 +523,9 @@
 
 Function109a95: ; 109a95 (42:5a95)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $c
-	ld [hBGMapAddress], a ; $ff00+$d6
+	ld [hBGMapAddress], a
 	ld a, $28
 	hlcoord 0, 0
 	ld bc, $168
@@ -558,8 +558,8 @@
 	call ByteFill
 	call Function3200
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld [hBGMapAddress], a ; $ff00+$d6
+	ld [hBGMapMode], a
+	ld [hBGMapAddress], a
 	hlcoord 0, 0
 	call Function109aff
 	call Function3200
@@ -637,10 +637,10 @@
 	
 	push af
 	push hl
-	add Unkn1Pals % $100
+	add wMapPals % $100
 	ld e, a
 	ld a, 0
-	adc Unkn1Pals / $100
+	adc wMapPals / $100
 	ld d, a
 	ld bc, 24
 	call CopyBytes
--- a/engine/diploma.asm
+++ b/engine/diploma.asm
@@ -1,12 +1,12 @@
 
 Function1dd702: ; 1dd702
 	call Function1dd709
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	ret
 ; 1dd709
 
 Function1dd709: ; 1dd709
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
--- /dev/null
+++ b/engine/dummy_game.asm
@@ -1,0 +1,615 @@
+_DummyGame: ; e1e5b (38:5e5b)
+	call Functione1e67
+	call DelayFrame
+.asm_e1e61
+	call Functione1ebb
+	jr nc, .asm_e1e61
+	ret
+
+Functione1e67: ; e1e67 (38:5e67)
+	call DisableLCD
+	ld b, $8
+	call GetSGBLayout
+	callab Function8cf53
+	ld hl, LZ_e2221
+	ld de, VTiles2 tile $00
+	call Decompress
+	ld hl, Unknown_e00ed
+	ld de, VTiles0 tile $00
+	ld bc, $40
+	ld a, BANK(Unknown_e00ed)
+	call FarCopyBytes
+	ld a, $8
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], $0
+	hlcoord 0, 0
+	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+	xor a
+	call ByteFill
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	ld [rWY], a
+	ld [wJumptableIndex], a
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, $e3
+	ld [rLCDC], a
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $e0
+	call Functioncf8
+	ret
+
+Functione1ebb: ; e1ebb (38:5ebb)
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_e1ed0
+	call Functione1ed2
+	callab Function8cf69
+	call DelayFrame
+	and a
+	ret
+.asm_e1ed0
+	scf
+	ret
+
+Functione1ed2: ; e1ed2 (38:5ed2)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_e1ee1
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; e1ee1 (38:5ee1)
+
+Jumptable_e1ee1: ; e1ee1
+	dw Functione1ef3
+	dw Functione1efb
+	dw Functione1f1c
+	dw Functione1f42
+	dw Functione1f61
+	dw Functione1f8b
+	dw Functione1fba
+	dw Functione1fcc
+	dw Functione2000
+; e1ef3
+
+Functione1ef3: ; e1ef3
+	call Functione2152
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e1efb
+
+Functione1efb: ; e1efb
+	call Functione00ed
+	jr nc, .asm_e1f06
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.asm_e1f06
+	call Functione209d
+	ld hl, wJumptableIndex
+	inc [hl]
+	xor a
+	ld [wc708], a
+	ld hl, wc703
+rept 4
+	ld [hli], a
+endr
+	ld [hl], a
+	ld [wc709], a
+
+Functione1f1c: ; e1f1c
+	ld hl, wc708
+	ld a, [hl]
+	cp $2d
+	jr nc, .asm_e1f30
+	inc [hl]
+	call Functione2183
+	xor a
+	ld [wc6fd], a
+	call Functione2128
+	ret
+
+.asm_e1f30
+	ld de, $341c
+	ld a, $c
+	call Function3b2a
+	ld a, $5
+	ld [wc702], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e1f42
+
+Functione1f42: ; e1f42
+	ld a, [wc702]
+	hlcoord 17, 0
+	add $f6
+	ld [hl], a
+	ld hl, wc702
+	ld a, [hl]
+	and a
+	jr nz, .asm_e1f58
+	ld a, $7
+	ld [wJumptableIndex], a
+	ret
+
+.asm_e1f58
+	dec [hl]
+	xor a
+	ld [wcf64], a
+	ld hl, wJumptableIndex
+	inc [hl]
+
+Functione1f61: ; e1f61
+	ld a, [wcf64]
+	and a
+	ret z
+	dec a
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld [wc6fd], a
+	ld [wPlayerMinimized], a
+	ld a, e
+	ld [EnemyScreens], a
+	call Functione2183
+	call Functione2128
+	xor a
+	ld [wcf64], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; e1f8b
+
+Functione1f8b: ; e1f8b
+	ld a, [wcf64]
+	and a
+	ret z
+	dec a
+	ld hl, EnemyScreens
+	cp [hl]
+	ret z
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld [wc6fd], a
+	ld [PlayerScreens], a
+	ld a, e
+	ld [wc701], a
+	call Functione2183
+	call Functione2128
+	ld a, $40
+	ld [wc708], a
+	ld hl, wJumptableIndex
+	inc [hl]
+
+Functione1fba: ; e1fba
+	ld hl, wc708
+	ld a, [hl]
+	and a
+	jr z, .asm_e1fc3
+	dec [hl]
+	ret
+
+.asm_e1fc3
+	call Functione2010
+	ld a, $3
+	ld [wJumptableIndex], a
+	ret
+; e1fcc
+
+Functione1fcc: ; e1fcc
+	ld a, [hJoypadPressed]
+	and A_BUTTON
+	ret z
+	xor a
+	ld [wc708], a
+.asm_e1fd5
+	ld hl, wc708
+	ld a, [hl]
+	cp $2d
+	jr nc, .asm_e1ff9
+	inc [hl]
+	push af
+	call Functione2183
+	pop af
+	push hl
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld a, [hl]
+	pop hl
+	cp $ff
+	jr z, .asm_e1fd5
+	ld [wc6fd], a
+	call Functione2128
+	jr .asm_e1fd5
+
+.asm_e1ff9
+	call WaitPressAorB_BlinkCursor
+	ld hl, wJumptableIndex
+	inc [hl]
+
+Functione2000: ; e2000
+	call Functione00ed
+	jr nc, .asm_e200b
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.asm_e200b
+	xor a
+	ld [wJumptableIndex], a
+	ret
+; e2010
+
+Functione2010: ; e2010
+	ld hl, wPlayerMinimized
+	ld a, [hli]
+	cp [hl]
+	jr nz, .asm_e2066
+	ld a, [EnemyScreens]
+	call Functione2183
+	call Functione2142
+	ld a, [wc701]
+	call Functione2183
+	call Functione2142
+	ld a, [EnemyScreens]
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld [hl], $ff
+	ld a, [wc701]
+	ld e, a
+	ld d, $0
+	ld hl, wc6d0
+	add hl, de
+	ld [hl], $ff
+	ld hl, wc703
+.asm_e2044
+	ld a, [hli]
+	and a
+	jr nz, .asm_e2044
+	dec hl
+	ld a, [wPlayerMinimized]
+	ld [hl], a
+	ld [wc6fd], a
+	ld hl, wc709
+	ld e, [hl]
+rept 2
+	inc [hl]
+endr
+	ld d, $0
+	hlcoord 5, 0
+	add hl, de
+	call Functione2128
+	ld hl, UnknownText_0xe2083
+	call PrintText
+	ret
+
+.asm_e2066
+	xor a
+	ld [wc6fd], a
+	ld a, [EnemyScreens]
+	call Functione2183
+	call Functione2128
+	ld a, [wc701]
+	call Functione2183
+	call Functione2128
+	ld hl, UnknownText_0xe2098
+	call PrintText
+	ret
+; e2083
+
+UnknownText_0xe2083: ; 0xe2083
+	start_asm
+; 0xe2084
+
+Functione2084: ; e2084
+	push bc
+	hlcoord 2, 13
+	call Functione2128
+	ld hl, UnknownText_0xe2093
+	pop bc
+rept 3
+	inc bc
+endr
+	ret
+; e2093
+
+UnknownText_0xe2093: ; 0xe2093
+	; , yeah!
+	text_jump UnknownText_0x1c1a5b
+	db "@"
+; 0xe2098
+
+UnknownText_0xe2098: ; 0xe2098
+	; Darn…
+	text_jump UnknownText_0x1c1a65
+	db "@"
+; 0xe209d
+
+Functione209d: ; e209d
+	ld hl, wc6d0
+	ld bc, $2d
+	xor a
+	call ByteFill
+	call Functione2101
+	ld c, $2
+	ld b, [hl]
+	call Functione20e5
+	ld c, $8
+	ld b, [hl]
+	call Functione20e5
+	ld c, $4
+	ld b, [hl]
+	call Functione20e5
+	ld c, $7
+	ld b, [hl]
+	call Functione20e5
+	ld c, $3
+	ld b, [hl]
+	call Functione20e5
+	ld c, $6
+	ld b, [hl]
+	call Functione20e5
+	ld c, $1
+	ld b, [hl]
+	call Functione20e5
+	ld c, $5
+	ld hl, wc6d0
+	ld b, $2d
+.asm_e20db
+	ld a, [hl]
+	and a
+	jr nz, .asm_e20e0
+	ld [hl], c
+
+.asm_e20e0
+	inc hl
+	dec b
+	jr nz, .asm_e20db
+	ret
+; e20e5
+
+Functione20e5: ; e20e5
+	push hl
+	ld de, wc6d0
+.asm_e20e9
+	call Random
+	and $3f
+	cp $2d
+	jr nc, .asm_e20e9
+	ld l, a
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	and a
+	jr nz, .asm_e20e9
+	ld [hl], c
+	dec b
+	jr nz, .asm_e20e9
+	pop hl
+	inc hl
+	ret
+; e2101
+
+Functione2101: ; e2101
+	ld a, [MenuSelection2]
+	dec a
+	ld l, a
+	ld h, 0
+rept 3
+	add hl, hl
+endr
+	ld de, Unknown_e2110
+	add hl, de
+	ret
+; e2110
+
+Unknown_e2110: ; e2110
+	db $02, $03, $06, $06, $06, $08, $08, $06
+	db $02, $02, $04, $06, $06, $08, $08, $09
+	db $02, $02, $02, $04, $07, $08, $08, $0c
+; e2128
+
+Functione2128: ; e2128
+	ld a, [wc6fd]
+	sla a
+	sla a
+	add $4
+	ld [hli], a
+	inc a
+	ld [hld], a
+	inc a
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hli], a
+	inc a
+	ld [hl], a
+	ld c, 3
+	call DelayFrames
+	ret
+; e2142
+
+Functione2142: ; e2142
+	ld a, $1
+	ld [hli], a
+	ld [hld], a
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld [hli], a
+	ld [hl], a
+	ld c, 3
+	call DelayFrames
+	ret
+; e2152
+
+Functione2152: ; e2152
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, $1
+	call ByteFill
+	hlcoord 0, 0
+	ld de, String_e2177
+	call PlaceString
+	hlcoord 15, 0
+	ld de, String_e217d
+	call PlaceString
+	ld hl, UnknownText_0xe2176
+	call PrintText
+	ret
+; e2176
+
+UnknownText_0xe2176: ; 0xe2176
+	db "@"
+; 0xe2177
+
+String_e2177: db "とったもの@"
+String_e217d: db "あと かい@"
+; e2183
+
+Functione2183: ; e2183
+	ld d, $0
+.asm_e2185
+	sub $9
+	jr c, .asm_e218c
+	inc d
+	jr .asm_e2185
+
+.asm_e218c
+	add $9
+	ld e, a
+	hlcoord 1, 2
+	ld bc, $28
+.asm_e2195
+	ld a, d
+	and a
+	jr z, .asm_e219d
+	add hl, bc
+	dec d
+	jr .asm_e2195
+
+.asm_e219d
+	sla e
+	add hl, de
+	ret
+; e21a1
+
+Functione21a1: ; e21a1 (38:61a1)
+	ld a, [wJumptableIndex]
+	cp $7
+	jr nc, .quit
+	call JoyTextDelay
+	ld hl, hJoypadPressed ; $ffa3
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .pressed_a
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .pressed_left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .pressed_right
+	ld a, [hl]
+	and D_UP
+	jr nz, .pressed_up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .pressed_down
+	ret
+
+.quit
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ret
+
+.pressed_a
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	inc a
+	ld [wcf64], a
+	ret
+
+.pressed_left
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	sub $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	dec [hl]
+	ret
+
+.pressed_right
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+	cp $80
+	ret z
+	add $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	inc [hl]
+	ret
+
+.pressed_up
+	ld hl, $7
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	sub $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	sub $9
+	ld [hl], a
+	ret
+
+.pressed_down
+	ld hl, $7
+	add hl, bc
+	ld a, [hl]
+	cp $40
+	ret z
+	add $10
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	add $9
+	ld [hl], a
+	ret
+; e2221 (38:6221)
+
+LZ_e2221: ; e2221
+INCBIN "gfx/unknown/0e2221.2bpp.lz"
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -138,7 +138,7 @@
 	call ClearAllScriptFlags3
 
 	ld a, [hMapEntryMethod]
-	cp MAPSETUP_07
+	cp MAPSETUP_CONNECTION
 	jr nz, .dontset
 	call SetAll_ScriptFlags3
 .dontset
@@ -247,7 +247,7 @@
 Function967e1: ; 967e1
 	callba RefreshMapAppearDisappear
 	callba Functiond4d2
-	callba Functionb8098
+	callba PlaceMapNameSign
 	ret
 ; 967f4
 
@@ -322,13 +322,13 @@
 	ld [ScriptRunning], a
 	call DoPlayerEvent
 	ld a, [ScriptRunning]
-	cp 4
+	cp PLAYEREVENT_CONNECTION
 	jr z, .ok2
-	cp 9
+	cp PLAYEREVENT_JOYCHANGEFACING
 	jr z, .ok2
 
 	xor a
-	ld [wc2da], a
+	ld [wLandmarkSignTimer], a
 
 .ok2
 	scf
@@ -342,7 +342,7 @@
 	call CheckTrainerBattle2
 	jr nc, .nope
 
-	ld a, 1
+	ld a, PLAYEREVENT_SEENBYTRAINER
 	scf
 	ret
 
@@ -359,10 +359,10 @@
 	jr z, .bit2
 
 	callba CheckMovingOffEdgeOfMap
-	jr c, .return4
+	jr c, .map_connection
 
 	call CheckWarpTile
-	jr c, .return6
+	jr c, .warp_tile
 
 .bit2
 	call CheckBit1_ScriptFlags3
@@ -390,21 +390,21 @@
 	xor a
 	ret
 
-.return4
-	ld a, 4
+.map_connection
+	ld a, PLAYEREVENT_CONNECTION
 	scf
 	ret
 
-.return6
+.warp_tile
 	ld a, [PlayerStandingTile]
 	call CheckPitTile
-	jr nz, .pittile
-	ld a, 6
+	jr nz, .not_pit
+	ld a, PLAYEREVENT_FALL
 	scf
 	ret
 
-.pittile
-	ld a, 5
+.not_pit
+	ld a, PLAYEREVENT_WARP
 	scf
 	ret
 
@@ -711,7 +711,7 @@
 	ret
 
 .IsSign
-	ld a, [wd040]
+	ld a, [EngineBuffer3]
 	ld hl, .signs
 	rst JumpTable
 	ret
@@ -749,7 +749,7 @@
 
 .read
 	call PlayTalkObject
-	ld hl, wd041
+	ld hl, EngineBuffer4
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -811,7 +811,7 @@
 
 
 CheckSignFlag: ; 96ad8
-	ld hl, wd041
+	ld hl, EngineBuffer4
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -820,7 +820,7 @@
 	call GetFarHalfword
 	ld e, l
 	ld d, h
-	ld b, $2 ; check
+	ld b, CHECK_FLAG
 	call EventFlagAction
 	ld a, c
 	and a
@@ -899,7 +899,7 @@
 CheckMenuOW: ; 96b30
 	xor a
 	ld [hMenuReturn], a
-	ld [$ffa1], a
+	ld [hMenuReturn + 1], a
 	ld a, [hJoyPressed]
 
 	bit 2, a ; SELECT
@@ -1050,14 +1050,16 @@
 	ld a, [ScriptRunning]
 	and a
 	ret z
-	cp -1 ; run script
+
+	cp PLAYEREVENT_MAPSCRIPT ; run script
 	ret z
-	cp 10
+
+	cp NUM_PLAYER_EVENTS
 	ret nc
 
 	ld c, a
 	ld b, 0
-	ld hl, ScriptPointers96c0c
+	ld hl, PlayerEventScriptPointers
 rept 3
 	add hl,bc
 endr
@@ -1070,18 +1072,18 @@
 	ret
 ; 96c0c
 
-ScriptPointers96c0c: ; 96c0c
-	dba Invalid_0x96c2d
-	dba SeenByTrainerScript
-	dba TalkToTrainerScript
-	dba FindItemInBallScript
-	dba UnknownScript_0x96c4d
-	dba WarpToNewMapScript
-	dba FallIntoMapScript
-	dba UnknownScript_0x124c8
-	dba HatchEggScript
-	dba UnknownScript_0x96c4f
-	dba Invalid_0x96c2d
+PlayerEventScriptPointers: ; 96c0c
+	dba Invalid_0x96c2d          ; 0
+	dba SeenByTrainerScript      ; 1
+	dba TalkToTrainerScript      ; 2
+	dba FindItemInBallScript     ; 3
+	dba UnknownScript_0x96c4d    ; 4
+	dba WarpToNewMapScript       ; 5
+	dba FallIntoMapScript        ; 6
+	dba Script_OverworldWhiteout ; 7
+	dba HatchEggScript           ; 8
+	dba UnknownScript_0x96c4f    ; 9
+	dba Invalid_0x96c2d          ; 10
 ; 96c2d
 
 Invalid_0x96c2d: ; 96c2d
@@ -1088,7 +1090,7 @@
 	end
 ; 96c2e
 
-UnknownScript_0x96c2e: ; 96c2e
+; unreferenced
 	end
 ; 96c2f
 
@@ -1099,12 +1101,12 @@
 
 WarpToNewMapScript: ; 96c34
 	warpsound
-	newloadmap MAPSETUP_05
+	newloadmap MAPSETUP_DOOR
 	end
 ; 96c38
 
 FallIntoMapScript: ; 96c38
-	newloadmap MAPSETUP_06
+	newloadmap MAPSETUP_FALL
 	playsound SFX_KINESIS
 	applymovement PLAYER, MovementData_0x96c48
 	playsound SFX_STRENGTH
@@ -1122,11 +1124,11 @@
 	end
 ; 96c4d
 
-UnknownScript_0x96c4d: ; 96c4d
-	reloadandreturn $f7
+UnknownScript_0x96c4d: ; 4
+	reloadandreturn MAPSETUP_CONNECTION
 ; 96c4f
 
-UnknownScript_0x96c4f: ; 96c4f
+UnknownScript_0x96c4f: ; 9
 	deactivatefacing $3
 	callasm SetBit4_ScriptFlags3
 	end
--- /dev/null
+++ b/engine/events_3.asm
@@ -1,0 +1,863 @@
+ReturnFromMapSetupScript:: ; b8000
+	xor a
+	ld [hBGMapMode], a
+	; For some reson, GameFreak chose to use a callba here instead of just falling through.
+	; No other function in the game references the function at 2E:400A, here labeled
+	; ReturnFromMapSetupScript.inefficientcallba.
+	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
+	ret
+; b800a
+
+.inefficientcallba: ; b800a
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+	ld [wCurrentLandmark], a
+	call .CheckNationalParkGate
+	jr z, .nationalparkgate
+
+	call GetMapPermission
+	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
+	callba Function104303
+	ret
+
+.dont_do_map_sign
+	ld a, [wCurrentLandmark]
+	ld [wPreviousLandmark], a
+	ld a, $90
+	ld [rWY], a
+	ld [hWY], a
+	xor a
+	ld [hLCDStatCustom], a
+	ret
+; b8064
+
+.CheckMovingWithinLandmark: ; b8064
+	ld a, [wCurrentLandmark]
+	ld c, a
+	ld a, [wPreviousLandmark]
+	cp c
+	ret z
+	cp $0
+	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
+	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
+	callba Function104303
+.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 [hLCDStatCustom], 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
+	callba 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
+rept 2
+	inc b
+endr
+rept 2
+	inc c
+endr
+	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
+rept 2
+	ld [hli], a
+endr
+
+.enterloop
+	inc a
+rept 2
+	ld [hli], a
+endr
+	dec a
+	dec c
+	jr nz, .continueloop
+	ret
+; b8172
+
+CheckForSignpostItems: ; 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 wd1ec/wd1ed.
+	ld a, [XCoord]
+	add SCREEN_WIDTH / 4
+	ld [wd1ed], a
+	ld a, [YCoord]
+	add SCREEN_HEIGHT / 4
+	ld [wd1ec], a
+; Get the pointer for the first signpost header in the map...
+	ld hl, wdc02
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+; ... before even checking to see if there are any signposts on this map.
+	ld a, [wCurrentMapSignpostCount]
+	and a
+	jr z, .nosignpostitems
+; For i = 1:wCurrentMapSignpostCount...
+.loop
+; Store the counter in Buffer2, and store the signpost header pointer in the stack.
+	ld [Buffer2], a
+	push hl
+; Get the Y coordinate of the signpost.
+	call .GetFarByte
+	ld e, a
+; Is the Y coordinate of the signpost on the screen?  If not, go to the next signpost.
+	ld a, [wd1ec]
+	sub e
+	jr c, .next
+	cp SCREEN_HEIGHT / 2
+	jr nc, .next
+; Is the X coordinate of the signpost on the screen?  If not, go to the next signpost.
+	call .GetFarByte
+	ld d, a
+	ld a, [wd1ed]
+	sub d
+	jr c, .next
+	cp SCREEN_WIDTH / 2
+	jr nc, .next
+; Is this signpost a hidden item?  If not, go to the next signpost.
+	call .GetFarByte
+	cp SIGNPOST_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 signpost header pointer and increment it by the length of a signpost header.
+	pop hl
+	ld bc, 5
+	add hl, bc
+; Restore the signpost counter and decrement it.  If it hits zero, there are no hidden items in range.
+	ld a, [Buffer2]
+	dec a
+	jr nz, .loop
+
+.nosignpostitems
+	xor a
+	ret
+
+.itemnearby
+	pop hl
+	scf
+	ret
+; b81e2
+
+.GetFarByte: ; b81e2
+	ld a, [Buffer1]
+	call GetFarByte
+	inc hl
+	ret
+; b81ea
+
+
+TreeMonEncounter: ; b81ea
+	callba MobileFn_1060ef
+
+	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
+
+TreeMonMaps: ; b825e
+treemon_map: macro
+	map \1
+	db  \2 ; treemon set
+endm
+	treemon_map ROUTE_26, 4
+	treemon_map ROUTE_27, 4
+	treemon_map ROUTE_28, 0
+	treemon_map ROUTE_29, 3
+	treemon_map ROUTE_30, 3
+	treemon_map ROUTE_31, 3
+	treemon_map ROUTE_32, 4
+	treemon_map ROUTE_33, 2
+	treemon_map ROUTE_34, 3
+	treemon_map ROUTE_35, 3
+	treemon_map ROUTE_36, 3
+	treemon_map ROUTE_37, 3
+	treemon_map ROUTE_38, 3
+	treemon_map ROUTE_39, 3
+	treemon_map ROUTE_40, 0
+	treemon_map ROUTE_41, 0
+	treemon_map ROUTE_42, 2
+	treemon_map ROUTE_43, 5
+	treemon_map ROUTE_44, 1
+	treemon_map ROUTE_45, 1
+	treemon_map ROUTE_46, 1
+	treemon_map NEW_BARK_TOWN, 0
+	treemon_map CHERRYGROVE_CITY, 0
+	treemon_map VIOLET_CITY, 0
+	treemon_map AZALEA_TOWN, 2
+	treemon_map CIANWOOD_CITY, 0
+	treemon_map GOLDENROD_CITY, 0
+	treemon_map OLIVINE_CITY, 0
+	treemon_map ECRUTEAK_CITY, 0
+	treemon_map MAHOGANY_TOWN, 0
+	treemon_map LAKE_OF_RAGE, 5
+	treemon_map BLACKTHORN_CITY, 0
+	treemon_map SILVER_CAVE_OUTSIDE, 0
+	treemon_map ILEX_FOREST, 6
+	db -1
+; b82c5
+
+RockMonMaps: ; b82c5
+	treemon_map CIANWOOD_CITY, 7
+	treemon_map ROUTE_40, 7
+	treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
+	treemon_map SLOWPOKE_WELL_B1F, 7
+	db -1
+; b82d2
+
+GetTreeMons: ; b82d2
+; Return the address of TreeMon table a in hl.
+; Return nc if table a doesn't exist.
+
+	cp 8
+	jr nc, .quit
+
+	and a
+	jr z, .quit
+
+	ld e, a
+	ld d, 0
+	ld hl, TreeMons
+rept 2
+	add hl, de
+endr
+
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+
+	scf
+	ret
+
+.quit
+	xor a
+	ret
+; b82e8
+
+TreeMons: ; b82e8
+	dw TreeMons1
+	dw TreeMons1
+	dw TreeMons2
+	dw TreeMons3
+	dw TreeMons4
+	dw TreeMons5
+	dw TreeMons6
+	dw RockMons
+	dw TreeMons1
+
+; Two tables each (normal, rare).
+; Structure:
+;	db  %, species, level
+
+TreeMons1: ; b82fa
+	db 50, SPEAROW,    10
+	db 15, SPEAROW,    10
+	db 15, SPEAROW,    10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+	db 50, SPEAROW,    10
+	db 15, HERACROSS,  10
+	db 15, HERACROSS,  10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+TreeMons2: ; b8320
+	db 50, SPEAROW,    10
+	db 15, EKANS,      10
+	db 15, SPEAROW,    10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+	db 50, SPEAROW,    10
+	db 15, HERACROSS,  10
+	db 15, HERACROSS,  10
+	db 10, AIPOM,      10
+	db  5, AIPOM,      10
+	db  5, AIPOM,      10
+	db -1
+
+TreeMons3: ; b8346
+	db 50, HOOTHOOT,   10
+	db 15, SPINARAK,   10
+	db 15, LEDYBA,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons4: ; b836c
+	db 50, HOOTHOOT,   10
+	db 15, EKANS,      10
+	db 15, HOOTHOOT,   10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons5: ; b8392
+	db 50, HOOTHOOT,   10
+	db 15, VENONAT,    10
+	db 15, HOOTHOOT,   10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db  5, EXEGGCUTE,  10
+	db -1
+
+TreeMons6: ; b83b8
+	db 50, HOOTHOOT,   10
+	db 15, PINECO,     10
+	db 15, PINECO,     10
+	db 10, NOCTOWL,    10
+	db  5, BUTTERFREE, 10
+	db  5, BEEDRILL,   10
+	db -1
+
+	db 50, HOOTHOOT,   10
+	db 15, CATERPIE,   10
+	db 15, WEEDLE,     10
+	db 10, HOOTHOOT,   10
+	db  5, METAPOD,    10
+	db  5, KAKUNA,     10
+	db -1
+
+RockMons: ; b83de
+	db 90, KRABBY,     15
+	db 10, SHUCKLE,    15
+	db -1
+; b83e5
+
+GetTreeMon: ; b83e5
+	push hl
+	call GetTreeScore
+	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
+rept 3
+	inc hl
+endr
+	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, [PlayerGender]
+	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
--- /dev/null
+++ b/engine/evolution_animation.asm
@@ -1,0 +1,457 @@
+EvolutionAnimation: ; 4e5e1
+	push hl
+	push de
+	push bc
+	ld a, [CurSpecies]
+	push af
+	ld a, [rOBP0]
+	push af
+	ld a, [BaseDexNo]
+	push af
+
+	call _EvolutionAnimation
+
+	pop af
+	ld [BaseDexNo], a
+	pop af
+	ld [rOBP0], a
+	pop af
+	ld [CurSpecies], a
+	pop bc
+	pop de
+	pop hl
+
+	ld a, [wd1ed]
+	and a
+	ret z
+
+	scf
+	ret
+; 4e607
+
+_EvolutionAnimation: ; 4e607
+	ld a, $e4
+	ld [rOBP0], a
+
+	ld de, MUSIC_NONE
+	call PlayMusic
+
+	callba Function8cf53
+
+	ld de, EvolutionGFX
+	ld hl, VTiles0
+	lb bc, BANK(EvolutionGFX), 8
+	call Request2bpp
+
+	xor a
+	ld [Danger], a
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld a, [Buffer1]
+	ld [PlayerHPPal], a
+
+	ld c, $0
+	call Function4e703
+	ld a, [Buffer1]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call Function4e708
+
+	ld de, VTiles2
+	ld hl, VTiles2 tile $31
+	ld bc, $31
+	call Request2bpp
+
+	ld a, $31
+	ld [wd1ec], a
+	call Evolution_FlashFrontpics
+	ld a, [Buffer2]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call Function4e711
+	ld a, [Buffer1]
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+
+	ld a, $1
+	ld [hBGMapMode], a
+	call Function4e794
+	jr c, .skip_cry
+
+	ld a, [Buffer1]
+	call PlayCry
+
+.skip_cry
+	ld de, MUSIC_EVOLUTION
+	call PlayMusic
+
+	ld c, 80
+	call DelayFrames
+
+	ld c, $1
+	call Function4e703
+	call Function4e726
+	jr c, .pressed_b
+
+	ld a, $cf
+	ld [wd1ec], a
+
+	call Evolution_FlashFrontpics
+	xor a
+	ld [wd1ed], a
+
+	ld a, [Buffer2]
+	ld [PlayerHPPal], a
+
+	ld c, $0
+	call Function4e703
+	call Function4e7a6
+	callba Function8cf53
+	call Function4e794
+	jr c, .asm_4e6de
+
+	ld a, [wc2c6]
+	push af
+	ld a, $1
+	ld [wc2c6], a
+	ld a, [CurPartySpecies]
+	push af
+
+	ld a, [PlayerHPPal]
+	ld [CurPartySpecies], a
+	hlcoord 7, 2
+	ld d, $0
+	ld e, ANIM_MON_EVOLVE
+	predef AnimateFrontpic
+
+	pop af
+	ld [CurPartySpecies], a
+	pop af
+	ld [wc2c6], a
+	ret
+
+.asm_4e6de
+	ret
+
+.pressed_b
+	ld a, $1
+	ld [wd1ed], a
+
+	ld a, [Buffer1]
+	ld [PlayerHPPal], a
+
+	ld c, $0
+	call Function4e703
+	call Function4e7a6
+	callba Function8cf53
+	call Function4e794
+	ret c
+
+	ld a, [PlayerHPPal]
+	call PlayCry
+	ret
+; 4e703
+
+Function4e703: ; 4e703
+	ld b, $b
+	jp GetSGBLayout
+; 4e708
+
+Function4e708: ; 4e708
+	call GetBaseData
+	hlcoord 7, 2
+	jp PrepMonFrontpic
+; 4e711
+
+Function4e711: ; 4e711
+	call GetBaseData
+	ld a, $1
+	ld [wc2c6], a
+	ld de, VTiles2
+	predef Function5108b
+	xor a
+	ld [wc2c6], a
+	ret
+; 4e726
+
+Function4e726: ; 4e726
+	call ClearJoypad
+	lb bc, 1, 14
+.loop
+	push bc
+	call Evolution_CheckPressedB
+	pop bc
+	jr c, .pressed_b
+	push bc
+	call Evolution_NextFrame
+	pop bc
+	inc b
+rept 2
+	dec c
+endr
+	jr nz, .loop
+	and a
+	ret
+
+.pressed_b
+	scf
+	ret
+; 4e741
+
+Evolution_NextFrame: ; 4e741
+.loop
+	ld a, -49
+	ld [wd1ec], a
+	call Evolution_FlashFrontpics
+	ld a, 49
+	ld [wd1ec], a
+	call Evolution_FlashFrontpics
+	dec b
+	jr nz, .loop
+	ret
+; 4e755
+
+Evolution_FlashFrontpics: ; 4e755
+	push bc
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 7, 2
+	lb bc, 7, 7
+	ld de, $d
+.loop1
+	push bc
+.loop2
+	ld a, [wd1ec]
+	add [hl]
+	ld [hli], a
+	dec c
+	jr nz, .loop2
+	pop bc
+	add hl, de
+	dec b
+	jr nz, .loop1
+	ld a, $1
+	ld [hBGMapMode], a
+	call WaitBGMap
+	pop bc
+	ret
+; 4e779
+
+Evolution_CheckPressedB: ; 4e779
+.loop
+	call DelayFrame
+	push bc
+	call JoyTextDelay
+	ld a, [hJoyDown]
+	pop bc
+	and B_BUTTON
+	jr nz, .pressed_b
+.loop2
+	dec c
+	jr nz, .loop
+	and a
+	ret
+
+.pressed_b
+	ld a, [wd1e9]
+	and a
+	jr nz, .loop2
+	scf
+	ret
+; 4e794
+
+Function4e794: ; 4e794
+	ld a, [CurPartyMon]
+	ld hl, PartyMon1Species
+	call GetPartyLocation
+	ld b, h
+	ld c, l
+	callba CheckFaintedFrzSlp
+	ret
+; 4e7a6
+
+Function4e7a6: ; 4e7a6
+	ld a, [wd1ed]
+	and a
+	ret nz
+	ld de, SFX_EVOLVED
+	call PlaySFX
+	ld hl, wJumptableIndex
+	ld a, [hl]
+	push af
+	ld [hl], $0
+.asm_4e7b8
+	call Function4e7cf
+	jr nc, .asm_4e7c2
+	call Function4e80c
+	jr .asm_4e7b8
+
+.asm_4e7c2
+	ld c, $20
+.asm_4e7c4
+	call Function4e80c
+	dec c
+	jr nz, .asm_4e7c4
+	pop af
+	ld [wJumptableIndex], a
+	ret
+; 4e7cf
+
+Function4e7cf: ; 4e7cf
+	ld hl, wJumptableIndex
+	ld a, [hl]
+	cp $20
+	ret nc
+	ld d, a
+	inc [hl]
+	and $1
+	jr nz, .asm_4e7e6
+	ld e, $0
+	call Function4e7e8
+	ld e, $10
+	call Function4e7e8
+
+.asm_4e7e6
+	scf
+	ret
+; 4e7e8
+
+Function4e7e8: ; 4e7e8
+	push de
+	ld de, $4858
+	ld a, $13
+	call Function3b2a
+	ld hl, $b
+	add hl, bc
+	ld a, [wJumptableIndex]
+	and $e
+	sla a
+	pop de
+	add e
+	ld [hl], a
+	ld hl, $3
+	add hl, bc
+	ld [hl], $0
+	ld hl, $c
+	add hl, bc
+	ld [hl], $10
+	ret
+; 4e80c
+
+Function4e80c: ; 4e80c
+	push bc
+	callab Function8cf69
+	ld a, [hVBlankCounter]
+	and $e
+	srl a
+rept 2
+	inc a
+endr
+	and $7
+	ld b, a
+	ld hl, Sprites + 3
+	ld c, $28
+.asm_4e823
+	ld a, [hl]
+	or b
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	dec c
+	jr nz, .asm_4e823
+	pop bc
+	call DelayFrame
+	ret
+; 4e831
+
+
+EvolutionGFX:
+INCBIN "gfx/evo/bubble_large.2bpp"
+INCBIN "gfx/evo/bubble.2bpp"
+
+Function4e881: ; 4e881
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	ld hl, VBGMap0
+	ld bc, VBGMap1 - VBGMap0
+	ld a, " "
+	call ByteFill
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	xor a
+	call ByteFill
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	call EnableLCD
+	ld hl, UnknownText_0x4e8bd
+	call PrintText
+	call Function3200
+	call SetPalettes
+	ret
+; 4e8bd
+
+UnknownText_0x4e8bd: ; 0x4e8bd
+	; SAVING RECORD… DON'T TURN OFF!
+	text_jump UnknownText_0x1bd39e
+	db "@"
+; 0x4e8c2
+
+
+Function4e8c2: ; 4e8c2
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	ld hl, VBGMap0
+	ld bc, VBGMap1 - VBGMap0
+	ld a, " "
+	call ByteFill
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	xor a
+	call ByteFill
+	ld hl, wd000
+	ld c, $40
+.asm_4e8ee
+	ld a, -1
+	ld [hli], a
+	ld a, " "
+	ld [hli], a
+	dec c
+	jr nz, .asm_4e8ee
+	xor a
+	ld [hSCY], a
+	ld [hSCX], a
+	call EnableLCD
+	call Function3200
+	call SetPalettes
+	ret
+; 4e906
+
+Function4e906: ; 4e906
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, w6_d000
+	ld bc, w6_d400 - w6_d000
+	ld a, " "
+	call ByteFill
+	ld hl, VBGMap0
+	ld de, w6_d000
+	ld b, $0
+	ld c, $40
+	call Request2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+; 4e929
--- /dev/null
+++ b/engine/flypoints.asm
@@ -1,0 +1,916 @@
+_FlyMap: ; 91af3
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld hl, hInMenu
+	ld a, [hl]
+	push af
+	ld [hl], $1
+	xor a
+	ld [hBGMapMode], a
+	callba Function8cf53
+	call Function91ff2
+	ld de, GFX_922e1
+	ld hl, VTiles2 tile $30
+	lb bc, BANK(GFX_922e1), 6
+	call Request1bpp
+	call FlyMap
+	call Function91c8f
+	ld b, $2
+	call GetSGBLayout
+	call SetPalettes
+.loop
+	call JoyTextDelay
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .pressedB
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .pressedA
+	call FlyMapScroll
+	call GetMapCursorCoordinates
+	callba Function8cf69
+	call DelayFrame
+	jr .loop
+
+.pressedB
+	ld a, -1
+	jr .exit
+
+.pressedA
+	ld a, [wd002]
+	ld l, a
+	ld h, 0
+	add hl, hl
+	ld de, Flypoints + 1
+	add hl, de
+	ld a, [hl]
+
+.exit
+	ld [wd002], a
+	pop af
+	ld [hInMenu], a
+	call ClearBGPalettes
+	ld a, $90
+	ld [hWY], a
+	xor a
+	ld [hBGMapAddress], a
+	ld a, VBGMap0 / $100
+	ld [hBGMapAddress + 1], a
+	ld a, [wd002]
+	ld e, a
+	ret
+; 91b73
+
+FlyMapScroll: ; 91b73
+	ld a, [StartFlypoint]
+	ld e, a
+	ld a, [EndFlypoint]
+	ld d, a
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .ScrollNext
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .ScrollPrev
+	ret
+
+.ScrollNext
+	ld hl, wd002
+	ld a, [hl]
+	cp d
+	jr nz, .NotAtEndYet
+	ld a, e
+	dec a
+	ld [hl], a
+
+.NotAtEndYet
+	inc [hl]
+	call CheckIfVisitedFlypoint
+	jr z, .ScrollNext
+	jr .Finally
+
+.ScrollPrev
+	ld hl, wd002
+	ld a, [hl]
+	cp e
+	jr nz, .NotAtStartYet
+	ld a, d
+	inc a
+	ld [hl], a
+
+.NotAtStartYet
+	dec [hl]
+	call CheckIfVisitedFlypoint
+	jr z, .ScrollPrev
+
+.Finally
+	call TownMapBubble
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 91bb5
+
+TownMapBubble: ; 91bb5
+; Draw the bubble containing the location text in the town map HUD
+
+; Top-left corner
+	hlcoord 1, 0
+	ld a, $30
+	ld [hli], a
+
+; Top row
+	ld bc, 16
+	ld a, " "
+	call ByteFill
+
+; Top-right corner
+	ld a, $31
+	ld [hl], a
+	hlcoord 1, 1
+
+
+; Middle row
+	ld bc, 18
+	ld a, " "
+	call ByteFill
+
+
+; Bottom-left corner
+	hlcoord 1, 2
+	ld a, $32
+	ld [hli], a
+
+; Bottom row
+	ld bc, 16
+	ld a, " "
+	call ByteFill
+
+; Bottom-right corner
+	ld a, $33
+	ld [hl], a
+
+
+; Print "Where?"
+	hlcoord 2, 0
+	ld de, .Where
+	call PlaceString
+
+; Print the name of the default flypoint
+	call .Name
+
+; Up/down arrows
+	hlcoord 18, 1
+	ld [hl], $34	
+	ret
+
+.Where
+	db "Where?@"
+
+.Name
+; We need the map location of the default flypoint
+	ld a, [wd002]
+	ld l, a
+	ld h, 0
+	add hl, hl ; two bytes per flypoint
+	ld de, Flypoints
+	add hl, de
+	ld e, [hl]
+
+	callba GetLandmarkName
+
+	hlcoord 2, 1
+	ld de, StringBuffer1
+	call PlaceString
+	ret
+; 91c17
+
+GetMapCursorCoordinates: ; 91c17
+	ld a, [wd002]
+	ld l, a
+	ld h, $0
+	add hl, hl
+	ld de, Flypoints
+	add hl, de
+	ld e, [hl]
+	callba GetLandmarkCoords
+	ld a, [wd003]
+	ld c, a
+	ld a, [wd004]
+	ld b, a
+	ld hl, $4
+	add hl, bc
+	ld [hl], e
+	ld hl, $5
+	add hl, bc
+	ld [hl], d
+	ret
+; 91c3c
+
+CheckIfVisitedFlypoint: ; 91c3c
+; Check if the flypoint loaded in [hl] has been visited yet.
+	push bc
+	push de
+	push hl
+	ld l, [hl]
+	ld h, 0
+	add hl, hl
+	ld de, Flypoints + 1
+	add hl, de
+	ld c, [hl]
+	call HasVisitedSpawn
+	pop hl
+	pop de
+	pop bc
+	and a
+	ret
+; 91c50
+
+HasVisitedSpawn: ; 91c50
+; Check if spawn point c has been visited.
+	ld hl, VisitedSpawns
+	ld b, CHECK_FLAG
+	ld d, 0
+	predef FlagPredef
+	ld a, c
+	ret
+; 91c5e
+
+Flypoints: ; 91c5e
+; landmark, spawn point
+
+	const_def
+
+flypoint: MACRO
+; \1\@FLY   EQUS "FLY_\1"
+; \1\@SPAWN EQUS "SPAWN_\1"
+	; const \1\@FLY
+	; db \2, \1\@SPAWN
+	const FLY_\1
+	db \2, SPAWN_\1
+ENDM
+
+; Johto
+	flypoint NEW_BARK,    NEW_BARK_TOWN
+	flypoint CHERRYGROVE, CHERRYGROVE_CITY
+	flypoint VIOLET,      VIOLET_CITY
+	flypoint AZALEA,      AZALEA_TOWN
+	flypoint GOLDENROD,   GOLDENROD_CITY
+	flypoint ECRUTEAK,    ECRUTEAK_CITY
+	flypoint OLIVINE,     OLIVINE_CITY
+	flypoint CIANWOOD,    CIANWOOD_CITY
+	flypoint MAHOGANY,    MAHOGANY_TOWN
+	flypoint LAKE,        LAKE_OF_RAGE
+	flypoint BLACKTHORN,  BLACKTHORN_CITY
+	flypoint MT_SILVER,   SILVER_CAVE
+
+; Kanto
+KANTO_FLYPOINT EQU const_value
+
+	flypoint PALLET,      PALLET_TOWN
+	flypoint VIRIDIAN,    VIRIDIAN_CITY
+	flypoint PEWTER,      PEWTER_CITY
+	flypoint CERULEAN,    CERULEAN_CITY
+	flypoint VERMILION,   VERMILION_CITY
+	flypoint ROCK_TUNNEL, ROCK_TUNNEL
+	flypoint LAVENDER,    LAVENDER_TOWN
+	flypoint CELADON,     CELADON_CITY
+	flypoint SAFFRON,     SAFFRON_CITY
+	flypoint FUCHSIA,     FUCHSIA_CITY
+	flypoint CINNABAR,    CINNABAR_ISLAND
+	flypoint INDIGO,      INDIGO_PLATEAU
+
+	db -1
+; 91c8f
+
+Function91c8f: ; 91c8f
+	ret
+; 91c90
+
+FlyMap: ; 91c90
+
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+; If we're not in a valid location, i.e. Pokecenter floor 2F,
+; the backup map information is used
+
+	cp SPECIAL_MAP
+	jr nz, .CheckRegion
+
+	ld a, [BackupMapGroup]
+	ld b, a
+	ld a, [BackupMapNumber]
+	ld c, a
+	call GetWorldMapLocation
+
+.CheckRegion
+; The first 46 locations are part of Johto. The rest are in Kanto
+	cp KANTO_LANDMARK
+	jr nc, .KantoFlyMap
+
+.JohtoFlyMap
+; Note that .NoKanto should be modified in tandem with this branch
+
+	push af
+
+; Start from New Bark Town
+	ld a, FLY_NEW_BARK
+	ld [wd002], a
+
+; Flypoints begin at New Bark Town...
+	ld [StartFlypoint], a
+; ..and end at Silver Cave
+	ld a, FLY_MT_SILVER
+	ld [EndFlypoint], a
+
+; Fill out the map
+	call FillJohtoMap
+	call .MapHud
+	pop af
+	call TownMapPlayerIcon
+	ret
+
+.KantoFlyMap
+
+; The event that there are no flypoints enabled in a map is not
+; accounted for. As a result, if you attempt to select a flypoint
+; when there are none enabled, the game will crash. Additionally,
+; the flypoint selection has a default starting point that
+; can be flown to even if none are enabled
+
+; To prevent both of these things from happening when the player
+; enters Kanto, fly access is restricted until Indigo Plateau is
+; visited and its flypoint enabled
+
+	push af
+	ld c, SPAWN_INDIGO
+	call HasVisitedSpawn
+	and a
+	jr z, .NoKanto
+
+; Kanto's map is only loaded if we've visited Indigo Plateau
+
+; Flypoints begin at Pallet Town...
+	ld a, FLY_PALLET
+	ld [StartFlypoint], a
+; ...and end at Indigo Plateau
+	ld a, FLY_INDIGO
+	ld [EndFlypoint], a
+
+; Because Indigo Plateau is the first flypoint the player
+; visits, it's made the default flypoint
+	ld [wd002], a
+
+; Fill out the map
+	call FillKantoMap
+	call .MapHud
+	pop af
+	call TownMapPlayerIcon
+	ret
+
+.NoKanto
+; If Indigo Plateau hasn't been visited, we use Johto's map instead
+
+; Start from New Bark Town
+	ld a, FLY_NEW_BARK
+	ld [wd002], a
+
+; Flypoints begin at New Bark Town...
+	ld [StartFlypoint], a
+; ..and end at Silver Cave
+	ld a, FLY_MT_SILVER
+	ld [EndFlypoint], a
+
+	call FillJohtoMap
+
+	pop af
+
+.MapHud
+	call TownMapBubble
+	call TownMapPals
+
+	ld hl, VBGMap0 ; BG Map 0
+	call TownMapBGUpdate
+
+	call TownMapMon
+	ld a, c
+	ld [wd003], a
+	ld a, b
+	ld [wd004], a
+	ret
+; 91d11
+
+Function91d11: ; 91d11
+	ld a, [wd002]
+	push af
+	ld a, [wd003]
+	push af
+	ld a, e
+	ld [wd002], a
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	ld a, $1
+	ld [hInMenu], a
+	ld de, GFX_922d1
+	ld hl, VTiles0 tile $7f
+	lb bc, BANK(GFX_922d1), 1
+	call Request2bpp ; actually 1bpp
+	call Function91ed0
+	ld hl, VTiles0 tile $78
+	ld c, $4
+	call Request2bpp
+	call Function91ff2
+	call FillKantoMap
+	call Function91de9
+	call TownMapPals
+	ld hl, VBGMap1
+	call TownMapBGUpdate
+	call FillJohtoMap
+	call Function91de9
+	call TownMapPals
+	ld hl, VBGMap0
+	call TownMapBGUpdate
+	ld b, $2
+	call GetSGBLayout
+	call SetPalettes
+	xor a
+	ld [hBGMapMode], a
+	xor a
+	call Function91e1e
+.asm_91d6e
+	call JoyTextDelay
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and A_BUTTON | B_BUTTON
+	jr nz, .asm_91d8f
+	ld a, [hJoypadDown]
+	and SELECT
+	jr nz, .asm_91d87
+	call Function91d9b
+	call Function91dcd
+	jr .asm_91d8a
+
+.asm_91d87
+	call Function91e5a
+
+.asm_91d8a
+	call DelayFrame
+	jr .asm_91d6e
+
+.asm_91d8f
+	call ClearSprites
+	pop af
+	ld [wd003], a
+	pop af
+	ld [wd002], a
+	ret
+; 91d9b
+
+Function91d9b: ; 91d9b
+	ld a, [hl]
+	and $20
+	jr nz, .asm_91da6
+	ld a, [hl]
+	and $10
+	jr nz, .asm_91db7
+	ret
+
+.asm_91da6
+	ld a, [hWY]
+	cp $90
+	ret z
+	call ClearSprites
+	ld a, $90
+	ld [hWY], a
+	xor a
+	call Function91e1e
+	ret
+
+.asm_91db7
+	ld a, [StatusFlags]
+	bit 6, a
+	ret z
+	ld a, [hWY]
+	and a
+	ret z
+	call ClearSprites
+	xor a
+	ld [hWY], a
+	ld a, $1
+	call Function91e1e
+	ret
+; 91dcd
+
+Function91dcd: ; 91dcd
+	ld a, [hVBlankCounter]
+	ld e, a
+	and $f
+	ret nz
+	ld a, e
+	and $10
+	jr nz, .asm_91ddc
+	call ClearSprites
+	ret
+
+.asm_91ddc
+	hlcoord 0, 0
+	ld de, Sprites
+	ld bc, $a0
+	call CopyBytes
+	ret
+; 91de9
+
+Function91de9: ; 91de9
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH
+	ld a, $7f
+	call ByteFill
+	hlcoord 0, 1
+	ld a, $6
+	ld [hli], a
+	ld bc, SCREEN_HEIGHT
+	ld a, $7
+	call ByteFill
+	ld [hl], $17
+	call GetPokemonName
+	hlcoord 2, 0
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, String_91e16
+	call PlaceString
+	ret
+; 91e16
+
+String_91e16:
+	db "'S NEST@"
+; 91e1e
+
+Function91e1e: ; 91e1e
+	ld [wd003], a
+	ld e, a
+	callba Function2a01f
+	decoord 0, 0
+	ld hl, Sprites
+.asm_91e2e
+	ld a, [de]
+	and a
+	jr z, .asm_91e4d
+	push de
+	ld e, a
+	push hl
+	callba GetLandmarkCoords
+	pop hl
+	ld a, d
+	sub $4
+	ld [hli], a
+	ld a, e
+	sub $4
+	ld [hli], a
+	ld a, $7f
+	ld [hli], a
+	xor a
+	ld [hli], a
+	pop de
+	inc de
+	jr .asm_91e2e
+
+.asm_91e4d
+	ld hl, Sprites
+	decoord 0, 0
+	ld bc, $a0
+	call CopyBytes
+	ret
+; 91e5a
+
+Function91e5a: ; 91e5a
+	call Function91ea9
+	ret c
+
+	ld a, [wd002]
+	ld e, a
+	callba GetLandmarkCoords
+	ld c, e
+	ld b, d
+	ld de, Unknown_91e9c
+	ld hl, Sprites
+.asm_91e70
+	ld a, [de]
+	cp $80
+	jr z, .asm_91e91
+
+	add b
+	ld [hli], a
+	inc de
+
+	ld a, [de]
+	add c
+	ld [hli], a
+	inc de
+
+	ld a, [de]
+	add $78
+	ld [hli], a
+	inc de
+
+	push bc
+	ld c, 0
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_91e8c
+	inc c
+.asm_91e8c
+	ld a, c
+	ld [hli], a
+	pop bc
+
+	jr .asm_91e70
+
+.asm_91e91
+	ld hl, Sprites + $10
+	ld bc, SpritesEnd - (Sprites + $10)
+	xor a
+	call ByteFill
+	ret
+; 91e9c
+
+Unknown_91e9c: ; 91e9c
+	db -8, -8,  0
+	db -8,  0,  1
+	db  0, -8,  2
+	db  0,  0,  3
+	db $80 ; terminator
+; 91ea9
+
+Function91ea9: ; 91ea9
+	ld a, [wd002]
+	cp FAST_SHIP
+	jr z, .johto
+	cp KANTO_LANDMARK
+	jr c, .johto
+
+.kanto
+	ld a, [wd003]
+	and a
+	jr z, .clear
+	jr .ok
+
+.johto
+	ld a, [wd003]
+	and a
+	jr nz, .clear
+
+.ok
+	and a
+	ret
+
+.clear
+	ld hl, Sprites
+	ld bc, SpritesEnd - Sprites
+	xor a
+	call ByteFill
+	scf
+	ret
+; 91ed0
+
+Function91ed0: ; 91ed0
+	ld a, [wd002]
+	cp FAST_SHIP
+	jr z, .asm_91ede
+	callba GetPlayerIcon
+	ret
+
+.asm_91ede
+	ld de, FastShipGFX
+	ld b, BANK(FastShipGFX)
+	ret
+; 91ee4
+
+TownMapBGUpdate: ; 91ee4
+; Update BG Map tiles and attributes
+
+; BG Map address
+	ld a, l
+	ld [hBGMapAddress], a
+	ld a, h
+	ld [hBGMapAddress + 1], a
+
+; Only update palettes on CGB
+	ld a, [hCGB]
+	and a
+	jr z, .tiles
+
+; BG Map mode 2 (palettes)
+	ld a, 2
+	ld [hBGMapMode], a
+
+; The BG Map is updated in thirds, so we wait
+; 3 frames to update the whole screen's palettes.
+	ld c, 3
+	call DelayFrames
+
+.tiles
+; Update BG Map tiles
+	call WaitBGMap
+
+; Turn off BG Map update
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 91eff
+
+FillJohtoMap: ; 91eff
+	ld de, JohtoMap
+	jr FillTownMap
+
+FillKantoMap: ; 91f04
+	ld de, KantoMap
+
+FillTownMap: ; 91f07
+	hlcoord 0, 0
+.loop
+	ld a, [de]
+	cp $ff
+	ret z
+	ld a, [de]
+	ld [hli], a
+	inc de
+	jr .loop
+; 91f13
+
+TownMapPals: ; 91f13
+; Assign palettes based on tile ids
+
+	hlcoord 0, 0
+	decoord 0, 0, AttrMap
+	ld bc, 360
+.loop
+; Current tile
+	ld a, [hli]
+	push hl
+
+; HP/borders use palette 0
+	cp $60
+	jr nc, .pal0
+
+; The palette data is condensed to nybbles,
+; least-significant first.
+	ld hl, TownMapPalMap
+	srl a
+	jr c, .odd
+
+; Even-numbered tile ids take the bottom nybble...
+	add l
+	ld l, a
+	ld a, h
+	adc 0
+	ld h, a
+	ld a, [hl]
+	and %111
+	jr .update
+
+.odd
+; ...and odd ids take the top.
+	add l
+	ld l, a
+	ld a, h
+	adc 0
+	ld h, a
+	ld a, [hl]
+	swap a
+	and %111
+	jr .update
+
+.pal0
+	xor a
+
+.update
+	pop hl
+	ld [de], a
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .loop
+	ret
+
+TownMapPalMap:
+	db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
+	db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
+	db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
+	db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
+; 91f7b
+
+TownMapMon: ; 91f7b
+; Draw the FlyMon icon at town map location in
+
+; Get FlyMon species
+	ld a, [CurPartyMon]
+	ld hl, PartySpecies
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+
+; Get FlyMon icon
+	ld e, 8 ; starting tile in VRAM
+	callba GetSpeciesIcon
+
+; Animation/palette
+	ld de, 0
+	ld a, $0
+	call Function3b2a
+
+	ld hl, 3
+	add hl, bc
+	ld [hl], 8
+	ld hl, 2
+	add hl, bc
+	ld [hl], 0
+	ret
+; 91fa6
+
+TownMapPlayerIcon: ; 91fa6
+; Draw the player icon at town map location in a
+	push af
+
+	callba GetPlayerIcon
+
+; Standing icon
+	ld hl, VTiles0 tile $10
+	ld c, 4 ; # tiles
+	call Request2bpp
+
+; Walking icon
+	ld hl, $c0
+	add hl, de
+	ld d, h
+	ld e, l
+	ld hl, VTiles0 tile $14
+	ld c, 4 ; # tiles
+	ld a, BANK(ChrisSpriteGFX) ; does nothing
+	call Request2bpp
+
+; Animation/palette
+	ld de, 0
+	ld b, $0a ; Male
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_91fd3
+	ld b, $1e ; Female
+.asm_91fd3
+	ld a, b
+	call Function3b2a
+
+	ld hl, $3
+	add hl, bc
+	ld [hl], $10
+
+	pop af
+	ld e, a
+	push bc
+	callba GetLandmarkCoords
+	pop bc
+
+	ld hl, 4
+	add hl, bc
+	ld [hl], e
+	ld hl, 5
+	add hl, bc
+	ld [hl], d
+	ret
+; 0x91ff2
+
+Function91ff2: ; 91ff2
+	ld hl, TownMapGFX
+	ld de, VTiles2
+	lb bc, BANK(TownMapGFX), $30
+	call DecompressRequest2bpp
+	ret
+; 91fff
+
+
+JohtoMap: ; 91fff
+INCBIN "gfx/misc/johto.bin"
+; 92168
+
+KantoMap: ; 92168
+INCBIN "gfx/misc/kanto.bin"
+; 922d1
+
+
+GFX_922d1: ; 922d1
+INCBIN "gfx/unknown/0922d1.2bpp"
+GFX_922e1: ; 922e1
+INCBIN "gfx/unknown/0922e1.2bpp"
+GFX_92301: ; 92301
+INCBIN "gfx/unknown/092301.2bpp"
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -15,7 +15,7 @@
 .fruit
 	writetext HeyItsFruitText
 	copybytetovar CurFruit
-	giveitem $ff, 1
+	giveitem ITEM_FROM_MEM
 	iffalse .packisfull
 	keeptextopen
 	writetext ObtainedFruitText
--- /dev/null
+++ b/engine/healmachineanim.asm
@@ -1,0 +1,266 @@
+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
+	ret z
+	; The location of the healing machine relative to the player is stored in ScriptVar.
+	; 0: Up and left (Pokemon Center)
+	; 1: Left (Elm's Lab)
+	; 2: Up (Hall of Fame)
+	ld a, [ScriptVar]
+	ld [Buffer1], a
+	ld a, [rOBP1]
+	ld [Buffer2], a
+	call .DoJumptableFunctions
+	ld a, [Buffer2]
+	call Functiond24
+	ret
+; 1233e
+
+.DoJumptableFunctions: ; 1233e
+	xor a
+	ld [wd1ec], a
+.jumpable_loop
+	ld a, [Buffer1]
+	ld e, a
+	ld d, 0
+	ld hl, .Pointers
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wd1ec]
+	ld e, a
+	inc a
+	ld [wd1ec], a
+	add hl, de
+	ld a, [hl]
+	cp 5
+	jr z, .finish
+	ld hl, .Jumptable
+	rst JumpTable
+	jr .jumpable_loop
+
+.finish
+	ret
+; 12365
+
+.Pointers: ; 12365
+	dw .Pokecenter
+	dw .ElmLab
+	dw .HallOfFame
+; 1236b
+
+.Pokecenter: ; 1236b
+	db 0, 1, 3, 5
+.ElmLab: ; 1236f
+	db 0, 1, 3, 5
+.HallOfFame: ; 12373
+	db 0, 2, 4, 5
+; 12377
+
+.Jumptable: ; 12377
+	dw .LoadGFX
+	dw .PC_LoadBallsOntoMachine
+	dw .HOF_LoadBallsOntoMachine
+	dw .PlayHealMusic
+	dw .HOF_PlaySFX
+	dw .dummy_5 ; never encountered
+; 12383
+
+.LoadGFX: ; 12383
+	call .LoadPalettes
+	ld de, .HealMachineGFX
+	ld hl, VTiles0 tile $7c
+	lb bc, BANK(.HealMachineGFX), $2
+	call Request2bpp
+	ret
+; 12393
+
+.PC_LoadBallsOntoMachine: ; 12393
+	ld hl, Sprites + $80
+	ld de, .PC_ElmsLab_TileMap
+	call .PlaceHealingMachineTile
+	call .PlaceHealingMachineTile
+	jr .LoadBallsOntoMachine
+
+.HOF_LoadBallsOntoMachine: ; 123a1
+	ld hl, Sprites + $80
+	ld de, .HOF_TileMap
+
+.LoadBallsOntoMachine: ; 123a7
+	ld a, [PartyCount]
+	ld b, a
+.party_loop
+	call .PlaceHealingMachineTile
+	push de
+	ld de, SFX_SECOND_PART_OF_ITEMFINDER
+	call PlaySFX
+	pop de
+	ld c, 30
+	call DelayFrames
+	dec b
+	jr nz, .party_loop
+	ret
+; 123bf
+
+.PlayHealMusic: ; 123bf
+	ld de, MUSIC_HEAL
+	call PlayMusic
+	jp .FlashPalettes8Times
+; 123c8
+
+.HOF_PlaySFX: ; 123c8
+	ld de, SFX_GAME_FREAK_LOGO_GS
+	call PlaySFX
+	call .FlashPalettes8Times
+	call WaitSFX
+	ld de, SFX_BOOT_PC
+	call PlaySFX
+	ret
+; 123db
+
+.dummy_5: ; 123db
+	ret
+; 123dc
+
+.PC_ElmsLab_TileMap: ; 123dc
+	db $20, $22, $7c, $16
+	db $20, $26, $7c, $16
+	db $26, $20, $7d, $16
+	db $26, $28, $7d, $36
+	db $2b, $20, $7d, $16
+	db $2b, $28, $7d, $36
+	db $30, $20, $7d, $16
+	db $30, $28, $7d, $36
+; 123fc
+
+.HealMachineGFX: ; 123fc
+INCBIN "gfx/unknown/0123fc.2bpp"
+; 1241c
+
+.HOF_TileMap: ; 1241c
+	db $3c, $51, $7d, $16
+	db $3c, $56, $7d, $16
+	db $3b, $4d, $7d, $16
+	db $3b, $5a, $7d, $16
+	db $39, $49, $7d, $16
+	db $39, $5d, $7d, $16
+; 12434
+
+.LoadPalettes: ; 12434
+	call IsCGB
+	jr nz, .cgb
+	ld a, %11100000
+	ld [rOBP1], a
+	ret
+
+.cgb
+	ld hl, .palettes
+	ld de, OBPals + 8 * 6
+	ld bc, 8
+	ld a, $5
+	call FarCopyWRAM
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 12451
+
+.palettes: ; 12451
+	RGB 31, 31, 31
+	RGB 31, 19, 10
+	RGB 31, 07, 01
+	RGB 00, 00, 00
+; 12459
+
+.FlashPalettes8Times: ; 12459
+	ld c, $8
+.palette_loop
+	push bc
+	call .FlashPalettes
+	ld c, 10
+	call DelayFrames
+	pop bc
+	dec c
+	jr nz, .palette_loop
+	ret
+; 12469
+
+.FlashPalettes: ; 12469
+	call IsCGB
+	jr nz, .go
+	ld a, [rOBP1]
+	xor %00101000
+	ld [rOBP1], a
+	ret
+
+.go
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+
+	ld hl, OBPals + 8 * 6
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push de
+	ld c, $3
+.palette_loop_2
+	ld a, [hli]
+	ld e, a
+	ld a, [hld]
+	ld d, a
+	dec hl
+	ld a, d
+	ld [hld], a
+	ld a, e
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	dec c
+	jr nz, .palette_loop_2
+	pop de
+	dec hl
+	ld a, d
+	ld [hld], a
+	ld a, e
+	ld [hl], a
+
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 124a3
+
+.PlaceHealingMachineTile: ; 124a3
+	push bc
+	ld a, [Buffer1]
+	lb bc, $10, $20
+	cp $1 ; ElmsLab
+	jr z, .okay
+	lb bc, $00, $00
+
+.okay
+	ld a, [de]
+	add c
+	inc de
+	ld [hli], a
+	ld a, [de]
+	add b
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	pop bc
+	ret
+; 124c1
--- a/engine/landmarks.asm
+++ b/engine/landmarks.asm
@@ -154,52 +154,52 @@
 	landmark 148, 132, FastShipName
 
 
-NewBarkTownName:     db "NEW BARK", $1f, "TOWN@"
-CherrygroveCityName: db "CHERRYGROVE", $1f, "CITY@"
+NewBarkTownName:     db "NEW BARK¯TOWN@"
+CherrygroveCityName: db "CHERRYGROVE¯CITY@"
 VioletCityName:      db "VIOLET CITY@"
 AzaleaTownName:      db "AZALEA TOWN@"
-GoldenrodCityName:   db "GOLDENROD", $1f, "CITY@"
-EcruteakCityName:    db "ECRUTEAK", $1f, "CITY@"
-OlivineCityName:     db "OLIVINE", $1f, "CITY@"
-CianwoodCityName:    db "CIANWOOD", $1f, "CITY@"
-MahoganyTownName:    db "MAHOGANY", $1f, "TOWN@"
-BlackthornCityName:  db "BLACKTHORN", $1f, "CITY@"
-LakeOfRageName:      db "LAKE OF", $1f, "RAGE@"
+GoldenrodCityName:   db "GOLDENROD¯CITY@"
+EcruteakCityName:    db "ECRUTEAK¯CITY@"
+OlivineCityName:     db "OLIVINE¯CITY@"
+CianwoodCityName:    db "CIANWOOD¯CITY@"
+MahoganyTownName:    db "MAHOGANY¯TOWN@"
+BlackthornCityName:  db "BLACKTHORN¯CITY@"
+LakeOfRageName:      db "LAKE OF¯RAGE@"
 SilverCaveName:      db "SILVER CAVE@"
-SproutTowerName:     db "SPROUT", $1f, "TOWER@"
-RuinsOfAlphName:     db "RUINS", $1f, "OF ALPH@"
+SproutTowerName:     db "SPROUT¯TOWER@"
+RuinsOfAlphName:     db "RUINS¯OF ALPH@"
 UnionCaveName:       db "UNION CAVE@"
-SlowpokeWellName:    db "SLOWPOKE", $1f, "WELL@"
+SlowpokeWellName:    db "SLOWPOKE¯WELL@"
 RadioTowerName:      db "RADIO TOWER@"
 PowerPlantName:      db "POWER PLANT@"
-NationalParkName:    db "NATIONAL", $1f, "PARK@"
+NationalParkName:    db "NATIONAL¯PARK@"
 TinTowerName:        db "TIN TOWER@"
 LighthouseName:      db "LIGHTHOUSE@"
-WhirlIslandsName:    db "WHIRL", $1f, "ISLANDS@"
+WhirlIslandsName:    db "WHIRL¯ISLANDS@"
 MtMortarName:        db "MT.MORTAR@"
-DragonsDenName:      db "DRAGON'S", $1f, "DEN@"
+DragonsDenName:      db "DRAGON'S¯DEN@"
 IcePathName:         db "ICE PATH@"
 NotApplicableName:   db "N/A@"
 PalletTownName:      db "PALLET TOWN@"
-ViridianCityName:    db "VIRIDIAN", $1f, "CITY@"
+ViridianCityName:    db "VIRIDIAN¯CITY@"
 PewterCityName:      db "PEWTER CITY@"
-CeruleanCityName:    db "CERULEAN", $1f, "CITY@"
-LavenderTownName:    db "LAVENDER", $1f, "TOWN@"
-VermilionCityName:   db "VERMILION", $1f, "CITY@"
-CeladonCityName:     db "CELADON", $1f, "CITY@"
-SaffronCityName:     db "SAFFRON", $1f, "CITY@"
-FuchsiaCityName:     db "FUCHSIA", $1f, "CITY@"
-CinnabarIslandName:  db "CINNABAR", $1f, "ISLAND@"
-IndigoPlateauName:   db "INDIGO", $1f, "PLATEAU@"
-VictoryRoadName:     db "VICTORY", $1f, "ROAD@"
+CeruleanCityName:    db "CERULEAN¯CITY@"
+LavenderTownName:    db "LAVENDER¯TOWN@"
+VermilionCityName:   db "VERMILION¯CITY@"
+CeladonCityName:     db "CELADON¯CITY@"
+SaffronCityName:     db "SAFFRON¯CITY@"
+FuchsiaCityName:     db "FUCHSIA¯CITY@"
+CinnabarIslandName:  db "CINNABAR¯ISLAND@"
+IndigoPlateauName:   db "INDIGO¯PLATEAU@"
+VictoryRoadName:     db "VICTORY¯ROAD@"
 MtMoonName:          db "MT.MOON@"
 RockTunnelName:      db "ROCK TUNNEL@"
-LavRadioTowerName:   db "LAV", $1f, "RADIO TOWER@"
+LavRadioTowerName:   db "LAV¯RADIO TOWER@"
 SilphCoName:         db "SILPH CO.@"
 SafariZoneName:      db "SAFARI ZONE@"
-SeafoamIslandsName:  db "SEAFOAM", $1f, "ISLANDS@"
-PokemonMansionName:  db "#MON", $1f, "MANSION@"
-CeruleanCaveNane:    db "CERULEAN", $1f, "CAVE@"
+SeafoamIslandsName:  db "SEAFOAM¯ISLANDS@"
+PokemonMansionName:  db "#MON¯MANSION@"
+CeruleanCaveNane:    db "CERULEAN¯CAVE@"
 Route1Name:          db "ROUTE 1@"
 Route2Name:          db "ROUTE 2@"
 Route3Name:          db "ROUTE 3@"
@@ -247,14 +247,14 @@
 Route45Name:         db "ROUTE 45@"
 Route46Name:         db "ROUTE 46@"
 DarkCaveName:        db "DARK CAVE@"
-IlexForestName:      db "ILEX", $1f, "FOREST@"
-BurnedTowerName:     db "BURNED", $1f, "TOWER@"
+IlexForestName:      db "ILEX¯FOREST@"
+BurnedTowerName:     db "BURNED¯TOWER@"
 FastShipName:        db "FAST SHIP@"
-ViridianForestName:  db "VIRIDIAN", $1f, "FOREST@"
-DiglettsCaveName:    db "DIGLETT'S", $1f, "CAVE@"
+ViridianForestName:  db "VIRIDIAN¯FOREST@"
+DiglettsCaveName:    db "DIGLETT'S¯CAVE@"
 TohjoFallsName:      db "TOHJO FALLS@"
 UndergroundName:     db "UNDERGROUND@"
-BattleTowerName:     db "BATTLE", $1f, "TOWER@"
+BattleTowerName:     db "BATTLE¯TOWER@"
 SpecialMapName:      db "SPECIAL@"
 
 
--- /dev/null
+++ b/engine/link.asm
@@ -1,0 +1,4117 @@
+LinkCommunications: ; 28000
+	call ClearBGPalettes
+	ld c, 80
+	call DelayFrames
+	call ClearScreen
+	call ClearSprites
+	call UpdateSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld c, 80
+	call DelayFrames
+	call ClearScreen
+	call UpdateSprites
+	call LoadStandardFont
+	call LoadFontsBattleExtra
+	callba Function16d69a
+	call Function3200
+	hlcoord 3, 8
+	ld b, $2
+	ld c, $c
+	ld d, h
+	ld e, l
+	callba Function4d35b
+	hlcoord 4, 10
+	ld de, String28419
+	call PlaceString
+	call Function28eff
+	call Function3200
+	ld hl, wcf5d
+	xor a
+	ld [hli], a
+	ld [hl], $50
+	ld a, [wLinkMode]
+	cp LINK_TIMECAPSULE
+	jp nz, Function28177
+
+Function2805d: ; 2805d
+	call Function28426
+	call Function28499
+	call Function28434
+	xor a
+	ld [wcf56], a
+	call Function87d
+	ld a, [hLinkPlayerNumber]
+	cp $2
+	jr nz, .asm_28091
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [hSerialSend], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+	call DelayFrame
+	xor a
+	ld [hSerialSend], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+
+.asm_28091
+	ld de, MUSIC_NONE
+	call PlayMusic
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [rIF], a
+	ld a, $8
+	ld [rIE], a
+	ld hl, wd1f3
+	ld de, EnemyMonSpecies
+	ld bc, $11
+	call Function75f
+	ld a, $fe
+	ld [de], a
+	ld hl, OverworldMap
+	ld de, wd26b
+	ld bc, $1a8
+	call Function75f
+	ld a, $fe
+	ld [de], a
+	ld hl, wc608
+	ld de, wc6d0
+	ld bc, $c8
+	call Function75f
+	xor a
+	ld [rIF], a
+	ld a, $1d
+	ld [rIE], a
+	call Function287ab
+	ld hl, wd26b
+	call Function287ca
+	push hl
+	ld bc, NAME_LENGTH
+	add hl, bc
+	ld a, [hl]
+	pop hl
+	and a
+	jp z, Function28b22
+	cp $7
+	jp nc, Function28b22
+	ld de, OverworldMap
+	ld bc, $1a2
+	call Function2879e
+	ld de, wc6d0
+	ld hl, wc813
+	ld c, $2
+.asm_280fe
+	ld a, [de]
+	inc de
+	and a
+	jr z, .asm_280fe
+	cp $fd
+	jr z, .asm_280fe
+	cp $fe
+	jr z, .asm_280fe
+	cp $ff
+	jr z, .asm_2811d
+	push hl
+	push bc
+	ld b, $0
+	dec a
+	ld c, a
+	add hl, bc
+	ld a, $fe
+	ld [hl], a
+	pop bc
+	pop hl
+	jr .asm_280fe
+
+.asm_2811d
+	ld hl, wc90f
+	dec c
+	jr nz, .asm_280fe
+	ld hl, OverworldMap
+	ld de, wd26b
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld de, OTPartyCount
+	ld a, [hli]
+	ld [de], a
+	inc de
+.asm_28135
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_2814e
+	ld [wd265], a
+	push hl
+	push de
+	callab ConvertMon_1to2
+	pop de
+	pop hl
+	ld a, [wd265]
+	ld [de], a
+	inc de
+	jr .asm_28135
+
+.asm_2814e
+	ld [de], a
+	ld hl, wc813
+	call Function2868a
+	ld a, OTPartyMonOT % $100
+	ld [wd102], a
+	ld a, OTPartyMonOT / $100
+	ld [wd103], a
+	ld de, MUSIC_NONE
+	call PlayMusic
+	ld a, [hLinkPlayerNumber]
+	cp $2
+	ld c, 66
+	call z, DelayFrames
+	ld de, MUSIC_ROUTE_30
+	call PlayMusic
+	jp Function287e3
+; 28177
+
+Function28177: ; 28177
+	call Function28426
+	call Function28595
+	call Function28434
+	call Function29dba
+	ld a, [ScriptVar]
+	and a
+	jp z, Function283b2
+	ld a, [hLinkPlayerNumber]
+	cp $2
+	jr nz, .asm_281ae
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [hSerialSend], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+	call DelayFrame
+	xor a
+	ld [hSerialSend], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+
+.asm_281ae
+	ld de, MUSIC_NONE
+	call PlayMusic
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [rIF], a
+	ld a, $8
+	ld [rIE], a
+	ld hl, wd1f3
+	ld de, EnemyMonSpecies
+	ld bc, $11
+	call Function75f
+	ld a, $fe
+	ld [de], a
+	ld hl, OverworldMap
+	ld de, wd26b
+	ld bc, $1c2
+	call Function75f
+	ld a, $fe
+	ld [de], a
+	ld hl, wc608
+	ld de, wc6d0
+	ld bc, $c8
+	call Function75f
+	ld a, [wLinkMode]
+	cp LINK_TRADECENTER
+	jr nz, .asm_281fd
+	ld hl, wc9f4
+	ld de, wcb84
+	ld bc, $186
+	call Function283f2
+
+.asm_281fd
+	xor a
+	ld [rIF], a
+	ld a, $1d
+	ld [rIE], a
+	ld de, MUSIC_NONE
+	call PlayMusic
+	call Function287ab
+	ld hl, wd26b
+	call Function287ca
+	ld de, OverworldMap
+	ld bc, $1b9
+	call Function2879e
+	ld de, wc6d0
+	ld hl, wc813
+	ld c, $2
+.asm_28224
+	ld a, [de]
+	inc de
+	and a
+	jr z, .asm_28224
+	cp $fd
+	jr z, .asm_28224
+	cp $fe
+	jr z, .asm_28224
+	cp $ff
+	jr z, .asm_28243
+	push hl
+	push bc
+	ld b, $0
+	dec a
+	ld c, a
+	add hl, bc
+	ld a, $fe
+	ld [hl], a
+	pop bc
+	pop hl
+	jr .asm_28224
+
+.asm_28243
+	ld hl, wc90f
+	dec c
+	jr nz, .asm_28224
+	ld a, [wLinkMode]
+	cp LINK_TRADECENTER
+	jp nz, .asm_282fe
+	ld hl, wcb84
+.asm_28254
+	ld a, [hli]
+	cp $20
+	jr nz, .asm_28254
+.asm_28259
+	ld a, [hli]
+	cp $fe
+	jr z, .asm_28259
+	cp $20
+	jr z, .asm_28259
+	dec hl
+	ld de, wcb84
+	ld bc, $190
+	call CopyBytes
+	ld hl, wcb84
+	ld bc, $c6
+.asm_28272
+	ld a, [hl]
+	cp $21
+	jr nz, .asm_28279
+	ld [hl], $fe
+
+.asm_28279
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_28272
+	ld de, wcc9e
+.asm_28282
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .asm_28294
+	ld hl, wcc4a
+	dec a
+	ld b, $0
+	ld c, a
+	add hl, bc
+	ld [hl], $fe
+	jr .asm_28282
+
+.asm_28294
+	ld hl, wcb84
+	ld de, wc9f4
+	ld b, $6
+.asm_2829c
+	push bc
+	ld bc, $21
+	call CopyBytes
+	ld a, $e
+	add e
+	ld e, a
+	ld a, $0
+	adc d
+	ld d, a
+	pop bc
+	dec b
+	jr nz, .asm_2829c
+	ld de, wc9f4
+	ld b, $6
+.asm_282b4
+	push bc
+	ld a, $21
+	add e
+	ld e, a
+	ld a, $0
+	adc d
+	ld d, a
+	ld bc, $e
+	call CopyBytes
+	pop bc
+	dec b
+	jr nz, .asm_282b4
+	ld b, $6
+	ld de, wc9f4
+.asm_282cc
+	push bc
+	push de
+	callba Function1de5c8
+	ld a, c
+	or a
+	jr z, .asm_282ee
+	sub $3
+	jr nc, .asm_282e4
+	callba Function1df203
+	jr .asm_282ee
+
+.asm_282e4
+	cp $2
+	jr nc, .asm_282ee
+	callba Function1df220
+
+.asm_282ee
+	pop de
+	ld hl, $2f
+	add hl, de
+	ld d, h
+	ld e, l
+	pop bc
+	dec b
+	jr nz, .asm_282cc
+	ld de, wcb0e
+	xor a
+	ld [de], a
+
+.asm_282fe
+	ld hl, OverworldMap
+	ld de, wd26b
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld de, OTPartyCount
+	ld bc, 8
+	call CopyBytes
+	ld de, wd276
+	ld bc, 2
+	call CopyBytes
+	ld de, OTPartyMon1Species
+	ld bc, $1a4
+	call CopyBytes
+	ld a, OTPartyMonOT % $100
+	ld [wd102], a
+	ld a, OTPartyMonOT / $100
+	ld [wd103], a
+	ld de, MUSIC_NONE
+	call PlayMusic
+	ld a, [hLinkPlayerNumber]
+	cp $2
+	ld c, 66
+	call z, DelayFrames
+	ld a, [wLinkMode]
+	cp LINK_COLOSSEUM
+	jr nz, .asm_283a9
+	ld a, CAL
+	ld [OtherTrainerClass], a
+	call ClearScreen
+	callba Function4d354
+	ld hl, Options
+	ld a, [hl]
+	push af
+	and $20
+	or $3
+	ld [hl], a
+	ld hl, wd26b
+	ld de, OTName
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	call ReturnToMapFromSubmenu
+	ld a, [wc2d7]
+	push af
+	ld a, $1
+	ld [wc2d7], a
+	ld a, [rIE]
+	push af
+	ld a, [rIF]
+	push af
+	xor a
+	ld [rIF], a
+	ld a, [rIE]
+	set 1, a
+	ld [rIE], a
+	pop af
+	ld [rIF], a
+	predef StartBattle
+	ld a, [rIF]
+	ld h, a
+	xor a
+	ld [rIF], a
+	pop af
+	ld [rIE], a
+	ld a, h
+	ld [rIF], a
+	pop af
+	ld [wc2d7], a
+	pop af
+	ld [Options], a
+	callba LoadPokemonData
+	jp Function28b22
+
+.asm_283a9
+	ld de, MUSIC_ROUTE_30
+	call PlayMusic
+	jp Function287e3
+; 283b2
+
+Function283b2: ; 283b2
+	ld de, UnknownText_0x283ed
+	ld b, $a
+.asm_283b7
+	call DelayFrame
+	call Function908
+	dec b
+	jr nz, .asm_283b7
+	xor a
+	ld [hld], a
+	ld [hl], a
+	ld [hVBlank], a
+	push de
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	push de
+	ld d, h
+	ld e, l
+	callba Function4d35b
+	pop de
+	pop hl
+	bccoord 1, 14
+	call PlaceWholeStringInBoxAtOnce
+	call FadeToWhite
+	call ClearScreen
+	ld b, $8
+	call GetSGBLayout
+	call Function3200
+	ret
+; 283ed
+
+UnknownText_0x283ed: ; 0x283ed
+	; Too much time has elapsed. Please try again.
+	text_jump UnknownText_0x1c4183
+	db "@"
+; 0x283f2
+
+Function283f2: ; 283f2
+	ld a, $1
+	ld [hFFCC], a
+.asm_283f6
+	ld a, [hl]
+	ld [hSerialSend], a
+	call Function78a
+	push bc
+	ld b, a
+	inc hl
+	ld a, $30
+.asm_28401
+	dec a
+	jr nz, .asm_28401
+	ld a, [hFFCC]
+	and a
+	ld a, b
+	pop bc
+	jr z, .asm_28411
+	dec hl
+	xor a
+	ld [hFFCC], a
+	jr .asm_283f6
+
+.asm_28411
+	ld [de], a
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_283f6
+	ret
+; 28419
+
+String28419: ; 28419
+	db "PLEASE WAIT!@"
+; 28426
+
+Function28426: ; 28426
+	ld hl, OverworldMap
+	lb bc, 5, SCREEN_WIDTH
+.asm_2842c
+	xor a
+	ld [hli], a
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_2842c
+	ret
+; 28434
+
+Function28434: ; 28434
+	ld hl, wd1f3
+	ld a, $fd
+	ld b, $7
+.asm_2843b
+	ld [hli], a
+	dec b
+	jr nz, .asm_2843b
+	ld b, $a
+.asm_28441
+	call Random
+	cp $fd
+	jr nc, .asm_28441
+	ld [hli], a
+	dec b
+	jr nz, .asm_28441
+	ld hl, wc608
+	ld a, $fd
+rept 3
+	ld [hli], a
+endr
+	ld b, $c8
+	xor a
+.asm_28457
+	ld [hli], a
+	dec b
+	jr nz, .asm_28457
+	ld hl, wc818
+	ld de, wc608 + 10
+	ld bc, 0
+.asm_28464
+	inc c
+	ld a, c
+	cp $fd
+	jr z, .asm_2848c
+	ld a, b
+	dec a
+	jr nz, .asm_2847f
+	push bc
+	ld a, [wLinkMode]
+	cp LINK_TIMECAPSULE
+	ld b, $d
+	jr z, .asm_2847a
+	ld b, $27
+
+.asm_2847a
+	ld a, c
+	cp b
+	pop bc
+	jr z, .asm_28495
+
+.asm_2847f
+	inc hl
+	ld a, [hl]
+	cp $fe
+	jr nz, .asm_28464
+	ld a, c
+	ld [de], a
+	inc de
+	ld [hl], $ff
+	jr .asm_28464
+
+.asm_2848c
+	ld a, $ff
+	ld [de], a
+	inc de
+	lb bc, 1, 0
+	jr .asm_28464
+
+.asm_28495
+	ld a, $ff
+	ld [de], a
+	ret
+; 28499
+
+Function28499: ; 28499
+	ld de, OverworldMap
+	ld a, $fd
+	ld b, $6
+.asm_284a0
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .asm_284a0
+	ld hl, PlayerName
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	push de
+	ld hl, PartyCount
+	ld a, [hli]
+	ld [de], a
+	inc de
+.asm_284b5
+	ld a, [hli]
+	cp $ff
+	jr z, .asm_284ce
+	ld [wd265], a
+	push hl
+	push de
+	callab ConvertMon_2to1
+	pop de
+	pop hl
+	ld a, [wd265]
+	ld [de], a
+	inc de
+	jr .asm_284b5
+
+.asm_284ce
+	ld [de], a
+	pop de
+	ld hl, $8
+	add hl, de
+	ld d, h
+	ld e, l
+	ld hl, PartyMon1Species
+	ld c, $6
+.asm_284db
+	push bc
+	call Function284f6
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_284db
+	ld hl, PartyMonOT
+	call .asm_284f0
+	ld hl, PartyMonNicknames
+.asm_284f0
+	ld bc, $42
+	jp CopyBytes
+; 284f6
+
+Function284f6: ; 284f6
+	ld b, h
+	ld c, l
+	push de
+	push bc
+	ld a, [hl]
+	ld [wd265], a
+	callab ConvertMon_2to1
+	pop bc
+	pop de
+	ld a, [wd265]
+	ld [de], a
+	inc de
+	ld hl, $22
+	add hl, bc
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	ld hl, $20
+	add hl, bc
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ld a, [bc]
+	cp $51
+	jr z, .asm_28528
+	cp $52
+	jr nz, .asm_28530
+
+.asm_28528
+	ld a, $17
+	ld [de], a
+	inc de
+	ld [de], a
+	inc de
+	jr .asm_28544
+
+.asm_28530
+	push bc
+	dec a
+	ld hl, BaseData + 7 ; type
+	ld bc, BaseData1 - BaseData0
+	call AddNTimes
+	ld bc, 2
+	ld a, BANK(BaseData)
+	call FarCopyBytes
+	pop bc
+
+.asm_28544
+	push bc
+	ld hl, $1
+	add hl, bc
+	ld bc, $1a
+	call CopyBytes
+	pop bc
+
+	ld hl, $1f
+	add hl, bc
+	ld a, [hl]
+	ld [de], a
+	ld [CurPartyLevel], a
+	inc de
+
+	push bc
+	ld hl, $24
+	add hl, bc
+	ld bc, 8
+	call CopyBytes
+	pop bc
+
+	push de
+	push bc
+
+	ld a, [bc]
+	dec a
+	push bc
+	ld b, 0
+	ld c, a
+	ld hl, KantoMonSpecials
+	add hl, bc
+	ld a, BANK(KantoMonSpecials)
+	call GetFarByte
+	ld [BaseSpecialAttack], a
+	pop bc
+
+	ld hl, $a
+	add hl, bc
+	ld c, $5
+	ld b, $1
+	predef CalcPkmnStatC
+
+	pop bc
+	pop de
+
+	ld a, [$ffb5]
+	ld [de], a
+	inc de
+	ld a, [$ffb6]
+	ld [de], a
+	inc de
+	ld h, b
+	ld l, c
+	ret
+; 28595
+
+Function28595: ; 28595
+	ld de, OverworldMap
+	ld a, $fd
+	ld b, $6
+.loop1
+	ld [de], a
+	inc de
+	dec b
+	jr nz, .loop1
+	ld hl, PlayerName
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld hl, PartyCount
+	ld bc, 8
+	call CopyBytes
+	ld hl, PlayerID
+	ld bc, 2
+	call CopyBytes
+	ld hl, PartyMon1Species
+	ld bc, $120
+	call CopyBytes
+	ld hl, PartyMonOT
+	ld bc, $42
+	call CopyBytes
+	ld hl, PartyMonNicknames
+	ld bc, $42
+	call CopyBytes
+	ld a, [wLinkMode]
+	cp LINK_TRADECENTER
+	ret nz
+	ld de, wc9f4
+	ld a, $20
+	call Function28682
+	ld a, BANK(sPartyScratch1)
+	call GetSRAMBank
+	ld hl, sPartyScratch1
+	ld b, PARTY_LENGTH
+.loop2
+	push bc
+	ld bc, $21
+	call CopyBytes
+	ld bc, $e
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .loop2
+	ld hl, sPartyScratch1
+	ld b, PARTY_LENGTH
+.loop3
+	push bc
+	ld bc, $21
+	add hl, bc
+	ld bc, $e
+	call CopyBytes
+	pop bc
+	dec b
+	jr nz, .loop3
+	ld b, PARTY_LENGTH
+	ld de, sPartyScratch1
+	ld hl, wc9f9
+.loop4
+	push bc
+	push hl
+	push de
+	push hl
+	callba Function1de5c8
+	pop de
+	ld a, c
+	or a
+	jr z, .next
+	sub $3
+	jr nc, .skip
+	callba Function1df1e6
+	jr .next
+
+.skip
+	cp $2
+	jr nc, .next
+	callba Function1df220
+
+.next
+	pop de
+	ld hl, SCRATCHMON_STRUCT_LENGTH
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, $21
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .loop4
+	call CloseSRAM
+	ld hl, wc9f9
+	ld bc, $c6
+.loop5
+	ld a, [hl]
+	cp $fe
+	jr nz, .skip2
+	ld [hl], $21
+
+.skip2
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .loop5
+	ld hl, wcabf
+	ld de, wcb13
+	ld b, $54
+	ld c, $0
+.loop6
+	inc c
+	ld a, [hl]
+	cp $fe
+	jr nz, .skip3
+	ld [hl], $ff
+	ld a, c
+	ld [de], a
+	inc de
+
+.skip3
+	inc hl
+	dec b
+	jr nz, .loop6
+	ld a, $ff
+	ld [de], a
+	ret
+; 28682
+
+Function28682: ; 28682
+	ld c, $5
+.loop
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .loop
+	ret
+; 2868a
+
+Function2868a: ; 2868a
+	push hl
+	ld d, h
+	ld e, l
+	ld bc, wcbea
+	ld hl, wcbe8
+	ld a, c
+	ld [hli], a
+	ld [hl], b
+	ld hl, OTPartyMon1Species
+	ld c, $6
+.loop
+	push bc
+	call Function286ba
+	pop bc
+	dec c
+	jr nz, .loop
+	pop hl
+	lb bc, 1, 8
+	add hl, bc
+	ld de, OTPartyMonOT
+	ld bc, $42
+	call CopyBytes
+	ld de, OTPartyMonNicknames
+	ld bc, $42
+	jp CopyBytes
+; 286ba
+
+Function286ba: ; 286ba
+	ld b, h
+	ld c, l
+	ld a, [de]
+	inc de
+	push bc
+	push de
+	ld [wd265], a
+	callab ConvertMon_1to2
+	pop de
+	pop bc
+	ld a, [wd265]
+	ld [bc], a
+	ld [CurSpecies], a
+	ld hl, $22
+	add hl, bc
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hl], a
+	inc de
+	ld hl, $20
+	add hl, bc
+	ld a, [de]
+	inc de
+	ld [hl], a
+	ld hl, wcbe8
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [de]
+	ld [hli], a
+	inc de
+	ld a, [de]
+	ld [hli], a
+	inc de
+	ld a, l
+	ld [wcbe8], a
+	ld a, h
+	ld [wcbe9], a
+	push bc
+	ld hl, $1
+	add hl, bc
+	push hl
+	ld h, d
+	ld l, e
+	pop de
+	push bc
+	ld a, [hli]
+	ld b, a
+	call Function28771
+	ld a, b
+	ld [de], a
+	inc de
+	pop bc
+	ld bc, $19
+	call CopyBytes
+	pop bc
+	ld d, h
+	ld e, l
+	ld hl, $1f
+	add hl, bc
+	ld a, [de]
+	inc de
+	ld [hl], a
+	ld [CurPartyLevel], a
+	push bc
+	ld hl, $24
+	add hl, bc
+	push hl
+	ld h, d
+	ld l, e
+	pop de
+	ld bc, 8
+	call CopyBytes
+	pop bc
+	call GetBaseData
+	push de
+	push bc
+	ld d, h
+	ld e, l
+	ld hl, $a
+	add hl, bc
+	ld c, $5
+	ld b, $1
+	predef CalcPkmnStatC
+	pop bc
+	pop hl
+	ld a, [$ffb5]
+	ld [hli], a
+	ld a, [$ffb6]
+	ld [hli], a
+	push hl
+	push bc
+	ld hl, $a
+	add hl, bc
+	ld c, $6
+	ld b, $1
+	predef CalcPkmnStatC
+	pop bc
+	pop hl
+	ld a, [$ffb5]
+	ld [hli], a
+	ld a, [$ffb6]
+	ld [hli], a
+	push hl
+	ld hl, $1b
+	add hl, bc
+	ld a, $46
+	ld [hli], a
+	xor a
+rept 2
+	ld [hli], a
+endr
+	ld [hl], a
+	pop hl
+rept 2
+	inc de
+endr
+	ret
+; 28771
+
+Function28771: ; 28771
+	ld a, b
+	and a
+	ret z
+	push hl
+	ld hl, .TimeCapsuleAlt
+.loop
+	ld a, [hli]
+	and a
+	jr z, .end
+	cp b
+	jr z, .found
+	inc hl
+	jr .loop
+
+.found
+	ld b, [hl]
+
+.end
+	pop hl
+	ret
+
+.TimeCapsuleAlt ; 28785
+; Pokémon traded from RBY do not have held items, so GSC usually interprets the
+; catch rate as an item. However, if the catch rate appears in this table, the
+; item associated with the table entry is used instead.
+	db ITEM_19, LEFTOVERS
+	db ITEM_2D, BITTER_BERRY
+	db ITEM_32, GOLD_BERRY
+	db ITEM_5A, BERRY
+	db ITEM_64, BERRY
+	db ITEM_78, BERRY
+	db ITEM_87, BERRY
+	db ITEM_BE, BERRY
+	db ITEM_C3, BERRY
+	db ITEM_DC, BERRY
+	db HM_08,   BERRY
+	db $ff,     BERRY
+	db $00
+; 2879e
+
+Function2879e: ; 2879e
+.asm_2879e
+	ld a, [hli]
+	cp $fe
+	jr z, .asm_2879e
+	ld [de], a
+	inc de
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_2879e
+	ret
+; 287ab
+
+Function287ab: ; 287ab
+	ld a, [hLinkPlayerNumber]
+	cp $2
+	ret z
+	ld hl, EnemyMonSpecies
+	call Function287d8
+	ld de, LinkBattleRNs
+	ld c, $a
+.asm_287bb
+	ld a, [hli]
+	cp $fe
+	jr z, .asm_287bb
+	cp $fd
+	jr z, .asm_287bb
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_287bb
+	ret
+; 287ca
+
+Function287ca: ; 287ca
+.asm_287ca
+	ld a, [hli]
+	and a
+	jr z, .asm_287ca
+	cp $fd
+	jr z, .asm_287ca
+	cp $fe
+	jr z, .asm_287ca
+	dec hl
+	ret
+; 287d8
+
+Function287d8: ; 287d8
+.asm_287d8
+	ld a, [hli]
+	cp $fd
+	jr z, .asm_287d8
+	cp $fe
+	jr z, .asm_287d8
+	dec hl
+	ret
+; 287e3
+
+Function287e3: ; 287e3
+	call ClearScreen
+	call Function28ef8
+	callba Function16d673
+	xor a
+	ld hl, wcf51
+rept 3
+	ld [hli], a
+endr
+	ld [hl], a
+	ld a, $1
+	ld [MenuSelection2], a
+	inc a
+	ld [wcf56], a
+	jp Function2888b
+; 28803
+
+Function28803: ; 28803
+	ld a, $1
+	ld [MonType], a
+	ld a, $c1
+	ld [wcfa8], a
+	ld a, [OTPartyCount]
+	ld [wcfa3], a
+	ld a, $1
+	ld [wcfa4], a
+	ld a, $9
+	ld [wcfa1], a
+	ld a, $6
+	ld [wcfa2], a
+	ld a, $1
+	ld [wcfaa], a
+	ld a, $10
+	ld [wcfa7], a
+	ld a, $20
+	ld [wcfa5], a
+	xor a
+	ld [wcfa6], a
+
+Function28835: ; 28835
+	callba Function16d70c
+	ld a, d
+	and a
+	jp z, Function2891c
+	bit 0, a
+	jr z, .asm_2885b
+	ld a, $1
+	ld [wd263], a
+	callab Function50db9
+	ld hl, OTPartyMon1Species
+	callba Function4d319
+	jp Function2891c
+
+.asm_2885b
+	bit 6, a
+	jr z, .asm_28883
+	ld a, [MenuSelection2]
+	ld b, a
+	ld a, [OTPartyCount]
+	cp b
+	jp nz, Function2891c
+	xor a
+	ld [MonType], a
+	call Function1bf7
+	push hl
+	push bc
+	ld bc, NAME_LENGTH
+	add hl, bc
+	ld [hl], $7f
+	pop bc
+	pop hl
+	ld a, [PartyCount]
+	ld [MenuSelection2], a
+	jr Function2888b
+
+.asm_28883
+	bit 7, a
+	jp z, Function2891c
+	jp Function28ac9
+; 2888b
+
+Function2888b: ; 2888b
+	callba Function49856
+	xor a
+	ld [MonType], a
+	ld a, $c1
+	ld [wcfa8], a
+	ld a, [PartyCount]
+	ld [wcfa3], a
+	ld a, $1
+	ld [wcfa4], a
+	ld a, $1
+	ld [wcfa1], a
+	ld a, $6
+	ld [wcfa2], a
+	ld a, $1
+	ld [wcfaa], a
+	ld a, $10
+	ld [wcfa7], a
+	ld a, $20
+	ld [wcfa5], a
+	xor a
+	ld [wcfa6], a
+	call Function3200
+
+Function288c5: ; 288c5
+	callba Function16d70c
+	ld a, d
+	and a
+	jr nz, .asm_288d2
+	jp Function2891c
+
+.asm_288d2
+	bit 0, a
+	jr z, .asm_288d9
+	jp Function28926
+
+.asm_288d9
+	bit 7, a
+	jr z, .asm_288fe
+	ld a, [MenuSelection2]
+	dec a
+	jp nz, Function2891c
+	ld a, $1
+	ld [MonType], a
+	call Function1bf7
+	push hl
+	push bc
+	ld bc, NAME_LENGTH
+	add hl, bc
+	ld [hl], $7f
+	pop bc
+	pop hl
+	ld a, $1
+	ld [MenuSelection2], a
+	jp Function28803
+
+.asm_288fe
+	bit 6, a
+	jr z, Function2891c
+	ld a, [MenuSelection2]
+	ld b, a
+	ld a, [PartyCount]
+	cp b
+	jr nz, Function2891c
+	call Function1bf7
+	push hl
+	push bc
+	ld bc, NAME_LENGTH
+	add hl, bc
+	ld [hl], $7f
+	pop bc
+	pop hl
+	jp Function28ade
+; 2891c
+
+Function2891c: ; 2891c
+	ld a, [MonType]
+	and a
+	jp z, Function288c5
+	jp Function28835
+; 28926
+
+Function28926: ; 28926
+	call LoadTileMapToTempTileMap
+	ld a, [MenuSelection2]
+	push af
+	hlcoord 0, 15
+	ld b, $1
+	ld c, $12
+	call Function28eef
+	hlcoord 2, 16
+	ld de, String28ab4
+	call PlaceString
+	callba Function4d354
+
+.asm_28946
+	ld a, $7f
+	ldcoord_a 11, 16
+	ld a, $13
+	ld [wcfa8], a
+	ld a, $1
+	ld [wcfa3], a
+	ld a, $1
+	ld [wcfa4], a
+	ld a, $10
+	ld [wcfa1], a
+	ld a, $1
+	ld [wcfa2], a
+	ld a, $1
+	ld [MenuSelection2], a
+	ld [wcfaa], a
+	ld a, $20
+	ld [wcfa7], a
+	xor a
+	ld [wcfa5], a
+	ld [wcfa6], a
+	call Function1bd3
+	bit 4, a
+	jr nz, .asm_2898d
+	bit 1, a
+	jr z, .asm_289cd
+.asm_28983
+	pop af
+	ld [MenuSelection2], a
+	call Call_LoadTempTileMapToTileMap
+	jp Function2888b
+
+.asm_2898d
+	ld a, $7f
+	ldcoord_a 1, 16
+	ld a, $23
+	ld [wcfa8], a
+	ld a, $1
+	ld [wcfa3], a
+	ld a, $1
+	ld [wcfa4], a
+	ld a, $10
+	ld [wcfa1], a
+	ld a, $b
+	ld [wcfa2], a
+	ld a, $1
+	ld [MenuSelection2], a
+	ld [wcfaa], a
+	ld a, $20
+	ld [wcfa7], a
+	xor a
+	ld [wcfa5], a
+	ld [wcfa6], a
+	call Function1bd3
+	bit 5, a
+	jp nz, .asm_28946
+	bit 1, a
+	jr nz, .asm_28983
+	jr .asm_289fe
+
+.asm_289cd
+	pop af
+	ld [MenuSelection2], a
+	ld a, $4
+	ld [wd263], a
+	callab Function50db9
+	callba Function4d319
+	call Call_LoadTempTileMapToTileMap
+	hlcoord 6, 1
+	lb bc, 6, 1
+	ld a, " "
+	call Function28b77
+	hlcoord 17, 1
+	lb bc, 6, 1
+	ld a, " "
+	call Function28b77
+	jp Function2888b
+
+.asm_289fe
+	call Function1bee
+	pop af
+	ld [MenuSelection2], a
+	dec a
+	ld [wd002], a
+	ld [wcf56], a
+	callba Function16d6ce
+	ld a, [wcf51]
+	cp $f
+	jp z, Function287e3
+	ld [wd003], a
+	call Function28b68
+	ld c, $64
+	call DelayFrames
+	callba Functionfb57e
+	jr c, .asm_28a58
+	callba Functionfb5dd
+	jp nc, Function28b87
+	xor a
+	ld [wcf57], a
+	ld [wcf52], a
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call Function28eef
+	callba Function4d354
+	ld hl, UnknownText_0x28aaf
+	bccoord 1, 14
+	call PlaceWholeStringInBoxAtOnce
+	jr .asm_28a89
+
+.asm_28a58
+	xor a
+	ld [wcf57], a
+	ld [wcf52], a
+	ld a, [wd003]
+	ld hl, OTPartySpecies
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [wd265], a
+	call GetPokemonName
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call Function28eef
+	callba Function4d354
+	ld hl, UnknownText_0x28ac4
+	bccoord 1, 14
+	call PlaceWholeStringInBoxAtOnce
+
+.asm_28a89
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call Function28eef
+	hlcoord 1, 14
+	ld de, String28ece
+	call PlaceString
+	ld a, $1
+	ld [wcf56], a
+	callba Function16d6ce
+	ld c, $64
+	call DelayFrames
+	jp Function287e3
+; 28aaf
+
+
+UnknownText_0x28aaf: ; 0x28aaf
+	; If you trade that #MON, you won't be able to battle.
+	text_jump UnknownText_0x1c41b1
+	db "@"
+; 0x28ab4
+
+String28ab4: ; 28ab4
+	db "STATS     TRADE@"
+
+UnknownText_0x28ac4: ; 0x28ac4
+	; Your friend's @  appears to be abnormal!
+	text_jump UnknownText_0x1c41e6
+	db "@"
+; 0x28ac9
+
+
+Function28ac9: ; 28ac9
+	ld a, [MenuSelection2]
+	cp $1
+	jp nz, Function2891c
+	call Function1bf7
+	push hl
+	push bc
+	ld bc, NAME_LENGTH
+	add hl, bc
+	ld [hl], $7f
+	pop bc
+	pop hl
+
+Function28ade: ; 28ade
+.asm_28ade
+	ld a, $ed
+	ldcoord_a 9, 17
+.asm_28ae3
+	call JoyTextDelay
+	ld a, [hJoyLast]
+	and a
+	jr z, .asm_28ae3
+	bit 0, a
+	jr nz, .asm_28b0b
+	push af
+	ld a, " "
+	ldcoord_a 9, 17
+	pop af
+	bit 6, a
+	jr z, .asm_28b03
+	ld a, [OTPartyCount]
+	ld [MenuSelection2], a
+	jp Function28803
+
+.asm_28b03
+	ld a, $1
+	ld [MenuSelection2], a
+	jp Function2888b
+
+.asm_28b0b
+	ld a, $ec
+	ldcoord_a 9, 17
+	ld a, $f
+	ld [wcf56], a
+	callba Function16d6ce
+	ld a, [wcf51]
+	cp $f
+	jr nz, .asm_28ade
+
+Function28b22: ; 28b22
+	call FadeToWhite
+	call ClearScreen
+	ld b, $8
+	call GetSGBLayout
+	call Function3200
+	xor a
+	ld [wcfbb], a
+	xor a
+	ld [rSB], a
+	ld [hSerialSend], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+	ret
+; 28b42
+
+Function28b42: ; 28b42
+	hlcoord 0, 16
+	ld a, "┘"
+	ld bc, 2 * SCREEN_WIDTH
+	call ByteFill
+	hlcoord 1, 16
+	ld a, " "
+	ld bc, SCREEN_WIDTH - 2
+	call ByteFill
+	hlcoord 2, 16
+	ld de, String_28b61
+	jp PlaceString
+; 28b61
+
+String_28b61: ; 28b61
+	db "CANCEL@"
+; 28b68
+
+Function28b68: ; 28b68
+	ld a, [wcf51]
+	hlcoord 6, 9
+	ld bc, SCREEN_WIDTH
+	call AddNTimes
+	ld [hl], $ec
+	ret
+; 28b77
+
+Function28b77: ; 28b77
+.asm_28b77
+	push bc
+	push hl
+.asm_28b79
+	ld [hli], a
+	dec c
+	jr nz, .asm_28b79
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_28b77
+	ret
+; 28b87
+
+Function28b87: ; 28b87
+	xor a
+	ld [wcf57], a
+	ld [wcf52], a
+	hlcoord 0, 12
+	ld b, $4
+	ld c, $12
+	call Function28eef
+	callba Function4d354
+	ld a, [wd002]
+	ld hl, PartySpecies
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld de, wd004
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	ld a, [wd003]
+	ld hl, OTPartySpecies
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, UnknownText_0x28eb8
+	bccoord 1, 14
+	call PlaceWholeStringInBoxAtOnce
+	call LoadStandardMenuDataHeader
+	hlcoord 10, 7
+	ld b, $3
+	ld c, $7
+	call Function28eef
+	ld de, String28eab
+	hlcoord 12, 8
+	call PlaceString
+	ld a, $8
+	ld [wcfa1], a
+	ld a, $b
+	ld [wcfa2], a
+	ld a, $1
+	ld [wcfa4], a
+	ld a, $2
+	ld [wcfa3], a
+	xor a
+	ld [wcfa5], a
+	ld [wcfa6], a
+	ld a, $20
+	ld [wcfa7], a
+	ld a, $3
+	ld [wcfa8], a
+	ld a, $1
+	ld [MenuSelection2], a
+	ld [wcfaa], a
+	callba Function4d354
+	call Function1bd3
+	push af
+	call Call_ExitMenu
+	call Function3200
+	pop af
+	bit 1, a
+	jr nz, .asm_28c33
+	ld a, [MenuSelection2]
+	dec a
+	jr z, .asm_28c54
+
+.asm_28c33
+	ld a, $1
+	ld [wcf56], a
+	hlcoord 0, 12
+	ld b, 4
+	ld c, 18
+	call Function28eef
+	hlcoord 1, 14
+	ld de, String28ece
+	call PlaceString
+	callba Function16d6ce
+	jp Function28ea3
+
+.asm_28c54
+	ld a, $2
+	ld [wcf56], a
+	callba Function16d6ce
+	ld a, [wcf51]
+	dec a
+	jr nz, .asm_28c7b
+	hlcoord 0, 12
+	ld b, 4
+	ld c, 18
+	call Function28eef
+	hlcoord 1, 14
+	ld de, String28ece
+	call PlaceString
+	jp Function28ea3
+
+.asm_28c7b
+	ld hl, sPartyScratch1
+	ld a, [wd002]
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	call AddNTimes
+	ld a, BANK(sPartyScratch1)
+	call GetSRAMBank
+	ld d, h
+	ld e, l
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	add hl, bc
+	ld a, [wd002]
+	ld c, a
+.asm_28c96
+	inc c
+	ld a, c
+	cp $6
+	jr z, .asm_28ca6
+	push bc
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	call CopyBytes
+	pop bc
+	jr .asm_28c96
+
+.asm_28ca6
+	ld hl, sPartyScratch1
+	ld a, [PartyCount]
+	dec a
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	call AddNTimes
+	push hl
+	ld hl, wc9f4
+	ld a, [wd003]
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	call AddNTimes
+	pop de
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	call CopyBytes
+	call CloseSRAM
+	ld hl, PlayerName
+	ld de, wc6e7
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld a, [wd002]
+	ld hl, PartySpecies
+	ld b, $0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	ld [wc6d0], a
+	push af
+	ld a, [wd002]
+	ld hl, PartyMonOT
+	call SkipNames
+	ld de, wc6f2
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld hl, PartyMon1ID
+	ld a, [wd002]
+	call GetPartyLocation
+	ld a, [hli]
+	ld [PlayerScreens], a
+	ld a, [hl]
+	ld [EnemyScreens], a
+	ld hl, PartyMon1DVs
+	ld a, [wd002]
+	call GetPartyLocation
+	ld a, [hli]
+	ld [wc6fd], a
+	ld a, [hl]
+	ld [wPlayerMinimized], a
+	ld a, [wd002]
+	ld hl, PartyMon1Species
+	call GetPartyLocation
+	ld b, h
+	ld c, l
+	callba GetCaughtGender
+	ld a, c
+	ld [wc701], a
+	ld hl, wd26b
+	ld de, wc719
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld a, [wd003]
+	ld hl, OTPartySpecies
+	ld b, $0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	ld [wc702], a
+	ld a, [wd003]
+	ld hl, OTPartyMonOT
+	call SkipNames
+	ld de, wc724
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ld hl, OTPartyMon1ID
+	ld a, [wd003]
+	call GetPartyLocation
+	ld a, [hli]
+	ld [wEnemyWrapCount], a
+	ld a, [hl]
+	ld [wPlayerCharging], a
+	ld hl, OTPartyMon1DVs
+	ld a, [wd003]
+	call GetPartyLocation
+	ld a, [hli]
+	ld [wEnemyTrappingMove], a
+	ld a, [hl]
+	ld [wPlayerWrapCount], a
+	ld a, [wd003]
+	ld hl, OTPartyMon1Species
+	call GetPartyLocation
+	ld b, h
+	ld c, l
+	callba GetCaughtGender
+	ld a, c
+	ld [wEnemyCharging], a
+	ld a, [wd002]
+	ld [CurPartyMon], a
+	ld hl, PartySpecies
+	ld b, $0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	ld [wd002], a
+	xor a
+	ld [wPokemonWithdrawDepositParameter], a
+	callab Functione039
+	ld a, [PartyCount]
+	dec a
+	ld [CurPartyMon], a
+	ld a, $1
+	ld [wd1e9], a
+	ld a, [wd003]
+	push af
+	ld hl, OTPartySpecies
+	ld b, $0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	ld [wd003], a
+	ld c, 100
+	call DelayFrames
+	call ClearTileMap
+	call LoadFontsBattleExtra
+	ld b, $8
+	call GetSGBLayout
+	ld a, [hLinkPlayerNumber]
+	cp $1
+	jr z, .asm_28de4
+	predef Function28f24
+	jr .asm_28de9
+
+.asm_28de4
+	predef Function28f63
+
+.asm_28de9
+	pop af
+	ld c, a
+	ld [CurPartyMon], a
+	ld hl, OTPartySpecies
+	ld d, $0
+	ld e, a
+	add hl, de
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	ld hl, OTPartyMon1Species
+	ld a, c
+	call GetPartyLocation
+	ld de, TempMonSpecies
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	predef Functionda96
+	ld a, [PartyCount]
+	dec a
+	ld [CurPartyMon], a
+	callab Function421d8
+	call ClearScreen
+	call Function28ef8
+	call Function28eff
+	callba Function4d354
+	ld b, $1
+	pop af
+	ld c, a
+	cp MEW
+	jr z, .asm_28e49
+	ld a, [CurPartySpecies]
+	cp MEW
+	jr z, .asm_28e49
+	ld b, $2
+	ld a, c
+	cp CELEBI
+	jr z, .asm_28e49
+	ld a, [CurPartySpecies]
+	cp CELEBI
+	jr z, .asm_28e49
+	ld b, $0
+
+.asm_28e49
+	ld a, b
+	ld [wcf56], a
+	push bc
+	call Function862
+	pop bc
+	ld a, [wLinkMode]
+	cp LINK_TIMECAPSULE
+	jr z, .asm_28e63
+	ld a, b
+	and a
+	jr z, .asm_28e63
+	ld a, [wcf52]
+	cp b
+	jr nz, .asm_28e49
+
+.asm_28e63
+	callba Function14a58
+	callba MobileFn_1060af
+	callba BackupMobileEventIndex
+	ld c, 40
+	call DelayFrames
+	hlcoord 0, 12
+	ld b, 4
+	ld c, 18
+	call Function28eef
+	hlcoord 1, 14
+	ld de, String28ebd
+	call PlaceString
+	callba Function4d354
+	ld c, 50
+	call DelayFrames
+	ld a, [wLinkMode]
+	cp LINK_TIMECAPSULE
+	jp z, Function2805d
+	jp Function28177
+; 28ea3
+
+Function28ea3: ; 28ea3
+	ld c, 100
+	call DelayFrames
+	jp Function287e3
+; 28eab
+
+String28eab: ; 28eab
+	db   "TRADE"
+	next "CANCEL@"
+
+UnknownText_0x28eb8: ; 0x28eb8
+	; Trade @ for @ ?
+	text_jump UnknownText_0x1c4212
+	db "@"
+; 0x28ebd
+
+String28ebd: ; 28ebd
+	db   "Trade completed!@"
+
+String28ece: ; 28ece
+	db   "Too bad! The trade"
+	next "was canceled!@"
+
+
+Function28eef: ; 28eef
+	ld d, h
+	ld e, l
+	callba Function16d6ca
+	ret
+; 28ef8
+
+Function28ef8: ; 28ef8
+	callba Function16d696
+	ret
+; 28eff
+
+Function28eff: ; 28eff
+	callba Function16d6a7
+	call SetPalettes
+	ret
+; 28f09
+
+Function28f09: ; 28f09
+	hlcoord 0, 0
+	ld b, 6
+	ld c, 18
+	call Function28eef
+	hlcoord 0, 8
+	ld b, 6
+	ld c, 18
+	call Function28eef
+	callba Functionfb60d
+	ret
+; 28f24
+
+Function28f24: ; 28f24
+	xor a
+	ld [wcf66], a
+	ld hl, wc6e7
+	ld de, wc719
+	call Function297ff
+	ld hl, wc6d0
+	ld de, wc702
+	call Function29814
+	ld de, .data_28f3f
+	jr Function28fa1
+
+.data_28f3f
+	db $1b
+	db $1
+	db $1c
+	db $21
+	db $2d
+	db $27
+	db $23
+	db $3
+	db $25
+	db $28
+	db $25
+	db $1e
+	db $29
+	db $6
+	db $16
+	db $1f
+	db $19
+	db $17
+	db $22
+	db $1f
+	db $2a
+	db $e
+	db $3
+	db $24
+	db $5
+	db $25
+	db $2
+	db $27
+	db $25
+	db $1d
+	db $2c
+	db $2e
+	db $1e
+	db $18
+	db $1f
+	db $2b
+
+Function28f63: ; 28f63
+	xor a
+	ld [wcf66], a
+	ld hl, wc719
+	ld de, wc6e7
+	call Function297ff
+	ld hl, wc702
+	ld de, wc6d0
+	call Function29814
+	ld de, .data_28f7e
+	jr Function28fa1
+
+.data_28f7e
+	db $1a
+	db $17
+	db $22
+	db $1f
+	db $2a
+	db $6
+	db $3
+	db $24
+	db $5
+	db $25
+	db $2
+	db $27
+	db $25
+	db $1d
+	db $2c
+	db $2f
+	db $1e
+	db $18
+	db $1f
+	db $1b
+	db $1
+	db $1c
+	db $22
+	db $27
+	db $23
+	db $3
+	db $25
+	db $28
+	db $25
+	db $1e
+	db $29
+	db $e
+	db $16
+	db $1f
+	db $2b
+
+Function28fa1: ; 28fa1
+	ld hl, BattleEnded
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	ld hl, VramState
+	ld a, [hl]
+	push af
+	res 0, [hl]
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function28fdb
+	ld a, [wcf66]
+	and a
+	jr nz, .asm_28fca
+	ld de, MUSIC_EVOLUTION
+	call PlayMusic2
+.asm_28fca
+	call Function29082
+	jr nc, .asm_28fca
+	pop af
+	ld [Options], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [hMapAnims], a
+	ret
+; 28fdb
+
+Function28fdb: ; 28fdb
+	xor a
+	ld [wJumptableIndex], a
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearTileMap
+	call DisableLCD
+	call LoadFontsBattleExtra
+	callab Function8cf53
+	ld a, [hCGB]
+	and a
+	jr z, .asm_2900b
+	ld a, $1
+	ld [rVBK], a
+	ld hl, VTiles0
+	ld bc, sScratch - VTiles0
+	xor a
+	call ByteFill
+	ld a, $0
+	ld [rVBK], a
+
+.asm_2900b
+	ld hl, VBGMap0
+	ld bc, sScratch - VBGMap0
+	ld a, " "
+	call ByteFill
+	ld hl, TradeGameBoyLZ
+	ld de, VTiles2 tile $31
+	call Decompress
+	ld hl, TradeArrowGFX
+	ld de, VTiles1 tile $6d
+	ld bc, $10
+	ld a, BANK(TradeArrowGFX)
+	call FarCopyBytes
+	ld hl, TradeArrowGFX + $10
+	ld de, VTiles1 tile $6e
+	ld bc, $10
+	ld a, BANK(TradeArrowGFX)
+	call FarCopyBytes
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	callba Function4d7fd
+	call EnableLCD
+	call Function2982b
+	ld a, [wc6d0]
+	ld hl, wc6fd
+	ld de, VTiles0
+	call Function29491
+	ld a, [wc702]
+	ld hl, wEnemyTrappingMove
+	ld de, VTiles0 tile $31
+	call Function29491
+	ld a, [wc6d0]
+	ld de, wc6d1
+	call Function294a9
+	ld a, [wc702]
+	ld de, wc703
+	call Function294a9
+	call Function297ed
+	ret
+; 29082
+
+Function29082: ; 29082
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_2909b
+	call Function290a0
+	callab Function8cf69
+	ld hl, wcf65
+	inc [hl]
+	call DelayFrame
+	and a
+	ret
+
+.asm_2909b
+	call LoadStandardFont
+	scf
+	ret
+; 290a0
+
+Function290a0: ; 290a0
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, JumpTable290af
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 290af
+
+JumpTable290af: ; 290af
+	dw Function29114
+	dw Function2942e
+	dw Function29461
+	dw Function29348
+	dw Function2937e
+	dw Function29391
+	dw Function29129
+	dw Function291af
+	dw Function291c4
+	dw Function291d9
+	dw Function2925d
+	dw Function29220
+	dw Function2925d
+	dw Function29229
+	dw Function2913c
+	dw Function2925d
+	dw Function291e8
+	dw Function291fd
+	dw Function29211
+	dw Function29220
+	dw Function2925d
+	dw Function29229
+	dw Function29701
+	dw Function2973c
+	dw Function2975c
+	dw Function2977f
+	dw Function297a4
+	dw Function293a6
+	dw Function293b6
+	dw Function293d2
+	dw Function293de
+	dw Function293ea
+	dw Function2940c
+	dw Function294e7
+	dw Function294f0
+	dw Function2961b
+	dw Function2962c
+	dw Function29879
+	dw Function29886
+	dw Function29649
+	dw Function29660
+	dw Function2926d
+	dw Function29277
+	dw Function29123
+	dw Function29487
+	dw Function294f9
+	dw Function29502
+	dw Function2950c
+; 2910f
+
+Function2910f: ; 2910f
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; 29114
+
+Function29114: ; 29114
+	ld hl, BattleEnded
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld a, [de]
+	ld [wJumptableIndex], a
+	inc de
+	ld [hl], d
+	dec hl
+	ld [hl], e
+	ret
+; 29123
+
+Function29123: ; 29123
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+; 29129
+
+Function29129: ; 29129
+	ld a, $ed
+	call Function292f6
+	ld a, [wc74c]
+	ld [wd265], a
+	xor a
+	ld de, $2c58
+	ld b, $0
+	jr Function2914e
+
+Function2913c: ; 2913c
+	ld a, $ee
+	call Function292f6
+	ld a, [wc74d]
+	ld [wd265], a
+	ld a, $2
+	lb de, $4c, $94
+	ld b, $4
+
+Function2914e: ; 2914e
+	push bc
+	push de
+	push bc
+	push de
+	push af
+	call DisableLCD
+	callab Function8cf53
+	ld hl, $9874
+	ld bc, $c
+	ld a, $60
+	call ByteFill
+	pop af
+	call Function29281
+	xor a
+	ld [hSCX], a
+	ld a, $7
+	ld [hWX], a
+	ld a, $70
+	ld [hWY], a
+	call EnableLCD
+	call Function2985a
+	pop de
+	ld a, $11
+	call Function3b2a
+	ld hl, $b
+	add hl, bc
+	pop bc
+	ld [hl], b
+	pop de
+	ld a, $12
+	call Function3b2a
+	ld hl, $b
+	add hl, bc
+	pop bc
+	ld [hl], b
+	call WaitBGMap
+	ld b, $1b
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld a, $d0
+	call Functioncf8
+	call Function2910f
+	ld a, $5c
+	ld [wcf64], a
+	ret
+; 291af
+
+Function291af: ; 291af
+	call Function2981d
+	ld a, [hSCX]
+	add $2
+	ld [hSCX], a
+	cp $50
+	ret nz
+	ld a, $1
+	call Function29281
+	call Function2910f
+	ret
+; 291c4
+
+Function291c4: ; 291c4
+	call Function2981d
+	ld a, [hSCX]
+	add $2
+	ld [hSCX], a
+	cp $a0
+	ret nz
+	ld a, $2
+	call Function29281
+	call Function2910f
+	ret
+; 291d9
+
+Function291d9: ; 291d9
+	call Function2981d
+	ld a, [hSCX]
+	add $2
+	ld [hSCX], a
+	and a
+	ret nz
+	call Function2910f
+	ret
+; 291e8
+
+Function291e8: ; 291e8
+	call Function2981d
+	ld a, [hSCX]
+	sub $2
+	ld [hSCX], a
+	cp $b0
+	ret nz
+	ld a, $1
+	call Function29281
+	call Function2910f
+	ret
+; 291fd
+
+Function291fd: ; 291fd
+	call Function2981d
+	ld a, [hSCX]
+	sub $2
+	ld [hSCX], a
+	cp $60
+	ret nz
+	xor a
+	call Function29281
+	call Function2910f
+	ret
+; 29211
+
+Function29211: ; 29211
+	call Function2981d
+	ld a, [hSCX]
+	sub $2
+	ld [hSCX], a
+	and a
+	ret nz
+	call Function2910f
+	ret
+; 29220
+
+Function29220: ; 29220
+	ld a, $80
+	ld [wcf64], a
+	call Function2910f
+	ret
+; 29229
+
+Function29229: ; 29229
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	call DisableLCD
+	callab Function8cf53
+	ld hl, VBGMap0
+	ld bc, sScratch - VBGMap0
+	ld a, " "
+	call ByteFill
+	xor a
+	ld [hSCX], a
+	ld a, $90
+	ld [hWY], a
+	call EnableLCD
+	call Function2982b
+	call WaitBGMap
+	call Function297ed
+	call Function29114
+	ret
+; 2925d
+
+Function2925d: ; 2925d
+	call Function2981d
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_29269
+	dec [hl]
+	ret
+
+.asm_29269
+	call Function2910f
+	ret
+; 2926d
+
+Function2926d: ; 2926d
+	call Function29114
+	ld de, SFX_GIVE_TRADEMON
+	call PlaySFX
+	ret
+; 29277
+
+Function29277: ; 29277
+	call Function29114
+	ld de, SFX_GET_TRADEMON
+	call PlaySFX
+	ret
+; 29281
+
+Function29281: ; 29281
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_2928f
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 2928f
+
+Jumptable_2928f: ; 2928f
+	dw Function29297
+	dw Function292af
+	dw Function292be
+	dw Function29297
+; 29297
+
+Function29297: ; 29297
+	call Function297cf
+	hlcoord 9, 3
+	ld [hl], $5b
+	inc hl
+	ld bc, $a
+	ld a, $60
+	call ByteFill
+	hlcoord 3, 2
+	call Function292ec
+	ret
+; 292af
+
+Function292af: ; 292af
+	call Function297cf
+	hlcoord 0, 3
+	ld bc, SCREEN_WIDTH
+	ld a, $60
+	call ByteFill
+	ret
+; 292be
+
+Function292be: ; 292be
+	call Function297cf
+	hlcoord 0, 3
+	ld bc, $11
+	ld a, $60
+	call ByteFill
+	hlcoord 17, 3
+	ld a, $5d
+	ld [hl], a
+	ld a, $61
+	ld de, SCREEN_WIDTH
+	ld c, $3
+.asm_292d9
+	add hl, de
+	ld [hl], a
+	dec c
+	jr nz, .asm_292d9
+	add hl, de
+	ld a, $5f
+	ld [hld], a
+	ld a, $5b
+	ld [hl], a
+	hlcoord 10, 6
+	call Function292ec
+	ret
+; 292ec
+
+Function292ec: ; 292ec
+	ld de, TradeGameBoyTilemap
+	lb bc, 8, 6
+	call Function297db
+	ret
+; 292f6
+
+Function292f6: ; 292f6
+	push af
+	call ClearBGPalettes
+	call WaitTop
+	ld a, VBGMap1 / $100
+	ld [hBGMapAddress + 1], a
+	call ClearTileMap
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH
+	ld a, "─"
+	call ByteFill
+	hlcoord 0, 1
+	ld de, wc736
+	call PlaceString
+	ld hl, wc741
+	ld de, 0
+.asm_2931e
+	ld a, [hli]
+	cp "@"
+	jr z, .asm_29326
+	dec de
+	jr .asm_2931e
+
+.asm_29326
+	hlcoord 0, 4
+	add hl, de
+	ld de, wc741
+	call PlaceString
+	hlcoord 7, 2
+	ld bc, 6
+	pop af
+	call ByteFill
+	call WaitBGMap
+	call WaitTop
+	ld a, VBGMap0 / $100
+	ld [hBGMapAddress + 1], a
+	call ClearTileMap
+	ret
+; 29348
+
+Function29348: ; 29348
+	call ClearTileMap
+	call WaitTop
+	ld a, $a0
+	ld [hSCX], a
+	call DelayFrame
+	hlcoord 8, 2
+	ld de, Tilemap_298f7
+	lb bc, 3, 12
+	call Function297db
+	call WaitBGMap
+	ld b, $1b
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	ld de, $e4e4
+	call DmgToCgbObjPals
+	ld de, SFX_POTION
+	call PlaySFX
+	call Function2910f
+	ret
+; 2937e
+
+Function2937e: ; 2937e
+	ld a, [hSCX]
+	and a
+	jr z, .asm_29388
+	add $4
+	ld [hSCX], a
+	ret
+
+.asm_29388
+	ld c, $50
+	call DelayFrames
+	call Function29114
+	ret
+; 29391
+
+Function29391: ; 29391
+	ld a, [hSCX]
+	cp $a0
+	jr z, .asm_2939c
+	sub $4
+	ld [hSCX], a
+	ret
+
+.asm_2939c
+	call ClearTileMap
+	xor a
+	ld [hSCX], a
+	call Function29114
+	ret
+; 293a6
+
+Function293a6: ; 293a6
+	ld a, $8f
+	ld [hWX], a
+	ld a, $88
+	ld [hSCX], a
+	ld a, $50
+	ld [hWY], a
+	call Function29114
+	ret
+; 293b6
+
+Function293b6: ; 293b6
+	ld a, [hWX]
+	cp $7
+	jr z, .asm_293c7
+	sub $4
+	ld [hWX], a
+	ld a, [hSCX]
+	sub $4
+	ld [hSCX], a
+	ret
+
+.asm_293c7
+	ld a, $7
+	ld [hWX], a
+	xor a
+	ld [hSCX], a
+	call Function29114
+	ret
+; 293d2
+
+Function293d2: ; 293d2
+	ld a, $7
+	ld [hWX], a
+	ld a, $50
+	ld [hWY], a
+	call Function29114
+	ret
+; 293de
+
+Function293de: ; 293de
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	call Function29114
+	ret
+; 293ea
+
+Function293ea: ; 293ea
+	call WaitTop
+	ld a, VBGMap1 / $100
+	ld [hBGMapAddress + 1], a
+	call WaitBGMap
+	ld a, $7
+	ld [hWX], a
+	xor a
+	ld [hWY], a
+	call DelayFrame
+	call WaitTop
+	ld a, VBGMap0 / $100
+	ld [hBGMapAddress + 1], a
+	call ClearTileMap
+	call Function2910f
+	ret
+; 2940c
+
+Function2940c: ; 2940c
+	ld a, [hWX]
+	cp $a1
+	jr nc, .asm_29417
+	add $4
+	ld [hWX], a
+	ret
+
+.asm_29417
+	ld a, VBGMap1 / $100
+	ld [hBGMapAddress + 1], a
+	call WaitBGMap
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	ld a, VBGMap0 / $100
+	ld [hBGMapAddress + 1], a
+	call Function29114
+	ret
+; 2942e
+
+Function2942e: ; 2942e
+	call Function2951f
+	ld a, [wc6d0]
+	ld [CurPartySpecies], a
+	ld a, [wc6fd]
+	ld [TempMonDVs], a
+	ld a, [wPlayerMinimized]
+	ld [TempMonDVs + 1], a
+	ld b, $1a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	call Function294bb
+
+	ld a, [wc6d0]
+	call GetCryIndex
+	jr c, .asm_2945d
+	ld e, c
+	ld d, b
+	call PlayCryHeader
+.asm_2945d
+
+	call Function29114
+	ret
+; 29461
+
+Function29461: ; 29461
+	call Function29549
+	ld a, [wc702]
+	ld [CurPartySpecies], a
+	ld a, [wEnemyTrappingMove]
+	ld [TempMonDVs], a
+	ld a, [wPlayerWrapCount]
+	ld [TempMonDVs + 1], a
+	ld b, $1a
+	call GetSGBLayout
+	ld a, $e4
+	call DmgToCgbBGPals
+	call Function294c0
+	call Function29114
+	ret
+; 29487
+
+Function29487: ; 29487
+	callba Function4d81e
+	call Function29114
+	ret
+; 29491
+
+Function29491: ; 29491
+	push de
+	push af
+	predef GetUnownLetter
+	pop af
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	pop de
+	predef GetFrontpic
+	ret
+; 294a9
+
+Function294a9: ; 294a9
+	push de
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	pop de
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ret
+; 294bb
+
+Function294bb: ; 294bb
+	ld de, VTiles0
+	jr Function294c3
+
+Function294c0: ; 294c0
+	ld de, VTiles0 tile $31
+
+Function294c3: ; 294c3
+	call DelayFrame
+	ld hl, VTiles2
+	ld bc, $a31
+	call Request2bpp
+	call WaitTop
+	call Function297cf
+	hlcoord 7, 2
+	xor a
+	ld [hFillBox], a
+	lb bc, 7, 7
+	predef FillBox
+	call WaitBGMap
+	ret
+; 294e7
+
+Function294e7: ; 294e7
+	ld c, $50
+	call DelayFrames
+	call Function29114
+	ret
+; 294f0
+
+Function294f0: ; 294f0
+	ld c, $28
+	call DelayFrames
+	call Function29114
+	ret
+; 294f9
+
+Function294f9: ; 294f9
+	ld c, $60
+	call DelayFrames
+	call Function29114
+	ret
+; 29502
+
+Function29502: ; 29502
+	call Function29516
+	ret nz
+	ld c, $50
+	call DelayFrames
+	ret
+; 2950c
+
+Function2950c: ; 2950c
+	call Function29516
+	ret nz
+	ld c, $b4
+	call DelayFrames
+	ret
+; 29516
+
+Function29516: ; 29516
+	call Function29114
+	ld a, [wc702]
+	cp $fd
+	ret
+; 2951f
+
+Function2951f: ; 2951f
+	ld de, wc6d0
+	ld a, [de]
+	cp $fd
+	jr z, Function295a1
+	call Function29573
+	ld de, wc6d0
+	call Function295e3
+	ld de, wc6d1
+	call Function295ef
+	ld a, [wc701]
+	ld de, wc6f2
+	call Function295f6
+	ld de, PlayerScreens
+	call Function29611
+	call Function295d8
+	ret
+; 29549
+
+Function29549: ; 29549
+	ld de, wc702
+	ld a, [de]
+	cp $fd
+	jr z, Function295a1
+	call Function29573
+	ld de, wc702
+	call Function295e3
+	ld de, wc703
+	call Function295ef
+	ld a, [wEnemyCharging]
+	ld de, wc724
+	call Function295f6
+	ld de, wEnemyWrapCount
+	call Function29611
+	call Function295d8
+	ret
+; 29573
+
+Function29573: ; 29573
+	call WaitTop
+	call Function297cf
+	ld a, VBGMap1 / $100
+	ld [hBGMapAddress + 1], a
+	hlcoord 3, 0
+	ld b, $6
+	ld c, $d
+	call TextBox
+	hlcoord 4, 0
+	ld de, String29591
+	call PlaceString
+	ret
+; 29591
+
+String29591: ; 29591
+	db   "─── №."
+	next ""
+	next "OT/"
+	next $73, "№.@"
+; 295a1
+
+Function295a1: ; 295a1
+	call WaitTop
+	call Function297cf
+	ld a, VBGMap1 / $100
+	ld [hBGMapAddress + 1], a
+	hlcoord 3, 0
+	ld b, $6
+	ld c, $d
+	call TextBox
+	hlcoord 4, 2
+	ld de, String295c2
+	call PlaceString
+	call Function295d8
+	ret
+; 295c2
+
+String295c2: ; 295c2
+	db   "EGG"
+	next "OT/?????"
+	next $73, "№.?????@"
+; 295d8
+
+Function295d8: ; 295d8
+	call WaitBGMap
+	call WaitTop
+	ld a, VBGMap0 / $100
+	ld [hBGMapAddress + 1], a
+	ret
+; 295e3
+
+Function295e3: ; 295e3
+	hlcoord 10, 0
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+	call PrintNum
+	ld [hl], $7f
+	ret
+; 295ef
+
+Function295ef: ; 295ef
+	hlcoord 4, 2
+	call PlaceString
+	ret
+; 295f6
+
+Function295f6: ; 295f6
+	cp 3
+	jr c, .asm_295fb
+	xor a
+
+.asm_295fb
+	push af
+	hlcoord 7, 4
+	call PlaceString
+	inc bc
+	pop af
+	ld hl, Unknown_2960e
+	ld d, 0
+	ld e, a
+	add hl, de
+	ld a, [hl]
+	ld [bc], a
+	ret
+; 2960e
+
+Unknown_2960e: ; 2960e
+	db " ", "♂", "♀"
+; 29611
+
+Function29611: ; 29611
+	hlcoord 7, 6
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+	call PrintNum
+	ret
+; 2961b
+
+Function2961b: ; 2961b
+	lb de, $54, $58
+	ld a, $e
+	call Function3b2a
+	call Function29114
+	ld a, $20
+	ld [wcf64], a
+	ret
+; 2962c
+
+Function2962c: ; 2962c
+	lb de, $54, $58
+	ld a, $e
+	call Function3b2a
+	ld hl, $b
+	add hl, bc
+	ld [hl], $1
+	ld hl, $7
+	add hl, bc
+	ld [hl], $dc
+	call Function29114
+	ld a, $38
+	ld [wcf64], a
+	ret
+; 29649
+
+Function29649: ; 29649
+	lb de, $54, $58
+	ld a, $f
+	call Function3b2a
+	call Function29114
+	ld a, $10
+	ld [wcf64], a
+	ld de, SFX_BALL_POOF
+	call PlaySFX
+	ret
+; 29660
+
+Function29660: ; 29660
+	ld a, $e4
+	call Functioncf8
+	lb de, $28, $58
+	ld a, $10
+	call Function3b2a
+	call Function29114
+	ld a, $40
+	ld [wcf64], a
+	ret
+; 29676
+
+Function29676: ; 29676 (a:5676)
+	ld hl, $b
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_29686
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 29686
+
+Jumptable_29686: ; 29686 (a:5686)
+	dw Function2969a
+	dw Function296a4
+	dw Function296af
+	dw Function296bd
+	dw Function296cf
+	dw Function296dd
+	dw Function296f2
+; 2969a
+
+Function29694: ; 29694 (a:5694)
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ret
+
+Function2969a: ; 2969a (a:569a)
+	call Function29694
+	ld hl, $c
+	add hl, bc
+	ld [hl], $80
+	ret
+
+Function296a4: ; 296a4 (a:56a4)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	and a
+	ret nz
+	call Function29694
+
+Function296af: ; 296af (a:56af)
+	ld hl, $4
+	add hl, bc
+	ld a, [hl]
+	cp $94
+	jr nc, .asm_296ba
+	inc [hl]
+	ret
+.asm_296ba
+	call Function29694
+
+Function296bd: ; 296bd (a:56bd)
+	ld hl, $5
+	add hl, bc
+	ld a, [hl]
+	cp $4c
+	jr nc, .asm_296c8
+	inc [hl]
+	ret
+.asm_296c8
+	ld hl, $
+	add hl, bc
+	ld [hl], $0
+	ret
+
+Function296cf: ; 296cf (a:56cf)
+	ld hl, $5
+	add hl, bc
+	ld a, [hl]
+	cp $2c
+	jr z, .asm_296da
+	dec [hl]
+	ret
+.asm_296da
+	call Function29694
+
+Function296dd: ; 296dd (a:56dd)
+	ld hl, $4
+	add hl, bc
+	ld a, [hl]
+	cp $58
+	jr z, .asm_296e8
+	dec [hl]
+	ret
+.asm_296e8
+	call Function29694
+	ld hl, $c
+	add hl, bc
+	ld [hl], $80
+	ret
+
+Function296f2: ; 296f2 (a:56f2)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	dec [hl]
+	and a
+	ret nz
+	ld hl, $
+	add hl, bc
+	ld [hl], $0
+	ret
+; 29701 (a:5701)
+
+Function29701: ; 29701
+	ld a, [wLinkMode]
+	cp LINK_TIMECAPSULE
+	jr z, .asm_29725
+	ld hl, UnknownText_0x29737
+	call PrintText
+	ld c, $bd
+	call DelayFrames
+	ld hl, UnknownText_0x29732
+	call PrintText
+	call Function297c9
+	ld c, $80
+	call DelayFrames
+	call Function29114
+	ret
+
+.asm_29725
+	ld hl, UnknownText_0x29732
+	call PrintText
+	call Function297c9
+	call Function29114
+	ret
+; 29732
+
+UnknownText_0x29732: ; 0x29732
+	; was sent to @ .
+	text_jump UnknownText_0x1bc6e9
+	db "@"
+; 0x29737
+
+UnknownText_0x29737: ; 0x29737
+	;
+	text_jump UnknownText_0x1bc701
+	db "@"
+; 0x2973c
+
+Function2973c: ; 2973c
+	ld hl, UnknownText_0x29752
+	call PrintText
+	call Function297c9
+	ld hl, UnknownText_0x29757
+	call PrintText
+	call Function297c9
+	call Function29114
+	ret
+; 29752
+
+UnknownText_0x29752: ; 0x29752
+	; bids farewell to
+	text_jump UnknownText_0x1bc703
+	db "@"
+; 0x29757
+
+UnknownText_0x29757: ; 0x29757
+	; .
+	text_jump UnknownText_0x1bc719
+	db "@"
+; 0x2975c
+
+Function2975c: ; 2975c
+	call WaitTop
+	hlcoord 0, 10
+	ld bc, 8 * SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	call WaitBGMap
+	ld hl, UnknownText_0x2977a
+	call PrintText
+	call Function297c9
+	call Function29114
+	ret
+; 2977a
+
+UnknownText_0x2977a: ; 0x2977a
+	; Take good care of @ .
+	text_jump UnknownText_0x1bc71f
+	db "@"
+; 0x2977f
+
+Function2977f: ; 2977f
+	ld hl, UnknownText_0x2979a
+	call PrintText
+	call Function297c9
+	ld hl, UnknownText_0x2979f
+	call PrintText
+	call Function297c9
+	ld c, $e
+	call DelayFrames
+	call Function29114
+	ret
+; 2979a
+
+UnknownText_0x2979a: ; 0x2979a
+	; For @ 's @ ,
+	text_jump UnknownText_0x1bc739
+	db "@"
+; 0x2979f
+
+UnknownText_0x2979f: ; 0x2979f
+	; sends @ .
+	text_jump UnknownText_0x1bc74c
+	db "@"
+; 0x297a4
+
+Function297a4: ; 297a4
+	ld hl, UnknownText_0x297bf
+	call PrintText
+	call Function297c9
+	ld hl, UnknownText_0x297c4
+	call PrintText
+	call Function297c9
+	ld c, $e
+	call DelayFrames
+	call Function29114
+	ret
+; 297bf
+
+UnknownText_0x297bf: ; 0x297bf
+	; will trade @ @
+	text_jump UnknownText_0x1bc75e
+	db "@"
+; 0x297c4
+
+UnknownText_0x297c4: ; 0x297c4
+	; for @ 's @ .
+	text_jump UnknownText_0x1bc774
+	db "@"
+; 0x297c9
+
+Function297c9: ; 297c9
+	ld c, $50
+	call DelayFrames
+	ret
+; 297cf
+
+Function297cf: ; 297cf
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, " "
+	call ByteFill
+	ret
+; 297db
+
+Function297db: ; 297db
+.asm_297db
+	push bc
+	push hl
+.asm_297dd
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_297dd
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_297db
+	ret
+; 297ed
+
+Function297ed: ; 297ed
+	ld a, [hSGB]
+	and a
+	ld a, $e4
+	jr z, .asm_297f6
+	ld a, $f0
+
+.asm_297f6
+	call Functioncf8
+	ld a, $e4
+	call DmgToCgbBGPals
+	ret
+; 297ff
+
+Function297ff: ; 297ff
+	push de
+	ld de, wc736
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	pop hl
+	ld de, wc741
+	ld bc, NAME_LENGTH
+	call CopyBytes
+	ret
+; 29814
+
+Function29814: ; 29814
+	ld a, [hl]
+	ld [wc74c], a
+	ld a, [de]
+	ld [wc74d], a
+	ret
+; 2981d
+
+Function2981d: ; 2981d
+	ld a, [wcf65]
+	and $7
+	ret nz
+	ld a, [rBGP]
+	xor $3c
+	call DmgToCgbBGPals
+	ret
+; 2982b
+
+Function2982b: ; 2982b
+	call DelayFrame
+	ld de, TradeBallGFX
+	ld hl, VTiles0 tile $62
+	lb bc, BANK(TradeBallGFX), $6
+	call Request2bpp
+	ld de, TradePoofGFX
+	ld hl, VTiles0 tile $68
+	lb bc, BANK(TradePoofGFX), $c
+	call Request2bpp
+	ld de, TradeCableGFX
+	ld hl, VTiles0 tile $74
+	lb bc, BANK(TradeCableGFX), $4
+	call Request2bpp
+	xor a
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], $62
+	ret
+; 2985a
+
+Function2985a: ; 2985a
+	call DelayFrame
+	ld e, $3
+	callab Function8e83f
+	ld de, TradeBubbleGFX
+	ld hl, VTiles0 tile $72
+	lb bc, BANK(TradeBubbleGFX), $4
+	call Request2bpp
+	xor a
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], $62
+	ret
+; 29879
+
+Function29879: ; 29879
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_29882
+	dec [hl]
+	ret
+
+.asm_29882
+	call Function29114
+	ret
+; 29886
+
+Function29886: ; 29886
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_2988f
+	dec [hl]
+	ret
+
+.asm_2988f
+	call Function29114
+	ret
+; 29893
+
+
+Function29893: ; 29893
+; This function is unreferenced.
+; It was meant for use in Japanese versions, so the
+; constant used for copy length was changed by accident.
+
+	ld hl, Unknown_298b5
+
+	ld a, [hli]
+	ld [wc6d0], a
+	ld de, wc6e7
+	ld c, 13 ; jp: 8
+.asm_2989f
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_2989f
+
+	ld a, [hli]
+	ld [wc702], a
+	ld de, wc719
+	ld c, 13 ; jp: 8
+.asm_298ae
+	ld a, [hli]
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_298ae
+	ret
+; 298b5
+
+Unknown_298b5: ; 298b5
+	db $03, "ゲーフり@@", $23, $01 ; GAME FREAK
+	db $06, "クりーチャ@", $56, $04 ; Creatures Inc.
+; 298c7
+
+
+TradeGameBoyTilemap: ; 298c7
+; 6x8
+	db $31, $32, $32, $32, $32, $33
+	db $34, $35, $36, $36, $37, $38
+	db $34, $39, $3a, $3a, $3b, $38
+	db $3c, $3d, $3e, $3e, $3f, $40
+	db $41, $42, $43, $43, $44, $45
+	db $46, $47, $43, $48, $49, $4a
+	db $41, $43, $4b, $4c, $4d, $4e
+	db $4f, $50, $50, $50, $51, $52
+; 297f7
+
+Tilemap_298f7: ; 297f7
+; 12x3
+	db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
+	db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
+	db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43
+; 2991b
+
+TradeArrowGFX:  INCBIN "gfx/trade/arrow.2bpp"
+TradeCableGFX:  INCBIN "gfx/trade/cable.2bpp"
+TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp"
+TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz"
+TradeBallGFX:   INCBIN "gfx/trade/ball.2bpp"
+TradePoofGFX:   INCBIN "gfx/trade/poof.2bpp"
+
+Special_CheckTimeCapsuleCompatibility: ; 29bfb
+; Checks to see if your Party is compatible with the generation 1 games.  Returns the following in ScriptVar:
+; 0: Party is okay
+; 1: At least one Pokemon was introduced in GS
+; 2: At least one Pokemon has a move that was introduced in GS
+; 3: At least one Pokemon is holding mail
+
+; If any party Pokemon was introduced in the generation 2 games, don't let it in.
+	ld hl, PartySpecies
+	ld b, PARTY_LENGTH ; 6
+.loop
+	ld a, [hli]
+	cp $ff
+	jr z, .checkitem
+	cp CHIKORITA ; MEW + 1 ; 151 + 1
+	jr nc, .mon_too_new
+	dec b
+	jr nz, .loop
+
+; If any party Pokemon is holding mail, don't let it in.
+.checkitem
+	ld a, [PartyCount]
+	ld b, a
+	ld hl, PartyMon1Item
+.itemloop
+	push hl
+	push bc
+	ld d, [hl]
+	callba ItemIsMail
+	pop bc
+	pop hl
+	jr c, .mon_has_mail
+	ld de, PARTYMON_STRUCT_LENGTH
+	add hl, de
+	dec b
+	jr nz, .itemloop
+
+; If any party Pokemon has a move that was introduced in the generation 2 games, don't let it in.
+	ld hl, PartyMon1Moves
+	ld a, [PartyCount]
+	ld b, a
+.move_loop
+	ld c, NUM_MOVES
+.move_next
+	ld a, [hli]
+	cp STRUGGLE + 1
+	jr nc, .move_too_new
+	dec c
+	jr nz, .move_next
+	ld de, PartyMon2 - (PartyMon1 + NUM_MOVES)
+	add hl, de
+	dec b
+	jr nz, .move_loop
+	xor a
+	jr .done
+
+.mon_too_new
+	ld [wd265], a
+	call GetPokemonName
+	ld a, $1
+	jr .done
+
+.move_too_new
+	push bc
+	ld [wd265], a
+	call GetMoveName
+	call CopyName1
+	pop bc
+	call Function29c67
+	ld a, $2
+	jr .done
+
+.mon_has_mail
+	call Function29c67
+	ld a, $3
+
+.done
+	ld [ScriptVar], a
+	ret
+; 29c67
+
+Function29c67: ; 29c67
+	ld a, [PartyCount]
+	sub b
+	ld c, a
+	inc c
+	ld b, $0
+	ld hl, PartyCount
+	add hl, bc
+	ld a, [hl]
+	ld [wd265], a
+	call GetPokemonName
+	ret
+; 29c7b
+
+Special_EnterTimeCapsule: ; 29c7b
+	ld c, $a
+	call DelayFrames
+	ld a, $4
+	call Function29f17
+	ld c, $28
+	call DelayFrames
+	xor a
+	ld [hVBlank], a
+	inc a
+	ld [wLinkMode], a
+	ret
+; 29c92
+
+Special_AbortLink: ; 29c92
+	ld c, $3
+	call DelayFrames
+	ld a, -1
+	ld [hLinkPlayerNumber], a
+	xor a
+	ld [rSB], a
+	ld [hSerialReceive], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [rSB], a
+	ld [hSerialReceive], a
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	ld c, $3
+	call DelayFrames
+	xor a
+	ld [rSB], a
+	ld [hSerialReceive], a
+	ld [rSC], a
+	ld c, $3
+	call DelayFrames
+	ld a, -1
+	ld [hLinkPlayerNumber], a
+	ld a, [rIF]
+	push af
+	xor a
+	ld [rIF], a
+	ld a, $f
+	ld [rIE], a
+	pop af
+	ld [rIF], a
+	ld hl, wcf5b
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ld [hVBlank], a
+	ld [wLinkMode], a
+	ret
+; 29ce8
+
+Special_SetBitsForLinkTradeRequest: ; 29ce8
+	ld a, $1
+	ld [wcf56], a
+	ld [wd265], a
+	ret
+; 29cf1
+
+Special_SetBitsForBattleRequest: ; 29cf1
+	ld a, $2
+	ld [wcf56], a
+	ld [wd265], a
+	ret
+; 29cfa
+
+Special_SetBitsForTimeCapsuleRequest: ; 29cfa
+	ld a, $2
+	ld [rSB], a
+	xor a
+	ld [hSerialReceive], a
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	xor a
+	ld [wcf56], a
+	ld [wd265], a
+	ret
+; 29d11
+
+Special_WaitForLinkedFriend: ; 29d11
+	ld a, [wcf56]
+	and a
+	jr z, .asm_29d2f
+	ld a, $2
+	ld [rSB], a
+	xor a
+	ld [hSerialReceive], a
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	call DelayFrame
+	call DelayFrame
+	call DelayFrame
+
+.asm_29d2f
+	ld a, $2
+	ld [wcf5c], a
+	ld a, $ff
+	ld [wcf5b], a
+.asm_29d39
+	ld a, [hLinkPlayerNumber]
+	cp $2
+	jr z, .asm_29d79
+	cp $1
+	jr z, .asm_29d79
+	ld a, -1
+	ld [hLinkPlayerNumber], a
+	ld a, $2
+	ld [rSB], a
+	xor a
+	ld [hSerialReceive], a
+	ld a, $0
+	ld [rSC], a
+	ld a, $80
+	ld [rSC], a
+	ld a, [wcf5b]
+	dec a
+	ld [wcf5b], a
+	jr nz, .asm_29d68
+	ld a, [wcf5c]
+	dec a
+	ld [wcf5c], a
+	jr z, .asm_29d8d
+
+.asm_29d68
+	ld a, $1
+	ld [rSB], a
+	ld a, $1
+	ld [rSC], a
+	ld a, $81
+	ld [rSC], a
+	call DelayFrame
+	jr .asm_29d39
+
+.asm_29d79
+	call Function908
+	call DelayFrame
+	call Function908
+	ld c, $32
+	call DelayFrames
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_29d8d
+	xor a
+	ld [ScriptVar], a
+	ret
+; 29d92
+
+Special_CheckLinkTimeout: ; 29d92
+	ld a, $1
+	ld [wcf56], a
+	ld hl, wcf5b
+	ld a, $3
+	ld [hli], a
+	xor a
+	ld [hl], a
+	call WaitBGMap
+	ld a, $2
+	ld [hVBlank], a
+	call DelayFrame
+	call DelayFrame
+	call Function29e0c
+	xor a
+	ld [hVBlank], a
+	ld a, [ScriptVar]
+	and a
+	ret nz
+	jp Function29f04
+; 29dba
+
+Function29dba: ; 29dba
+	ld a, $5
+	ld [wcf56], a
+	ld hl, wcf5b
+	ld a, $3
+	ld [hli], a
+	xor a
+	ld [hl], a
+	call WaitBGMap
+	ld a, $2
+	ld [hVBlank], a
+	call DelayFrame
+	call DelayFrame
+	call Function29e0c
+	ld a, [ScriptVar]
+	and a
+	jr z, .asm_29e08
+	ld bc, rIE
+.asm_29de0
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_29de0
+	ld a, [wcf51]
+	cp $5
+	jr nz, .asm_29e03
+	ld a, $6
+	ld [wcf56], a
+	ld hl, wcf5b
+	ld a, $1
+	ld [hli], a
+	ld [hl], $32
+	call Function29e0c
+	ld a, [wcf51]
+	cp $6
+	jr z, .asm_29e08
+
+.asm_29e03
+	xor a
+	ld [ScriptVar], a
+	ret
+
+.asm_29e08
+	xor a
+	ld [hVBlank], a
+	ret
+; 29e0c
+
+Function29e0c: ; 29e0c
+	xor a
+	ld [hFFCA], a
+	ld a, [wcf5b]
+	ld h, a
+	ld a, [wcf5c]
+	ld l, a
+	push hl
+	call Function29e3b
+	pop hl
+	jr nz, .asm_29e2f
+	call Function29e47
+	call Function29e53
+	call Function29e3b
+	jr nz, .asm_29e2f
+	call Function29e47
+	xor a
+	jr .asm_29e31
+
+.asm_29e2f
+	ld a, $1
+
+.asm_29e31
+	ld [ScriptVar], a
+	ld hl, wcf5b
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+; 29e3b
+
+Function29e3b: ; 29e3b
+	call Function87d
+	ld hl, wcf5b
+	ld a, [hli]
+	inc a
+	ret nz
+	ld a, [hl]
+	inc a
+	ret
+; 29e47
+
+Function29e47: ; 29e47
+	ld b, $a
+.asm_29e49
+	call DelayFrame
+	call Function908
+	dec b
+	jr nz, .asm_29e49
+	ret
+; 29e53
+
+Function29e53: ; 29e53
+	dec h
+	srl h
+	rr l
+	srl h
+	rr l
+	inc h
+	ld a, h
+	ld [wcf5b], a
+	ld a, l
+	ld [wcf5c], a
+	ret
+; 29e66
+
+Special_TryQuickSave: ; 29e66
+	ld a, [wd265]
+	push af
+	callba Function14ab2
+	ld a, $1
+	jr nc, .asm_29e75
+	xor a
+
+.asm_29e75
+	ld [ScriptVar], a
+	ld c, $1e
+	call DelayFrames
+	pop af
+	ld [wd265], a
+	ret
+; 29e82
+
+Special_CheckBothSelectedSameRoom: ; 29e82
+	ld a, [wd265]
+	call Function29f17
+	push af
+	call Function908
+	call DelayFrame
+	call Function908
+	pop af
+	ld b, a
+	ld a, [wd265]
+	cp b
+	jr nz, .asm_29eaa
+	ld a, [wd265]
+	inc a
+	ld [wLinkMode], a
+	xor a
+	ld [hVBlank], a
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_29eaa
+	xor a
+	ld [ScriptVar], a
+	ret
+; 29eaf
+
+Special_TimeCapsule: ; 29eaf
+	ld a, LINK_TIMECAPSULE
+	ld [wLinkMode], a
+	call DisableSpriteUpdates
+	callab LinkCommunications
+	call EnableSpriteUpdates
+	xor a
+	ld [hVBlank], a
+	ret
+; 29ec4
+
+Special_TradeCenter: ; 29ec4
+	ld a, LINK_TRADECENTER
+	ld [wLinkMode], a
+	call DisableSpriteUpdates
+	callab LinkCommunications
+	call EnableSpriteUpdates
+	xor a
+	ld [hVBlank], a
+	ret
+; 29ed9
+
+Special_Colosseum: ; 29ed9
+	ld a, LINK_COLOSSEUM
+	ld [wLinkMode], a
+	call DisableSpriteUpdates
+	callab LinkCommunications
+	call EnableSpriteUpdates
+	xor a
+	ld [hVBlank], a
+	ret
+; 29eee
+
+Special_CloseLink: ; 29eee
+	xor a
+	ld [wLinkMode], a
+	ld c, $3
+	call DelayFrames
+	jp Function29f04
+; 29efa
+
+Special_FailedLinkToPast: ; 29efa
+	ld c, $28
+	call DelayFrames
+	ld a, $e
+	jp Function29f17
+; 29f04
+
+Function29f04: ; 29f04
+	ld c, $3
+	call DelayFrames
+	ld a, -1
+	ld [hLinkPlayerNumber], a
+	ld a, $2
+	ld [rSB], a
+	xor a
+	ld [hSerialReceive], a
+	ld [rSC], a
+	ret
+; 29f17
+
+Function29f17: ; 29f17
+	add $d0
+	ld [wcf56], a
+	ld [wcf57], a
+	ld a, $2
+	ld [hVBlank], a
+	call DelayFrame
+	call DelayFrame
+.asm_29f29
+	call Function83b
+	ld a, [wcf51]
+	ld b, a
+	and $f0
+	cp $d0
+	jr z, .asm_29f40
+	ld a, [wcf52]
+	ld b, a
+	and $f0
+	cp $d0
+	jr nz, .asm_29f29
+
+.asm_29f40
+	xor a
+	ld [hVBlank], a
+	ld a, b
+	and $f
+	ret
+; 29f47
+
+Special_CableClubCheckWhichChris: ; 29f47
+	ld a, [hLinkPlayerNumber]
+	cp $1
+	ld a, $1
+	jr z, .yes
+	dec a
+
+.yes
+	ld [ScriptVar], a
+	ret
+; 29f54
+
+GFX_29f54: ; 29f54
+INCBIN "gfx/unknown/029f54.2bpp"
+; 29fe4
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,20 +1,20 @@
 
 INCLUDE "engine/facings.asm"
 
-ObjectStruct3_Data:: ; 4273
+SpriteMovementData:: ; 4273
 	; function,         facing, ?, ?, ?, ?
 	db SPRITEMOVEFN_00, DOWN,  $01, $02, $00, $00 ; 00
-	db SPRITEMOVEFN_06, DOWN,  $01, $0c, $00, $00 ; 01
-	db SPRITEMOVEFN_03, DOWN,  $01, $00, $00, $00 ; 02
-	db SPRITEMOVEFN_04, DOWN,  $01, $00, $00, $00 ; 03
-	db SPRITEMOVEFN_01, DOWN,  $01, $00, $00, $00 ; 04
-	db SPRITEMOVEFN_02, DOWN,  $01, $00, $00, $00 ; 05
-	db SPRITEMOVEFN_06, DOWN,  $01, $00, $00, $00 ; 06
-	db SPRITEMOVEFN_06, UP,    $01, $00, $00, $00 ; 07
-	db SPRITEMOVEFN_06, LEFT,  $01, $00, $00, $00 ; 08
-	db SPRITEMOVEFN_06, RIGHT, $01, $00, $00, $00 ; 09
-	db SPRITEMOVEFN_05, DOWN,  $01, $00, $00, $00 ; 0a
-	db SPRITEMOVEFN_07, DOWN,  $01, $02, $00, $00 ; 0b
+	db SPRITEMOVEFN_STANDING, DOWN,  $01, $0c, $00, $00 ; 01
+	db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN,  $01, $00, $00, $00 ; 02
+	db SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN,  $01, $00, $00, $00 ; 03
+	db SPRITEMOVEFN_RANDOM_WALK_Y, DOWN,  $01, $00, $00, $00 ; 04
+	db SPRITEMOVEFN_RANDOM_WALK_X, DOWN,  $01, $00, $00, $00 ; 05
+	db SPRITEMOVEFN_STANDING, DOWN,  $01, $00, $00, $00 ; 06
+	db SPRITEMOVEFN_STANDING, UP,    $01, $00, $00, $00 ; 07
+	db SPRITEMOVEFN_STANDING, LEFT,  $01, $00, $00, $00 ; 08
+	db SPRITEMOVEFN_STANDING, RIGHT, $01, $00, $00, $00 ; 09
+	db SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN,  $01, $00, $00, $00 ; 0a
+	db SPRITEMOVEFN_OBEY_DPAD, DOWN,  $01, $02, $00, $00 ; 0b
 	db SPRITEMOVEFN_08, DOWN,  $01, $00, $00, $00 ; 0c
 	db SPRITEMOVEFN_09, DOWN,  $01, $00, $00, $00 ; 0d
 	db SPRITEMOVEFN_0A, DOWN,  $01, $00, $00, $00 ; 0e
@@ -22,24 +22,24 @@
 	db SPRITEMOVEFN_0C, DOWN,  $01, $00, $00, $00 ; 10
 	db SPRITEMOVEFN_0D, DOWN,  $01, $00, $00, $00 ; 11
 	db SPRITEMOVEFN_0E, DOWN,  $01, $00, $00, $00 ; 12
-	db SPRITEMOVEFN_0F, DOWN,  $01, $02, $00, $00 ; 13
-	db SPRITEMOVEFN_10, DOWN,  $01, $02, $00, $00 ; 14
-	db SPRITEMOVEFN_15, DOWN,  $09, $2e, $01, $c0 ; 15
-	db SPRITEMOVEFN_16, DOWN,  $0a, $2e, $00, $00 ; 16
-	db SPRITEMOVEFN_06, DOWN,  $01, $0c, $00, $00 ; 17
-	db SPRITEMOVEFN_06, DOWN,  $01, $2e, $10, $00 ; 18
-	db SPRITEMOVEFN_11, DOWN,  $01, $2e, $00, $40 ; 19
-	db SPRITEMOVEFN_12, DOWN,  $01, $02, $00, $00 ; 1a
+	db SPRITEMOVEFN_FOLLOW, DOWN,  $01, $02, $00, $00 ; 13
+	db SPRITEMOVEFN_SCRIPTED, DOWN,  $01, $02, $00, $00 ; 14
+	db SPRITEMOVEFN_BIG_SNORLAX, DOWN,  $09, $2e, $01, $c0 ; 15
+	db SPRITEMOVEFN_BOUNCE, DOWN,  $0a, $2e, $00, $00 ; 16
+	db SPRITEMOVEFN_STANDING, DOWN,  $01, $0c, $00, $00 ; 17
+	db SPRITEMOVEFN_STANDING, DOWN,  $01, $2e, $10, $00 ; 18
+	db SPRITEMOVEFN_STRENGTH, DOWN,  $01, $2e, $00, $40 ; 19
+	db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN,  $01, $02, $00, $00 ; 1a
 	db SPRITEMOVEFN_13, DOWN,  $00, $8e, $01, $00 ; 1b
 	db SPRITEMOVEFN_14, DOWN,  $08, $8e, $02, $00 ; 1c
 	db SPRITEMOVEFN_17, DOWN,  $00, $82, $00, $00 ; 1d
-	db SPRITEMOVEFN_19, LEFT,  $01, $00, $00, $00 ; 1e
-	db SPRITEMOVEFN_18, RIGHT, $01, $00, $00, $00 ; 1f
-	db SPRITEMOVEFN_11, DOWN,  $0c, $2e, $01, $c0 ; 20
-	db SPRITEMOVEFN_11, DOWN,  $0d, $2e, $01, $c0 ; 21
+	db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,  $01, $00, $00, $00 ; 1e
+	db SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, $01, $00, $00, $00 ; 1f
+	db SPRITEMOVEFN_STRENGTH, DOWN,  $0c, $2e, $01, $c0 ; 20
+	db SPRITEMOVEFN_STRENGTH, DOWN,  $0d, $2e, $01, $c0 ; 21
 	db SPRITEMOVEFN_1A, DOWN,  $0e, $8e, $01, $00 ; 22
 	db SPRITEMOVEFN_1B, DOWN,  $0f, $8e, $02, $00 ; 23
-	db SPRITEMOVEFN_03, DOWN,  $01, $00, $00, $20 ; 24
+	db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN,  $01, $00, $00, $20 ; 24
 	db SPRITEMOVEFN_00, DOWN,  $01, $00, $00, $00 ; 25
 ; 4357
 
@@ -655,7 +655,7 @@
 	ld hl, OBJECT_12
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 rept 3
 	ld [hli], a
@@ -848,7 +848,7 @@
 ; 4780
 
 ClearObjectStructField27: ; 4780
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], 0
 	ret
@@ -855,7 +855,7 @@
 ; 4787
 
 IncrementObjectStructField27: ; 4787
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	inc [hl]
 	ret
@@ -862,7 +862,7 @@
 ; 478d
 
 DecrementObjectStructField27: ; 478d
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	dec [hl]
 	ret
@@ -869,7 +869,7 @@
 ; 4793
 
 JumptoObjectStructField27: ; 4793
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld a, [hl]
 	pop hl
@@ -937,7 +937,7 @@
 
 Function47dd: ; 47dd
 	call ClearObjectStructField28
-	call Function1a2f
+	call GetSpriteMovementFunction
 	ld a, [hl]
 	ld hl, .Pointers
 	rst JumpTable
@@ -945,63 +945,63 @@
 ; 47e9
 
 .Pointers ; 47e9
-	dw Function4821 ; 00
-	dw Function4822 ; 01
-	dw Function482c ; 02
-	dw Function4838 ; 03
-	dw Function4842 ; 04
-	dw Function4851 ; 05
-	dw Function4869 ; 06
-	dw Function487c ; 07
-	dw Function4882 ; 08
-	dw Function4888 ; 09
-	dw Function488e ; 0a
-	dw Function4891 ; 0b
-	dw Function4894 ; 0c
-	dw Function4897 ; 0d
-	dw Function489d ; 0e
-	dw Function48a0 ; 0f
-	dw Function48a6 ; 10
-	dw Function48ac ; 11
-	dw Function48ff ; 12
-	dw Function49e5 ; 13
-	dw Function4a21 ; 14
-	dw Function4958 ; 15
-	dw Function496e ; 16
-	dw Function4abc ; 17
-	dw Function498d ; 18
-	dw Function4984 ; 19
-	dw Function4a46 ; 1a
-	dw Function4a89 ; 1b
+	dw .Null_00 ; 00
+	dw .RandomWalkY ; 01
+	dw .RandomWalkX ; 02
+	dw .RandomWalkXY ; 03
+	dw .RandomSpin1 ; 04
+	dw .RandomSpin2 ; 05
+	dw .Standing ; 06
+	dw .ObeyDPad ; 07
+	dw .Movement08 ; 08
+	dw .Movement09 ; 09
+	dw .Movement0a ; 0a
+	dw .Movement0b ; 0b
+	dw .Movement0c ; 0c
+	dw .Movement0d ; 0d
+	dw .Movement0e ; 0e
+	dw .Follow ; 0f
+	dw .Script ; 10
+	dw .Strength ; 11
+	dw .FollowNotExact ; 12
+	dw .Movement13 ; 13
+	dw .Movement14 ; 14
+	dw .MovementBigStanding ; 15
+	dw .MovementBouncing ; 16
+	dw .Movement17 ; 17
+	dw .MovementSpinClockwise ; 18
+	dw .MovementSpinCounterclockwise ; 19
+	dw .Movement1a ; 1a
+	dw .Movement1b ; 1b
 ; 4821
 
-Function4821: ; 4821
+.Null_00: ; 4821
 	ret
 ; 4822
 
-Function4822: ; 4822
+.RandomWalkY: ; 4822
 	call Random
 	ld a, [hRandomAdd]
 	and %00000001
-	jp Function4af0
+	jp .RandomWalkContinue
 ; 482c
 
-Function482c: ; 482c
+.RandomWalkX: ; 482c
 	call Random
 	ld a, [hRandomAdd]
 	and %00000001
 	or  %00000010
-	jp Function4af0
+	jp .RandomWalkContinue
 ; 4838
 
-Function4838: ; 4838
+.RandomWalkXY: ; 4838
 	call Random
 	ld a, [hRandomAdd]
 	and %00000011
-	jp Function4af0
+	jp .RandomWalkContinue
 ; 4842
 
-Function4842: ; 4842
+.RandomSpin1: ; 4842
 	call Random
 	ld a, [hRandomAdd]
 	and %00001100
@@ -1011,7 +1011,7 @@
 	jp Function4b1d
 ; 4851
 
-Function4851: ; 4851
+.RandomSpin2: ; 4851
 	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
@@ -1029,7 +1029,7 @@
 	jp Function4b26
 ; 4869
 
-Function4869: ; standing?
+.Standing: ; 4869
 	call Function462a
 	call Function467b
 	ld hl, OBJECT_11
@@ -1041,69 +1041,71 @@
 	ret
 ; 487c
 
-Function487c: ; 487c
+.ObeyDPad: ; 487c
 	ld hl, Function5000
-	jp Function5041
+	jp HandleMovementData
 ; 4882
 
-Function4882: ; 4882
+.Movement08: ; 4882
 	ld hl, Function5015
-	jp Function5041
+	jp HandleMovementData
 ; 4888
 
-Function4888: ; 4888
+.Movement09: ; 4888
 	ld hl, Function5026
-	jp Function5041
+	jp HandleMovementData
 ; 488e
 
-Function488e: ; 488e
+.Movement0a: ; 488e
 	jp Function5037
 ; 4891
 
-Function4891: ; 4891
+.Movement0b: ; 4891
 	jp Function5037
 ; 4894
 
-Function4894: ; 4894
+.Movement0c: ; 4894
 	jp Function5037
 ; 4897
 
-Function4897: ; 4897
+.Movement0d: ; 4897
 	ld hl, Function5000
-	jp Function5041
+	jp HandleMovementData
 ; 489d
 
-Function489d: ; 489d
+.Movement0e: ; 489d
 	jp Function5037
 ; 48a0
 
-Function48a0: ; 48a0
+.Follow: ; 48a0
 	ld hl, Function54e6
-	jp Function5041
+	jp HandleMovementData
 ; 48a6
 
-Function48a6: ; 48a6
-	ld hl, Function500e ; scripted
-	jp Function5041
+.Script: ; 48a6
+	ld hl, Function500e
+	jp HandleMovementData
 ; 48ac
 
-Function48ac: ; 48ac
+.Strength: ; 48ac
 	call JumptoObjectStructField27
-	dw Function48b3
-	dw Function48f8
+	dw .Strength_Start
+	dw .Strength_Stop
 ; 48b3
 
-Function48b3: ; 48b3
+.Strength_Start: ; 48b3
 	ld hl, OBJECT_STANDING_TILE
 	add hl, bc
 	ld a, [hl]
 	call CheckPitTile
 	jr z, .on_pit
+
 	ld hl, OBJECT_FLAGS2
 	add hl, bc
 	bit 2, [hl]
 	res 2, [hl]
 	jr z, .ok
+
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
@@ -1112,6 +1114,7 @@
 	call Function4690
 	call Function6ec1
 	jr c, .ok2
+
 	ld de, SFX_STRENGTH
 	call PlaySFX
 	call Function5538
@@ -1135,7 +1138,7 @@
 	; fallthrough
 ; 48f8
 
-Function48f8: ; 48f8
+.Strength_Stop: ; 48f8
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
 	ld [hl], STANDING
@@ -1142,16 +1145,19 @@
 	ret
 ; 48ff
 
-Function48ff: ; 48ff
+.FollowNotExact: ; 48ff
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
+
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld e, [hl]
+
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
+
 	push bc
 	call GetObjectStruct
 	ld hl, OBJECT_DIRECTION_WALKING
@@ -1159,6 +1165,7 @@
 	ld a, [hl]
 	cp STANDING
 	jr z, .standing
+
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -1206,7 +1213,7 @@
 	ret
 ; 4958
 
-Function4958: ; 4958
+.MovementBigStanding: ; 4958
 	call Function467b
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -1220,7 +1227,7 @@
 	ret
 ; 496e
 
-Function496e: ; 496e
+.MovementBouncing: ; 496e
 	call Function467b
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -1234,27 +1241,27 @@
 	ret
 ; 4984
 
-Function4984: ; 4984
+.MovementSpinCounterclockwise: ; 4984
 	call JumptoObjectStructField27
-	dw Function4996
-	dw Function499c
-	dw Function49b8
+	dw .MovementSpinInit
+	dw .MovementSpinRepeat
+	dw .MovementSpinTurnLeft
 ; 498d
 
-Function498d: ; 498d
+.MovementSpinClockwise: ; 498d
 	call JumptoObjectStructField27
-	dw Function4996
-	dw Function499c
-	dw Function49c4
+	dw .MovementSpinInit
+	dw .MovementSpinRepeat
+	dw .MovementSpinTurnRight
 ; 4996
 
-Function4996: ; 4996
+.MovementSpinInit: ; 4996
 	call Function467b
 	call IncrementObjectStructField27
 	; fallthrough
 ; 499c
 
-Function499c: ; 499c
+.MovementSpinRepeat: ; 499c
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], 1
@@ -1272,27 +1279,27 @@
 	ret
 ; 49b8
 
-Function49b8: ; 49b8
-	ld de, .DirectionData_49c0
-	call Function49d0
-	jr Function4984
+.MovementSpinTurnLeft: ; 49b8
+	ld de, .DirectionData_Counterclockwise
+	call .MovementSpinNextFacing
+	jr .MovementSpinCounterclockwise
 ; 49c0
 
-.DirectionData_49c0 ; 49c0
+.DirectionData_Counterclockwise ; 49c0
 	db RIGHT << 2, LEFT << 2, DOWN << 2, UP << 2
 ; 49c4
 
-Function49c4: ; 49c4
-	ld de, .DirectionData_49cc
-	call Function49d0
-	jr Function498d
+.MovementSpinTurnRight: ; 49c4
+	ld de, .DirectionData_Clockwise
+	call .MovementSpinNextFacing
+	jr .MovementSpinClockwise
 ; 49cc
 
-.DirectionData_49cc ; 49cc
+.DirectionData_Clockwise ; 49cc
 	db LEFT << 2, RIGHT << 2, UP << 2, DOWN << 2
 ; 49d0
 
-Function49d0: ; 49d0
+.MovementSpinNextFacing: ; 49d0
 	ld hl, OBJECT_FACING
 	add hl, bc
 	ld a, [hl]
@@ -1310,8 +1317,8 @@
 	ret
 ; 49e5
 
-Function49e5: ; 49e5
-	call Function4aa8
+.Movement13: ; 49e5
+	call ._Movement13_14_1a_1b
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $7
@@ -1330,12 +1337,12 @@
 	and 3
 	ld d, $e
 	cp DOWN
-	jr z, .ok
+	jr z, .ok_13
 	cp UP
-	jr z, .ok
+	jr z, .ok_13
 	ld d, $c
 
-.ok
+.ok_13
 	ld hl, OBJECT_SPRITE_Y_OFFSET
 	add hl, bc
 	ld [hl], d
@@ -1348,9 +1355,9 @@
 	ret
 ; 4a21
 
-Function4a21: ; 4a21
+.Movement14: ; 4a21
 	call Function467b
-	call Function4aa8
+	call ._Movement13_14_1a_1b
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], 8
@@ -1369,9 +1376,9 @@
 	ret
 ; 4a46
 
-Function4a46: ; 4a46
+.Movement1a: ; 4a46
 	call Function467b
-	call Function4aa8
+	call ._Movement13_14_1a_1b
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $e
@@ -1416,9 +1423,9 @@
 	db -6,  2
 ; 4a89
 
-Function4a89: ; 4a89
+.Movement1b: ; 4a89
 	call Function467b
-	call Function4aa8
+	call ._Movement13_14_1a_1b
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $f
@@ -1435,7 +1442,7 @@
 	ret
 ; 4aa8
 
-Function4aa8: ; 4aa8
+._Movement13_14_1a_1b: ; 4aa8
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
@@ -1452,7 +1459,7 @@
 	ret
 ; 4abc
 
-Function4abc: ; 4abc
+.Movement17: ; 4abc
 	call Function467b
 	ld hl, OBJECT_11
 	add hl, bc
@@ -1460,7 +1467,7 @@
 	ld hl, OBJECT_32
 	add hl, bc
 	ld a, [hl]
-	call Function4ade
+	call ._Movement17
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], e
@@ -1473,7 +1480,7 @@
 	ret
 ; 4ade
 
-Function4ade: ; 4ade
+._Movement17: ; 4ade
 	ld d, a
 	and %00111111
 	ld e, a
@@ -1491,7 +1498,7 @@
 	jr .loop
 ; 4af0
 
-Function4af0: ; 4af0
+.RandomWalkContinue: ; 4af0
 	call Function4690
 	call Function6ec1
 	jr c, Function4b17
@@ -1502,13 +1509,13 @@
 	ld hl, wd4cf
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr z, .ok
+	jr z, .load_6
 	ld hl, OBJECT_09
 	add hl, bc
-	ld [hl], $7
+	ld [hl], 7
 	ret
 
-.ok
+.load_6
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 6
@@ -2397,11 +2404,14 @@
 ; 5000
 
 Function5000: ; unscripted?
+; copy [wc3de] to [wc2df]
 	ld a, [wc2de]
 	ld hl, wc2df
 	ld [hl], a
-	ld a, $3e
+; load [wc2de] with movement_step_sleep_1
+	ld a, movement_step_sleep_1
 	ld [wc2de], a
+; recover the previous value of [wc2de]
 	ld a, [hl]
 	ret
 ; 500e
@@ -2413,7 +2423,7 @@
 ; 5015
 
 Function5015: ; 5015
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld e, [hl]
 	inc [hl]
@@ -2428,7 +2438,7 @@
 ; 5026
 
 Function5026: ; 5026
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld e, [hl]
 	inc [hl]
@@ -2443,16 +2453,16 @@
 ; 5037
 
 Function5037: ; 5037
-	ld hl, Function503d
-	jp Function5041
+	ld hl, GetMovementPerson
+	jp HandleMovementData
 ; 503d
 
-Function503d: ; 503d
+GetMovementPerson: ; 503d
 	ld a, [wMovementPerson]
 	ret
 ; 5041
 
-Function5041: ; 5041
+HandleMovementData: ; 5041
 	call CopyMovementPointer
 .loop
 	xor a
@@ -2481,7 +2491,7 @@
 	jp [hl]
 ; 5065
 
-Function5065: ; 5065
+ContinueReadingMovement: ; 5065
 	ld a, 1
 	ld [wc2ea], a
 	ret
@@ -2560,7 +2570,8 @@
 .done
 	call Function550a
 	ret c
-	ld a, $3e
+
+	ld a, movement_step_sleep_1
 	ret
 ; 550a
 
@@ -2582,7 +2593,7 @@
 .nope
 	ld a, $ff
 	ld [wObjectFollow_Follower], a
-	ld a, $47
+	ld a, movement_step_end
 	scf
 	ret
 ; 5529
@@ -2693,6 +2704,7 @@
 Function55ac: ; 55ac
 	call FindFirstEmptyObjectStruct
 	ret nc
+
 	ld d, h
 	ld e, l
 	callba Function8286
@@ -2700,11 +2712,14 @@
 ; 55b9
 
 Function55b9: ; 55b9
+; load into wc2f0:
+; -1, -1, [de], [de + 1], [de + 2], [hMapObjectIndexBuffer], [MapX], [MapY], -1
 	ld hl, wc2f0
 	ld [hl], -1
 	inc hl
 	ld [hl], -1
 	inc hl
+
 	ld a, [de]
 	inc de
 	ld [hli], a
@@ -2713,8 +2728,10 @@
 	ld [hli], a
 	ld a, [de]
 	ld [hli], a
+
 	ld a, [hMapObjectIndexBuffer]
 	ld [hli], a
+
 	push hl
 	ld hl, OBJECT_MAP_X
 	add hl, bc
@@ -2723,6 +2740,7 @@
 	add hl, bc
 	ld e, [hl]
 	pop hl
+
 	ld [hl], d
 	inc hl
 	ld [hl], e
@@ -2783,6 +2801,7 @@
 Function5629: ; 5629
 	cp NUM_OBJECTS
 	ret nc
+
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
@@ -2789,11 +2808,14 @@
 	ld a, [hl]
 	cp -1
 	ret z
+
 	cp NUM_OBJECT_STRUCTS
 	ret nc
+
 	call GetObjectStruct
 	call GetObjectSprite
 	ret z
+
 	call Function5673
 	ret
 ; 5645
@@ -2923,7 +2945,7 @@
 	srl a
 	srl a
 	srl a
-	cp $14
+	cp SCREEN_WIDTH
 	jr c, .ok3
 	sub $20
 
@@ -2974,9 +2996,9 @@
 
 .ok7
 	ld a, d
-	ld [$ffbf], a
+	ld [hFFBF], a
 .loop
-	ld a, [$ffbf]
+	ld a, [hFFBF]
 	ld d, a
 	ld a, [hUsedSpriteTile]
 	add e
@@ -2992,7 +3014,7 @@
 	jr nc, .ok8
 	ld c, a
 	push bc
-	call GetTileCoord
+	call Coord2Tile
 	pop bc
 	ld a, [hl]
 	cp $60
@@ -3163,7 +3185,7 @@
 	ret c
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
-	ld [hl], SPRITEMOVEDATA_13
+	ld [hl], SPRITEMOVEDATA_FOLLOWING
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
@@ -3177,7 +3199,7 @@
 	cp -1
 	ret z
 	call GetObjectStruct
-	callba Function58e3
+	callba Function58e3 ; no need to bankswitch
 	ld a, -1
 	ld [wObjectFollow_Follower], a
 	ret
@@ -3291,7 +3313,8 @@
 	add hl, bc
 	ld a, [hl]
 	cp -1
-	jp z, Function5903
+	jp z, Function5903 ; a jr would have been appropriate here
+
 	push bc
 	call GetMapObject
 	ld hl, MAPOBJECT_MOVEMENT
@@ -3298,9 +3321,11 @@
 	add hl, bc
 	ld a, [hl]
 	pop bc
+
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
@@ -3319,6 +3344,7 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
@@ -3492,7 +3518,7 @@
 .next
 	ld a, [hli]
 	ld d, a
-	and %11110000
+	and $f0
 	ret z
 	cp c
 	jr nz, .next
@@ -3500,20 +3526,20 @@
 	push bc
 	push hl
 	ld a, d
-	and %00001111
-	call Function5ac2
-	call Function5a0d
+	and $f
+	call .GetObjectStructPointer
+	call .asm_5a0d
 	pop hl
 	pop bc
 	jr .next
 ; 5a0d
 
-Function5a0d: ; 5a0d
+.asm_5a0d: ; 5a0d
 	ld hl, OBJECT_SPRITE_TILE
 	add hl, bc
 	ld a, [hl]
 	and %01111111
-	ld [$ffc1], a
+	ld [hFFC1], a
 
 	xor a
 	bit 7, [hl]
@@ -3547,7 +3573,7 @@
 	jr z, .skip4
 	or %10000000
 .skip4
-	ld [$ffc2], a
+	ld [hFFC2], a
 
 	ld hl, OBJECT_SPRITE_X
 	add hl, bc
@@ -3562,7 +3588,7 @@
 	ld e, a
 	ld a, [wd14c]
 	add e
-	ld [$ffbf], a
+	ld [hFFBF], a
 
 	ld hl, OBJECT_SPRITE_Y
 	add hl, bc
@@ -3577,7 +3603,7 @@
 	ld e, a
 	ld a, [wd14d]
 	add e
-	ld [$ffc0], a
+	ld [hFFC0], a
 
 	ld hl, OBJECT_FACING_STEP
 	add hl, bc
@@ -3606,7 +3632,7 @@
 	jr nc, .full
 
 .addsprite
-	ld a, [$ffc0]
+	ld a, [hFFC0]
 	add [hl]
 	inc hl
 
@@ -3613,7 +3639,7 @@
 	ld [bc], a
 	inc c
 
-	ld a, [$ffbf]
+	ld a, [hFFBF]
 	add [hl]
 	inc hl
 
@@ -3623,7 +3649,7 @@
 	ld e, [hl]
 	inc hl
 
-	ld a, [$ffc1]
+	ld a, [hFFC1]
 	bit 2, e
 	jr z, .nope1
 	xor a
@@ -3637,7 +3663,7 @@
 	ld a, e
 	bit 1, a
 	jr z, .nope2
-	ld a, [$ffc2]
+	ld a, [hFFC2]
 	or e
 .nope2
 	and %11110000
@@ -3662,7 +3688,7 @@
 	ret
 ; 5ac2
 
-Function5ac2: ; 5ac2
+.GetObjectStructPointer: ; 5ac2
 	ld c, a
 	ld b, 0
 	ld hl, .Addresses
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -17,28 +17,28 @@
 ; 15377
 
 MapSetupScripts: ; 15377
-	dw MapSetupScript1
-	dw MapSetupScript2
-	dw MapSetupScript3
-	dw MapSetupScript4
-	dw MapSetupScript5
-	dw MapSetupScript6
-	dw MapSetupScript7
-	dw MapSetupScript8
-	dw MapSetupScript9
-	dw MapSetupScript10
-	dw MapSetupScript11
-	dw MapSetupScript12
+	dw MapSetupScript_Warp
+	dw MapSetupScript_Continue
+	dw MapSetupScript_ReloadMap
+	dw MapSetupScript_Teleport
+	dw MapSetupScript_Door
+	dw MapSetupScript_Fall
+	dw MapSetupScript_Connection
+	dw MapSetupScript_LinkReturn
+	dw MapSetupScript_Train
+	dw MapSetupScript_Submenu
+	dw MapSetupScript_BadWarp
+	dw MapSetupScript_Fly
 ; 1538f
 
-MapSetupScript4: ; 1538f
+MapSetupScript_Teleport: ; 1538f
 	db map_prolong_sprites
 
-MapSetupScript12: ; 15390
+MapSetupScript_Fly: ; 15390
 	db map_fade_out_palettes
 	db map_keep_roam
 
-MapSetupScript1: ; 15392
+MapSetupScript_Warp: ; 15392
 	db map_lcd_off
 	db map_sound_off
 	db map_load_spawn
@@ -63,7 +63,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript11: ; 153a9
+MapSetupScript_BadWarp: ; 153a9
 	db map_load_spawn
 	db map_attributes
 	db map_change_callback
@@ -87,7 +87,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript7: ; 153bf
+MapSetupScript_Connection: ; 153bf
 	db map_animations_off
 	db map_load_connection
 	db map_attributes
@@ -106,13 +106,13 @@
 	db map_animations_on
 	db map_end_setup_script
 
-MapSetupScript6: ; 153d0
+MapSetupScript_Fall: ; 153d0
 	db map_prolong_sprites
 
-MapSetupScript5: ; 153d1
+MapSetupScript_Door: ; 153d1
 	db map_fade_out_palettes
 
-MapSetupScript9: ; 153d2
+MapSetupScript_Train: ; 153d2
 	db map_load_warp
 	db map_attributes
 	db map_warp_face
@@ -135,7 +135,7 @@
 	db map_update_roam
 	db map_end_setup_script
 
-MapSetupScript3: ; 153e7
+MapSetupScript_ReloadMap: ; 153e7
 	db map_fade
 	db map_clear_bg_palettes
 	db map_lcd_off
@@ -153,7 +153,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript8: ; 153f7
+MapSetupScript_LinkReturn: ; 153f7
 	db map_fade
 	db map_lcd_off
 	db map_sound_off
@@ -172,7 +172,7 @@
 	db map_text_scroll_off
 	db map_end_setup_script
 
-MapSetupScript2: ; 15408
+MapSetupScript_Continue: ; 15408
 	db map_lcd_off
 	db map_sound_off
 	db map_attributes_2
@@ -192,7 +192,7 @@
 	db map_wildmons
 	db map_end_setup_script
 
-MapSetupScript10: ; 1541a
+MapSetupScript_Submenu: ; 1541a
 	db map_load_blocks
 	db map_connection_blocks
 	db map_end_setup_script
@@ -243,52 +243,52 @@
 ; 15440
 
 MapSetupCommands: ; 15440
-	dbw BANK(EnableLCD), EnableLCD ; 00
-	dbw BANK(DisableLCD), DisableLCD ; 01
-	dbw BANK(SoundRestart), SoundRestart ; 02
-	dbw BANK(PlayMapMusic), PlayMapMusic ; 03
-	dbw BANK(RestartMapMusic), RestartMapMusic ; 04
-	dbw BANK(FadeToMapMusic), FadeToMapMusic ; 05
-	dbw BANK(FadeOutMapAndMusic), FadeOutMapAndMusic ; 06
-	dbw BANK(EnterMapMusic), EnterMapMusic ; 07
-	dbw BANK(ForceMapMusic), ForceMapMusic ; 08
-	dbw BANK(CrankUpTheVolume), CrankUpTheVolume ; 09
-	dbw BANK(LoadBlockData), LoadBlockData ; 0a
-	dbw BANK(LoadNeighboringBlockData), LoadNeighboringBlockData ; 0b
-	dbw BANK(SaveScreen), SaveScreen ; 0c
-	dbw BANK(BufferScreen), BufferScreen ; 0d
-	dbw BANK(LoadGraphics), LoadGraphics ; 0e
-	dbw BANK(LoadTilesetHeader), LoadTilesetHeader ; 0f
-	dbw BANK(LoadMapTimeOfDay), LoadMapTimeOfDay ; 10
-	dbw BANK(LoadMapPalettes), LoadMapPalettes ; 11
-	dbw BANK(LoadWildMonData), LoadWildMonData ; 12
-	dbw BANK(RefreshMapSprites), RefreshMapSprites ; 13
-	dbw BANK(RunCallback_05_03), RunCallback_05_03 ; 14
-	dbw BANK(RunCallback_03), RunCallback_03 ; 15
-	dbw BANK(LoadObjectsRunCallback_02), LoadObjectsRunCallback_02 ; 16
-	dbw BANK(LoadSpawnPoint), LoadSpawnPoint ; 17
-	dbw BANK(EnterMapConnection), EnterMapConnection ; 18
-	dbw BANK(LoadWarpData), LoadWarpData ; 19
-	dbw BANK(LoadMapAttributes), LoadMapAttributes ; 1a
-	dbw BANK(LoadMapAttributes_IgnoreHidden), LoadMapAttributes_IgnoreHidden ; 1b
-	dbw BANK(WhiteBGMap), WhiteBGMap ; 1c
-	dbw BANK(FadeBlackBGMap), FadeBlackBGMap ; 1d
-	dbw BANK(FadeInBGMap), FadeInBGMap ; 1e
-	dbw BANK(GetCoordOfUpperLeftCorner), GetCoordOfUpperLeftCorner ; 1f
-	dbw BANK(RestoreFacingAfterWarp), RestoreFacingAfterWarp ; 20
-	dbw BANK(SpawnInFacingDown), SpawnInFacingDown ; 21
-	dbw BANK(GetSpawnCoord), GetSpawnCoord ; 22
-	dbw BANK(RefreshPlayerCoords), RefreshPlayerCoords ; 23
-	dbw BANK(DelayClearingOldSprites), DelayClearingOldSprites ; 24
-	dbw BANK(DelayLoadingNewSprites), DelayLoadingNewSprites ; 25
-	dbw BANK(UpdateRoamMons), UpdateRoamMons ; 26
-	dbw BANK(JumpRoamMons), JumpRoamMons ; 27
-	dbw BANK(FadeOldMapMusic), FadeOldMapMusic ; 28
-	dbw BANK(ActivateMapAnims), ActivateMapAnims ; 29
-	dbw BANK(SuspendMapAnims), SuspendMapAnims ; 2a
-	dbw BANK(RetainOldPalettes), RetainOldPalettes ; 2b
-	dbw BANK(DontScrollText), DontScrollText ; 2c
-	dbw BANK(ReturnFromMapSetupScript), ReturnFromMapSetupScript ; 2d
+	dba EnableLCD ; 00
+	dba DisableLCD ; 01
+	dba MapSetup_Sound_Off ; 02
+	dba PlayMapMusic ; 03
+	dba RestartMapMusic ; 04
+	dba FadeToMapMusic ; 05
+	dba FadeOutMapAndMusic ; 06
+	dba EnterMapMusic ; 07
+	dba ForceMapMusic ; 08
+	dba FadeInMusic ; 09
+	dba LoadBlockData ; 0a
+	dba LoadNeighboringBlockData ; 0b
+	dba SaveScreen ; 0c
+	dba BufferScreen ; 0d
+	dba LoadGraphics ; 0e
+	dba LoadTilesetHeader ; 0f
+	dba LoadMapTimeOfDay ; 10
+	dba LoadMapPalettes ; 11
+	dba LoadWildMonData ; 12
+	dba RefreshMapSprites ; 13
+	dba RunCallback_05_03 ; 14
+	dba RunCallback_03 ; 15
+	dba LoadObjectsRunCallback_02 ; 16
+	dba LoadSpawnPoint ; 17
+	dba EnterMapConnection ; 18
+	dba LoadWarpData ; 19
+	dba LoadMapAttributes ; 1a
+	dba LoadMapAttributes_SkipPeople ; 1b
+	dba ClearBGPalettes ; 1c
+	dba FadeOutPalettes ; 1d
+	dba FadeInPalettes ; 1e
+	dba GetCoordOfUpperLeftCorner ; 1f
+	dba RestoreFacingAfterWarp ; 20
+	dba SpawnInFacingDown ; 21
+	dba GetSpawnCoord ; 22
+	dba RefreshPlayerCoords ; 23
+	dba DelayClearingOldSprites ; 24
+	dba DelayLoadingNewSprites ; 25
+	dba UpdateRoamMons ; 26
+	dba JumpRoamMons ; 27
+	dba FadeOldMapMusic ; 28
+	dba ActivateMapAnims ; 29
+	dba SuspendMapAnims ; 2a
+	dba RetainOldPalettes ; 2b
+	dba DontScrollText ; 2c
+	dba ReturnFromMapSetupScript ; 2d
 ; 154ca
 
 
@@ -300,13 +300,13 @@
 
 ActivateMapAnims: ; 154cf
 	ld a, $1
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 154d3
 
 SuspendMapAnims: ; 154d3
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 154d7
 
@@ -318,7 +318,7 @@
 	ret
 ; 154ea (5:54ea)
 
-Function154ea: ; 154ea
+; unreferenced
 	ret
 ; 154eb
 
@@ -333,20 +333,21 @@
 	set 6, [hl]
 	ret
 
-Function154f7: ; 154f7
+CheckReplaceKrisSprite: ; 154f7
 	nop
-	call Function1550c
+	call .CheckBiking
 	jr c, .ok
-	call Function1554e
+	call .CheckSurfing
 	jr c, .ok
-	call Function1551a
+	call .CheckSurfing2
 	jr c, .ok
 	ret
+
 .ok
-	call Special_ReplaceKrisSprite
+	call ReplaceKrisSprite
 	ret
 
-Function1550c: ; 1550c (5:550c)
+.CheckBiking: ; 1550c (5:550c)
 	and a
 	ld hl, BikeFlags
 	bit 1, [hl]
@@ -356,7 +357,7 @@
 	scf
 	ret
 
-Function1551a: ; 1551a (5:551a)
+.CheckSurfing2: ; 1551a (5:551a)
 	ld a, [PlayerState]
 	cp PLAYER_NORMAL
 	jr z, .nope
@@ -367,11 +368,11 @@
 	cp PLAYER_SURF_PIKA
 	jr z, .surfing
 	call GetMapPermission
-	cp $3
+	cp INDOOR
 	jr z, .checkbiking
-	cp $5
+	cp PERM_5
 	jr z, .checkbiking
-	cp $7
+	cp DUNGEON
 	jr z, .checkbiking
 	jr .nope
 .checkbiking
@@ -383,21 +384,22 @@
 	ld [PlayerState], a
 	scf
 	ret
+
 .nope
 	and a
 	ret
 
-Function1554e: ; 1554e (5:554e)
+.CheckSurfing: ; 1554e (5:554e)
 	call CheckOnWater
 	jr nz, .ret_nc
 	ld a, [PlayerState]
 	cp PLAYER_SURF
-	jr z, .surfing
+	jr z, ._surfing
 	cp PLAYER_SURF_PIKA
-	jr z, .surfing
+	jr z, ._surfing
 	ld a, PLAYER_SURF
 	ld [PlayerState], a
-.surfing
+._surfing
 	scf
 	ret
 .ret_nc
--- /dev/null
+++ b/engine/mart.asm
@@ -1,0 +1,1000 @@
+	const_def
+	const MARTTEXT_HOW_MANY
+	const MARTTEXT_COSTS_THIS_MUCH
+	const MARTTEXT_NOT_ENOUGH_MONEY
+	const MARTTEXT_BAG_FULL
+	const MARTTEXT_HERE_YOU_GO
+	const MARTTEXT_SOLD_OUT
+
+OpenMartDialog:: ; 15a45
+	call GetMart
+	ld a, c
+	ld [EngineBuffer1], a
+	call LoadMartPointer
+	ld a, [EngineBuffer1]
+	ld hl, .dialogs
+	rst JumpTable
+	ret
+; 15a57
+
+.dialogs
+	dw MartDialog
+	dw HerbShop
+	dw BargainShop
+	dw Pharmacist
+	dw RooftopSale
+; 15a61
+
+MartDialog: ; 15a61
+	ld a, 0
+	ld [EngineBuffer1], a
+	xor a
+	ld [MovementAnimation], a
+	call StandardMart
+	ret
+; 15a6e
+
+HerbShop: ; 15a6e
+	call FarReadMart
+	call LoadStandardMenuDataHeader
+	ld hl, Text_HerbShop_Intro
+	call MartTextBox
+	call BuyMenu
+	ld hl, Text_HerbShop_ComeAgain
+	call MartTextBox
+	ret
+; 15a84
+
+BargainShop: ; 15a84
+	ld b, BANK(BargainShopData)
+	ld de, BargainShopData
+	call LoadMartPointer
+	call ReadMart
+	call LoadStandardMenuDataHeader
+	ld hl, Text_BargainShop_Intro
+	call MartTextBox
+	call BuyMenu
+	ld hl, wBargainShopFlags
+	ld a, [hli]
+	or [hl]
+	jr z, .skip_set
+	ld hl, DailyFlags
+	set 6, [hl]
+
+.skip_set
+	ld hl, Text_BargainShop_ComeAgain
+	call MartTextBox
+	ret
+; 15aae
+
+Pharmacist: ; 15aae
+	call FarReadMart
+	call LoadStandardMenuDataHeader
+	ld hl, UnknownText_0x15e90
+	call MartTextBox
+	call BuyMenu
+	ld hl, UnknownText_0x15eae
+	call MartTextBox
+	ret
+; 15ac4
+
+RooftopSale: ; 15ac4
+	ld b, BANK(RooftopSaleData1)
+	ld de, RooftopSaleData1
+	ld hl, StatusFlags
+	bit 6, [hl] ; hall of fame
+	jr z, .ok
+	ld b, BANK(RooftopSaleData2)
+	ld de, RooftopSaleData2
+
+.ok
+	call LoadMartPointer
+	call ReadMart
+	call LoadStandardMenuDataHeader
+	ld hl, Text_Mart_HowMayIHelpYou
+	call MartTextBox
+	call BuyMenu
+	ld hl, Text_Mart_ComeAgain
+	call MartTextBox
+	ret
+; 15aee
+
+RooftopSaleData1: ; 15aee
+	db 5
+	dbw POKE_BALL,     150
+	dbw GREAT_BALL,    500
+	dbw SUPER_POTION,  500
+	dbw FULL_HEAL,     500
+	dbw REVIVE,       1200
+	db -1
+RooftopSaleData2: ; 15aff
+	db 5
+	dbw HYPER_POTION, 1000
+	dbw FULL_RESTORE, 2000
+	dbw FULL_HEAL,     500
+	dbw ULTRA_BALL,   1000
+	dbw PROTEIN,      7800
+	db -1
+; 15b10
+
+LoadMartPointer: ; 15b10
+	ld a, b
+	ld [MartPointerBank], a
+	ld a, e
+	ld [MartPointer], a
+	ld a, d
+	ld [MartPointer + 1], a
+	ld hl, CurMart
+	xor a
+	ld bc, 16
+	call ByteFill
+	xor a
+	ld [MovementAnimation], a
+	ld [wBargainShopFlags], a
+	ld [FacingDirection], a
+	ret
+; 15b31
+
+GetMart: ; 15b31
+	ld a, e
+	cp (MartsEnd - Marts) / 2
+	jr c, .IsAMart
+	ld b, $5
+	ld de, DefaultMart
+	ret
+
+.IsAMart
+	ld hl, Marts
+rept 2
+	add hl, de
+endr
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld b, $5
+	ret
+; 15b47
+
+StandardMart: ; 15b47
+.loop
+	ld a, [MovementAnimation]
+	ld hl, .MartFunctions
+	rst JumpTable
+	ld [MovementAnimation], a
+	cp $ff
+	jr nz, .loop
+	ret
+
+.MartFunctions
+	dw .HowMayIHelpYou
+	dw .TopMenu
+	dw .Buy
+	dw .Sell
+	dw .Quit
+	dw .AnythingElse
+; 15b62
+
+.HowMayIHelpYou: ; 15b62
+	call LoadStandardMenuDataHeader
+	ld hl, Text_Mart_HowMayIHelpYou
+	call PrintText
+	ld a, $1 ; top menu
+	ret
+; 15b6e
+
+.TopMenu: ; 15b6e
+	ld hl, MenuDataHeader_BuySell
+	call CopyMenuDataHeader
+	call InterpretMenu2
+	jr c, .quit
+	ld a, [MenuSelection2]
+	cp $1
+	jr z, .buy
+	cp $2
+	jr z, .sell
+.quit
+	ld a, $4 ;  Come again!
+	ret
+.buy
+	ld a, $2 ; buy
+	ret
+.sell
+	ld a, $3 ; sell
+	ret
+; 15b8d
+
+.Buy: ; 15b8d
+	call ExitMenu
+	call FarReadMart
+	call BuyMenu
+	and a
+	ld a, $5 ; Anything else?
+	ret
+; 15b9a
+
+.Sell: ; 15b9a
+	call ExitMenu
+	call SellMenu
+	ld a, $5 ; Anything else?
+	ret
+; 15ba3
+
+.Quit: ; 15ba3
+	call ExitMenu
+	ld hl, Text_Mart_ComeAgain
+	call MartTextBox
+	ld a, $ff ; exit
+	ret
+; 15baf
+
+.AnythingElse: ; 15baf
+	call LoadStandardMenuDataHeader
+	ld hl, Text_Mart_AnythingElse
+	call PrintText
+	ld a, $1 ; top menu
+	ret
+; 15bbb
+
+FarReadMart: ; 15bbb
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, CurMart
+.CopyMart
+	ld a, [MartPointerBank]
+	call GetFarByte
+	ld [de], a
+	inc hl
+	inc de
+	cp -1
+	jr nz, .CopyMart
+	ld hl, wMartItem1BCD
+	ld de, CurMart + 1
+.ReadMartItem
+	ld a, [de]
+	inc de
+	cp -1
+	jr z, .done
+	push de
+	call GetMartItemPrice
+	pop de
+	jr .ReadMartItem
+
+.done
+	ret
+; 15be5
+
+GetMartItemPrice: ; 15be5
+; Return the price of item a in BCD at hl and in tiles at StringBuffer1.
+	push hl
+	ld [CurItem], a
+	callba GetItemPrice
+	pop hl
+
+GetMartPrice: ; 15bf0
+; Return price de in BCD at hl and in tiles at StringBuffer1.
+	push hl
+	ld a, d
+	ld [StringBuffer2], a
+	ld a, e
+	ld [StringBuffer2 + 1], a
+	ld hl, StringBuffer1
+	ld de, StringBuffer2
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 6 ; 6 digits
+	call PrintNum
+	pop hl
+
+	ld de, StringBuffer1
+	ld c, 6 / 2 ; 6 digits
+.loop
+	call .CharToNybble
+	swap a
+	ld b, a
+	call .CharToNybble
+	or b
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	ret
+; 15c1a
+
+.CharToNybble ; 15c1a
+	ld a, [de]
+	inc de
+	cp " "
+	jr nz, .not_space
+	ld a, "0"
+
+.not_space
+	sub "0"
+	ret
+; 15c25
+
+ReadMart: ; 15c25
+; Load the mart pointer.  Mart data is local (no need for bank).
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	push hl
+; set hl to the first item
+	inc hl
+	ld bc, wMartItem1BCD
+	ld de, CurMart + 1
+.loop
+; copy the item to CurMart + (ItemIndex)
+	ld a, [hli]
+	ld [de], a
+	inc de
+; -1 is the terminator
+	cp -1
+	jr z, .done
+
+	push de
+; copy the price to de
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+; convert the price to 3-byte BCD at [bc]
+	push hl
+	ld h, b
+	ld l, c
+	call GetMartPrice
+	ld b, h
+	ld c, l
+	pop hl
+
+	pop de
+	jr .loop
+
+.done
+	pop hl
+	ld a, [hl]
+	ld [CurMart], a
+	ret
+; 15c51
+
+BargainShopData: ; 15c51
+	db 5
+	dbw NUGGET,     4500
+	dbw PEARL,       650
+	dbw BIG_PEARL,  3500
+	dbw STARDUST,    900
+	dbw STAR_PIECE, 4600
+	db -1
+; 15c62
+
+
+BuyMenu: ; 15c62
+	call FadeToMenu
+	callba Function8000
+	xor a
+	ld [wd045 + 1], a
+	ld a, 1
+	ld [wd045], a
+.loop
+	call BuyMenuLoop ; menu loop
+	jr nc, .loop
+	call Function2b3c
+	ret
+; 15c7d
+
+LoadBuyMenuText: ; 15c7d
+; load text from a nested table
+; which table is in EngineBuffer1
+; which entry is in register a
+	push af
+	call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop af
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call PrintText
+	ret
+; 15c91
+
+MartAskPurchaseQuantity: ; 15c91
+	call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
+rept 2
+	inc hl
+endr
+	ld a, [hl]
+	and a
+	jp z, StandardMartAskPurchaseQuantity
+	cp 1
+	jp z, BargainShopAskPurchaseQuantity
+	jp RooftopSaleAskPurchaseQuantity
+; 15ca3
+
+GetMartDialogGroup: ; 15ca3
+	ld a, [EngineBuffer1]
+	ld e, a
+	ld d, 0
+	ld hl, .MartTextFunctionPointers
+rept 3
+	add hl, de
+endr
+	ret
+; 15cb0
+
+.MartTextFunctionPointers ; 15cb0
+	dwb .StandardMartPointers, 0
+	dwb .HerbShopPointers, 0
+	dwb .BargainShopPointers, 1
+	dwb .PharmacyPointers, 0
+	dwb .StandardMartPointers, 2
+; 15cbf
+
+.StandardMartPointers: ; 15cbf
+	dw Text_Mart_HowMany
+	dw Text_Mart_CostsThisMuch
+	dw Text_Mart_InsufficientFunds
+	dw Text_Mart_BagFull
+	dw Text_Mart_HereYouGo
+	dw BuyMenuLoop
+
+.HerbShopPointers: ; 15ccb
+	dw Text_HerbShop_HowMany
+	dw Text_HerbShop_CostsThisMuch
+	dw Text_HerbShop_InsufficientFunds
+	dw Text_HerbShop_BagFull
+	dw Text_HerbShop_HereYouGo
+	dw BuyMenuLoop
+
+.BargainShopPointers: ; 15cd7
+	dw BuyMenuLoop
+	dw Text_BargainShop_CostsThisMuch
+	dw Text_BargainShop_InsufficientFunds
+	dw Text_BargainShop_BagFull
+	dw Text_BargainShop_HereYouGo
+	dw Text_BargainShop_SoldOut
+
+.PharmacyPointers: ; 15ce3
+	dw Text_Pharmacy_HowMany
+	dw Text_Pharmacy_CostsThisMuch
+	dw Text_Pharmacy_InsufficientFunds
+	dw Text_Pharmacy_BagFull
+	dw Text_Pharmacy_HereYouGo
+	dw BuyMenuLoop
+; 15cef
+
+
+BuyMenuLoop: ; 15cef
+	callba Function24ae8
+	call UpdateSprites
+	ld hl, MenuDataHeader_Buy
+	call CopyMenuDataHeader
+	ld a, [wd045]
+	ld [wMenuCursorBuffer], a
+	ld a, [wd045 + 1]
+	ld [wd0e4], a
+	call HandleScrollingMenu
+	ld a, [wd0e4]
+	ld [wd045 + 1], a
+	ld a, [MenuSelection2]
+	ld [wd045], a
+	call SpeechTextBox
+	ld a, [wcf73]
+	cp B_BUTTON
+	jr z, .set_carry
+	cp A_BUTTON
+	jr z, .useless_pointer
+
+.useless_pointer
+	call MartAskPurchaseQuantity
+	jr c, .cancel
+	call Function15d97
+	jr c, .cancel
+	ld de, Money
+	ld bc, hMoneyTemp
+	ld a, $3 ; useless load
+	call CompareMoney
+	jr c, .insufficient_funds
+	ld hl, NumItems
+	call ReceiveItem
+	jr nc, .insufficient_bag_space
+	ld a, [wMartItemID]
+	ld e, a
+	ld d, $0
+	ld b, SET_FLAG
+	ld hl, wBargainShopFlags
+	call FlagAction
+	call PlayTransactionSound
+	ld de, Money
+	ld bc, hMoneyTemp
+	call TakeMoney
+	ld a, MARTTEXT_HERE_YOU_GO
+	call LoadBuyMenuText
+	call JoyWaitAorB
+
+.cancel
+	call SpeechTextBox
+	and a
+	ret
+
+.set_carry
+	scf
+	ret
+
+.insufficient_bag_space
+	ld a, MARTTEXT_BAG_FULL
+	call LoadBuyMenuText
+	call JoyWaitAorB
+	and a
+	ret
+
+.insufficient_funds
+	ld a, MARTTEXT_NOT_ENOUGH_MONEY
+	call LoadBuyMenuText
+	call JoyWaitAorB
+	and a
+	ret
+; 15d83
+
+StandardMartAskPurchaseQuantity:
+	ld a, 99
+	ld [wItemQuantityBuffer], a
+	ld a, MARTTEXT_HOW_MANY
+	call LoadBuyMenuText
+	callba Function24fc9
+	call ExitMenu
+	ret
+; 15d97
+
+Function15d97: ; 15d97
+	predef PartyMonItemName
+	ld a, MARTTEXT_COSTS_THIS_MUCH
+	call LoadBuyMenuText
+	call YesNoBox
+	ret
+; 15da5
+
+BargainShopAskPurchaseQuantity:
+	ld a, 1
+	ld [wItemQuantityChangeBuffer], a
+	ld a, [wMartItemID]
+	ld e, a
+	ld d, $0
+	ld b, CHECK_FLAG
+	ld hl, wBargainShopFlags
+	call FlagAction
+	ld a, c
+	and a
+	jr nz, .SoldOut
+	ld a, [wMartItemID]
+	ld e, a
+	ld d, $0
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+rept 3
+	add hl, de
+endr
+	inc hl
+	ld a, [hli]
+	ld [hMoneyTemp + 2], a
+	ld a, [hl]
+	ld [hMoneyTemp + 1], a
+	xor a
+	ld [hMoneyTemp], a
+	and a
+	ret
+
+.SoldOut
+	ld a, MARTTEXT_SOLD_OUT
+	call LoadBuyMenuText
+	call JoyWaitAorB
+	scf
+	ret
+; 15de2
+
+RooftopSaleAskPurchaseQuantity:
+	ld a, MARTTEXT_HOW_MANY
+	call LoadBuyMenuText
+	call .GetSalePrice
+	ld a, 99
+	ld [wItemQuantityBuffer], a
+	callba Function24fcf
+	call ExitMenu
+	ret
+; 15df9
+
+.GetSalePrice: ; 15df9
+	ld a, [wMartItemID]
+	ld e, a
+	ld d, 0
+	ld hl, MartPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+rept 3
+	add hl, de
+endr
+	inc hl
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ret
+; 15e0e
+
+
+Text_Mart_HowMany: ; 0x15e0e
+	; How many?
+	text_jump UnknownText_0x1c4bfd
+	db "@"
+; 0x15e13
+
+Text_Mart_CostsThisMuch: ; 0x15e13
+	; @ (S) will be ¥@ .
+	text_jump UnknownText_0x1c4c08
+	db "@"
+; 0x15e18
+
+MenuDataHeader_Buy: ; 0x15e18
+	db $40 ; flags
+	db 03, 01 ; start coords
+	db 11, 19 ; end coords
+	dw .menudata2
+	db 1 ; default option
+; 0x15e20
+
+.menudata2: ; 0x15e20
+	db $30 ; pointers
+	db 4, 8 ; rows, columns
+	db 1 ; horizontal spacing
+	dbw 0, CurMart
+	dba PlaceMenuItemName
+	dba .PrintBCDPrices
+	dba Function244c3
+; 15e30
+
+.PrintBCDPrices: ; 15e30
+	ld a, [wcf77]
+	ld c, a
+	ld b, 0
+	ld hl, wMartItem1BCD
+rept 3
+	add hl, bc
+endr
+	push de
+	ld d, h
+	ld e, l
+	pop hl
+	ld bc, SCREEN_WIDTH
+	add hl, bc
+	ld c, PRINTNUM_LEADINGZEROS | PRINTNUM_MONEY | 3
+	call PrintBCDNumber
+	ret
+; 15e4a (5:5e4a)
+
+Text_HerbShop_Intro: ; 0x15e4a
+	; Hello, dear. I sell inexpensive herbal medicine. They're good, but a trifle bitter. Your #MON may not like them. Hehehehe…
+	text_jump UnknownText_0x1c4c28
+	db "@"
+; 0x15e4f
+
+Text_HerbShop_HowMany: ; 0x15e4f
+	; How many?
+	text_jump UnknownText_0x1c4ca3
+	db "@"
+; 0x15e54
+
+Text_HerbShop_CostsThisMuch: ; 0x15e54
+	; @ (S) will be ¥@ .
+	text_jump UnknownText_0x1c4cae
+	db "@"
+; 0x15e59
+
+Text_HerbShop_HereYouGo: ; 0x15e59
+	; Thank you, dear. Hehehehe…
+	text_jump UnknownText_0x1c4cce
+	db "@"
+; 0x15e5e
+
+Text_HerbShop_BagFull: ; 0x15e5e
+	; Oh? Your PACK is full, dear.
+	text_jump UnknownText_0x1c4cea
+	db "@"
+; 0x15e63
+
+Text_HerbShop_InsufficientFunds: ; 0x15e63
+	; Hehehe… You don't have the money.
+	text_jump UnknownText_0x1c4d08
+	db "@"
+; 0x15e68
+
+Text_HerbShop_ComeAgain: ; 0x15e68
+	; Come again, dear. Hehehehe…
+	text_jump UnknownText_0x1c4d2a
+	db "@"
+; 0x15e6d
+
+Text_BargainShop_Intro: ; 0x15e6d
+	; Hiya! Care to see some bargains? I sell rare items that nobody else carries--but only one of each item.
+	text_jump UnknownText_0x1c4d47
+	db "@"
+; 0x15e72
+
+Text_BargainShop_CostsThisMuch: ; 0x15e72
+	; costs ¥@ . Want it?
+	text_jump UnknownText_0x1c4db0
+	db "@"
+; 0x15e77
+
+Text_BargainShop_HereYouGo: ; 0x15e77
+	; Thanks.
+	text_jump UnknownText_0x1c4dcd
+	db "@"
+; 0x15e7c
+
+Text_BargainShop_BagFull: ; 0x15e7c
+	; Uh-oh, your PACK is chock-full.
+	text_jump UnknownText_0x1c4dd6
+	db "@"
+; 0x15e81
+
+Text_BargainShop_SoldOut: ; 0x15e81
+	; You bought that already. I'm all sold out of it.
+	text_jump UnknownText_0x1c4df7
+	db "@"
+; 0x15e86
+
+Text_BargainShop_InsufficientFunds: ; 0x15e86
+	; Uh-oh, you're short on funds.
+	text_jump UnknownText_0x1c4e28
+	db "@"
+; 0x15e8b
+
+Text_BargainShop_ComeAgain: ; 0x15e8b
+	; Come by again sometime.
+	text_jump UnknownText_0x1c4e46
+	db "@"
+; 0x15e90
+
+UnknownText_0x15e90: ; 0x15e90
+	; What's up? Need some medicine?
+	text_jump UnknownText_0x1c4e5f
+	db "@"
+; 0x15e95
+
+Text_Pharmacy_HowMany: ; 0x15e95
+	; How many?
+	text_jump UnknownText_0x1c4e7e
+	db "@"
+; 0x15e9a
+
+Text_Pharmacy_CostsThisMuch: ; 0x15e9a
+	; @ (S) will cost ¥@ .
+	text_jump UnknownText_0x1c4e89
+	db "@"
+; 0x15e9f
+
+Text_Pharmacy_HereYouGo: ; 0x15e9f
+	; Thanks much!
+	text_jump UnknownText_0x1c4eab
+	db "@"
+; 0x15ea4
+
+Text_Pharmacy_BagFull: ; 0x15ea4
+	; You don't have any more space.
+	text_jump UnknownText_0x1c4eb9
+	db "@"
+; 0x15ea9
+
+Text_Pharmacy_InsufficientFunds: ; 0x15ea9
+	; Huh? That's not enough money.
+	text_jump UnknownText_0x1c4ed8
+	db "@"
+; 0x15eae
+
+UnknownText_0x15eae: ; 0x15eae
+	; All right. See you around.
+	text_jump UnknownText_0x1c4ef6
+	db "@"
+; 0x15eb3
+
+
+SellMenu: ; 15eb3
+	call DisableSpriteUpdates
+	callba Function106a5
+.asm_15ebc
+	callba Function106be
+	ld a, [wcf66]
+	and a
+	jp z, Function15ece
+	call Function15ee0
+	jr .asm_15ebc
+; 15ece
+
+Function15ece: ; 15ece
+	call Function2b74
+	and a
+	ret
+; 15ed3
+
+Function15ed3: ; unreferenced
+	ld hl, UnknownText_0x15edb
+	call MenuTextBoxBackup
+	and a
+	ret
+; 15edb
+
+UnknownText_0x15edb: ; 0x15edb
+	; You don't have anything to sell.
+	text_jump UnknownText_0x1c4f12
+	db "@"
+; 0x15ee0
+
+
+Function15ee0: ; 15ee0
+	callba CheckItemMenu
+	ld a, [wItemAttributeParamBuffer]
+	ld hl, .jumptable
+	rst JumpTable
+	ret
+; 15eee
+
+.jumptable: ; 15eee
+	dw .try_sell
+	dw .cant_buy
+	dw .cant_buy
+	dw .cant_buy
+	dw .try_sell
+	dw .try_sell
+	dw .try_sell
+; 15efc
+
+.cant_buy: ; 15efc
+	ret
+; 15efd
+
+
+.try_sell: ; 15efd
+	callba _CheckTossableItem
+	ld a, [wItemAttributeParamBuffer]
+	and a
+	jr z, .okay_to_sell
+	ld hl, TextMart_CantBuyFromYou
+	call PrintText
+	and a
+	ret
+
+.okay_to_sell
+	ld hl, Text_Mart_SellHowMany
+	call PrintText
+	callba Function24af8
+	callba Function24fe1
+	call ExitMenu
+	jr c, .declined
+	hlcoord 1, 14
+	lb bc, 3, 18
+	call ClearBox
+	ld hl, Text_Mart_ICanPayThisMuch
+	call PrintTextBoxText
+	call YesNoBox
+	jr c, .declined
+	ld de, Money
+	ld bc, hMoneyTemp
+	call GiveMoney
+	ld a, [wMartItemID]
+	ld hl, NumItems
+	call TossItem
+	predef PartyMonItemName
+	hlcoord 1, 14
+	lb bc, 3, 18
+	call ClearBox
+	ld hl, Text_Mart_SoldForAmount
+	call PrintTextBoxText
+	call PlayTransactionSound
+	callba Function24af0
+	call JoyWaitAorB
+
+.declined
+	call ExitMenu
+	and a
+	ret
+; 15f73
+
+Text_Mart_SellHowMany: ; 0x15f73
+	; How many?
+	text_jump UnknownText_0x1c4f33
+	db "@"
+; 0x15f78
+
+Text_Mart_ICanPayThisMuch: ; 0x15f78
+	; I can pay you ¥@ . Is that OK?
+	text_jump UnknownText_0x1c4f3e
+	db "@"
+; 0x15f7d
+
+DummyString ; 15f7d
+	db "!ダミー!@"
+
+Text_Mart_HowMayIHelpYou: ; 0x15f83
+	; Welcome! How may I help you?
+	text_jump UnknownText_0x1c4f62
+	db "@"
+; 0x15f88
+
+MenuDataHeader_BuySell: ; 0x15f88
+	db $40 ; flags
+	db 00, 00 ; start coords
+	db 08, 07 ; end coords
+	dw .menudata2
+	db 1 ; default option
+; 0x15f90
+
+.menudata2: ; 0x15f90
+	db $80 ; strings
+	db 3 ; items
+	db "BUY@"
+	db "SELL@"
+	db "QUIT@"
+; 0x15f96
+
+Text_Mart_HereYouGo: ; 0x15fa0
+	; Here you are. Thank you!
+	text_jump UnknownText_0x1c4f80
+	db "@"
+; 0x15fa5
+
+Text_Mart_InsufficientFunds: ; 0x15fa5
+	; You don't have enough money.
+	text_jump UnknownText_0x1c4f9a
+	db "@"
+; 0x15faa
+
+Text_Mart_BagFull: ; 0x15faa
+	; You can't carry any more items.
+	text_jump UnknownText_0x1c4fb7
+	db "@"
+; 0x15faf
+
+TextMart_CantBuyFromYou: ; 0x15faf
+	; Sorry, I can't buy that from you.
+	text_jump UnknownText_0x1c4fd7
+	db "@"
+; 0x15fb4
+
+Text_Mart_ComeAgain: ; 0x15fb4
+	; Please come again!
+	text_jump UnknownText_0x1c4ff9
+	db "@"
+; 0x15fb9
+
+Text_Mart_AnythingElse: ; 0x15fb9
+	text_jump UnknownText_0x1c500d
+	db "@"
+; 0x15fbe
+
+Text_Mart_SoldForAmount: ; 0x15fbe
+	text_jump UnknownText_0x1c502e
+	db "@"
+; 0x15fc3
+
+PlayTransactionSound: ; 15fc3
+	call WaitSFX
+	ld de, SFX_TRANSACTION
+	call PlaySFX
+	ret
+; 15fcd
+
+MartTextBox: ; 15fcd
+	call MenuTextBox
+	call JoyWaitAorB
+	call ExitMenu
+	ret
+; 15fd7
--- /dev/null
+++ b/engine/menu.asm
@@ -1,0 +1,587 @@
+Function2400e:: ; 2400e
+	ld hl, CopyMenuData2
+	ld a, [wcf94]
+	rst FarCall
+	call Function24085
+	call UpdateSprites
+	call Function321c
+	call Function2408f
+	ret
+; 24022
+
+Function24022:: ; 24022
+	ld hl, CopyMenuData2
+	ld a, [wcf94]
+	rst FarCall
+	call Function24085
+	callba MobileTextBorder
+	call UpdateSprites
+	call Function321c
+	call Function2408f
+	ret
+; 2403c
+
+Function2403c:: ; 2403c
+	ld hl, CopyMenuData2
+	ld a, [wcf94]
+	rst FarCall
+	call Function24085
+	callba MobileTextBorder
+	call UpdateSprites
+	call Function321c
+	call Function2411a
+	ld hl, wcfa5
+	set 7, [hl]
+.asm_2405a
+	call DelayFrame
+	callba Function10032e
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_24076
+	call Function241ba
+	ld a, [wcfa8]
+	and c
+	jr z, .asm_2405a
+	call Function24098
+	ret
+
+.asm_24076
+	ld a, [wcfa4]
+	ld c, a
+	ld a, [wcfa3]
+	call SimpleMultiply
+	ld [wMenuCursorBuffer], a
+	and a
+	ret
+; 24085
+
+
+
+Function24085: ; 24085
+	xor a
+	ld [hBGMapMode], a
+	call MenuBox
+	call Function240db
+	ret
+; 2408f
+
+Function2408f: ; 2408f
+	call Function2411a
+	call Function1bc9
+	call Function1ff8
+
+Function24098: ; 24098
+	ld a, [wMenuData2Flags]
+	bit 1, a
+	jr z, .asm_240a6
+	call Function1bdd
+	bit 2, a
+	jr nz, .asm_240c9
+
+.asm_240a6
+	ld a, [wMenuData2Flags]
+	bit 0, a
+	jr nz, .asm_240b4
+	call Function1bdd
+	bit 1, a
+	jr nz, .asm_240cb
+
+.asm_240b4
+	ld a, [wcfa4]
+	ld c, a
+	ld a, [MenuSelection2]
+	dec a
+	call SimpleMultiply
+	ld c, a
+	ld a, [wcfaa]
+	add c
+	ld [wMenuCursorBuffer], a
+	and a
+	ret
+
+.asm_240c9
+	scf
+	ret
+
+.asm_240cb
+	scf
+	ret
+; 240cd
+
+Function240cd: ; 240cd
+	ld a, [wMenuData2Items]
+	and $f
+	ret
+; 240d3
+
+Function240d3: ; 240d3
+	ld a, [wMenuData2Items]
+	swap a
+	and $f
+	ret
+; 240db
+
+Function240db: ; 240db
+	ld hl, wcf95
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	call GetMenuTextStartCoord
+	call Coord2Tile
+	call Function240d3
+	ld b, a
+.asm_240eb
+	push bc
+	push hl
+	call Function240cd
+	ld c, a
+.asm_240f1
+	push bc
+	ld a, [wcf94]
+	call Function201c
+	inc de
+	ld a, [wcf93]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop bc
+	dec c
+	jr nz, .asm_240f1
+	pop hl
+	ld bc, $28
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_240eb
+	ld hl, wcf98
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	or h
+	ret z
+	ld a, [wcf97]
+	rst FarCall
+	ret
+; 2411a
+
+
+Function2411a: ; 2411a (9:411a)
+	call GetMenuTextStartCoord
+	ld a, b
+	ld [wcfa1], a
+	dec c
+	ld a, c
+	ld [wcfa2], a
+	call Function240d3
+	ld [wcfa3], a
+	call Function240cd
+	ld [wcfa4], a
+	call Function24179
+	call Function2418a
+	call Function24193
+	ld a, [wcfa4]
+	ld e, a
+	ld a, [wMenuCursorBuffer]
+	ld b, a
+	xor a
+	ld d, $0
+.asm_24146
+	inc d
+	add e
+	cp b
+	jr c, .asm_24146
+	sub e
+	ld c, a
+	ld a, b
+	sub c
+	and a
+	jr z, .asm_24157
+	cp e
+	jr z, .asm_24159
+	jr c, .asm_24159
+.asm_24157
+	ld a, $1
+.asm_24159
+	ld [wcfaa], a
+	ld a, [wcfa3]
+	ld e, a
+	ld a, d
+	and a
+	jr z, .asm_24169
+	cp e
+	jr z, .asm_2416b
+	jr c, .asm_2416b
+.asm_24169
+	ld a, $1
+.asm_2416b
+	ld [MenuSelection2], a
+	xor a
+	ld [wcfab], a
+	ld [wcfac], a
+	ld [wcfad], a
+	ret
+; 24179
+
+Function24179: ; 24179
+	xor a
+	ld hl, wcfa5
+	ld [hli], a
+	ld [hld], a
+	ld a, [wMenuData2Flags]
+	bit 5, a
+	ret z
+	set 5, [hl]
+	set 4, [hl]
+	ret
+; 2418a
+
+Function2418a: ; 2418a
+	ld a, [wcf93]
+	or $20
+	ld [wcfa7], a
+	ret
+; 24193
+
+Function24193: ; 24193
+	ld hl, wMenuData2Flags
+	ld a, $1
+	bit 0, [hl]
+	jr nz, .asm_2419e
+	or $2
+
+.asm_2419e
+	bit 1, [hl]
+	jr z, .asm_241a4
+	or $4
+
+.asm_241a4
+	ld [wcfa8], a
+	ret
+; 241a8
+
+
+Function241a8:: ; 241a8
+	call Function24329
+Function241ab:: ; 241ab
+	ld hl, wcfa6
+	res 7, [hl]
+	ld a, [hBGMapMode]
+	push af
+	call Function24216
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 241ba
+
+Function241ba: ; 241ba
+	ld hl, wcfa6
+	res 7, [hl]
+	ld a, [hBGMapMode]
+	push af
+	call Function2431a
+	call Function24249
+	jr nc, .asm_241cd
+	call Function24270
+
+.asm_241cd
+	pop af
+	ld [hBGMapMode], a
+	call Function1bdd
+	ld c, a
+	ret
+; 241d5
+
+
+Function241d5: ; 241d5
+	call Function24329
+.loop
+	call Function2431a
+	call Function10402d ; BUG: This function is in another bank.
+	                    ; Pointer in current bank (9) is bogus.
+	call Function241fa
+	jr nc, .done
+	call Function24270
+	jr c, .done
+	ld a, [wcfa5]
+	bit 7, a
+	jr nz, .done
+	call Function1bdd
+	ld c, a
+	ld a, [wcfa8]
+	and c
+	jr z, .loop
+
+.done
+	ret
+; 241fa
+
+Function241fa: ; 241fa
+.loop
+	call Function24259
+	ret c
+	ld c, 1
+	ld b, 3
+	call Function10062d ; BUG: This function is in another bank.
+	                    ; Pointer in current bank (9) is bogus.
+	ret c
+	callba Function100337
+	ret c
+	ld a, [wcfa5]
+	bit 7, a
+	jr z, .loop
+	and a
+	ret
+; 24216
+
+
+Function24216: ; 24216
+.asm_24216
+	call Function2431a
+	call Function24238
+	call Function24249
+	jr nc, .asm_24237
+	call Function24270
+	jr c, .asm_24237
+	ld a, [wcfa5]
+	bit 7, a
+	jr nz, .asm_24237
+	call Function1bdd
+	ld b, a
+	ld a, [wcfa8]
+	and b
+	jr z, .asm_24216
+
+.asm_24237
+	ret
+; 24238
+
+Function24238: ; 24238
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call WaitBGMap
+	pop af
+	ld [hOAMUpdate], a
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 24249
+
+Function24249: ; 24249
+.asm_24249
+	call RTC
+	call Function24259
+	ret c
+	ld a, [wcfa5]
+	bit 7, a
+	jr z, .asm_24249
+	and a
+	ret
+; 24259
+
+Function24259: ; 24259
+	ld a, [wcfa5]
+	bit 6, a
+	jr z, .asm_24266
+	callab Function8cf62
+
+.asm_24266
+	call JoyTextDelay
+	call Function1bdd
+	and a
+	ret z
+	scf
+	ret
+; 24270
+
+Function24270: ; 24270
+	call Function1bdd
+	bit 0, a
+	jp nz, Function24318
+	bit 1, a
+	jp nz, Function24318
+	bit 2, a
+	jp nz, Function24318
+	bit 3, a
+	jp nz, Function24318
+	bit 4, a
+	jr nz, .asm_242fa
+	bit 5, a
+	jr nz, .asm_242dc
+	bit 6, a
+	jr nz, .asm_242be
+	bit 7, a
+	jr nz, .asm_242a0
+	and a
+	ret
+
+.asm_24299: ; 24299
+	ld hl, wcfa6
+	set 7, [hl]
+	scf
+	ret
+
+.asm_242a0
+	ld hl, MenuSelection2
+	ld a, [wcfa3]
+	cp [hl]
+	jr z, .asm_242ac
+	inc [hl]
+	xor a
+	ret
+
+.asm_242ac
+	ld a, [wcfa5]
+	bit 5, a
+	jr nz, .asm_242ba
+	bit 3, a
+	jp nz, .asm_24299
+	xor a
+	ret
+
+.asm_242ba
+	ld [hl], $1
+	xor a
+	ret
+
+.asm_242be
+	ld hl, MenuSelection2
+	ld a, [hl]
+	dec a
+	jr z, .asm_242c8
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242c8
+	ld a, [wcfa5]
+	bit 5, a
+	jr nz, .asm_242d6
+	bit 2, a
+	jp nz, .asm_24299
+	xor a
+	ret
+
+.asm_242d6
+	ld a, [wcfa3]
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242dc
+	ld hl, wcfaa
+	ld a, [hl]
+	dec a
+	jr z, .asm_242e6
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242e6
+	ld a, [wcfa5]
+	bit 4, a
+	jr nz, .asm_242f4
+	bit 1, a
+	jp nz, .asm_24299
+	xor a
+	ret
+
+.asm_242f4
+	ld a, [wcfa4]
+	ld [hl], a
+	xor a
+	ret
+
+.asm_242fa
+	ld hl, wcfaa
+	ld a, [wcfa4]
+	cp [hl]
+	jr z, .asm_24306
+	inc [hl]
+	xor a
+	ret
+
+.asm_24306
+	ld a, [wcfa5]
+	bit 4, a
+	jr nz, .asm_24314
+	bit 0, a
+	jp nz, .asm_24299
+	xor a
+	ret
+
+.asm_24314
+	ld [hl], $1
+	xor a
+	ret
+; 24318
+
+Function24318: ; 24318
+	xor a
+	ret
+; 2431a
+
+Function2431a: ; 2431a
+	ld hl, wcfac
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	cp $ed
+	jr nz, Function24329
+	ld a, [wcfab]
+	ld [hl], a
+
+Function24329: ; 24329
+	ld a, [wcfa1]
+	ld b, a
+	ld a, [wcfa2]
+	ld c, a
+	call Coord2Tile
+	ld a, [wcfa7]
+	swap a
+	and $f
+	ld c, a
+	ld a, [MenuSelection2]
+	ld b, a
+	xor a
+	dec b
+	jr z, .asm_24348
+.asm_24344
+	add c
+	dec b
+	jr nz, .asm_24344
+
+.asm_24348
+	ld c, $14
+	call AddNTimes
+	ld a, [wcfa7]
+	and $f
+	ld c, a
+	ld a, [wcfaa]
+	ld b, a
+	xor a
+	dec b
+	jr z, .asm_2435f
+.asm_2435b
+	add c
+	dec b
+	jr nz, .asm_2435b
+
+.asm_2435f
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	cp $ed
+	jr z, .asm_2436b
+	ld [wcfab], a
+	ld [hl], $ed
+
+.asm_2436b
+	ld a, l
+	ld [wcfac], a
+	ld a, h
+	ld [wcfad], a
+	ret
+; 24374
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -61,19 +61,19 @@
 	dw Movement_fix_facing            ; 3b
 	dw Movement_3c                    ; 3c
 	dw Movement_hide_person           ; 3d
-	dw Movement_show_person           ; 3e
-	dw Movement_3f                    ; 3f
-	dw Movement_40                    ; 40
-	dw Movement_41                    ; 41
-	dw Movement_42                    ; 42
-	dw Movement_43                    ; 43
-	dw Movement_44                    ; 44
-	dw Movement_accelerate_last       ; 45
+	dw Movement_step_sleep_1          ; 3e
+	dw Movement_step_sleep_2          ; 3f
+	dw Movement_step_sleep_3          ; 40
+	dw Movement_step_sleep_4          ; 41
+	dw Movement_step_sleep_5          ; 42
+	dw Movement_step_sleep_6          ; 43
+	dw Movement_step_sleep_7          ; 44
+	dw Movement_step_sleep_8          ; 45
 	dw Movement_step_sleep            ; 46
 	dw Movement_step_end              ; 47
 	dw Movement_48                    ; 48
 	dw Movement_remove_person         ; 49
-	dw Movement_4a                    ; 4a
+	dw Movement_step_loop             ; 4a
 	dw Movement_4b                    ; 4b
 	dw Movement_teleport_from         ; 4c
 	dw Movement_teleport_to           ; 4d
@@ -80,13 +80,13 @@
 	dw Movement_skyfall               ; 4e
 	dw Movement_step_wait5            ; 4f
 	dw Movement_50                    ; 50
-	dw Movement_51                    ; 51
-	dw Movement_52                    ; 52
+	dw Movement_fish_got_bite         ; 51
+	dw Movement_fish_cast_rod         ; 52
 	dw Movement_hide_emote            ; 53
 	dw Movement_show_emote            ; 54
 	dw Movement_step_shake            ; 55
 	dw Movement_56                    ; 56
-	dw Movement_57                    ; 57
+	dw Movement_rock_smash            ; 57
 	dw Movement_58                    ; 58
 	dw Movement_59                    ; 59
 ; 5129
@@ -139,7 +139,7 @@
 	ld [hl], $3
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 516a
 
@@ -156,7 +156,7 @@
 	ld [hl], a
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $12
@@ -163,7 +163,7 @@
 	ret
 ; 5189
 
-Movement_51: ; 5189
+Movement_fish_got_bite: ; 5189
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $6
@@ -173,7 +173,7 @@
 	ret
 ; 5196
 
-Movement_57: ; 5196
+Movement_rock_smash: ; 5196
 	call GetMovementByte
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
@@ -187,7 +187,7 @@
 	ret
 ; 51ab
 
-Movement_52: ; 51ab
+Movement_fish_cast_rod: ; 51ab
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $6
@@ -197,11 +197,11 @@
 	ret
 ; 51b8
 
-Movement_4a: ; 51b8
-	ld hl, OBJECT_27
+Movement_step_loop: ; 51b8
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], $0
-	jp Function5065
+	jp ContinueReadingMovement
 ; 51c1
 
 Movement_step_end: ; 51c1
@@ -209,11 +209,14 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_27
+
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], $0
+
 	ld hl, VramState
 	res 7, [hl]
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $1
@@ -225,16 +228,20 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld [hl], a
-	ld hl, OBJECT_27
+
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	ld [hl], $0
+
 	call GetMovementByte
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $3
+
 	ld hl, VramState
 	res 7, [hl]
 	ret
@@ -245,10 +252,10 @@
 	ld hl, wObjectFollow_Leader
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr nz, .asm_520a
-	ld [hl], $ff
+	jr nz, .not_leading
+	ld [hl], -1
 
-.asm_520a
+.not_leading
 	ld hl, VramState
 	res 7, [hl]
 	ret
@@ -258,43 +265,45 @@
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $1
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $4
+
 	ld hl, VramState
 	res 7, [hl]
 	ret
 ; 5222
 
-Movement_show_person: ; 5222
+Movement_step_sleep_1: ; 5222
 	ld a, $1
 	jr Function5247
 
-Movement_3f: ; 5226
+Movement_step_sleep_2: ; 5226
 	ld a, $2
 	jr Function5247
 
-Movement_40: ; 522a
+Movement_step_sleep_3: ; 522a
 	ld a, $3
 	jr Function5247
 
-Movement_41: ; 522e
+Movement_step_sleep_4: ; 522e
 	ld a, $4
 	jr Function5247
 
-Movement_42: ; 5232
+Movement_step_sleep_5: ; 5232
 	ld a, $5
 	jr Function5247
 
-Movement_43: ; 5236
+Movement_step_sleep_6: ; 5236
 	ld a, $6
 	jr Function5247
 
-Movement_44: ; 523a
+Movement_step_sleep_7: ; 523a
 	ld a, $7
 	jr Function5247
 
-Movement_accelerate_last: ; 523e
+Movement_step_sleep_8: ; 523e
 	ld a, $8
 	jr Function5247
 
@@ -309,15 +318,18 @@
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], $3
+
 	ld hl, OBJECT_11
 	add hl, bc
 	ld [hl], $1
+
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 525f
 
@@ -334,7 +346,7 @@
 	ld [hl], $3
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 5279
 
@@ -351,7 +363,7 @@
 	ld [hl], $b
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 5293
 
@@ -359,7 +371,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	res 3, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 529c
 
 Movement_39: ; 529c
@@ -366,7 +378,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	set 3, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52a5
 
 Movement_remove_fixed_facing: ; 52a5
@@ -373,7 +385,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	res 2, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52ae
 
 Movement_fix_facing: ; 52ae
@@ -380,7 +392,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	set 2, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52b7
 
 Movement_3c: ; 52b7
@@ -387,7 +399,7 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	res 0, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52c0
 
 Movement_hide_person: ; 52c0
@@ -394,17 +406,17 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	set 0, [hl]
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52c9
 
 Movement_hide_emote: ; 52c9
 	call Function5579
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52cf
 
 Movement_show_emote: ; 52cf
 	call Function5547
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52d5
 
 Movement_step_shake: ; 52d5
@@ -413,7 +425,7 @@
 
 	call GetMovementByte
 	call Function5565
-	jp Function5065
+	jp ContinueReadingMovement
 ; 52de
 
 Movement_turn_head_down: ; 52de
@@ -441,7 +453,7 @@
 	ld [hl], $1
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
-	ld [hl], $ff
+	ld [hl], STANDING
 	ret
 ; 5300
 
--- /dev/null
+++ b/engine/namingscreen.asm
@@ -1,0 +1,959 @@
+_NamingScreen: ; 0x116b7
+	call DisableSpriteUpdates
+	call NamingScreen
+	call Function2b74
+	ret
+; 0x116c1
+
+NamingScreen: ; 116c1
+	ld hl, wc6d0
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, wc6d4
+	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 Function116f8
+	call DelayFrame
+.asm_116e5
+	call Function11915
+	jr nc, .asm_116e5
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [hMapAnims], a
+	pop af
+	ld [Options], a
+	call ClearJoypad
+	ret
+; 116f8
+
+Function116f8: ; 116f8
+	call ClearBGPalettes
+	ld b, $8
+	call GetSGBLayout
+	call DisableLCD
+	call Function11c51
+	call Function118a8
+	ld a, $e3
+	ld [rLCDC], a
+	call Function1171d
+	call WaitBGMap
+	call WaitTop
+	call SetPalettes
+	call Function11be0
+	ret
+; 1171d
+
+Function1171d: ; 1171d
+	ld a, [wc6d4]
+	and 7
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_1172e
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1172e
+
+
+Jumptable_1172e: ; 1172e (4:572e)
+	dw Function1173e
+	dw Function1178d
+	dw Function117ae
+	dw Function117d1
+	dw Function117f5
+	dw Function1182c
+	dw Function1173e
+	dw Function1173e
+
+
+Function1173e: ; 1173e (4:573e)
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	ld hl, Function8e83f
+	ld a, BANK(Function8e83f)
+	ld e, $1
+	rst FarCall ;  ; indirect jump to Function8e83f (8e83f (23:683f))
+	ld a, [CurPartySpecies]
+	ld [wd265], a
+	call GetPokemonName
+	hlcoord 5, 2
+	call PlaceString
+	ld l, c
+	ld h, b
+	ld de, Strings_11780
+	call PlaceString
+	inc de
+	hlcoord 5, 4
+	call PlaceString
+	callba GetGender
+	jr c, .asm_1177c
+	ld a, $ef
+	jr nz, .asm_11778
+	ld a, $f5
+.asm_11778
+	hlcoord 1, 2
+	ld [hl], a
+.asm_1177c
+	call Function1187b
+	ret
+; 11780 (4:5780)
+
+Strings_11780: ; 11780
+	db "'S@"
+	db "NICKNAME?@"
+; 1178d
+
+Function1178d: ; 1178d (4:578d)
+	callba GetPlayerIcon
+	call Function11847
+	hlcoord 5, 2
+	ld de, String_117a3
+	call PlaceString
+	call Function11882
+	ret
+; 117a3 (4:57a3)
+
+String_117a3: ; 117a3
+	db "YOUR NAME?@"
+; 117ae
+
+Function117ae: ; 117ae (4:57ae)
+	ld de, SilverSpriteGFX
+	ld b, BANK(SilverSpriteGFX)
+	call Function11847
+	hlcoord 5, 2
+	ld de, String_117c3
+	call PlaceString
+	call Function11882
+	ret
+; 117c3 (4:57c3)
+
+String_117c3: ; 117c3
+	db "RIVAL'S NAME?@"
+; 117d1
+
+Function117d1: ; 117d1 (4:57d1)
+	ld de, MomSpriteGFX
+	ld b, BANK(MomSpriteGFX)
+	call Function11847
+	hlcoord 5, 2
+	ld de, String_117e6
+	call PlaceString
+	call Function11882
+	ret
+; 117e6 (4:57e6)
+
+String_117e6: ; 117e6
+	db "MOTHER'S NAME?@"
+; 117f5
+
+Function117f5: ; 117f5 (4:57f5)
+	ld de, PokeBallSpriteGFX
+	ld hl, VTiles0 tile $00
+	lb bc, BANK(PokeBallSpriteGFX), $4
+	call Request2bpp
+	xor a
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], a
+	ld de, $2420
+	ld a, $a
+	call Function3b2a
+	ld hl, $1
+	add hl, bc
+	ld [hl], $0
+	hlcoord 5, 2
+	ld de, String_11822
+	call PlaceString
+	call Function11889
+	ret
+; 11822 (4:5822)
+
+String_11822: ; 11822
+	db "BOX NAME?@"
+; 1182c
+
+Function1182c: ; 1182c (4:582c)
+	hlcoord 3, 2
+	ld de, String_11839
+	call PlaceString
+	call Function11882
+	ret
+; 11839 (4:5839)
+
+String_11839: ; 11839
+	db "おともだち の なまえは?@"
+; 11847
+
+Function11847: ; 11847 (4:5847)
+	push de
+	ld hl, VTiles0 tile $00
+	ld c, $4
+	push bc
+	call Request2bpp
+	pop bc
+	ld hl, $c0
+	add hl, de
+	ld e, l
+	ld d, h
+	ld hl, VTiles0 tile $04
+	call Request2bpp
+	xor a
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], a
+	pop de
+	ld b, $a
+	ld a, d
+	cp $7a
+	jr nz, .asm_11873
+	ld a, e
+	cp $40
+	jr nz, .asm_11873
+	ld b, $1e
+.asm_11873
+	ld a, b
+	ld de, $2420
+	call Function3b2a
+	ret
+
+Function1187b: ; 1187b (4:587b)
+	ld a, $a
+	hlcoord 5, 6
+	jr Function11890
+
+Function11882: ; 11882 (4:5882)
+	ld a, $7
+	hlcoord 5, 6
+	jr Function11890
+
+Function11889: ; 11889 (4:5889)
+	ld a, $8
+	hlcoord 5, 4
+	jr Function11890
+
+Function11890: ; 11890 (4:5890)
+	ld [wc6d3], a
+	ld a, l
+	ld [wc6d8], a
+	ld a, h
+	ld [wc6d9], a
+	ret
+
+
+Function1189c: ; 1189c
+	push bc
+	push af
+	ld a, [wc6d4]
+	sub $3
+	ld b, a
+	pop af
+	dec b
+	pop bc
+	ret
+; 118a8
+
+Function118a8: ; 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 Function1189c
+	jr nz, .asm_118c4
+	lb bc, 4, 18
+
+.asm_118c4
+	call ClearBox
+	ld de, NameInputUpper
+Function118ca: ; 118ca
+	call Function1189c
+	jr nz, .asm_118d5
+	ld hl, BoxNameInputLower - NameInputLower
+	add hl, de
+	ld d, h
+	ld e, l
+
+.asm_118d5
+	push de
+	hlcoord 1, 8
+	lb bc, 7, 18
+	call Function1189c
+	jr nz, .asm_118e7
+	hlcoord 1, 6
+	lb bc, 9, 18
+
+.asm_118e7
+	call ClearBox
+	hlcoord 1, 16
+	lb bc, 1, 18
+	call ClearBox
+	pop de
+	hlcoord 2, 8
+	ld b, $5
+	call Function1189c
+	jr nz, .asm_11903
+	hlcoord 2, 6
+	ld b, $6
+
+.asm_11903
+	ld c, $11
+.asm_11905
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .asm_11905
+	push de
+	ld de, $17
+	add hl, de
+	pop de
+	dec b
+	jr nz, .asm_11903
+	ret
+; 11915
+
+Function11915: ; 11915
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_11930
+	call Function11968
+	callba Function8cf62
+	call Function11940
+	call DelayFrame
+	and a
+	ret
+
+.asm_11930
+	callab Function8cf53
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+; 11940
+
+Function11940: ; 11940
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 1, 5
+	call Function1189c
+	jr nz, .asm_1194e
+	hlcoord 1, 3
+
+.asm_1194e
+	lb bc, 1, 18
+	call ClearBox
+	ld hl, wc6d0
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, wc6d8
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 11968
+
+Function11968: ; 11968
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, $0
+	ld hl, Jumptable_11977
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11977
+
+
+Jumptable_11977: ; 11977 (4:5977)
+	dw Function1197b
+	dw Function119a1
+
+
+Function1197b: ; 1197b (4:597b)
+	lb de, $50, $18
+	call Function1189c
+	jr nz, .asm_11985
+	ld d, $40
+.asm_11985
+	ld a, $2
+	call Function3b2a
+	ld a, c
+	ld [wc6d5], a
+	ld a, b
+	ld [wc6d6], a
+	ld hl, $1
+	add hl, bc
+	ld a, [hl]
+	ld hl, $e
+	add hl, bc
+	ld [hl], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Function119a1: ; 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 Function11a0b
+	cp $1
+	jr z, .select
+	cp $2
+	jr z, .b
+	cp $3
+	jr z, .asm_119eb
+	call Function11c11
+	call Function11b14
+	ret nc
+
+.start
+	ld hl, wc6d5
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, $c
+	add hl, bc
+	ld [hl], $8
+	ld hl, $d
+	add hl, bc
+	ld [hl], $4
+	call Function1189c
+	ret nz
+	inc [hl]
+	ret
+
+.b
+	call Function11bbc
+	ret
+
+.asm_119eb
+	call Function11bf7
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.select
+	ld hl, wcf64
+	ld a, [hl]
+	xor 1
+	ld [hl], a
+	jr z, .asm_11a04
+	ld de, NameInputLower
+	call Function118ca
+	ret
+
+.asm_11a04
+	ld de, NameInputUpper
+	call Function118ca
+	ret
+
+Function11a0b: ; 11a0b (4:5a0b)
+	ld hl, wc6d5
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+
+Function11a11: ; 11a11 (4:5a11)
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	push bc
+	ld b, $4
+	call Function1189c
+	jr nz, .asm_11a1f
+	inc b
+.asm_11a1f
+	cp b
+	pop bc
+	jr nz, .asm_11a39
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	cp $3
+	jr c, .asm_11a33
+	cp $6
+	jr c, .asm_11a36
+	ld a, $3
+	ret
+.asm_11a33
+	ld a, $1
+	ret
+.asm_11a36
+	ld a, $2
+	ret
+.asm_11a39
+	xor a
+	ret
+
+Function11a3b: ; 11a3b (4:5a3b)
+	call Function11a8b
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	swap e
+	ld hl, $7
+	add hl, bc
+	ld [hl], e
+	ld d, $4
+	call Function1189c
+	jr nz, .asm_11a53
+	inc d
+.asm_11a53
+	cp d
+	ld de, Unknown_11a79
+	ld a, $0
+	jr nz, .asm_11a60
+	ld de, Unknown_11a82
+	ld a, $1
+.asm_11a60
+	ld hl, $e
+	add hl, bc
+	add [hl]
+	ld hl, $1
+	add hl, bc
+	ld [hl], a
+	ld hl, $c
+	add hl, bc
+	ld l, [hl]
+	ld h, $0
+	add hl, de
+	ld a, [hl]
+	ld hl, $6
+	add hl, bc
+	ld [hl], a
+	ret
+; 11a79 (4:5a79)
+
+Unknown_11a79: ; 11a79
+	db $00, $10, $20, $30, $40, $50, $60, $70, $80
+Unknown_11a82: ; 11a82
+	db $00, $00, $00, $30, $30, $30, $60, $60, $60
+; 11a8b
+
+Function11a8b: ; 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 Function11a11
+	and a
+	jr nz, .asm_11ab7
+	ld hl, $c
+	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, $c
+	add hl, bc
+	ld [hl], a
+	ret
+.left
+	call Function11a11
+	and a
+	jr nz, .asm_11ad8
+	ld hl, $c
+	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
+rept 2
+	dec a
+endr
+	ld e, a
+	add a
+	add e
+	ld hl, $c
+	add hl, bc
+	ld [hl], a
+	ret
+.down
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	call Function1189c
+	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, $d
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_11b0c
+	dec [hl]
+	ret
+.asm_11b0c
+	ld [hl], $4
+	call Function1189c
+	ret nz
+	inc [hl]
+	ret
+
+Function11b14: ; 11b14 (4:5b14)
+	ld a, [wc6d7]
+
+Function11b17: ; 11b17 (4:5b17)
+	ld a, [wc6d3]
+	ld c, a
+	ld a, [wc6d2]
+	cp c
+	ret nc
+
+	ld a, [wc6d7]
+
+Function11b23: ; 11b23
+	call Function11bd0
+	ld [hl], a
+
+Function11b27: ; 11b27
+	ld hl, wc6d2
+	inc [hl]
+	call Function11bd0
+	ld a, [hl]
+	cp $50
+	jr z, .asm_11b37
+	ld [hl], $f2
+	and a
+	ret
+.asm_11b37
+	scf
+	ret
+; 11b39 (4:5b39)
+
+Function11b39: ; 11b39
+	ld a, [wc6d2]
+	and a
+	ret z
+	push hl
+	ld hl, wc6d2
+	dec [hl]
+	call Function11bd0
+	ld c, [hl]
+	pop hl
+
+.asm_11b48
+	ld a, [hli]
+	cp $ff
+	jr z, Function11b27
+	cp c
+	jr z, .asm_11b53
+	inc hl
+	jr .asm_11b48
+
+.asm_11b53
+	ld a, [hl]
+	jr Function11b23
+; 11b56
+
+Dakutens: ; Dummied out
+	db "かが", "きぎ", "くぐ", "けげ", "こご"
+	db "さざ", "しじ", "すず", "せぜ", "そぞ"
+	db "ただ", "ちぢ", "つづ", "てで", "とど"
+	db "はば", "ひび", "ふぶ", "へべ", "ほぼ"
+	db "カガ", "キギ", "クグ", "ケゲ", "コゴ"
+	db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
+	db "タダ", "チヂ", "ツヅ", "テデ", "トド"
+	db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
+	db $ff
+
+Handakutens: ; Dummied out
+	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
+	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
+	db $ff
+; 11bbc
+
+Function11bbc: ; 11bbc (4:5bbc)
+	ld hl, wc6d2
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	call Function11bd0
+	ld [hl], $f2
+	inc hl
+	ld a, [hl]
+	cp $f2
+	ret nz
+	ld [hl], $eb
+	ret
+
+Function11bd0: ; 11bd0 (4:5bd0)
+	push af
+	ld hl, wc6d0
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wc6d2]
+	ld e, a
+	ld d, 0
+	add hl, de
+	pop af
+	ret
+; 11be0
+
+Function11be0: ; 11be0
+; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0
+	ld hl, wc6d0
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld [hl], "·"
+	inc hl
+	ld a, [wc6d3]
+	dec a
+	ld c, a
+	ld a, "→"
+.loop
+	ld [hli], a
+	dec c
+	jr nz, .loop
+	ld [hl], "@"
+	ret
+; 11bf7
+
+
+Function11bf7: ; 11bf7 (4:5bf7)
+	ld hl, wc6d0
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wc6d3]
+	ld c, a
+.asm_11c01
+	ld a, [hl]
+	cp $eb
+	jr z, .asm_11c0a
+	cp $f2
+	jr nz, .asm_11c0c
+.asm_11c0a
+	ld [hl], $50
+.asm_11c0c
+	inc hl
+	dec c
+	jr nz, .asm_11c01
+	ret
+
+Function11c11: ; 11c11 (4:5c11)
+	ld hl, wc6d5
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+	ld hl, $4
+	add hl, bc
+	add [hl]
+	sub $8
+	srl a
+	srl a
+	srl a
+	ld e, a
+	ld hl, $7
+	add hl, bc
+	ld a, [hl]
+	ld hl, $5
+	add hl, bc
+	add [hl]
+	sub $10
+	srl a
+	srl a
+	srl a
+	ld d, a
+	hlcoord 0, 0
+	ld bc, $14
+.asm_11c43
+	ld a, d
+	and a
+	jr z, .asm_11c4b
+	add hl, bc
+	dec d
+	jr .asm_11c43
+.asm_11c4b
+	add hl, de
+	ld a, [hl]
+	ld [wc6d7], a
+	ret
+
+
+Function11c51: ; 11c51
+	call ClearSprites
+	callab Function8cf53
+	call LoadStandardFont
+	call LoadFontsExtra
+
+	ld de, GFX_11e65
+	ld hl, VTiles1 tile $6b
+	lb bc, BANK(GFX_11e65), 1
+	call Get1bpp
+
+	ld de, GFX_11e6d
+	ld hl, VTiles1 tile $72
+	lb bc, BANK(GFX_11e6d), 1
+	call Get1bpp
+
+	ld de, VTiles2 tile $60
+	ld hl, GFX_11cb7
+	ld bc, $10
+	ld a, BANK(GFX_11cb7)
+	call FarCopyBytes
+
+	ld de, VTiles0 tile $7e
+	ld hl, GFX_11cc7
+	ld bc, $20
+	ld a, BANK(GFX_11cc7)
+	call FarCopyBytes
+
+	ld a, $5
+	ld hl, wc312
+	ld [hli], a
+	ld [hl], $7e
+	xor a
+	ld [hSCY], a
+	ld [wc3bf], a
+	ld [hSCX], a
+	ld [wc3c0], a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [hBGMapMode], a
+	ld [wc6d2], a
+	ld a, $7
+	ld [hWX], a
+	ret
+; 11cb7
+
+GFX_11cb7: ; 11cb7
+INCBIN "gfx/unknown/011cb7.2bpp"
+; 11cc7
+
+GFX_11cc7: ; 11cc7
+INCBIN "gfx/unknown/011cc7.2bpp"
+; 11ce7
+
+NameInputLower:
+	db "a b c d e f g h i"
+	db "j k l m n o p q r"
+	db "s t u v w x y z  "
+	db "× ( ) : ; [ ] <PK> <MN>"
+	db "UPPER  DEL   END "
+BoxNameInputLower:
+	db "a b c d e f g h i"
+	db "j k l m n o p q r"
+	db "s t u v w x y z  "
+	db "é 'd 'l 'm 'r 's 't 'v 0"
+	db "1 2 3 4 5 6 7 8 9"
+	db "UPPER  DEL   END "
+NameInputUpper: ; Unreferenced?
+	db "A B C D E F G H I"
+	db "J K L M N O P Q R"
+	db "S T U V W X Y Z  "
+	db "- ? ! / . ,      "
+	db "lower  DEL   END "
+BoxNameInputUpper:
+	db "A B C D E F G H I"
+	db "J K L M N O P Q R"
+	db "S T U V W X Y Z  "
+	db "× ( ) : ; [ ] <PK> <MN>"
+	db "- ? ! ♂ ♀ / . , &"
+	db "lower  DEL   END "
+; 11e5d
+
+GFX_11e5d: ; ????
+INCBIN "gfx/unknown/011e5d.2bpp"
+; 11e6d
+
+GFX_11e65:
+INCBIN "gfx/unknown/011e65.2bpp"
+; 11e6d
+
+GFX_11e6d: ; 11e6d
+INCBIN "gfx/unknown/011e6d.2bpp"
+; 11e75
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -44,7 +44,7 @@
 
 Function10046: ; 10046 (4:4046)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function10955
 	ld a, [wcf64]
 	ld [wJumptableIndex], a
@@ -67,10 +67,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0df]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0df], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wItemsPocketCursor], a
 	ld b, $7
 	ld c, $3
@@ -95,10 +95,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0e0]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0e0], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wKeyItemsPocketCursor], a
 	ld b, $3
 	ld c, $7
@@ -113,7 +113,7 @@
 	call ClearPocketList
 	call DrawPocketName
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call WaitBGMap_DrawPackGFX
 	call Function10866
 	ret
@@ -141,7 +141,7 @@
 	call ExitMenu
 	pop hl
 	ret c
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call Function1086b
 	jp [hl]
@@ -203,7 +203,7 @@
 	ld [Options], a
 .asm_10179
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function10955
 	call WaitBGMap_DrawPackGFX
 	call Function10a40
@@ -225,10 +225,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0e1]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0e1], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wBallsPocketCursor], a
 	ld b, $1
 	ld c, $5
@@ -301,7 +301,7 @@
 	call ExitMenu
 	pop hl
 	ret c
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call Function1086b
 	jp [hl]
@@ -478,7 +478,7 @@
 	jr z, .NoPokemon
 	call DoItemEffect
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function10955
 	call WaitBGMap_DrawPackGFX
 	call Function10a40
@@ -594,7 +594,7 @@
 	ld [Options], a
 	ld a, $8
 	ld [PartyMenuActionText], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	callba Function5004f
 	callba Function50405
 	callba Function503e0
@@ -634,7 +634,7 @@
 	pop af
 	ld [Options], a
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function10955
 	call WaitBGMap_DrawPackGFX
 	call Function10a40
@@ -702,7 +702,7 @@
 
 Function104d9: ; 104d9 (4:44d9)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function10955
 	ld a, [wcf64]
 	ld [wJumptableIndex], a
@@ -725,10 +725,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0df]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0df], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wItemsPocketCursor], a
 	ld b, $7
 	ld c, $3
@@ -753,10 +753,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0e0]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0e0], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wKeyItemsPocketCursor], a
 	ld b, $3
 	ld c, $7
@@ -771,7 +771,7 @@
 	call ClearPocketList
 	call DrawPocketName
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call WaitBGMap_DrawPackGFX
 	ld hl, UnknownText_0x10b0c
 	call Function10889
@@ -804,10 +804,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0e1]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0e1], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wBallsPocketCursor], a
 	ld b, $1
 	ld c, $5
@@ -836,7 +836,7 @@
 	call ExitMenu
 	pop hl
 	ret c
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call Function1086b
 	jp [hl]
@@ -915,7 +915,7 @@
 	and a
 	jr nz, .asm_1067e
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function10955
 	call WaitBGMap_DrawPackGFX
 	call Function10a40
@@ -922,7 +922,7 @@
 	ret
 
 .asm_1066c: ; 1066c (4:466c)
-	call WhiteBGMap
+	call ClearBGPalettes
 	jr .asm_1067e
 
 .BattleOnly: ; 10671 (4:4671)
@@ -1010,10 +1010,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0df]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0df], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wItemsPocketCursor], a
 	ret
 
@@ -1026,10 +1026,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0e0]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0e0], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wKeyItemsPocketCursor], a
 	ret
 
@@ -1051,10 +1051,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0e1]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0e1], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wBallsPocketCursor], a
 	ret
 
@@ -1170,9 +1170,9 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, OTPartyMons
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10807
 
 Function10807: ; 10807 (4:4807)
@@ -1194,9 +1194,9 @@
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, OTPartyMon1Exp + 2
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10826
 
 Function10826: ; 10826 (4:4826)
@@ -1227,9 +1227,9 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, OTPartyMon1CaughtGender
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 1085a
 
 Function1085a: ; 1085a (4:485a)
@@ -1237,7 +1237,7 @@
 	call InitPocket
 	pop hl
 	call CopyMenuDataHeader
-	call Function350c
+	call HandleScrollingMenu
 	ret
 
 Function10866: ; 10866 (4:4866)
@@ -1401,17 +1401,17 @@
 
 
 Function10955: ; 10955
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
 	ld hl, PackMenuGFX
 	ld de, VTiles2
-	ld bc, $0600
+	ld bc, $60 tiles
 	ld a, BANK(PackMenuGFX)
 	call FarCopyBytes
 	hlcoord 0, 1
-	ld bc, 220
+	ld bc, 11 * SCREEN_WIDTH
 	ld a, $24
 	call ByteFill
 	hlcoord 5, 1
@@ -1419,12 +1419,12 @@
 	call ClearBox
 	hlcoord 0, 0
 	ld a, $28
-	ld c, $14
-.asm_1098a
+	ld c, SCREEN_WIDTH
+.loop
 	ld [hli], a
 	inc a
 	dec c
-	jr nz, .asm_1098a
+	jr nz, .loop
 	call DrawPocketName
 	call Function109a5
 	hlcoord 0, 12
@@ -1538,9 +1538,9 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumItems
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10a67
 
 MenuDataHeader_0x10a67: ; 0x10a67
@@ -1556,9 +1556,9 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumItems
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10a7f
 
 MenuDataHeader_0x10a7f: ; 0x10a7f
@@ -1574,9 +1574,9 @@
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, NumKeyItems
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10a97
 
 MenuDataHeader_0x10a97: ; 0x10a97
@@ -1592,9 +1592,9 @@
 	db 5, 8 ; rows, columns
 	db 1 ; horizontal spacing
 	dbw 0, NumKeyItems
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10aaf
 
 MenuDataHeader_0x10aaf: ; 0x10aaf
@@ -1610,9 +1610,9 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumBalls
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10ac7
 
 MenuDataHeader_0x10ac7: ; 0x10ac7
@@ -1628,9 +1628,9 @@
 	db 5, 8 ; rows, columns
 	db 2 ; horizontal spacing
 	dbw 0, NumBalls
-	dbw BANK(PlaceMenuItemName), PlaceMenuItemName
-	dbw BANK(PlaceMenuItemQuantity), PlaceMenuItemQuantity
-	dbw BANK(Function244c3), Function244c3
+	dba PlaceMenuItemName
+	dba PlaceMenuItemQuantity
+	dba Function244c3
 ; 10adf
 
 UnknownText_0x10adf: ; 0x10adf
--- /dev/null
+++ b/engine/party_menu.asm
@@ -1,0 +1,944 @@
+SelectMonFromParty: ; 50000
+	call DisableSpriteUpdates
+	xor a
+	ld [PartyMenuActionText], a
+	call ClearBGPalettes
+	call Function5003f
+	call WaitBGMap
+	call SetPalettes
+	call DelayFrame
+	call PartyMenuSelect
+	call Function2b74
+	ret
+; 5001d
+
+
+Function5001d: ; 5001d
+	ld a, b
+	ld [PartyMenuActionText], a
+	call DisableSpriteUpdates
+	call ClearBGPalettes
+	call Function5003f
+	call WaitBGMap
+	ld b, $a
+	call GetSGBLayout
+	call SetPalettes
+	call DelayFrame
+	call PartyMenuSelect
+	call Function2b74
+	ret
+; 5003f
+
+Function5003f: ; 5003f
+	call Function5004f
+	call Function50405
+	call Function503e0
+	call WritePartyMenuTilemap
+	call PrintPartyMenuText
+	ret
+; 5004f
+
+Function5004f: ; 5004f
+	call LoadFontsBattleExtra
+	callab Function8ad1 ; engine/color.asm
+	callab InefficientlyClear121BytesAtwc300
+	ret
+; 5005f
+
+
+WritePartyMenuTilemap: ; 0x5005f
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl] ; Disable text delay
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	ld a, " "
+	call ByteFill ; blank the tilemap
+	call GetPartyMenuTilemapPointers ; This reads from a pointer table???
+.loop
+	ld a, [hli]
+	cp $ff
+	jr z, .end ; 0x5007a $8
+	push hl
+	ld hl, .Jumptable
+	rst JumpTable
+	pop hl
+	jr .loop ; 0x50082 $f3
+.end
+	pop af
+	ld [Options], a
+	ret
+; 0x50089
+
+.Jumptable: ; 50089
+	dw PlacePartyNicknames
+	dw PlacePartyHPBar
+	dw PlacePartyMenuHPDigits
+	dw PlacePartyMonLevel
+	dw PlacePartyMonStatus
+	dw PlacePartyMonTMHMCompatibility
+	dw PlacePartyMonEvoStoneCompatibility
+	dw PlacePartyMonGender
+	dw PlacePartyMonMobileBattleSelection
+; 5009b
+
+PlacePartyNicknames: ; 5009b
+	hlcoord 3, 1
+	ld a, [PartyCount]
+	and a
+	jr z, .end
+	ld c, a
+	ld b, $0
+.loop
+	push bc
+	push hl
+	push hl
+	ld hl, PartyMonNicknames
+	ld a, b
+	call GetNick
+	pop hl
+	call PlaceString
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+
+.end
+rept 2
+	dec hl
+endr
+	ld de, .CANCEL
+	call PlaceString
+	ret
+; 500c8
+
+.CANCEL: ; 500c8
+	db "CANCEL@"
+; 500cf
+
+
+PlacePartyHPBar: ; 500cf
+	xor a
+	ld [wcda9], a
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	hlcoord 11, 2
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .skip
+	push hl
+	call PlacePartymonHPBar
+	pop hl
+	ld d, $6
+	ld b, $0
+	call DrawBattleHPBar
+	ld hl, wcd9b
+	ld a, [wcda9]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	call SetHPPal
+	ld b, $fc
+	call GetSGBLayout
+
+.skip
+	ld hl, wcda9
+	inc [hl]
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ld b, $a
+	call GetSGBLayout
+	ret
+; 50117
+
+PlacePartymonHPBar: ; 50117
+	ld a, b
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1HP
+	call AddNTimes
+	ld a, [hli]
+	or [hl]
+	jr nz, .not_fainted
+	xor a
+	ld e, a
+	ld c, a
+	ret
+
+.not_fainted
+	dec hl
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld e, a
+	predef DrawPartyMenuHPBar
+	ret
+; 50138
+
+PlacePartyMenuHPDigits: ; 50138
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, $0
+	hlcoord 13, 1
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .next
+	push hl
+	ld a, b
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1HP
+	call AddNTimes
+	ld e, l
+	ld d, h
+	pop hl
+	push de
+	lb bc, 2, 3
+	call PrintNum
+	pop de
+	ld a, "/"
+	ld [hli], a
+rept 2
+	inc de
+endr
+	lb bc, 2, 3
+	call PrintNum
+
+.next
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 50176
+
+PlacePartyMonLevel: ; 50176
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, 0
+	hlcoord 8, 2
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .next
+	push hl
+	ld a, b
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1Level
+	call AddNTimes
+	ld e, l
+	ld d, h
+	pop hl
+	ld a, [de]
+	cp 100 ; This is distinct from MAX_LEVEL.
+	jr nc, .ThreeDigits
+	ld a, "<LV>"
+	ld [hli], a
+	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
+	; jr .okay
+.ThreeDigits
+	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
+; .okay
+	call PrintNum
+
+.next
+	pop hl
+	ld de, SCREEN_WIDTH * 2
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 501b2
+
+PlacePartyMonStatus: ; 501b2
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, 0
+	hlcoord 5, 2
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .next
+	push hl
+	ld a, b
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1Status
+	call AddNTimes
+	ld e, l
+	ld d, h
+	pop hl
+	call PlaceStatusString
+
+.next
+	pop hl
+	ld de, SCREEN_WIDTH * 2
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 501e0
+
+PlacePartyMonTMHMCompatibility: ; 501e0
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, 0
+	hlcoord 12, 2
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .next
+	push hl
+	ld hl, PartySpecies
+	ld e, b
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+	ld [CurPartySpecies], a
+	predef CanLearnTMHMMove
+	pop hl
+	call .PlaceAbleNotAble
+	call PlaceString
+
+.next
+	pop hl
+	ld de, SCREEN_WIDTH * 2
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 50215
+
+.PlaceAbleNotAble: ; 50215
+	ld a, c
+	and a
+	jr nz, .able
+	ld de, .string_not_able
+	ret
+
+.able
+	ld de, .string_able
+	ret
+; 50221
+
+.string_able: ; 50221
+	db "ABLE@"
+; 50226
+
+.string_not_able: ; 50226
+	db "NOT ABLE@"
+; 5022f
+
+
+PlacePartyMonEvoStoneCompatibility: ; 5022f
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, 0
+	hlcoord 12, 2
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .next
+	push hl
+	ld a, b
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld hl, PartyMon1Species
+	call AddNTimes
+	ld a, [hl]
+	dec a
+	ld e, a
+	ld d, 0
+	ld hl, EvosAttacksPointers
+rept 2
+	add hl, de
+endr
+	call .DetermineCompatibility
+	pop hl
+	call PlaceString
+
+.next
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 50268
+
+.DetermineCompatibility: ; 50268
+	ld de, StringBuffer1
+	ld a, BANK(EvosAttacksPointers)
+	ld bc, 2
+	call FarCopyBytes
+	ld hl, StringBuffer1
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, StringBuffer1
+	ld a, BANK(EvosAttacks)
+	ld bc, $a
+	call FarCopyBytes
+	ld hl, StringBuffer1
+.loop2
+	ld a, [hli]
+	and a
+	jr z, .nope
+rept 2
+	inc hl
+endr
+	cp EVOLVE_ITEM
+	jr nz, .loop2
+rept 2
+	dec hl
+endr
+	ld a, [CurItem]
+	cp [hl]
+rept 2
+	inc hl
+endr
+	jr nz, .loop2
+	ld de, .string_able
+	ret
+
+.nope
+	ld de, .string_not_able
+	ret
+; 502a3
+
+.string_able: ; 502a3
+	db "ABLE@"
+; 502a8
+.string_not_able: ; 502a8
+	db "NOT ABLE@"
+; 502b1
+
+
+PlacePartyMonGender: ; 502b1
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, 0
+	hlcoord 12, 2
+.loop
+	push bc
+	push hl
+	call PartyMenuCheckEgg
+	jr z, .next
+	ld [CurPartySpecies], a
+	push hl
+	ld a, b
+	ld [CurPartyMon], a
+	xor a
+	ld [MonType], a
+	call GetGender
+	ld de, .unknown
+	jr c, .got_gender
+	ld de, .male
+	jr nz, .got_gender
+	ld de, .female
+
+.got_gender
+	pop hl
+	call PlaceString
+
+.next
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ret
+; 502ee
+
+.male: ; 502ee
+	db "♂…MALE@"
+; 502f5
+
+.female: ; 502f5
+	db "♀…FEMALE@"
+; 502fe
+
+.unknown: ; 502fe
+	db "…UNKNOWN@"
+; 50307
+
+
+PlacePartyMonMobileBattleSelection: ; 50307
+	ld a, [PartyCount]
+	and a
+	ret z
+	ld c, a
+	ld b, 0
+	hlcoord 12, 1
+.loop
+	push bc
+	push hl
+	ld de, .String_Sanka_Shinai
+	call PlaceString
+	pop hl
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	pop bc
+	inc b
+	dec c
+	jr nz, .loop
+	ld a, l
+	ld e, PKMN_NAME_LENGTH
+	sub e
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+	ld de, .String_Kettei_Yameru
+	call PlaceString
+	ld b, $3
+	ld c, $0
+	ld hl, wd002
+	ld a, [hl]
+.loop2
+	push hl
+	push bc
+	hlcoord 12, 1
+.loop3
+	and a
+	jr z, .done
+	ld de, 2 * SCREEN_WIDTH
+	add hl, de
+	dec a
+	jr .loop3
+
+.done
+	ld de, .String_Banme
+	push hl
+	call PlaceString
+	pop hl
+	pop bc
+	push bc
+	push hl
+	ld a, c
+	ld hl, .Strings_1_2_3
+	call GetNthString
+	ld d, h
+	ld e, l
+	pop hl
+	call PlaceString
+	pop bc
+	pop hl
+	inc hl
+	ld a, [hl]
+	inc c
+	dec b
+	ret z
+	jr .loop2
+; 5036b
+
+.String_Banme: ; 5036b
+	db " ばんめ  @" ; Place
+; 50372
+.String_Sanka_Shinai: ; 50372
+	db "さんかしない@" ; Cancel
+; 50379
+.String_Kettei_Yameru: ; 50379
+	db "けってい  やめる@" ; Quit
+; 50383
+.Strings_1_2_3: ; 50383
+	db "1@", "2@", "3@" ; 1st, 2nd, 3rd
+; 50389
+
+
+PartyMenuCheckEgg: ; 50389
+	ld a, PartySpecies % $100
+	add b
+	ld e, a
+	ld a, PartySpecies / $100
+	adc 0
+	ld d, a
+	ld a, [de]
+	cp EGG
+	ret
+; 50396
+
+GetPartyMenuTilemapPointers: ; 50396
+	ld a, [PartyMenuActionText]
+	and $f0
+	jr nz, .skip
+	ld a, [PartyMenuActionText]
+	and $f
+	ld e, a
+	ld d, 0
+	ld hl, .Pointers
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+
+.skip
+	ld hl, .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
+
+.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
+
+
+Function503e0: ; 503e0
+	ld hl, PartyCount
+	ld a, [hli]
+	and a
+	ret z
+	ld c, a
+	xor a
+	ld [hObjectStructIndexBuffer], a
+.asm_503ea
+	push bc
+	push hl
+	ld hl, Function8e83f
+	ld a, BANK(Function8e83f)
+	ld e, $0
+	rst FarCall
+	ld a, [hObjectStructIndexBuffer]
+	inc a
+	ld [hObjectStructIndexBuffer], a
+	pop hl
+	pop bc
+	dec c
+	jr nz, .asm_503ea
+	callab Function8cf69
+	ret
+; 50405
+
+Function50405: ; 50405
+	xor a
+	ld [wd0e3], a
+	ld de, Unknown_5044f
+	call Function1bb1
+	ld a, [PartyCount]
+	inc a
+	ld [wcfa3], a
+	dec a
+	ld b, a
+	ld a, [wd0d8]
+	and a
+	jr z, .asm_50422
+	inc b
+	cp b
+	jr c, .asm_50424
+
+.asm_50422
+	ld a, $1
+
+.asm_50424
+	ld [MenuSelection2], a
+	ld a, $3
+	ld [wcfa8], a
+	ret
+; 5042d
+
+Function5042d: ; 0x5042d
+	ld de, Unknown_5044f
+	call Function1bb1
+	ld a, [PartyCount]
+	ld [wcfa3], a
+	ld b, a
+	ld a, [wd0d8]
+	and a
+	jr z, .asm_50444
+	inc b
+	cp b
+	jr c, .asm_50446
+.asm_50444
+	ld a, $1
+.asm_50446
+	ld [MenuSelection2], a
+	ld a, $3
+	ld [wcfa8], a
+	ret
+; 5044f (14:444f)
+
+Unknown_5044f: ; 5044f
+; cursor y
+; cursor x
+; list length
+; ?
+; bit 6: animate sprites  bit 5: wrap around
+; ?
+; distance between items (hi: y, lo: x)
+; allowed buttons (mask)
+	db $01, $00, $00, $01, $60, $00, $20, $00
+; 50457
+
+PartyMenuSelect: ; 0x50457
+; sets carry if exitted menu.
+	call Function1bc9
+	call Function1bee
+	ld a, [PartyCount]
+	inc a
+	ld b, a
+	ld a, [MenuSelection2] ; menu selection?
+	cp b
+	jr z, .exitmenu ; CANCEL
+	ld [wd0d8], a
+	ld a, [hJoyLast]
+	ld b, a
+	bit 1, b
+	jr nz, .exitmenu ; B button?
+	ld a, [MenuSelection2]
+	dec a
+	ld [CurPartyMon], a
+	ld c, a
+	ld b, $0
+	ld hl, PartySpecies
+	add hl, bc
+	ld a, [hl]
+	ld [CurPartySpecies], a
+
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	call WaitSFX
+	and a
+	ret
+
+.exitmenu
+	ld de, SFX_READ_TEXT_2
+	call PlaySFX
+	call WaitSFX
+	scf
+	ret
+; 0x5049a
+
+
+PrintPartyMenuText: ; 5049a
+	hlcoord 0, 14
+	lb bc, 2, 18
+	call TextBox
+	ld a, [PartyCount]
+	and a
+	jr nz, .haspokemon
+	ld de, YouHaveNoPKMNString
+	jr .gotstring
+.haspokemon ; 504ae
+	ld a, [PartyMenuActionText]
+	and $f ; drop high nibble
+	ld hl, PartyMenuStrings
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+.gotstring ; 504be
+	ld a, [Options]
+	push af
+	set 4, a ; disable text delay
+	ld [Options], a
+	hlcoord 1, 16 ; Coord
+	call PlaceString
+	pop af
+	ld [Options], a
+	ret
+; 0x504d2
+
+PartyMenuStrings: ; 0x504d2
+	dw ChooseAMonString
+	dw UseOnWhichPKMNString
+	dw WhichPKMNString
+	dw TeachWhichPKMNString
+	dw MoveToWhereString
+	dw UseOnWhichPKMNString
+	dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString
+	dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString
+	dw ToWhichPKMNString
+
+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
+	db "Choose a ♀<PK><MN>.@"
+ChooseAMalePKMNString: ; 0x5053b    ; UNUSED
+	db "Choose a ♂<PK><MN>.@"
+ToWhichPKMNString: ; 0x50549
+	db "To which <PK><MN>?@"
+
+YouHaveNoPKMNString: ; 0x50556
+	db "You have no <PK><MN>!@"
+
+
+Function50566: ; 50566
+	ld a, [CurPartyMon]
+	ld hl, PartyMonNicknames
+	call GetNick
+	ld a, [PartyMenuActionText]
+	and $f
+	ld hl, Unknown_5057b
+	call Function505c1
+	ret
+; 5057b
+
+Unknown_5057b: ; 5057b
+	dw UnknownText_0x50594
+	dw UnknownText_0x5059e
+	dw UnknownText_0x505a3
+	dw UnknownText_0x505a8
+	dw UnknownText_0x50599
+	dw UnknownText_0x5058f
+	dw UnknownText_0x505ad
+	dw UnknownText_0x505b2
+	dw UnknownText_0x505b7
+	dw UnknownText_0x505bc
+; 5058f
+
+UnknownText_0x5058f: ; 0x5058f
+	; recovered @ HP!
+	text_jump UnknownText_0x1bc0a2
+	db "@"
+; 0x50594
+
+UnknownText_0x50594: ; 0x50594
+	; 's cured of poison.
+	text_jump UnknownText_0x1bc0bb
+	db "@"
+; 0x50599
+
+UnknownText_0x50599: ; 0x50599
+	; 's rid of paralysis.
+	text_jump UnknownText_0x1bc0d2
+	db "@"
+; 0x5059e
+
+UnknownText_0x5059e: ; 0x5059e
+	; 's burn was healed.
+	text_jump UnknownText_0x1bc0ea
+	db "@"
+; 0x505a3
+
+UnknownText_0x505a3: ; 0x505a3
+	; was defrosted.
+	text_jump UnknownText_0x1bc101
+	db "@"
+; 0x505a8
+
+UnknownText_0x505a8: ; 0x505a8
+	; woke up.
+	text_jump UnknownText_0x1bc115
+	db "@"
+; 0x505ad
+
+UnknownText_0x505ad: ; 0x505ad
+	; 's health returned.
+	text_jump UnknownText_0x1bc123
+	db "@"
+; 0x505b2
+
+UnknownText_0x505b2: ; 0x505b2
+	; is revitalized.
+	text_jump UnknownText_0x1bc13a
+	db "@"
+; 0x505b7
+
+UnknownText_0x505b7: ; 0x505b7
+	; grew to level @ !@ @
+	text_jump UnknownText_0x1bc14f
+	db "@"
+; 0x505bc
+
+UnknownText_0x505bc: ; 0x505bc
+	; came to its senses.
+	text_jump UnknownText_0x1bc16e
+	db "@"
+; 0x505c1
+
+
+Function505c1: ; 505c1
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [Options]
+	push af
+	set 4, a
+	ld [Options], a
+	call PrintText
+	pop af
+	ld [Options], a
+	ret
+; 505da
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -182,7 +182,7 @@
 ; Sample a random number between 0 and 31.
 	ld c, a
 	call Random
-	ld a, [hRandomAdd] ; $ff00+$e1
+	ld a, [hRandomAdd]
 	swap a
 	and $1f
 ; Compute that number modulo the number of available callers.
--- a/engine/phone_scripts.asm
+++ b/engine/phone_scripts.asm
@@ -3154,38 +3154,3 @@
 String_be65b: db "Sister@"
 String_be662: db "Brother@"
 
-
-TalkToTrainerScript:: ; 0xbe66a
-	faceplayer
-	trainerstatus $2
-	iftrue AlreadyBeatenTrainerScript
-	loadtrainerdata
-	playrammusic
-	jump StartBattleWithMapTrainerScript
-; 0xbe675
-
-SeenByTrainerScript:: ; 0xbe675
-	loadtrainerdata
-	playrammusic
-	showemote EMOTE_SHOCK, LAST_TALKED, 30
-	callasm Function831e
-	applymovement2 MovementBuffer
-	writepersonxy LAST_TALKED
-	faceperson PLAYER, LAST_TALKED
-	jump StartBattleWithMapTrainerScript
-; 0xbe68a
-
-StartBattleWithMapTrainerScript: ; 0xbe68a
-	loadfont
-	trainertext $0
-	closetext
-	loadmovesprites
-	loadtrainerdata
-	startbattle
-	returnafterbattle
-	trainerstatus 1
-	loadvar wd04d, -1
-
-AlreadyBeatenTrainerScript:
-	scripttalkafter
-; 0xbe699
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -22,7 +22,7 @@
 	ld [hInMenu], a
 
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call InitPokedex
 	call DelayFrame
 
@@ -60,7 +60,7 @@
 ; 40063
 
 InitPokedex: ; 40063
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call Function414b7
@@ -209,7 +209,7 @@
 
 Function4013c: ; 4013c (10:413c)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call ClearSprites
 	xor a
 	hlcoord 0, 0, AttrMap
@@ -226,7 +226,7 @@
 	call Function41af7
 	call Function4074c
 	ld a, $5
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, [wc7d4]
 	cp $1
 	ld a, $4a
@@ -234,9 +234,9 @@
 	ld a, $47
 
 .asm_4017b
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	xor a
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	call WaitBGMap
 	call Function41af7
 	ld a, $ff
@@ -272,7 +272,7 @@
 	ret nc
 	call Function41148
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function40b0f
 	call Function41ad7
 	call Function41af7
@@ -293,9 +293,9 @@
 	ld a, $7
 	ld [wJumptableIndex], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, $a7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	call DelayFrame
 	ret
 
@@ -304,9 +304,9 @@
 	ld a, $5
 	ld [wJumptableIndex], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, $a7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	call DelayFrame
 	ret
 
@@ -320,7 +320,7 @@
 	xor a
 	ld [wPokedexStatus], a
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call ClearSprites
 	call Function41478
 	call Function407fd
@@ -331,7 +331,7 @@
 	call Function40ba0
 	call WaitBGMap
 	ld a, $a7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	call Function40bb1
 	ld [CurPartySpecies], a
 	ld a, $4
@@ -392,7 +392,7 @@
 	xor a
 	ld [wPokedexStatus], a
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function407fd
 	call Function4134f
 	call Function41478
@@ -487,7 +487,7 @@
 	ld [wcf64], a
 	pop af
 	ld [wcf65], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call Function414fb
 	call Function4038d
@@ -509,7 +509,7 @@
 
 Function4039d: ; 4039d (10:439d)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call ClearSprites
 	call Function4087c
 	call Function4134f
@@ -615,7 +615,7 @@
 
 Function40443: ; 40443 (10:4443)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call ClearSprites
 	call Function408f0
 	call Function4134f
@@ -723,7 +723,7 @@
 
 Function4050a: ; 4050a (10:450a)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	xor a
 	hlcoord 0, 0, AttrMap
 	ld bc, $168
@@ -739,11 +739,11 @@
 	call Function41af7
 	call Function40962
 	ld a, $5
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, $4a
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	xor a
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	call WaitBGMap
 	call Function41af7
 	callba Function1de1d1
@@ -768,7 +768,7 @@
 	ret nc
 	call Function41281
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function40b0f
 	call Function41ad7
 	call Function41af7
@@ -797,9 +797,9 @@
 	ld a, $5
 	ld [wJumptableIndex], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, $a7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ret
 
 Function405bd: ; 405bd (10:45bd)
@@ -838,7 +838,7 @@
 	ld hl, PokedexLZ
 	ld de, VTiles2 tile $31
 	lb bc, BANK(PokedexLZ), $3a
-	call Functione73
+	call DecompressRequest2bpp
 
 .asm_4060f
 	ret
@@ -876,7 +876,7 @@
 .asm_40635
 	push af
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	pop af
 	call Function40654
 	call Function41a58
@@ -883,7 +883,7 @@
 	call Function40658
 	callba Functionfba2e
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call DelayFrame
 	call DelayFrame
 	ret
@@ -1773,7 +1773,7 @@
 
 Function40f08: ; 40f08 (10:4f08)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	hlcoord 0, 12
 	ld bc, $412
 	call Function40ad5
@@ -1781,7 +1781,7 @@
 	hlcoord 1, 14
 	call PlaceString
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld c, $40
 	call DelayFrames
 	ld de, SFX_CHANGE_DEX_MODE
@@ -1861,7 +1861,7 @@
 
 Function40fa8: ; 40fa8 (10:4fa8)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	hlcoord 9, 3
 	ld bc, $408
 	ld a, $7f
@@ -1873,7 +1873,7 @@
 	hlcoord 9, 6
 	call Function40fcd
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Function40fcd: ; 40fcd (10:4fcd)
@@ -2363,16 +2363,16 @@
 	jp FillBoxWithByte
 
 Function41401: ; 41401 (10:5401)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Unkn1Pals
+	ld [rSVBK], a
+	ld hl, wMapPals
 	ld bc, $40
 	xor a
 	call ByteFill
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 
 Function41415: ; 41415
 	ld a, $ff
@@ -2487,7 +2487,7 @@
 	xor a
 	call ByteFill
 	call Function414fb
-	call Functione5f
+	call LoadFontsExtra
 	ld hl, VTiles2 tile $60
 	ld bc, $0200
 	call Function41504
@@ -2511,7 +2511,7 @@
 	ret
 
 Function414fb: ; 414fb
-	call Functione51
+	call LoadStandardFont
 	ld hl, VTiles1
 	ld bc, $0800
 
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -34,7 +34,7 @@
 	add_predef Predef1
 	add_predef HealParty
 	add_predef FlagPredef
-	add_predef Functionc699
+	add_predef DrawPartyMenuHPBar
 	add_predef FillPP
 	add_predef TryAddMonToParty
 	add_predef Functionda96
@@ -41,9 +41,9 @@
 	add_predef SentGetPkmnIntoFromBox
 	add_predef SentPkmnIntoBox
 	add_predef GiveEgg
-	add_predef Functionc6e0
+	add_predef AnimateHPBar
 	add_predef CalcPkmnStats
-	add_predef Functione17b
+	add_predef CalcPkmnStatC
 	add_predef CanLearnTMHMMove
 	add_predef GetTMHMMove
 	add_predef Function28eef ; $ 10
@@ -54,8 +54,8 @@
 	add_predef UpdateEnemyHUD
 	add_predef StartBattle
 	add_predef FillInExpBar
-	add_predef Function3f43d ; $18
-	add_predef Function3f47c
+	add_predef GetMonBackpic ; $18
+	add_predef GetMonFrontpic
 	add_predef LearnLevelMoves
 	add_predef FillMoves
 	add_predef Function421e6
@@ -63,7 +63,7 @@
 	add_predef Function28f24
 	add_predef CopyPkmnToTempMon
 	add_predef ListMoves ; $20
-	add_predef Function50d2e
+	add_predef PlaceNonFaintStatus
 	add_predef Function50cdb
 	add_predef Function50c50
 	add_predef GetGender
@@ -95,13 +95,13 @@
 	add_predef Function5108b
 	add_predef GetTrainerPic
 	add_predef DecompressPredef ; $40
-	add_predef Function347d3
+	add_predef CheckTypeMatchup
 	add_predef ConvertMon_1to2
 	add_predef Functionfb877
-	add_predef Functiond0000
-	add_predef Function50d0a
-	add_predef Functiond00a3
-	add_predef Functiond008e
+	add_predef AnimateMon_Slow_Normal
+	add_predef PlaceStatusString
+	add_predef LoadMonAnimation
+	add_predef AnimateFrontpic
 	add_predef Functiond0669 ; $48
 	add_predef Functiond066e
 	dbw $ff, Function2d43 ; ????
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -1,7 +1,7 @@
 PlayRadioShow: ; b8612
 ; If we're already in the radio program proper, we don't need to be here.
-	ld a, [wd002]
-	cp 8
+	ld a, [wCurrentRadioLine]
+	cp POKE_FLUTE_RADIO
 	jr nc, .ok
 ; If Team Rocket is not occupying the radio tower, we don't need to be here.
 	ld a, [StatusFlags2]
@@ -12,11 +12,11 @@
 	and a
 	jr nz, .ok
 ; Team Rocket broadcasts on all stations.
-	ld a, 7
-	ld [wd002], a
+	ld a, ROCKET_RADIO
+	ld [wCurrentRadioLine], a
 .ok
-; Jump to the currently loaded station.  The index to which we need to jump is in wd002.
-	ld a, [wd002]
+; Jump to the currently loaded station.  The index to which we need to jump is in wCurrentRadioLine.
+	ld a, [wCurrentRadioLine]
 	ld e, a
 	ld d, 0
 	ld hl, RadioJumptable
@@ -128,16 +128,16 @@
 
 
 PrintRadioLine: ; b86ea (2e:46ea)
-	ld [wd003], a
-	ld hl, wd00c
-	ld a, [wd005]
-	cp $2
+	ld [wNextRadioLine], a
+	ld hl, wRadioText
+	ld a, [wNumRadioLinesPrinted]
+	cp 2
 	jr nc, .print
 	inc hl
-	ld [hl], $0
+	ld [hl], "<START>"
 	inc a
-	ld [wd005], a
-	cp $2
+	ld [wNumRadioLinesPrinted], a
+	cp 2
 	jr nz, .print
 	bccoord 1, 16
 	call PlaceWholeStringInBoxAtOnce
@@ -146,9 +146,9 @@
 	call PrintTextBoxText
 .skip
 	ld a, RADIO_SCROLL
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	ld a, 100
-	ld [wd004], a
+	ld [wRadioTextDelay], a
 	ret
 ; b8718 (2e:4718)
 
@@ -170,7 +170,7 @@
 ; b8728
 
 RadioScroll: ; b8728 (2e:4728)
-	ld hl, wd004
+	ld hl, wRadioTextDelay
 	ld a, [hl]
 	and a
 	jr z, .proceed
@@ -177,16 +177,16 @@
 	dec [hl]
 	ret
 .proceed
-	ld a, [wd003]
-	ld [wd002], a
-	ld a, [wd005]
+	ld a, [wNextRadioLine]
+	ld [wCurrentRadioLine], a
+	ld a, [wNumRadioLinesPrinted]
 	cp 1
 	call nz, CopyBottomLineToTopLine
 	jp ClearBottomLine
 
 OaksPkmnTalk1: ; b8742 (2e:4742)
-	ld a, $5
-	ld [wd006], a
+	ld a, 5
+	ld [wOaksPkmnTalkSegmentCounter], a
 	call StartRadioStation
 	ld hl, UnknownText_0xb8820
 	ld a, OAKS_POKEMON_TALK_2
@@ -274,7 +274,7 @@
 	ld [CurPartySpecies], a
 	call GetPokemonName
 	ld hl, StringBuffer1
-	ld de, wd050
+	ld de, wOaksPkmnTalkPkmnNameBuffer
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	; Now that we've chosen our wild Pokemon,
@@ -290,7 +290,7 @@
 
 .overflow
 	pop bc
-	ld a, $0
+	ld a, OAKS_POKEMON_TALK
 	jp PrintRadioLine
 ; b87f2 (2e:47f2)
 
@@ -361,7 +361,7 @@
 
 OaksPkmnTalk7: ; b883e (2e:483e)
 	ld a, [CurPartySpecies]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, UnknownText_0xb884f
 	ld a, OAKS_POKEMON_TALK_8
@@ -517,13 +517,13 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, [wd006]
+	ld a, [wOaksPkmnTalkSegmentCounter]
 	dec a
-	ld [wd006], a
+	ld [wOaksPkmnTalkSegmentCounter], a
 	ld a, OAKS_POKEMON_TALK_4
 	jr nz, .ok
-	ld a, $5
-	ld [wd006], a
+	ld a, 5
+	ld [wOaksPkmnTalkSegmentCounter], a
 	ld a, OAKS_POKEMON_TALK_10
 .ok
 	jp NextRadioLine
@@ -652,9 +652,9 @@
 	ld hl, UnknownText_0xb898e
 	call PrintText
 	ld a, OAKS_POKEMON_TALK_11
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	ld a, 100
-	ld [wd004], a
+	ld [wRadioTextDelay], a
 	ret
 ; b898e (2e:498e)
 
@@ -669,7 +669,7 @@
 ; 0xb8994
 
 OaksPkmnTalk11: ; b8994 (2e:4994)
-	ld hl, wd004
+	ld hl, wRadioTextDelay
 	dec [hl]
 	ret nz
 	hlcoord 9, 14
@@ -683,7 +683,7 @@
 ; b89a9
 
 OaksPkmnTalk12: ; b89a9 (2e:49a9)
-	ld hl, wd004
+	ld hl, wRadioTextDelay
 	dec [hl]
 	ret nz
 	hlcoord 1, 16
@@ -697,7 +697,7 @@
 ; b89c6
 
 OaksPkmnTalk13: ; b89c6 (2e:49c6)
-	ld hl, wd004
+	ld hl, wRadioTextDelay
 	dec [hl]
 	ret nz
 	hlcoord 12, 16
@@ -711,7 +711,7 @@
 ; b89d7
 
 OaksPkmnTalk14: ; b89d7 (2e:49d7)
-	ld hl, wd004
+	ld hl, wRadioTextDelay
 	dec [hl]
 	ret nz
 	ld de, $1d
@@ -719,13 +719,13 @@
 	ld hl, .terminator
 	call PrintText
 	ld a, OAKS_POKEMON_TALK_4
-	ld [wd003], a
+	ld [wNextRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld a, RADIO_SCROLL
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	ld a, 10
-	ld [wd004], a
+	ld [wRadioTextDelay], a
 	ret
 ; b89ff (2e:49ff)
 
@@ -734,9 +734,9 @@
 ; 0xb8a00
 
 PlaceRadioString: ; b8a00 (2e:4a00)
-	ld [wd002], a
+	ld [wCurrentRadioLine], a
 	ld a, 100
-	ld [wd004], a
+	ld [wRadioTextDelay], a
 	jp PlaceString
 
 CopyBottomLineToTopLine: ; b8a0b (2e:4a0b)
@@ -747,11 +747,11 @@
 
 ClearBottomLine: ; b8a17 (2e:4a17)
 	hlcoord 1, 15
-	ld bc, $12
+	ld bc, SCREEN_WIDTH - 2
 	ld a, " "
 	call ByteFill
 	hlcoord 1, 16
-	ld bc, $12
+	ld bc, SCREEN_WIDTH - 2
 	ld a, " "
 	jp ByteFill
 
@@ -784,7 +784,7 @@
 	call StartRadioStation
 .loop
 	call Random
-	cp CELEBI
+	cp NUM_POKEMON
 	jr nc, .loop
 	ld c, a
 	push bc
@@ -795,7 +795,7 @@
 	inc c
 	ld a, c
 	ld [CurPartySpecies], a
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	call GetPokemonName
 	ld hl, UnknownText_0xb8b30
 	ld a, POKEDEX_SHOW_2
@@ -817,8 +817,8 @@
 	push hl
 	call CopyDexEntryPart1
 	dec hl
-	ld [hl], $57
-	ld hl, wd26b
+	ld [hl], "<DONE>"
+	ld hl, wPokedexShowPointerAddr
 	call CopyRadioTextToRAM
 	pop hl
 	pop af
@@ -827,9 +827,9 @@
 	inc hl
 endr
 	ld a, l
-	ld [wd26b], a
+	ld [wPokedexShowPointerAddr], a
 	ld a, h
-	ld [wd26c], a
+	ld [wPokedexShowPointerAddr + 1], a
 	ld a, POKEDEX_SHOW_3
 	jp PrintRadioLine
 
@@ -864,17 +864,17 @@
 	jp PrintRadioLine
 
 CopyDexEntry: ; b8ad4 (2e:4ad4)
-	ld a, [wd26b]
+	ld a, [wPokedexShowPointerAddr]
 	ld l, a
-	ld a, [wd26c]
+	ld a, [wPokedexShowPointerAddr + 1]
 	ld h, a
-	ld a, [wd26d]
+	ld a, [wPokedexShowPointerBank]
 	push af
 	push hl
 	call CopyDexEntryPart1
 	dec hl
 	ld [hl], "<DONE>"
-	ld hl, wd26b
+	ld hl, wPokedexShowPointerAddr
 	call CopyRadioTextToRAM
 	pop hl
 	pop af
@@ -882,10 +882,10 @@
 	ret
 
 CopyDexEntryPart1: ; b8af3 (2e:4af3)
-	ld de, wd26d
+	ld de, wPokedexShowPointerBank
 	ld bc, SCREEN_WIDTH - 1
 	call FarCopyBytes
-	ld hl, wd26b
+	ld hl, wPokedexShowPointerAddr
 	ld [hl], "<START>"
 	inc hl
 	ld [hl], "<LINE>"
@@ -914,11 +914,11 @@
 	jr nz, .loop
 .okay
 	ld a, l
-	ld [wd26b], a
+	ld [wPokedexShowPointerAddr], a
 	ld a, h
-	ld [wd26c], a
+	ld [wPokedexShowPointerAddr + 1], a
 	ld a, d
-	ld [wd26d], a
+	ld [wPokedexShowPointerBank], a
 	ret
 ; b8b30 (2e:4b30)
 
@@ -1302,9 +1302,9 @@
 	jp NextRadioLine
 ; b8d3e (2e:4d3e)
 
-.E4Names:          db WILL, BRUNO, KAREN, KOGA, CHAMPION ; $0b, $0d, $0e, $0f, $10
-.KantoLeaderNames: db BROCK, MISTY, LT_SURGE, ERIKA, JANINE, SABRINA, BLAINE, BLUE ; $11, $12, $13, $15, $1a, $23, $2e, $40
-.MiscNames:        db RIVAL1, POKEMON_PROF, CAL, RIVAL2, RED ; $09, $0a, $0c, $2a, $3f
+.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
 ; b8d51
 
@@ -1507,11 +1507,11 @@
 	ld l, a
 	call CopyRadioTextToRAM
 	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 1 + 48 percent
 	ld a, PLACES_AND_PEOPLE_4 ; People
 	jr c, .ok
 	ld a, PLACES_AND_PEOPLE_6 ; Places
@@ -1653,26 +1653,26 @@
 PokeFluteRadio: ; b8ef7 (2e:4ef7)
 	call StartRadioStation
 	ld a, 1
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ret
 
 UnownRadio: ; b8f00 (2e:4f00)
 	call StartRadioStation
 	ld a, 1
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ret
 
 EvolutionRadio: ; b8f09 (2e:4f09)
 	call StartRadioStation
 	ld a, 1
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ret
 
 BuenasPassword1: ; b8f12 (2e:4f12)
 ; Determine if we need to be here
-	call BuenasPasswordCheckMidnight
+	call BuenasPasswordCheckTime
 	jp nc, .PlayPassword
-	ld a, [wd005]
+	ld a, [wNumRadioLinesPrinted]
 	and a
 	jp z, BuenasPassword20
 	jp BuenasPassword8
@@ -1679,15 +1679,15 @@
 
 .PlayPassword: ; b8f22 (2e:4f22)
 	call StartRadioStation
-	ld a, [hBGMapMode] ; $ff00+$d4
+	ld a, [hBGMapMode]
 	push af
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld de, String_b9171
 	hlcoord 2, 9
 	call PlaceString
 	pop af
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld hl, UnknownText_0xb9182
 	ld a, BUENAS_PASSWORD_2
 	jp NextRadioLine
@@ -1698,7 +1698,7 @@
 	jp NextRadioLine
 
 BuenasPassword3: ; b8f47 (2e:4f47)
-	call BuenasPasswordCheckMidnight
+	call BuenasPasswordCheckTime
 	ld hl, UnknownText_0xb918c
 	jp c, BuenasPasswordAfterMidnight
 	ld a, BUENAS_PASSWORD_4
@@ -1705,7 +1705,7 @@
 	jp NextRadioLine
 
 BuenasPassword4: ; b8f55 (2e:4f55)
-	call BuenasPasswordCheckMidnight
+	call BuenasPasswordCheckTime
 	jp c, BuenasPassword8
 	ld a, [wBuenasPassword]
 ; If we already generated the password today, we don't need to generate a new one.
@@ -1716,7 +1716,7 @@
 .greater_than_11
 	call Random
 	and $f
-	cp $b
+	cp NUM_PASSWORD_CATEGORIES
 	jr nc, .greater_than_11
 ; Store it in the high nybble of e.
 	swap a
@@ -1725,7 +1725,7 @@
 .greater_than_three
 	call Random
 	and $3
-	cp $3
+	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.
 	add e
@@ -1808,7 +1808,7 @@
 	ld l, c
 	add hl, de
 	ld a, [hl]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	ret
 
 .RawString: ; b8fde (2e:4fde)
@@ -1874,7 +1874,7 @@
 	jp NextRadioLine
 
 BuenasPassword7: ; b90ac (2e:50ac)
-	call BuenasPasswordCheckMidnight
+	call BuenasPasswordCheckTime
 	ld hl, UnknownText_0xb91a0
 	jr c, BuenasPasswordAfterMidnight
 	ld a, BUENAS_PASSWORD
@@ -1951,37 +1951,37 @@
 	jp NextRadioLine
 
 BuenasPassword20: ; b912a (2e:512a)
-	ld a, [hBGMapMode] ; $ff00+$d4
+	ld a, [hBGMapMode]
 	push af
 	callba NoRadioMusic
 	callba NoRadioName
 	pop af
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld hl, WeeklyFlags
 	res 7, [hl]
-	ld a, $4
-	ld [wd002], a
+	ld a, BUENAS_PASSWORD
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
+	ld [wNumRadioLinesPrinted], a
 	ld hl, UnknownText_0xb91d7
 	ld a, BUENAS_PASSWORD_21
 	jp NextRadioLine
 
 BuenasPassword21: ; b9152 (2e:5152)
-	ld a, $4
-	ld [wd002], a
+	ld a, BUENAS_PASSWORD
+	ld [wCurrentRadioLine], a
 	xor a
-	ld [wd005], a
-	call BuenasPasswordCheckMidnight
+	ld [wNumRadioLinesPrinted], a
+	call BuenasPasswordCheckTime
 	jp nc, BuenasPassword1
 	ld hl, UnknownText_0xb91d7
 	ld a, BUENAS_PASSWORD_21
 	jp NextRadioLine
 
-BuenasPasswordCheckMidnight: ; b9169 (2e:5169)
+BuenasPasswordCheckTime: ; b9169 (2e:5169)
 	call UpdateTime
-	ld a, [hHours] ; $ff00+$94
-	cp $12
+	ld a, [hHours]
+	cp 18 ; 6 PM
 	ret
 ; b9171 (2e:5171)
 
@@ -2100,19 +2100,19 @@
 CopyRadioTextToRAM: ; b91dc (2e:51dc)
 	ld a, [hl]
 	cp TX_FAR
-	jp z, FarJumpText
-	ld de, wd00c
+	jp z, FarCopyRadioText
+	ld de, wRadioText
 	ld bc, SCREEN_WIDTH * 2
 	jp CopyBytes
 
 StartRadioStation: ; b91eb (2e:51eb)
-	ld a, [wd005]
+	ld a, [wNumRadioLinesPrinted]
 	and a
 	ret nz
 	call RadioTerminator
 	call PrintText
 	ld hl, RadioChannelSongs
-	ld a, [wd002]
+	ld a, [wCurrentRadioLine]
 	ld c, a
 	ld b, 0
 rept 2
--- a/engine/radio2.asm
+++ b/engine/radio2.asm
@@ -371,7 +371,7 @@
 	ld [wc6da], a
 	ld [wc6db], a
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 NoRadioMusic: ; 9189d (24:589d)
@@ -383,7 +383,7 @@
 
 NoRadioName: ; 918a9 (24:58a9)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	hlcoord 1, 8
 	lb bc, 3, 18
 	call ClearBox
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -1,5 +1,5 @@
 Function14a1a: ; 14a1a
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba Function5e9a
 	call SpeechTextBox
 	call UpdateSprites
@@ -30,7 +30,7 @@
 	call Function14e13
 	call SaveBackupPokemonData
 	call SaveBackupChecksum
-	callba Function44725
+	callba BackupScratchmons
 	callba Function1406a
 	call ClearWRAMStateAfterSave
 	ret
@@ -106,8 +106,8 @@
 	call SaveBackupPlayerData
 	call SaveBackupPokemonData
 	call SaveBackupChecksum
-	callba Function44725
-	callba Function106187
+	callba BackupScratchmons
+	callba BackupMobileEventIndex
 	callba Function1406a
 	call LoadBox
 	call ClearWRAMStateAfterSave
@@ -212,7 +212,7 @@
 	call LoadMenuTextBox
 	lb bc, 0, 7
 	call PlaceYesNoBox
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call WriteBackup
 	push af
@@ -284,8 +284,8 @@
 	call SaveBackupPokemonData
 	call SaveBackupChecksum
 	call UpdateStackTop
-	callba Function44725
-	callba Function106187
+	callba BackupScratchmons
+	callba BackupMobileEventIndex
 	callba Function1406a
 	ld a, BANK(s1_be45)
 	call GetSRAMBank
@@ -630,8 +630,8 @@
 	call LoadPlayerData
 	call LoadPokemonData
 	call LoadBox
-	callba Function44745
-	callba Function10619d
+	callba RestoreScratchmons
+	callba RestoreMobileEventIndex
 	callba Function1050ea
 	call ValidateBackupSave
 	call SaveBackupOptions
@@ -647,8 +647,8 @@
 	call LoadBackupPlayerData
 	call LoadBackupPokemonData
 	call LoadBox
-	callba Function44745
-	callba Function10619d
+	callba RestoreScratchmons
+	callba RestoreMobileEventIndex
 	callba Function1050ea
 	call ValidateSave
 	call SaveOptions
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -236,7 +236,7 @@
 	dw Script_halloffame
 	dw Script_credits
 	dw Script_warpfacing
-	dw Script_storetext
+	dw Script_battletowertext
 	dw Script_displaylocation
 	dw Script_trainerclassname
 	dw Script_name
@@ -440,14 +440,14 @@
 Script_keeptextopen: ; 0x96edc
 ; script command 0x55
 
-	ld a, [$ffd8]
+	ld a, [hOAMUpdate]
 	push af
 	ld a, $1
-	ld [$ffd8], a
+	ld [hOAMUpdate], a
 	call WaitBGMap
 	call KeepTextOpen
 	pop af
-	ld [$ffd8], a
+	ld [hOAMUpdate], a
 	ret
 ; 0x96eed
 
@@ -515,7 +515,7 @@
 	ld a, [ScriptBank]
 	ld hl, InterpretMenu2
 	rst FarCall
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	jr nc, .ok
 	xor a
 .ok
@@ -537,7 +537,7 @@
 	ret
 ; 0x96f52
 
-Script_storetext: ; 0x96f52
+Script_battletowertext: ; 0x96f52
 ; script command 0xa4
 ; parameters:
 ;     pointer (PointerLabelBeforeBank)
@@ -546,7 +546,7 @@
 	call SetUpTextBox
 	call GetScriptByte
 	ld c, a
-	callba StoreText
+	callba BattleTowerText
 	ret
 ; 0x96f60
 
@@ -1079,9 +1079,11 @@
 	ld a, c
 	callba SetFlagsForMovement_1
 	pop bc
+
 	push bc
 	call SetFlagsForMovement_2
 	pop bc
+
 	call GetScriptByte
 	ld l, a
 	call GetScriptByte
@@ -1090,6 +1092,7 @@
 	ld b, a
 	call GetMovementData
 	ret c
+
 	ld a, SCRIPT_WAIT_MOVEMENT
 	ld [ScriptMode], a
 	call StopScript
@@ -1102,6 +1105,7 @@
 ; 0x97228
 
 Script_applymovement2: ; 0x97228
+; apply movement to last talked
 ; script command 0x6a
 ; parameters:
 ;     data (MovementPointerLabelParam)
@@ -1197,9 +1201,9 @@
 	add hl, bc
 	ld a, [hl]
 	push bc
-	call Function1836
+	call DoesSpriteHaveFacings
 	pop bc
-	jr c, .not_visible ; 0x9729c $1b
+	jr c, .not_visible ; STILL_SPRITE
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	bit 2, [hl]
@@ -1222,7 +1226,7 @@
 ; 0x972bc
 
 .DisableTextTiles: ; 0x972bc
-	call Function217a
+	call LoadMapPart
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 .loop
@@ -1360,7 +1364,7 @@
 	ld a, [hLastTalked]
 .ok
 	ld b, a
-	callba Function80a1
+	callba WritePersonXY
 	ret
 ; 0x9736f
 
@@ -1376,7 +1380,7 @@
 	call GetScriptByte
 	call GetScriptPerson
 	ld c, a
-	callba Function839e
+	callba FollowNotExact
 	ret
 ; 0x97384
 
@@ -1426,12 +1430,12 @@
 
 .Show
 	show_emote
-	show_person
+	step_sleep_1
 	step_end
 
 .Hide
 	hide_emote
-	show_person
+	step_sleep_1
 	step_end
 ; 973c7
 
@@ -1460,8 +1464,8 @@
 ; 973eb
 
 EarthquakeMovement: ; 973eb
-	step_shake 16
-	step_sleep 16
+	step_shake 16 ; the 16 gets overwritten with the script byte
+	step_sleep 16 ; the 16 gets overwritten with the lower 6 bits of the script byte
 	step_end
 EarthquakeMovementEnd
 ; 973f0
@@ -1546,7 +1550,7 @@
 	call GetScriptByte
 	ld [BattleType], a
 	call BufferScreen
-	callba Function4e554
+	callba CatchTutorial
 	jp Script_reloadmap
 ; 0x97459
 
@@ -1560,8 +1564,8 @@
 	and $3f
 	cp $1
 	jr nz, .notblackedout ; 0x97466 $8
-	ld b, BANK(UnknownScript_0x124c1)
-	ld hl, UnknownScript_0x124c1
+	ld b, BANK(Script_BattleWhiteout)
+	ld hl, Script_BattleWhiteout
 	jp ScriptJump
 
 .notblackedout
@@ -1664,7 +1668,7 @@
 	ret
 ; 0x974f3
 
-Function974f3:: ; 0x974f3
+CallCallback:: ; 0x974f3
 	ld a, [ScriptBank]
 	or $80
 	ld [ScriptBank], a
@@ -2339,7 +2343,7 @@
 ;     quantity (SingleByteParam)
 
 	call GetScriptByte
-	cp -1
+	cp ITEM_FROM_MEM
 	jr nz, .ok ; 0x977cf $3
 	ld a, [ScriptVar]
 .ok
@@ -2370,8 +2374,8 @@
 	ld [CurItem], a
 	call GetScriptByte
 	ld [wItemQuantityChangeBuffer], a
-	ld a, $ff
-	ld [wd107], a
+	ld a, -1
+	ld [ItemCountBuffer], a
 	ld hl, NumItems
 	call TossItem
 	ret nc
@@ -2847,6 +2851,7 @@
 	call LoadMapStatus
 	call StopScript
 	ret
+
 .not_ok
 	call GetScriptByte
 	call GetScriptByte
@@ -2869,7 +2874,7 @@
 ;     map_id (MapIdParam)
 
 	call GetScriptByte
-	ld [wdcac], a
+	ld [BackupWarpNumber], a
 	call GetScriptByte
 	ld [BackupMapGroup], a
 	call GetScriptByte
@@ -2884,9 +2889,9 @@
 ;     map_id (MapIdParam)
 
 	call GetScriptByte
-	ld [wdcb2], a
+	ld [wLastSpawnMapGroup], a
 	call GetScriptByte
-	ld [wdcb3], a
+	ld [wLastSpawnMapNumber], a
 	ret
 ; 0x97a85
 
@@ -2970,7 +2975,7 @@
 
 	xor a
 	ld [hBGMapMode], a
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function2914
 	callba Function104061
 	call UpdateSprites
@@ -2980,7 +2985,7 @@
 Script_warpcheck: ; 0x97af6
 ; script command 0x8e
 
-	call Function224a
+	call WarpCheck
 	ret nc
 	callba SetAll_ScriptFlags3
 	ret
@@ -3117,6 +3122,7 @@
 	call ExitScriptSubroutine
 	jr c, .resume
 	ret
+
 .resume
 	xor a
 	ld [ScriptRunning], a
--- /dev/null
+++ b/engine/selectmenu.asm
@@ -1,0 +1,191 @@
+SelectMenu:: ; 13327
+
+	call CheckRegisteredItem
+	jr c, .NotRegistered
+	jp UseRegisteredItem
+
+.NotRegistered
+	call LoadFont
+	ld b, BANK(ItemMayBeRegisteredText)
+	ld hl, ItemMayBeRegisteredText
+	call MapTextbox
+	call CloseText
+	jp LoadMoveSprites
+; 13340
+
+
+ItemMayBeRegisteredText: ; 13340
+	text_jump UnknownText_0x1c1cf3
+	db "@"
+; 13345
+
+
+CheckRegisteredItem: ; 13345
+
+	ld a, [WhichRegisteredItem]
+	and a
+	jr z, .NoRegisteredItem
+	and REGISTERED_POCKET
+	rlca
+	rlca
+	ld hl, .Pockets
+	rst JumpTable
+	ret
+
+.Pockets
+	dw .CheckItem
+	dw .CheckBall
+	dw .CheckKeyItem
+	dw .CheckTMHM
+
+.CheckItem
+	ld hl, NumItems
+	call .CheckRegisteredNo
+	jr c, .NoRegisteredItem
+	inc hl
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	call .IsSameItem
+	jr c, .NoRegisteredItem
+	and a
+	ret
+
+.CheckKeyItem
+	ld a, [RegisteredItem]
+	ld hl, KeyItems
+	ld de, 1
+	call IsInArray
+	jr nc, .NoRegisteredItem
+	ld a, [RegisteredItem]
+	ld [CurItem], a
+	and a
+	ret
+
+.CheckBall
+	ld hl, NumBalls
+	call .CheckRegisteredNo
+	jr nc, .NoRegisteredItem
+	inc hl
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	call .IsSameItem
+	jr c, .NoRegisteredItem
+	ret
+
+.CheckTMHM
+	jr .NoRegisteredItem
+
+.NoRegisteredItem
+	xor a
+	ld [WhichRegisteredItem], a
+	ld [RegisteredItem], a
+	scf
+	ret
+; 133a6
+
+
+.CheckRegisteredNo ; 133a6
+	ld a, [WhichRegisteredItem]
+	and REGISTERED_NUMBER
+	dec a
+	cp [hl]
+	jr nc, .NotEnoughItems
+	ld [wd107], a
+	and a
+	ret
+
+.NotEnoughItems
+	scf
+	ret
+; 133b6
+
+
+.IsSameItem ; 133b6
+	ld a, [RegisteredItem]
+	cp [hl]
+	jr nz, .NotSameItem
+	ld [CurItem], a
+	and a
+	ret
+
+.NotSameItem
+	scf
+	ret
+; 133c3
+
+
+UseRegisteredItem: ; 133c3
+
+	callba CheckItemMenu
+	ld a, [wItemAttributeParamBuffer]
+	ld hl, .SwitchTo
+	rst JumpTable
+	ret
+
+.SwitchTo
+	dw .CantUse
+	dw .NoFunction
+	dw .NoFunction
+	dw .NoFunction
+	dw .Current
+	dw .Party
+	dw .Overworld
+; 133df
+
+.NoFunction ; 133df
+	call LoadFont
+	call CantUseItem
+	call LoadMoveSprites
+	and a
+	ret
+; 133ea
+
+.Current ; 133ea
+	call LoadFont
+	call DoItemEffect
+	call LoadMoveSprites
+	and a
+	ret
+; 133f5
+
+.Party ; 133f5
+	call ResetWindow
+	call FadeToMenu
+	call DoItemEffect
+	call Function2b3c
+	call LoadMoveSprites
+	and a
+	ret
+; 13406
+
+.Overworld ; 13406
+	call ResetWindow
+	ld a, 1
+	ld [wd0ef], a
+	call DoItemEffect
+	xor a
+	ld [wd0ef], a
+	ld a, [wd0ec]
+	cp 1
+	jr nz, ._cantuse
+	scf
+	ld a, HMENURETURN_SCRIPT
+	ld [hMenuReturn], a
+	ret
+; 13422
+
+.CantUse ; 13422
+	call ResetWindow
+
+._cantuse
+	call CantUseItem
+	call LoadMoveSprites
+	and a
+	ret
+; 1342d
--- /dev/null
+++ b/engine/slot_machine.asm
@@ -1,0 +1,2112 @@
+_SlotMachine:
+	ld hl, Options
+	set 4, [hl]
+	call Function926f7
+	call DelayFrame
+.asm_926d2
+	call Function927af
+	jr nc, .asm_926d2
+	call WaitSFX
+	ld de, SFX_QUIT_SLOTS
+	call PlaySFX
+	call WaitSFX
+	call ClearBGPalettes
+	callba MobileFn_105fd0
+	ld hl, Options
+	res 4, [hl]
+	ld hl, rLCDC ; $ff40
+	res 2, [hl]
+	ret
+
+Function926f7: ; 926f7 (24:66f7)
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	ld de, MUSIC_NONE
+	call PlayMusic
+	call DelayFrame
+	call DisableLCD
+	ld hl, VBGMap0 tile $00
+	lb bc, 4, 0
+	ld a, $7f
+	call ByteFill
+	ld b, $5
+	call GetSGBLayout
+	callab Function8cf53
+	ld hl, wc6d0
+	ld bc, $48
+	xor a
+	call ByteFill
+	ld hl, Slots2LZ
+	ld de, VTiles0 tile $00
+	call Decompress
+	ld hl, Slots3LZ
+	ld de, VTiles0 tile $40
+	call Decompress
+	ld hl, Slots1LZ
+	ld de, VTiles2 tile $00
+	call Decompress
+	ld hl, Slots2LZ
+	ld de, VTiles2 tile $25
+	call Decompress
+	ld hl, SlotsTilemap
+	decoord 0, 0
+	ld bc, 20 * 12
+	call CopyBytes
+	ld hl, rLCDC ; $ff40
+	set 2, [hl]
+	call EnableLCD
+	ld hl, wc6d0
+	ld bc, $64
+	xor a
+	call ByteFill
+	call Function92a98
+	call Function9279b
+	ld a, $7
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], $40
+	xor a
+	ld [wJumptableIndex], a
+	ld a, $ff
+	ld [wc709], a
+	ld de, MUSIC_GAME_CORNER
+	call PlayMusic
+	xor a
+	ld [wd002], a
+	call Random
+	and $2a
+	ret nz
+	ld a, $1
+	ld [wd002], a
+	ret
+
+Function9279b: ; 9279b (24:679b)
+	ld a, $e4
+	call DmgToCgbBGPals
+	lb de, $e4, $e4
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_927ab
+	lb de, $c0, $e4
+.asm_927ab
+	call DmgToCgbObjPals
+	ret
+
+Function927af: ; 927af (24:67af)
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_927d1
+	call Function92844
+	call Function92b0f
+	xor a
+	ld [wc3b5], a
+	callab Function8cfa8
+	call Function927f8
+	call Function927d3
+	call DelayFrame
+	and a
+	ret
+.asm_927d1
+	scf
+	ret
+
+Function927d3: ; 927d3 (24:67d3)
+	ret
+; 927d4 (24:67d4)
+
+Function927d4: ; 927d4
+	ld a, [wc6d0]
+	and a
+	ret nz
+	ld a, [wc6e0]
+	and a
+	ret nz
+	ld a, [wc70c]
+	and a
+	jr nz, .asm_927ea
+	ld a, $e4
+	call DmgToCgbBGPals
+	ret
+
+.asm_927ea
+	ld a, [TextDelayFrames]
+	and $7
+	ret nz
+	ld a, [rBGP]
+	xor %1100
+	call DmgToCgbBGPals
+	ret
+; 927f8
+
+Function927f8: ; 927f8 (24:67f8)
+	hlcoord 5, 1
+	ld de, Coins
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+	call PrintNum
+	hlcoord 11, 1
+	ld de, wc711
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+	call PrintNum
+	ret
+; 92811 (24:6811)
+
+Function92811: ; 92811
+	ld a, [wc709]
+	add 0
+	daa
+	ld e, a
+	and $f
+	add "0"
+	hlcoord 1, 0
+	ld [hl], a
+	ld a, e
+	swap a
+	and $f
+	add "0"
+	hlcoord 0, 0
+	ld [hl], a
+	ret
+; 9282c
+
+Function9282c: ; 9282c
+	ld hl, wcf66
+	ld a, [hl]
+	inc [hl]
+	and $7
+	ret nz
+	ld hl, Sprites + $42
+	ld c, $18
+.asm_92839
+	ld a, [hl]
+	xor $20
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	dec c
+	jr nz, .asm_92839
+	ret
+; 92844
+
+Function92844: ; 92844 (24:6844)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_92853
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 92853 (24:6853)
+
+
+Jumptable_92853: ; 92853 (24:6853)
+	dw Function9287e
+	dw Function9288e
+	dw Function928c6
+	dw Function928d6
+	dw Function928e6
+	dw Function92900
+	dw Function92910
+	dw Function9292a
+	dw Function9293a
+	dw Function92879
+	dw Function92879
+	dw Function92879
+	dw Function92955
+	dw Function9296b
+	dw Function92987
+	dw Function9299e
+	dw Function929a4
+	dw Function929d9
+	dw Function929f0
+
+
+Function92879: ; 92879 (24:6879)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Function9287e: ; 9287e (24:687e)
+	call Function92879
+	xor a
+	ld [wc70b], a
+	ld [wc70c], a
+	ld a, $ff
+	ld [wc70d], a
+	ret
+
+Function9288e: ; 9288e (24:688e)
+	call Function9307c
+	jr nc, .asm_92899
+	ld a, $12
+	ld [wJumptableIndex], a
+	ret
+.asm_92899
+	call Function92879
+	call Function9303f
+	call Function93002
+	ld a, $20
+	ld [wcf64], a
+	ld a, $4
+	ld [wc6d0], a
+	ld [wc6e0], a
+	ld [wc6f0], a
+	ld a, $4
+	ld [wc6d9], a
+	ld [wc6e9], a
+	ld [wc6f9], a
+	call WaitSFX
+	ld a, SFX_SLOT_MACHINE_START
+	call Function9331e
+	ret
+
+Function928c6: ; 928c6 (24:68c6)
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_928cf
+	dec [hl]
+	ret
+.asm_928cf
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+	ret
+
+Function928d6: ; 928d6 (24:68d6)
+	ld hl, hJoypadSum ; $ffa5
+	ld a, [hl]
+	and A_BUTTON
+	ret z
+	call Function92879
+	call Function92a2b
+	ld [wc6d0], a
+
+Function928e6: ; 928e6 (24:68e6)
+	ld a, [wc6d0]
+	cp $0
+	ret nz
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld bc, wc6d0
+	ld de, wc700
+	call Function929f6
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+
+Function92900: ; 92900 (24:6900)
+	ld hl, hJoypadSum ; $ffa5
+	ld a, [hl]
+	and A_BUTTON
+	ret z
+	call Function92879
+	call Function92a2e
+	ld [wc6e0], a
+
+Function92910: ; 92910 (24:6910)
+	ld a, [wc6e0]
+	cp $0
+	ret nz
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld bc, wc6e0
+	ld de, wc703
+	call Function929f6
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+
+Function9292a: ; 9292a (24:692a)
+	ld hl, hJoypadSum ; $ffa5
+	ld a, [hl]
+	and A_BUTTON
+	ret z
+	call Function92879
+	call Function92a60
+	ld [wc6f0], a
+
+Function9293a: ; 9293a (24:693a)
+	ld a, [wc6f0]
+	cp $0
+	ret nz
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld bc, wc6f0
+	ld de, wc706
+	call Function929f6
+	call Function92879
+	xor a
+	ld [hJoypadSum], a
+	ret
+
+Function92955: ; 92955 (24:6955)
+	ld a, [wc70d]
+	cp $ff
+	jr nz, .asm_92963
+	call Function92879
+	call Function92879
+	ret
+.asm_92963
+	call Function92879
+	ld a, $10
+	ld [wcf64], a
+
+Function9296b: ; 9296b (24:696b)
+	ld hl, wcf64
+	ld a, [hl]
+	and a
+	jr z, .asm_92980
+	dec [hl]
+	srl a
+	ret z
+	ld a, [rOBP0]
+	xor $ff
+	ld e, a
+	ld d, a
+	call DmgToCgbObjPals
+	ret
+.asm_92980
+	call Function9279b
+	call Function92879
+	ret
+
+Function92987: ; 92987 (24:6987)
+	xor a
+	ld [wc70b], a
+	ld [wc70c], a
+	ld a, $e4
+	call DmgToCgbBGPals
+	call Function93124
+	xor a
+	ld [wcf64], a
+	call Function92879
+	ret
+
+Function9299e: ; 9299e (24:699e)
+	call Function93158
+	call Function92879
+
+Function929a4: ; 929a4 (24:69a4)
+	ld hl, wcf64
+	ld a, [hl]
+	inc [hl]
+	and $1
+	ret z
+	ld hl, wc711
+	ld a, [hli]
+	ld d, a
+	or [hl]
+	jr z, .asm_929d5
+	ld e, [hl]
+	dec de
+	ld [hl], e
+	dec hl
+	ld [hl], d
+	ld hl, Coins
+	ld d, [hl]
+	inc hl
+	ld e, [hl]
+	call Function92a04
+	jr c, .asm_929c5
+	inc de
+.asm_929c5
+	ld [hl], e
+	dec hl
+	ld [hl], d
+	ld a, [wcf64]
+	and $7
+	ret z
+	ld de, SFX_GET_COIN_FROM_SLOTS
+	call PlaySFX
+	ret
+.asm_929d5
+	call Function92879
+	ret
+
+Function929d9: ; 929d9 (24:69d9)
+	call Function9304c
+	call WaitPressAorB_BlinkCursor
+	call Function930e9
+	jr c, .asm_929ea
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+.asm_929ea
+	ld a, $12
+	ld [wJumptableIndex], a
+	ret
+
+Function929f0: ; 929f0 (24:69f0)
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Function929f6: ; 929f6 (24:69f6)
+	push de
+	call Function92a12
+	pop de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	ret
+
+Function92a04: ; 92a04 (24:6a04)
+	ld a, d
+	cp 9999 / $100
+	jr c, .asm_92a10
+	ld a, e
+	cp 9999 % $100
+	jr c, .asm_92a10
+	scf
+	ret
+.asm_92a10
+	and a
+	ret
+
+Function92a12: ; 92a12 (24:6a12)
+	ld hl, $3
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_92a1c
+	ld a, $f
+.asm_92a1c
+	dec a
+	and $f
+	ld e, a
+	ld d, $0
+	ld hl, $1
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ret
+
+Function92a2b: ; 92a2b (24:6a2b)
+	ld a, $7
+	ret
+
+Function92a2e: ; 92a2e (24:6a2e)
+	ld a, [wc70a]
+	cp $2
+	jr c, .asm_92a4e
+	ld a, [wc709]
+	and a
+	jr z, .asm_92a3f
+	cp $ff
+	jr nz, .asm_92a4e
+.asm_92a3f
+	call Function92a51
+	jr nz, .asm_92a4e
+	call Random
+	cp $50
+	jr nc, .asm_92a4e
+	ld a, $a
+	ret
+.asm_92a4e
+	ld a, $8
+	ret
+
+Function92a51: ; 92a51 (24:6a51)
+	ld a, [wc700]
+	and a
+	ret z
+	ld a, [wc701]
+	and a
+	ret z
+	ld a, [wc702]
+	and a
+	ret
+
+Function92a60: ; 92a60 (24:6a60)
+	ld a, [wc70b]
+	and a
+	jr z, .asm_92a95
+	ld a, [wc70c]
+	and a
+	jr z, .asm_92a95
+	ld a, [wc709]
+	and a
+	jr nz, .asm_92a84
+	call Random
+	cp 180
+	jr nc, .asm_92a95
+	cp 120
+	jr nc, .asm_92a92
+	cp 60
+	jr nc, .asm_92a8f
+	ld a, $15
+	ret
+.asm_92a84
+	call Random
+	cp $a0
+	jr nc, .asm_92a95
+	cp $50
+	jr nc, .asm_92a92
+.asm_92a8f
+	ld a, $12
+	ret
+.asm_92a92
+	ld a, $10
+	ret
+.asm_92a95
+	ld a, $9
+	ret
+
+Function92a98: ; 92a98 (24:6a98)
+	ld bc, wc6d0
+	ld hl, $6
+	add hl, bc
+	ld de, Sprites + $40
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $1
+	add hl, bc
+	ld de, Unknown_93327
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $8
+	add hl, bc
+	ld [hl], $30
+	call Function92af9
+	ld bc, wc6e0
+	ld hl, $6
+	add hl, bc
+	ld de, Sprites + $60
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $1
+	add hl, bc
+	ld de, Unknown_93339
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $8
+	add hl, bc
+	ld [hl], $50
+	call Function92af9
+	ld bc, wc6f0
+	ld hl, $6
+	add hl, bc
+	ld de, Sprites + $80
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $1
+	add hl, bc
+	ld de, Unknown_9334b
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld hl, $8
+	add hl, bc
+	ld [hl], $70
+	call Function92af9
+	ret
+
+Function92af9: ; 92af9 (24:6af9)
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ld hl, $3
+	add hl, bc
+	ld [hl], $e
+	ld hl, $4
+	add hl, bc
+	ld [hl], $0
+	call Function92b53
+	ret
+
+Function92b0f: ; 92b0f (24:6b0f)
+	ld bc, wc6d0
+	call Function92b22
+	ld bc, wc6e0
+	call Function92b22
+	ld bc, wc6f0
+	call Function92b22
+	ret
+
+Function92b22: ; 92b22 (24:6b22)
+	ld hl, $4
+	add hl, bc
+	ld a, [hl]
+	and $f
+	jr nz, .asm_92b2e
+	call Function92bd4
+.asm_92b2e
+	ld hl, $5
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	ld d, a
+	ld hl, $4
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	and $f
+	jr z, Function92b53
+	ld hl, $6
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld e, $8
+.asm_92b49
+	ld a, [hl]
+	add d
+	ld [hli], a
+rept 3
+	inc hl
+endr
+	dec e
+	jr nz, .asm_92b49
+	ret
+
+Function92b53: ; 92b53 (24:6b53)
+	ld hl, $8
+	add hl, bc
+	ld a, [hl]
+	ld [wc712 + 1], a
+	ld a, $50
+	ld [wc712 + 2], a
+	ld hl, $3
+	add hl, bc
+	ld e, [hl]
+	ld d, $0
+	ld hl, $1
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	ld e, l
+	ld d, h
+	call Function92b83
+	ld hl, $3
+	add hl, bc
+	ld a, [hl]
+	inc a
+	and $f
+	cp $f
+	jr nz, .asm_92b81
+	xor a
+.asm_92b81
+	ld [hl], a
+	ret
+
+Function92b83: ; 92b83 (24:6b83)
+	ld hl, $6
+	add hl, bc
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+.asm_92b8a
+	ld a, [wc712 + 2]
+	ld [hli], a
+	ld a, [wc712 + 1]
+	ld [hli], a
+	ld a, [de]
+	ld [hli], a
+	srl a
+	srl a
+	set 7, a
+	ld [hli], a
+	ld a, [wc712 + 2]
+	ld [hli], a
+	ld a, [wc712 + 1]
+	add $8
+	ld [hli], a
+	ld a, [de]
+rept 2
+	inc a
+endr
+	ld [hli], a
+	srl a
+	srl a
+	set 7, a
+	ld [hli], a
+	inc de
+	ld a, [wc712 + 2]
+	sub $10
+	ld [wc712 + 2], a
+	cp $10
+	jr nz, .asm_92b8a
+	ret
+; 92bbe (24:6bbe)
+
+Function92bbe: ; 92bbe
+	push hl
+	srl a
+	srl a
+	add Unknown_92bce % $100
+	ld l, a
+	ld a, 0
+	adc Unknown_92bce / $100
+	ld h, a
+	ld a, [hl]
+	pop hl
+	ret
+; 92bce
+
+Unknown_92bce: ; 92bce
+	db 0, 1, 2, 3, 4, 5
+; 92bd4
+
+Function92bd4: ; 92bd4 (24:6bd4)
+	ld hl, 0
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_92be4
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 92be4 (24:6be4)
+
+Jumptable_92be4: ; 92be4
+	dw Function92c16
+	dw Function92c4c
+	dw Function92c17
+	dw Function92c1e
+	dw Function92c25
+	dw Function92c2c
+	dw Function92c33
+	dw Function92c5e
+	dw Function92c86
+	dw Function92ca9
+	dw Function92cd2
+	dw Function92cf8
+	dw Function92d13
+	dw Function92df7
+	dw Function92e10
+	dw Function92e31
+	dw Function92e47
+	dw Function92e64
+	dw Function92d20
+	dw Function92d4f
+	dw Function92d6e
+	dw Function92d7e
+	dw Function92da4
+	dw Function92db3
+	dw Function92dca
+; 92c16
+
+Function92c16: ; 92c16
+	ret
+; 92c17
+
+Function92c17: ; 92c17
+	ld hl, $5
+	add hl, bc
+	ld [hl], $10
+	ret
+; 92c1e
+
+Function92c1e: ; 92c1e
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92c25
+
+Function92c25: ; 92c25
+	ld hl, $5
+	add hl, bc
+	ld [hl], $4
+	ret
+; 92c2c
+
+Function92c2c: ; 92c2c
+	ld hl, $5
+	add hl, bc
+	ld [hl], $2
+	ret
+; 92c33
+
+Function92c33: ; 92c33
+	ld hl, $5
+	add hl, bc
+	ld [hl], $1
+	ret
+; 92c3a
+
+Function92c3a: ; 92c3a
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ld hl, 0
+	add hl, bc
+	ld [hl], $1
+	ld hl, $f
+	add hl, bc
+	ld [hl], $3
+
+Function92c4c: ; 92c4c
+	ld hl, $f
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92c56
+	dec [hl]
+	ret
+
+.asm_92c56
+	ld hl, 0
+	add hl, bc
+	ld a, $0
+	ld [hl], a
+	ret
+; 92c5e
+
+Function92c5e: ; 92c5e
+	ld a, [wc709]
+	cp $ff
+	jr z, .asm_92c72
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92c72
+	dec [hl]
+	call Function92c76
+	ret nz
+
+.asm_92c72
+	call Function92c3a
+	ret
+; 92c76
+
+Function92c76: ; 92c76
+	call Function92a12
+	ld a, [wc709]
+	ld e, a
+	ld a, [hli]
+	cp e
+	ret z
+	ld a, [hli]
+	cp e
+	ret z
+	ld a, [hl]
+	cp e
+	ret
+; 92c86
+
+Function92c86: ; 92c86
+	call Function92e94
+	jr nc, .asm_92c94
+	ld a, [wc717]
+	ld hl, wc709
+	cp [hl]
+	jr z, .asm_92ca5
+
+.asm_92c94
+	ld a, [wc709]
+	cp $ff
+	jr z, .asm_92ca5
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92ca5
+	dec [hl]
+	ret
+
+.asm_92ca5
+	call Function92c3a
+	ret
+; 92ca9
+
+Function92ca9: ; 92ca9
+	call Function92f1d
+	jr nc, .asm_92cbd
+	ld hl, wc709
+	cp [hl]
+	jr z, .asm_92cce
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+
+.asm_92cbd
+	ld a, [wc709]
+	cp $ff
+	jr z, .asm_92cce
+	ld hl, $9
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92cce
+	dec [hl]
+	ret
+
+.asm_92cce
+	call Function92c3a
+	ret
+; 92cd2
+
+Function92cd2: ; 92cd2
+	call Function92e94
+	jr nc, .asm_92ce1
+	ld a, [wc70c]
+	and a
+	jr z, .asm_92ce1
+	call Function92c3a
+	ret
+
+.asm_92ce1
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $a
+	add hl, bc
+	ld [hl], $20
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ret
+; 92cf8
+
+Function92cf8: ; 92cf8
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92d02
+	dec [hl]
+	ret
+
+.asm_92d02
+	ld a, SFX_THROW_BALL
+	call Function9331e
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92d13
+
+Function92d13: ; 92d13
+	call Function92e94
+	ret nc
+	ld a, [wc70c]
+	and a
+	ret z
+	call Function92c3a
+	ret
+; 92d20
+
+Function92d20: ; 92d20
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	call Function92fc0
+	push bc
+	push af
+	ld de, $6068
+	ld a, $6
+	call Function3b2a
+	ld hl, $e
+	add hl, bc
+	pop af
+	ld [hl], a
+	pop bc
+	xor a
+	ld [wcf64], a
+
+Function92d4f: ; 92d4f
+	ld a, [wcf64]
+	cp $2
+	jr z, .asm_92d5b
+	cp $1
+	jr z, .asm_92d62
+	ret
+
+.asm_92d5b
+	call Function92f1d
+	call Function92c3a
+	ret
+
+.asm_92d62
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92d6e
+
+Function92d6e: ; 92d6e
+	xor a
+	ld [wcf64], a
+	ld hl, 0
+	add hl, bc
+	dec [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ret
+; 92d7e
+
+Function92d7e: ; 92d7e
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	push bc
+	ld de, $6000
+	ld a, $7
+	call Function3b2a
+	pop bc
+	xor a
+	ld [wcf64], a
+	ret
+; 92da4
+
+Function92da4: ; 92da4
+	ld a, [wcf64]
+	and a
+	ret z
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld a, $2
+	ld [wcf64], a
+
+Function92db3: ; 92db3
+	ld a, [wcf64]
+	cp $4
+	ret c
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $10
+	ld hl, $a
+	add hl, bc
+	ld [hl], $11
+
+Function92dca: ; 92dca
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92dd4
+	dec [hl]
+	ret
+
+.asm_92dd4
+	call Function92f1d
+	jr nc, .asm_92de5
+	and a
+	jr nz, .asm_92de5
+	ld a, $5
+	ld [wcf64], a
+	call Function92c3a
+	ret
+
+.asm_92de5
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+	ld hl, 0
+	add hl, bc
+rept 2
+	dec [hl]
+endr
+	ld a, $1
+	ld [wcf64], a
+	ret
+; 92df7
+
+Function92df7: ; 92df7
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	call Function92fc0
+	ld hl, $a
+	add hl, bc
+	ld [hl], a
+
+Function92e10: ; 92e10
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_92e1f
+	call Function92f1d
+	call Function92c3a
+	ret
+
+.asm_92e1f
+	dec [hl]
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $b
+	add hl, bc
+	ld [hl], $20
+	ld hl, $5
+	add hl, bc
+	ld [hl], $0
+
+Function92e31: ; 92e31
+	ld hl, $b
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92e3b
+	dec [hl]
+	ret
+
+.asm_92e3b
+	ld hl, 0
+	add hl, bc
+	dec [hl]
+	ld hl, $5
+	add hl, bc
+	ld [hl], $8
+	ret
+; 92e47
+
+Function92e47: ; 92e47
+	call Function92f1d
+	ret c
+	ld a, SFX_STOP_SLOT
+	call Function9331e
+	call Function93316
+	ld hl, $5
+	add hl, bc
+	ld [hl], $1
+	ld hl, 0
+	add hl, bc
+	inc [hl]
+	ld hl, $a
+	add hl, bc
+	ld [hl], $10
+
+Function92e64: ; 92e64
+	ld hl, $a
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_92e73
+	dec [hl]
+.asm_92e6d
+	ld a, SFX_GOT_SAFARI_BALLS
+	call Function9331e
+	ret
+
+.asm_92e73
+	ld a, [wc709]
+	and a
+	jr nz, .asm_92e88
+	call Function92f1d
+	jr nc, .asm_92e6d
+	and a
+	jr nz, .asm_92e6d
+	call Function92c3a
+	call WaitSFX
+	ret
+
+.asm_92e88
+	call Function92f1d
+	jr c, .asm_92e6d
+	call Function92c3a
+	call WaitSFX
+	ret
+; 92e94
+
+Function92e94: ; 92e94
+	xor a
+	ld [wc70b], a
+	ld [wc70c], a
+	call Function92a12
+	call Function92fb4
+	ld a, [wc70a]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_92ebd
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .asm_92eb6
+	push de
+	jp [hl]
+
+.asm_92eb6
+	ld a, [wc70b]
+	and a
+	ret z
+	scf
+	ret
+; 92ebd
+
+Jumptable_92ebd: ; 92ebd
+	dw Function92ed4
+	dw Function92ed1
+	dw Function92ecb
+	dw Function92ec5
+; 92ec5
+
+Function92ec5: ; 92ec5
+	call Function92ee0
+	call Function92ef6
+
+Function92ecb: ; 92ecb
+	call Function92ed5
+	call Function92f01
+
+Function92ed1: ; 92ed1
+	call Function92eeb
+
+Function92ed4: ; 92ed4
+	ret
+; 92ed5
+
+Function92ed5: ; 92ed5
+	ld hl, wc70e
+	ld a, [EnemyScreens]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92ee0
+
+Function92ee0: ; 92ee0
+	ld hl, wEnemyGoesFirst
+	ld a, [wc700]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92eeb
+
+Function92eeb: ; 92eeb
+	ld hl, wEnemyGoesFirst
+	ld a, [wc701]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92ef6
+
+Function92ef6: ; 92ef6
+	ld hl, wEnemyGoesFirst
+	ld a, [wc702]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92f01
+
+Function92f01: ; 92f01
+	ld hl, wc710
+	ld a, [wc702]
+	cp [hl]
+	call z, Function92f0c
+	ret
+; 92f0c
+
+Function92f0c: ; 92f0c
+	ld [wc717], a
+	and a
+	jr nz, .asm_92f17
+	ld a, $1
+	ld [wc70c], a
+
+.asm_92f17
+	ld a, $1
+	ld [wc70b], a
+	ret
+; 92f1d
+
+Function92f1d: ; 92f1d
+	ld a, $ff
+	ld [EffectFailed], a
+	call Function92a12
+	call Function92fb4
+	ld a, [wc70a]
+	and 3
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_92f48
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .asm_92f3d
+	push de
+	jp [hl]
+
+.asm_92f3d
+	ld a, [wc70d]
+	cp $ff
+	jr nz, .asm_92f46
+	and a
+	ret
+
+.asm_92f46
+	scf
+	ret
+; 92f48
+
+Jumptable_92f48: ; 92f48
+	dw Function92f5f
+	dw Function92f5c
+	dw Function92f56
+	dw Function92f50
+; 92f50
+
+Function92f50: ; 92f50
+	call Function92f70
+	call Function92f90
+
+Function92f56: ; 92f56
+	call Function92f60
+	call Function92fa0
+
+Function92f5c: ; 92f5c
+	call Function92f80
+
+Function92f5f: ; 92f5f
+	ret
+; 92f60
+
+Function92f60: ; 92f60
+	ld hl, wc70e
+	ld a, [wc700]
+	cp [hl]
+	ret nz
+	ld hl, wc703
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92f70
+
+Function92f70: ; 92f70
+	ld hl, wc710
+	ld a, [wc700]
+	cp [hl]
+	ret nz
+	ld hl, wc704
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92f80
+
+Function92f80: ; 92f80
+	ld hl, wEnemyGoesFirst
+	ld a, [wc701]
+	cp [hl]
+	ret nz
+	ld hl, wc704
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92f90
+
+Function92f90: ; 92f90
+	ld hl, wc70e
+	ld a, [wc702]
+	cp [hl]
+	ret nz
+	ld hl, wc704
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92fa0
+
+Function92fa0: ; 92fa0
+	ld hl, wc710
+	ld a, [wc702]
+	cp [hl]
+	ret nz
+	ld hl, wc705
+	cp [hl]
+	call z, Function92fb0
+	ret
+; 92fb0
+
+Function92fb0: ; 92fb0
+	ld [wc70d], a
+	ret
+; 92fb4
+
+Function92fb4: ; 92fb4
+	ld de, wc70e
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	ret
+; 92fc0
+
+Function92fc0: ; 92fc0
+	ld hl, $3
+	add hl, bc
+	ld a, [hl]
+	push af
+	push hl
+	call Function92fcf
+	pop hl
+	pop af
+	ld [hl], a
+	ld a, e
+	ret
+; 92fcf
+
+Function92fcf: ; 92fcf
+	ld a, [wc709]
+	and a
+	jr nz, .asm_92fe8
+	ld e, $0
+.asm_92fd7
+	ld hl, $3
+	add hl, bc
+	inc [hl]
+	inc e
+	push de
+	call Function92f1d
+	pop de
+	jr nc, .asm_92fd7
+	and a
+	jr nz, .asm_92fd7
+	ret
+
+.asm_92fe8
+	call Random
+	and $7
+	cp $4
+	jr c, .asm_92fe8
+	ld e, a
+.asm_92ff2
+	ld a, e
+	inc e
+	ld hl, $3
+	add hl, bc
+	add [hl]
+	ld [hl], a
+	push de
+	call Function92f1d
+	pop de
+	jr c, .asm_92ff2
+	ret
+; 93002
+
+Function93002: ; 93002 (24:7002)
+	ld a, [wc709]
+	and a
+	ret z
+	ld hl, Unknown_93023
+	ld a, [ScriptVar]
+	and a
+	jr z, .asm_93013
+	ld hl, Unknown_93031
+.asm_93013
+	call Random
+	ld c, a
+.asm_93017
+	ld a, [hli]
+	cp c
+	jr nc, .asm_9301e
+	inc hl
+	jr .asm_93017
+.asm_9301e
+	ld a, [hl]
+	ld [wc709], a
+	ret
+; 93023 (24:7023)
+
+Unknown_93023: ; 93023
+	db $01, $00
+	db $03, $04
+	db $0a, $14
+	db $14, $10
+	db $28, $0c
+	db $30, $08
+	db $ff, $ff
+; 93031
+
+Unknown_93031: ; 93031
+	db $02, $00
+	db $03, $04
+	db $08, $14
+	db $10, $10
+	db $1e, $0c
+	db $50, $08
+	db $ff, $ff
+; 9303f
+
+Function9303f: ; 9303f (24:703f)
+	ld b, $14
+	ld a, [wc70a]
+	dec a
+	jr z, asm_93066
+	dec a
+	jr z, asm_9305a
+	jr asm_9304e
+
+Function9304c: ; 9304c (24:704c)
+	ld b, $23
+asm_9304e: ; 9304e (24:704e)
+	hlcoord 3, 2
+	call Function93069
+	hlcoord 3, 10
+	call Function93069
+asm_9305a: ; 9305a (24:705a)
+	hlcoord 3, 4
+	call Function93069
+	hlcoord 3, 8
+	call Function93069
+asm_93066: ; 93066 (24:7066)
+	hlcoord 3, 6
+
+Function93069: ; 93069 (24:7069)
+	ld a, b
+	ld [hl], a
+	ld de, $d
+	add hl, de
+	ld [hl], a
+	ld de, $7
+	add hl, de
+	inc a
+	ld [hl], a
+	ld de, $d
+	add hl, de
+	ld [hl], a
+	ret
+
+Function9307c: ; 9307c (24:707c)
+	ld hl, UnknownText_0x930c7
+	call PrintText
+	ld hl, MenuDataHeader_0x930d6
+	call LoadMenuDataHeader
+	call InterpretMenu2
+	call WriteBackup
+	ret c
+	ld a, [MenuSelection2]
+	ld b, a
+	ld a, $4
+	sub b
+	ld [wc70a], a
+	ld hl, Coins
+	ld c, a
+	ld a, [hli]
+	and a
+	jr nz, .asm_930ad
+	ld a, [hl]
+	cp c
+	jr nc, .asm_930ad
+	ld hl, UnknownText_0x930d1
+	call PrintText
+	jr Function9307c
+.asm_930ad
+	ld hl, Coins + 1
+	ld a, [hl]
+	sub c
+	ld [hld], a
+	jr nc, .asm_930b6
+	dec [hl]
+.asm_930b6
+	call WaitSFX
+	ld de, SFX_PAY_DAY
+	call PlaySFX
+	ld hl, UnknownText_0x930cc
+	call PrintText
+	and a
+	ret
+; 930c7 (24:70c7)
+
+UnknownText_0x930c7: ; 0x930c7
+	; Bet how many coins?
+	text_jump UnknownText_0x1c5049
+	db "@"
+; 0x930cc
+
+UnknownText_0x930cc: ; 0x930cc
+	; Start!
+	text_jump UnknownText_0x1c505e
+	db "@"
+; 0x930d1
+
+UnknownText_0x930d1: ; 0x930d1
+	; Not enough coins.
+	text_jump UnknownText_0x1c5066
+	db "@"
+; 0x930d6
+
+MenuDataHeader_0x930d6: ; 0x930d6
+	db $40 ; flags
+	db 10, 14 ; start coords
+	db 17, 19 ; end coords
+	dw MenuData2_0x930de
+	db 1 ; default option
+; 0x930de
+
+MenuData2_0x930de: ; 0x930de
+	db $80 ; flags
+	db 3 ; items
+	db " 3@"
+	db " 2@"
+	db " 1@"
+; 0x930e9
+
+Function930e9: ; 930e9 (24:70e9)
+	ld hl, Coins
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_930fd
+	ld hl, UnknownText_9311a
+	call PrintText
+	ld c, 60
+	call DelayFrames
+	jr .asm_93118
+.asm_930fd
+	ld hl, UnknownText_9311f
+	call PrintText
+	call LoadMenuTextBox
+	lb bc, 14, 12
+	call PlaceYesNoBox
+	ld a, [MenuSelection2]
+	dec a
+	call WriteBackup
+	and a
+	jr nz, .asm_93118
+	and a
+	ret
+.asm_93118
+	scf
+	ret
+; 9311a (24:711a)
+
+UnknownText_9311a: ; 9311a
+	text_jump UnknownText_0x1c5079
+	db "@"
+
+UnknownText_9311f: ; 9311f
+	text_jump UnknownText_0x1c5092
+	db "@"
+
+Function93124: ; 93124 (24:7124)
+	ld a, [EffectFailed]
+	cp $ff
+	jr z, .asm_93151
+	srl a
+	ld e, a
+	ld d, 0
+	ld hl, .data_93145
+	add hl, de
+	ld a, [hli]
+	ld [PlayerUsedMoves], a
+	ld e, a
+	ld a, [hl]
+	ld [wc711], a
+	ld d, a
+	callba MobileFn_105fe3
+	ret
+
+.data_93145
+	db $2c, $01
+	db $32, $00
+	db $06, $00
+	db $08, $00
+	db $0a, $00
+	db $0f, $00
+
+.asm_93151
+	ld hl, wc711
+	xor a
+	ld [hli], a
+	ld [hl], a
+	ret
+
+Function93158: ; 93158 (24:7158)
+	ld a, [EffectFailed]
+	cp $ff
+	jr nz, .asm_9316c
+	ld hl, UnknownText_0x931e0
+	call PrintText
+	callba MobileFn_105fd0
+	ret
+.asm_9316c
+	srl a
+	ld e, a
+	ld d, 0
+	ld hl, Unknown_93195
+rept 3
+	add hl, de
+endr
+	ld de, StringBuffer2
+	ld bc, $4
+	call CopyBytes
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, .asm_93188
+	push de
+	jp [hl]
+.asm_93188
+	ld hl, UnknownText_0x931b9
+	call PrintText
+	callba MobileFn_105f9f
+	ret
+; 93195 (24:7195)
+
+Unknown_93195: ; 93195
+	db "300@"
+	dw Function931e5
+	db "50@@"
+	dw Function9320b
+	db "6@@@"
+	dw Function93214
+	db "8@@@"
+	dw Function93214
+	db "10@@"
+	dw Function93214
+	db "15@@"
+	dw Function93214
+; 931b9
+
+UnknownText_0x931b9: ; 0x931b9
+	start_asm
+; 0x931ba
+
+Function931ba: ; 931ba
+	ld a, [EffectFailed]
+	add $25
+	ldcoord_a 2, 13
+	inc a
+	ldcoord_a 2, 14
+	inc a
+	ldcoord_a 3, 13
+	inc a
+	ldcoord_a 3, 14
+	hlcoord 18, 17
+	ld [hl], $ee
+	ld hl, UnknownText_0x931db
+rept 4
+	inc bc
+endr
+	ret
+; 931db
+
+UnknownText_0x931db: ; 0x931db
+	; lined up! Won @  coins!
+	text_jump UnknownText_0x1c509f
+	db "@"
+; 0x931e0
+
+UnknownText_0x931e0: ; 0x931e0
+	; Darn!
+	text_jump UnknownText_0x1c50bb
+	db "@"
+; 0x931e5
+
+Function931e5: ; 931e5
+	ld a, SFX_2ND_PLACE
+	call Function9331e
+	call WaitSFX
+	ld a, [wd002]
+	and a
+	jr nz, .asm_931ff
+	call Random
+	and $14
+	ret z
+	ld a, $ff
+	ld [wc709], a
+	ret
+
+.asm_931ff
+	call Random
+	and $1c
+	ret z
+	ld a, $ff
+	ld [wc709], a
+	ret
+; 9320b
+
+Function9320b: ; 9320b
+	ld a, SFX_3RD_PLACE
+	call Function9331e
+	call WaitSFX
+	ret
+; 93214
+
+Function93214: ; 93214
+	ld a, SFX_PRESENT
+	call Function9331e
+	call WaitSFX
+	ret
+; 9321d
+
+Function9321d: ; 9321d (24:721d)
+	ld hl, $b
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_9322d
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_9322d: ; 9322d (24:722d)
+	dw Function93233
+	dw Function93259
+	dw Function93289
+
+
+Function93233: ; 93233 (24:7233)
+	ld hl, $e
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr nz, .asm_93247
+	ld a, $2
+	ld [wcf64], a
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ret
+.asm_93247
+	dec [hl]
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld hl, $c
+	add hl, bc
+	ld [hl], $30
+	ld hl, $6
+	add hl, bc
+	ld [hl], $0
+
+Function93259: ; 93259 (24:7259)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	cp $20
+	jr c, .asm_93273
+	dec [hl]
+	ld e, a
+	ld d, $70
+	callba Functionce765
+	ld a, e
+	ld hl, $7
+	add hl, bc
+	ld [hl], a
+	ret
+.asm_93273
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld hl, $d
+	add hl, bc
+	ld [hl], $2
+	ld a, $1
+	ld [wcf64], a
+	ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
+	call Function9331e
+	ret
+
+Function93289: ; 93289 (24:7289)
+	ld hl, $6
+	add hl, bc
+	ld a, [hl]
+rept 2
+	inc [hl]
+endr
+	cp $48
+	jr nc, .asm_932a3
+	and $3
+	ret nz
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	xor $ff
+	inc a
+	ld [hl], a
+	ld [hSCY], a
+	ret
+.asm_932a3
+	ld hl, $b
+	add hl, bc
+	xor a
+	ld [hl], a
+	ld [hSCY], a
+	ret
+
+Function932ac: ; 932ac (24:72ac)
+	ld hl, $b
+	add hl, bc
+	ld e, [hl]
+	ld d, 0
+	ld hl, Jumptable_932bc
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_932bc: ; 932bc (24:72bc)
+	dw Function932c2
+	dw Function932e0
+	dw Function932fc
+
+
+Function932c2: ; 932c2 (24:72c2)
+	ld hl, $4
+	add hl, bc
+	ld a, [hl]
+	inc [hl]
+	cp $68
+	jr z, .asm_932d6
+	and $f
+	ret nz
+	ld de, SFX_JUMP_OVER_LEDGE
+	call PlaySFX
+	ret
+.asm_932d6
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld a, $1
+	ld [wcf64], a
+
+Function932e0: ; 932e0 (24:72e0)
+	ld a, [wcf64]
+	cp $2
+	jr z, .asm_932f1
+	cp $5
+	ret nz
+	ld hl, 0
+	add hl, bc
+	ld [hl], $0
+	ret
+.asm_932f1
+	ld hl, $b
+	add hl, bc
+	inc [hl]
+	ld hl, $c
+	add hl, bc
+	ld [hl], $8
+
+Function932fc: ; 932fc (24:72fc)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_93306
+	dec [hl]
+	ret
+.asm_93306
+	ld hl, $b
+	add hl, bc
+	dec [hl]
+	push bc
+	ld de, $606c
+	ld a, $8
+	call Function3b2a
+	pop bc
+	ret
+; 93316 (24:7316)
+
+Function93316: ; 93316
+	push bc
+	ld c, 16
+	call DelayFrames
+	pop bc
+	ret
+; 9331e
+
+Function9331e: ; 9331e (24:731e)
+	push de
+	ld e, a
+	ld d, 0
+	call PlaySFX
+	pop de
+	ret
+; 93327 (24:7327)
+
+Unknown_93327: ; 93327
+	db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14
+Unknown_93339: ; 93339
+	db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08
+Unknown_9334b: ; 9334b
+	db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08
+; 9335d
+
+SlotsTilemap: ; 9335d
+INCBIN "gfx/slots.tilemap"
+; 9344d
+
+Slots1LZ: ; 9344d
+INCBIN "gfx/slots_1.2bpp.lz"
+; 935cd
+
+Slots2LZ: ; 935cd
+INCBIN "gfx/slots_2.2bpp.lz"
+; 9382d
+
+Slots3LZ: ; 9382d
+INCBIN "gfx/slots_3.2bpp.lz"
+; 93a3d
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -42,7 +42,7 @@
 ; Map Events
 	add_special BugContestJudging
 	add_special CheckPartyFullAfterContest
-	add_special CheckFirstMonFainted
+	add_special ContestDropOffMons
 	add_special ContestReturnMons
 	add_special Special_GiveParkBalls
 	add_special Special_CheckMagikarpLength
@@ -65,18 +65,18 @@
 	add_special Special_SlotMachine
 	add_special Special_CardFlip
 	add_special Special_DummyNonfunctionalGameCornerGame
-	add_special Special_WhiteBGMapBufferScreen
-	add_special FadeBlackBGMap
+	add_special Special_ClearBGPalettesBufferScreen
+	add_special FadeOutPalettes
 	add_special Special_BattleTowerFade
 	add_special Special_FadeBlackQuickly
-	add_special FadeInBGMap
+	add_special FadeInPalettes
 	add_special Special_FadeInQuickly
 	add_special Special_ReloadSpritesNoPalettes
-	add_special WhiteBGMap
+	add_special ClearBGPalettes
 	add_special UpdateTimePals
 	add_special ClearTileMap
 	add_special UpdateSprites
-	add_special Special_ReplaceKrisSprite
+	add_special ReplaceKrisSprite
 	add_special Special_GameCornerPrizeMonCheckDex
 	add_special SpecialSeenMon
 	add_special WaitSFX
@@ -124,7 +124,7 @@
 	add_special ProfOaksPCBoot
 	add_special SpecialGameboyCheck
 	add_special SpecialTrainerHouse
-	add_special Function16dc7
+	add_special PhotoStudio
 	add_special InitRoamMons
 	add_special Functionc48f
 	add_special Functionc49f
@@ -139,9 +139,9 @@
 	add_special Function1700b0
 	add_special Function1700ba
 	add_special Function170114
-	add_special Function170215
+	add_special BattleTowerBattle
 	add_special Function1704e1
-	add_special Function17021d
+	add_special EmptySpecial_17021d
 	add_special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
 	add_special Function11ba38
 	add_special SpecialCheckForBattleTowerRules
@@ -154,7 +154,7 @@
 	add_special Function4925b
 	add_special SpecialOmanyteChamber
 	add_special Function11c1ab
-	add_special Function170687
+	add_special BattleTowerAction
 	add_special Special_DisplayUnownWords
 	add_special Special_Menu_ChallengeExplanationCancel
 	add_special Function17d2b6
@@ -178,7 +178,7 @@
 	add_special Function1037eb
 	add_special Function10383c
 	add_special Mobile_HealParty
-	add_special Function14168
+	add_special RefreshSprites
 	add_special Function1037c2
 	add_special Function10630f
 	add_special Function103780
@@ -465,8 +465,8 @@
 	db "@"
 ; 0xc3db
 
-Special_WhiteBGMapBufferScreen: ; c3db
-	call WhiteBGMap
+Special_ClearBGPalettesBufferScreen: ; c3db
+	call ClearBGPalettes
 	call BufferScreen
 	ret
 ; c3e2
--- /dev/null
+++ b/engine/sprites.asm
@@ -1,0 +1,1480 @@
+GetEmote2bpp: ; 1412a
+	ld a, $1
+	ld [rVBK], a
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+; 14135
+
+_ReplaceKrisSprite:: ; 14135
+	call GetPlayerSprite
+	ld a, [UsedSprites]
+	ld [hUsedSpriteIndex], a
+	ld a, [UsedSprites + 1]
+	ld [hUsedSpriteTile], a
+	call Function143c8
+	ret
+; 14146
+
+Function14146: ; 14146
+	ld hl, wSpriteFlags
+	ld a, [hl]
+	push af
+	res 7, [hl]
+	set 6, [hl]
+	call RunCallback_04
+	pop af
+	ld [wSpriteFlags], a
+	ret
+; 14157
+
+Function14157: ; 14157
+	ld hl, wSpriteFlags
+	ld a, [hl]
+	push af
+	set 7, [hl]
+	res 6, [hl]
+	call RunCallback_04
+	pop af
+	ld [wSpriteFlags], a
+	ret
+; 14168
+
+RefreshSprites:: ; 14168
+	call .Refresh
+	call RunCallback_04
+	ret
+; 1416f
+
+.Refresh: ; 1416f
+	xor a
+	ld bc, UsedSpritesEnd - UsedSprites
+	ld hl, UsedSprites
+	call ByteFill
+	call GetPlayerSprite
+	call AddMapSprites
+	call LoadAndSortSprites
+	ret
+; 14183
+
+GetPlayerSprite: ; 14183
+; Get Chris or Kris's sprite.
+	ld hl, .Chris
+	ld a, [wPlayerSpriteSetupFlags]
+	bit 2, a
+	jr nz, .go
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .go
+	ld hl, .Kris
+
+.go
+	ld a, [PlayerState]
+	ld c, a
+.loop
+	ld a, [hli]
+	cp c
+	jr z, .good
+	inc hl
+	cp $ff
+	jr nz, .loop
+
+; Any player state not in the array defaults to Chris's sprite.
+	xor a ; ld a, PLAYER_NORMAL
+	ld [PlayerState], a
+	ld a, SPRITE_CHRIS
+	jr .finish
+
+.good
+	ld a, [hl]
+
+.finish
+	ld [UsedSprites + 0], a
+	ld [PlayerSprite], a
+	ld [PlayerObjectSprite], a
+	ret
+
+.Chris
+	db PLAYER_NORMAL,    SPRITE_CHRIS
+	db PLAYER_BIKE,      SPRITE_CHRIS_BIKE
+	db PLAYER_SURF,      SPRITE_SURF
+	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
+	db $ff
+
+.Kris
+	db PLAYER_NORMAL,    SPRITE_KRIS
+	db PLAYER_BIKE,      SPRITE_KRIS_BIKE
+	db PLAYER_SURF,      SPRITE_SURF
+	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
+	db $ff
+; 141c9
+
+
+AddMapSprites: ; 141c9
+	call GetMapPermission
+	call CheckOutdoorMap
+	jr z, .outdoor
+	call AddIndoorSprites
+	ret
+
+.outdoor
+	call AddOutdoorSprites
+	ret
+; 141d9
+
+
+AddIndoorSprites: ; 141d9
+	ld hl, Map1ObjectSprite
+	ld a, 1
+.loop
+	push af
+	ld a, [hl]
+	call AddSpriteGFX
+	ld de, OBJECT_LENGTH
+	add hl, de
+	pop af
+	inc a
+	cp NUM_OBJECTS
+	jr nz, .loop
+	ret
+; 141ee
+
+
+AddOutdoorSprites: ; 141ee
+	ld a, [MapGroup]
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, OutdoorSprites
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld c, MAX_OUTDOOR_SPRITES
+.loop
+	push bc
+	ld a, [hli]
+	call AddSpriteGFX
+	pop bc
+	dec c
+	jr nz, .loop
+	ret
+; 14209
+
+
+RunCallback_04: ; 14209
+	ld a, $4
+	call RunMapCallback
+	call Function1439b
+	call Function14215
+	ret
+; 14215
+
+Function14215: ; 14215
+	ld a, [wSpriteFlags]
+	bit 6, a
+	ret nz
+	ld c, EMOTE_08
+	callba LoadEmote
+	call GetMapPermission
+	call CheckOutdoorMap
+	ld c, EMOTE_0B
+	jr z, .outdoor
+	ld c, EMOTE_0A
+
+.outdoor
+	callba LoadEmote
+	ret
+; 14236
+
+
+
+SafeGetSprite: ; 14236
+	push hl
+	call GetSprite
+	pop hl
+	ret
+; 1423c
+
+GetSprite: ; 1423c
+	call GetMonSprite
+	ret c
+
+	ld hl, SpriteHeaders ; address
+	dec a
+	ld c, a
+	ld b, 0
+	ld a, 6
+	call AddNTimes
+	; load the address into de
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	; load the length into c
+	ld a, [hli]
+	swap a
+	ld c, a
+	; load the sprite bank into both b and h
+	ld b, [hl]
+	ld a, [hli]
+	; load the sprite type into l
+	ld l, [hl]
+	ld h, a
+	ret
+; 14259
+
+
+GetMonSprite: ; 14259
+; Return carry if a monster sprite was loaded.
+
+	cp SPRITE_POKEMON
+	jr c, .Normal
+	cp SPRITE_DAYCARE_MON_1
+	jr z, .wBreedMon1
+	cp SPRITE_DAYCARE_MON_2
+	jr z, .wBreedMon2
+	cp SPRITE_VARS
+	jr nc, .Variable
+	jr .Icon
+
+.Normal
+	and a
+	ret
+
+.Icon
+	sub SPRITE_POKEMON
+	ld e, a
+	ld d, 0
+	ld hl, SpriteMons
+	add hl, de
+	ld a, [hl]
+	jr .Mon
+
+.wBreedMon1
+	ld a, [wBreedMon1Species]
+	jr .Mon
+
+.wBreedMon2
+	ld a, [wBreedMon2Species]
+
+.Mon
+	ld e, a
+	and a
+	jr z, .NoBreedmon
+
+	callba Function8e82b
+
+	ld l, 1
+	ld h, 0
+	scf
+	ret
+
+.Variable
+	sub SPRITE_VARS
+	ld e, a
+	ld d, 0
+	ld hl, VariableSprites
+	add hl, de
+	ld a, [hl]
+	and a
+	jp nz, GetMonSprite
+
+.NoBreedmon
+	ld a, 1
+	ld l, 1
+	ld h, 0
+	and a
+	ret
+; 142a7
+
+
+_DoesSpriteHaveFacings:: ; 142a7
+; Checks to see whether we can apply a facing to a sprite.
+; Returns carry unless the sprite is a Pokemon or a Still Sprite.
+	cp SPRITE_POKEMON
+	jr nc, .only_down
+
+	push hl
+	push bc
+	ld hl, SpriteHeaders + SPRITEHEADER_TYPE ; type
+	dec a
+	ld c, a
+	ld b, 0
+	ld a, NUM_SPRITEHEADER_FIELDS
+	call AddNTimes
+	ld a, [hl]
+	pop bc
+	pop hl
+	cp STILL_SPRITE
+	jr nz, .only_down
+	scf
+	ret
+
+.only_down
+	and a
+	ret
+; 142c4
+
+
+_GetSpritePalette:: ; 142c4
+	ld a, c
+	call GetMonSprite
+	jr c, .is_pokemon
+
+	ld hl, SpriteHeaders + 5 ; palette
+	dec a
+	ld c, a
+	ld b, 0
+	ld a, 6
+	call AddNTimes
+	ld c, [hl]
+	ret
+
+.is_pokemon
+	xor a
+	ld c, a
+	ret
+; 142db
+
+
+LoadAndSortSprites: ; 142db
+	call LoadSpriteGFX
+	call SortUsedSprites
+	call ArrangeUsedSprites
+	ret
+; 142e5
+
+
+AddSpriteGFX: ; 142e5
+; Add any new sprite ids to a list of graphics to be loaded.
+; Return carry if the list is full.
+
+	push hl
+	push bc
+	ld b, a
+	ld hl, UsedSprites + 2
+	ld c, SPRITE_GFX_LIST_CAPACITY - 1
+.loop
+	ld a, [hl]
+	cp b
+	jr z, .exists
+	and a
+	jr z, .new
+rept 2
+	inc hl
+endr
+	dec c
+	jr nz, .loop
+
+	pop bc
+	pop hl
+	scf
+	ret
+
+.exists
+	pop bc
+	pop hl
+	and a
+	ret
+
+.new
+	ld [hl], b
+	pop bc
+	pop hl
+	and a
+	ret
+; 14306
+
+
+LoadSpriteGFX: ; 14306
+; Bug: b is not preserved, so
+; it's useless as a next count.
+
+	ld hl, UsedSprites
+	ld b, SPRITE_GFX_LIST_CAPACITY
+.loop
+	ld a, [hli]
+	and a
+	jr z, .done
+	push hl
+	call .LoadSprite
+	pop hl
+	ld [hli], a
+	dec b
+	jr nz, .loop
+
+.done
+	ret
+
+.LoadSprite
+	call GetSprite
+	ld a, l
+	ret
+; 1431e
+
+
+SortUsedSprites: ; 1431e
+; Bubble-sort sprites by type.
+
+; Run backwards through UsedSprites to find the last one.
+
+	ld c, SPRITE_GFX_LIST_CAPACITY
+	ld de, UsedSprites + (SPRITE_GFX_LIST_CAPACITY - 1) * 2
+.FindLastSprite
+	ld a, [de]
+	and a
+	jr nz, .FoundLastSprite
+rept 2
+	dec de
+endr
+	dec c
+	jr nz, .FindLastSprite
+.FoundLastSprite
+	dec c
+	jr z, .quit
+
+; If the length of the current sprite is
+; higher than a later one, swap them.
+
+	inc de
+	ld hl, UsedSprites + 1
+
+.CheckSprite
+	push bc
+	push de
+	push hl
+
+.CheckFollowing
+	ld a, [de]
+	cp [hl]
+	jr nc, .loop
+
+; Swap the two sprites.
+
+	ld b, a
+	ld a, [hl]
+	ld [hl], b
+	ld [de], a
+	dec de
+	dec hl
+	ld a, [de]
+	ld b, a
+	ld a, [hl]
+	ld [hl], b
+	ld [de], a
+	inc de
+	inc hl
+
+; Keep doing this until everything's in order.
+
+.loop
+rept 2
+	dec de
+endr
+	dec c
+	jr nz, .CheckFollowing
+
+	pop hl
+rept 2
+	inc hl
+endr
+	pop de
+	pop bc
+	dec c
+	jr nz, .CheckSprite
+
+.quit
+	ret
+; 14355
+
+
+ArrangeUsedSprites: ; 14355
+; Get the length of each sprite and space them out in VRAM.
+; Crystal introduces a second table in VRAM bank 0.
+
+	ld hl, UsedSprites
+	ld c, SPRITE_GFX_LIST_CAPACITY
+	ld b, 0
+.FirstTableLength
+; Keep going until the end of the list.
+	ld a, [hli]
+	and a
+	jr z, .quit
+
+	ld a, [hl]
+	call GetSpriteLength
+
+; Spill over into the second table after $80 tiles.
+	add b
+	cp $80
+	jr z, .loop
+	jr nc, .SecondTable
+
+.loop
+	ld [hl], b
+	inc hl
+	ld b, a
+
+; Assumes the next table will be reached before c hits 0.
+	dec c
+	jr nz, .FirstTableLength
+
+.SecondTable
+; The second tile table starts at tile $80.
+	ld b, $80
+	dec hl
+.SecondTableLength
+; Keep going until the end of the list.
+	ld a, [hli]
+	and a
+	jr z, .quit
+
+	ld a, [hl]
+	call GetSpriteLength
+
+; There are only two tables, so don't go any further than that.
+	add b
+	jr c, .quit
+
+	ld [hl], b
+	ld b, a
+	inc hl
+
+	dec c
+	jr nz, .SecondTableLength
+
+.quit
+	ret
+; 14386
+
+
+GetSpriteLength: ; 14386
+; Return the length of sprite type a in tiles.
+
+	cp WALKING_SPRITE
+	jr z, .AnyDirection
+	cp STANDING_SPRITE
+	jr z, .AnyDirection
+	cp STILL_SPRITE
+	jr z, .OneDirection
+
+	ld a, 12
+	ret
+
+.AnyDirection
+	ld a, 12
+	ret
+
+.OneDirection
+	ld a, 4
+	ret
+; 1439b
+
+
+Function1439b: ; 1439b
+	ld hl, UsedSprites
+	ld c, SPRITE_GFX_LIST_CAPACITY
+.loop
+	ld a, [wSpriteFlags]
+	res 5, a
+	ld [wSpriteFlags], a
+	ld a, [hli]
+	and a
+	jr z, .done
+	ld [hUsedSpriteIndex], a
+	ld a, [hli]
+	ld [hUsedSpriteTile], a
+	bit 7, a
+	jr z, .dont_set
+	ld a, [wSpriteFlags]
+	set 5, a
+	ld [wSpriteFlags], a
+
+.dont_set
+	push bc
+	push hl
+	call Function143c8
+	pop hl
+	pop bc
+	dec c
+	jr nz, .loop
+
+.done
+	ret
+; 143c8
+
+Function143c8: ; 143c8
+	ld a, [hUsedSpriteIndex]
+	call SafeGetSprite
+	ld a, [hUsedSpriteTile]
+	call .GetTileAddr
+	push hl
+	push de
+	push bc
+	ld a, [wSpriteFlags]
+	bit 7, a
+	jr nz, .skip
+	call .CopyToVram
+
+.skip
+	pop bc
+	ld l, c
+	ld h, $0
+rept 4
+	add hl, hl
+endr
+	pop de
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [wSpriteFlags]
+	bit 5, a
+	jr nz, .done
+	bit 6, a
+	jr nz, .done
+	ld a, [hUsedSpriteIndex]
+	call _DoesSpriteHaveFacings
+	jr c, .done
+	ld a, h
+	add $8
+	ld h, a
+	call .CopyToVram
+
+.done
+	ret
+; 14406
+
+.GetTileAddr: ; 14406
+; Return the address of tile (a) in (hl).
+	and $7f
+	ld l, a
+	ld h, 0
+rept 4
+	add hl, hl
+endr
+	ld a, l
+	add VTiles0 % $100
+	ld l, a
+	ld a, h
+	adc VTiles0 / $100
+	ld h, a
+	ret
+; 14418
+
+.CopyToVram: ; 14418
+	ld a, [rVBK]
+	push af
+	ld a, [wSpriteFlags]
+	bit 5, a
+	ld a, $1
+	jr z, .bankswitch
+	ld a, $0
+
+.bankswitch
+	ld [rVBK], a
+	call Get2bpp
+	pop af
+	ld [rVBK], a
+	ret
+; 1442f
+
+LoadEmote:: ; 1442f
+; Get the address of the pointer to emote c.
+	ld a, c
+	ld bc, 6
+	ld hl, EmotesPointers
+	call AddNTimes
+; Load the emote address into de
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+; load the length of the emote (in tiles) into c
+	inc hl
+	ld c, [hl]
+	swap c
+; load the emote pointer bank into b
+	inc hl
+	ld b, [hl]
+; load the VRAM destination into hl
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+; if the emote has a length of 0, do not proceed (error handling)
+	ld a, c
+	and a
+	ret z
+	call GetEmote2bpp
+	ret
+; 1444d
+
+emote_header: MACRO
+	dw \1
+	db \2 tiles, BANK(\1)
+	dw \3
+ENDM
+
+EmotesPointers: ; 144d
+; dw source address
+; db length, bank
+; dw dest address
+
+	emote_header ShockEmote, 4, VTiles1 tile $78
+	emote_header QuestionEmote, 4, VTiles1 tile $78
+	emote_header HappyEmote, 4, VTiles1 tile $78
+	emote_header SadEmote, 4, VTiles1 tile $78
+	emote_header HeartEmote, 4, VTiles1 tile $78
+	emote_header BoltEmote, 4, VTiles1 tile $78
+	emote_header SleepEmote, 4, VTiles1 tile $78
+	emote_header FishEmote, 4, VTiles1 tile $78
+	emote_header FishingRodGFX1, 1, VTiles1 tile $7c
+	emote_header FishingRodGFX2, 2, VTiles1 tile $7c
+	emote_header FishingRodGFX3, 2, VTiles1 tile $7e
+	emote_header FishingRodGFX4, 1, VTiles1 tile $7e
+; 14495
+
+
+SpriteMons: ; 14495
+	db UNOWN
+	db GEODUDE
+	db GROWLITHE
+	db WEEDLE
+	db SHELLDER
+	db ODDISH
+	db GENGAR
+	db ZUBAT
+	db MAGIKARP
+	db SQUIRTLE
+	db TOGEPI
+	db BUTTERFREE
+	db DIGLETT
+	db POLIWAG
+	db PIKACHU
+	db CLEFAIRY
+	db CHARMANDER
+	db JYNX
+	db STARMIE
+	db BULBASAUR
+	db JIGGLYPUFF
+	db GRIMER
+	db EKANS
+	db PARAS
+	db TENTACOOL
+	db TAUROS
+	db MACHOP
+	db VOLTORB
+	db LAPRAS
+	db RHYDON
+	db MOLTRES
+	db SNORLAX
+	db GYARADOS
+	db LUGIA
+	db HO_OH
+; 144b8
+
+
+OutdoorSprites: ; 144b8
+; Valid sprite IDs for each map group.
+
+	dw Group1Sprites
+	dw Group2Sprites
+	dw Group3Sprites
+	dw Group4Sprites
+	dw Group5Sprites
+	dw Group6Sprites
+	dw Group7Sprites
+	dw Group8Sprites
+	dw Group9Sprites
+	dw Group10Sprites
+	dw Group11Sprites
+	dw Group12Sprites
+	dw Group13Sprites
+	dw Group14Sprites
+	dw Group15Sprites
+	dw Group16Sprites
+	dw Group17Sprites
+	dw Group18Sprites
+	dw Group19Sprites
+	dw Group20Sprites
+	dw Group21Sprites
+	dw Group22Sprites
+	dw Group23Sprites
+	dw Group24Sprites
+	dw Group25Sprites
+	dw Group26Sprites
+; 144ec
+
+
+Group13Sprites: ; 144ec
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14503
+
+Group23Sprites: ; 14503
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1451a
+
+Group14Sprites: ; 1451a
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14531
+
+Group6Sprites: ; 14531
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_BLUE
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SWIMMER_GUY
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14548
+
+Group7Sprites: ; 14548
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_POKEFAN_M
+	db SPRITE_ROCKET
+	db SPRITE_MISTY
+	db SPRITE_POKE_BALL
+	db SPRITE_SLOWPOKE
+; 1455f
+
+Group25Sprites: ; 1455f
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_POKEFAN_M
+	db SPRITE_ROCKET
+	db SPRITE_MISTY
+	db SPRITE_POKE_BALL
+	db SPRITE_SLOWPOKE
+; 14576
+
+Group21Sprites: ; 14576
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_FISHER
+	db SPRITE_POLIWAG
+	db SPRITE_TEACHER
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_BIKER
+	db SPRITE_SILVER
+	db SPRITE_BLUE
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1458d
+
+Group18Sprites: ; 1458d
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_MACHOP
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 145a4
+
+Group12Sprites: ; 145a4
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_MACHOP
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 145bb
+
+Group17Sprites: ; 145bb
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_MACHOP
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 145d2
+
+Group16Sprites: ; 145d2
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_POKEFAN_M
+	db SPRITE_BUENA
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_MACHOP
+	db SPRITE_BIKER
+	db SPRITE_POKE_BALL
+	db SPRITE_BOULDER
+; 145e9
+
+Group24Sprites: ; 145e9
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SILVER
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_YOUNGSTER
+	db SPRITE_MONSTER
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14600
+
+Group26Sprites: ; 14600
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SILVER
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_YOUNGSTER
+	db SPRITE_MONSTER
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14617
+
+Group19Sprites: ; 14617
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SILVER
+	db SPRITE_TEACHER
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_YOUNGSTER
+	db SPRITE_MONSTER
+	db SPRITE_GRAMPS
+	db SPRITE_BUG_CATCHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1462e
+
+Group10Sprites: ; 1462e
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_FISHER
+	db SPRITE_LASS
+	db SPRITE_OFFICER
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_BUG_CATCHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_WEIRD_TREE
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 14645
+
+Group4Sprites: ; 14645
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_FISHER
+	db SPRITE_LASS
+	db SPRITE_OFFICER
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_BUG_CATCHER
+	db SPRITE_SUPER_NERD
+	db SPRITE_WEIRD_TREE
+	db SPRITE_POKE_BALL
+	db SPRITE_FRUIT_TREE
+; 1465c
+
+Group8Sprites: ; 1465c
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_KURT_OUTSIDE
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_OFFICER
+	db SPRITE_POKEFAN_M
+	db SPRITE_BLACK_BELT
+	db SPRITE_TEACHER
+	db SPRITE_AZALEA_ROCKET
+	db SPRITE_LASS
+	db SPRITE_SILVER
+	db SPRITE_FRUIT_TREE
+	db SPRITE_SLOWPOKE
+; 14673
+
+Group11Sprites: ; 14673
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_POKE_BALL
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_OFFICER
+	db SPRITE_POKEFAN_M
+	db SPRITE_DAYCARE_MON_1
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_ROCKET
+	db SPRITE_LASS
+	db SPRITE_DAYCARE_MON_2
+	db SPRITE_FRUIT_TREE
+	db SPRITE_SLOWPOKE
+; 1468a
+
+Group22Sprites: ; 1468a
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_STANDING_YOUNGSTER
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_OLIVINE_RIVAL
+	db SPRITE_POKEFAN_M
+	db SPRITE_LASS
+	db SPRITE_BUENA
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SAILOR
+	db SPRITE_POKEFAN_F
+	db SPRITE_SUPER_NERD
+	db SPRITE_TAUROS
+	db SPRITE_FRUIT_TREE
+	db SPRITE_ROCK
+; 146a1
+
+Group1Sprites: ; 146a1
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_STANDING_YOUNGSTER
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_OLIVINE_RIVAL
+	db SPRITE_POKEFAN_M
+	db SPRITE_LASS
+	db SPRITE_BUENA
+	db SPRITE_SWIMMER_GIRL
+	db SPRITE_SAILOR
+	db SPRITE_POKEFAN_F
+	db SPRITE_SUPER_NERD
+	db SPRITE_TAUROS
+	db SPRITE_FRUIT_TREE
+	db SPRITE_ROCK
+; 146b8
+
+Group9Sprites: ; 146b8
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_LANCE
+	db SPRITE_GRAMPS
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_LASS
+	db SPRITE_YOUNGSTER
+	db SPRITE_GYARADOS
+	db SPRITE_FRUIT_TREE
+	db SPRITE_POKE_BALL
+; 146cf
+
+Group2Sprites: ; 146cf
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_POKEFAN_M
+	db SPRITE_BLACK_BELT
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_FRUIT_TREE
+	db SPRITE_POKE_BALL
+; 146e6
+
+Group5Sprites: ; 146e6
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_GRAMPS
+	db SPRITE_YOUNGSTER
+	db SPRITE_LASS
+	db SPRITE_SUPER_NERD
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_POKEFAN_M
+	db SPRITE_BLACK_BELT
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_FISHER
+	db SPRITE_FRUIT_TREE
+	db SPRITE_POKE_BALL
+; 146fd
+
+Group3Sprites: ; 146fd
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_GAMEBOY_KID
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_LASS
+	db SPRITE_POKEFAN_F
+	db SPRITE_TEACHER
+	db SPRITE_YOUNGSTER
+	db SPRITE_GROWLITHE
+	db SPRITE_POKEFAN_M
+	db SPRITE_ROCKER
+	db SPRITE_FISHER
+	db SPRITE_SCIENTIST
+	db SPRITE_POKE_BALL
+	db SPRITE_BOULDER
+; 14714
+
+Group15Sprites: ; 14714
+	db SPRITE_SUICUNE
+	db SPRITE_SILVER_TROPHY
+	db SPRITE_FAMICOM
+	db SPRITE_POKEDEX
+	db SPRITE_WILL
+	db SPRITE_KAREN
+	db SPRITE_NURSE
+	db SPRITE_OLD_LINK_RECEPTIONIST
+	db SPRITE_BIG_LAPRAS
+	db SPRITE_BIG_ONIX
+	db SPRITE_SUDOWOODO
+	db SPRITE_BIG_SNORLAX
+	db SPRITE_SAILOR
+	db SPRITE_FISHING_GURU
+	db SPRITE_GENTLEMAN
+	db SPRITE_SUPER_NERD
+	db SPRITE_HO_OH
+	db SPRITE_TEACHER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_YOUNGSTER
+	db SPRITE_FAIRY
+	db SPRITE_POKE_BALL
+	db SPRITE_ROCK
+; 1472b
+
+Group20Sprites: ; 1472b
+	db SPRITE_OAK
+	db SPRITE_FISHER
+	db SPRITE_TEACHER
+	db SPRITE_TWIN
+	db SPRITE_POKEFAN_M
+	db SPRITE_GRAMPS
+	db SPRITE_FAIRY
+	db SPRITE_SILVER
+	db SPRITE_FISHING_GURU
+	db SPRITE_POKE_BALL
+	db SPRITE_POKEDEX
+; 14736
+
+
+SpriteHeaders: ; 14736
+INCLUDE "gfx/overworld/sprite_headers.asm"
+; 1499a
--- /dev/null
+++ b/engine/startmenu.asm
@@ -1,0 +1,1970 @@
+StartMenu:: ; 125cd
+
+	call ResetTextRelatedRAM
+
+	ld de, SFX_MENU
+	call PlaySFX
+
+	callba Function6454
+
+	ld hl, StatusFlags2
+	bit 2, [hl] ; bug catching contest
+	ld hl, .MenuDataHeader
+	jr z, .GotMenuData
+	ld hl, .ContestMenuDataHeader
+.GotMenuData
+
+	call LoadMenuDataHeader
+	call .SetUpMenuItems
+	ld a, [wd0d2]
+	ld [wMenuCursorBuffer], a
+	call .DrawMenuAccount_
+	call MenuFunc_1e7f
+	call .DrawBugContestStatusBox
+	call Function2e31
+	call Function2e20
+	callba Function64bf
+	call .DrawBugContestStatus
+	call UpdateTimePals
+	jr .Select
+
+.Reopen
+	call UpdateSprites
+	call UpdateTimePals
+	call .SetUpMenuItems
+	ld a, [wd0d2]
+	ld [wMenuCursorBuffer], a
+
+.Select
+	call .GetInput
+	jr c, .Exit
+	call .DrawMenuAccount
+	ld a, [wMenuCursorBuffer]
+	ld [wd0d2], a
+	call PlayClickSFX
+	call Function1bee
+	call .OpenMenu
+
+; Menu items have different return functions.
+; For example, saving exits the menu.
+	ld hl, .MenuReturns
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.MenuReturns
+	dw .Reopen
+	dw .Exit
+	dw .ExitMenuCallFuncLoadMoveSprites
+	dw .ExitMenuRunScriptLoadMoveSprites
+	dw .ExitMenuRunScript
+	dw .ReturnEnd
+	dw .ReturnRedraw
+
+.Exit
+	ld a, [hOAMUpdate]
+	push af
+	ld a, 1
+	ld [hOAMUpdate], a
+	call LoadFontsExtra
+	pop af
+	ld [hOAMUpdate], a
+.ReturnEnd
+	call ExitMenu
+.ReturnEnd2
+	call LoadMoveSprites
+	call UpdateTimePals
+	ret
+
+.GetInput
+; Return carry on exit, and no-carry on selection.
+	xor a
+	ld [hBGMapMode], a
+	call .DrawMenuAccount
+	call SetUpMenu
+	ld a, $ff
+	ld [MenuSelection], a
+.loop
+	call .PrintMenuAccount
+	call Function1f1a
+	ld a, [wcf73]
+	cp B_BUTTON
+	jr z, .b
+	cp A_BUTTON
+	jr z, .a
+	jr .loop
+.a
+	call PlayClickSFX
+	and a
+	ret
+.b
+	scf
+	ret
+; 12691
+
+.ExitMenuRunScript ; 12691
+	call ExitMenu
+	ld a, HMENURETURN_SCRIPT
+	ld [hMenuReturn], a
+	ret
+; 12699
+
+.ExitMenuRunScriptLoadMoveSprites ; 12699
+	call ExitMenu
+	ld a, HMENURETURN_SCRIPT
+	ld [hMenuReturn], a
+	jr .ReturnEnd2
+; 126a2
+
+.ExitMenuCallFuncLoadMoveSprites ; 126a2
+	call ExitMenu
+	ld hl, wQueuedScriptAddr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [wQueuedScriptBank]
+	rst FarCall
+	jr .ReturnEnd2
+; 126b1
+
+.ReturnRedraw ; 126b1
+	call .Clear
+	jp .Reopen
+; 126b7
+
+.Clear ; 126b7
+	call ClearBGPalettes
+	call Call_ExitMenu
+	call Function2bae
+	call .DrawMenuAccount_
+	call MenuFunc_1e7f
+	call .DrawBugContestStatus
+	call UpdateSprites
+	call Functiond90
+	call Function2b5c
+	ret
+; 126d3
+
+
+.MenuDataHeader
+	db $40 ; tile backup
+	db 0, 10 ; start coords
+	db 17, 19 ; end coords
+	dw .MenuData
+	db 1 ; default selection
+
+.ContestMenuDataHeader
+	db $40 ; tile backup
+	db 2, 10 ; start coords
+	db 17, 19 ; end coords
+	dw .MenuData
+	db 1 ; default selection
+
+.MenuData
+	db %10101000 ; x padding, wrap around, start can close
+	dn 0, 0 ; rows, columns
+	dw MenuItemsList
+	dw .MenuString
+	dw .Items
+
+.Items
+	dw StartMenu_Pokedex,  .PokedexString,  .PokedexDesc
+	dw StartMenu_Pokemon,  .PartyString,    .PartyDesc
+	dw StartMenu_Pack,     .PackString,     .PackDesc
+	dw StartMenu_Status,   .StatusString,   .StatusDesc
+	dw StartMenu_Save,     .SaveString,     .SaveDesc
+	dw StartMenu_Option,   .OptionString,   .OptionDesc
+	dw StartMenu_Exit,     .ExitString,     .ExitDesc
+	dw StartMenu_Pokegear, .PokegearString, .PokegearDesc
+	dw StartMenu_Quit,     .QuitString,     .QuitDesc
+
+.PokedexString 	db "#DEX@"
+.PartyString   	db "#MON@"
+.PackString    	db "PACK@"
+.StatusString  	db "<PLAYER>@"
+.SaveString    	db "SAVE@"
+.OptionString  	db "OPTION@"
+.ExitString    	db "EXIT@"
+.PokegearString	db $24, "GEAR@"
+.QuitString    	db "QUIT@"
+
+.PokedexDesc  db   "#MON"
+              next "database@"
+
+.PartyDesc    db   "Party ", $4a
+              next "status@"
+
+.PackDesc     db   "Contains"
+              next "items@"
+
+.PokegearDesc db   "Trainer's"
+              next "key device@"
+
+.StatusDesc   db   "Your own"
+              next "status@"
+
+.SaveDesc     db   "Save your"
+              next "progress@"
+
+.OptionDesc   db   "Change"
+              next "settings@"
+
+.ExitDesc     db   "Close this"
+              next "menu@"
+
+.QuitDesc     db   "Quit and"
+              next "be judged.@"
+
+
+.OpenMenu ; 127e5
+	ld a, [MenuSelection]
+	call .GetMenuAccountTextPointer
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 127ef
+
+.MenuString ; 127ef
+	push de
+	ld a, [MenuSelection]
+	call .GetMenuAccountTextPointer
+rept 2
+	inc hl
+endr
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+	pop hl
+	call PlaceString
+	ret
+; 12800
+
+.MenuDesc ; 12800
+	push de
+	ld a, [MenuSelection]
+	cp $ff
+	jr z, .none
+	call .GetMenuAccountTextPointer
+rept 4
+	inc hl
+endr
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+	pop hl
+	call PlaceString
+	ret
+.none
+	pop de
+	ret
+; 12819
+
+
+.GetMenuAccountTextPointer ; 12819
+	ld e, a
+	ld d, 0
+	ld hl, wcf97
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+rept 6
+	add hl, de
+endr
+	ret
+; 12829
+
+
+.SetUpMenuItems ; 12829
+	xor a
+	ld [wcf76], a
+	call .FillMenuList
+
+	ld hl, StatusFlags
+	bit 0, [hl]
+	jr z, .no_pokedex
+	ld a, 0 ; pokedex
+	call .AppendMenuList
+.no_pokedex
+
+	ld a, [PartyCount]
+	and a
+	jr z, .no_pokemon
+	ld a, 1 ; pokemon
+	call .AppendMenuList
+.no_pokemon
+
+	ld a, [wLinkMode]
+	and a
+	jr nz, .no_pack
+	ld hl, StatusFlags2
+	bit 2, [hl] ; bug catching contest
+	jr nz, .no_pack
+	ld a, 2 ; pack
+	call .AppendMenuList
+.no_pack
+
+	ld hl, wPokegearFlags
+	bit 7, [hl]
+	jr z, .no_pokegear
+	ld a, 7 ; pokegear
+	call .AppendMenuList
+.no_pokegear
+
+	ld a, 3 ; status
+	call .AppendMenuList
+
+	ld a, [wLinkMode]
+	and a
+	jr nz, .no_save
+	ld hl, StatusFlags2
+	bit 2, [hl] ; bug catching contest
+	ld a, 8 ; quit
+	jr nz, .write
+	ld a, 4 ; save
+.write
+	call .AppendMenuList
+.no_save
+
+	ld a, 5 ; option
+	call .AppendMenuList
+	ld a, 6 ; exit
+	call .AppendMenuList
+	ld a, c
+	ld [MenuItemsList], a
+	ret
+; 1288d
+
+
+.FillMenuList ; 1288d
+	xor a
+	ld hl, MenuItemsList
+	ld [hli], a
+	ld a, -1
+	ld bc, MenuItemsListEnd - (MenuItemsList + 1)
+	call ByteFill
+	ld de, MenuItemsList + 1
+	ld c, 0
+	ret
+; 128a0
+
+.AppendMenuList ; 128a0
+	ld [de], a
+	inc de
+	inc c
+	ret
+; 128a4
+
+.DrawMenuAccount_ ; 128a4
+	jp .DrawMenuAccount
+; 128a7
+
+.PrintMenuAccount ; 128a7
+	call .IsMenuAccountOn
+	ret z
+	call .DrawMenuAccount
+	decoord 0, 14
+	jp .MenuDesc
+; 128b4
+
+.DrawMenuAccount ; 128b4
+	call .IsMenuAccountOn
+	ret z
+	hlcoord 0, 13
+	lb bc, 5, 10
+	call ClearBox
+	hlcoord 0, 13
+	ld b, 3
+	ld c, 8
+	jp TextBoxPalette
+; 128cb
+
+.IsMenuAccountOn ; 128cb
+	ld a, [Options2]
+	and 1
+	ret
+; 128d1
+
+.DrawBugContestStatusBox ; 128d1
+	ld hl, StatusFlags2
+	bit 2, [hl] ; bug catching contest
+	ret z
+	callba Function24bdc
+	ret
+; 128de
+
+.DrawBugContestStatus ; 128de
+	ld hl, StatusFlags2
+	bit 2, [hl] ; bug catching contest
+	jr nz, .contest
+	ret
+.contest
+	callba Function24be7
+	ret
+; 128ed
+
+
+StartMenu_Exit: ; 128ed
+; Exit the menu.
+
+	ld a, 1
+	ret
+; 128f0
+
+
+StartMenu_Quit: ; 128f0
+; Retire from the bug catching contest.
+
+	ld hl, .EndTheContestText
+	call Function12cf5
+	jr c, .DontEndContest
+	ld a, BANK(BugCatchingContestReturnToGateScript)
+	ld hl, BugCatchingContestReturnToGateScript
+	call FarQueueScript
+	ld a, 4
+	ret
+
+.DontEndContest
+	ld a, 0
+	ret
+
+.EndTheContestText
+	text_jump UnknownText_0x1c1a6c
+	db "@"
+; 1290b
+
+
+StartMenu_Save: ; 1290b
+; Save the game.
+
+	call BufferScreen
+	callba Function14a1a
+	jr nc, .asm_12919
+	ld a, 0
+	ret
+.asm_12919
+	ld a, 1
+	ret
+; 1291c
+
+
+StartMenu_Option: ; 1291c
+; Game options.
+
+	call FadeToMenu
+	callba OptionsMenu
+	ld a, 6
+	ret
+; 12928
+
+
+StartMenu_Status: ; 12928
+; Player status.
+
+	call FadeToMenu
+	callba Function25105
+	call Function2b3c
+	ld a, 0
+	ret
+; 12937
+
+
+StartMenu_Pokedex: ; 12937
+
+	ld a, [PartyCount]
+	and a
+	jr z, .asm_12949
+
+	call FadeToMenu
+	callba Pokedex
+	call Function2b3c
+
+.asm_12949
+	ld a, 0
+	ret
+; 1294c
+
+
+StartMenu_Pokegear: ; 1294c
+
+	call FadeToMenu
+	callba Function90b8d
+	call Function2b3c
+	ld a, 0
+	ret
+; 1295b
+
+
+StartMenu_Pack: ; 1295b
+
+	call FadeToMenu
+	callba Pack
+	ld a, [wcf66]
+	and a
+	jr nz, .asm_12970
+	call Function2b3c
+	ld a, 0
+	ret
+.asm_12970
+	call Function2b4d
+	ld a, 4
+	ret
+; 12976
+
+
+StartMenu_Pokemon: ; 12976
+
+	ld a, [PartyCount]
+	and a
+	jr z, .return
+
+	call FadeToMenu
+
+.choosemenu
+	xor a
+	ld [PartyMenuActionText], a ; Choose a POKéMON.
+	call ClearBGPalettes
+
+.menu
+	callba Function5004f
+	callba Function50405
+	callba Function503e0
+
+.menunoreload
+	callba WritePartyMenuTilemap
+	callba PrintPartyMenuText
+	call WaitBGMap
+	call SetPalettes ; load regular palettes?
+	call DelayFrame
+	callba PartyMenuSelect
+	jr c, .return ; if cancelled or pressed B
+
+	call PokemonActionSubmenu
+	cp 3
+	jr z, .menu
+	cp 0
+	jr z, .choosemenu
+	cp 1
+	jr z, .menunoreload
+	cp 2
+	jr z, .quit
+
+.return
+	call Function2b3c
+	ld a, 0
+	ret
+
+.quit
+	ld a, b
+	push af
+	call Function2b4d
+	pop af
+	ret
+; 129d5
+
+Function129d5: ; 129d5
+	ld a, [NumItems]
+	and a
+	ret nz
+	ld a, [NumKeyItems]
+	and a
+	ret nz
+	ld a, [NumBalls]
+	and a
+	ret nz
+	ld hl, TMsHMs
+	ld b, NUM_TMS + NUM_HMS
+.asm_129e9
+	ld a, [hli]
+	and a
+	jr nz, .asm_129f2
+	dec b
+	jr nz, .asm_129e9
+	scf
+	ret
+.asm_129f2
+	and a
+	ret
+
+Function129f4: ; 129f4
+	push de
+	call PartyMonItemName
+	callba _CheckTossableItem
+	ld a, [wItemAttributeParamBuffer]
+	and a
+	jr nz, .asm_12a3f
+	ld hl, UnknownText_0x12a45
+	call MenuTextBox
+	callba Function24fbf
+	push af
+	call WriteBackup
+	call ExitMenu
+	pop af
+	jr c, .asm_12a42
+	ld hl, UnknownText_0x12a4a
+	call MenuTextBox
+	call YesNoBox
+	push af
+	call ExitMenu
+	pop af
+	jr c, .asm_12a42
+	pop hl
+	ld a, [wd107]
+	call TossItem
+	call PartyMonItemName
+	ld hl, UnknownText_0x12a4f
+	call MenuTextBox
+	call ExitMenu
+	and a
+	ret
+.asm_12a3f
+	call Function12a54
+.asm_12a42
+	pop hl
+	scf
+	ret
+; 12a45 (4:6a45)
+
+UnknownText_0x12a45: ; 0x12a45
+	; Toss out how many @ (S)?
+	text_jump UnknownText_0x1c1a90
+	db "@"
+; 0x12a4a
+
+UnknownText_0x12a4a: ; 0x12a4a
+	; Throw away @ @ (S)?
+	text_jump UnknownText_0x1c1aad
+	db "@"
+; 0x12a4f
+
+UnknownText_0x12a4f: ; 0x12a4f
+	; Discarded @ (S).
+	text_jump UnknownText_0x1c1aca
+	db "@"
+; 0x12a54
+
+Function12a54: ; 12a54 (4:6a54)
+	ld hl, UnknownText_0x12a5b
+	call MenuTextBoxBackup
+	ret
+; 12a5b (4:6a5b)
+
+UnknownText_0x12a5b: ; 0x12a5b
+	; That's too impor- tant to toss out!
+	text_jump UnknownText_0x1c1adf
+	db "@"
+; 0x12a60
+
+CantUseItem: ; 12a60
+	ld hl, CantUseItemText
+	call Function2012
+	ret
+; 12a67
+
+CantUseItemText: ; 12a67
+	text_jump UnknownText_0x1c1b03
+	db "@"
+; 12a6c
+
+
+PartyMonItemName: ; 12a6c
+	ld a, [CurItem]
+	ld [wd265], a
+	call GetItemName
+	call CopyName1
+	ret
+; 12a79
+
+
+CancelPokemonAction: ; 12a79
+	callba Function50405
+	callba Function8ea71
+	ld a, 1
+	ret
+; 12a88
+
+
+PokemonActionSubmenu: ; 12a88
+	hlcoord 1, 15
+	lb bc, 2, 18
+	call ClearBox
+	callba MonSubmenu
+	call GetCurNick
+	ld a, [MenuSelection]
+	ld hl, .Actions
+	ld de, 3
+	call IsInArray
+	jr nc, .nothing
+
+	inc hl
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.nothing
+	ld a, 0
+	ret
+
+.Actions
+	dbw MONMENU_CUT,        MonMenu_Cut ; Cut
+	dbw MONMENU_FLY,        MonMenu_Fly ; Fly
+	dbw MONMENU_SURF,       MonMenu_Surf ; Surf
+	dbw MONMENU_STRENGTH,   MonMenu_Strength ; Strength
+	dbw MONMENU_FLASH,      MonMenu_Flash ; Flash
+	dbw MONMENU_WHIRLPOOL,  MonMenu_Whirlpool ; Whirlpool
+	dbw MONMENU_DIG,        MonMenu_Dig ; Dig
+	dbw MONMENU_TELEPORT,   MonMenu_Teleport ; Teleport
+	dbw MONMENU_SOFTBOILED, MonMenu_Softboiled_MilkDrink ; Softboiled
+	dbw MONMENU_MILKDRINK,  MonMenu_Softboiled_MilkDrink ; MilkDrink
+	dbw MONMENU_HEADBUTT,   MonMenu_Headbutt ; Headbutt
+	dbw MONMENU_WATERFALL,  MonMenu_Waterfall ; Waterfall
+	dbw MONMENU_ROCKSMASH,  MonMenu_RockSmash ; RockSmash
+	dbw MONMENU_SWEETSCENT, MonMenu_SweetScent ; SweetScent
+	dbw MONMENU_STATS,      OpenPartyStats
+	dbw MONMENU_SWITCH,     SwitchPartyMons
+	dbw MONMENU_ITEM,       GiveTakePartyMonItem
+	dbw MONMENU_CANCEL,     CancelPokemonAction
+	dbw MONMENU_MOVE,       ManagePokemonMoves ; move
+	dbw MONMENU_MAIL,       MonMailAction ; mail
+; 12aec
+
+
+SwitchPartyMons: ; 12aec
+
+; Don't try if there's nothing to switch!
+	ld a, [PartyCount]
+	cp 2
+	jr c, .DontSwitch
+
+	ld a, [CurPartyMon]
+	inc a
+	ld [wd0e3], a
+
+	callba Function8ea8c
+	callba Function5042d
+
+	ld a, 4
+	ld [PartyMenuActionText], a
+	callba WritePartyMenuTilemap
+	callba PrintPartyMenuText
+
+	hlcoord 0, 1
+	ld bc, 20 * 2
+	ld a, [wd0e3]
+	dec a
+	call AddNTimes
+	ld [hl], "▷"
+	call WaitBGMap
+	call SetPalettes
+	call DelayFrame
+
+	callba PartyMenuSelect
+	bit 1, b
+	jr c, .DontSwitch
+
+	callba _SwitchPartyMons
+
+	xor a
+	ld [PartyMenuActionText], a
+
+	callba Function5004f
+	callba Function50405
+	callba Function503e0
+
+	ld a, 1
+	ret
+
+.DontSwitch
+	xor a
+	ld [PartyMenuActionText], a
+	call CancelPokemonAction
+	ret
+; 12b60
+
+
+GiveTakePartyMonItem: ; 12b60
+
+; Eggs can't hold items!
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .asm_12ba6
+
+	ld hl, GiveTakeItemMenuData
+	call LoadMenuDataHeader
+	call InterpretMenu2
+	call ExitMenu
+	jr c, .asm_12ba6
+
+	call GetCurNick
+	ld hl, StringBuffer1
+	ld de, wd050
+	ld bc, $b
+	call CopyBytes
+	ld a, [MenuSelection2]
+	cp 1
+	jr nz, .asm_12ba0
+
+	call LoadStandardMenuDataHeader
+	call ClearPalettes
+	call Function12ba9
+	call ClearPalettes
+	call LoadFontsBattleExtra
+	call ExitMenu
+	ld a, 0
+	ret
+
+.asm_12ba0
+	call TakePartyItem
+	ld a, 3
+	ret
+
+.asm_12ba6
+	ld a, 3
+	ret
+; 12ba9
+
+
+Function12ba9: ; 12ba9
+
+	callba Function106a5
+
+.loop
+	callba Function106be
+
+	ld a, [wcf66]
+	and a
+	jr z, .quit
+
+	ld a, [wcf65]
+	cp 2
+	jr z, .next
+
+	call CheckTossableItem
+	ld a, [wItemAttributeParamBuffer]
+	and a
+	jr nz, .next
+
+	call Function12bd9
+	jr .quit
+
+.next
+	ld hl, CantBeHeldText
+	call MenuTextBoxBackup
+	jr .loop
+
+.quit
+	ret
+; 12bd9
+
+
+Function12bd9: ; 12bd9
+
+	call SpeechTextBox
+	call PartyMonItemName
+	call GetPartyItemLocation
+	ld a, [hl]
+	and a
+	jr z, .asm_12bf4
+
+	push hl
+	ld d, a
+	callba ItemIsMail
+	pop hl
+	jr c, .asm_12c01
+	ld a, [hl]
+	jr .asm_12c08
+
+.asm_12bf4
+	call Function12cea
+	ld hl, MadeHoldText
+	call MenuTextBoxBackup
+	call GivePartyItem
+	ret
+
+.asm_12c01
+	ld hl, PleaseRemoveMailText
+	call MenuTextBoxBackup
+	ret
+
+.asm_12c08
+	ld [wd265], a
+	call GetItemName
+	ld hl, SwitchAlreadyHoldingText
+	call Function12cf5
+	jr c, .asm_12c4b
+
+	call Function12cea
+	ld a, [wd265]
+	push af
+	ld a, [CurItem]
+	ld [wd265], a
+	pop af
+	ld [CurItem], a
+	call Function12cdf
+	jr nc, .asm_12c3c
+
+	ld hl, TookAndMadeHoldText
+	call MenuTextBoxBackup
+	ld a, [wd265]
+	ld [CurItem], a
+	call GivePartyItem
+	ret
+
+.asm_12c3c
+	ld a, [wd265]
+	ld [CurItem], a
+	call Function12cdf
+	ld hl, ItemStorageIsFullText
+	call MenuTextBoxBackup
+
+.asm_12c4b
+	ret
+; 12c4c
+
+
+GivePartyItem: ; 12c4c
+
+	call GetPartyItemLocation
+	ld a, [CurItem]
+	ld [hl], a
+	ld d, a
+	callba ItemIsMail
+	jr nc, .asm_12c5f
+	call Function12cfe
+
+.asm_12c5f
+	ret
+; 12c60
+
+
+TakePartyItem: ; 12c60
+
+	call SpeechTextBox
+	call GetPartyItemLocation
+	ld a, [hl]
+	and a
+	jr z, .asm_12c8c
+
+	ld [CurItem], a
+	call Function12cdf
+	jr nc, .asm_12c94
+
+	callba ItemIsMail
+	call GetPartyItemLocation
+	ld a, [hl]
+	ld [wd265], a
+	ld [hl], NO_ITEM
+	call GetItemName
+	ld hl, TookFromText
+	call MenuTextBoxBackup
+	jr .asm_12c9a
+
+.asm_12c8c
+	ld hl, IsntHoldingAnythingText
+	call MenuTextBoxBackup
+	jr .asm_12c9a
+
+.asm_12c94
+	ld hl, ItemStorageIsFullText
+	call MenuTextBoxBackup
+
+.asm_12c9a
+	ret
+; 12c9b
+
+
+GiveTakeItemMenuData: ; 12c9b
+	db %01010000
+	db 12, 12 ; start coords
+	db 17, 19 ; end coords
+	dw .Items
+	db 1 ; default option
+
+.Items
+	db %10000000 ; x padding
+	db 2 ; # items
+	db "GIVE@"
+	db "TAKE@"
+; 12caf
+
+
+TookAndMadeHoldText: ; 12caf
+	text_jump UnknownText_0x1c1b2c
+	db "@"
+; 12cb4
+
+MadeHoldText: ; 12cb4
+	text_jump UnknownText_0x1c1b57
+	db "@"
+; 12cb9
+
+PleaseRemoveMailText: ; 12cb9
+	text_jump UnknownText_0x1c1b6f
+	db "@"
+; 12cbe
+
+IsntHoldingAnythingText: ; 12cbe
+	text_jump UnknownText_0x1c1b8e
+	db "@"
+; 12cc3
+
+ItemStorageIsFullText: ; 12cc3
+	text_jump UnknownText_0x1c1baa
+	db "@"
+; 12cc8
+
+TookFromText: ; 12cc8
+	text_jump UnknownText_0x1c1bc4
+	db "@"
+; 12ccd
+
+SwitchAlreadyHoldingText: ; 12ccd
+	text_jump UnknownText_0x1c1bdc
+	db "@"
+; 12cd2
+
+CantBeHeldText: ; 12cd2
+	text_jump UnknownText_0x1c1c09
+	db "@"
+; 12cd7
+
+
+GetPartyItemLocation: ; 12cd7
+	push af
+	ld a, MON_ITEM
+	call GetPartyParamLocation
+	pop af
+	ret
+; 12cdf
+
+
+Function12cdf: ; 12cdf
+	ld a, $1
+	ld [wItemQuantityChangeBuffer], a
+	ld hl, NumItems
+	jp ReceiveItem
+; 12cea
+
+
+Function12cea: ; 12cea (4:6cea)
+	ld a, $1
+	ld [wItemQuantityChangeBuffer], a
+	ld hl, NumItems
+	jp TossItem
+
+Function12cf5: ; 12cf5
+	call MenuTextBox
+	call YesNoBox
+	jp ExitMenu
+; 12cfe
+
+
+Function12cfe: ; 12cfe (4:6cfe)
+	ld de, wd002
+	callba Function11e75
+	ld hl, PlayerName
+	ld de, wd023
+	ld bc, $a
+	call CopyBytes
+	ld hl, PlayerID
+	ld bc, $2
+	call CopyBytes
+	ld a, [CurPartySpecies]
+	ld [de], a
+	inc de
+	ld a, [CurItem]
+	ld [de], a
+	ld a, [CurPartyMon]
+	ld hl, sPartyScratch1
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, wd002
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	ld a, BANK(sPartyScratch1)
+	call GetSRAMBank
+	call CopyBytes
+	call CloseSRAM
+	ret
+
+MonMailAction: ; 12d45
+; If in the time capsule or trade center,
+; selecting the mail only allows you to
+; read the mail.
+	ld a, [wLinkMode]
+	cp LINK_TIMECAPSULE
+	jr z, .read
+	cp LINK_TRADECENTER
+	jr z, .read
+
+; Show the READ/TAKE/QUIT menu.
+	ld hl, .MenuDataHeader
+	call LoadMenuDataHeader
+	call InterpretMenu2
+	call ExitMenu
+
+; Interpret the menu.
+	jp c, .done
+	ld a, [MenuSelection2]
+	cp $1
+	jr z, .read
+	cp $2
+	jr z, .take
+	jp .done
+
+.read
+	callba ReadPartyMonMail
+	ld a, $0
+	ret
+
+.take
+	ld hl, .sendmailtopctext
+	call Function12cf5
+	jr c, .RemoveMailToBag
+	ld a, [CurPartyMon]
+	ld b, a
+	callba Function4456e
+	jr c, .MailboxFull
+	ld hl, .sentmailtopctext
+	call MenuTextBoxBackup
+	jr .done
+
+.MailboxFull
+	ld hl, .mailboxfulltext
+	call MenuTextBoxBackup
+	jr .done
+
+.RemoveMailToBag
+	ld hl, .mailwilllosemessagetext
+	call Function12cf5
+	jr c, .done
+	call GetPartyItemLocation
+	ld a, [hl]
+	ld [CurItem], a
+	call Function12cdf
+	jr nc, .BagIsFull
+	call GetPartyItemLocation
+	ld [hl], $0
+	call GetCurNick
+	ld hl, .tookmailfrommontext
+	call MenuTextBoxBackup
+	jr .done
+
+.BagIsFull
+	ld hl, .bagfulltext
+	call MenuTextBoxBackup
+	jr .done
+
+.done
+	ld a, $3
+	ret
+; 12dc9
+
+
+.MenuDataHeader: ; 0x12dc9
+	db $40 ; flags
+	db 10, 12 ; start coords
+	db 17, 19 ; end coords
+	dw .MenuData2
+	db 1 ; default option
+; 0x12dd1
+
+.MenuData2: ; 0x12dd1
+	db $80 ; flags
+	db 3 ; items
+	db "READ@"
+	db "TAKE@"
+	db "QUIT@"
+; 0x12de2
+
+
+.mailwilllosemessagetext: ; 0x12de2
+; The MAIL will lose its message. OK?
+	text_jump UnknownText_0x1c1c22
+	db "@"
+; 0x12de7
+
+.tookmailfrommontext: ; 0x12de7
+; MAIL detached from <POKEMON>.
+	text_jump UnknownText_0x1c1c47
+	db "@"
+; 0x12dec
+
+.bagfulltext: ; 0x12dec
+; There's no space for removing MAIL.
+	text_jump UnknownText_0x1c1c62
+	db "@"
+; 0x12df1
+
+.sendmailtopctext: ; 0x12df1
+; Send the removed MAIL to your PC?
+	text_jump UnknownText_0x1c1c86
+	db "@"
+; 0x12df6
+
+.mailboxfulltext: ; 0x12df6
+; Your PC's MAILBOX is full.
+	text_jump UnknownText_0x1c1ca9
+	db "@"
+; 0x12dfb
+
+.sentmailtopctext: ; 0x12dfb
+; The MAIL was sent to your PC.
+	text_jump UnknownText_0x1c1cc4
+	db "@"
+; 0x12e00
+
+
+OpenPartyStats: ; 12e00
+	call LoadStandardMenuDataHeader
+	call ClearSprites
+; PartyMon
+	xor a
+	ld [MonType], a
+	call LowVolume
+	predef StatsScreenInit
+	call MaxVolume
+	call Call_ExitMenu
+	ld a, 0
+	ret
+; 12e1b
+
+
+MonMenu_Cut: ; 12e1b
+	callba CutFunction
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12e2d
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e2d
+	ld a, $3
+	ret
+; 12e30
+
+
+MonMenu_Fly: ; 12e30
+	callba FlyFunction
+	ld a, [wd0ec]
+	cp $2
+	jr z, .asm_12e4c
+	cp $0
+	jr z, .asm_12e4f
+	callba MobileFn_1060b5
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e4c
+	ld a, $3
+	ret
+
+.asm_12e4f
+	ld a, $0
+	ret
+
+.asm_12e52
+	ld a, $1
+	ret
+; 12e55
+
+MonMenu_Flash: ; 12e55
+	callba Functionc8ac
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12e67
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e67
+	ld a, $3
+	ret
+; 12e6a
+
+MonMenu_Strength: ; 12e6a
+	callba StrengthFunction
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12e7c
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e7c
+	ld a, $3
+	ret
+; 12e7f
+
+MonMenu_Whirlpool: ; 12e7f
+	callba WhirlpoolFunction
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12e91
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12e91
+	ld a, $3
+	ret
+; 12e94
+
+MonMenu_Waterfall: ; 12e94
+	callba Functioncade
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12ea6
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12ea6
+	ld a, $3
+	ret
+; 12ea9
+
+MonMenu_Teleport: ; 12ea9
+	callba TeleportFunction
+	ld a, [wd0ec]
+	and a
+	jr z, .asm_12eba
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12eba
+	ld a, $3
+	ret
+; 12ebd
+
+MonMenu_Surf: ; 12ebd
+	callba SurfFunction
+	ld a, [wd0ec]
+	and a
+	jr z, .asm_12ece
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12ece
+	ld a, $3
+	ret
+; 12ed1
+
+MonMenu_Dig: ; 12ed1
+	callba DigFunction
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12ee3
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12ee3
+	ld a, $3
+	ret
+; 12ee6
+
+MonMenu_Softboiled_MilkDrink: ; 12ee6
+	call Function12f05
+	jr nc, .asm_12ef3
+	callba Functionf3df
+	jr .asm_12ef9
+
+.asm_12ef3
+	ld hl, UnknownText_0x12f00
+	call PrintText
+
+.asm_12ef9
+	xor a
+	ld [PartyMenuActionText], a
+	ld a, $3
+	ret
+; 12f00
+
+UnknownText_0x12f00: ; 0x12f00
+	; Not enough HP!
+	text_jump UnknownText_0x1c1ce3
+	db "@"
+; 0x12f05
+
+Function12f05: ; 12f05
+	ld a, MON_MAXHP
+	call GetPartyParamLocation
+	ld a, [hli]
+	ld [hDividend + 0], a
+	ld a, [hl]
+	ld [hDividend + 1], a
+	ld a, $5
+	ld [hDivisor], a
+	ld b, $2
+	call Divide
+	ld a, MON_HP + 1
+	call GetPartyParamLocation
+	ld a, [hQuotient + 2]
+	sub [hl]
+	dec hl
+	ld a, [hQuotient + 1]
+	sbc [hl]
+	ret
+; 12f26
+
+MonMenu_Headbutt: ; 12f26
+	callba HeadbuttFunction
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12f38
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12f38
+	ld a, $3
+	ret
+; 12f3b
+
+MonMenu_RockSmash: ; 12f3b
+	callba RockSmashFunction
+	ld a, [wd0ec]
+	cp $1
+	jr nz, .asm_12f4d
+	ld b, $4
+	ld a, $2
+	ret
+
+.asm_12f4d
+	ld a, $3
+	ret
+; 12f50
+
+MonMenu_SweetScent: ; 12f50
+	callba SweetScentFromMenu
+	ld b, $4
+	ld a, $2
+	ret
+; 12f5b
+
+Function12f5b: ; 12f5b
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	call LoadFontsBattleExtra
+	call Function12f73
+	pop bc
+	ld a, b
+	ld [Options], a
+	push af
+	call ClearBGPalettes
+	pop af
+	ret
+; 12f73
+
+Function12f73: ; 12f73
+	call SetUpMoveScreenBG
+	ld de, Unknown_12fb2
+	call Function1bb1
+	call Function131ef
+	ld hl, wcfa5
+	set 6, [hl]
+	jr Function12f93
+
+Function12f86: ; 12f86
+	call Function1bd3
+	bit 1, a
+	jp nz, Function12f9f
+	bit 0, a
+	jp nz, Function12f9c
+
+Function12f93: ; 12f93
+	call PrepareToPlaceMoveData
+	call PlaceMoveData
+	jp Function12f86
+; 12f9c
+
+Function12f9c: ; 12f9c
+	and a
+	jr Function12fa0
+
+Function12f9f: ; 12f9f
+	scf
+
+Function12fa0: ; 12fa0
+	push af
+	xor a
+	ld [wd0e3], a
+	ld hl, wcfa5
+	res 6, [hl]
+	call ClearSprites
+	call ClearTileMap
+	pop af
+	ret
+; 12fb2
+
+Unknown_12fb2: ; 12fb2
+	db $03, $01, $03, $01, $40, $00, $20, $c3
+; 12fba
+
+ManagePokemonMoves: ; 12fba
+	ld a, [CurPartySpecies]
+	cp EGG
+	jr z, .egg
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	call MoveScreenLoop
+	pop af
+	ld [Options], a
+	call ClearBGPalettes
+
+.egg
+	ld a, $0
+	ret
+; 12fd5
+
+MoveScreenLoop: ; 12fd5
+	ld a, [CurPartyMon]
+	inc a
+	ld [wd0d8], a
+	call SetUpMoveScreenBG
+	call Function132d3
+	ld de, Unknown_13163
+	call Function1bb1
+.loop
+	call Function131ef
+	ld hl, wcfa5
+	set 6, [hl]
+	jr .skip_joy
+
+.joy_loop
+	call Function1bd3
+	bit 1, a
+	jp nz, .b_button
+	bit 0, a
+	jp nz, .a_button
+	bit 4, a
+	jp nz, .d_right
+	bit 5, a
+	jp nz, .d_left
+
+.skip_joy
+	call PrepareToPlaceMoveData
+	ld a, [wMoveSwapBuffer]
+	and a
+	jr nz, .moving_move
+	call PlaceMoveData
+	jp .joy_loop
+
+.moving_move
+	ld a, " "
+	hlcoord 1, 11
+	ld bc, 5
+	call ByteFill
+	hlcoord 1, 12
+	lb bc, 5, SCREEN_WIDTH - 2
+	call ClearBox
+	hlcoord 1, 12
+	ld de, String_1316b
+	call PlaceString
+	jp .joy_loop
+.b_button: ; 13038
+	call PlayClickSFX
+	call WaitSFX
+	ld a, [wMoveSwapBuffer]
+	and a
+	jp z, .exit
+
+	ld a, [wMoveSwapBuffer]
+	ld [MenuSelection2], a
+	xor a
+	ld [wMoveSwapBuffer], a
+	hlcoord 1, 2
+	lb bc, 8, SCREEN_WIDTH - 2
+	call ClearBox
+	jp .loop
+; 1305b
+
+.d_right: ; 1305b
+	ld a, [wMoveSwapBuffer]
+	and a
+	jp nz, .joy_loop
+
+	ld a, [CurPartyMon]
+	ld b, a
+	push bc
+	call .cycle_right
+	pop bc
+	ld a, [CurPartyMon]
+	cp b
+	jp z, .joy_loop
+	jp MoveScreenLoop
+
+.d_left: ; 13075
+	ld a, [wMoveSwapBuffer]
+	and a
+	jp nz, .joy_loop
+	ld a, [CurPartyMon]
+	ld b, a
+	push bc
+	call .cycle_left
+	pop bc
+	ld a, [CurPartyMon]
+	cp b
+	jp z, .joy_loop
+	jp MoveScreenLoop
+
+.cycle_right
+	ld a, [CurPartyMon]
+	inc a
+	ld [CurPartyMon], a
+	ld c, a
+	ld b, 0
+	ld hl, PartySpecies
+	add hl, bc
+	ld a, [hl]
+	cp -1
+	jr z, .cycle_left
+	cp EGG
+	ret nz
+	jr .cycle_right
+
+.cycle_left
+	ld a, [CurPartyMon]
+	and a
+	ret z
+.cycle_left_loop
+	ld a, [CurPartyMon]
+	dec a
+	ld [CurPartyMon], a
+	ld c, a
+	ld b, 0
+	ld hl, PartySpecies
+	add hl, bc
+	ld a, [hl]
+	cp EGG
+	ret nz
+	ld a, [CurPartyMon]
+	and a
+	jr z, .cycle_right
+	jr .cycle_left_loop
+; 130c6
+
+.a_button: ; 130c6
+	call PlayClickSFX
+	call WaitSFX
+	ld a, [wMoveSwapBuffer]
+	and a
+	jr nz, .place_move
+	ld a, [MenuSelection2]
+	ld [wMoveSwapBuffer], a
+	call Function1bee
+	jp .moving_move
+
+.place_move
+	ld hl, PartyMon1Moves
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	push hl
+	call .copy_move
+	pop hl
+	ld bc, $15
+	add hl, bc
+	call .copy_move
+	ld a, [wBattleMode]
+	jr z, .swap_moves
+	ld hl, BattleMonMoves
+	ld bc, $20
+	ld a, [CurPartyMon]
+	call AddNTimes
+	push hl
+	call .copy_move
+	pop hl
+	ld bc, 6
+	add hl, bc
+	call .copy_move
+
+.swap_moves
+	ld de, SFX_SWITCH_POKEMON
+	call PlaySFX
+	call WaitSFX
+	ld de, SFX_SWITCH_POKEMON
+	call PlaySFX
+	call WaitSFX
+	hlcoord 1, 2
+	lb bc, 8, 18
+	call ClearBox
+	hlcoord 10, 10
+	lb bc, 1, 9
+	call ClearBox
+	jp .loop
+; 1313a
+
+.copy_move: ; 1313a
+	push hl
+	ld a, [MenuSelection2]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld d, h
+	ld e, l
+	pop hl
+	ld a, [wMoveSwapBuffer]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [de]
+	ld b, [hl]
+	ld [hl], a
+	ld a, b
+	ld [de], a
+	ret
+; 13154
+
+.exit: ; 13154
+	xor a
+	ld [wMoveSwapBuffer], a
+	ld hl, wcfa5
+	res 6, [hl]
+	call ClearSprites
+	jp ClearTileMap
+; 13163
+
+Unknown_13163: ; 13163
+	db $03, $01, $03, $01, $40, $00, $20, $f3
+; 1316b
+
+String_1316b: ; 1316b
+	db "Where?@"
+; 13172
+
+SetUpMoveScreenBG: ; 13172
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	callba Functionfb571
+	callba InefficientlyClear121BytesAtwc300
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, $0
+	ld hl, PartySpecies
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+	ld e, $2
+	callba Function8e83f
+	hlcoord 0, 1
+	ld b, 9
+	ld c, 18
+	call TextBox
+	hlcoord 0, 11
+	ld b, 5
+	ld c, 18
+	call TextBox
+	hlcoord 2, 0
+	lb bc, 2, 3
+	call ClearBox
+	xor a
+	ld [MonType], a
+	ld hl, PartyMonNicknames
+	ld a, [CurPartyMon]
+	call GetNick
+	hlcoord 5, 1
+	call PlaceString
+	push bc
+	callba CopyPkmnToTempMon
+	pop hl
+	call PrintLevel
+	ld hl, PlayerHPPal
+	call SetHPPal
+	ld b, $e
+	call GetSGBLayout
+	hlcoord 16, 0
+	lb bc, 1, 3
+	jp ClearBox
+; 131ef
+
+Function131ef: ; 131ef
+	xor a
+	ld [hBGMapMode], a
+	ld [wMoveSwapBuffer], a
+	ld [MonType], a
+	predef CopyPkmnToTempMon
+	ld hl, TempMonMoves
+	ld de, wListMoves_MoveIndicesBuffer
+	ld bc, NUM_MOVES
+	call CopyBytes
+	ld a, SCREEN_WIDTH * 2
+	ld [Buffer1], a
+	hlcoord 2, 3
+	predef ListMoves
+	hlcoord 10, 4
+	predef Function50c50
+	call WaitBGMap
+	call SetPalettes
+	ld a, [wd0eb]
+	inc a
+	ld [wcfa3], a
+	hlcoord 0, 11
+	ld b, 5
+	ld c, 18
+	jp TextBox
+; 13235
+
+PrepareToPlaceMoveData: ; 13235
+	ld hl, PartyMon1Moves
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [CurPartyMon]
+	call AddNTimes
+	ld a, [MenuSelection2]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ld [CurMove], a
+	hlcoord 1, 12
+	lb bc, 5, 18
+	jp ClearBox
+; 13256
+
+PlaceMoveData: ; 13256
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 0, 10
+	ld de, String_132ba
+	call PlaceString
+	hlcoord 0, 11
+	ld de, String_132c2
+	call PlaceString
+	hlcoord 12, 12
+	ld de, String_132ca
+	call PlaceString
+	ld a, [CurMove]
+	ld b, a
+	hlcoord 2, 12
+	predef PrintMoveType
+	ld a, [CurMove]
+	dec a
+	ld hl, Moves + MOVE_POWER
+	ld bc, MOVE_LENGTH
+	call AddNTimes
+	ld a, BANK(Moves)
+	call GetFarByte
+	hlcoord 16, 12
+	cp 2
+	jr c, .no_power
+	ld [wd265], a
+	ld de, wd265
+	lb bc, 1, 3
+	call PrintNum
+	jr .description
+
+.no_power
+	ld de, String_132cf
+	call PlaceString
+
+.description
+	hlcoord 1, 14
+	predef PrintMoveDesc
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+; 132ba
+
+String_132ba: ; 132ba
+	db "┌─────┐@"
+; 132c2
+String_132c2: ; 132c2
+	db "│TYPE/└@"
+; 132ca
+String_132ca: ; 132ca
+	db "ATK/@"
+; 132cf
+String_132cf: ; 132cf
+	db "---@"
+; 132d3
+
+Function132d3: ; 132d3
+	call Function132da
+	call Function132fe
+	ret
+; 132da
+
+Function132da: ; 132da
+	ld a, [CurPartyMon]
+	and a
+	ret z
+	ld c, a
+	ld e, a
+	ld d, 0
+	ld hl, PartyCount
+	add hl, de
+.loop
+	ld a, [hl]
+	and a
+	jr z, .prev
+	cp EGG
+	jr z, .prev
+	cp NUM_POKEMON + 1
+	jr c, .legal
+
+.prev
+	dec hl
+	dec c
+	jr nz, .loop
+	ret
+
+.legal
+	hlcoord 16, 0
+	ld [hl], "◀"
+	ret
+; 132fe
+
+Function132fe: ; 132fe
+	ld a, [CurPartyMon]
+	inc a
+	ld c, a
+	ld a, [PartyCount]
+	cp c
+	ret z
+	ld e, c
+	ld d, 0
+	ld hl, PartySpecies
+	add hl, de
+.loop
+	ld a, [hl]
+	cp -1
+	ret z
+	and a
+	jr z, .next
+	cp EGG
+	jr z, .next
+	cp NUM_POKEMON + 1
+	jr c, .legal
+
+.next
+	inc hl
+	jr .loop
+
+.legal
+	hlcoord 18, 0
+	ld [hl], "▶"
+	ret
+; 13327
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -1,56 +1,56 @@
 StdScripts::
-	dbw BANK(PokeCenterNurseScript), PokeCenterNurseScript
-	dbw BANK(DifficultBookshelfScript), DifficultBookshelfScript
-	dbw BANK(PictureBookshelfScript), PictureBookshelfScript
-	dbw BANK(MagazineBookshelfScript), MagazineBookshelfScript
-	dbw BANK(TeamRocketOathScript), TeamRocketOathScript
-	dbw BANK(IncenseBurnerScript), IncenseBurnerScript
-	dbw BANK(MerchandiseShelfScript), MerchandiseShelfScript
-	dbw BANK(TownMapScript), TownMapScript
-	dbw BANK(WindowScript), WindowScript
-	dbw BANK(TVScript), TVScript
-	dbw BANK(HomepageScript), HomepageScript
-	dbw BANK(Radio1Script), Radio1Script
-	dbw BANK(Radio2Script), Radio2Script
-	dbw BANK(TrashCanScript), TrashCanScript
-	dbw BANK(StrengthBoulderScript), StrengthBoulderScript
-	dbw BANK(SmashRockScript), SmashRockScript
-	dbw BANK(PokeCenterSignScript), PokeCenterSignScript
-	dbw BANK(MartSignScript), MartSignScript
-	dbw BANK(GoldenrodRocketsScript), GoldenrodRocketsScript
-	dbw BANK(RadioTowerRocketsScript), RadioTowerRocketsScript
-	dbw BANK(ElevatorButtonScript), ElevatorButtonScript
-	dbw BANK(DayToTextScript), DayToTextScript
-	dbw BANK(BugContestResultsWarpScript), BugContestResultsWarpScript
-	dbw BANK(BugContestResultsScript), BugContestResultsScript
-	dbw BANK(InitializeEventsScript), InitializeEventsScript
-	dbw BANK(AskNumber1MScript), AskNumber1MScript
-	dbw BANK(AskNumber2MScript), AskNumber2MScript
-	dbw BANK(RegisteredNumberMScript), RegisteredNumberMScript
-	dbw BANK(NumberAcceptedMScript), NumberAcceptedMScript
-	dbw BANK(NumberDeclinedMScript), NumberDeclinedMScript
-	dbw BANK(PhoneFullMScript), PhoneFullMScript
-	dbw BANK(RematchMScript), RematchMScript
-	dbw BANK(GiftMScript), GiftMScript
-	dbw BANK(PackFullMScript), PackFullMScript
-	dbw BANK(RematchGiftMScript), RematchGiftMScript
-	dbw BANK(AskNumber1FScript), AskNumber1FScript
-	dbw BANK(AskNumber2FScript), AskNumber2FScript
-	dbw BANK(RegisteredNumberFScript), RegisteredNumberFScript
-	dbw BANK(NumberAcceptedFScript), NumberAcceptedFScript
-	dbw BANK(NumberDeclinedFScript), NumberDeclinedFScript
-	dbw BANK(PhoneFullFScript), PhoneFullFScript
-	dbw BANK(RematchFScript), RematchFScript
-	dbw BANK(GiftFScript), GiftFScript
-	dbw BANK(PackFullFScript), PackFullFScript
-	dbw BANK(RematchGiftFScript), RematchGiftFScript
-	dbw BANK(GymStatue1Script), GymStatue1Script
-	dbw BANK(GymStatue2Script), GymStatue2Script
-	dbw BANK(ReceiveItemScript), ReceiveItemScript
-	dbw BANK(ReceiveTogepiEggScript), ReceiveTogepiEggScript
-	dbw BANK(PCScript), PCScript
-	dbw BANK(GameCornerCoinVendorScript), GameCornerCoinVendorScript
-	dbw BANK(HappinessCheckScript), HappinessCheckScript
+	dba PokeCenterNurseScript
+	dba DifficultBookshelfScript
+	dba PictureBookshelfScript
+	dba MagazineBookshelfScript
+	dba TeamRocketOathScript
+	dba IncenseBurnerScript
+	dba MerchandiseShelfScript
+	dba TownMapScript
+	dba WindowScript
+	dba TVScript
+	dba HomepageScript
+	dba Radio1Script
+	dba Radio2Script
+	dba TrashCanScript
+	dba StrengthBoulderScript
+	dba SmashRockScript
+	dba PokeCenterSignScript
+	dba MartSignScript
+	dba GoldenrodRocketsScript
+	dba RadioTowerRocketsScript
+	dba ElevatorButtonScript
+	dba DayToTextScript
+	dba BugContestResultsWarpScript
+	dba BugContestResultsScript
+	dba InitializeEventsScript
+	dba AskNumber1MScript
+	dba AskNumber2MScript
+	dba RegisteredNumberMScript
+	dba NumberAcceptedMScript
+	dba NumberDeclinedMScript
+	dba PhoneFullMScript
+	dba RematchMScript
+	dba GiftMScript
+	dba PackFullMScript
+	dba RematchGiftMScript
+	dba AskNumber1FScript
+	dba AskNumber2FScript
+	dba RegisteredNumberFScript
+	dba NumberAcceptedFScript
+	dba NumberDeclinedFScript
+	dba PhoneFullFScript
+	dba RematchFScript
+	dba GiftFScript
+	dba PackFullFScript
+	dba RematchGiftFScript
+	dba GymStatue1Script
+	dba GymStatue2Script
+	dba ReceiveItemScript
+	dba ReceiveTogepiEggScript
+	dba PCScript
+	dba GameCornerCoinVendorScript
+	dba HappinessCheckScript
 
 PokeCenterNurseScript:
 ; EVENT_WELCOMED_TO_POKECOM_CENTER is never set
@@ -302,7 +302,7 @@
 	end
 
 BugContestResultsWarpScript:
-	special WhiteBGMap
+	special ClearBGPalettes
 	scall BugContestResults_CopyContestantsToResults
 	setevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
 	clearevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
@@ -328,7 +328,7 @@
 	farwritetext ContestResults_ConsolationPrizeText
 	keeptextopen
 	waitbutton
-	verbosegiveitem BERRY, 1
+	verbosegiveitem BERRY
 	iffalse BugContestResults_NoRoomForBerry
 
 BugContestResults_DidNotWin
@@ -387,7 +387,7 @@
 	itemtotext SUN_STONE, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
-	verbosegiveitem SUN_STONE, 1
+	verbosegiveitem SUN_STONE
 	iffalse BugContestResults_NoRoomForSunStone
 	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc332
@@ -396,7 +396,7 @@
 	itemtotext EVERSTONE, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
-	verbosegiveitem EVERSTONE, 1
+	verbosegiveitem EVERSTONE
 	iffalse BugContestResults_NoRoomForEverstone
 	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc343
@@ -405,7 +405,7 @@
 	itemtotext GOLD_BERRY, $1
 	farwritetext ContestResults_PlayerWonAPrizeText
 	closetext
-	verbosegiveitem GOLD_BERRY, 1
+	verbosegiveitem GOLD_BERRY
 	iffalse BugContestResults_NoRoomForGoldBerry
 	jump BugContestResults_ReturnAfterWinnersPrize
 ; 0xbc354
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -39,7 +39,7 @@
 
 
 ; save bg palette 8
-	ld hl, Unkn1Pals + 8 * 7 ; Unkn1Pals + 7 pals
+	ld hl, wMapPals + 8 * 7 ; wMapPals + 7 pals
 
 ; save wram bank
 	ld a, [rSVBK]
@@ -70,7 +70,7 @@
 
 
 ; restore bg palette 8
-	ld hl, Unkn2Pals - 1 ; last byte in Unkn1Pals
+	ld hl, Unkn2Pals - 1 ; last byte in wMapPals
 
 ; save wram bank
 	ld a, [rSVBK]
@@ -116,7 +116,7 @@
 	ret
 ; 8c079
 
-FadeInBGMap:: ; 8c079
+FadeInPalettes:: ; 8c079
 	ld c, $12
 	call GetTimePalFade
 	ld b, $4
@@ -124,7 +124,7 @@
 	ret
 ; 8c084
 
-FadeBlackBGMap:: ; 8c084
+FadeOutPalettes:: ; 8c084
 	call Function8c0c1
 	ld c, $9
 	call GetTimePalFade
@@ -172,12 +172,12 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	ld hl, Unkn1Pals + 8
+	ld hl, wMapPals + 8
 	ld c, $6
 .asm_8c0d4
 	ld a, e
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -1,6 +1,6 @@
 _TitleScreen: ; 10ed67
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	
@@ -144,7 +144,7 @@
 	
 ; Update palette colors
 	ld hl, TitleScreenPalettes
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, 4 * 32
 	call CopyBytes
 	
@@ -220,7 +220,7 @@
 	ld [hBGMapMode], a
 	
 	xor a
-	ld [Unkn1Pals + 2], a
+	ld [wMapPals + 2], a
 	
 ; Play starting sound effect
 	call SFXChannelsOff
@@ -231,7 +231,7 @@
 ; 10eea7
 
 SuicuneFrameIterator: ; 10eea7
-	ld hl, Unkn1Pals + 2
+	ld hl, wMapPals + 2
 	ld a, [hl]
 	ld c, a
 	inc [hl]
--- /dev/null
+++ b/engine/tmhm.asm
@@ -1,0 +1,113 @@
+CanLearnTMHMMove: ; 11639
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld hl, BaseTMHM
+	push hl
+
+	ld a, [wd262]
+	ld b, a
+	ld c, 0
+	ld hl, TMHMMoves
+.loop
+	ld a, [hli]
+	and a
+	jr z, .end
+	cp b
+	jr z, .asm_11659
+	inc c
+	jr .loop
+
+.asm_11659
+	pop hl
+	ld b, CHECK_FLAG
+	push de
+	ld d, 0
+	predef FlagPredef
+	pop de
+	ret
+
+.end
+	pop hl
+	ld c, 0
+	ret
+; 1166a
+
+GetTMHMMove: ; 1166a
+	ld a, [wd265]
+	dec a
+	ld hl, TMHMMoves
+	ld b, 0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	ld [wd265], a
+	ret
+; 1167a
+
+TMHMMoves: ; 1167a
+	db DYNAMICPUNCH
+	db HEADBUTT
+	db CURSE
+	db ROLLOUT
+	db ROAR
+	db TOXIC
+	db ZAP_CANNON
+	db ROCK_SMASH
+	db PSYCH_UP
+	db HIDDEN_POWER
+	db SUNNY_DAY
+	db SWEET_SCENT
+	db SNORE
+	db BLIZZARD
+	db HYPER_BEAM
+	db ICY_WIND
+	db PROTECT
+	db RAIN_DANCE
+	db GIGA_DRAIN
+	db ENDURE
+	db FRUSTRATION
+	db SOLARBEAM
+	db IRON_TAIL
+	db DRAGONBREATH
+	db THUNDER
+	db EARTHQUAKE
+	db RETURN
+	db DIG
+	db PSYCHIC_M
+	db SHADOW_BALL
+	db MUD_SLAP
+	db DOUBLE_TEAM
+	db ICE_PUNCH
+	db SWAGGER
+	db SLEEP_TALK
+	db SLUDGE_BOMB
+	db SANDSTORM
+	db FIRE_BLAST
+	db SWIFT
+	db DEFENSE_CURL
+	db THUNDERPUNCH
+	db DREAM_EATER
+	db DETECT
+	db REST
+	db ATTRACT
+	db THIEF
+	db STEEL_WING
+	db FIRE_PUNCH
+	db FURY_CUTTER
+	db NIGHTMARE
+	db CUT
+	db FLY
+	db SURF
+	db STRENGTH
+	db FLASH
+	db WHIRLPOOL
+	db WATERFALL
+
+; Move tutor
+	db FLAMETHROWER
+	db THUNDERBOLT
+	db ICE_BEAM
+
+	db 0 ; end
+; 116b7
--- /dev/null
+++ b/event/basement_key.asm
@@ -1,0 +1,34 @@
+_BasementKey: ; 507b4
+; Are we even in the right map to use this?
+	ld a, [MapGroup]
+	cp GROUP_WAREHOUSE_ENTRANCE
+	jr nz, .nope
+
+	ld a, [MapNumber]
+	cp MAP_WAREHOUSE_ENTRANCE
+	jr nz, .nope
+; Are we on the tile in front of the door?
+	call GetFacingTileCoord
+	ld a, d
+	cp 22
+	jr nz, .nope
+	ld a, e
+	cp 10
+	jr nz, .nope
+; Let's use the Basement Key
+	ld hl, .BasementKeyScript
+	call QueueScript
+	ld a, 1
+	ld [wd0ec], a
+	ret
+
+.nope
+	ld a, $0
+	ld [wd0ec], a
+	ret
+; 507e1
+
+.BasementKeyScript: ; 0x507e1
+	loadmovesprites
+	farjump BasementDoorScript
+; 0x507e6
--- a/event/battle_tower.asm
+++ b/event/battle_tower.asm
@@ -302,7 +302,7 @@
 
 .nextmon: ; 8b31a
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	inc de
 	pop bc
--- a/event/buena.asm
+++ b/event/buena.asm
@@ -201,9 +201,9 @@
 	ld [hBGMapMode], a
 	ld hl, MenuDataHeader_0x8b0d1
 	call CopyMenuDataHeader
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	ld bc, $0015
 	add hl, bc
 	ld de, .Points_string
@@ -252,10 +252,10 @@
 	ld [hBGMapMode], a
 	call Function352f
 	call UpdateSprites
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [MenuSelection]
 	ld c, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [MenuSelection], a
 	ld a, [wcf73]
 	cp $2
--- /dev/null
+++ b/event/bug_contest_2.asm
@@ -1,0 +1,136 @@
+Special_SelectRandomBugContestContestants: ; 139a8
+; 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 hl, BugCatchingContestantEventFlagTable
+.loop1
+	push bc
+	push hl
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld b, RESET_FLAG
+	call EventFlagAction
+	pop hl
+rept 2
+	inc hl
+endr
+	pop bc
+	dec c
+	jr nz, .loop1
+
+; Now that that's out of the way, we can get on to the good stuff.
+	ld c, 5
+.loop2
+	push bc
+.next
+; Choose a flag at uniform random to be set.
+	call Random
+	cp $fa ; 250
+	jr nc, .next
+	ld c, $19 ; 25
+	call SimpleDivide
+	ld e, b
+	ld d, 0
+	ld hl, BugCatchingContestantEventFlagTable
+rept 2
+	add hl, de
+endr
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	push de
+; If we've already set it, it doesn't count.
+	ld b, CHECK_FLAG
+	call EventFlagAction
+	pop de
+	ld a, c
+	and a
+	jr nz, .next
+; Set the flag.  This will cause that sprite to not be visible in the contest.
+	ld b, SET_FLAG
+	call EventFlagAction
+	pop bc
+; Check if we're done.  If so, return.  Otherwise, choose the next victim.
+	dec c
+	jr nz, .loop2
+	ret
+; 139ed
+
+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.
+
+	ld hl, BugCatchingContestantEventFlagTable
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld b, CHECK_FLAG
+	call EventFlagAction
+	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
+
+ContestDropOffMons: ; 13a12
+	ld hl, PartyMon1HP
+	ld a, [hli]
+	or [hl]
+	jr z, .fainted
+; Mask the rest of your party by setting the count to 1...
+	ld hl, PartyCount
+	ld a, 1
+	ld [hli], a
+	inc hl
+; ... backing up the second mon index somewhere...
+	ld a, [hl]
+	ld [wBugContestSecondPartySpecies], a
+; ... and replacing it with the terminator byte
+	ld [hl], $ff
+	xor a
+	ld [ScriptVar], a
+	ret
+
+.fainted
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; 13a31
+
+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
+.loop
+	ld a, [hli]
+	cp $ff
+	jr z, .done
+	inc b
+	jr .loop
+
+.done
+	ld a, b
+	ld [PartyCount], a
+	ret
+; 13a47
--- /dev/null
+++ b/event/bug_contest_judging.asm
@@ -1,0 +1,480 @@
+_BugContestJudging: ; 1369d
+	call ContestScore
+	callba MobileFn_105f79
+	call Function13819
+	ld a, [wd00a]
+	call LoadContestantName
+	ld a, [wd00b]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, BugContest_ThirdPlaceText
+	call PrintText
+	ld a, [EndFlypoint]
+	call LoadContestantName
+	ld a, [MovementBuffer]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, BugContest_SecondPlaceText
+	call PrintText
+	ld a, [wd002]
+	call LoadContestantName
+	ld a, [wd003]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, BugContest_FirstPlaceText
+	call PrintText
+	jp Function13807
+; 136eb
+
+BugContest_FirstPlaceText: ; 0x136eb
+	text_jump ContestJudging_FirstPlaceText
+	start_asm
+BugContest_FirstPlace: ; 136f0
+	ld de, SFX_1ST_PLACE
+	call PlaySFX
+	call WaitSFX
+	ld hl, BugContest_FirstPlaceScoreText
+	ret
+; 136fd
+
+BugContest_FirstPlaceScoreText: ; 0x136fd
+	; The winning score was @  points!
+	text_jump ContestJudging_FirstPlaceScoreText
+	db "@"
+; 0x13702
+
+BugContest_SecondPlaceText: ; 0x13702
+	; Placing second was @ , who caught a @ !@ @
+	text_jump ContestJudging_SecondPlaceText
+	start_asm
+BugContest_SecondPlace: ; 13707
+	ld de, SFX_2ND_PLACE
+	call PlaySFX
+	call WaitSFX
+	ld hl, BugContest_SecondPlaceScoreText
+	ret
+; 13714
+
+BugContest_SecondPlaceScoreText: ; 0x13714
+	; The score was @  points!
+	text_jump ContestJudging_SecondPlaceScoreText
+	db "@"
+; 0x13719
+
+BugContest_ThirdPlaceText: ; 0x13719
+	; Placing third was @ , who caught a @ !@ @
+	text_jump ContestJudging_ThirdPlaceText
+	start_asm
+; 0x1371e
+
+BugContest_ThirdPlace: ; 1371e
+	ld de, SFX_3RD_PLACE
+	call PlaySFX
+	call WaitSFX
+	ld hl, BugContest_ThirdPlaceScoreText
+	ret
+; 1372b
+
+BugContest_ThirdPlaceScoreText: ; 0x1372b
+	; The score was @  points!
+	text_jump ContestJudging_ThirdPlaceScoreText
+	db "@"
+; 0x13730
+
+LoadContestantName: ; 13730
+
+; If a = 0, get your name.
+	dec a
+	jr z, .done
+; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a.
+	ld c, a
+	ld b, 0
+	ld hl, BugContestantPointers
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+; Copy the Trainer Class to c.
+	ld a, [hli]
+	ld c, a
+; Save hl and bc for later.
+	push hl
+	push bc
+; Get the Trainer Class name and copy it into wd016.
+	callab GetTrainerClassName
+	ld hl, StringBuffer1
+	ld de, wd016
+	ld bc, TRAINER_CLASS_NAME_LENGTH
+	call CopyBytes
+	ld hl, wd016
+; Delete the trailing terminator and replace it with a space.
+.next
+	ld a, [hli]
+	cp "@"
+	jr nz, .next
+	dec hl
+	ld [hl], " "
+	inc hl
+	ld d, h
+	ld e, l
+; Restore the Trainer Class ID and Trainer ID pointer.  Save de for later.
+	pop bc
+	pop hl
+	push de
+; Get the name of the trainer with class c and ID b.
+	ld a, [hl]
+	ld b, a
+	callab GetTrainerName
+; Append the name to wd016.
+	ld hl, StringBuffer1
+	pop de
+	ld bc, NAME_LENGTH - 1
+	jp CopyBytes
+
+.done
+	ld hl, PlayerName
+	ld de, wd016
+	ld bc, NAME_LENGTH
+	jp CopyBytes
+; 13783
+
+BugContestantPointers: ; 13783
+	dw BugContestant_BugCatcherDon ; This reverts back to the player
+	dw BugContestant_BugCatcherDon
+	dw BugContestant_BugCatcherEd
+	dw BugContestant_CooltrainerMNick
+	dw BugContestant_PokefanMWilliam
+	dw BugContestant_BugCatcherBenny
+	dw BugContestant_CamperBarry
+	dw BugContestant_PicnickerCindy
+	dw BugContestant_BugCatcherJosh
+	dw BugContestant_YoungsterSamuel
+	dw BugContestant_SchoolboyKipp
+; 13799
+
+BugContestant_BugCatcherDon:
+	db BUG_CATCHER, DON
+	dbw KAKUNA,     300
+	dbw METAPOD,    285
+	dbw CATERPIE,   226
+
+BugContestant_BugCatcherEd:
+	db BUG_CATCHER, ED
+	dbw BUTTERFREE, 286
+	dbw BUTTERFREE, 251
+	dbw CATERPIE,   237
+
+BugContestant_CooltrainerMNick:
+	db COOLTRAINERM, NICK
+	dbw SCYTHER,    357
+	dbw BUTTERFREE, 349
+	dbw PINSIR,     368
+
+BugContestant_PokefanMWilliam:
+	db POKEFANM, WILLIAM
+	dbw PINSIR,     332
+	dbw BUTTERFREE, 324
+	dbw VENONAT,    321
+
+BugContestant_BugCatcherBenny:
+	db BUG_CATCHER, BUG_CATCHER_BENNY
+	dbw BUTTERFREE, 318
+	dbw WEEDLE,     295
+	dbw CATERPIE,   285
+
+BugContestant_CamperBarry:
+	db CAMPER, BARRY
+	dbw PINSIR,     366
+	dbw VENONAT,    329
+	dbw KAKUNA,     314
+
+BugContestant_PicnickerCindy:
+	db PICNICKER, CINDY
+	dbw BUTTERFREE, 341
+	dbw METAPOD,    301
+	dbw CATERPIE,   264
+
+BugContestant_BugCatcherJosh:
+	db BUG_CATCHER, JOSH
+	dbw SCYTHER,    326
+	dbw BUTTERFREE, 292
+	dbw METAPOD,    282
+
+BugContestant_YoungsterSamuel:
+	db YOUNGSTER, SAMUEL
+	dbw WEEDLE,     270
+	dbw PINSIR,     282
+	dbw CATERPIE,   251
+
+BugContestant_SchoolboyKipp:
+	db SCHOOLBOY, KIPP
+	dbw VENONAT,    267
+	dbw PARAS,      254
+	dbw KAKUNA,     259
+; 13807
+
+Function13807: ; 13807
+	ld hl, wd00a
+	ld de, -4
+	ld b, 3
+.loop
+	ld a, [hl]
+	cp 1
+	jr z, .done
+	add hl, de
+	dec b
+	jr nz, .loop
+
+.done
+	ret
+; 13819
+
+Function13819: ; 13819
+	call Function13833
+	call Function138b0
+	ld hl, wd00e
+	ld a, 1
+	ld [hli], a
+	ld a, [wContestMon]
+	ld [hli], a
+	ld a, [hProduct]
+	ld [hli], a
+	ld a, [hMultiplicand]
+	ld [hl], a
+	call Function1383e
+	ret
+; 13833
+
+Function13833: ; 13833
+	ld hl, wd002
+	ld b, 12
+	xor a
+.loop
+	ld [hli], a
+	dec b
+	jr nz, .loop
+	ret
+; 1383e
+
+Function1383e: ; 1383e
+	ld de, wd010
+	ld hl, wd004
+	ld c, 2
+	call StringCmp
+	jr c, .next
+	ld hl, EndFlypoint
+	ld de, wd00a
+	ld bc, 4
+	call CopyBytes
+	ld hl, wd002
+	ld de, EndFlypoint
+	ld bc, 4
+	call CopyBytes
+	ld hl, wd002
+	call Function138a0
+	jr .done
+
+.next
+	ld de, wd010
+	ld hl, wd008
+	ld c, 2
+	call StringCmp
+	jr c, .next2
+	ld hl, EndFlypoint
+	ld de, wd00a
+	ld bc, 4
+	call CopyBytes
+	ld hl, EndFlypoint
+	call Function138a0
+	jr .done
+
+.next2
+	ld de, wd010
+	ld hl, wd00c
+	ld c, 2
+	call StringCmp
+	jr c, .done
+	ld hl, wd00a
+	call Function138a0
+
+.done
+	ret
+; 138a0
+
+Function138a0: ; 138a0
+	ld de, wd00e
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	inc de
+	ld [hl], a
+	ret
+; 138b0
+
+Function138b0: ; 138b0
+	ld e, 0
+.loop
+	push de
+	call Special_CheckBugContestContestantFlag
+	pop de
+	jr nz, .done
+	ld a, e
+rept 2
+	inc a
+endr
+	ld [wd00e], a
+	dec a
+	ld c, a
+	ld b, 0
+	ld hl, BugContestantPointers
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+rept 2
+	inc hl
+endr
+.loop2
+	call Random
+	and 3
+	cp 3
+	jr z, .loop2
+	ld c, a
+	ld b, 0
+rept 3
+	add hl, bc
+endr
+	ld a, [hli]
+	ld [wd00f], a
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	call Random
+	and 7
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, h
+	ld [wd010], a
+	ld a, l
+	ld [wd011], a
+	push de
+	call Function1383e
+	pop de
+
+.done
+	inc e
+	ld a, e
+	cp 10
+	jr nz, .loop
+	ret
+; 13900
+
+ContestScore: ; 13900
+; Determine the player's score in the Bug Catching Contest.
+
+	xor a
+	ld [hProduct], a
+	ld [hMultiplicand], a
+
+	ld a, [wContestMonSpecies] ; Species
+	and a
+	jr z, .done
+
+	; Tally the following:
+
+	; Max HP * 4
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+	ld a, [wContestMonMaxHP + 1]
+	call .AddContestStat
+
+	; Stats
+	ld a, [wContestMonAttack  + 1]
+	call .AddContestStat
+	ld a, [wContestMonDefense + 1]
+	call .AddContestStat
+	ld a, [wContestMonSpeed   + 1]
+	call .AddContestStat
+	ld a, [wContestMonSpclAtk + 1]
+	call .AddContestStat
+	ld a, [wContestMonSpclDef + 1]
+	call .AddContestStat
+
+	; DVs
+	ld a, [wContestMonDVs + 0]
+	ld b, a
+	and 2
+rept 2
+	add a
+endr
+	ld c, a
+
+	swap b
+	ld a, b
+	and 2
+	add a
+	add c
+	ld d, a
+
+	ld a, [wContestMonDVs + 1]
+	ld b, a
+	and 2
+	ld c, a
+
+	swap b
+	ld a, b
+	and 2
+	srl a
+rept 2
+	add c
+endr
+rept 2
+	add d
+endr
+
+	call .AddContestStat
+
+	; Remaining HP / 8
+	ld a, [wContestMonHP + 1]
+	srl a
+	srl a
+	srl a
+	call .AddContestStat
+
+	; Whether it's holding an item
+	ld a, [wContestMonItem]
+	and a
+	jr z, .done
+
+	ld a, 1
+	call .AddContestStat
+
+.done
+	ret
+; 1397f
+
+.AddContestStat: ; 1397f
+	ld hl, hMultiplicand
+	add [hl]
+	ld [hl], a
+	ret nc
+	dec hl
+	inc [hl]
+	ret
+; 13988
--- /dev/null
+++ b/event/card_key.asm
@@ -1,0 +1,39 @@
+_CardKey: ; 50779
+; Are we even in the right map to use this?
+	ld a, [MapGroup]
+	cp GROUP_RADIO_TOWER_3F
+	jr nz, .nope
+
+	ld a, [MapNumber]
+	cp MAP_RADIO_TOWER_3F
+	jr nz, .nope
+; Are we facing the slot?
+	ld a, [PlayerDirection]
+	and $c
+	cp OW_UP
+	jr nz, .nope
+
+	call GetFacingTileCoord
+	ld a, d
+	cp 18
+	jr nz, .nope
+	ld a, e
+	cp 6
+	jr nz, .nope
+; Let's use the Card Key.
+	ld hl, .CardKeyScript
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+
+.nope
+	ld a, $0
+	ld [wd0ec], a
+	ret
+; 507af
+
+.CardKeyScript: ; 0x507af
+	loadmovesprites
+	farjump MapRadioTower3FSignpost2Script
+; 0x507b4
--- a/event/dratini.asm
+++ b/event/dratini.asm
@@ -12,7 +12,7 @@
 	call GetNthPartyMon
 	ld a, [bc]
 	ld c, a
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 .CheckForDratini
 ; start at the end of the party and search backwards for a Dratini
 	ld a, [hl]
@@ -59,7 +59,7 @@
 	call GetFarByte
 
 	; get the address of the move's PP and update the PP
-	ld hl, PartyMon1PP - PartyMon1Moves
+	ld hl, MON_PP - MON_MOVES
 	add hl, de
 	ld [hl], a
 
@@ -100,7 +100,7 @@
 	jr z, .EmptyParty
 	dec a
 	ret z
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 .loop
 	add hl, de
 	dec a
--- /dev/null
+++ b/event/elevator.asm
@@ -1,0 +1,287 @@
+Elevator:: ; 1342d
+	call Function1344a
+	call Function1347d
+	jr c, .asm_13448
+	ld [wd041], a
+	call Function134dd
+	jr c, .asm_13448
+	ld hl, wd041
+	cp [hl]
+	jr z, .asm_13448
+	call Function134c0
+	and a
+	ret
+
+.asm_13448
+	scf
+	ret
+; 1344a
+
+Function1344a: ; 1344a
+	ld a, b
+	ld [EngineBuffer1], a
+	ld a, e
+	ld [wd03f], a
+	ld a, d
+	ld [wd040], a
+	call Function1345a
+	ret
+; 1345a
+
+Function1345a: ; 1345a
+	ld de, OBPals + 8 * 6
+	ld bc, 4
+	ld hl, wd03f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	inc hl
+	ld [de], a
+	inc de
+.asm_1346f
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	ld [de], a
+	inc de
+	add hl, bc
+	cp $ff
+	jr nz, .asm_1346f
+	ret
+; 1347d
+
+Function1347d: ; 1347d
+	ld hl, wd03f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	ld c, a
+	inc hl
+	ld a, [BackupMapGroup]
+	ld d, a
+	ld a, [BackupMapNumber]
+	ld e, a
+	ld b, $0
+.asm_13495
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	cp $ff
+	jr z, .asm_134be
+rept 2
+	inc hl
+endr
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	inc hl
+	cp d
+	jr nz, .asm_134b7
+	ld a, [EngineBuffer1]
+	call GetFarByte
+	inc hl
+	cp e
+	jr nz, .asm_134b8
+	jr .asm_134bb
+
+.asm_134b7
+	inc hl
+
+.asm_134b8
+	inc b
+	jr .asm_13495
+
+.asm_134bb
+	xor a
+	ld a, b
+	ret
+
+.asm_134be
+	scf
+	ret
+; 134c0
+
+Function134c0: ; 134c0
+	push af
+	ld hl, wd03f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	inc hl
+	pop af
+	ld bc, 4
+	call AddNTimes
+	inc hl
+	ld de, BackupWarpNumber
+	ld a, [EngineBuffer1]
+	ld bc, 3
+	call FarCopyBytes
+	ret
+; 134dd
+
+Function134dd: ; 134dd
+	call LoadStandardMenuDataHeader
+	ld hl, Elevator_WhichFloorText
+	call PrintText
+	call Elevator_GetCurrentFloorText
+	ld hl, Elevator_MenuDataHeader
+	call CopyMenuDataHeader
+	call Function352f
+	call UpdateSprites
+	xor a
+	ld [wd0e4], a
+	call HandleScrollingMenu
+	call WriteBackup
+	ld a, [wcf73]
+	cp $2
+	jr z, .asm_1350b
+	xor a
+	ld a, [wcf77]
+	ret
+
+.asm_1350b
+	scf
+	ret
+; 1350d
+
+Elevator_WhichFloorText: ; 0x1350d
+	; Which floor?
+	text_jump UnknownText_0x1bd2bc
+	db "@"
+; 0x13512
+
+
+Elevator_GetCurrentFloorText: ; 13512
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set NO_TEXT_SCROLL, [hl]
+	hlcoord 0, 0
+	ld b, 4
+	ld c, 8
+	call TextBox
+	hlcoord 1, 2
+	ld de, Elevator_CurrentFloorText
+	call PlaceString
+	hlcoord 4, 4
+	call Elevator_GetCurrentFloorString
+	pop af
+	ld [Options], a
+	ret
+; 13537
+
+Elevator_CurrentFloorText: ; 13537
+	db "Now on:@"
+; 1353f
+
+
+Elevator_GetCurrentFloorString: ; 1353f
+	push hl
+	ld a, [wd041]
+	ld e, a
+	ld d, 0
+	ld hl, wd0f1
+	add hl, de
+	ld a, [hl]
+	pop de
+	call GetFloorString
+	ret
+; 13550
+
+Elevator_MenuDataHeader: ; 0x13550
+	db $40 ; flags
+	db 01, 12 ; start coords
+	db 09, 18 ; end coords
+	dw Elevator_MenuData2
+	db 1 ; default option
+; 0x13558
+
+Elevator_MenuData2: ; 0x13558
+	db $10 ; flags
+	db 4, 0 ; rows, columns
+	db 1 ; horizontal spacing
+	dbw 0, OBPals + 8 * 6
+	dba GetElevatorFlorStrings
+	dba NULL
+	dba NULL
+; 13568
+
+GetElevatorFlorStrings: ; 13568
+	ld a, [MenuSelection]
+
+GetFloorString: ; 1356b
+	push de
+	call FloorToString
+	ld d, h
+	ld e, l
+	pop hl
+	jp PlaceString
+; 13575
+
+FloorToString: ; 13575
+	push de
+	ld e, a
+	ld d, 0
+	ld hl, .floors
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	pop de
+	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
--- /dev/null
+++ b/event/forced_movement.asm
@@ -1,0 +1,68 @@
+Script_ForcedMovement:: ; 0x1253d
+	checkcode VAR_FACING
+	if_equal DOWN, .down
+	if_equal UP, .up
+	if_equal LEFT, .left
+	if_equal RIGHT, .right
+	end
+; 0x12550
+
+.up: ; 0x12550
+	applymovement PLAYER, .MovementData_up
+	end
+; 0x12555
+
+.down: ; 0x12555
+	applymovement PLAYER, .MovementData_down
+	end
+; 0x1255a
+
+.right: ; 0x1255a
+	applymovement PLAYER, .MovementData_right
+	end
+; 0x1255f
+
+.left: ; 0x1255f
+	applymovement PLAYER, .MovementData_left
+	end
+; 0x12564
+
+.MovementData_up: ; 0x12564
+	step_wait5
+	big_step_down
+	turn_in_down
+	step_wait5
+	big_step_down
+	turn_head_down
+	step_end
+; 0x1256b
+
+.MovementData_down: ; 0x1256b
+	step_wait5
+	big_step_down
+	turn_in_up
+	step_wait5
+	big_step_down
+	turn_head_up
+	step_end
+; 0x12572
+
+.MovementData_right: ; 0x12572
+	step_wait5
+	big_step_down
+	turn_in_left
+	step_wait5
+	big_step_down
+	turn_head_left
+	step_end
+; 0x12579
+
+.MovementData_left: ; 0x12579
+	step_wait5
+	big_step_down
+	turn_in_right
+	step_wait5
+	big_step_down
+	turn_head_right
+	step_end
+; 0x12580
--- /dev/null
+++ b/event/itemball.asm
@@ -1,0 +1,54 @@
+FindItemInBallScript:: ; 0x122ce
+	callasm .TryReceiveItem
+	iffalse .no_room
+	disappear LAST_TALKED
+	loadfont
+	writetext .text_found
+	playsound SFX_ITEM
+	pause 60
+	itemnotify
+	loadmovesprites
+	end
+; 0x122e3
+
+.no_room: ; 0x122e3
+	loadfont
+	writetext .text_found
+	closetext
+	writetext .text_bag_full
+	closetext
+	loadmovesprites
+	end
+; 0x122ee
+
+.text_found: ; 0x122ee
+	; found @ !
+	text_jump UnknownText_0x1c0a1c
+	db "@"
+; 0x122f3
+
+.text_bag_full: ; 0x122f3
+	; But   can't carry any more items.
+	text_jump UnknownText_0x1c0a2c
+	db "@"
+; 0x122f8
+
+.TryReceiveItem: ; 122f8
+	xor a
+	ld [ScriptVar], a
+	ld a, [EngineBuffer1]
+	ld [wd265], a
+	call GetItemName
+	ld hl, StringBuffer3
+	call CopyName2
+	ld a, [EngineBuffer1]
+	ld [CurItem], a
+	ld a, [CurFruit]
+	ld [wItemQuantityChangeBuffer], a
+	ld hl, NumItems
+	call ReceiveItem
+	ret nc
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; 12324
--- /dev/null
+++ b/event/itemfinder.asm
@@ -1,0 +1,58 @@
+ItemFinder: ; 12580
+	callba CheckForSignpostItems
+	jr c, .found_something
+	ld hl, .Script_FoundNothing
+	jr .resume
+
+.found_something
+	ld hl, .Script_FoundSomething
+
+.resume
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 12599
+
+.ItemfinderSound: ; 12599
+	ld c, $4
+.sfx_loop
+	push bc
+	ld de, SFX_SECOND_PART_OF_ITEMFINDER
+	call WaitPlaySFX
+	ld de, SFX_TRANSACTION
+	call WaitPlaySFX
+	pop bc
+	dec c
+	jr nz, .sfx_loop
+	ret
+; 125ad
+
+.Script_FoundSomething: ; 0x125ad
+	reloadmappart
+	special UpdateTimePals
+	callasm .ItemfinderSound
+	writetext .Text_FoundSomething
+	loadmovesprites
+	end
+; 0x125ba
+
+.Script_FoundNothing: ; 0x125ba
+	reloadmappart
+	special UpdateTimePals
+	writetext .Text_FoundNothing
+	loadmovesprites
+	end
+; 0x125c3
+
+.Text_FoundSomething: ; 0x125c3
+	; Yes! ITEMFINDER indicates there's an item nearby.
+	text_jump UnknownText_0x1c0a77
+	db "@"
+; 0x125c8
+
+.Text_FoundNothing: ; 0x125c8
+	; Nope! ITEMFINDER isn't responding.
+	text_jump UnknownText_0x1c0aa9
+	db "@"
+; 0x125cd
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -23,7 +23,7 @@
 ; 0x88018
 
 Special_SelectApricornForKurt: ; 88018
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld c, $1
 	xor a
 	ld [wd0e4], a
@@ -40,7 +40,7 @@
 	and a
 	jr z, .done
 	ld [CurItem], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld c, a
 	push bc
 	call Kurt_PrintTextHowMany
@@ -67,7 +67,7 @@
 	ld [hBGMapMode], a
 	call Function352f
 	call UpdateSprites
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wcf73]
 	cp $2
 	jr z, .nope
@@ -98,9 +98,9 @@
 	db 4, 7
 	db 1
 	dbw 0, Buffer1
-	dbw BANK(.Name), .Name
-	dbw BANK(.Quantity), .Quantity
-	dbw BANK(NULL), NULL
+	dba .Name
+	dba .Quantity
+	dba NULL
 
 .Name: ; 8809f
 	ld a, [MenuSelection]
@@ -135,7 +135,7 @@
 .loop
 	xor a
 	ld [hBGMapMode], a
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
 	call .PlaceApricornName
 	call PlaceApricornQuantity
@@ -166,7 +166,7 @@
 	db 0, 0, -1, 0 ; XXX
 
 .PlaceApricornName: ; 88116
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	ld de, $0015
 	add hl, de
 	ld d, h
@@ -176,7 +176,7 @@
 ; 88126
 
 PlaceApricornQuantity: ; 88126
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	ld de, $0032
 	add hl, de
 	ld [hl], "×"
@@ -233,7 +233,7 @@
 	xor a
 	ld [ItemCountBuffer], a
 	ld a, -1
-	ld [MiscBuffer2], a
+	ld [wd002], a
 
 ; Search for [CurItem] in the bag.
 .loop1
@@ -253,7 +253,7 @@
 ; Increment the result counter and store the bag index of the match.
 	ld d, $0
 	push hl
-	ld hl, MiscBuffer2
+	ld hl, wd002
 	add hl, de
 	inc e
 	ld a, [ItemCountBuffer]
@@ -271,7 +271,7 @@
 	jr z, .done
 	dec a
 	jr z, .OnlyOne
-	ld hl, MiscBuffer2
+	ld hl, wd002
 
 .loop2
 	ld a, [hl]
@@ -316,7 +316,7 @@
 	jr nz, .loop2
 
 .OnlyOne
-	ld hl, MiscBuffer2
+	ld hl, wd002
 .loop4
 	ld a, [hl]
 	cp -1
--- a/event/magikarp.asm
+++ b/event/magikarp.asm
@@ -16,7 +16,7 @@
 	; Now let's compute its length based on its DVs and ID.
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
 	ld bc, MON_DVS
--- a/event/mom.asm
+++ b/event/mom.asm
@@ -103,13 +103,13 @@
 .AccessBankOfMom: ; 162a8
 	ld hl, UnknownText_0x1665d
 	call PrintText
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld hl, MenuDataHeader_0x166b5
 	call CopyMenuDataHeader
 	call InterpretMenu2
 	call WriteBackup
 	jr c, .cancel
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, .withdraw
 	cp $2
@@ -148,7 +148,7 @@
 	ld [hl], a
 	ld a, $5
 	ld [wcf64], a
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function16517
 	call Function1656b
 	call Function16571
@@ -216,7 +216,7 @@
 	ld [hl], a
 	ld a, $5
 	ld [wcf64], a
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function16512
 	call Function1656b
 	call Function16571
@@ -510,7 +510,7 @@
 	ld de, StringBuffer2
 	lb bc, PRINTNUM_MONEY | PRINTNUM_LEADINGZEROS | 3, 6
 	call PrintNum
-	ld a, [$ff9b]
+	ld a, [hVBlankCounter]
 	and $10
 	jr nz, .skip
 	hlcoord 13, 6
--- a/event/move_deleter.asm
+++ b/event/move_deleter.asm
@@ -12,7 +12,7 @@
 	jr z, .asm_2c5bc
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Moves + 1
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hl]
 	and a
@@ -19,13 +19,13 @@
 	jr z, .asm_2c5ca
 	ld hl, UnknownText_0x2c5ea
 	call PrintText
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba Function12f5b
 	push af
 	call Function2b74
 	pop af
 	jr c, .asm_2c5c3
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	push af
 	ld a, [CurSpecies]
 	ld [wd265], a
@@ -116,7 +116,7 @@
 	ld hl, PartyMon1Moves
 	add hl, bc
 	ld a, [CurPartyMon]
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop bc
 	push bc
@@ -145,7 +145,7 @@
 	ld hl, PartyMon1PP
 	add hl, bc
 	ld a, [CurPartyMon]
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop bc
 	inc b
--- a/event/name_rater.asm
+++ b/event/name_rater.asm
@@ -91,7 +91,7 @@
 	jr c, .nope
 
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld de, PlayerID
--- /dev/null
+++ b/event/poisonstep.asm
@@ -1,0 +1,162 @@
+DoPoisonStep:: ; 505da
+	ld a, [PartyCount]
+	and a
+	jr z, .no_faint
+
+	xor a
+	ld c, 7
+	ld hl, EngineBuffer1
+.loop_clearEngineBuffer1
+	ld [hli], a
+	dec c
+	jr nz, .loop_clearEngineBuffer1
+
+	xor a
+	ld [CurPartyMon], a
+.loop_check_poison
+	call .DamageMonIfPoisoned
+	jr nc, .not_poisoned
+; the output flag is stored in c, copy it to the ([CurPartyMon] + 2)nd EngineBuffer
+; and set the corresponding flag in EngineBuffer1
+	ld a, [CurPartyMon]
+	ld e, a
+	ld d, 0
+	ld hl, EngineBuffer2
+	add hl, de
+	ld [hl], c
+	ld a, [EngineBuffer1]
+	or c
+	ld [EngineBuffer1], a
+
+.not_poisoned
+	ld a, [PartyCount]
+	ld hl, CurPartyMon
+	inc [hl]
+	cp [hl]
+	jr nz, .loop_check_poison
+
+	ld a, [EngineBuffer1]
+	and %10
+	jr nz, .someone_has_fainted
+	ld a, [EngineBuffer1]
+	and %01
+	jr z, .no_faint
+	call .PlayPoisonSFX
+	xor a
+	ret
+
+.someone_has_fainted
+	ld a, BANK(.Script_MonFaintedToPoison)
+	ld hl, .Script_MonFaintedToPoison
+	call CallScript
+	scf
+	ret
+
+.no_faint
+	xor a
+	ret
+; 5062e
+
+.DamageMonIfPoisoned: ; 5062e
+; check if mon is poisoned, return if not
+	ld a, MON_STATUS
+	call GetPartyParamLocation
+	ld a, [hl]
+	and 1 << PSN
+	ret z
+
+; check if mon is already fainted, return if so
+	ld a, MON_HP
+	call GetPartyParamLocation
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+	or c
+	ret z
+
+; do 1 HP damage
+	dec bc
+	ld [hl], c
+	dec hl
+	ld [hl], b
+
+; check if mon has fainted as a result of poison damage
+	ld a, b
+	or c
+	jr nz, .not_fainted
+
+; the mon has fainted, reset its status, set carry, and return %10
+	ld a, MON_STATUS
+	call GetPartyParamLocation
+	ld [hl], 0
+	ld c, %10
+	scf
+	ret
+
+.not_fainted
+; set carry and return %01
+	ld c, %01
+	scf
+	ret
+; 50658
+
+.PlayPoisonSFX: ; 50658
+	ld de, SFX_POISON
+	call PlaySFX
+	ld b, $2
+	predef Functioncbcdd
+	call DelayFrame
+	ret
+; 50669
+
+.Script_MonFaintedToPoison: ; 50669
+	callasm .PlayPoisonSFX
+	loadfont
+	callasm .CheckWhitedOut
+	iffalse .whiteout
+	loadmovesprites
+	end
+; 50677
+
+.whiteout: ; 50677
+	farjump Script_OverworldWhiteout
+; 5067b
+
+.CheckWhitedOut: ; 5067b
+	xor a
+	ld [CurPartyMon], a
+	ld de, EngineBuffer2
+.party_loop
+	push de
+	ld a, [de]
+	and %10
+	jr z, .mon_not_fainted
+	ld c, HAPPINESS_POISONFAINT
+	callba ChangeHappiness
+	callba GetPartyNick
+	ld hl, .PoisonFaintText
+	call PrintText
+
+.mon_not_fainted
+	pop de
+	inc de
+	ld hl, CurPartyMon
+	inc [hl]
+	ld a, [PartyCount]
+	cp [hl]
+	jr nz, .party_loop
+	predef CheckPlayerPartyForFitPkmn
+	ld a, d
+	ld [ScriptVar], a
+	ret
+; 506b2
+
+.PoisonFaintText: ; 506b2
+	text_jump UnknownText_0x1c0acc
+	db "@"
+; 506b7
+
+.PoisonWhiteOutText: ; 506b7
+	text_jump UnknownText_0x1c0ada
+	db "@"
+; 506bc
--- a/event/poke_seer.asm
+++ b/event/poke_seer.asm
@@ -97,7 +97,7 @@
 ; 4f134
 
 ReadCaughtData: ; 4f134
-	ld a, PartyMon1CaughtData - PartyMon1
+	ld a, MON_CAUGHTDATA
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld [wd03b], a
@@ -109,7 +109,7 @@
 	ld a, 1
 	ld [wd002], a
 
-	ld a, PartyMon1ID - PartyMon1
+	ld a, MON_ID
 	call GetPartyParamLocation
 	ld a, [PlayerID]
 	cp [hl]
@@ -358,7 +358,7 @@
 
 
 SeerAdvice: ; 4f2b4
-	ld a, PartyMon1Level - PartyMon1
+	ld a, MON_LEVEL
 	call GetPartyParamLocation
 	ld a, [wd038 + 2]
 	ld c, a
@@ -426,7 +426,7 @@
 
 
 GetCaughtGender: ; 4f301
-	ld hl, PartyMon1CaughtGender - PartyMon1
+	ld hl, MON_CAUGHTGENDER
 	add hl, bc
 
 	ld a, [hl]
--- /dev/null
+++ b/event/sacred_ash.asm
@@ -1,0 +1,74 @@
+
+_SacredAsh: ; 507e6
+	ld a, $0
+	ld [wd0ec], a
+	call CheckAnyFaintedMon
+	ret nc
+
+	ld hl, SacredAshScript
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 507fb
+
+CheckAnyFaintedMon: ; 507fb
+	ld de, PARTYMON_STRUCT_LENGTH
+	ld bc, PartySpecies
+	ld hl, PartyMon1HP
+	ld a, [PartyCount]
+	and a
+	ret z
+
+.loop
+	push af
+	push hl
+	ld a, [bc]
+	inc bc
+	cp EGG
+	jr z, .next
+
+	ld a, [hli]
+	or [hl]
+	jr z, .done
+
+.next
+	pop hl
+	add hl, de
+	pop af
+	dec a
+	jr nz, .loop
+	xor a
+	ret
+
+.done
+	pop hl
+	pop af
+	scf
+	ret
+; 50821
+
+SacredAshScript: ; 0x50821
+	special HealParty
+	reloadmappart
+	playsound SFX_WARP_TO
+	special FadeOutPalettes
+	special FadeInPalettes
+	special FadeOutPalettes
+	special FadeInPalettes
+	special FadeOutPalettes
+	special FadeInPalettes
+	waitbutton
+	writetext UnknownText_0x50845
+	playsound SFX_CAUGHT_MON
+	waitbutton
+	closetext
+	loadmovesprites
+	end
+; 0x50845
+
+UnknownText_0x50845: ; 0x50845
+	; 's #MON were all healed!
+	text_jump UnknownText_0x1c0b65
+	db "@"
+; 0x5084a
--- /dev/null
+++ b/event/squirtbottle.asm
@@ -1,0 +1,51 @@
+_Squirtbottle: ; 50730
+	ld hl, UnknownScript_0x5073c
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 5073c
+
+UnknownScript_0x5073c: ; 0x5073c
+	reloadmappart
+	special UpdateTimePals
+	callasm Function50753
+	iffalse UnknownScript_0x5074b
+	farjump WateredWeirdTreeScript
+; 0x5074b
+
+UnknownScript_0x5074b: ; 0x5074b
+	jumptext UnknownText_0x5074e
+; 0x5074e
+
+UnknownText_0x5074e: ; 0x5074e
+	; sprinkled water. But nothing happened…
+	text_jump UnknownText_0x1c0b3b
+	db "@"
+; 0x50753
+
+Function50753: ; 50753
+	ld a, [MapGroup]
+	cp GROUP_ROUTE_36
+	jr nz, .asm_50774
+
+	ld a, [MapNumber]
+	cp MAP_ROUTE_36
+	jr nz, .asm_50774
+
+	callba GetFacingObject
+	jr c, .asm_50774
+
+	ld a, d
+	cp $17
+	jr nz, .asm_50774
+
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_50774
+	xor a
+	ld [ScriptVar], a
+	ret
+; 50779
--- /dev/null
+++ b/event/sweet_scent.asm
@@ -1,0 +1,75 @@
+SweetScentFromMenu: ; 506bc
+	ld hl, UnknownScript_0x506c8
+	call QueueScript
+	ld a, $1
+	ld [wd0ec], a
+	ret
+; 506c8
+
+UnknownScript_0x506c8: ; 0x506c8
+	reloadmappart
+	special UpdateTimePals
+	callasm GetPartyNick
+	writetext UnknownText_0x50726
+	closetext
+	callasm SweetScentEncounter
+	iffalse UnknownScript_0x506e9
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue UnknownScript_0x506e5
+	battlecheck
+	startbattle
+	returnafterbattle
+	end
+; 0x506e5
+
+UnknownScript_0x506e5: ; 0x506e5
+	farjump BugCatchingContestBattleScript
+; 0x506e9
+
+UnknownScript_0x506e9: ; 0x506e9
+	writetext UnknownText_0x5072b
+	closetext
+	loadmovesprites
+	end
+; 0x506ef
+
+SweetScentEncounter: ; 506ef
+	callba CanUseSweetScent
+	jr nc, .no_battle
+	ld hl, StatusFlags2
+	bit 2, [hl]
+	jr nz, .not_in_bug_contest
+	callba GetMapEncounterRate
+	ld a, b
+	and a
+	jr z, .no_battle
+	callba ChooseWildEncounter
+	jr nz, .no_battle
+	jr .start_battle
+
+.not_in_bug_contest
+	callba ChooseWildEncounter_BugContest
+
+.start_battle
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.no_battle
+	xor a
+	ld [ScriptVar], a
+	ld [BattleType], a
+	ret
+; 50726
+
+UnknownText_0x50726: ; 0x50726
+	; used SWEET SCENT!
+	text_jump UnknownText_0x1c0b03
+	db "@"
+; 0x5072b
+
+UnknownText_0x5072b: ; 0x5072b
+	; Looks like there's nothing here…
+	text_jump UnknownText_0x1c0b1a
+	db "@"
+; 0x50730
--- a/event/unown.asm
+++ b/event/unown.asm
@@ -38,7 +38,7 @@
 	dec a
 	ld [CurPartyMon], a
 	push bc
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 	pop bc
 	ld a, [hl]
@@ -122,10 +122,10 @@
 	call LoadMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
 	call Function321c
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	inc hl
 	ld d, $0
 	ld e, $14
--- /dev/null
+++ b/event/whiteout.asm
@@ -1,0 +1,84 @@
+Script_BattleWhiteout:: ; 0x124c1
+	callasm BattleBGMap
+	jump Script_Whiteout
+; 0x124c8
+
+Script_OverworldWhiteout:: ; 0x124c8
+	refreshscreen $0
+	callasm OverworldBGMap
+
+Script_Whiteout: ; 0x124ce
+	writetext .WhitedOutText
+	closetext
+	special FadeOutPalettes
+	pause 40
+	special HealParty
+	checkflag ENGINE_BUG_CONTEST_TIMER
+	iftrue .bug_contest
+	callasm HalveMoney
+	callasm GetWhiteoutSpawn
+	farscall Script_AbortBugContest
+	special WarpToSpawnPoint
+	newloadmap MAPSETUP_WARP
+	resetfuncs
+
+.bug_contest
+	jumpstd bugcontestresultswarp
+; 0x124f5
+
+.WhitedOutText: ; 0x124f5
+	; is out of useable #MON!  whited out!
+	text_jump UnknownText_0x1c0a4e
+	db "@"
+; 0x124fa
+
+OverworldBGMap: ; 124fa
+	call ClearPalettes
+	call ClearScreen
+	call Function3200
+	call HideSprites
+	call Function4f0
+	ret
+; 1250a
+
+BattleBGMap: ; 1250a
+	ld b, $0
+	call GetSGBLayout
+	call SetPalettes
+	ret
+; 12513
+
+HalveMoney: ; 12513
+
+; Empty function...
+	callba MobileFn_1060c7
+
+; Halve the player's money.
+	ld hl, Money
+	ld a, [hl]
+	srl a
+	ld [hli], a
+	ld a, [hl]
+	rra
+	ld [hli], a
+	ld a, [hl]
+	rra
+	ld [hl], a
+	ret
+; 12527
+
+
+GetWhiteoutSpawn: ; 12527
+	ld a, [wLastSpawnMapGroup]
+	ld d, a
+	ld a, [wLastSpawnMapNumber]
+	ld e, a
+	callba IsSpawnPoint
+	ld a, c
+	jr c, .yes
+	xor a ; SPAWN_HOME
+
+.yes
+	ld [wd001], a
+	ret
+; 1253d
--- a/gbhw.asm
+++ b/gbhw.asm
@@ -59,6 +59,7 @@
 rNR12       EQU $ff12 ; Channel 1 Volume Envelope (R/W)
 rNR13       EQU $ff13 ; Channel 1 Frequency lo (Write Only)
 rNR14       EQU $ff14 ; Channel 1 Frequency hi (R/W)
+rNR20       EQU $ff15 ; Channel 2 Sweep register (R/W)
 rNR21       EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
 rNR22       EQU $ff17 ; Channel 2 Volume Envelope (R/W)
 rNR23       EQU $ff18 ; Channel 2 Frequency lo data (W)
@@ -68,6 +69,7 @@
 rNR32       EQU $ff1c ; Channel 3 Select output level (R/W)
 rNR33       EQU $ff1d ; Channel 3 Frequency's lower data (W)
 rNR34       EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
+rNR40       EQU $ff1f ; Channel 4 Sweep register (R/W)
 rNR41       EQU $ff20 ; Channel 4 Sound Length (R/W)
 rNR42       EQU $ff21 ; Channel 4 Volume Envelope (R/W)
 rNR43       EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
@@ -75,6 +77,22 @@
 rNR50       EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
 rNR51       EQU $ff25 ; Selection of Sound output terminal (R/W)
 rNR52       EQU $ff26 ; Sound on/off
+rWave_0     EQU $ff30
+rWave_1     EQU $ff31
+rWave_2     EQU $ff32
+rWave_3     EQU $ff33
+rWave_4     EQU $ff34
+rWave_5     EQU $ff35
+rWave_6     EQU $ff36
+rWave_7     EQU $ff37
+rWave_8     EQU $ff38
+rWave_9     EQU $ff39
+rWave_a     EQU $ff3a
+rWave_b     EQU $ff3b
+rWave_c     EQU $ff3c
+rWave_d     EQU $ff3d
+rWave_e     EQU $ff3e
+rWave_f     EQU $ff3f
 rLCDC       EQU $ff40 ; LCD Control (R/W)
 rSTAT       EQU $ff41 ; LCDC Status (R/W)
 rSCY        EQU $ff42 ; Scroll Y (R/W)
binary files /dev/null b/gfx/battle/enemy_hp_bar_border.1bpp differ
binary files /dev/null b/gfx/battle/expbar.2bpp differ
binary files /dev/null b/gfx/battle/hp_exp_bar_border.1bpp differ
binary files /dev/null b/gfx/frames/map_entry_sign.2bpp differ
binary files /dev/null b/gfx/frames/space.2bpp differ
binary files /dev/null b/gfx/misc/cut_grass.2bpp differ
binary files /dev/null b/gfx/misc/cut_tree.2bpp differ
binary files a/gfx/misc/fishing.2bpp /dev/null differ
--- /dev/null
+++ b/gfx/misc/fishing1.2bpp
@@ -1,0 +1,1 @@
+????
\ No newline at end of file
binary files /dev/null b/gfx/misc/fishing2.2bpp differ
binary files /dev/null b/gfx/misc/fishing3.2bpp differ
--- /dev/null
+++ b/gfx/misc/fishing4.2bpp
@@ -1,0 +1,1 @@
+@ 2�d	6	
\ No newline at end of file
--- /dev/null
+++ b/gfx/mobile/overworld_phone_icon.2bpp
@@ -1,0 +1,1 @@
+��������������
\ No newline at end of file
binary files /dev/null b/gfx/mobile/phone_tiles.2bpp differ
binary files /dev/null b/gfx/overworld/chris_fish.2bpp differ
binary files /dev/null b/gfx/overworld/kris_fish.2bpp differ
--- a/gfx/overworld/sprite_headers.asm
+++ b/gfx/overworld/sprite_headers.asm
@@ -3,614 +3,417 @@
 ;	Length, Bank
 ;	Type, Palette
 
+sprite_header: MACRO
+; pointer, length, type, palette
+	dw \1
+	db \2 * 4 tiles, BANK(\1)
+	db \3, \4
+ENDM
+
 ChrisSprite: ; 14736
-	dw ChrisSpriteGFX
-	db $3 * $40, BANK(ChrisSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1473c
 
 ChrisBikeSprite: ; 1473c
-	dw ChrisBikeSpriteGFX
-	db $3 * $40, BANK(ChrisBikeSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14742
 
 GameboyKidSprite: ; 14742
-	dw GameboyKidSpriteGFX
-	db $3 * $40, BANK(GameboyKidSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_GREEN
+	sprite_header GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
 ; 14748
 
 SilverSprite: ; 14748
-	dw SilverSpriteGFX
-	db $3 * $40, BANK(SilverSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1474e
 
 OakSprite: ; 1474e
-	dw OakSpriteGFX
-	db $3 * $40, BANK(OakSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14754
 
 RedSprite: ; 14754
-	dw RedSpriteGFX
-	db $3 * $40, BANK(RedSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1475a
 
 BlueSprite: ; 1475a
-	dw BlueSpriteGFX
-	db $3 * $40, BANK(BlueSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14760
 
 BillSprite: ; 14760
-	dw BillSpriteGFX
-	db $3 * $40, BANK(BillSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14766
 
 ElderSprite: ; 14766
-	dw ElderSpriteGFX
-	db $3 * $40, BANK(ElderSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 1476c
 
 JanineSprite: ; 1476c
-	dw JanineSpriteGFX
-	db $3 * $40, BANK(JanineSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14772
 
 KurtSprite: ; 14772
-	dw KurtSpriteGFX
-	db $3 * $40, BANK(KurtSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14778
 
 MomSprite: ; 14778
-	dw MomSpriteGFX
-	db $3 * $40, BANK(MomSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1477e
 
 BlaineSprite: ; 1477e
-	dw BlaineSpriteGFX
-	db $3 * $40, BANK(BlaineSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14784
 
 RedsMomSprite: ; 14784
-	dw RedsMomSpriteGFX
-	db $3 * $40, BANK(RedsMomSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1478a
 
 DaisySprite: ; 1478a
-	dw DaisySpriteGFX
-	db $3 * $40, BANK(DaisySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14790
 
 ElmSprite: ; 14790
-	dw ElmSpriteGFX
-	db $3 * $40, BANK(ElmSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14796
 
 WillSprite: ; 14796
-	dw WillSpriteGFX
-	db $3 * $40, BANK(WillSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 1479c
 
 FalknerSprite: ; 1479c
-	dw FalknerSpriteGFX
-	db $3 * $40, BANK(FalknerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 147a2
 
 WhitneySprite: ; 147a2
-	dw WhitneySpriteGFX
-	db $3 * $40, BANK(WhitneySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147a8
 
 BugsySprite: ; 147a8
-	dw BugsySpriteGFX
-	db $3 * $40, BANK(BugsySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147ae
 
 MortySprite: ; 147ae
-	dw MortySpriteGFX
-	db $3 * $40, BANK(MortySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147b4
 
 ChuckSprite: ; 147b4
-	dw ChuckSpriteGFX
-	db $3 * $40, BANK(ChuckSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147ba
 
 JasmineSprite: ; 147ba
-	dw JasmineSpriteGFX
-	db $3 * $40, BANK(JasmineSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147c0
 
 PryceSprite: ; 147c0
-	dw PryceSpriteGFX
-	db $3 * $40, BANK(PryceSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147c6
 
 ClairSprite: ; 147c6
-	dw ClairSpriteGFX
-	db $3 * $40, BANK(ClairSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147cc
 
 BrockSprite: ; 147cc
-	dw BrockSpriteGFX
-	db $3 * $40, BANK(BrockSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147d2
 
 KarenSprite: ; 147d2
-	dw KarenSpriteGFX
-	db $3 * $40, BANK(KarenSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 147d8
 
 BrunoSprite: ; 147d8
-	dw BrunoSpriteGFX
-	db $3 * $40, BANK(BrunoSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147de
 
 MistySprite: ; 147de
-	dw MistySpriteGFX
-	db $3 * $40, BANK(MistySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 147e4
 
 LanceSprite: ; 147e4
-	dw LanceSpriteGFX
-	db $3 * $40, BANK(LanceSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 147ea
 
 SurgeSprite: ; 147ea
-	dw SurgeSpriteGFX
-	db $3 * $40, BANK(SurgeSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147f0
 
 ErikaSprite: ; 147f0
-	dw ErikaSpriteGFX
-	db $3 * $40, BANK(ErikaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 147f6
 
 KogaSprite: ; 147f6
-	dw KogaSpriteGFX
-	db $3 * $40, BANK(KogaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 147fc
 
 SabrinaSprite: ; 147fc
-	dw SabrinaSpriteGFX
-	db $3 * $40, BANK(SabrinaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14802
 
 CooltrainerMSprite: ; 14802
-	dw CooltrainerMSpriteGFX
-	db $3 * $40, BANK(CooltrainerMSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14808
 
 CooltrainerFSprite: ; 14808
-	dw CooltrainerFSpriteGFX
-	db $3 * $40, BANK(CooltrainerFSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1480e
 
 BugCatcherSprite: ; 1480e
-	dw BugCatcherSpriteGFX
-	db $3 * $40, BANK(BugCatcherSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14814
 
 TwinSprite: ; 14814
-	dw TwinSpriteGFX
-	db $3 * $40, BANK(TwinSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1481a
 
 YoungsterSprite: ; 1481a
-	dw YoungsterSpriteGFX
-	db $3 * $40, BANK(YoungsterSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14820
 
 LassSprite: ; 14820
-	dw LassSpriteGFX
-	db $3 * $40, BANK(LassSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14826
 
 TeacherSprite: ; 14826
-	dw TeacherSpriteGFX
-	db $3 * $40, BANK(TeacherSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1482c
 
 BuenaSprite: ; 1482c
-	dw BuenaSpriteGFX
-	db $3 * $40, BANK(BuenaSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14832
 
 SuperNerdSprite: ; 14832
-	dw SuperNerdSpriteGFX
-	db $3 * $40, BANK(SuperNerdSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14838
 
 RockerSprite: ; 14838
-	dw RockerSpriteGFX
-	db $3 * $40, BANK(RockerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 1483e
 
 PokefanMSprite: ; 1483e
-	dw PokefanMSpriteGFX
-	db $3 * $40, BANK(PokefanMSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14844
 
 PokefanFSprite: ; 14844
-	dw PokefanFSpriteGFX
-	db $3 * $40, BANK(PokefanFSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 1484a
 
 GrampsSprite: ; 1484a
-	dw GrampsSpriteGFX
-	db $3 * $40, BANK(GrampsSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14850
 
 GrannySprite: ; 14850
-	dw GrannySpriteGFX
-	db $3 * $40, BANK(GrannySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14856
 
 SwimmerGuySprite: ; 14856
-	dw SwimmerGuySpriteGFX
-	db $3 * $40, BANK(SwimmerGuySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1485c
 
 SwimmerGirlSprite: ; 1485c
-	dw SwimmerGirlSpriteGFX
-	db $3 * $40, BANK(SwimmerGirlSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14862
 
 BigSnorlaxSprite: ; 14862
-	dw BigSnorlaxSpriteGFX
-	db $3 * $40, BANK(BigSnorlaxSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 14868
 
 SurfingPikachuSprite: ; 14868
-	dw SurfingPikachuSpriteGFX
-	db $3 * $40, BANK(SurfingPikachuSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1486e
 
 RocketSprite: ; 1486e
-	dw RocketSpriteGFX
-	db $3 * $40, BANK(RocketSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 14874
 
 RocketGirlSprite: ; 14874
-	dw RocketGirlSpriteGFX
-	db $3 * $40, BANK(RocketGirlSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 1487a
 
 NurseSprite: ; 1487a
-	dw NurseSpriteGFX
-	db $3 * $40, BANK(NurseSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 14880
 
 LinkReceptionistSprite: ; 14880
-	dw LinkReceptionistSpriteGFX
-	db $3 * $40, BANK(LinkReceptionistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14886
 
 ClerkSprite: ; 14886
-	dw ClerkSpriteGFX
-	db $3 * $40, BANK(ClerkSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_GREEN
+	sprite_header ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
 ; 1488c
 
 FisherSprite: ; 1488c
-	dw FisherSpriteGFX
-	db $3 * $40, BANK(FisherSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14892
 
 FishingGuruSprite: ; 14892
-	dw FishingGuruSpriteGFX
-	db $3 * $40, BANK(FishingGuruSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14898
 
 ScientistSprite: ; 14898
-	dw ScientistSpriteGFX
-	db $3 * $40, BANK(ScientistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1489e
 
 KimonoGirlSprite: ; 1489e
-	dw KimonoGirlSpriteGFX
-	db $3 * $40, BANK(KimonoGirlSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 148a4
 
 SageSprite: ; 148a4
-	dw SageSpriteGFX
-	db $3 * $40, BANK(SageSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148aa
 
 UnusedGuySprite: ; 148aa
-	dw UnusedGuySpriteGFX
-	db $3 * $40, BANK(UnusedGuySpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 148b0
 
 GentlemanSprite: ; 148b0
-	dw GentlemanSpriteGFX
-	db $3 * $40, BANK(GentlemanSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148b6
 
 BlackBeltSprite: ; 148b6
-	dw BlackBeltSpriteGFX
-	db $3 * $40, BANK(BlackBeltSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148bc
 
 ReceptionistSprite: ; 148bc
-	dw ReceptionistSpriteGFX
-	db $3 * $40, BANK(ReceptionistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148c2
 
 OfficerSprite: ; 148c2
-	dw OfficerSpriteGFX
-	db $3 * $40, BANK(OfficerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148c8
 
 CalSprite: ; 148c8
-	dw CalSpriteGFX
-	db $3 * $40, BANK(CalSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148ce
 
 SlowpokeSprite: ; 148ce
-	dw SlowpokeSpriteGFX
-	db $1 * $40, BANK(SlowpokeSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 148d4
 
 CaptainSprite: ; 148d4
-	dw CaptainSpriteGFX
-	db $3 * $40, BANK(CaptainSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148da
 
 BigLaprasSprite: ; 148da
-	dw BigLaprasSpriteGFX
-	db $3 * $40, BANK(BigLaprasSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 148e0
 
 GymGuySprite: ; 148e0
-	dw GymGuySpriteGFX
-	db $3 * $40, BANK(GymGuySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148e6
 
 SailorSprite: ; 148e6
-	dw SailorSpriteGFX
-	db $3 * $40, BANK(SailorSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148ec
 
 BikerSprite: ; 148ec
-	dw BikerSpriteGFX
-	db $3 * $40, BANK(BikerSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BROWN
+	sprite_header BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
 ; 148f2
 
 PharmacistSprite: ; 148f2
-	dw PharmacistSpriteGFX
-	db $3 * $40, BANK(PharmacistSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 148f8
 
 MonsterSprite: ; 148f8
-	dw MonsterSpriteGFX
-	db $3 * $40, BANK(MonsterSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 148fe
 
 FairySprite: ; 148fe
-	dw FairySpriteGFX
-	db $3 * $40, BANK(FairySpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14904
 
 BirdSprite: ; 14904
-	dw BirdSpriteGFX
-	db $3 * $40, BANK(BirdSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 1490a
 
 DragonSprite: ; 1490a
-	dw DragonSpriteGFX
-	db $3 * $40, BANK(DragonSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_RED
+	sprite_header DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
 ; 14910
 
 BigOnixSprite: ; 14910
-	dw BigOnixSpriteGFX
-	db $3 * $40, BANK(BigOnixSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BROWN
+	sprite_header BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
 ; 14916
 
 N64Sprite: ; 14916
-	dw N64SpriteGFX
-	db $1 * $40, BANK(N64SpriteGFX)
-	db STILL_SPRITE, PAL_OW_BROWN
+	sprite_header N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
 ; 1491c
 
 SudowoodoSprite: ; 1491c
-	dw SudowoodoSpriteGFX
-	db $3 * $40, BANK(SudowoodoSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_GREEN
+	sprite_header SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
 ; 14922
 
 SurfSprite: ; 14922
-	dw SurfSpriteGFX
-	db $3 * $40, BANK(SurfSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14928
 
 PokeBallSprite: ; 14928
-	dw PokeBallSpriteGFX
-	db $1 * $40, BANK(PokeBallSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 1492e
 
 PokedexSprite: ; 1492e
-	dw PokedexSpriteGFX
-	db $1 * $40, BANK(PokedexSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BROWN
+	sprite_header PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
 ; 14934
 
 PaperSprite: ; 14934
-	dw PaperSpriteGFX
-	db $1 * $40, BANK(PaperSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BLUE
+	sprite_header PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
 ; 1493a
 
 VirtualBoySprite: ; 1493a
-	dw VirtualBoySpriteGFX
-	db $1 * $40, BANK(VirtualBoySpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 14940
 
 OldLinkReceptionistSprite: ; 14940
-	dw OldLinkReceptionistSpriteGFX
-	db $3 * $40, BANK(OldLinkReceptionistSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_RED
+	sprite_header OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
 ; 14946
 
 RockSprite: ; 14946
-	dw RockSpriteGFX
-	db $1 * $40, BANK(RockSpriteGFX)
-	db STILL_SPRITE, PAL_OW_ROCK
+	sprite_header RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
 ; 1494c
 
 BoulderSprite: ; 1494c
-	dw BoulderSpriteGFX
-	db $1 * $40, BANK(BoulderSpriteGFX)
-	db STILL_SPRITE, PAL_OW_ROCK
+	sprite_header BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
 ; 14952
 
 SnesSprite: ; 14952
-	dw SnesSpriteGFX
-	db $1 * $40, BANK(SnesSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BLUE
+	sprite_header SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
 ; 14958
 
 FamicomSprite: ; 14958
-	dw FamicomSpriteGFX
-	db $1 * $40, BANK(FamicomSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 1495e
 
 FruitTreeSprite: ; 1495e
-	dw FruitTreeSpriteGFX
-	db $1 * $40, BANK(FruitTreeSpriteGFX)
-	db STILL_SPRITE, PAL_OW_TREE
+	sprite_header FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
 ; 14964
 
 GoldTrophySprite: ; 14964
-	dw GoldTrophySpriteGFX
-	db $1 * $40, BANK(GoldTrophySpriteGFX)
-	db STILL_SPRITE, PAL_OW_BROWN
+	sprite_header GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
 ; 1496a
 
 SilverTrophySprite: ; 1496a
-	dw SilverTrophySpriteGFX
-	db $1 * $40, BANK(SilverTrophySpriteGFX)
-	db STILL_SPRITE, PAL_OW_SILVER
+	sprite_header SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
 ; 14970
 
 KrisSprite: ; 14970
-	dw KrisSpriteGFX
-	db $3 * $40, BANK(KrisSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 14976
 
 KrisBikeSprite: ; 14976
-	dw KrisBikeSpriteGFX
-	db $3 * $40, BANK(KrisBikeSpriteGFX)
-	db WALKING_SPRITE, PAL_OW_BLUE
+	sprite_header KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
 ; 1497c
 
 KurtOutsideSprite: ; 1497c
-	dw KurtOutsideSpriteGFX
-	db $3 * $40, BANK(KurtOutsideSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BROWN
+	sprite_header KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
 ; 14982
 
 SuicuneSprite: ; 14982
-	dw SuicuneSpriteGFX
-	db $1 * $40, BANK(SuicuneSpriteGFX)
-	db STILL_SPRITE, PAL_OW_BLUE
+	sprite_header SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
 ; 14988
 
 EnteiSprite: ; 14988
-	dw EnteiSpriteGFX
-	db $1 * $40, BANK(EnteiSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 1498e
 
 RaikouSprite: ; 1498e
-	dw RaikouSpriteGFX
-	db $1 * $40, BANK(RaikouSpriteGFX)
-	db STILL_SPRITE, PAL_OW_RED
+	sprite_header RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
 ; 14994
 
 StandingYoungsterSprite: ; 14994
-	dw StandingYoungsterSpriteGFX
-	db $3 * $40, BANK(StandingYoungsterSpriteGFX)
-	db STANDING_SPRITE, PAL_OW_BLUE
+	sprite_header StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
 ; 1499a
--- a/gfx/pics/animation.asm
+++ b/gfx/pics/animation.asm
@@ -1,55 +1,55 @@
 ; Pic animation arrangement.
 
 
-Functiond0000: ; d0000
+AnimateMon_Slow_Normal: ; d0000
 	hlcoord 12, 0
 	ld a, [wBattleMode]
-	cp $1
-	jr z, .asm_d0012
-	ld e, $0
+	cp WILD_BATTLE
+	jr z, .wild
+	ld e, ANIM_MON_SLOW
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 
-.asm_d0012
-	ld e, $1
+.wild
+	ld e, ANIM_MON_NORMAL
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 ; d001a
 
-Functiond001a: ; d001a
-	ld e, $2
+AnimateMon_Menu: ; d001a
+	ld e, ANIM_MON_MENU
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 ; d0022
 
-Functiond0022: ; d0022
-	ld e, $3
+AnimateMon_Trade: ; d0022
+	ld e, ANIM_MON_TRADE
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 ; d002a
 
-Functiond002a: ; d002a
-	ld e, $4
+AnimateMon_Evolve: ; d002a
+	ld e, ANIM_MON_EVOLVE
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 ; d0032
 
-Functiond0032: ; d0032
-	ld e, $5
+AnimateMon_Hatch: ; d0032
+	ld e, ANIM_MON_HATCH
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 ; d003a
 
-Functiond003a: ; d003a
-	ld e, $6
+AnimateMon_Unused: ; d003a
+	ld e, ANIM_MON_UNUSED
 	ld d, $0
-	call Functiond008e
+	call AnimateFrontpic
 	ret
 ; d0042
 
@@ -81,31 +81,31 @@
 	dw .Egg1
 	dw .Egg2
 
-.Slow:   POKEANIM Cry3, Setup2, Play
-.Normal: POKEANIM Cry3, Setup, Play
-.Menu:   POKEANIM Cry2, Setup, Play, SetWait, Wait, Extra, Play
+.Slow:   POKEANIM StereoCry, Setup2, Play
+.Normal: POKEANIM StereoCry, Setup, Play
+.Menu:   POKEANIM CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
 .Trade:  POKEANIM Extra, Play2, Extra, Play, SetWait, Wait, Cry, Setup, Play
-.Evolve: POKEANIM Extra, Play, SetWait, Wait, Cry2, Setup, Play
-.Hatch:  POKEANIM Extra, Play, Cry2, Setup, Play, SetWait, Wait, Extra, Play
-.Unused: POKEANIM Cry2, Setup, Play, SetWait, Wait, Extra, Play
+.Evolve: POKEANIM Extra, Play, SetWait, Wait, CryNoWait, Setup, Play
+.Hatch:  POKEANIM Extra, Play, CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
+.Unused: POKEANIM CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
 .Egg1:   POKEANIM Setup, Play
 .Egg2:   POKEANIM Extra, Play
 
 
-Functiond008e: ; d008e
-	call Functiond01c6
+AnimateFrontpic: ; d008e
+	call AnimateMon_CheckIfPokemon
 	ret c
-	call Functiond00a3
-.asm_d0095
+	call LoadMonAnimation
+.loop
 	call Functiond00b4
 	push af
 	callba Function10402d
 	pop af
-	jr nc, .asm_d0095
+	jr nc, .loop
 	ret
 ; d00a3
 
-Functiond00a3: ; d00a3
+LoadMonAnimation: ; d00a3
 	push hl
 	ld c, e
 	ld b, 0
@@ -126,10 +126,10 @@
 	push af
 	ld a, $2
 	ld [rSVBK], a
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	ld c, a
 	ld b, 0
-	ld hl, w2_d169
+	ld hl, wPokeAnimPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -137,7 +137,7 @@
 	ld a, [hl]
 	ld hl, PokeAnim_SetupCommands
 	rst JumpTable
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	ld c, a
 	pop af
 	ld [rSVBK], a
@@ -162,24 +162,24 @@
 	setup_command PokeAnim_Play
 	setup_command PokeAnim_Play2
 	setup_command PokeAnim_Cry
-	setup_command PokeAnim_Cry2
-	setup_command PokeAnim_Cry3
+	setup_command PokeAnim_CryNoWait
+	setup_command PokeAnim_StereoCry
 ; d00f2
 
 PokeAnim_SetWait: ; d00f2
-	ld a, $12
-	ld [w2_d181], a
-	ld a, [w2_d168]
+	ld a, 18
+	ld [wPokeAnimWaitCounter], a
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 
 PokeAnim_Wait: ; d00fe
-	ld hl, w2_d181
+	ld hl, wPokeAnimWaitCounter
 	dec [hl]
 	ret nz
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d010b
 
@@ -188,9 +188,9 @@
 	ld b, $0
 	call Functiond0228
 	call Functiond0504
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d011d
 
@@ -199,9 +199,9 @@
 	ld b, $4
 	call Functiond0228
 	call Functiond0504
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d012f
 
@@ -210,9 +210,9 @@
 	ld b, $0
 	call Functiond0228
 	call Functiond0504
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d0141
 
@@ -222,9 +222,9 @@
 	bit 7, a
 	ret z
 	call Functiond04bd
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d0155
 
@@ -233,53 +233,53 @@
 	ld a, [w2_d17e]
 	bit 7, a
 	ret z
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d0166
 
 PokeAnim_Nop: ; d0166
 	call Functiond01a9
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d0171
 
 PokeAnim_Finish: ; d0171
 	call Functiond01a9
-	ld hl, w2_d168
+	ld hl, wPokeAnimSceneIndex
 	set 7, [hl]
 	ret
 ; d017a
 
 PokeAnim_Cry: ; d017a
-	ld a, [w2_d16b]
+	ld a, [wPokeAnimSpecies]
 	call _PlayCry
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d0188
 
-PokeAnim_Cry2: ; d0188
-	ld a, [w2_d16b]
+PokeAnim_CryNoWait: ; d0188
+	ld a, [wPokeAnimSpecies]
 	call PlayCry2
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d0196
 
-PokeAnim_Cry3: ; d0196
+PokeAnim_StereoCry: ; d0196
 	ld a, $f
 	ld [CryTracks], a
-	ld a, [w2_d16b]
+	ld a, [wPokeAnimSpecies]
 	call PlayStereoCry2
-	ld a, [w2_d168]
+	ld a, [wPokeAnimSceneIndex]
 	inc a
-	ld [w2_d168], a
+	ld [wPokeAnimSceneIndex], a
 	ret
 ; d01a9
 
@@ -297,16 +297,16 @@
 	ret
 ; d01c6
 
-Functiond01c6: ; d01c6
+AnimateMon_CheckIfPokemon: ; d01c6
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_d01d4
+	jr z, .fail
 	call IsAPokemon
-	jr c, .asm_d01d4
+	jr c, .fail
 	and a
 	ret
 
-.asm_d01d4
+.fail
 	scf
 	ret
 ; d01d6
@@ -316,39 +316,44 @@
 	push af
 	ld a, $2
 	ld [rSVBK], a
+
 	push bc
 	push de
 	push hl
-	ld hl, w2_d168
-	ld bc, $0029
+	ld hl, wPokeAnimSceneIndex
+	ld bc, wPokeAnimStructEnd - wPokeAnimSceneIndex
 	xor a
 	call ByteFill
 	pop hl
 	pop de
 	pop bc
+
+; bc contains anim pointer
 	ld a, c
-	ld [w2_d169], a
+	ld [wPokeAnimPointer], a
 	ld a, b
-	ld [w2_d16a], a
+	ld [wPokeAnimPointer + 1], a
+; hl contains TileMap coords
 	ld a, l
-	ld [w2_d16f], a
+	ld [wPokeAnimCoord], a
 	ld a, h
-	ld [w2_d170], a
+	ld [wPokeAnimCoord + 1], a
+; d = ?????
 	ld a, d
 	ld [w2_d16e], a
 	ld a, $1
 	ld hl, CurPartySpecies
 	call GetFarWRAMByte
-	ld [w2_d16b], a
+	ld [wPokeAnimSpecies], a
 	ld a, $1
 	ld hl, UnownLetter
 	call GetFarWRAMByte
-	ld [w2_d16c], a
-	call Functiond065c
-	ld [w2_d16d], a
-	call Functiond05b4
+	ld [wPokeAnimUnownLetter], a
+	call PokeAnim_GetSpeciesOrUnown
+	ld [wPokeAnimSpeciesOrUnown], a
+	call PokeAnim_GetFrontpicDims
 	ld a, c
-	ld [w2_d171], a
+	ld [wPokeAnimFrontpicHeight], a
 	pop af
 	ld [rSVBK], a
 	ret
@@ -361,7 +366,7 @@
 	ld [rSVBK], a
 	push bc
 	ld hl, w2_d172
-	ld bc, $001f
+	ld bc, wPokeAnimStructEnd - w2_d172
 	xor a
 	call ByteFill
 	pop bc
@@ -406,13 +411,13 @@
 	call Functiond02c8
 	ld a, [w2_d183]
 	call Functiond02ae
-	ld [w2_d181], a
+	ld [wPokeAnimWaitCounter], a
 	call Functiond02dc
 
 Functiond0282: ; d0282
-	ld a, [w2_d181]
+	ld a, [wPokeAnimWaitCounter]
 	dec a
-	ld [w2_d181], a
+	ld [wPokeAnimWaitCounter], a
 	ret nz
 	call Functiond02e4
 	ret
@@ -487,14 +492,14 @@
 	ret
 ; d02ec
 
-Functiond02ec: ; d02ec
-	ld a, [w2_d16b]
+PokeAnim_IsUnown: ; d02ec
+	ld a, [wPokeAnimSpecies]
 	cp UNOWN
 	ret
 ; d02f2
 
-Functiond02f2: ; d02f2
-	ld a, [w2_d16b]
+PokeAnim_IsEgg: ; d02f2
+	ld a, [wPokeAnimSpecies]
 	cp EGG
 	ret
 ; d02f8
@@ -562,7 +567,7 @@
 
 Functiond0356: ; d0356
 	push hl
-	ld a, [w2_d171]
+	ld a, [wPokeAnimFrontpicHeight]
 	sub 5
 	ld c, a
 	ld b, 0
@@ -581,13 +586,13 @@
 	ld [w2_d187], a
 	ld [w2_d186], a
 	ld [w2_d185], a
-.asm_d0375
+.loop
 	push hl
 	call Functiond0392
 	pop hl
 	ld a, b
 	and a
-	jr z, .asm_d038a
+	jr z, .next
 
 	ld a, [w2_d177]
 	call GetFarByte
@@ -596,11 +601,11 @@
 	call Functiond03bd
 	pop hl
 
-.asm_d038a
+.next
 	push hl
 	call Functiond0499
 	pop hl
-	jr nc, .asm_d0375
+	jr nc, .loop
 	ret
 ; d0392
 
@@ -617,23 +622,23 @@
 	ld b, [hl]
 	ld a, [w2_d187]
 	and 7
-	jr z, .asm_d03b0
+	jr z, .skip
 
 	ld c, a
 	ld a, b
-.asm_d03ab
+.loop
 	rrca
 	dec c
-	jr nz, .asm_d03ab
+	jr nz, .loop
 	ld b, a
 
-.asm_d03b0
+.skip
 	xor a
 	bit 0, b
-	jr z, .asm_d03b7
+	jr z, .finish
 	ld a, 1
 
-.asm_d03b7
+.finish
 	ld b, a
 	ld hl, w2_d187
 	inc [hl]
@@ -656,18 +661,18 @@
 Functiond03cd: ; d03cd
 	call Functiond046c
 	ld a, [w2_d186]
-	ld bc, $0014
+	ld bc, SCREEN_WIDTH
 	call AddNTimes
 	ld a, [wc2c6]
 	and a
-	jr nz, .asm_d03e8
+	jr nz, .go
 	ld a, [w2_d185]
 	ld e, a
 	ld d, 0
 	add hl, de
-	jr .asm_d03f3
+	jr .skip
 
-.asm_d03e8
+.go
 	ld a, [w2_d185]
 	ld e, a
 	ld a, l
@@ -677,7 +682,7 @@
 	sbc 0
 	ld h, a
 
-.asm_d03f3
+.skip
 	ret
 ; d03f4
 
@@ -685,18 +690,18 @@
 
 Functiond03f7: ; d03f7
 	push af
-	ld a, [w2_d171]
+	ld a, [wPokeAnimFrontpicHeight]
 	cp 5
-	jr z, .asm_d0405
+	jr z, .check_add_24
 	cp 6
-	jr z, .asm_d041a
+	jr z, .check_add_13
 	pop af
 	ret
 
-.asm_d0405
+.check_add_24
 	pop af
 	cp 5 * 5
-	jr nc, .asm_d0417
+	jr nc, .add_24
 	push hl
 	push de
 	ld hl, Unknown_d042f
@@ -708,14 +713,14 @@
 	pop hl
 	ret
 
-.asm_d0417
+.add_24
 	add 24
 	ret
 
-.asm_d041a
+.check_add_13
 	pop af
 	cp 6 * 6
-	jr nc, .asm_d042c
+	jr nc, .add_13
 	push hl
 	push de
 	ld hl, Unknown_d0448
@@ -727,7 +732,7 @@
 	pop hl
 	ret
 
-.asm_d042c
+.add_13
 	add 13
 	ret
 ; d042f
@@ -749,31 +754,31 @@
 
 
 Functiond046c: ; d046c
-	ld hl, w2_d16f
+	ld hl, wPokeAnimCoord
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 
-	ld a, [w2_d171]
+	ld a, [wPokeAnimFrontpicHeight]
 	ld de, 0
 	ld bc, 6
 	cp 7
-	jr z, .asm_d048f
+	jr z, .okay
 	ld de, 21
 	ld bc, 25
 	cp 6
-	jr z, .asm_d048f
+	jr z, .okay
 	ld de, 41
 	ld bc, 45
-.asm_d048f
+.okay
 
 	ld a, [wc2c6]
 	and a
-	jr nz, .asm_d0497
+	jr nz, .add_bc
 	add hl, de
 	ret
 
-.asm_d0497
+.add_bc
 	add hl, bc
 	ret
 ; d0499
@@ -783,9 +788,9 @@
 	inc a
 	ld [w2_d186], a
 	ld c, a
-	ld a, [w2_d171]
+	ld a, [wPokeAnimFrontpicHeight]
 	cp c
-	jr nz, .asm_d04bb
+	jr nz, .no_carry
 	xor a
 	ld [w2_d186], a
 	ld a, [w2_d185]
@@ -792,13 +797,13 @@
 	inc a
 	ld [w2_d185], a
 	ld c, a
-	ld a, [w2_d171]
+	ld a, [wPokeAnimFrontpicHeight]
 	cp c
-	jr nz, .asm_d04bb
+	jr nz, .no_carry
 	scf
 	ret
 
-.asm_d04bb
+.no_carry
 	xor a
 	ret
 ; d04bd
@@ -807,17 +812,17 @@
 	call Functiond04f6
 	ld a, [wc2c6]
 	and a
-	jr nz, .asm_d04ce
+	jr nz, .minus_one_and_six
 	ld de, 1
 	ld bc, 0
-	jr .asm_d04d4
+	jr .okay
 
-.asm_d04ce
+.minus_one_and_six
 	ld de, -1
 	ld bc, 6
 
-.asm_d04d4
-	ld hl, w2_d16f
+.okay
+	ld hl, wPokeAnimCoord
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -825,28 +830,28 @@
 	ld c, 7
 	ld b, 7
 	ld a, [w2_d16e]
-.asm_d04e2
+.loop
 	push bc
 	push hl
 	push de
-	ld de, $0014
-.asm_d04e8
+	ld de, SCREEN_WIDTH
+.loop2
 	ld [hl], a
 	inc a
 	add hl, de
 	dec b
-	jr nz, .asm_d04e8
+	jr nz, .loop2
 	pop de
 	pop hl
 	add hl, de
 	pop bc
 	dec c
-	jr nz, .asm_d04e2
+	jr nz, .loop
 	ret
 ; d04f6
 
 Functiond04f6: ; d04f6
-	ld hl, w2_d16f
+	ld hl, wPokeAnimCoord
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -917,7 +922,7 @@
 ; d0551
 
 Functiond0551: ; d0551
-	ld hl, w2_d16f
+	ld hl, wPokeAnimCoord
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -927,18 +932,18 @@
 ; d055c
 
 Functiond055c: ; d055c
-	call Functiond02f2
+	call PokeAnim_IsEgg
 	jr z, .egg
 
 	ld c, BANK(UnownAnimations)
 	ld hl, UnownAnimationPointers
 	ld de, UnownAnimationExtraPointers
-	call Functiond02ec
-	jr z, .asm_d0576
+	call PokeAnim_IsUnown
+	jr z, .unown
 	ld c, BANK(PicAnimations)
 	ld hl, AnimationPointers
 	ld de, AnimationExtraPointers
-.asm_d0576
+.unown
 
 	ld a, [w2_d172]
 	and a
@@ -947,7 +952,7 @@
 	ld l, e
 .asm_d057e
 
-	ld a, [w2_d16d]
+	ld a, [wPokeAnimSpeciesOrUnown]
 	dec a
 	ld e, a
 	ld d, 0
@@ -982,7 +987,7 @@
 	ret
 ; d05b4
 
-Functiond05b4: ; d05b4
+PokeAnim_GetFrontpicDims: ; d05b4
 	ld a, [rSVBK]
 	push af
 	ld a, $1
@@ -999,26 +1004,26 @@
 ; d05ce
 
 Functiond05ce: ; d05ce
-	call Functiond02f2
+	call PokeAnim_IsEgg
 	jr z, .egg
 
-	call Functiond02ec
+	call PokeAnim_IsUnown
 	ld b, BANK(UnownFramesPointers)
 	ld c, BANK(UnownsFrames)
 	ld hl, UnownFramesPointers
-	jr z, .asm_d05ef
-	ld a, [w2_d16b]
+	jr z, .got_frames
+	ld a, [wPokeAnimSpecies]
 	cp 151 + 1
 	ld b, BANK(FramesPointers)
 	ld c, BANK(KantoFrames)
 	ld hl, FramesPointers
-	jr c, .asm_d05ef
+	jr c, .got_frames
 	ld c, BANK(JohtoFrames)
-.asm_d05ef
+.got_frames
 	ld a, c
 	ld [w2_d177], a
 
-	ld a, [w2_d16d]
+	ld a, [wPokeAnimSpeciesOrUnown]
 	dec a
 	ld e, a
 	ld d, 0
@@ -1046,19 +1051,19 @@
 ; d061b
 
 Functiond061b: ; d061b
-	call Functiond02f2
+	call PokeAnim_IsEgg
 	jr z, .egg
 
-	call Functiond02ec
+	call PokeAnim_IsUnown
 	ld a, BANK(UnownBitmasksPointers)
 	ld hl, UnownBitmasksPointers
-	jr z, .asm_d062f
+	jr z, .unown
 	ld a, BANK(BitmasksPointers)
 	ld hl, BitmasksPointers
-.asm_d062f
+.unown
 	ld [w2_d17a], a
 
-	ld a, [w2_d16d]
+	ld a, [wPokeAnimSpeciesOrUnown]
 	dec a
 	ld e, a
 	ld d, 0
@@ -1085,14 +1090,14 @@
 	ret
 ; d065c
 
-Functiond065c: ; d065c
-	call Functiond02ec
-	jr z, .asm_d0665
-	ld a, [w2_d16b]
+PokeAnim_GetSpeciesOrUnown: ; d065c
+	call PokeAnim_IsUnown
+	jr z, .unown
+	ld a, [wPokeAnimSpecies]
 	ret
 
-.asm_d0665
-	ld a, [w2_d16c]
+.unown
+	ld a, [wPokeAnimUnownLetter]
 	ret
 ; d0669
 
@@ -1101,7 +1106,7 @@
 	ld [wc2c6], a
 
 Functiond066e: ; d066e
-	call Functiond01c6
+	call AnimateMon_CheckIfPokemon
 	jr c, .asm_d068c
 	ld h, d
 	ld l, e
@@ -1113,7 +1118,7 @@
 	pop bc
 	ld d, 0
 	ld e, c
-	call Functiond008e
+	call AnimateFrontpic
 	xor a
 	ld [wc2c6], a
 	ret
binary files a/gfx/unknown/08c98c.2bpp /dev/null differ
binary files a/gfx/unknown/08c9cc.2bpp /dev/null differ
binary files a/gfx/unknown/0b84f2.2bpp /dev/null differ
binary files a/gfx/unknown/0b8582.2bpp /dev/null differ
binary files a/gfx/unknown/0f8ac0.2bpp /dev/null differ
binary files a/gfx/unknown/0f8ae0.2bpp /dev/null differ
binary files a/gfx/unknown/0f8b10.2bpp /dev/null differ
--- a/gfx/unknown/0f8f24.2bpp
+++ /dev/null
@@ -1,1 +1,0 @@
-��������������
\ No newline at end of file
binary files a/gfx/unknown/0f9204.2bpp /dev/null differ
binary files a/gfx/unknown/0f9214.2bpp /dev/null differ
binary files a/gfx/unknown/0f9344.2bpp /dev/null differ
--- a/home.asm
+++ b/home.asm
@@ -99,7 +99,7 @@
 DisableSpriteUpdates:: ; 0x2ed3
 ; disables overworld sprite updating?
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld a, [VramState]
 	res 0, a
 	ld [VramState], a
@@ -115,7 +115,7 @@
 	set 0, a
 	ld [VramState], a
 	ld a, $1
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 2ef6
 
@@ -217,10 +217,10 @@
 ; Load TileMap into TempTileMap
 	ld a, [rSVBK]
 	push af
-	ld a, BANK(w2_d000)
+	ld a, BANK(TempTileMap)
 	ld [rSVBK], a
 	hlcoord 0, 0
-	ld de, w2_d000
+	decoord 0, 0, TempTileMap
 	ld bc, TileMapEnd - TileMap
 	call CopyBytes
 	pop af
@@ -241,9 +241,9 @@
 ; Load TempTileMap into TileMap
 	ld a, [rSVBK]
 	push af
-	ld a, BANK(w2_d000)
+	ld a, BANK(TempTileMap)
 	ld [rSVBK], a
-	ld hl, w2_d000
+	hlcoord 0, 0, TempTileMap
 	decoord 0, 0
 	ld bc, TileMapEnd - TileMap
 	call CopyBytes
@@ -427,13 +427,13 @@
 ; 31a4
 
 
-Function31a4:: ; 31a4
+MobilePrintNum:: ; 31a4
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Function1061ef)
+	ld a, BANK(_MobilePrintNum)
 	rst Bankswitch
 
-	call Function1061ef
+	call _MobilePrintNum
 
 	pop af
 	rst Bankswitch
@@ -530,7 +530,7 @@
 ; 31f3
 
 
-WhiteBGMap:: ; 31f3
+ClearBGPalettes:: ; 31f3
 	call ClearPalettes
 WaitBGMap:: ; 31f6
 ; Tell VBlank to update BG Map
@@ -561,7 +561,7 @@
 ; 0x3218
 
 
-Function3218:: ; 3218
+IsCGB:: ; 3218
 	ld a, [hCGB]
 	and a
 	ret
@@ -579,9 +579,10 @@
 
 	ld a, 1
 	ld [hBGMapMode], a
-	jr Function323d
+	jr LoadDETile
 
 .dmg
+; WaitBGMap
 	ld a, 1
 	ld [hBGMapMode], a
 	ld c, 4
@@ -594,25 +595,25 @@
 	and a
 	jr z, WaitBGMap
 
-Function323d:: ; 323d
-	jr Function3246
+LoadDETile:: ; 323d
+	jr .LoadDETile
 ; 323f
 
-Function323f:: ; 323f
+.unreferenced_323f ; 323f
 	callba Function104000
 	ret
 ; 3246
 
-Function3246:: ; 3246
+.LoadDETile ; 3246
 	ld a, [hBGMapMode]
 	push af
 	xor a
 	ld [hBGMapMode], a
 
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 
 .wait
 	ld a, [rLY]
@@ -623,11 +624,11 @@
 	ld a, 1 ; BANK(VTiles3)
 	ld [rVBK], a
 	hlcoord 0, 0, AttrMap
-	call Function327b
+	call .StackPointerMagic
 	ld a, 0 ; BANK(VTiles0)
 	ld [rVBK], a
 	hlcoord 0, 0
-	call Function327b
+	call .StackPointerMagic
 
 .wait2
 	ld a, [rLY]
@@ -636,13 +637,13 @@
 	ei
 
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	pop af
 	ld [hBGMapMode], a
 	ret
 ; 327b
 
-Function327b:: ; 327b
+.StackPointerMagic ; 327b
 ; Copy all tiles to VBGMap
 	ld [hSPBuffer], sp
 	ld sp, hl
@@ -650,7 +651,7 @@
 	ld h, a
 	ld l, 0
 	ld a, SCREEN_HEIGHT
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	ld b, 1 << 1 ; not in v/hblank
 	ld c, rSTAT % $100
 
@@ -671,9 +672,9 @@
 
 	ld de, $20 - SCREEN_WIDTH
 	add hl, de
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	dec a
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	jr nz, .loop
 
 	ld a, [hSPBuffer]
@@ -830,13 +831,13 @@
 
 
 NamesPointers:: ; 33ab
-	dbw BANK(PokemonNames), PokemonNames
-	dbw BANK(MoveNames), MoveNames
+	dba PokemonNames
+	dba MoveNames
 	dbw 0, 0
-	dbw BANK(ItemNames), ItemNames
+	dba ItemNames
 	dbw 0, PartyMonOT
 	dbw 0, OTPartyMonOT
-	dbw BANK(TrainerClassNames), TrainerClassNames
+	dba TrainerClassNames
 ; 33c0
 
 Function33c0:
@@ -1146,8 +1147,8 @@
 ; 350c
 
 
-Function350c:: ; 350c
-	call Function1c66
+HandleScrollingMenu:: ; 350c
+	call CopyMenuData2
 	ld a, [hROMBank]
 	push af
 
@@ -1186,7 +1187,7 @@
 	sub c
 	ld e, a
 	push de
-	call GetTileCoord
+	call Coord2Tile
 	pop bc
 	jp TextBox
 ; 354b
@@ -1242,7 +1243,7 @@
 	ld e, l
 	call Function35de
 	jr nc, .asm_3597
-	call Function2631
+	call CallMapScript
 	callba EnableScriptMode
 	scf
 	ret
@@ -1460,17 +1461,17 @@
 	pop af
 	ld [hLastTalked], a
 	ld a, b
-	ld [CurFruit], a
+	ld [EngineBuffer2], a
 	ld a, c
-	ld [wd040], a
+	ld [EngineBuffer3], a
 	jr Function367e
 ; 3674
 
 Function3674:: ; 3674
 	ld a, 1
-	ld [CurFruit], a
+	ld [EngineBuffer2], a
 	ld a, -1
-	ld [wd040], a
+	ld [EngineBuffer3], a
 
 Function367e:: ; 367e
 	call GetMapScriptHeaderBank
@@ -1600,20 +1601,21 @@
 ; 3718
 
 
-Function3718:: ; 3718
+PrintWinLossText:: ; 3718
 	ld a, [BattleType]
 	cp BATTLETYPE_CANLOSE
-	jr .canlose
+	jr .canlose ; ??????????
 
-	ld hl, WalkingTile
+; unreferenced
+	ld hl, wWinTextPointer
 	jr .ok
 
 .canlose
 	ld a, [wBattleResult]
-	ld hl, WalkingTile
+	ld hl, wWinTextPointer
 	and $f
 	jr z, .ok
-	ld hl, wd048 + 1
+	ld hl, wLossTextPointer
 
 .ok
 	ld a, [hli]
@@ -1622,7 +1624,7 @@
 	call GetMapScriptHeaderBank
 	call FarPrintText
 	call WaitBGMap
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	ret
 ; 3741
 
@@ -1647,7 +1649,7 @@
 ; 3750
 
 
-DrawHPBar:: ; 3750
+DrawBattleHPBar:: ; 3750
 ; Draw an HP bar d tiles long at hl
 ; Fill it up to e pixels
 
@@ -1709,11 +1711,11 @@
 ; 3786
 
 
-Function3786:: ; 3786
+PrepMonFrontpic:: ; 3786
 	ld a, $1
 	ld [wc2c6], a
 
-Function378b:: ; 378b
+_PrepMonFrontpic:: ; 378b
 	ld a, [CurPartySpecies]
 	call IsAPokemon
 	jr c, .not_pokemon
@@ -1723,7 +1725,7 @@
 	predef GetFrontpic
 	pop hl
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	lb bc, 7, 7
 	predef FillBox
 	xor a
@@ -1890,7 +1892,7 @@
 	bit 5, b
 	jr z, .loop
 	bit 7, b
-	jr nz, .loop
+	jr nz, .loop ; skip currency symbol
 	ld [hl], "¥"
 	inc hl
 .loop
@@ -1940,6 +1942,7 @@
 	add a, "0"
 	ld [hli], a
 	jp PrintLetterDelay
+
 .zeroDigit
 	bit 7, b ; either printing leading zeroes or already reached a nonzero digit?
 	jr z, .outputDigit ; if so, print a zero digit
@@ -1965,7 +1968,7 @@
 
 GetPartyLocation:: ; 3927
 ; Add the length of a PartyMon struct to hl a times.
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	jp AddNTimes
 ; 392d
 
@@ -1990,57 +1993,6 @@
 
 INCLUDE "home/battle.asm"
 
-
-Function3ae1:: ; 3ae1
-
-GLOBAL BattleAnimations
-GLOBAL BattleAnimCommands
-
-	ld a, BANK(BattleAnimations)
-	rst Bankswitch
-
-	ld a, [hli]
-	ld [BattleAnimAddress], a
-	ld a, [hl]
-	ld [BattleAnimAddress + 1], a
-
-	ld a, BANK(BattleAnimCommands)
-	rst Bankswitch
-
-	ret
-; 3af0
-
-GetBattleAnimByte:: ; 3af0
-
-	push hl
-	push de
-
-	ld hl, BattleAnimAddress
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-
-	ld a, BANK(BattleAnimations)
-	rst Bankswitch
-
-	ld a, [de]
-	ld [BattleAnimByte], a
-	inc de
-
-	ld a, BANK(BattleAnimCommands)
-	rst Bankswitch
-
-	ld [hl], d
-	dec hl
-	ld [hl], e
-
-	pop de
-	pop hl
-
-	ld a, [BattleAnimByte]
-	ret
-; 3b0c
-
 Function3b0c:: ; 3b0c
 
 	ld a, [hLCDStatCustom]
@@ -2230,7 +2182,7 @@
 ; 3f7c
 
 Function3f7c:: ; 3f7c
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	call GetMenuBoxDims
 	dec b
 	dec c
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -1,6 +1,6 @@
 ; Audio interfaces.
 
-SoundRestart:: ; 3b4e
+MapSetup_Sound_Off:: ; 3b4e
 
 	push hl
 	push de
@@ -9,11 +9,11 @@
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(_SoundRestart)
+	ld a, BANK(_MapSetup_Sound_Off)
 	ld [hROMBank], a
 	ld [MBC3RomBank], a
 
-	call _SoundRestart
+	call _MapSetup_Sound_Off
 
 	pop af
 	ld [hROMBank], a
@@ -81,7 +81,7 @@
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(_PlayMusic) ; and BANK(_SoundRestart)
+	ld a, BANK(_PlayMusic) ; and BANK(_MapSetup_Sound_Off)
 	ld [hROMBank], a
 	ld [MBC3RomBank], a
 
@@ -93,7 +93,7 @@
 	jr .end
 
 .nomusic
-	call _SoundRestart
+	call _MapSetup_Sound_Off
 
 .end
 	pop af
@@ -312,13 +312,13 @@
 	ret
 ; 3ca8
 
-Function3ca8:: ; 3ca8
+FadeOutMusic:: ; 3ca8
 	ld a, 4
 	ld [MusicFade], a
 	ret
 ; 3cae
 
-CrankUpTheVolume:: ; 3cae
+FadeInMusic:: ; 3cae
 	ld a, 4 | 1 << 7
 	ld [MusicFade], a
 	ret
@@ -326,11 +326,12 @@
 
 SkipMusic:: ; 3cb4
 ; Skip a frames of music.
+.loop
 	and a
 	ret z
 	dec a
 	call UpdateSound
-	jr SkipMusic
+	jr .loop
 ; 3cbc
 
 FadeToMapMusic:: ; 3cbc
--- a/home/battle.asm
+++ b/home/battle.asm
@@ -234,7 +234,7 @@
 ; 3a90
 
 
-FarJumpText:: ; 3a90
+FarCopyRadioText:: ; 3a90
 	inc hl
 	ld a, [hROMBank]
 	push af
@@ -249,8 +249,8 @@
 	ld l, a
 	ld a, d
 	ld h, a
-	ld de, wd00c
-	ld bc, $0028
+	ld de, wRadioText
+	ld bc, 2 * SCREEN_WIDTH
 	call CopyBytes
 	pop af
 	ld [hROMBank], a
@@ -309,3 +309,53 @@
 	rst Bankswitch
 	ret
 ; 3ae1
+
+GetBattleAnimPointer:: ; 3ae1
+
+GLOBAL BattleAnimations
+GLOBAL BattleAnimCommands
+
+	ld a, BANK(BattleAnimations)
+	rst Bankswitch
+
+	ld a, [hli]
+	ld [BattleAnimAddress], a
+	ld a, [hl]
+	ld [BattleAnimAddress + 1], a
+
+	ld a, BANK(BattleAnimCommands)
+	rst Bankswitch
+
+	ret
+; 3af0
+
+GetBattleAnimByte:: ; 3af0
+
+	push hl
+	push de
+
+	ld hl, BattleAnimAddress
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+
+	ld a, BANK(BattleAnimations)
+	rst Bankswitch
+
+	ld a, [de]
+	ld [BattleAnimByte], a
+	inc de
+
+	ld a, BANK(BattleAnimCommands)
+	rst Bankswitch
+
+	ld [hl], d
+	dec hl
+	ld [hl], e
+
+	pop de
+	pop hl
+
+	ld a, [BattleAnimByte]
+	ret
+; 3b0c
--- a/home/copy.asm
+++ b/home/copy.asm
@@ -1,7 +1,7 @@
 ; Functions to copy data from ROM.
 
 
-Functiondc9:: ; dc9
+Get2bpp_2:: ; dc9
 	ld a, [rLCDC]
 	bit 7, a
 	jp z, Copy2bpp
@@ -8,9 +8,9 @@
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Function104284)
+	ld a, BANK(_Get2bpp)
 	rst Bankswitch
-	call Function104284
+	call _Get2bpp
 	pop af
 	rst Bankswitch
 
@@ -17,7 +17,7 @@
 	ret
 ; ddc
 
-Functionddc:: ; ddc
+Get1bpp_2:: ; ddc
 	ld a, [rLCDC]
 	bit 7, a
 	jp z, Copy1bpp
@@ -24,9 +24,9 @@
 
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Function1042b2)
+	ld a, BANK(_Get1bpp)
 	rst Bankswitch
-	call Function1042b2
+	call _Get1bpp
 	pop af
 	rst Bankswitch
 
@@ -33,19 +33,21 @@
 	ret
 ; def
 
-Functiondef:: ; def
+FarCopyBytesDouble_DoubleBankSwitch:: ; def
 	ld [hBuffer], a
 	ld a, [hROMBank]
 	push af
 	ld a, [hBuffer]
 	rst Bankswitch
+
 	call FarCopyBytesDouble
+
 	pop af
 	rst Bankswitch
 	ret
 ; dfd
 
-Functiondfd:: ; dfd
+OldDMATransfer:: ; dfd
 	dec c
 	ld a, [hBGMapMode]
 	push af
@@ -57,42 +59,47 @@
 	rst Bankswitch
 
 .loop
+; load the source and target MSB and LSB
 	ld a, d
-	ld [rHDMA1], a
+	ld [rHDMA1], a ; source MSB
 	ld a, e
 	and $f0
-	ld [rHDMA2], a
+	ld [rHDMA2], a ; source LSB
 	ld a, h
 	and $1f
-	ld [rHDMA3], a
+	ld [rHDMA3], a ; target MSB
 	ld a, l
 	and $f0
-	ld [rHDMA4], a
+	ld [rHDMA4], a ; target LSB
+; stop when c < 8
 	ld a, c
 	cp $8
 	jr c, .done
+; decrease c by 8
 	sub $8
 	ld c, a
+; DMA transfer state
 	ld a, $f
 	ld [hDMATransfer], a
 	call DelayFrame
+; add $100 to hl and de
 	ld a, l
-	add 0
+	add $100 % $100
 	ld l, a
 	ld a, h
-	adc 1
+	adc $100 / $100
 	ld h, a
 	ld a, e
-	add 0
+	add $100 % $100
 	ld e, a
 	ld a, d
-	adc 1
+	adc $100 / $100
 	ld d, a
 	jr .loop
 
 .done
 	ld a, c
-	and $7f
+	and $7f ; pretty silly, considering at most bits 0-2 would be set
 	ld [hDMATransfer], a
 	call DelayFrame
 	pop af
@@ -105,15 +112,15 @@
 
 
 
-Special_ReplaceKrisSprite:: ; e4a
-	callba Function14135
+ReplaceKrisSprite:: ; e4a
+	callba _ReplaceKrisSprite
 	ret
 ; e51
 
 
 
-Functione51:: ; e51
-	callba Functionfb449
+LoadStandardFont:: ; e51
+	callba _LoadStandardFont
 	ret
 ; e58
 
@@ -124,27 +131,30 @@
 
 
 
-Functione5f:: ; e5f
-	callba Functionfb48a
-	callba Functionfb4b0
+LoadFontsExtra:: ; e5f
+	callba _LoadFontsExtra1
+	callba _LoadFontsExtra2
 	ret
 ; e6c
 
-Functione6c:: ; e6c
-	callba Functionfb4b0
+LoadFontsExtra2:: ; e6c
+	callba _LoadFontsExtra2
 	ret
 ; e73
 
-Functione73:: ; e73
+DecompressRequest2bpp:: ; e73
 	push de
 	ld a, BANK(sScratch)
 	call GetSRAMBank
 	push bc
+
 	ld de, sScratch
 	ld a, b
 	call FarDecompress
+
 	pop bc
 	pop hl
+
 	ld de, sScratch
 	call Request2bpp
 	call CloseSRAM
@@ -222,10 +232,10 @@
 	ld a, b
 	rst Bankswitch
 
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	push af
 	ld a, $8
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
@@ -234,7 +244,7 @@
 	and a
 	jr nz, .NotMobile
 	ld a, $6
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 
 .NotMobile
 	ld a, e
@@ -247,7 +257,7 @@
 	ld [Requested2bppDest + 1], a
 .loop
 	ld a, c
-	ld hl, $ffd3
+	ld hl, hTilesPerCycle
 	cp [hl]
 	jr nc, .iterate
 
@@ -259,7 +269,7 @@
 	jr nz, .wait
 
 	pop af
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 
 	pop af
 	rst Bankswitch
@@ -269,7 +279,7 @@
 	ret
 
 .iterate
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	ld [Requested2bpp], a
 
 .wait2
@@ -279,7 +289,7 @@
 	jr nz, .wait2
 
 	ld a, c
-	ld hl, $ffd3
+	ld hl, hTilesPerCycle
 	sub [hl]
 	ld c, a
 	jr .loop
@@ -287,6 +297,7 @@
 
 
 Request1bpp:: ; f1e
+; Load 1bpp at b:de to occupy c tiles of hl.
 	ld a, [hBGMapMode]
 	push af
 	xor a
@@ -297,11 +308,11 @@
 	ld a, b
 	rst Bankswitch
 
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	push af
 
 	ld a, $8
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
 	jr nz, .NotMobile
@@ -309,7 +320,7 @@
 	and a
 	jr nz, .NotMobile
 	ld a, $6
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 
 .NotMobile
 	ld a, e
@@ -322,7 +333,7 @@
 	ld [Requested1bppDest + 1], a
 .loop
 	ld a, c
-	ld hl, $ffd3
+	ld hl, hTilesPerCycle
 	cp [hl]
 	jr nc, .iterate
 
@@ -334,7 +345,7 @@
 	jr nz, .wait
 
 	pop af
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 
 	pop af
 	rst Bankswitch
@@ -344,7 +355,7 @@
 	ret
 
 .iterate
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	ld [Requested1bpp], a
 
 .wait2
@@ -354,7 +365,7 @@
 	jr nz, .wait2
 
 	ld a, c
-	ld hl, $ffd3
+	ld hl, hTilesPerCycle
 	sub [hl]
 	ld c, a
 	jr .loop
--- a/home/copy2.asm
+++ b/home/copy2.asm
@@ -98,7 +98,9 @@
 	push af
 	ld a, [hBuffer]
 	ld [rSVBK], a
+
 	call CopyBytes
+
 	pop af
 	ld [rSVBK], a
 	ret
--- a/home/farcall.asm
+++ b/home/farcall.asm
@@ -25,7 +25,7 @@
 	push af
 	ld a, [hBuffer]
 	rst Bankswitch
-	call Function2d82
+	call FarJump_hl
 ; 2d6e
 
 ReturnFarCall:: ; 2d6e
@@ -33,9 +33,9 @@
 ; To do this, we can pop to bc instead of af.
 	
 	ld a, b
-	ld [PredefAddress + 2], a
+	ld [wFarCallBCBuffer], a
 	ld a, c
-	ld [PredefAddress + 3], a
+	ld [wFarCallBCBuffer + 1], a
 	
 ; Restore the working bank.
 	pop bc
@@ -42,13 +42,13 @@
 	ld a, b
 	rst Bankswitch
 	
-	ld a, [PredefAddress + 2]
+	ld a, [wFarCallBCBuffer]
 	ld b, a
-	ld a, [PredefAddress + 3]
+	ld a, [wFarCallBCBuffer + 1]
 	ld c, a
 	ret
 ; 2d82
 
-Function2d82:: ; 2d82
+FarJump_hl:: ; 2d82
 	jp [hl]
 ; 2d83
--- a/home/flag.asm
+++ b/home/flag.asm
@@ -102,7 +102,7 @@
 ; 0x2ead
 
 
-Function2ead:: ; 2ead
+CheckReceivedDex:: ; 2ead
 	ld de, ENGINE_POKEDEX
 	ld b, CHECK_FLAG
 	callba EngineFlagAction
--- a/home/init.asm
+++ b/home/init.asm
@@ -1,8 +1,8 @@
 Reset:: ; 150
 	di
-	call SoundRestart
+	call MapSetup_Sound_Off
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call ClearPalettes
 	xor a
 	ld [rIF], a
@@ -109,7 +109,7 @@
 	call LoadPushOAM
 
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld [hSCX], a
 	ld [hSCY], a
 	ld [rJOYP], a
@@ -137,7 +137,7 @@
 	ld [rLCDC], a
 
 	ld a, -1
-	ld [$ffcb], a
+	ld [hLinkPlayerNumber], a
 
 	callba Function9890
 
@@ -168,7 +168,7 @@
 
 	predef Function9853
 
-	call SoundRestart
+	call MapSetup_Sound_Off
 	xor a
 	ld [wMapMusic], a
 	jp GameInit
--- a/home/joypad.asm
+++ b/home/joypad.asm
@@ -355,7 +355,7 @@
 	ret
 ; a80
 
-Functiona80:: ; a80
+WaitPressAorB_BlinkCursor:: ; a80
 	ld a, [hMapObjectIndexBuffer]
 	push af
 	ld a, [hObjectStructIndexBuffer]
@@ -368,7 +368,7 @@
 .loop
 	push hl
 	hlcoord 18, 17
-	call Functionb06
+	call BlinkCursor
 	pop hl
 
 	call JoyTextDelay
@@ -383,7 +383,7 @@
 	ret
 ; aa5
 
-Functionaa5:: ; aa5
+SimpleWaitPressAorB:: ; aa5
 .loop
 	call JoyTextDelay
 	ld a, [hJoyLast]
@@ -437,7 +437,7 @@
 ; af5
 
 .blink_cursor: ; af5
-	ld a, [$ff9b]
+	ld a, [hVBlankCounter]
 	and %00010000 ; bit 4, a
 	jr z, .cursor_off
 	ld a, "▼"
@@ -451,7 +451,7 @@
 	ret
 ; b06
 
-Functionb06:: ; b06
+BlinkCursor:: ; b06
 	push bc
 	ld a, [hl]
 	ld b, a
@@ -458,7 +458,7 @@
 	ld a, "▼"
 	cp b
 	pop bc
-	jr nz, .asm_b27
+	jr nz, .place_arrow
 	ld a, [hMapObjectIndexBuffer]
 	dec a
 	ld [hMapObjectIndexBuffer], a
@@ -475,7 +475,7 @@
 	ld [hObjectStructIndexBuffer], a
 	ret
 
-.asm_b27
+.place_arrow
 	ld a, [hMapObjectIndexBuffer]
 	and a
 	ret z
@@ -488,9 +488,9 @@
 	dec a
 	ld [hObjectStructIndexBuffer], a
 	ret nz
-	ld a, $6
+	ld a, 6
 	ld [hObjectStructIndexBuffer], a
-	ld a, $ee
+	ld a, "▼"
 	ld [hl], a
 	ret
 ; b40
--- a/home/map.asm
+++ b/home/map.asm
@@ -95,13 +95,13 @@
 	ret
 ; 2173
 
-Function2173:: ; 2173
-	call Function217a
+OverworldTextModeSwitch:: ; 2173
+	call LoadMapPart
 	call FarCallSwapTextboxPalettes
 	ret
 ; 217a
 
-Function217a:: ; 217a
+LoadMapPart:: ; 217a
 	ld a, [hROMBank]
 	push af
 
@@ -108,7 +108,7 @@
 	ld a, [TilesetBlocksBank]
 	rst Bankswitch
 
-	call Function2198
+	call LoadMetatiles
 	ld a, $60
 	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -123,18 +123,19 @@
 	ret
 ; 2198
 
-Function2198:: ; 2198
+LoadMetatiles:: ; 2198
+; de <- wd194
 	ld a, [wd194]
 	ld e, a
-	ld a, [wd195]
+	ld a, [wd194 + 1]
 	ld d, a
-	ld hl, wEnemyMoveStruct
-	ld b, $5
+	ld hl, wMisc
+	ld b, 5 ; SCREEN_WIDTH / 4
 
 .loop
 	push de
 	push hl
-	ld c, $6
+	ld c, 6 ; SCREEN_HEIGHT / 3
 
 .loop2
 	push de
@@ -141,12 +142,13 @@
 	push hl
 	ld a, [de]
 	and a
-	jr nz, .asm_21b2
+	jr nz, .ok
 	ld a, [MapBorderBlock]
 
-.asm_21b2
+.ok
 	ld e, l
 	ld d, h
+; double a, load hl <- a, multiply hl by 8
 	add a
 	ld l, a
 	ld h, 0
@@ -153,6 +155,7 @@
 rept 3
 	add hl,hl
 endr
+; hl <- hl + [TilesetBlocksAddress]
 	ld a, [TilesetBlocksAddress]
 	add l
 	ld l, a
@@ -161,20 +164,21 @@
 	ld h, a
 
 rept 3
+; copy 4 bytes from hl to de
 rept 4
 	ld a, [hli]
 	ld [de], a
 	inc de
 endr
-
+; next row
 	ld a, e
-	add 20
+	add SCREEN_WIDTH
 	ld e, a
 	jr nc, .next\@
 	inc d
 .next\@
 endr
-
+; copy 4 more bytes from hl to de
 rept 4
 	ld a, [hli]
 	ld [de], a
@@ -182,7 +186,7 @@
 endr
 
 	pop hl
-	ld de, $0004
+	ld de, 4
 	add hl, de
 	pop de
 	inc de
@@ -189,24 +193,24 @@
 	dec c
 	jp nz, .loop2
 	pop hl
-	ld de, $0060
+	ld de, $60
 	add hl, de
 	pop de
 	ld a, [MapWidth]
-	add $6
+	add 6
 	add e
 	ld e, a
-	jr nc, .asm_2225
+	jr nc, .ok2
 	inc d
 
-.asm_2225
+.ok2
 	dec b
 	jp nz, .loop
 	ret
 ; 222a
 
-Function222a:: ; 222a
-	ld a, $fa
+ReturnToMapFromSubmenu:: ; 222a
+	ld a, MAPSETUP_SUBMENU
 	ld [hMapEntryMethod], a
 	callba RunMapSetupScript
 	xor a
@@ -215,13 +219,15 @@
 ; 2238
 
 CheckWarpTile:: ; 2238
-	call Function2252
+	call GetDestinationWarpNumber
 	ret nc
+
 	push bc
 	callba Function149af
 	pop bc
 	ret nc
-	call Function22a7
+
+	call CopyWarpData
 	scf
 	ret
 ; 224a
@@ -228,14 +234,14 @@
 
 
 
-Function224a:: ; 224a
-	call Function2252
+WarpCheck:: ; 224a
+	call GetDestinationWarpNumber
 	ret nc
-	call Function22a7
+	call CopyWarpData
 	ret
 ; 2252
 
-Function2252:: ; 2252
+GetDestinationWarpNumber:: ; 2252
 	callba Function1499a
 	ret nc
 
@@ -243,7 +249,7 @@
 	push af
 
 	call SwitchToMapScriptHeaderBank
-	call Function2266
+	call .GetDestinationWarpNumber
 
 	pop de
 	ld a, d
@@ -251,7 +257,7 @@
 	ret
 ; 2266
 
-Function2266:: ; 2266
+.GetDestinationWarpNumber ; 2266
 	ld a, [PlayerMapY]
 	sub $4
 	ld e, a
@@ -261,39 +267,41 @@
 	ld a, [wCurrMapWarpCount]
 	and a
 	ret z
+
 	ld c, a
 	ld hl, wCurrMapWarpHeaderPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-.asm_227e
+.loop
 	push hl
 	ld a, [hli]
 	cp e
-	jr nz, .asm_2289
+	jr nz, .next
 	ld a, [hli]
 	cp d
-	jr nz, .asm_2289
-	jr .asm_2296
+	jr nz, .next
+	jr .found_warp
 
-.asm_2289
+.next
 	pop hl
-	ld a, $5
+	ld a, 5
 	add l
 	ld l, a
-	jr nc, .asm_2291
+	jr nc, .okay
 	inc h
 
-.asm_2291
+.okay
 	dec c
-	jr nz, .asm_227e
+	jr nz, .loop
 	xor a
 	ret
 
-.asm_2296
+.found_warp
 	pop hl
-	call Function22a3
-	ret nc
+	call .IncreaseHLTwice
+	ret nc ; never encountered
+
 	ld a, [wCurrMapWarpCount]
 	inc a
 	sub c
@@ -300,9 +308,8 @@
 	ld c, a
 	scf
 	ret
-; 22a3
 
-Function22a3:: ; 22a3
+.IncreaseHLTwice
 rept 2
 	inc hl
 endr
@@ -310,12 +317,12 @@
 	ret
 ; 22a7
 
-Function22a7:: ; 22a7
+CopyWarpData:: ; 22a7
 	ld a, [hROMBank]
 	push af
 
 	call SwitchToMapScriptHeaderBank
-	call Function22b4
+	call .CopyWarpData
 
 	pop af
 	rst Bankswitch
@@ -323,7 +330,7 @@
 	ret
 ; 22b4
 
-Function22b4:: ; 22b4
+.CopyWarpData ; 22b4
 	push bc
 	ld hl, wCurrMapWarpHeaderPointer
 	ld a, [hli]
@@ -331,29 +338,30 @@
 	ld l, a
 	ld a, c
 	dec a
-	ld bc, $0005
+	ld bc, 5 ; warp size
 	call AddNTimes
-	ld bc, $0002
+	ld bc, 2 ; warp number
 	add hl, bc
 	ld a, [hli]
 	cp $ff
-	jr nz, .asm_22d0
-	ld hl, wdcac
+	jr nz, .skip
+	ld hl, BackupWarpNumber
 	ld a, [hli]
 
-.asm_22d0
+.skip
 	pop bc
-	ld [wd146], a
+	ld [wNextWarp], a
 	ld a, [hli]
-	ld [wd147], a
+	ld [wNextMapGroup], a
 	ld a, [hli]
-	ld [wd148], a
+	ld [wNextMapNumber], a
+
 	ld a, c
-	ld [wd149], a
+	ld [wPrevWarp], a
 	ld a, [MapGroup]
-	ld [wd14a], a
+	ld [wPrevMapGroup], a
 	ld a, [MapNumber]
-	ld [wd14b], a
+	ld [wPrevMapNumber], a
 	scf
 	ret
 ; 22ee
@@ -378,40 +386,40 @@
 	ret
 ; 2300
 
-Function2300:: ; 2300
+Function2300:: ; unreferenced
 	cp INDOOR
 	ret z
 	cp GATE
 	ret z
-	cp $5
+	cp PERM_5
 	ret
 ; 2309
 
 
 LoadMapAttributes:: ; 2309
-	call Function2326
+	call CopyMapHeaders
 	call SwitchToMapScriptHeaderBank
-	call Function234f
+	call ReadMapScripts
 	xor a
 	call ReadMapEventHeader
 	ret
 ; 2317
 
-LoadMapAttributes_IgnoreHidden:: ; 2317
-	call Function2326
+LoadMapAttributes_SkipPeople:: ; 2317
+	call CopyMapHeaders
 	call SwitchToMapScriptHeaderBank
-	call Function234f
+	call ReadMapScripts
 	ld a, $1
 	call ReadMapEventHeader
 	ret
 ; 2326
 
-Function2326:: ; 2326
-	call Function2c3d
+CopyMapHeaders:: ; 2326
+	call PartiallyCopyMapHeader
 	call SwitchToMapBank
 	call GetSecondaryMapHeaderPointer
-	call Function235c
-	call Function2368
+	call CopySecondMapHeader
+	call GetMapConnections
 	ret
 ; 2336
 
@@ -427,14 +435,16 @@
 	call ReadWarps
 	call ReadCoordEvents
 	call ReadSignposts
+
 	pop af
 	and a
 	ret nz
+
 	call ReadObjectEvents
 	ret
 ; 234f
 
-Function234f:: ; 234f
+ReadMapScripts:: ; 234f
 	ld hl, MapScriptHeaderPointer
 	ld a, [hli]
 	ld h, [hl]
@@ -444,19 +454,19 @@
 	ret
 ; 235c
 
-Function235c:: ; 235c
+CopySecondMapHeader:: ; 235c
 	ld de, MapHeader
-	ld c, $c
-.asm_2361
+	ld c, 12 ; size of the second map header
+.loop
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_2361
+	jr nz, .loop
 	ret
 ; 2368
 
-Function2368:: ; 2368
+GetMapConnections:: ; 2368
 	ld a, $ff
 	ld [NorthConnectedMapGroup], a
 	ld [SouthConnectedMapGroup], a
@@ -466,29 +476,29 @@
 	ld a, [MapConnections]
 	ld b, a
 
-	bit 3, b
-	jr z, .asm_2384
+	bit NORTH_F, b
+	jr z, .no_north
 	ld de, NorthMapConnection
 	call GetMapConnection
-.asm_2384
+.no_north
 
-	bit 2, b
-	jr z, .asm_238e
+	bit SOUTH_F, b
+	jr z, .no_south
 	ld de, SouthMapConnection
 	call GetMapConnection
-.asm_238e
+.no_south
 
-	bit 1, b
-	jr z, .asm_2398
+	bit WEST_F, b
+	jr z, .no_west
 	ld de, WestMapConnection
 	call GetMapConnection
-.asm_2398
+.no_west
 
-	bit 0, b
-	jr z, .asm_23a2
+	bit EAST_F, b
+	jr z, .no_east
 	ld de, EastMapConnection
 	call GetMapConnection
-.asm_23a2
+.no_east
 
 	ret
 ; 23a3
@@ -564,11 +574,13 @@
 	ld a, l
 	ld [wCurrentMapXYTriggerHeaderPointer], a
 	ld a, h
-	ld [wdc00], a
+	ld [wCurrentMapXYTriggerHeaderPointer + 1], a
+
 	ld a, c
 	and a
 	ret z
-	ld bc, $0008
+
+	ld bc, 8
 	call AddNTimes
 	ret
 ; 2408
@@ -578,13 +590,15 @@
 	ld c, a
 	ld [wCurrentMapSignpostCount], a
 	ld a, l
-	ld [wdc02], a
+	ld [wCurrentMapSignpostHeaderPointer], a
 	ld a, h
-	ld [wdc03], a
+	ld [wCurrentMapSignpostHeaderPointer + 1], a
+
 	ld a, c
 	and a
 	ret z
-	ld bc, $0005
+
+	ld bc, 5
 	call AddNTimes
 	ret
 ; 241f
@@ -591,80 +605,93 @@
 
 ReadObjectEvents:: ; 241f
 	push hl
-	call Function2471
+	call ClearObjectStructs
 	pop de
-	ld hl, MapObjects + OBJECT_LENGTH
+	ld hl, Map1Object
 	ld a, [de]
 	inc de
-	ld [wdc04], a
+	ld [wCurrentMapPersonEventCount], a
 	ld a, e
-	ld [wdc05], a
+	ld [wCurrentMapPersonEventHeaderPointer], a
 	ld a, d
-	ld [wdc06], a
-	ld a, [wdc04]
-	call Function2457
-	ld a, [wdc04]
+	ld [wCurrentMapPersonEventHeaderPointer + 1], a
+
+	ld a, [wCurrentMapPersonEventCount]
+	call CopyMapObjectHeaders
+
+; get NUM_OBJECTS - [wCurrentMapPersonEventCount]
+	ld a, [wCurrentMapPersonEventCount]
 	ld c, a
-	ld a, $10
+	ld a, NUM_OBJECTS ; - 1
 	sub c
-	jr z, .asm_2454
-	ld bc, $0001
+	jr z, .skip
+	; jr c, .skip
+
+; stupid waste of time and space
+	ld bc, 1
 	add hl, bc
-	ld bc, $0010
-.asm_244a
-	ld [hl], $0
+; Fill the remaining sprite IDs and y coords with 0 and -1, respectively.
+; Bleeds into wObjectMasks due to a bug.  Uncomment the above subtraction
+; to fix.
+	ld bc, OBJECT_LENGTH
+.loop
+	ld [hl],  0
 	inc hl
-	ld [hl], $ff
+	ld [hl], -1
 	dec hl
 	add hl, bc
 	dec a
-	jr nz, .asm_244a
+	jr nz, .loop
 
-.asm_2454
+.skip
 	ld h, d
 	ld l, e
 	ret
 ; 2457
 
-Function2457:: ; 2457
+CopyMapObjectHeaders:: ; 2457
 	and a
 	ret z
+
 	ld c, a
-.asm_245a
+.loop
 	push bc
 	push hl
 	ld a, $ff
 	ld [hli], a
-	ld b, $d
-.asm_2461
+	ld b, MAPOBJECT_E - MAPOBJECT_SPRITE
+.loop2
 	ld a, [de]
 	inc de
 	ld [hli], a
 	dec b
-	jr nz, .asm_2461
+	jr nz, .loop2
+
 	pop hl
-	ld bc, $0010
+	ld bc, OBJECT_LENGTH
 	add hl, bc
 	pop bc
 	dec c
-	jr nz, .asm_245a
+	jr nz, .loop
 	ret
 ; 2471
 
-Function2471:: ; 2471
+ClearObjectStructs:: ; 2471
 	ld hl, Object1Struct
 	ld bc, OBJECT_STRUCT_LENGTH * (NUM_OBJECT_STRUCTS - 1)
 	xor a
 	call ByteFill
+
+; Just to make sure (this is rather pointless)
 	ld hl, Object1Struct
 	ld de, OBJECT_STRUCT_LENGTH
 	ld c, NUM_OBJECT_STRUCTS - 1
 	xor a
-.asm_2484
+.loop
 	ld [hl], a
 	add hl, de
 	dec c
-	jr nz, .asm_2484
+	jr nz, .loop
 	ret
 ; 248a
 
@@ -677,34 +704,35 @@
 	ld h, [hl]
 	ld l, a
 rept 3
-	inc hl
+	inc hl ; get to the warp coords
 endr
 	ld a, [WarpNumber]
 	dec a
 	ld c, a
-	ld b, $0
-	ld a, $5
+	ld b, 0
+	ld a, 5
 	call AddNTimes
 	ld a, [hli]
 	ld [YCoord], a
 	ld a, [hli]
 	ld [XCoord], a
+	; destination warp number
 	ld a, [hli]
 	cp $ff
-	jr nz, .asm_24b3
-	call Function24ba
+	jr nz, .skip
+	call .backup
 
-.asm_24b3
+.skip
 	callba GetCoordOfUpperLeftCorner
 	ret
 ; 24ba
 
-Function24ba:: ; 24ba
-	ld a, [wd149]
-	ld [wdcac], a
-	ld a, [wd14a]
+.backup
+	ld a, [wPrevWarp]
+	ld [BackupWarpNumber], a
+	ld a, [wPrevMapGroup]
 	ld [BackupMapGroup], a
-	ld a, [wd14b]
+	ld a, [wPrevMapNumber]
 	ld [BackupMapNumber], a
 	ret
 ; 24cd
@@ -965,7 +993,7 @@
 	ld a, h
 	ld [ScriptPos + 1], a
 
-	ld a, $ff
+	ld a, PLAYEREVENT_MAPSCRIPT
 	ld [ScriptRunning], a
 
 	scf
@@ -972,7 +1000,8 @@
 	ret
 ; 2631
 
-Function2631:: ; 2631
+CallMapScript:: ; 2631
+; Call a script at hl in the current bank if there isn't already a script running
 	ld a, [ScriptRunning]
 	and a
 	ret nz
@@ -986,7 +1015,7 @@
 	ld a, [hROMBank]
 	push af
 	call SwitchToMapScriptHeaderBank
-	call Function2653
+	call .FindCallback
 	jr nc, .done
 
 	call GetMapScriptHeaderBank
@@ -1001,7 +1030,7 @@
 	ret
 ; 2653
 
-Function2653:: ; 2653
+.FindCallback: ; 2653
 	ld a, [wCurrMapCallbackCount]
 	ld c, a
 	and a
@@ -1016,7 +1045,7 @@
 .loop
 	ld a, [hl]
 	cp b
-	jr z, .done
+	jr z, .found
 	add hl, de
 	dec c
 	jr nz, .loop
@@ -1023,7 +1052,7 @@
 	xor a
 	ret
 
-.done
+.found
 	inc hl
 	ld a, [hli]
 	ld h, [hl]
@@ -1033,7 +1062,8 @@
 ; 2674
 
 ExecuteCallbackScript:: ; 2674
-	callba Function974f3
+; Do map callback de and return to script bank b.
+	callba CallCallback
 	ld a, [ScriptMode]
 	push af
 	ld hl, ScriptFlags
@@ -1093,6 +1123,7 @@
 ; 26c7
 
 GetMovementData:: ; 26c7
+; Initialize the movement data for person c at b:hl
 	ld a, [hROMBank]
 	push af
 	ld a, b
@@ -1099,7 +1130,7 @@
 	rst Bankswitch
 
 	ld a, c
-	call Function19e9
+	call LoadMovementDataPointer
 
 	pop hl
 	ld a, h
@@ -1394,7 +1425,7 @@
 	call FarDecompress
 	ld hl, w6_d000
 	ld de, VTiles2
-	ld bc, $0600
+	ld bc, $60 tiles
 	call CopyBytes
 	ld a, [rVBK]
 	push af
@@ -1402,13 +1433,13 @@
 	ld [rVBK], a
 	ld hl, w6_d600
 	ld de, VTiles2
-	ld bc, $0600
+	ld bc, $60 tiles
 	call CopyBytes
 	pop af
 	ld [rVBK], a
 	pop af
 	ld [rSVBK], a
-	ld a, [wd199]
+	ld a, [wTileset]
 	cp $1
 	jr z, .asm_286f
 	cp $2
@@ -1829,6 +1860,7 @@
 	ld a, [wCurrentMapSignpostCount]
 	and a
 	ret z
+
 	ld c, a
 	ld a, [hROMBank]
 	push af
@@ -1842,7 +1874,7 @@
 
 CheckIfFacingTileCoordIsSign:: ; 2aaa
 ; Checks to see if you are facing a signpost.  If so, copies it into EngineBuffer1 and sets carry.
-	ld hl, wdc02
+	ld hl, wCurrentMapSignpostHeaderPointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -1947,7 +1979,7 @@
 .copytrigger
 	pop hl
 	ld de, EngineBuffer1
-	ld bc, $0008 ; xy-trigger size
+	ld bc, 8 ; xy-trigger size
 	call CopyBytes
 	scf
 	ret
@@ -1957,8 +1989,8 @@
 FadeToMenu:: ; 2b29
 	xor a
 	ld [hBGMapMode], a
-	call LoadMenuDataHeader_0x1d75
-	callba FadeBlackBGMap
+	call LoadStandardMenuDataHeader
+	callba FadeOutPalettes
 	call ClearSprites
 	call DisableSpriteUpdates
 	ret
@@ -1966,7 +1998,7 @@
 
 
 Function2b3c:: ; 2b3c
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function2bae
 	call UpdateSprites
 	call Call_ExitMenu
@@ -1975,7 +2007,7 @@
 ; 2b4d
 
 Function2b4d:: ; 2b4d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function2bae
 	call UpdateSprites
@@ -1987,7 +2019,7 @@
 	call GetSGBLayout
 	callba Function49409
 	call Function3200
-	callba FadeInBGMap
+	callba FadeInPalettes
 	call EnableSpriteUpdates
 	ret
 ; 2b74
@@ -1997,11 +2029,11 @@
 	push af
 	ld a, $1
 	ld [wc2ce], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call Function2bae
 	hlcoord 0, 12
-	ld bc, $0412
+	lb bc, 4, 18
 	call TextBox
 	ld hl, VramState
 	set 0, [hl]
@@ -2013,7 +2045,7 @@
 	call UpdateTimePals
 	call DelayFrame
 	ld a, $1
-	ld [$ffde], a
+	ld [hMapAnims], a
 	pop af
 	ret
 ; 0x2bae
@@ -2021,9 +2053,9 @@
 Function2bae:: ; 2bae
 	call DisableLCD
 	call ClearSprites
-	callba Function14168
-	call Functione51
-	call Functione5f
+	callba RefreshSprites
+	call LoadStandardFont
+	call LoadFontsExtra
 	ld a, [hROMBank]
 	push af
 	ld a, [MapGroup]
@@ -2032,7 +2064,7 @@
 	ld c, a
 	call SwitchToAnyMapBank
 	callba Function8c001
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function2821
 	ld a, 9
 	call SkipMusic
@@ -2153,15 +2185,19 @@
 	ret
 ; 2c3d
 
-Function2c3d:: ; 2c3d
+PartiallyCopyMapHeader:: ; 2c3d
+; Copy second map header bank, tileset, permission, and second map header address
+; from the current map's map header.
 	ld a, [hROMBank]
 	push af
 	ld a, BANK(MapGroupPointers)
 	rst Bankswitch
+
 	call GetMapHeaderPointer
-	ld de, wd197 + 1
-	ld bc, $0005
+	ld de, wSecondMapHeaderBank
+	ld bc, MapHeader - wSecondMapHeaderBank
 	call CopyBytes
+
 	pop af
 	rst Bankswitch
 	ret
@@ -2213,7 +2249,7 @@
 ; returns the current map's secondary map header pointer in hl.
 	push bc
 	push de
-	ld de, $0003 ; secondary map header pointer (offset within header)
+	ld de, 3 ; secondary map header pointer (offset within header)
 	call GetMapHeaderMember
 	ld l, c
 	ld h, b
@@ -2226,7 +2262,7 @@
 	push hl
 	push de
 	push bc
-	ld de, 2
+	ld de, 2 ; permission
 	call GetMapHeaderMember
 	ld a, c
 	pop bc
@@ -2243,7 +2279,7 @@
 	push hl
 	push de
 	push bc
-	ld de, $0002
+	ld de, 2 ; permission
 	call GetAnyMapHeaderMember
 	ld a, c
 	pop bc
@@ -2253,7 +2289,7 @@
 ; 2ca7
 
 GetAnyMapTileset:: ; 2ca7
-	ld de, $0001
+	ld de, 1 ; tileset
 	call GetAnyMapHeaderMember
 	ld a, c
 	ret
@@ -2264,9 +2300,11 @@
 	push hl
 	push de
 	push bc
-	ld de, 5
+
+	ld de, 5 ; landmark
 	call GetAnyMapHeaderMember
 	ld a, c
+
 	pop bc
 	pop de
 	pop hl
@@ -2336,21 +2374,25 @@
 GetPhoneServiceTimeOfDayByte:: ; 2d0d
 	push hl
 	push bc
+
 	ld de, 7 ; phone service and time of day
 	call GetMapHeaderMember
 	ld a, c
+
 	pop bc
 	pop hl
 	ret
 ; 2d19
 
-Function2d19:: ; 2d19
+GetFishingGroup:: ; 2d19
 	push de
 	push hl
 	push bc
+
 	ld de, 8 ; fishing group
 	call GetMapHeaderMember
 	ld a, c
+
 	pop bc
 	pop hl
 	pop de
@@ -2363,7 +2405,7 @@
 
 	ld hl, Tilesets
 	ld bc, Tileset01 - Tileset00
-	ld a, [wd199]
+	ld a, [wTileset]
 	call AddNTimes
 
 	ld de, TilesetBank
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -52,7 +52,7 @@
 	ret
 ; 1836
 
-Function1836:: ; 1836
+DoesSpriteHaveFacings:: ; 1836
 	push de
 	push hl
 
@@ -59,11 +59,11 @@
 	ld b, a
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(Function142a7)
+	ld a, BANK(_DoesSpriteHaveFacings)
 	rst Bankswitch
 
 	ld a, b
-	call Function142a7
+	call _DoesSpriteHaveFacings
 	ld c, a
 
 	pop de
@@ -428,7 +428,8 @@
 
 
 
-Function19e9:: ; 19e9
+LoadMovementDataPointer:: ; 19e9
+; Load the movement data pointer for person a.
 	ld [wMovementPerson], a
 	ld a, [hROMBank]
 	ld [wMovementDataPointer], a
@@ -439,12 +440,15 @@
 	ld a, [wMovementPerson]
 	call CheckObjectVisibility
 	ret c
+
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
-	ld [hl], SPRITEMOVEDATA_14
+	ld [hl], SPRITEMOVEDATA_SCRIPTED
+
 	ld hl, OBJECT_09
 	add hl, bc
 	ld [hl], 0
+
 	ld hl, VramState
 	set 7, [hl]
 	and a
@@ -485,19 +489,19 @@
 
 
 
-Function1a2f:: ; 1a2f
+GetSpriteMovementFunction:: ; 1a2f
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld a, [hl]
-	cp OBJECT_STRUCT_3_DATA_HEIGHT
+	cp NUM_SPRITEMOVEDATA
 	jr c, .ok
 	xor a
 
 .ok
-	ld hl, ObjectStruct3_Data
+	ld hl, SpriteMovementData
 	ld e, a
 	ld d, 0
-rept OBJECT_STRUCT_3_DATA_WIDTH
+rept SPRITEMOVEDATA_FIELDS
 	add hl,de
 endr
 	ld a, [hl]
@@ -509,11 +513,11 @@
 	push de
 	ld e, a
 	ld d, 0
-	ld hl, ObjectStruct3_Data + 1
-rept OBJECT_STRUCT_3_DATA_WIDTH
+	ld hl, SpriteMovementData + 1 ; init facing
+rept SPRITEMOVEDATA_FIELDS
 	add hl,de
 endr
-	ld a, BANK(ObjectStruct3_Data)
+	ld a, BANK(SpriteMovementData)
 	call GetFarByte
 rept 2
 	add a
@@ -529,7 +533,7 @@
 	ld l, a
 	ld a, [hROMBank]
 	push af
-	ld a, BANK(ObjectStruct3_Data)
+	ld a, BANK(SpriteMovementData)
 	rst Bankswitch
 	ld a, l
 	push bc
@@ -550,8 +554,8 @@
 	push de
 	ld e, a
 	ld d, 0
-	ld hl, ObjectStruct3_Data + 1 ; facing?
-rept OBJECT_STRUCT_3_DATA_WIDTH
+	ld hl, SpriteMovementData + 1 ; init facing
+rept SPRITEMOVEDATA_FIELDS
 	add hl, de
 endr
 	ld b, h
@@ -589,14 +593,15 @@
 ; 1aae
 
 Function1aae:: ; 1aae
+; Switch to the movement data bank
 	ld a, [hROMBank]
 	push af
 	ld a, [hli]
 	rst Bankswitch
-
+; Load the current script byte as given by OBJECT_MOVEMENT_BYTE_INDEX, and increment OBJECT_MOVEMENT_BYTE_INDEX
 	ld a, [hli]
 	ld d, [hl]
-	ld hl, OBJECT_27
+	ld hl, OBJECT_MOVEMENT_BYTE_INDEX
 	add hl, bc
 	add [hl]
 	ld e, a
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -7,11 +7,11 @@
 	ret
 
 CopyMenuDataHeader::
-	ld de, wcf81
-	ld bc, 16
+	ld de, wMenuDataHeader
+	ld bc, wMenuDataHeaderEnd - wMenuDataHeader
 	call CopyBytes
 	ld a, [hROMBank]
-	ld [wcf8a], a
+	ld [wMenuDataBank], a
 	ret
 ; 0x1d4b
 
@@ -52,7 +52,7 @@
 	ret
 ; 1d6e
 
-LoadMenuDataHeader_0x1d75:: ; 1d6e
+LoadStandardMenuDataHeader:: ; 1d6e
 	ld hl, MenuDataHeader_0x1d75
 	call LoadMenuDataHeader
 	ret
@@ -74,12 +74,12 @@
 InterpretMenu2::
 	xor a
 	ld [hBGMapMode], a
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
 	call Function1c89
 	call Function321c
-	call Function1c66
-	ld a, [wcf91]
+	call CopyMenuData2
+	ld a, [wMenuData2Flags]
 	bit 7, a
 	jr z, .cancel
 	call Function1c10
@@ -99,15 +99,15 @@
 	call LoadMenuDataHeader
 	call InterpretMenu2
 	call WriteBackup
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ret
 ; 1db8
 
-Function1db8::
+CopyNameFromMenu::
 	push hl
 	push bc
 	push af
-	ld hl, wcf86
+	ld hl, wMenuData2Pointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
@@ -126,7 +126,7 @@
 
 
 YesNoBox:: ; 1dcf
-	lb bc, 14, 7
+	lb bc, SCREEN_WIDTH - 6, 7
 
 PlaceYesNoBox:: ; 1dd2
 	jr _YesNoBox
@@ -152,11 +152,11 @@
 .okay
 	ld a, b
 	ld [wMenuBorderLeftCoord], a
-	add $5
+	add 5
 	ld [wMenuBorderRightCoord], a
 	ld a, c
 	ld [wMenuBorderTopCoord], a
-	add $4
+	add 4
 	ld [wMenuBorderBottomCoord], a
 	call BackUpTiles
 
@@ -168,7 +168,7 @@
 	call WriteBackup
 	pop af
 	jr c, .no
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp 2 ; no
 	jr z, .no
 	and a
@@ -176,7 +176,7 @@
 
 .no
 	ld a, 2
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	scf
 	ret
 ; 1e1d
@@ -246,10 +246,10 @@
 	ret
 
 MenuFunc_1e7f::
-	call Function1c66
+	call CopyMenuData2
 	call Function1ebd
 	call Function1ea6
-	call Function1cbb
+	call MenuBox
 	ret
 
 MenuWriteText::
@@ -274,7 +274,7 @@
 	ld a, [wMenuBorderRightCoord]
 	sub c
 	ld c, a
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	add a
 	inc a
 	ld b, a
@@ -305,12 +305,12 @@
 	ld d, h
 	ld e, l
 	ld a, [hl]
-	ld [wcf92], a
+	ld [wMenuData2Items], a
 	ret
 ; 1eda
 
 Function1eda:: ; 1eda
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	ld bc, $002a
 	add hl, bc
 .asm_1ee1
@@ -342,13 +342,13 @@
 Function1eff:: ; 1eff
 	call Function1c10
 	ld hl, wcfa8
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 3, a
 	jr z, .asm_1f0e
 	set 3, [hl]
 
 .asm_1f0e
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 2, a
 	jr z, .asm_1f19
 	set 5, [hl]
@@ -403,13 +403,13 @@
 
 .asm_1f57
 	call Function1ebd
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld l, a
 	ld h, $0
 	add hl, de
 	ld a, [hl]
 	ld [MenuSelection], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wMenuCursorBuffer], a
 	and a
 	ret
@@ -489,9 +489,9 @@
 ResetTextRelatedRAM:: ; 1fbf
 	ld hl, wcf71
 	call .bytefill
-	ld hl, wcf81
+	ld hl, wMenuDataHeader
 	call .bytefill
-	ld hl, wcf91
+	ld hl, wMenuData2Flags
 	call .bytefill
 	ld hl, wcfa1
 	call .bytefill
@@ -527,7 +527,7 @@
 	push af
 	and $3
 	jr z, .nosound
-	ld hl, wcf81
+	ld hl, wMenuFlags
 	bit 3, [hl]
 	jr nz, .nosound
 	call PlayClickSFX
--- a/home/movement.asm
+++ b/home/movement.asm
@@ -1,29 +1,29 @@
-Function1b1e:: ; 1b1e
-	ld [wd003], a
+InitMovementBuffer:: ; 1b1e
+	ld [wMovementBufferPerson], a
 	xor a
-	ld [DefaultFlypoint], a
-	ld a, $0
+	ld [wMovementBufferCount], a
+	ld a, $0 ; useless
 	ld [wd004], a
 	ld a, $7
-	ld [StartFlypoint], a
+	ld [wd005], a
 	ld a, $d0
-	ld [EndFlypoint], a
+	ld [wd006], a
 	ret
 ; 1b35
 
-Function1b35:: ; 1b35
-	ld a, [DefaultFlypoint]
+DecrementMovementBufferCount:: ; 1b35
+	ld a, [wMovementBufferCount]
 	and a
 	ret z
 	dec a
-	ld [DefaultFlypoint], a
+	ld [wMovementBufferCount], a
 	ret
 ; 1b3f
 
-Function1b3f:: ; 1b3f
+AppendToMovementBuffer:: ; 1b3f
 	push hl
 	push de
-	ld hl, DefaultFlypoint
+	ld hl, wMovementBufferCount
 	ld e, [hl]
 	inc [hl]
 	ld d, 0
@@ -35,47 +35,50 @@
 	ret
 ; 1b50
 
-Function1b50:: ; 1b50
+AppendToMovementBufferNTimes:: ; 1b50
 	push af
 	ld a, c
 	and a
-	jr nz, .asm_1b57
+	jr nz, .okay
 	pop af
 	ret
 
-.asm_1b57
+.okay
 	pop af
-.asm_1b58
-	call Function1b3f
+.loop
+	call AppendToMovementBuffer
 	dec c
-	jr nz, .asm_1b58
+	jr nz, .loop
 	ret
 ; 1b5f
 
-Function1b5f:: ; 1b5f
+ComputePathToWalkToPlayer:: ; 1b5f
 	push af
+; compare x coords, load left/right into h, and x distance into d
 	ld a, b
 	sub d
-	ld h, $2
-	jr nc, .asm_1b6a
+	ld h, LEFT
+	jr nc, .got_x_distance
 	dec a
 	cpl
-	ld h, $3
+	ld h, RIGHT
 
-.asm_1b6a
+.got_x_distance
 	ld d, a
+; compare y coords, load up/down into l, and y distance into e
 	ld a, c
 	sub e
-	ld l, $1
-	jr nc, .asm_1b75
+	ld l, UP
+	jr nc, .got_y_distance
 	dec a
 	cpl
-	ld l, $0
+	ld l, DOWN
 
-.asm_1b75
+.got_y_distance
 	ld e, a
+; if the x distance is less than the y distance, swap h and l, and swap d and e
 	cp d
-	jr nc, .asm_1b7f
+	jr nc, .done
 	ld a, h
 	ld h, l
 	ld l, a
@@ -83,21 +86,23 @@
 	ld d, e
 	ld e, a
 
-.asm_1b7f
+.done
 	pop af
 	ld b, a
+; Add movement in the longer direction first...
 	ld a, h
-	call Function1b92
+	call .GetMovementData
 	ld c, d
-	call Function1b50
+	call AppendToMovementBufferNTimes
+; ... then add the shorter direction.
 	ld a, l
-	call Function1b92
+	call .GetMovementData
 	ld c, e
-	call Function1b50
+	call AppendToMovementBufferNTimes
 	ret
 ; 1b92
 
-Function1b92:: ; 1b92
+.GetMovementData: ; 1b92
 	push de
 	push hl
 	ld l, b
@@ -108,7 +113,7 @@
 	ld e, a
 	ld d, 0
 	add hl, de
-	ld de, .data_1ba5
+	ld de, .MovementData
 	add hl, de
 	ld a, [hl]
 	pop hl
@@ -116,8 +121,19 @@
 	ret
 ; 1ba5
 
-.data_1ba5
-	db 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+.MovementData
+	slow_step_down
+	slow_step_up
+	slow_step_left
+	slow_step_right
+	step_down
+	step_up
+	step_left
+	step_right
+	big_step_down
+	big_step_up
+	big_step_left
+	big_step_right
 ; 1bb1
 
 Function1bb1:: ; 1bb1
--- a/home/palettes.asm
+++ b/home/palettes.asm
@@ -79,7 +79,7 @@
 	ld [rBGP], a
 	push af
 
-; Don't need to be here if CGB
+; Don't need to be here if DMG
 	ld a, [hCGB]
 	and a
 	jr z, .end
@@ -95,7 +95,7 @@
 
 ; copy & reorder bg pal buffer
 	ld hl, BGPals ; to
-	ld de, Unkn1Pals ; from
+	ld de, wMapPals ; from
 ; order
 	ld a, [rBGP]
 	ld b, a
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -6,7 +6,7 @@
 	push de
 	push hl
 
-	ld a, [$ffc9]
+	ld a, [hFFC9]
 	and a
 	jr nz, .asm_71c
 
@@ -14,7 +14,7 @@
 	bit 0, a
 	jr nz, .asm_721
 
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	inc a ; is it equal to -1?
 	jr z, .asm_726
 
@@ -24,7 +24,7 @@
 	ld a, [hSerialSend]
 	ld [rSB], a
 
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $2
 	jr z, .asm_752
 
@@ -51,7 +51,7 @@
 
 .asm_730
 	ld [hSerialReceive], a
-	ld [$ffcb], a
+	ld [hLinkPlayerNumber], a
 	cp $2
 	jr z, .asm_74f
 
@@ -77,7 +77,7 @@
 
 .asm_752
 	ld a, $1
-	ld [$ffca], a
+	ld [hFFCA], a
 	ld a, $fe
 	ld [hSerialSend], a
 
@@ -91,7 +91,7 @@
 
 Function75f:: ; 75f
 	ld a, $1
-	ld [$ffcc], a
+	ld [hFFCC], a
 .asm_763
 	ld a, [hl]
 	ld [hSerialSend], a
@@ -103,7 +103,7 @@
 .asm_76e
 	dec a
 	jr nz, .asm_76e
-	ld a, [$ffcc]
+	ld a, [hFFCC]
 	and a
 	ld a, b
 	pop bc
@@ -112,7 +112,7 @@
 	cp $fd
 	jr nz, .asm_763
 	xor a
-	ld [$ffcc], a
+	ld [hFFCC], a
 	jr .asm_763
 
 .asm_782
@@ -127,8 +127,8 @@
 
 Function78a:: ; 78a
 	xor a
-	ld [$ffca], a
-	ld a, [$ffcb]
+	ld [hFFCA], a
+	ld a, [hLinkPlayerNumber]
 	cp $2
 	jr nz, .asm_79b
 	ld a, $1
@@ -137,10 +137,10 @@
 	ld [rSC], a
 
 .asm_79b
-	ld a, [$ffca]
+	ld a, [hFFCA]
 	and a
 	jr nz, .asm_7e5
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr nz, .asm_7c0
 	call Function82b
@@ -172,7 +172,7 @@
 	dec a
 	ld [wcf5d + 1], a
 	jr nz, .asm_79b
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $1
 	jr z, .asm_7e5
 	ld a, $ff
@@ -182,7 +182,7 @@
 
 .asm_7e5
 	xor a
-	ld [$ffca], a
+	ld [hFFCA], a
 	ld a, [rIE]
 	and $f
 	sub $8
@@ -251,7 +251,7 @@
 	ld de, wcf51
 	ld c, $2
 	ld a, $1
-	ld [$ffcc], a
+	ld [hFFCC], a
 .asm_847
 	call DelayFrame
 	ld a, [hl]
@@ -259,10 +259,10 @@
 	call Function78a
 	ld b, a
 	inc hl
-	ld a, [$ffcc]
+	ld a, [hFFCC]
 	and a
 	ld a, $0
-	ld [$ffcc], a
+	ld [hFFCC], a
 	jr nz, .asm_847
 	ld a, b
 	ld [de], a
@@ -349,7 +349,7 @@
 	ld a, [wcf56]
 	add b
 	ld [hSerialSend], a
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $2
 	jr nz, .asm_8ee
 	ld a, $1
@@ -380,7 +380,7 @@
 Function908:: ; 908
 	xor a
 	ld [hSerialSend], a
-	ld a, [$ffcb]
+	ld a, [hLinkPlayerNumber]
 	cp $2
 	ret nz
 	ld a, $1
--- a/home/tilemap.asm
+++ b/home/tilemap.asm
@@ -22,9 +22,9 @@
 	ret
 
 RestoreTileBackup:: ; 0x1c23
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	call .copy
-	call GetMemAttrCoord
+	call MenuBoxCoord2Attr
 	call .copy
 	ret
 ; 0x1c30
@@ -56,7 +56,7 @@
 
 Function1c47:: ; 0x1c47
 	ld b, $10
-	ld de, wcf81
+	ld de, wMenuFlags
 .loop
 	ld a, [hld]
 	ld [de], a
@@ -79,17 +79,17 @@
 	ret
 ; 0x1c66
 
-Function1c66:: ; 1c66
+CopyMenuData2:: ; 1c66
 	push hl
 	push de
 	push bc
 	push af
-	ld hl, wcf86
+	ld hl, wMenuData2Pointer
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, wcf91
-	ld bc, $0010
+	ld de, wMenuData2Flags
+	ld bc, wMenuData2End - wMenuData2Flags
 	call CopyBytes
 	pop af
 	pop bc
@@ -111,30 +111,31 @@
 ; 1c89
 
 Function1c89:: ; 1c89
-	call Function1c66
-	ld hl, wcf86
+	call CopyMenuData2
+	ld hl, wMenuData2Pointer
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	call Function1cc6
-	call GetTileCoord
+	call GetMenuTextStartCoord
+	call Coord2Tile ; hl now contains the TileMap address where we will start printing text.
 	inc de
-	ld a, [de]
+	ld a, [de] ; Number of items
 	inc de
 	ld b, a
-.asm_1c9c
+.loop
 	push bc
 	call PlaceString
 	inc de
-	ld bc, $0028
+	ld bc, 2 * SCREEN_WIDTH
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_1c9c
-	ld a, [wcf91]
+	jr nz, .loop
+	ld a, [wMenuData2Flags]
 	bit 4, a
 	ret z
-	call GetMemTileCoord
+
+	call MenuBoxCoord2Tile
 	ld a, [de]
 	ld c, a
 	inc de
@@ -143,8 +144,8 @@
 	jp PlaceString
 ; 1cbb
 
-Function1cbb:: ; 1cbb
-	call GetMemTileCoord
+MenuBox:: ; 1cbb
+	call MenuBoxCoord2Tile
 	call GetMenuBoxDims
 	dec b
 	dec c
@@ -151,7 +152,7 @@
 	jp TextBox
 ; 1cc6
 
-Function1cc6:: ; 1cc6
+GetMenuTextStartCoord:: ; 1cc6
 	ld a, [wMenuBorderTopCoord]
 	ld b, a
 	inc b
@@ -158,24 +159,26 @@
 	ld a, [wMenuBorderLeftCoord]
 	ld c, a
 	inc c
-	ld a, [wcf91]
+; bit 6: if not set, leave extra room on top
+	ld a, [wMenuData2Flags]
 	bit 6, a
-	jr nz, .asm_1cd8
+	jr nz, .bit_6_set
 	inc b
 
-.asm_1cd8
-	ld a, [wcf91]
+.bit_6_set
+; bit 7: if set, leave extra room on the left
+	ld a, [wMenuData2Flags]
 	bit 7, a
-	jr z, .asm_1ce0
+	jr z, .bit_7_clear
 	inc c
 
-.asm_1ce0
+.bit_7_clear
 	ret
 ; 1ce1
 
-Function1ce1:: ; 1ce1
-	call GetMemTileCoord
-	lb bc, 0, 21
+ClearMenuBoxInterior:: ; 1ce1
+	call MenuBoxCoord2Tile
+	ld bc, SCREEN_WIDTH + 1
 	add hl, bc
 	call GetMenuBoxDims
 	dec b
@@ -184,8 +187,8 @@
 	ret
 ; 1cf1
 
-Function1cf1:: ; 1cf1
-	call GetMemTileCoord
+ClearWholeMenuBox:: ; 1cf1
+	call MenuBoxCoord2Tile
 	call GetMenuBoxDims
 	inc c
 	inc b
@@ -194,7 +197,7 @@
 ; 1cfd
 
 
-GetMemTileCoord:: ; 1cfd
+MenuBoxCoord2Tile:: ; 1cfd
 	ld a, [wMenuBorderLeftCoord]
 	ld c, a
 	ld a, [wMenuBorderTopCoord]
@@ -202,7 +205,7 @@
 ; 1d05
 
 
-GetTileCoord:: ; 1d05
+Coord2Tile:: ; 1d05
 ; Return the address of TileMap(c, b) in hl.
 	xor a
 	ld h, a
@@ -226,13 +229,13 @@
 	ret
 ; 1d19
 
-GetMemAttrCoord:: ; 1d19
+MenuBoxCoord2Attr:: ; 1d19
 	ld a, [wMenuBorderLeftCoord]
 	ld c, a
 	ld a, [wMenuBorderTopCoord]
 	ld b, a
 
-GetAttrCoord:: ; 1d21
+Coord2Attr:: ; 1d21
 ; Return the address of AttrMap(c, b) in hl.
 	xor a
 	ld h, a
--- a/home/time.asm
+++ b/home/time.asm
@@ -101,8 +101,8 @@
 ; update dl
 	ld [hRTCDayLo], a ; DL
 
-; unknown output
-	ld a, $40 ; %1000000
+; flag for s0_ac60
+	ld a, %01000000
 	jr .set
 
 .daylo
@@ -120,8 +120,8 @@
 ; update dl
 	ld [hRTCDayLo], a ; DL
 	
-; unknown output
-	ld a, $20 ; %100000
+; flag for s0_ac60
+	ld a, %00100000
 	
 .set
 ; update clock with modded day value
@@ -278,6 +278,7 @@
 
 
 Function6c4:: ; 6c4
+; clear s0_ac60
 	xor a
 	push af
 	ld a, BANK(s0_ac60)
@@ -289,6 +290,7 @@
 ; 6d3
 
 Function6d3:: ; 6d3
+; append flags to s0_ac60
 	ld hl, s0_ac60
 	push af
 	ld a, BANK(s0_ac60)
@@ -301,6 +303,7 @@
 ; 6e3
 
 Function6e3:: ; 6e3
+; check s0_ac60
 	ld a, BANK(s0_ac60)
 	call GetSRAMBank
 	ld a, [s0_ac60]
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -64,7 +64,7 @@
 ; sound
 
 	; inc frame counter
-	ld hl, $ff9b
+	ld hl, hVBlankCounter
 	inc [hl]
 
 	; advance random variables
@@ -418,7 +418,7 @@
 	ld [hROMBankBackup], a
 
 	; inc frame counter
-	ld hl, $ff9b
+	ld hl, hVBlankCounter
 	inc [hl]
 
 	call UpdateCGBPals
--- a/home/video.asm
+++ b/home/video.asm
@@ -449,7 +449,7 @@
 AnimateTileset:: ; 17d3
 ; Only call during the first fifth of VBlank
 
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	and a
 	ret z
 	
--- a/home/window.asm
+++ b/home/window.asm
@@ -35,7 +35,7 @@
 	call ResetTextRelatedRAM
 	xor a
 	ld [hBGMapMode], a
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function2e20
 	xor a
 	ld [hBGMapMode], a
@@ -42,7 +42,7 @@
 	call Function2e31
 	ld a, $90
 	ld [hWY], a
-	call Special_ReplaceKrisSprite
+	call ReplaceKrisSprite
 	callba ReturnFromMapSetupScript
 	callba Function106594
 	ret
--- a/hram.asm
+++ b/hram.asm
@@ -32,6 +32,8 @@
 hJoyLast           EQU $ffa9
 hInMenu            EQU $ffaa
 
+hFillBox           EQU $ffad
+
 hMapObjectIndexBuffer EQU $ffaf
 hObjectStructIndexBuffer EQU $ffb0
 
@@ -60,13 +62,24 @@
 hPrintNum5         EQU $ffb7
 hPrintNum6         EQU $ffb8
 hPrintNum7         EQU $ffb9
+hPrintNum8         EQU $ffba
+hPrintNum9         EQU $ffbb
+hPrintNum10        EQU $ffbc
 
 hUsedSpriteIndex   EQU $ffbd
 hUsedSpriteTile    EQU $ffbe
+hFFBF              EQU $ffbf
+hFFC0              EQU $ffc0
+hFFC1              EQU $ffc1
+hFFC2              EQU $ffc2
 hMoneyTemp         EQU $ffc3
 
 hLCDStatCustom     EQU $ffc6
 
+hFFC9              EQU $ffc9
+hFFCA              EQU $ffca
+hLinkPlayerNumber  EQU $ffcb
+hFFCC              EQU $ffcc
 hSerialSend        EQU $ffcd
 hSerialReceive     EQU $ffce
 
@@ -74,7 +87,7 @@
 hSCY               EQU $ffd0
 hWX                EQU $ffd1
 hWY                EQU $ffd2
-
+hTilesPerCycle     EQU $ffd3
 hBGMapMode         EQU $ffd4
 hBGMapThird        EQU $ffd5
 hBGMapAddress      EQU $ffd6
@@ -84,6 +97,7 @@
 
 hBGMapUpdate       EQU $ffdb
 
+hMapAnims          EQU $ffde
 hTileAnimFrame     EQU $ffdf
 
 hLastTalked        EQU $ffe0
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -210,11 +210,11 @@
 ParkBall: ; e8a2
 	ld a, [wBattleMode]
 	dec a
-	jp nz, Functionf7a0
+	jp nz, UseBallInTrainerBattle
 
 	ld a, [PartyCount]
 	cp PARTY_LENGTH
-	jr nz, .asm_e8c0
+	jr nz, .room_in_party
 
 	ld a, BANK(sBoxCount)
 	call GetSRAMBank
@@ -223,9 +223,9 @@
 	call CloseSRAM
 	jp z, Ball_BoxIsFullMessage
 
-.asm_e8c0
+.room_in_party
 	xor a
-	ld [wc64e], a
+	ld [wWildMon], a
 	ld a, [CurItem]
 	cp PARK_BALL
 	call nz, Functionedfa
@@ -239,38 +239,38 @@
 	ld b, a
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
-	jp z, .asm_e99c
+	jp z, .catch_without_fail
 	ld a, [CurItem]
 	cp MASTER_BALL
-	jp z, .asm_e99c
+	jp z, .catch_without_fail
 	ld a, [CurItem]
 	ld c, a
 	ld hl, BallMultiplierFunctionTable
 
-.asm_e8f2
+.get_multiplier_loop
 	ld a, [hli]
 	cp $ff
-	jr z, .asm_e906
+	jr z, .skip_or_return_from_ball_fn
 	cp c
-	jr z, .asm_e8fe
+	jr z, .call_ball_function
 rept 2
 	inc hl
 endr
-	jr .asm_e8f2
+	jr .get_multiplier_loop
 
-.asm_e8fe
+.call_ball_function
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, .asm_e906
+	ld de, .skip_or_return_from_ball_fn
 	push de
 	jp [hl]
 
-.asm_e906
+.skip_or_return_from_ball_fn
 	ld a, [CurItem]
 	cp LEVEL_BALL
 	ld a, b
-	jp z, .asm_e98e
+	jp z, .skip_hp_calc
 
 	ld a, b
 	ld [hMultiplicand + 2], a
@@ -295,7 +295,7 @@
 	ld e, l
 	ld a, d
 	and a
-	jr z, .asm_e940
+	jr z, .okay_1
 
 	srl d
 	rr e
@@ -308,9 +308,9 @@
 
 	ld a, c
 	and a
-	jr nz, .asm_e940
+	jr nz, .okay_1
 	ld c, $1
-.asm_e940
+.okay_1
 	ld b, e
 
 	push bc
@@ -350,15 +350,15 @@
 .addstatus
 	ld a, b
 	add c
-	jr nc, .asm_e977
+	jr nc, .max_1
 	ld a, $ff
-.asm_e977
+.max_1
 
 	ld d, a
 	push de
 
 	; BUG: callba overwrites a,
-	; and GetItem takes b anyway.
+	; and GetItemHeldEffect takes b anyway.
 
 	; This is probably the reason
 	; the HELD_CATCH_CHANCE effect
@@ -368,7 +368,7 @@
 
 	ld a, [BattleMonItem]
 ;	ld b, a
-	callba GetItem
+	callba GetItemHeldEffect
 	ld a, b
 	cp HELD_CATCH_CHANCE
 
@@ -375,11 +375,11 @@
 	pop de
 	ld a, d
 
-	jr nz, .asm_e98e
+	jr nz, .skip_hp_calc
 	add c
-	jr nc, .asm_e98e
+	jr nc, .skip_hp_calc
 	ld a, $ff
-.asm_e98e
+.skip_hp_calc
 
 	ld b, a
 	ld [Buffer1], a
@@ -387,23 +387,23 @@
 
 	cp b
 	ld a, 0
-	jr z, .asm_e99c
-	jr nc, .asm_e99f
+	jr z, .catch_without_fail
+	jr nc, .fail_to_catch
 
-.asm_e99c
+.catch_without_fail
 	ld a, [EnemyMonSpecies]
 
-.asm_e99f
-	ld [wc64e], a
+.fail_to_catch
+	ld [wWildMon], a
 	ld c, 20
 	call DelayFrames
 
 	ld a, [CurItem]
 	cp POKE_BALL + 1 ; Assumes Master/Ultra/Great come before
-	jr c, .asm_e9b0
+	jr c, .not_kurt_ball
 	ld a, POKE_BALL
-.asm_e9b0
-	ld [wc689], a
+.not_kurt_ball
+	ld [wKickCounter], a
 
 	ld de, ANIM_THROW_POKE_BALL
 	ld a, e
@@ -416,23 +416,23 @@
 	ld [wcfca], a
 	predef PlayBattleAnim
 
-	ld a, [wc64e]
+	ld a, [wWildMon]
 	and a
-	jr nz, .asm_e9f5
+	jr nz, .caught
 	ld a, [Buffer2]
 	cp $1
 	ld hl, UnknownText_0xedb5
-	jp z, .asm_ebdc
+	jp z, .shake_and_break_free
 	cp $2
 	ld hl, UnknownText_0xedba
-	jp z, .asm_ebdc
+	jp z, .shake_and_break_free
 	cp $3
 	ld hl, UnknownText_0xedbf
-	jp z, .asm_ebdc
+	jp z, .shake_and_break_free
 	cp $4
 	ld hl, UnknownText_0xedc4
-	jp z, .asm_ebdc
-.asm_e9f5
+	jp z, .shake_and_break_free
+.caught
 
 	ld hl, EnemyMonStatus
 	ld a, [hli]
@@ -492,29 +492,29 @@
 
 	ld hl, EnemySubStatus5
 	bit SUBSTATUS_TRANSFORMED, [hl]
-	jr nz, .asm_ea67
-	ld hl, wc735
+	jr nz, .Transformed
+	ld hl, wWildMonMoves
 	ld de, EnemyMonMoves
 	ld bc, NUM_MOVES
 	call CopyBytes
 
-	ld hl, wc739
+	ld hl, wWildMonPP
 	ld de, EnemyMonPP
 	ld bc, NUM_MOVES
 	call CopyBytes
-.asm_ea67
+.Transformed
 
 	ld a, [EnemyMonSpecies]
-	ld [wc64e], a
+	ld [wWildMon], a
 	ld [CurPartySpecies], a
 	ld [wd265], a
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
-	jp z, .asm_ebd9
+	jp z, .FinishTutorial
 
 	callba MobileFn_10607f
 
-	ld hl, UnknownText_0xedc9
+	ld hl, Text_GotchaMonWasCaught
 	call PrintText
 
 	call ClearSprites
@@ -530,10 +530,10 @@
 	call SetSeenAndCaughtMon
 	pop af
 	and a
-	jr nz, .asm_eab7
+	jr nz, .skip_pokedex
 
-	call Function2ead
-	jr z, .asm_eab7
+	call CheckReceivedDex
+	jr z, .skip_pokedex
 
 	ld hl, UnknownText_0xedf0
 	call PrintText
@@ -544,19 +544,19 @@
 	ld [wd265], a
 	predef Functionfb877
 
-.asm_eab7
+.skip_pokedex
 	ld a, [BattleType]
 	cp BATTLETYPE_CONTEST
-	jp z, .asm_ebd1
+	jp z, .catch_bug_contest_mon
 	cp BATTLETYPE_CELEBI
-	jr nz, .asm_eac8
+	jr nz, .not_celebi
 	ld hl, wBattleResult
 	set 6, [hl]
-.asm_eac8
+.not_celebi
 
 	ld a, [PartyCount]
 	cp PARTY_LENGTH
-	jr z, .asm_eb3c
+	jr z, .SendToPC
 
 	xor a ; PARTYMON
 	ld [MonType], a
@@ -568,17 +568,17 @@
 
 	ld a, [CurItem]
 	cp FRIEND_BALL
-	jr nz, .asm_eaf8
+	jr nz, .SkipPartyMonFriendBall
 
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMon1Happiness
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 
 	ld a, FRIEND_BALL_HAPPINESS
 	ld [hl], a
-.asm_eaf8
+.SkipPartyMonFriendBall
 
 	ld hl, UnknownText_0xedf5
 	call PrintText
@@ -588,7 +588,7 @@
 	call GetPokemonName
 
 	call YesNoBox
-	jp c, .asm_ebe2
+	jp c, .return_from_capture
 
 	ld a, [PartyCount]
 	dec a
@@ -603,19 +603,19 @@
 	xor a ; PARTYMON
 	ld [MonType], a
 	ld b, 0
-	callba Function116c1
+	callba NamingScreen
 
 	call FadeToWhite
 
-	call Functione51
+	call LoadStandardFont
 
 	pop hl
 	ld de, StringBuffer1
 	call InitName
 
-	jp .asm_ebe2
+	jp .return_from_capture
 
-.asm_eb3c
+.SendToPC
 	call ClearSprites
 
 	predef SentPkmnIntoBox
@@ -627,17 +627,17 @@
 
 	ld a, [sBoxCount]
 	cp MONS_PER_BOX
-	jr nz, .asm_eb5b
+	jr nz, .BoxNotFullYet
 	ld hl, wBattleResult
 	set 7, [hl]
-.asm_eb5b
+.BoxNotFullYet
 	ld a, [CurItem]
 	cp FRIEND_BALL
-	jr nz, .asm_eb67
+	jr nz, .SkipBoxMonFriendBall
 	; Bug: overwrites the happiness of the first mon in the box!
 	ld a, FRIEND_BALL_HAPPINESS
 	ld [sBoxMon1Happiness], a
-.asm_eb67
+.SkipBoxMonFriendBall
 	call CloseSRAM
 
 	ld hl, UnknownText_0xedf5
@@ -648,7 +648,7 @@
 	call GetPokemonName
 
 	call YesNoBox
-	jr c, .asm_ebaf
+	jr c, .SkipBoxMonNickname
 
 	xor a
 	ld [CurPartyMon], a
@@ -656,7 +656,7 @@
 	ld [MonType], a
 	ld de, wd050
 	ld b, $0
-	callba Function116c1
+	callba NamingScreen
 
 	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
@@ -672,7 +672,7 @@
 
 	call CloseSRAM
 
-.asm_ebaf
+.SkipBoxMonNickname
 	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
 
@@ -687,21 +687,21 @@
 	call PrintText
 
 	call FadeToWhite
-	call Functione51
-	jr .asm_ebe2
+	call LoadStandardFont
+	jr .return_from_capture
 
-.asm_ebd1
+.catch_bug_contest_mon
 	callba BugContest_SetCaughtContestMon
-	jr .asm_ebe2
+	jr .return_from_capture
 
-.asm_ebd9
-	ld hl, UnknownText_0xedc9
+.FinishTutorial
+	ld hl, Text_GotchaMonWasCaught
 
-.asm_ebdc
+.shake_and_break_free
 	call PrintText
 	call ClearSprites
 
-.asm_ebe2
+.return_from_capture
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
 	ret z
@@ -710,11 +710,11 @@
 	cp BATTLETYPE_CONTEST
 	jr z, .used_park_ball
 
-	ld a, [wc64e]
+	ld a, [wWildMon]
 	and a
 	jr z, .toss
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 
 .toss
@@ -724,7 +724,7 @@
 	jp TossItem
 
 .used_park_ball
-	ld hl, wdc79
+	ld hl, wParkBallsRemaining
 	dec [hl]
 	ret
 ; ec0a
@@ -733,16 +733,16 @@
 BallMultiplierFunctionTable:
 ; table of routines that increase or decrease the catch rate based on
 ; which ball is used in a certain situation.
-	dbw ULTRA_BALL, UltraBallMultiplier
-	dbw GREAT_BALL, GreatBallMultiplier
-	dbw 8,          SafariBallMultiplier ; Safari Ball, leftover from RBY
-	dbw HEAVY_BALL, HeavyBallMultiplier
-	dbw LEVEL_BALL, LevelBallMultiplier
-	dbw LURE_BALL,  LureBallMultiplier
-	dbw FAST_BALL,  FastBallMultiplier
-	dbw MOON_BALL,  MoonBallMultiplier
-	dbw LOVE_BALL,  LoveBallMultiplier
-	dbw PARK_BALL,  ParkBallMultiplier
+	dbw ULTRA_BALL,  UltraBallMultiplier
+	dbw GREAT_BALL,  GreatBallMultiplier
+	dbw SAFARI_BALL, SafariBallMultiplier ; Safari Ball, leftover from RBY
+	dbw HEAVY_BALL,  HeavyBallMultiplier
+	dbw LEVEL_BALL,  LevelBallMultiplier
+	dbw LURE_BALL,   LureBallMultiplier
+	dbw FAST_BALL,   FastBallMultiplier
+	dbw MOON_BALL,   MoonBallMultiplier
+	dbw LOVE_BALL,   LoveBallMultiplier
+	dbw PARK_BALL,   ParkBallMultiplier
 	db $ff
 
 UltraBallMultiplier:
@@ -1128,7 +1128,7 @@
 	db "@"
 ; 0xedc9
 
-UnknownText_0xedc9: ; 0xedc9
+Text_GotchaMonWasCaught: ; 0xedc9
 	; Gotcha! @ was caught!@ @
 	text_jump UnknownText_0x1c5b17
 	start_asm
@@ -1193,12 +1193,12 @@
 WaterStone:
 LeafStone:
 SunStone: ; ee0f
-	ld b, $5
-	call Functionf1f9
+	ld b, PARTYMENUACTION_EVO_STONE
+	call UseItem_SelectMon
 
 	jp c, .asm_ee38
 
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 
 	ld a, [hl]
@@ -1213,7 +1213,7 @@
 	and a
 	jr z, .asm_ee35
 
-	jp Functionf795
+	jp UseDisposableItem
 
 .asm_ee35
 	call WontHaveAnyEffectMessage
@@ -1230,8 +1230,8 @@
 Iron:
 Carbos:
 Calcium: ; ee3d
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 
 	jp c, Functionee9f
 
@@ -1239,7 +1239,7 @@
 
 	call Functioneed9
 
-	ld a, PartyMon1StatExp - PartyMon1
+	ld a, MON_STAT_EXP
 	call GetPartyParamLocation
 
 	add hl, bc
@@ -1270,7 +1270,7 @@
 	ld c, HAPPINESS_USEDITEM
 	callba ChangeHappiness
 
-	jp Functionf795
+	jp UseDisposableItem
 
 
 Functionee83: ; ee83
@@ -1281,11 +1281,11 @@
 
 
 Functionee8c: ; ee8c
-	ld a, PartyMon1MaxHP - PartyMon1
+	ld a, MON_MAXHP
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
-	ld a, PartyMon1HPExp - 1 - PartyMon1
+	ld a, MON_EXP + 2
 	call GetPartyParamLocation
 	ld b, $1
 	predef_jump CalcPkmnStats
@@ -1338,11 +1338,11 @@
 ; eeeb
 
 Table_eeeb: ; eeeb
-	db HP_UP,   PartyMon1HPExp  - PartyMon1StatExp
-	db PROTEIN, PartyMon1AtkExp - PartyMon1StatExp
-	db IRON,    PartyMon1DefExp - PartyMon1StatExp
-	db CARBOS,  PartyMon1SpdExp - PartyMon1StatExp
-	db CALCIUM, PartyMon1SpcExp - PartyMon1StatExp
+	db HP_UP,    MON_HP_EXP - MON_STAT_EXP
+	db PROTEIN, MON_ATK_EXP - MON_STAT_EXP
+	db IRON,    MON_DEF_EXP - MON_STAT_EXP
+	db CARBOS,  MON_SPD_EXP - MON_STAT_EXP
+	db CALCIUM, MON_SPC_EXP - MON_STAT_EXP
 ; eef5
 
 
@@ -1350,7 +1350,7 @@
 	ld a, [CurPartySpecies]
 	ld [CurSpecies], a
 	ld [wd265], a
-	ld a, PartyMon1Level - PartyMon1
+	ld a, MON_LEVEL
 	call GetPartyParamLocation
 	ld a, [hl]
 	ld [CurPartyLevel], a
@@ -1363,14 +1363,14 @@
 
 
 RareCandy: ; ef14
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 
 	jp c, Functionee9f
 
 	call Functioneef5
 
-	ld a, PartyMon1Level - PartyMon1
+	ld a, MON_LEVEL
 	call GetPartyParamLocation
 
 	ld a, [hl]
@@ -1382,10 +1382,10 @@
 	ld [CurPartyLevel], a
 	push de
 	ld d, a
-	callba Function50e47
+	callba CalcExpAtLevel
 
 	pop de
-	ld a, PartyMon1Exp - PartyMon1
+	ld a, MON_EXP
 	call GetPartyParamLocation
 
 	ld a, [hMultiplicand]
@@ -1395,7 +1395,7 @@
 	ld a, [$ffb6]
 	ld [hl], a
 
-	ld a, PartyMon1MaxHP - PartyMon1
+	ld a, MON_MAXHP
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld b, a
@@ -1403,7 +1403,7 @@
 	push bc
 	call Functionee8c
 
-	ld a, PartyMon1MaxHP + 1 - PartyMon1
+	ld a, MON_MAXHP + 1
 	call GetPartyParamLocation
 
 	pop bc
@@ -1422,7 +1422,7 @@
 	ld [hl], a
 	callba LevelUpHappinessMod
 
-	ld a, $f8
+	ld a, PARTYMENUTEXT_LEVEL_UP
 	call Functionf24a
 
 	xor a ; PARTYMON
@@ -1438,7 +1438,7 @@
 	ld bc, $0004
 	predef PrintTempMonStats
 
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 
 	xor a ; PARTYMON
 	ld [MonType], a
@@ -1450,13 +1450,13 @@
 	ld [wd1e9], a
 	callba Function421d8
 
-	jp Functionf795
+	jp UseDisposableItem
 ; efad
 
 
 HealPowder: ; efad
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 
 	jp c, Functionf29e
 
@@ -1488,8 +1488,8 @@
 IceBerry:
 MintBerry:
 Miracleberry: ; efcc
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 	jp c, Functionf29e
 
 Functionefd4: ; efd4
@@ -1502,40 +1502,40 @@
 	call Functionf30d
 	ld a, $1
 	ret z
-	call Functionf058
-	ld a, PartyMon1Status - PartyMon1
+	call GetItemHealingAction
+	ld a, MON_STATUS
 	call GetPartyParamLocation
 	ld a, [hl]
 	and c
-	jr nz, .asm_eff4
+	jr nz, .good
 	call Functionf009
 	ld a, $1
 	ret nc
-	ld b, $f9
-.asm_eff4
+	ld b, PARTYMENUTEXT_HEAL_CONFUSION
+.good
 	xor a
 	ld [hl], a
 	ld a, b
 	ld [PartyMenuActionText], a
-	call Functionf030
+	call HealStatus
 	call Play_SFX_FULL_HEAL
 	call Functionf279
-	call Functionf795
+	call UseDisposableItem
 	ld a, $0
 	ret
 
 Functionf009: ; f009 (3:7009)
 	call Functionf2a6
-	jr nc, .asm_f01c
+	jr nc, .nope
 	ld a, [PlayerSubStatus3]
-	bit 7, a
-	jr z, .asm_f01c
+	bit SUBSTATUS_CONFUSED, a
+	jr z, .nope
 	ld a, c
 	cp $ff
-	jr nz, .asm_f01c
+	jr nz, .nope
 	scf
 	ret
-.asm_f01c
+.nope
 	and a
 	ret
 
@@ -1542,7 +1542,7 @@
 Functionf01e: ; f01e (3:701e)
 	call Functionf2a6
 	ret nc
-	ld a, PartyMon1HP - PartyMon1
+	ld a, MON_HP
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld [BattleMonHP], a
@@ -1550,39 +1550,39 @@
 	ld [BattleMonHP + 1], a
 	ret
 
-Functionf030: ; f030 (3:7030)
+HealStatus: ; f030 (3:7030)
 	call Functionf2a6
 	ret nc
 	xor a
 	ld [BattleMonStatus], a
 	ld hl, PlayerSubStatus5
-	res 0, [hl]
+	res SUBSTATUS_TOXIC, [hl]
 	ld hl, PlayerSubStatus1
-	res 0, [hl]
-	call Functionf058
+	res SUBSTATUS_NIGHTMARE, [hl]
+	call GetItemHealingAction
 	ld a, c
-	cp $ff
-	jr nz, .asm_f04f
+	cp %11111111
+	jr nz, .not_full_heal
 	ld hl, PlayerSubStatus3
-	res 7, [hl]
-.asm_f04f
+	res SUBSTATUS_CONFUSED, [hl]
+.not_full_heal
 	push bc
-	callba Function365d7
+	callba CalcPlayerStats
 	pop bc
 	ret
 
-Functionf058: ; f058 (3:7058)
+GetItemHealingAction: ; f058 (3:7058)
 	push hl
 	ld a, [CurItem]
-	ld hl, Table_f071
+	ld hl, .healingactions
 	ld bc, 3
 .next
 	cp [hl]
-	jr z, .asm_f068
+	jr z, .found_it
 	add hl, bc
 	jr .next
 
-.asm_f068
+.found_it
 	inc hl
 	ld b, [hl]
 	inc hl
@@ -1593,31 +1593,31 @@
 	ret
 ; f071 (3:7071)
 
-Table_f071: ; f071
+.healingactions: ; f071
 ; item, party menu action text, status
-	db ANTIDOTE,     $f0, 1 << PSN
-	db BURN_HEAL,    $f1, 1 << BRN
-	db ICE_HEAL,     $f2, 1 << FRZ
-	db AWAKENING,    $f3, SLP
-	db PARLYZ_HEAL,  $f4, 1 << PAR
-	db FULL_HEAL,    $f6, %11111111
-	db FULL_RESTORE, $f6, %11111111
-	db HEAL_POWDER,  $f6, %11111111
-	db PSNCUREBERRY, $f0, 1 << PSN
-	db PRZCUREBERRY, $f4, 1 << PAR
-	db BURNT_BERRY,  $f2, 1 << FRZ
-	db ICE_BERRY,    $f1, 1 << BRN
-	db MINT_BERRY,   $f3, SLP
-	db MIRACLEBERRY, $f6, %11111111
+	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
 
 Functionf09e: ; f09e (3:709e)
-	ld hl, Jumptable_f0a3
+	ld hl, .jumptable
 	rst JumpTable
 	ret
 
-Jumptable_f0a3: ; f0a3 (3:70a3)
+.jumptable: ; f0a3 (3:70a3)
 	dw Functionf2a2
 	dw Functionf299
 	dw Functionf29e
@@ -1624,8 +1624,8 @@
 
 
 RevivalHerb: ; f0a9
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 	jp c, Functionf29e
 
 	call Functionf0d6
@@ -1644,8 +1644,8 @@
 
 Revive:
 MaxRevive: ; f0c8
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 	jp c, Functionf29e
 
 	call Functionf0d6
@@ -1673,7 +1673,7 @@
 
 	ld a, [CurPartyMon]
 	ld c, a
-	ld hl, wc664
+	ld hl, wBattleParticipantsNotFainted
 	ld b, SET_FLAG
 	predef FlagPredef
 
@@ -1692,10 +1692,10 @@
 
 .asm_f117
 	call Functionf1db
-	ld a, $f7
+	ld a, PARTYMENUTEXT_REVIVE
 	ld [PartyMenuActionText], a
 	call Functionf279
-	call Functionf795
+	call UseDisposableItem
 	ld a, 0
 	ret
 ; f128
@@ -1702,8 +1702,8 @@
 
 
 FullRestore: ; f128
-	ld b, 1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 	jp c, Functionf29e
 
 	call Functionf30d
@@ -1724,18 +1724,18 @@
 	xor a
 	ld [Danger], a
 	call Functionf2c3
-	ld a, PartyMon1Status - PartyMon1
+	ld a, MON_STATUS
 	call GetPartyParamLocation
 	xor a
 	ld [hli], a
 	ld [hl], a
-	call Functionf030
+	call HealStatus
 	call Functionf01e
 	call Functionf1db
-	ld a, $f5
+	ld a, PARTYMENUTEXT_HEAL_HP
 	ld [PartyMenuActionText], a
 	call Functionf279
-	call Functionf795
+	call UseDisposableItem
 	ld a, 0
 	ret
 ; f16a
@@ -1805,8 +1805,8 @@
 
 
 Functionf1a9: ; f1a9 (3:71a9)
-	ld b, 1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 	ld a, 2
 	ret c
 
@@ -1824,10 +1824,10 @@
 	call Functionf2d1
 	call Functionf01e
 	call Functionf1db
-	ld a, $f5
+	ld a, PARTYMENUTEXT_HEAL_HP
 	ld [PartyMenuActionText], a
 	call Functionf279
-	call Functionf795
+	call UseDisposableItem
 	ld a, 0
 	ret
 
@@ -1842,31 +1842,31 @@
 	call AddNTimes
 	ld a, $2
 	ld [wd10a], a
-	predef_jump Functionc6e0
+	predef_jump AnimateHPBar
 
-Functionf1f9: ; f1f9 (3:71f9)
-	call Functionf20b
+UseItem_SelectMon: ; f1f9 (3:71f9)
+	call .SelectMon
 	ret c
 
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr nz, .asm_f209
+	jr nz, .not_egg
 
 	call CantUseOnEggMessage
 	scf
 	ret
 
-.asm_f209
+.not_egg
 	and a
 	ret
 
-Functionf20b: ; f20b (3:720b)
+.SelectMon: ; f20b (3:720b)
 	ld a, b
 	ld [PartyMenuActionText], a
 	push hl
 	push de
 	push bc
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Functionf21c
 	pop bc
 	pop de
@@ -1921,7 +1921,7 @@
 	ld [hBGMapMode], a
 	ld c, $32
 	call DelayFrames
-	jp Functiona80
+	jp WaitPressAorB_BlinkCursor
 
 Functionf299: ; f299 (3:7299)
 	call WontHaveAnyEffectMessage
@@ -1960,7 +1960,7 @@
 Functionf2c3: ; f2c3 (3:72c3)
 	call Functionf36f
 asm_f2c6: ; f2c6 (3:72c6)
-	ld a, PartyMon1HP - PartyMon1
+	ld a, MON_HP
 	call GetPartyParamLocation
 	ld [hl], d
 	inc hl
@@ -1968,7 +1968,7 @@
 	jp Functionf328
 
 Functionf2d1: ; f2d1 (3:72d1)
-	ld a, PartyMon1HP + 1 - PartyMon1
+	ld a, MON_HP + 1
 	call GetPartyParamLocation
 	ld a, [hl]
 	add e
@@ -1978,11 +1978,11 @@
 	ld [hl], a
 	jr c, .asm_f2f5
 	call Functionf328
-	ld a, PartyMon1HP + 1 - PartyMon1
+	ld a, MON_HP + 1
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
-	ld a, PartyMon1MaxHP + 1 - PartyMon1
+	ld a, MON_MAXHP + 1
 	call GetPartyParamLocation
 	ld a, [de]
 	sub [hl]
@@ -1997,7 +1997,7 @@
 	ret
 
 Functionf2f9: ; f2f9 (3:72f9)
-	ld a, PartyMon1HP + 1 - PartyMon1
+	ld a, MON_HP + 1
 	call GetPartyParamLocation
 	ld a, [hl]
 	sub e
@@ -2035,7 +2035,7 @@
 	ret
 
 Functionf328: ; f328 (3:7328)
-	ld a, PartyMon1HP - PartyMon1
+	ld a, MON_HP
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld [wd1ef], a
@@ -2061,7 +2061,7 @@
 ; f348
 
 Functionf348: ; f348 (3:7348)
-	ld a, PartyMon1HP - PartyMon1
+	ld a, MON_HP
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld [wd1ed], a
@@ -2078,7 +2078,7 @@
 
 Functionf35f: ; f35f (3:735f)
 	push hl
-	ld a, PartyMon1MaxHP - PartyMon1
+	ld a, MON_MAXHP
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld [Buffer2], a
@@ -2096,7 +2096,7 @@
 
 Functionf378: ; f378 (3:7378)
 	push bc
-	ld a, PartyMon1MaxHP - PartyMon1
+	ld a, MON_MAXHP
 	call GetPartyParamLocation
 	ld a, [hli]
 	ld [hDividend + 0], a
@@ -2179,7 +2179,7 @@
 	call Functionf30d
 	call Functionf2d1
 	call Functionf1db
-	ld a, $f5
+	ld a, PARTYMENUTEXT_HEAL_HP
 	call Functionf24a
 	call JoyWaitAorB
 .asm_f413
@@ -2189,35 +2189,38 @@
 	ret
 
 Functionf419: ; f419 (3:7419)
+.loop
 	push bc
-	ld a, $1
+	ld a, PARTYMENUACTION_HEALING_ITEM
 	ld [PartyMenuActionText], a
 	call Functionf21c
 	pop bc
-	jr c, .asm_f43e
+	jr c, .set_carry
 	ld a, [wd0d8]
 	dec a
 	ld c, a
 	ld a, b
 	cp c
-	jr z, .asm_f440
+	jr z, .loopback
 	ld a, c
 	ld [CurPartyMon], a
 	call Functionf30d
-	jr z, .asm_f440
+	jr z, .loopback
 	call Functionf31b
-	jr nc, .asm_f440
+	jr nc, .loopback
 	xor a
 	ret
-.asm_f43e
+
+.set_carry
 	scf
 	ret
-.asm_f440
+
+.loopback
 	push bc
 	ld hl, UnknownText_0xf44a
 	call MenuTextBoxBackup
 	pop bc
-	jr Functionf419
+	jr .loop
 ; f44a (3:744a)
 
 UnknownText_0xf44a: ; 0xf44a
@@ -2234,7 +2237,7 @@
 
 	ld a, [wd0ec]
 	cp 1
-	call z, Functionf795
+	call z, UseDisposableItem
 	ret
 ; f462
 
@@ -2285,7 +2288,7 @@
 	dec a
 	jr nz, .asm_f4a6
 	inc a
-	ld [wd232], a
+	ld [wForcedSwitch], a
 	ld a, [wBattleResult]
 	and 3 << 6
 	or $2
@@ -2301,9 +2304,9 @@
 
 GuardSpec: ; f4ab
 	ld hl, PlayerSubStatus4
-	bit 1, [hl]
+	bit SUBSTATUS_MIST, [hl]
 	jp nz, WontHaveAnyEffect_NotUsedMessage
-	set 1, [hl]
+	set SUBSTATUS_MIST, [hl]
 	jp Functionf789
 ; f4b8
 
@@ -2310,9 +2313,9 @@
 
 DireHit: ; f4b8
 	ld hl, PlayerSubStatus4
-	bit 2, [hl]
+	bit SUBSTATUS_FOCUS_ENERGY, [hl]
 	jp nz, WontHaveAnyEffect_NotUsedMessage
-	set 2, [hl]
+	set SUBSTATUS_FOCUS_ENERGY, [hl]
 	jp Functionf789
 ; f4c5
 
@@ -2324,17 +2327,17 @@
 	call Functionf789
 
 	ld a, [CurItem]
-	ld hl, Tablef504
+	ld hl, .x_item_table
 
-.asm_f4ce
+.loop
 	cp [hl]
-	jr z, .asm_f4d5
+	jr z, .got_it
 rept 2
 	inc hl
 endr
-	jr .asm_f4ce
+	jr .loop
 
-.asm_f4d5
+.got_it
 	inc hl
 	ld b, [hl]
 	xor a
@@ -2344,8 +2347,8 @@
 	callba CheckIfStatCanBeRaised
 	call WaitSFX
 
-	callba BattleCommand8c
-	callba BattleCommand8e
+	callba BattleCommand_StatUpMessage
+	callba BattleCommand_StatUpFailText
 
 	ld a, [CurBattleMon]
 	ld [CurPartyMon], a
@@ -2354,7 +2357,7 @@
 	ret
 ; f504
 
-Tablef504: ; f504
+.x_item_table: ; f504
 	db X_ATTACK,  ATTACK
 	db X_DEFEND,  DEFENSE
 	db X_SPEED,   SPEED
@@ -2369,7 +2372,7 @@
 .asm_f512
 
 	xor a
-	ld [MiscBuffer2], a
+	ld [wd002], a
 
 	ld b, $ff ^ SLP
 
@@ -2392,7 +2395,7 @@
 	and b
 	ld [hl], a
 
-	ld a, [MiscBuffer2]
+	ld a, [wd002]
 	and a
 	ld hl, UnknownText_0xf56c
 	jp z, PrintText
@@ -2408,7 +2411,7 @@
 
 
 .Functionf554
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 	ld c, PARTY_LENGTH
 
 .loop
@@ -2417,7 +2420,7 @@
 	and SLP
 	jr z, .asm_f564
 	ld a, 1
-	ld [MiscBuffer2], a
+	ld [wd002], a
 .asm_f564
 	pop af
 	and b
@@ -2518,16 +2521,16 @@
 Elixer:
 Mysteryberry: ; f5bf
 	ld a, [CurItem]
-	ld [MiscBuffer2], a
+	ld [wd002], a
 
 .loop
     ; Party Screen opens to choose on which Pkmn to use the Item
-	ld b, $1
-	call Functionf1f9
+	ld b, PARTYMENUACTION_HEALING_ITEM
+	call UseItem_SelectMon
 	jp c, Functionf6e0
 
 .loop2
-	ld a, [MiscBuffer2]
+	ld a, [wd002]
 	cp MAX_ELIXER
 	jp z, Elixer_RestorePPofAllMoves
 	cp ELIXER
@@ -2534,7 +2537,7 @@
 	jp z, Elixer_RestorePPofAllMoves
 
 	ld hl, TextJump_RaiseThePPOfWhichMove
-	ld a, [MiscBuffer2]
+	ld a, [wd002]
 	cp PP_UP
 	jr z, .ppup
 	ld hl, TextJump_RestoreThePPOfWhichMove
@@ -2555,7 +2558,7 @@
 	ld [CurMoveNum], a
 	jr nz, .loop
 	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call GetMthMoveOfNthPartymon
 
 	push hl
@@ -2565,7 +2568,7 @@
 	call CopyName1
 	pop hl
 
-	ld a, [MiscBuffer2]
+	ld a, [wd002]
 	cp PP_UP
 	jp nz, Functionf6a7
 
@@ -2599,7 +2602,7 @@
 
 Functionf64c: ; f64c
 	call ClearPalettes
-	jp Functionf795
+	jp UseDisposableItem
 ; f652
 
 Functionf652: ; f652
@@ -2612,7 +2615,7 @@
 	cp b
 	jr nz, .asm_f66c
 	ld a, [PlayerSubStatus5]
-	bit 3, a
+	bit SUBSTATUS_TRANSFORMED, a
 	jr nz, .asm_f66c
 	call .asm_f677
 
@@ -2625,7 +2628,7 @@
 .asm_f677
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld de, BattleMonMoves
 	ld b, NUM_MOVES
@@ -2641,7 +2644,7 @@
 	rept NUM_MOVES + 2 ; BattleMonPP - BattleMonMoves
 	inc de
 	endr
-	ld bc, PartyMon1PP - PartyMon1Moves
+	ld bc, MON_PP - MON_MOVES
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
@@ -2667,7 +2670,7 @@
 
 Elixer_RestorePPofAllMoves: ; f6af
 	xor a
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld [hli], a
 	ld [hl], a
 	ld b, NUM_MOVES
@@ -2674,7 +2677,7 @@
 .moveLoop
 	push bc
 	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call GetMthMoveOfNthPartymon
 	ld a, [hl]
 	and a
@@ -2686,7 +2689,7 @@
 	inc [hl]
 
 .cant_restore_pp
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	inc [hl]
 	pop bc
 	dec b
@@ -2708,9 +2711,9 @@
 RestorePP: ; f6e8
 	xor a ; PARTYMON
 	ld [MonType], a
-	call Functionf8ec
+	call GetMaxPPOfMove
 	ld hl, PartyMon1PP
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call GetMthMoveOfNthPartymon
 	ld a, [wd265]
 	ld b, a
@@ -2719,7 +2722,7 @@
 	cp b
 	jr nc, .dont_restore
 
-	ld a, [MiscBuffer2]
+	ld a, [wd002]
 	cp MAX_ELIXER
 	jr z, .restore_all
 	cp MAX_ETHER
@@ -2805,7 +2808,7 @@
 	ld a, [wd0ec]
 	cp $1
 	ret nz
-	call Functionf795
+	call UseDisposableItem
 	ret
 ; f763
 
@@ -2825,7 +2828,7 @@
 	ld hl, UnknownText_0xf778
 	call PrintText
 
-	jp Functionf795
+	jp UseDisposableItem
 ; f778
 
 UnknownText_0xf778: ; 0xf778
@@ -2940,11 +2943,11 @@
 	ld hl, UsedItemText
 	call PrintText
 	call Play_SFX_FULL_HEAL
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	; fallthrough
 ; f795
 
-Functionf795: ; f795
+UseDisposableItem: ; f795
 	ld hl, NumItems
 	ld a, 1
 	ld [wItemQuantityChangeBuffer], a
@@ -2951,7 +2954,7 @@
 	jp TossItem
 ; f7a0
 
-Functionf7a0: ; f7a0
+UseBallInTrainerBattle: ; f7a0
 	call Functionedfa
 	ld de, ANIM_THROW_POKE_BALL
 	ld a, e
@@ -2959,7 +2962,7 @@
 	ld a, d
 	ld [FXAnimIDHi], a
 	xor a
-	ld [wc689], a
+	ld [wKickCounter], a
 	ld [hBattleTurn], a
 	ld [wcfca], a
 	predef PlayBattleAnim
@@ -2967,7 +2970,7 @@
 	call PrintText
 	ld hl, DontBeAThiefText
 	call PrintText
-	jr Functionf795
+	jr UseDisposableItem
 ; f7ca
 
 WontHaveAnyEffect_NotUsedMessage: ; f7ca
@@ -3105,13 +3108,13 @@
 
 
 Functionf84c: ; f84c
-	ld a, PartyMon1Moves - PartyMon1
+	ld a, MON_MOVES
 	call GetPartyParamLocation
 	push hl
 	ld de, Buffer1
 	predef FillPP
 	pop hl
-	ld bc, PartyMon1PP - PartyMon1Moves
+	ld bc, MON_PP - MON_MOVES
 	add hl, bc
 	ld de, Buffer1
 	ld b, 0
@@ -3123,7 +3126,7 @@
 	ld a, [wd265]
 	dec a
 	jr nz, .asm_f876
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	inc a
 	cp b
 	jr nz, .asm_f87d
@@ -3193,14 +3196,14 @@
 ; f8b9
 
 Functionf8b9: ; f8b9
-	ld a, PartyMon1PP - PartyMon1
+	ld a, MON_PP
 	call GetPartyParamLocation
 	push hl
-	ld a, PartyMon1Moves - PartyMon1
+	ld a, MON_MOVES
 	call GetPartyParamLocation
 	pop de
 	xor a ; PARTYMON
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld [MonType], a
 	ld c, NUM_MOVES
 .loop
@@ -3210,7 +3213,7 @@
 	push hl
 	push de
 	push bc
-	call Functionf8ec
+	call GetMaxPPOfMove
 	pop bc
 	pop de
 	ld a, [de]
@@ -3220,7 +3223,7 @@
 	add b
 	ld [de], a
 	inc de
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	inc [hl]
 	pop hl
 	dec c
@@ -3229,7 +3232,7 @@
 ; f8ec
 
 
-Functionf8ec: ; f8ec
+GetMaxPPOfMove: ; f8ec
 	ld a, [StringBuffer1 + 0]
 	push af
 	ld a, [StringBuffer1 + 1]
@@ -3239,7 +3242,7 @@
 	and a
 
 	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	jr z, .got_partymon ; PARTYMON
 
 	ld hl, OTPartyMon1Moves
@@ -3279,7 +3282,7 @@
 	pop hl
 
 	push bc
-	ld bc, PartyMon1PP - PartyMon1Moves
+	ld bc, MON_PP - MON_MOVES
 	ld a, [MonType]
 	cp WILDMON
 	jr nz, .notwild
@@ -3313,7 +3316,7 @@
 	call AddNTimes
 
 GetMthMoveOfCurrentMon: ; f969
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld c, a
 	ld b, 0
 	add hl, bc
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -3487,7 +3487,7 @@
 
 Function111686: ; 111686 (44:5686)
 	xor a
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	ld c, $ff
 	ld a, [$ff00+c]
 	and $f3
@@ -3552,7 +3552,7 @@
 	jp nz, Function1118bc
 	ld hl, $c808
 	add hl, de
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld [hl], a
 	ld a, $8
 	cp l
@@ -3724,7 +3724,7 @@
 .asm_111803
 	ld b, $66
 .asm_111805
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	cp b
 	jr z, .asm_111840
 	cp $d2
@@ -3791,7 +3791,7 @@
 	jr nz, Function1118bc
 	xor a
 	ld [hli], a
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld [$c80c], a
 	inc [hl]
 	or a
@@ -3810,7 +3810,7 @@
 	jr Function1118bc
 
 Function111892: ; 111892 (44:5892)
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld c, a
 	call Function111664
 	ld hl, $c80a
@@ -3842,7 +3842,7 @@
 	ret
 
 Function1118c2: ; 1118c2 (44:58c2)
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld c, a
 	ld b, $0
 	ld hl, $c812
@@ -4042,7 +4042,7 @@
 	ld a, $4b
 
 Function111a42: ; 111a42 (44:5a42)
-	ld [rSB], a ; $ff00+$1
+	ld [rSB], a
 	jp Function111b2e
 asm_111a47: ; 111a47 (44:5a47)
 	ld hl, $c815
@@ -4170,7 +4170,7 @@
 	ld e, a
 	ld d, [hl]
 	ld a, [de]
-	ld [rSB], a ; $ff00+$1
+	ld [rSB], a
 	inc de
 	ld a, d
 	ld [hld], a
@@ -4180,9 +4180,9 @@
 	ld hl, $c822
 	set 1, [hl]
 	ld a, $3
-	ld [rSC], a ; $ff00+$2
+	ld [rSC], a
 	ld a, $83
-	ld [rSC], a ; $ff00+$2
+	ld [rSC], a
 
 Function111b3b: ; 111b3b (44:5b3b)
 	ret
@@ -4765,7 +4765,7 @@
 	scf
 	ret
 .asm_111f17
-	ld a, [rSC] ; $ff00+$2
+	ld a, [rSC]
 	and $80
 	jr nz, .asm_111f17
 	di
--- a/macros.asm
+++ b/macros.asm
@@ -175,4 +175,39 @@
 	endr
 ENDM
 
+tiles EQUS "* $10"
 tile EQUS "+ $10 *"
+
+partymon: MACRO
+	db \1
+	db \2
+	db \3, \4, \5, \6
+	dw \7
+	dt \8
+rept 8
+	shift
+endr
+rept 5
+	bigdw \1
+	shift
+endr
+	db \1, \2
+	db \3, \4, \5, \6
+rept 6
+	shift
+endr
+	db \1
+	db \2, \3, \4
+	db \5
+	db \6, \7
+rept 7
+	shift
+endr
+rept 7
+	bigdw \1
+	shift
+endr
+	db \1
+ENDM
+
+palettes EQUS "* 8"
--- a/macros/charmap.asm
+++ b/macros/charmap.asm
@@ -2,11 +2,14 @@
 	charmap "<START>",  $00
 	charmap "<PLAY_G>", $14 ; <PLAYER> + gender
 	charmap "<DAY>",    $15
+	charmap "¯",        $1f
 	charmap "<LNBRK>",  $22
 	charmap "<POKE>",   $24
+	charmap "%",        $25
 	charmap "<RED>",    $38
 	charmap "<GREEN>",  $39
 	charmap "<ENEMY>",  $3f
+	charmap "<SHINY>",  $3f
 	charmap "<MOM>",    $49
 	charmap "<PKMN>",   $4a
 	charmap "<NEXT>",   $4e
@@ -30,6 +33,8 @@
 	charmap "<DEXEND>", $5f
 
 ; Actual characters
+	charmap "▲",        $61
+	charmap "_",        $62
 	charmap "′",        $6e
 	charmap "<LV>",     $6e
 	charmap "″",        $6f
@@ -36,6 +41,10 @@
 
 	charmap "<PO>",     $70
 	charmap "<KE>",     $71
+	charmap "◀",        $71
+	charmap "<``>",     $72
+	charmap "<''>",     $73
+	charmap "<ID>",     $73
 	charmap "№",        $74
 	charmap "…",        $75
 
@@ -123,6 +132,7 @@
 	charmap "'t",       $d5
 	charmap "'v",       $d6
 
+	charmap "←",        $df
 	charmap "'",        $e0
 	charmap "<PK>",     $e1
 	charmap "<MN>",     $e2
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -206,7 +206,11 @@
 giveitem: macro
 	db giveitem_command
 	db \1 ; item
+if _NARG == 2
 	db \2 ; quantity
+else
+	db 1
+endc
 	endm
 
 	enum takeitem_command
@@ -213,7 +217,11 @@
 takeitem: macro
 	db takeitem_command
 	db \1 ; item
+if _NARG == 2
 	db \2 ; quantity
+else
+	db 1
+endc
 	endm
 
 	enum checkitem_command
@@ -986,7 +994,11 @@
 verbosegiveitem: macro
 	db verbosegiveitem_command
 	db \1 ; item
+if _NARG == 2
 	db \2 ; quantity
+else
+	db 1
+endc
 	endm
 
 	enum verbosegiveitem2_command
@@ -1022,9 +1034,9 @@
 	db \4 ; y
 	endm
 
-	enum storetext_command
-storetext: macro
-	db storetext_command
+	enum battletowertext_command
+battletowertext: macro
+	db battletowertext_command
 	db \1 ; memory
 	endm
 
--- a/macros/move_anim.asm
+++ b/macros/move_anim.asm
@@ -5,8 +5,11 @@
 	db \1
 	endm
 
+	enum_start $d0
+
+	enum anim_obj_command ; d0
 anim_obj: macro
-	db $d0
+	db anim_obj_command
 	db \1 ; obj
 	db \2 ; x
 	db \3 ; y
@@ -13,26 +16,30 @@
 	db \4 ; param
 	endm
 
+	enum anim_1gfx_command ; d1
 anim_1gfx: macro
-	db $d1
+	db anim_1gfx_command
 	db \1 ; gfx1
 	endm
 
+	enum anim_2gfx_command ; d2
 anim_2gfx: macro
-	db $d2
+	db anim_2gfx_command
 	db \1 ; gfx1
 	db \2 ; gfx2
 	endm
 
+	enum anim_3gfx_command ; d3
 anim_3gfx: macro
-	db $d3
+	db anim_3gfx_command
 	db \1 ; gfx1
 	db \2 ; gfx2
 	db \3 ; gfx3
 	endm
 
+	enum anim_4gfx_command ; d4
 anim_4gfx: macro
-	db $d4
+	db anim_4gfx_command
 	db \1 ; gfx1
 	db \2 ; gfx2
 	db \3 ; gfx3
@@ -39,8 +46,9 @@
 	db \4 ; gfx4
 	endm
 
+	enum anim_5gfx_command ; d5
 anim_5gfx: macro
-	db $d5
+	db anim_5gfx_command
 	db \1 ; gfx1
 	db \2 ; gfx2
 	db \3 ; gfx3
@@ -48,122 +56,149 @@
 	db \5 ; gfx5
 	endm
 
+	enum anim_incobj_command ; d6
 anim_incobj: macro
-	db $d6
+	db anim_incobj_command
 	db \1 ; id
 	endm
 
+	enum anim_setobj_command ; d7
 anim_setobj: macro
-	db $d7
+	db anim_setobj_command
 	db \1 ; id
 	db \2 ; obj
 	endm
 
+	enum anim_incbgeffect_command ; d8
 anim_incbgeffect: macro
-	db $d8
+	db anim_incbgeffect_command
 	db \1 ; effect
 	endm
 
+	enum anim_enemyfeetobj_command ; d9
 anim_enemyfeetobj: macro
-	db $d9
+	db anim_enemyfeetobj_command
 	endm
 
+	enum anim_playerheadobj_command ; da
 anim_playerheadobj: macro
-	db $da
+	db anim_playerheadobj_command
 	endm
 
+	enum anim_checkpokeball_command ; db
 anim_checkpokeball: macro
-	db $db
+	db anim_checkpokeball_command
 	endm
 
+	enum anim_transform_command ; dc
 anim_transform: macro
-	db $dc
+	db anim_transform_command
 	endm
 
+	enum anim_raisesub_command ; dd
 anim_raisesub: macro
-	db $dd
+	db anim_raisesub_command
 	endm
 
+	enum anim_dropsub_command ; de
 anim_dropsub: macro
-	db $de
+	db anim_dropsub_command
 	endm
 
+	enum anim_resetobp0_command ; df
 anim_resetobp0: macro
-	db $df
+	db anim_resetobp0_command
 	endm
 
+	enum anim_sound_command ; e0
 anim_sound: macro
-	db $e0
+	db anim_sound_command
 	db \1 ; tracks
 	db \2 ; id
 	endm
 
+	enum anim_cry_command ; e1
 anim_cry: macro
-	db $e1
+	db anim_cry_command
 	db \1 ; pitch
 	endm
 
+	enum anim_minimizeopp_command ; e2
 anim_minimizeopp: macro
-	db $e2
+	db anim_minimizeopp_command
 	endm
 
+	enum anim_oamon_command ; e3
 anim_oamon: macro
-	db $e3
+	db anim_oamon_command
 	endm
 
+	enum anim_oamoff_command ; e4
 anim_oamoff: macro
-	db $e4
+	db anim_oamoff_command
 	endm
 
+	enum anim_clearobjs_command ; e5
 anim_clearobjs: macro
-	db $e5
+	db anim_clearobjs_command
 	endm
 
+	enum anim_beatup_command ; e6
 anim_beatup: macro
-	db $e6
+	db anim_beatup_command
 	endm
 
+	enum anim_0xe7_command ; e7
 anim_0xe7: macro
-	db $e7
+	db anim_0xe7_command
 	endm
 
+	enum anim_updateactorpic_command ; e8
 anim_updateactorpic: macro
-	db $e8
+	db anim_updateactorpic_command
 	endm
 
+	enum anim_minimize_command ; e9
 anim_minimize: macro
-	db $e9
+	db anim_minimize_command
 	endm
 
+	enum anim_0xea_command ; ea
 anim_0xea: macro
-	db $ea
+	db anim_0xea_command
 	endm
 
+	enum anim_0xeb_command ; eb
 anim_0xeb: macro
-	db $eb
+	db anim_0xeb_command
 	endm
 
+	enum anim_0xec_command ; ec
 anim_0xec: macro
-	db $ec
+	db anim_0xec_command
 	endm
 
+	enum anim_0xed_command ; ed
 anim_0xed: macro
-	db $ed
+	db anim_0xed_command
 	endm
 
+	enum anim_jumpand_command ; ee
 anim_jumpand: macro
-	db $ee
+	db anim_jumpand_command
 	db \1 ; value
 	dw \2 ; address
 	endm
 
+	enum anim_jumpuntil_command ; ef
 anim_jumpuntil: macro
-	db $ef
+	db anim_jumpuntil_command
 	dw \1 ; address
 	endm
 
+	enum anim_bgeffect_command ; f0
 anim_bgeffect: macro
-	db $f0
+	db anim_bgeffect_command
 	db \1 ; effect
 	db \2 ; unknown
 	db \3 ; unknown
@@ -170,74 +205,89 @@
 	db \4 ; unknown
 	endm
 
+	enum anim_bgp_command ; f1
 anim_bgp: macro
-	db $f1
+	db anim_bgp_command
 	db \1 ; colors
 	endm
 
+	enum anim_obp0_command ; f2
 anim_obp0: macro
-	db $f2
+	db anim_obp0_command
 	db \1 ; colors
 	endm
 
+	enum anim_obp1_command ; f3
 anim_obp1: macro
-	db $f3
+	db anim_obp1_command
 	db \1 ; colors
 	endm
 
+	enum anim_clearsprites_command ; f4
 anim_clearsprites: macro
-	db $f4
+	db anim_clearsprites_command
 	endm
 
+	enum anim_0xf5_command ; f5
 anim_0xf5: macro
-	db $f5
+	db anim_0xf5_command
 	endm
 
+	enum anim_0xf6_command ; f6
 anim_0xf6: macro
-	db $f6
+	db anim_0xf6_command
 	endm
 
+	enum anim_0xf7_command ; f7
 anim_0xf7: macro
-	db $f7
+	db anim_0xf7_command
 	endm
 
+	enum anim_jumpif_command ; f8
 anim_jumpif: macro
-	db $f8
+	db anim_jumpif_command
 	db \1 ; value
 	dw \2 ; address
 	endm
 
+	enum anim_setvar_command ; f9
 anim_setvar: macro
-	db $f9
+	db anim_setvar_command
 	db \1 ; value
 	endm
 
+	enum anim_incvar_command ; fa
 anim_incvar: macro
-	db $fa
+	db anim_incvar_command
 	endm
 
+	enum anim_jumpvar_command ; fb
 anim_jumpvar: macro
-	db $fb
+	db anim_jumpvar_command
 	db \1 ; value
 	dw \2 ; address
 	endm
 
+	enum anim_jump_command ; fc
 anim_jump: macro
-	db $fc
+	db anim_jump_command
 	dw \1 ; address
 	endm
 
+	enum anim_loop_command ; fd
 anim_loop: macro
-	db $fd
+	db anim_loop_command
 	db \1 ; count
 	dw \2 ; address
 	endm
 
+	enum anim_call_command ; fe
 anim_call: macro
-	db $fe
+	db anim_call_command
 	dw \1 ; address
 	endm
 
+	enum anim_ret_command ; ff
 anim_ret: macro
-	db $ff
+	db anim_ret_command
 	endm
--- a/macros/move_effect.asm
+++ b/macros/move_effect.asm
@@ -14,10 +14,10 @@
 	command stab
 	command damagevariation
 	command checkhit
-	command effect0x0a
-	command effect0x0b
-	command effect0x0c
-	command resulttext
+	command lowersub
+	command hittargetnosub
+	command raisesub
+	command failuretext
 	command checkfaint
 	command criticaltext
 	command supereffectivetext
@@ -144,13 +144,13 @@
 	command specialdefensedown2
 	command accuracydown2
 	command evasiondown2
-	command statmessageuser
-	command statmessagetarget
+	command statupmessage
+	command statdownmessage
 	command statupfailtext
 	command statdownfailtext
 	command effectchance
-	command effect0x91
-	command effect0x92
+	command statdownanim
+	command statupanim
 	command switchturn
 	command fakeout
 	command bellydrum
@@ -167,11 +167,11 @@
 	command teleport
 	command beatup
 	command ragedamage
-	command effect0xa3
+	command resettypematchup
 	command allstatsup
 	command effect0xa5
-	command effect0xa6
-	command effect0xa7
+	command raisesubnoanim
+	command lowersubnoanim
 	command effect0xa8
 	command clearmissdamage
 	command movedelay
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -303,18 +303,46 @@
 	db movement_hide_person ; $3d
 	endm
 
-	enum movement_show_person
-show_person: macro
-	db movement_show_person ; $3e
+	enum movement_step_sleep_1
+step_sleep_1: macro
+	db movement_step_sleep_1 ; $3e
 	endm
 
-__enum__ = $45
+	enum movement_step_sleep_2
+step_sleep_2: macro
+	db movement_step_sleep_2 ; $3f
+	endm
 
-	enum movement_accelerate_last
-accelerate_last: macro
-	db movement_accelerate_last ; $45
+	enum movement_step_sleep_3
+step_sleep_3: macro
+	db movement_step_sleep_3 ; $40
 	endm
 
+	enum movement_step_sleep_4
+step_sleep_4: macro
+	db movement_step_sleep_4 ; $41
+	endm
+
+	enum movement_step_sleep_5
+step_sleep_5: macro
+	db movement_step_sleep_5 ; $42
+	endm
+
+	enum movement_step_sleep_6
+step_sleep_6: macro
+	db movement_step_sleep_6 ; $43
+	endm
+
+	enum movement_step_sleep_7
+step_sleep_7: macro
+	db movement_step_sleep_7 ; $44
+	endm
+
+	enum movement_step_sleep_8
+step_sleep_8: macro
+	db movement_step_sleep_8 ; $45
+	endm
+
 	enum movement_step_sleep
 step_sleep: macro
 	db movement_step_sleep ; $46
@@ -333,6 +361,11 @@
 	db movement_remove_person ; $49
 	endm
 
+	enum movement_step_loop
+step_loop: macro
+	db movement_step_loop ; $4a
+	endm
+
 __enum__ = $4c
 
 	enum movement_teleport_from
@@ -362,9 +395,9 @@
 	db movement_fish_got_bite ; $51
 	endm
 
-	enum movement_fish_got_bite_2
-fish_got_bite_2: macro
-	db movement_fish_got_bite_2 ; $52
+	enum movement_fish_cast_rod
+fish_cast_rod: macro
+	db movement_fish_cast_rod ; $52
 	endm
 
 	enum movement_hide_emote
--- a/macros/text.asm
+++ b/macros/text.asm
@@ -11,7 +11,6 @@
 page   EQUS "db $50,"     ; Start a new Pokedex page.
 dex    EQUS "db $e8, $50" ; End a Pokedex entry.
 
-
 ; TX_RAM EQU $01
 ; TX_FAR EQU $16
 	enum_start 1
--- a/main.asm
+++ b/main.asm
@@ -75,7 +75,7 @@
 	ret
 ; 5b05
 
-Function5b05: ; 5b05
+PrintDayOfWeek: ; 5b05
 	push de
 	ld hl, .Days
 	ld a, b
@@ -105,12 +105,12 @@
 	db "DAY@"
 ; 5b44
 
-Function5b44: ; 5b44
+NewGame_ClearTileMapEtc: ; 5b44
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call ClearTileMap
-	call Functione5f
-	call Functione51
+	call LoadFontsExtra
+	call LoadStandardFont
 	call ResetTextRelatedRAM
 	ret
 ; 5b54
@@ -131,17 +131,17 @@
 	xor a
 	ld [wc2cc], a
 	call ResetWRAM
-	call Function5b44
+	call NewGame_ClearTileMapEtc
 	call AreYouABoyOrAreYouAGirl
 	call OakSpeech
 	call InitializeWorld
 	ld a, 1
-	ld [wc2d8], a
+	ld [wPreviousLandmark], a
 
 	ld a, SPAWN_HOME
-	ld [wd001], a
+	ld [DefaultSpawnpoint], a
 
-	ld a, $f1
+	ld a, MAPSETUP_WARP
 	ld [hMapEntryMethod], a
 	jp FinishContinueFunction
 ; 5b8f
@@ -283,11 +283,11 @@
 
 	call InitializeNPCNames
 
-	callba Function26751
+	callba InitDecorations
 
-	callba Function44765
+	callba DeleteScratchmons
 
-	callba Function1061c0
+	callba DeleteMobileEventIndex
 
 	call ResetGameTime
 	ret
@@ -415,7 +415,7 @@
 	callba TryLoadSaveFile
 	jr c, .FailToLoad
 	callba Function150b9
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function5e85
 	ld a, $1
 	ld [hBGMapMode], a
@@ -439,7 +439,7 @@
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_NONE / $100
 	ld [MusicFadeIDHi], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function5df0
 	call WriteBackup
 	call ClearTileMap
@@ -447,11 +447,11 @@
 	call DelayFrames
 	callba JumpRoamMons
 	callba Function105091
-	callba Function140ae
+	callba Function140ae ; time-related
 	ld a, [wSpawnAfterChampion]
 	cp SPAWN_LANCE
 	jr z, .SpawnAfterE4
-	ld a, $f2
+	ld a, MAPSETUP_CONTINUE
 	ld [hMapEntryMethod], a
 	jp FinishContinueFunction
 
@@ -473,7 +473,7 @@
 PostCreditsSpawn: ; 5de7
 	xor a
 	ld [wSpawnAfterChampion], a
-	ld a, $f1
+	ld a, MAPSETUP_WARP
 	ld [hMapEntryMethod], a
 	ret
 ; 5df0
@@ -524,9 +524,9 @@
 
 Function5e48: ; 5e48
 	call Function6e3
-	and $80
+	and %10000000 ; Day count exceeded 16383
 	jr z, .pass
-	callba Function20021
+	callba RestartClock
 	ld a, c
 	and a
 	jr z, .pass
@@ -546,7 +546,7 @@
 	ld hl, GameTimerPause
 	set 0, [hl]
 	res 7, [hl]
-	ld hl, wd83e
+	ld hl, wEnteredMapFromContinue
 	set 1, [hl]
 	callba OverworldLoop
 	ld a, [wSpawnAfterChampion]
@@ -563,7 +563,7 @@
 	call Function6e3
 	and $80
 	jr z, .asm_5e93
-	ld de, $0408
+	lb de, 4, 8
 	call Function5eaf
 	ret
 
@@ -582,7 +582,7 @@
 	call Function5ebf
 	call Function5f1c
 	call Function5f40
-	call Functione5f
+	call LoadFontsExtra
 	call UpdateSprites
 	ret
 ; 5eaf
@@ -591,7 +591,7 @@
 	call Function5ebf
 	call Function5f1c
 	call Function5f48
-	call Functione5f
+	call LoadFontsExtra
 	call UpdateSprites
 	ret
 ; 5ebf
@@ -607,7 +607,7 @@
 
 .asm_5ecf
 	call Function1e35
-	call Function1cbb
+	call MenuBox
 	call Function1c89
 	ret
 ; 5ed9
@@ -648,19 +648,19 @@
 
 
 Function5f1c: ; 5f1c
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	push hl
-	ld de, $005d
+	ld de, $5d
 	add hl, de
 	call DisplayBadgeCount
 	pop hl
 	push hl
-	ld de, $0084
+	ld de, $84
 	add hl, de
 	call DisplayPokedexNumCaught
 	pop hl
 	push hl
-	ld de, $0030
+	ld de, $30
 	add hl, de
 	ld de, .Player
 	call PlaceString
@@ -672,7 +672,7 @@
 ; 5f40
 
 Function5f40: ; 5f40
-	ld de, $00a9
+	ld de, $a9
 	add hl, de
 	call DisplayGameTime
 	ret
@@ -679,7 +679,7 @@
 ; 5f48
 
 Function5f48: ; 5f48
-	ld de, $00a9
+	ld de, $a9
 	add hl, de
 	ld de, .text_5f53
 	call PlaceString
@@ -740,7 +740,7 @@
 	ld [CurPartySpecies], a
 	ld a, POKEMON_PROF
 	ld [TrainerClass], a
-	call Function619c
+	call Intro_PrepTrainerPic
 
 	ld b, $1c
 	call GetSGBLayout
@@ -757,7 +757,7 @@
 	call GetBaseData
 
 	hlcoord 6, 4
-	call Function3786
+	call PrepMonFrontpic
 
 	xor a
 	ld [TempMonDVs], a
@@ -778,7 +778,7 @@
 	ld [CurPartySpecies], a
 	ld a, POKEMON_PROF
 	ld [TrainerClass], a
-	call Function619c
+	call Intro_PrepTrainerPic
 
 	ld b, $1c
 	call GetSGBLayout
@@ -811,10 +811,10 @@
 OakText2: ; 0x604a
 	text_jump _OakText2
 	start_asm
-	ld a,WOOPER
+	ld a, WOOPER
 	call PlayCry
 	call WaitSFX
-	ld hl,OakText3
+	ld hl, OakText3
 	ret
 
 OakText3: ; 0x605b
@@ -840,7 +840,7 @@
 NamePlayer: ; 0x6074
 	callba MovePlayerPicRight
 	callba ShowPlayerNamingChoices
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	jr z, .NewName
 	call StorePlayerName
@@ -851,12 +851,12 @@
 .NewName
 	ld b, 1
 	ld de, PlayerName
-	callba Function116c1
+	callba NamingScreen
 
 	call FadeToWhite
 	call ClearTileMap
 
-	call Functione5f
+	call LoadFontsExtra
 	call WaitBGMap
 
 	xor a
@@ -886,9 +886,9 @@
 Function60e9: ; Unreferenced
 	call LoadMenuDataHeader
 	call InterpretMenu2
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
-	call Function1db8
+	call CopyNameFromMenu
 	call WriteBackup
 	ret
 ; 60fa
@@ -948,7 +948,7 @@
 	call DelayFrames
 
 	call Intro_PlacePlayerSprite
-	call Functione5f
+	call LoadFontsExtra
 
 	ld c, 50
 	call DelayFrames
@@ -997,11 +997,11 @@
 	jr .loop
 ; 619c
 
-Function619c: ; 619c
+Intro_PrepTrainerPic: ; 619c
 	ld de, VTiles2
 	callba GetTrainerPic
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 6, 4
 	lb bc, 7, 7
 	predef FillBox
@@ -1013,7 +1013,7 @@
 	ld c, $31
 	predef DecompressPredef
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 6, 4
 	lb bc, 7, 7
 	predef FillBox
@@ -1077,6 +1077,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	call TitleScreen
 	call DelayFrame
 .loop
@@ -1084,9 +1085,11 @@
 	jr nc, .loop
 
 	call ClearSprites
-	call WhiteBGMap
+	call ClearBGPalettes
+
 	pop af
 	ld [rSVBK], a
+
 	ld hl, rLCDC
 	res 2, [hl]
 	call ClearScreen
@@ -1149,7 +1152,7 @@
 ; 6292
 
 Function6292: ; 6292 ; unreferenced
-	ld a, [$ff9b]
+	ld a, [hVBlankCounter]
 	and $7
 	ret nz
 	ld hl, LYOverrides + $5f
@@ -1390,7 +1393,7 @@
 	and $3
 	ret nz
 	ld bc, wc3a4
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc ; over-the-top compicated way to load wc3ae into hl
 	ld l, [hl]
 	ld h, 0
@@ -1431,7 +1434,7 @@
 
 Copyright: ; 63e2
 	call ClearTileMap
-	call Functione5f
+	call LoadFontsExtra
 	ld de, CopyrightGFX
 	ld hl, VTiles2 tile $60
 	lb bc, BANK(CopyrightGFX), $1d
@@ -1464,7 +1467,7 @@
 GameInit:: ; 642e
 	callba Function14f1c
 	call ResetTextRelatedRAM
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
@@ -1507,7 +1510,7 @@
 	ld [hBGMapMode], a
 	ld a, $90
 	ld [hWY], a
-	call Function2173
+	call OverworldTextModeSwitch
 	ld a, VBGMap1 / $100
 	call Function64b9
 	call Function2e20
@@ -1553,11 +1556,11 @@
 ; 64cd
 
 Function64cd: ; 64cd
-	call Functione5f
+	call LoadFontsExtra
 	ld a, $90
 	ld [hWY], a
 	call Function2e31
-	call Functione51
+	call LoadStandardFont
 	ret
 ; 64db
 
@@ -1566,9 +1569,10 @@
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	ld a, $60
 	ld hl, w6_d000
-	ld bc, $400
+	lb bc, 4, 0
 	call ByteFill
 	ld a, w6_d000 / $100
 	ld [rHDMA1], a
@@ -1581,6 +1585,7 @@
 	ld a, $3f
 	ld [hDMATransfer], a
 	call DelayFrame
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -1598,7 +1603,7 @@
 
 .loop
 	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld d, h
@@ -1642,7 +1647,7 @@
 .learn
 	ld a, [wd262]
 	ld [hl], a
-	ld bc, PartyMon1PP - PartyMon1Moves
+	ld bc, MON_PP - MON_MOVES
 	add hl, bc
 
 	push hl
@@ -1737,7 +1742,7 @@
 	ld [wcfa3], a
 	ld a, $1
 	ld [wcfa4], a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld [wcfaa], a
 	ld a, $3
 	ld [wcfa8], a
@@ -1755,7 +1760,7 @@
 	bit 1, a
 	jr nz, .cancel
 	push hl
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld c, a
 	ld b, 0
@@ -2603,7 +2608,7 @@
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld a, [hl]
-	cp SPRITEMOVEDATA_15
+	cp SPRITEMOVEDATA_SNORLAX
 	jr nz, .asm_7136
 	call Function7171
 	jr c, .asm_716f
@@ -2681,7 +2686,7 @@
 
 GetFirstPokemonHappiness: ; 718d
 	ld hl, PartyMon1Happiness
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld de, PartySpecies
 .loop
 	ld a, [de]
@@ -2729,7 +2734,7 @@
 
 	push bc
 	ld hl, PartyMon1Happiness
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	pop bc
@@ -2838,7 +2843,7 @@
 
 .next
 	push de
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 	add hl, de
 	pop de
 	dec c
@@ -2945,10 +2950,10 @@
 
 ; Caught data.
 	ld b, 0
-	callba SetPkmnCaughtData
+	callba SetPartymonCaughtData
 
 ; Holding a Berry.
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [PartyCount]
 	dec a
 	push af
@@ -3012,7 +3017,7 @@
 
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 
 ; OT ID
@@ -3044,14 +3049,14 @@
 	jr c, .fainted
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Happiness
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hl]
 	cp 150
 	ld a, $3
 	jr nc, .HappyToStayWithYou
-	xor a
-	ld [wd10b], a
+	xor a ; take from pc
+	ld [wPokemonWithdrawDepositParameter], a
 	callab Functione039
 	ld a, $2
 
@@ -3181,7 +3186,7 @@
 	call DisableSpriteUpdates
 	xor a
 	ld [hBGMapMode], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	hlcoord 0, 0
 	ld bc, TileMapEnd - TileMap
@@ -3236,7 +3241,7 @@
 ; A dummy map object used to initialize the player object.
 ; Shorter than the actual amount copied by two bytes.
 ; Said bytes seem to be unused.
-	person_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_0B, 15, 15, -1, -1, 0, 0, 0, 0, -1
+	person_event SPRITE_CHRIS, -4, -4, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, 0, 0, 0, -1
 ; 807e
 
 CopyDECoordsToMapObject:: ; 807e
@@ -3267,10 +3272,11 @@
 ; 80a1
 
 
-Function80a1:: ; 80a1
+WritePersonXY:: ; 80a1
 	ld a, b
 	call CheckObjectVisibility
 	ret c
+
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -3597,6 +3603,7 @@
 	ld hl, OBJECT_MAP_OBJECT_INDEX
 	add hl, de
 	ld [hl], a
+
 	ld a, [wc2f4]
 	call Function1a61
 	ld a, [wc2f3]
@@ -3604,30 +3611,39 @@
 	add hl, de
 	or [hl]
 	ld [hl], a
+
 	ld a, [wc2f7]
 	call Function82d5
+
 	ld a, [wc2f6]
 	call Function82f1
+
 	ld a, [wc2f1]
 	ld hl, OBJECT_SPRITE
 	add hl, de
 	ld [hl], a
+
 	ld a, [wc2f2]
 	ld hl, OBJECT_SPRITE_TILE
 	add hl, de
 	ld [hl], a
+
 	ld hl, OBJECT_09
 	add hl, de
 	ld [hl], $0
+
 	ld hl, OBJECT_FACING_STEP
 	add hl, de
 	ld [hl], $ff
+
 	ld a, [wc2f8]
 	call Function830d
+
 	ld a, [wc2f5]
 	ld hl, OBJECT_32
 	add hl, de
 	ld [hl], a
+
 	and a
 	ret
 ; 82d5
@@ -3685,30 +3701,31 @@
 	ret
 ; 831e
 
-Function831e: ; 831e
+TrainerWalkToPlayer: ; 831e
 	ld a, [hLastTalked]
-	call Function1b1e
-	ld a, $3e
-	call Function1b3f
+	call InitMovementBuffer
+	ld a, movement_step_sleep_1
+	call AppendToMovementBuffer
 	ld a, [wd03f]
 	dec a
-	jr z, Function833b
+	jr z, .TerminateStep
 	ld a, [hLastTalked]
 	ld b, a
-	ld c, 0
+	ld c, PLAYER
 	ld d, 1
-	call Function8341
-	call Function1b35
+	call .GetPathToPlayer
+	call DecrementMovementBufferCount
 
-Function833b
-	ld a, $47
-	call Function1b3f
+.TerminateStep
+	ld a, movement_step_end
+	call AppendToMovementBuffer
 	ret
 ; 8341
 
-Function8341: ; 8341
+.GetPathToPlayer: ; 8341
 	push de
 	push bc
+; get player object struct, load to de
 	ld a, c
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
@@ -3717,6 +3734,8 @@
 	call GetObjectStruct
 	ld d, b
 	ld e, c
+
+; get last talked object struct, load to bc
 	pop bc
 	ld a, b
 	call GetMapObject
@@ -3724,6 +3743,8 @@
 	add hl, bc
 	ld a, [hl]
 	call GetObjectStruct
+
+; get last talked coords, load to bc
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -3731,6 +3752,8 @@
 	add hl, bc
 	ld c, [hl]
 	ld b, a
+
+; get player coords, load to de
 	ld hl, OBJECT_MAP_X
 	add hl, de
 	ld a, [hl]
@@ -3738,21 +3761,22 @@
 	add hl, de
 	ld e, [hl]
 	ld d, a
+
 	pop af
-	call Function1b5f
+	call ComputePathToWalkToPlayer
 	ret
 ; 8379
 
 Special_SurfStartStep: ; 8379
-	call Function1b1e
-	call Function8388
-	call Function1b3f
-	ld a, $47
-	call Function1b3f
+	call InitMovementBuffer
+	call .GetMovementData
+	call AppendToMovementBuffer
+	ld a, movement_step_end
+	call AppendToMovementBuffer
 	ret
 ; 8388
 
-Function8388: ; 8388
+.GetMovementData: ; 8388
 	ld a, [PlayerDirection]
 	srl a
 	srl a
@@ -3759,18 +3783,21 @@
 	and 3
 	ld e, a
 	ld d, 0
-	ld hl, .data_839a
+	ld hl, .movement_data
 	add hl, de
 	ld a, [hl]
 	ret
 ; 839a
 
-.data_839a
-	db 8 + DOWN, 8 + UP, 8 + LEFT, 8 + RIGHT
+.movement_data
+	slow_step_down
+	slow_step_up
+	slow_step_left
+	slow_step_right
 ; 839e
 
 
-Function839e:: ; 839e
+FollowNotExact:: ; 839e
 	push bc
 	ld a, c
 	call CheckObjectVisibility
@@ -3778,9 +3805,12 @@
 	ld e, c
 	pop bc
 	ret c
+
 	ld a, b
 	call CheckObjectVisibility
 	ret c
+
+; Person 2 is now in bc, person 1 is now in de
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
@@ -3788,33 +3818,34 @@
 	add hl, bc
 	ld c, [hl]
 	ld b, a
+
 	ld hl, OBJECT_MAP_X
 	add hl, de
 	ld a, [hl]
 	cp b
-	jr z, .asm_83c7
-	jr c, .asm_83c4
+	jr z, .same_x
+	jr c, .to_the_left
 	inc b
-	jr .asm_83d5
+	jr .continue
 
-.asm_83c4
+.to_the_left
 	dec b
-	jr .asm_83d5
+	jr .continue
 
-.asm_83c7
+.same_x
 	ld hl, OBJECT_MAP_Y
 	add hl, de
 	ld a, [hl]
 	cp c
-	jr z, .asm_83d5
-	jr c, .asm_83d4
+	jr z, .continue
+	jr c, .below
 	inc c
-	jr .asm_83d5
+	jr .continue
 
-.asm_83d4
+.below
 	dec c
 
-.asm_83d5
+.continue
 	ld hl, OBJECT_MAP_X
 	add hl, de
 	ld [hl], b
@@ -3847,7 +3878,7 @@
 	ld [hl], a
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, de
-	ld [hl], SPRITEMOVEDATA_1A
+	ld [hl], SPRITEMOVEDATA_FOLLOWNOTEXACT
 	ld hl, OBJECT_09
 	add hl, de
 	ld [hl], $0
@@ -4329,7 +4360,7 @@
 	ld a, [hPrintNum6]
 	ld b, a
 	ld a, [hPrintNum3]
-	ld [$ffbb], a
+	ld [hPrintNum9], a
 	cp b
 	jr nc, .skip2
 	ld a, [hPrintNum2]
@@ -4344,7 +4375,7 @@
 	ld a, [hPrintNum7]
 	ld b, a
 	ld a, [hPrintNum4]
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	cp b
 	jr nc, .skip4
 	ld a, [hPrintNum3]
@@ -4366,7 +4397,7 @@
 	inc c
 	jr .loop
 .skip6
-	ld a, [$ffbb]
+	ld a, [hPrintNum9]
 	ld [hPrintNum3], a
 .skip3
 	ld a, [$ffba]
@@ -4444,21 +4475,21 @@
 ; c677
 
 HealPartyMon: ; c677
-	ld a, PartyMon1Species - PartyMon1
+	ld a, MON_SPECIES
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
 
-	ld hl, PartyMon1Status - PartyMon1Species
+	ld hl, MON_STATUS
 	add hl, de
 	xor a
 	ld [hli], a
 	ld [hl], a
 
-	ld hl, PartyMon1MaxHP - PartyMon1Species
+	ld hl, MON_MAXHP
 	add hl, de
 
-	; bc = PartyMon1HP - PartyMon1Species
+	; bc = MON_HP
 	ld b, h
 	ld c, l
 rept 2
@@ -4475,7 +4506,7 @@
 	ret
 ; c699
 
-Functionc699: ; c699
+DrawPartyMenuHPBar: ; c699
 	ld a, b
 	or c
 	jr z, .zero
@@ -4525,9 +4556,9 @@
 	ret
 ; c6e0
 
-Functionc6e0: ; c6e0
+AnimateHPBar: ; c6e0
 	call WaitBGMap
-	call Functiond627
+	call _AnimateHPBar
 	call WaitBGMap
 	ret
 ; c6ea
@@ -4626,7 +4657,7 @@
 	cp a, EGG
 	jr z, .next
 
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Moves
 	ld a, e
 	call AddNTimes
@@ -4773,23 +4804,23 @@
 	ld [hl], a
 	xor a
 	ld [hBGMapMode], a
-	call Function2173
+	call OverworldTextModeSwitch
 	call UpdateSprites
 	call DelayFrame
 	ld a, [wd1ef]
 	ld e, a
-	callba Function8c940
+	callba OWCutAnimation
 	call BufferScreen
 	call Function2914
 	call UpdateSprites
 	call DelayFrame
-	call Functione51
+	call LoadStandardFont
 	ret
 ; c840
 
 CheckOverworldTileArrays: ; c840
 	push bc
-	ld a, [wd199]
+	ld a, [wTileset]
 	ld de, 3
 	call IsInArray
 	pop bc
@@ -5020,7 +5051,7 @@
 	copybytetovar Buffer2
 	writevarcode VAR_MOVEMENT
 
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	special PlayMapMusic
 ; step into the water
 	special Special_SurfStartStep ; (slow_step_x, step_end)
@@ -5196,8 +5227,8 @@
 
 .outdoors
 	xor a
-	ld [$ffde], a
-	call LoadMenuDataHeader_0x1d75
+	ld [hMapAnims], a
+	call LoadStandardMenuDataHeader
 	call ClearSprites
 	callba _FlyMap
 	ld a, e
@@ -5244,11 +5275,11 @@
 	callasm HideSprites
 	special UpdateTimePals
 	callasm Function8caed
-	farscall UnknownScript_0x122c1
+	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	callasm DelayLoadingNewSprites
 	writecode VAR_MOVEMENT, $0
-	newloadmap -4
+	newloadmap MAPSETUP_FLY
 	callasm Function8cb33
 	special WaitSFX
 	callasm Functioncacb
@@ -5258,7 +5289,7 @@
 Functioncacb: ; cacb
 	callba Function561d
 	call DelayFrame
-	call Special_ReplaceKrisSprite
+	call ReplaceKrisSprite
 	callba Function106594
 	ret
 ; cade
@@ -5470,7 +5501,7 @@
 	jr nz, .failescaperope
 	ld hl, UnknownText_0xcc26
 	call MenuTextBox
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	call WriteBackup
 
 .failescaperope
@@ -5513,10 +5544,10 @@
 	loadmovesprites
 	playsound SFX_WARP_TO
 	applymovement PLAYER, MovementData_0xcc59
-	farscall UnknownScript_0x122c1
+	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
-	newloadmap -11
+	newloadmap MAPSETUP_DOOR
 	playsound SFX_WARP_FROM
 	applymovement PLAYER, MovementData_0xcc5d
 	end
@@ -5611,10 +5642,10 @@
 	loadmovesprites
 	playsound SFX_WARP_TO
 	applymovement PLAYER, MovementData_0xcce1
-	farscall UnknownScript_0x122c1
+	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	writecode VAR_MOVEMENT, $0
-	newloadmap -12
+	newloadmap MAPSETUP_TELEPORT
 	playsound SFX_WARP_FROM
 	applymovement PLAYER, MovementData_0xcce3
 	end
@@ -5889,10 +5920,10 @@
 	ld [hl], a
 	xor a
 	ld [hBGMapMode], a
-	call Function2173
+	call OverworldTextModeSwitch
 	ld a, [wd1ef]
 	ld e, a
-	callba Function8c7d4
+	callba PlayWhirlpoolSound
 	call BufferScreen
 	call Function2914
 	ret
@@ -6199,7 +6230,7 @@
 	ret
 
 .facingwater
-	call Function2d19
+	call GetFishingGroup
 	and a
 	jr nz, .goodtofish
 	ld a, $4
@@ -6269,7 +6300,7 @@
 	writetext UnknownText_0xd0a9
 
 Script_NotEvenANibble_FallThrough: ; 0xd02d
-	loademote EMOTE_ROD + DOWN
+	loademote EMOTE_08
 	callasm PutTheRodAway
 	loadmovesprites
 	end
@@ -6312,7 +6343,7 @@
 	fish_got_bite
 	fish_got_bite
 	fish_got_bite
-	show_person
+	step_sleep_1
 	show_emote
 	step_end
 ; d069
@@ -6319,7 +6350,7 @@
 
 MovementData_0xd069: ; d069
 	hide_emote
-	fish_got_bite_2
+	fish_cast_rod
 	step_end
 ; d06c
 
@@ -6340,8 +6371,8 @@
 	reloadmappart
 	loadvar hBGMapMode, $0
 	special UpdateTimePals
-	loademote EMOTE_ROD + UP
-	callasm Functionb84b3
+	loademote EMOTE_09
+	callasm LoadFishingGFX
 	loademote EMOTE_SHOCK
 	applymovement PLAYER, MovementData_0xd093
 	pause 40
@@ -6349,7 +6380,7 @@
 ; 0xd093
 
 MovementData_0xd093: ; d093
-	fish_got_bite_2
+	fish_cast_rod
 	step_end
 ; d095
 
@@ -6359,7 +6390,7 @@
 	ld a, $1
 	ld [PlayerAction], a
 	call UpdateSprites
-	call Special_ReplaceKrisSprite
+	call ReplaceKrisSprite
 	ret
 ; d0a4
 
@@ -6478,7 +6509,7 @@
 	writetext UnknownText_0xd17c
 	closetext
 	loadmovesprites
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	end
 ; 0xd14e
 
@@ -6485,7 +6516,7 @@
 Script_GetOnBike_Register: ; 0xd14e
 	writecode VAR_MOVEMENT, $1
 	loadmovesprites
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	end
 ; 0xd156
 
@@ -6502,7 +6533,7 @@
 
 UnknownScript_0xd163:
 	loadmovesprites
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	special PlayMapMusic
 	end
 ; 0xd16b
@@ -7272,12 +7303,12 @@
 	ld d, a
 	ld a, [wd14f]
 	ld e, a
-	ld a, [hSCX] ; $ff00+$cf
+	ld a, [hSCX]
 	add d
-	ld [hSCX], a ; $ff00+$cf
-	ld a, [hSCY] ; $ff00+$d0
+	ld [hSCX], a
+	ld a, [hSCY]
 	add e
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	ret
 
 Functiond4e5: ; d4e5 (3:54e5)
@@ -7354,22 +7385,22 @@
 	ret
 .asm_d549
 	call Functiond571
-	call Function217a
+	call LoadMapPart
 	call Function2748
 	ret
 .asm_d553
 	call Functiond5a2
-	call Function217a
+	call LoadMapPart
 	call Function272a
 	ret
 .asm_d55d
 	call Functiond5d5
-	call Function217a
+	call LoadMapPart
 	call Function2771
 	ret
 .asm_d567
 	call Functiond5fe
-	call Function217a
+	call LoadMapPart
 	call Function278f
 	ret
 
@@ -7482,11 +7513,11 @@
 	cp $2
 	jr nz, .asm_d61c
 	ld [hl], $0
-	call Functiond61d
+	call .Incrementwd194
 .asm_d61c
 	ret
 
-Functiond61d: ; d61d (3:561d)
+.Incrementwd194: ; d61d (3:561d)
 	ld hl, wd194
 	ld a, [hl]
 	add $1
@@ -7495,11 +7526,11 @@
 	inc [hl]
 	ret
 
-Functiond627: ; d627
+_AnimateHPBar: ; d627
 	call Functiond65f
-	jr c, .asm_d645
+	jr c, .do_player
 	call Functiond670
-.asm_d62f
+.enemy_loop
 	push bc
 	push hl
 	call Functiond6e2
@@ -7513,12 +7544,12 @@
 	pop hl
 	pop bc
 	pop af
-	jr nc, .asm_d62f
+	jr nc, .enemy_loop
 	ret
 
-.asm_d645
+.do_player
 	call Functiond670
-.asm_d648
+.player_loop
 	push bc
 	push hl
 	call Functiond6f5
@@ -7533,7 +7564,7 @@
 	pop hl
 	pop bc
 	pop af
-	jr nc, .asm_d648
+	jr nc, .player_loop
 	ret
 ; d65f
 
@@ -7540,14 +7571,14 @@
 Functiond65f: ; d65f
 	ld a, [Buffer2]
 	and a
-	jr nz, .asm_d66e
+	jr nz, .player
 	ld a, [Buffer1]
 	cp $30
-	jr nc, .asm_d66e
+	jr nc, .player
 	and a
 	ret
 
-.asm_d66e
+.player
 	scf
 	ret
 ; d670
@@ -7564,7 +7595,7 @@
 	ld a, [hli]
 	ld b, a
 	pop hl
-	call Functionc699
+	call DrawPartyMenuHPBar
 	ld a, e
 	ld [wd1f1], a
 	ld a, [wd1ee]
@@ -7575,7 +7606,7 @@
 	ld e, a
 	ld a, [Buffer2]
 	ld d, a
-	call Functionc699
+	call DrawPartyMenuHPBar
 	ld a, e
 	ld [wd1f2], a
 	push hl
@@ -7600,7 +7631,7 @@
 	ld [wd1f5], a
 	ld a, [wd1ee]
 	ld [wd1f6], a
-	ld bc, $0001
+	ld bc, 1
 	jr .asm_d6d9
 
 .asm_d6c1
@@ -7679,7 +7710,7 @@
 	ld c, a
 	ld a, [hli]
 	ld b, a
-	call Functionc699
+	call DrawPartyMenuHPBar
 	pop bc
 	pop de
 	pop hl
@@ -7718,7 +7749,7 @@
 	ld e, a
 	ld a, [Buffer2]
 	ld d, a
-	call Functionc699
+	call DrawPartyMenuHPBar
 	ld c, e
 	ld d, $6
 	ld a, [wd10a]
@@ -7743,7 +7774,7 @@
 	ld h, a
 
 .asm_d780
-	call DrawHPBar
+	call DrawBattleHPBar
 	ret
 ; d784
 
@@ -7752,14 +7783,14 @@
 	and a
 	ret z
 	cp $1
-	jr z, .asm_d792
-	ld de, $0016
-	jr .asm_d795
+	jr z, .load_15
+	ld de, $16
+	jr .loaded_de
 
-.asm_d792
-	ld de, $0015
+.load_15
+	ld de, $15
 
-.asm_d795
+.loaded_de
 	push hl
 	add hl, de
 	ld a, " "
@@ -7794,32 +7825,32 @@
 Functiond7c9: ; d7c9
 	ld a, [hCGB]
 	and a
-	jr nz, .asm_d7d5
+	jr nz, .cgb
 	call DelayFrame
 	call DelayFrame
 	ret
 
-.asm_d7d5
+.cgb
 	ld a, [wd10a]
 	and a
-	jr z, .asm_d829
+	jr z, .load_0
 	cp $1
-	jr z, .asm_d82d
+	jr z, .load_1
 	ld a, [CurPartyMon]
 	cp $3
-	jr nc, .asm_d7ea
+	jr nc, .c_is_1
 	ld c, $0
-	jr .asm_d7ec
+	jr .c_is_0
 
-.asm_d7ea
+.c_is_1
 	ld c, $1
 
-.asm_d7ec
+.c_is_0
 	push af
 	cp $2
-	jr z, .asm_d7ff
+	jr z, .skip_delay
 	cp $5
-	jr z, .asm_d7ff
+	jr z, .skip_delay
 	ld a, $2
 	ld [hBGMapMode], a
 	ld a, c
@@ -7826,7 +7857,7 @@
 	ld [hBGMapThird], a
 	call DelayFrame
 
-.asm_d7ff
+.skip_delay
 	ld a, $1
 	ld [hBGMapMode], a
 	ld a, c
@@ -7834,12 +7865,12 @@
 	call DelayFrame
 	pop af
 	cp $2
-	jr z, .asm_d813
+	jr z, .two_frames
 	cp $5
-	jr z, .asm_d813
+	jr z, .two_frames
 	ret
 
-.asm_d813
+.two_frames
 	inc c
 	ld a, $2
 	ld [hBGMapMode], a
@@ -7853,14 +7884,14 @@
 	call DelayFrame
 	ret
 
-.asm_d829
+.load_0
 	ld c, $0
-	jr .asm_d82f
+	jr .finish
 
-.asm_d82d
+.load_1
 	ld c, $1
 
-.asm_d82f
+.finish
 	call DelayFrame
 	ld a, c
 	ld [hBGMapThird], a
@@ -7875,12 +7906,12 @@
 	ld hl, 0
 	ld a, [wd1f1]
 	cp $30
-	jr nc, .asm_d885
+	jr nc, .coppy_buffer
 	and a
-	jr z, .asm_d880
+	jr z, .return_zero
 	call AddNTimes
 	ld b, $0
-.asm_d851
+.loop
 	ld a, l
 	sub $30
 	ld l, a
@@ -7887,13 +7918,13 @@
 	ld a, h
 	sbc $0
 	ld h, a
-	jr c, .asm_d85e
+	jr c, .done
 	inc b
-	jr .asm_d851
+	jr .loop
 
-.asm_d85e
+.done
 	push bc
-	ld bc, $0080
+	ld bc, $80
 	add hl, bc
 	pop bc
 	ld a, l
@@ -7902,28 +7933,28 @@
 	ld a, h
 	sbc $0
 	ld h, a
-	jr c, .asm_d86f
+	jr c, .no_carry
 	inc b
 
-.asm_d86f
+.no_carry
 	ld a, [wd1f5]
 	cp b
-	jr nc, .asm_d87c
+	jr nc, .finish
 	ld a, [wd1f6]
 	cp b
-	jr c, .asm_d87c
+	jr c, .finish
 	ld a, b
 
-.asm_d87c
+.finish
 	ld [wd1ec], a
 	ret
 
-.asm_d880
+.return_zero
 	xor a
 	ld [wd1ec], a
 	ret
 
-.asm_d885
+.coppy_buffer
 	ld a, [Buffer1]
 	ld [wd1ec], a
 	ret
@@ -8005,7 +8036,7 @@
 .initializeStats
 	ld a, [$ffae]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 GeneratePartyMonStats: ; d906
 	ld e, l
@@ -8068,7 +8099,7 @@
 	push de
 	ld a, [CurPartyLevel]
 	ld d, a
-	callab Function50e47
+	callab CalcExpAtLevel
 	pop de
 	ld a, [hMultiplicand]
 	ld [de], a
@@ -8157,7 +8188,7 @@
 	ld a, $1
 	ld c, a
 	ld b, $0
-	call Functione17b
+	call CalcPkmnStatC
 	ld a, [$ffb5]
 	ld [de], a
 	inc de
@@ -8243,7 +8274,7 @@
 	ld hl, PartyMon1DVs
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	predef GetUnownLetter
 	callab Functionfba18
@@ -8257,10 +8288,10 @@
 FillPP: ; da6d
 	push bc
 	ld b, NUM_MOVES
-.asm_da70
+.loop
 	ld a, [hli]
 	and a
-	jr z, .asm_da8f
+	jr z, .next
 	dec a
 	push hl
 	push de
@@ -8276,11 +8307,11 @@
 	pop hl
 	ld a, [StringBuffer1 + MOVE_PP]
 
-.asm_da8f
+.next
 	ld [de], a
 	inc de
 	dec b
-	jr nz, .asm_da70
+	jr nz, .loop
 	pop bc
 	ret
 ; da96
@@ -8303,7 +8334,7 @@
 	ld hl, PartyMon1Species
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld e, l
 	ld d, h
@@ -8333,7 +8364,7 @@
 	call CopyBytes
 
 	ld a, [CurPartySpecies]
-	ld [wd265], a
+	ld [wNamedObjectIndexBuffer], a
 	cp EGG
 	jr z, .owned
 	dec a
@@ -8341,7 +8372,7 @@
 	ld hl, PartyMon1Happiness
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld [hl], BASE_HAPPINESS
 .owned
@@ -8352,7 +8383,7 @@
 	ld hl, PartyMon1DVs
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	predef GetUnownLetter
 	callab Functionfba18
@@ -8369,19 +8400,21 @@
 
 SentGetPkmnIntoFromBox: ; db3f
 ; Sents/Gets Pkmn into/from Box depending on Parameter
-; wd10b == 0: get Pkmn into Party
-; wd10b == 1: sent Pkmn into Box
+; wPokemonWithdrawDepositParameter == 0: get Pkmn into Party
+; wPokemonWithdrawDepositParameter == 1: sent Pkmn into Box
+; wPokemonWithdrawDepositParameter == 2: get Pkmn from DayCare
+; wPokemonWithdrawDepositParameter == 3: put Pkmn into DayCare
 
 	ld a, BANK(sBoxCount)
 	call GetSRAMBank
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .check_IfPartyIsFull
-	cp $2
+	cp DAYCARE_WITHDRAW
 	jr z, .check_IfPartyIsFull
-	cp $3
+	cp DAYCARE_DEPOSIT
 	ld hl, wBreedMon1Species
-	jr z, .asm_db9b
+	jr z, .breedmon
 
     ; we want to sent a Pkmn into the Box
     ; so check if there's enough space
@@ -8388,178 +8421,183 @@
 	ld hl, sBoxCount
 	ld a, [hl]
 	cp MONS_PER_BOX
-	jr nz, .asm_db69
-	jp CloseSRAM_And_SetCFlag
+	jr nz, .there_is_room
+	jp CloseSRAM_And_SetCarryFlag
 
 .check_IfPartyIsFull
 	ld hl, PartyCount
 	ld a, [hl]
 	cp PARTY_LENGTH
-	jp z, CloseSRAM_And_SetCFlag
+	jp z, CloseSRAM_And_SetCarryFlag
 
-.asm_db69
+.there_is_room
 	inc a
 	ld [hl], a
 	ld c, a
 	ld b, 0
 	add hl, bc
-	ld a, [wd10b]
-	cp $2
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp DAYCARE_WITHDRAW
 	ld a, [wBreedMon1Species]
-	jr z, .asm_db7c
+	jr z, .okay1
 	ld a, [CurPartySpecies]
 
-.asm_db7c
+.okay1
 	ld [hli], a
 	ld [hl], $ff
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	dec a
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [PartyCount]
-	jr nz, .asm_db97
+	jr nz, .okay2
 	ld hl, sBoxMon1Species
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	ld a, [sBoxCount]
 
-.asm_db97
+.okay2
 	dec a ; PartyCount - 1
 	call AddNTimes
 
-.asm_db9b
+.breedmon
 	push hl
 	ld e, l
 	ld d, h
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	ld hl, sBoxMon1Species
-	ld bc, sBoxMon1End - sBoxMon1
-	jr z, .asm_dbb7
-	cp $2
+	ld bc, BOXMON_STRUCT_LENGTH
+	jr z, .okay3
+	cp DAYCARE_WITHDRAW
 	ld hl, wBreedMon1Species
-	jr z, .asm_dbbd
+	jr z, .okay4
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 
-.asm_dbb7
+.okay3
 	ld a, [CurPartyMon]
 	call AddNTimes
 
-.asm_dbbd
-	ld bc, sBoxMon1End - sBoxMon1
+.okay4
+	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
-	ld a, [wd10b]
-	cp $3
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp DAYCARE_DEPOSIT
 	ld de, wBreedMon1OT
-	jr z, .asm_dbe2
+	jr z, .okay5
 	dec a
 	ld hl, PartyMonOT
 	ld a, [PartyCount]
-	jr nz, .asm_dbdc
+	jr nz, .okay6
 	ld hl, sBoxMonOT
 	ld a, [sBoxCount]
 
-.asm_dbdc
+.okay6
 	dec a
 	call SkipNames
 	ld d, h
 	ld e, l
 
-.asm_dbe2
+.okay5
 	ld hl, sBoxMonOT
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
-	jr z, .asm_dbf5
+	jr z, .okay7
 	ld hl, wBreedMon1OT
-	cp $2
-	jr z, .asm_dbfb
+	cp DAYCARE_WITHDRAW
+	jr z, .okay8
 	ld hl, PartyMonOT
 
-.asm_dbf5
+.okay7
 	ld a, [CurPartyMon]
 	call SkipNames
 
-.asm_dbfb
+.okay8
 	ld bc, NAME_LENGTH
 	call CopyBytes
-	ld a, [wd10b]
-	cp $3
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp DAYCARE_DEPOSIT
 	ld de, wBreedMon1Nick
-	jr z, .asm_dc20
+	jr z, .okay9
 	dec a
 	ld hl, PartyMonNicknames
 	ld a, [PartyCount]
-	jr nz, .asm_dc1a
+	jr nz, .okay10
 	ld hl, sBoxMonNicknames
 	ld a, [sBoxCount]
 
-.asm_dc1a
+.okay10
 	dec a
 	call SkipNames
 	ld d, h
 	ld e, l
 
-.asm_dc20
+.okay9
 	ld hl, sBoxMonNicknames
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
-	jr z, .asm_dc33
+	jr z, .okay11
 	ld hl, wBreedMon1Nick
-	cp $2
-	jr z, .asm_dc39
+	cp DAYCARE_WITHDRAW
+	jr z, .okay12
 	ld hl, PartyMonNicknames
 
-.asm_dc33
+.okay11
 	ld a, [CurPartyMon]
 	call SkipNames
 
-.asm_dc39
+.okay12
 	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	pop hl
-	ld a, [wd10b]
-	cp $1
-	jr z, .asm_dca4
-	cp $3
-	jp z, .asm_dcac
+
+	ld a, [wPokemonWithdrawDepositParameter]
+	cp PC_DEPOSIT
+	jr z, .took_out_of_box
+	cp DAYCARE_DEPOSIT
+	jp z, .CloseSRAM_And_ClearCarryFlag
+
 	push hl
 	srl a
 	add $2
 	ld [MonType], a
 	predef CopyPkmnToTempMon
-	callab Function50e1b
+	callab CalcLevel
 	ld a, d
 	ld [CurPartyLevel], a
 	pop hl
+
 	ld b, h
 	ld c, l
-	ld hl, $001f
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld [hl], a
-	ld hl, $0024
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, $000a
+	ld hl, MON_EXP + 2
 	add hl, bc
+
 	push bc
 	ld b, $1
 	call CalcPkmnStats
 	pop bc
-	ld a, [wd10b]
+
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
-	jr nz, .asm_dcac
-	ld hl, $0020
+	jr nz, .CloseSRAM_And_ClearCarryFlag
+	ld hl, MON_STATUS
 	add hl, bc
 	xor a
 	ld [hl], a
-	ld hl, $0022
+	ld hl, MON_HP
 	add hl, bc
 	ld d, h
 	ld e, l
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_dc9e
+	jr z, .egg
 rept 2
 	inc hl
 endr
@@ -8568,28 +8606,28 @@
 	ld a, [hl]
 	inc de
 	ld [de], a
-	jr .asm_dcac
+	jr .CloseSRAM_And_ClearCarryFlag
 
-.asm_dc9e
+.egg
 	xor a
 	ld [de], a
 	inc de
 	ld [de], a
-	jr .asm_dcac
+	jr .CloseSRAM_And_ClearCarryFlag
 
-.asm_dca4
+.took_out_of_box
 	ld a, [sBoxCount]
 	dec a
 	ld b, a
 	call Functiondcb6
 
-.asm_dcac
+.CloseSRAM_And_ClearCarryFlag
 	call CloseSRAM
 	and a
 	ret
 ; dcb1
 
-CloseSRAM_And_SetCFlag: ; dcb1
+CloseSRAM_And_SetCarryFlag: ; dcb1
 	call CloseSRAM
 	scf
 	ret
@@ -8599,11 +8637,11 @@
 Functiondcb6: ; dcb6
 	ld a, b
 	ld hl, sBoxMons
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	call AddNTimes
 	ld b, h
 	ld c, l
-	ld hl, sBoxMon1PP - sBoxMon1
+	ld hl, MON_PP
 	add hl, bc
 	push hl
 	push bc
@@ -8611,7 +8649,7 @@
 	ld bc, NUM_MOVES
 	call CopyBytes
 	pop bc
-	ld hl, sBoxMon1Moves - sBoxMon1
+	ld hl, MON_MOVES
 	add hl, bc
 	push hl
 	ld de, TempMonMoves
@@ -8620,7 +8658,7 @@
 	pop hl
 	pop de
 
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	push af
 	ld a, [MonType]
 	push af
@@ -8633,17 +8671,17 @@
 	ld a, BOXMON
 	ld [MonType], a
 	ld a, b
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	push bc
 	push hl
 	push de
-	callba Functionf8ec
+	callba GetMaxPPOfMove
 	pop de
 	pop hl
 	ld a, [wd265]
 	ld b, a
 	ld a, [de]
-	and $c0
+	and %11000000
 	add b
 	ld [de], a
 	pop bc
@@ -8657,7 +8695,7 @@
 	pop af
 	ld [MonType], a
 	pop af
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ret
 ; dd21
 
@@ -8670,11 +8708,11 @@
 	call WaitSFX
 	call Functione698
 	ld a, b
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld a, e
 	ld [CurPartyLevel], a
 	xor a
-	ld [wd10b], a
+	ld [wPokemonWithdrawDepositParameter], a
 	jp Functiondd64
 ; dd42
 
@@ -8686,11 +8724,11 @@
 	call WaitSFX
 	call Functione6b3
 	ld a, b
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld a, e
 	ld [CurPartyLevel], a
-	ld a, $1
-	ld [wd10b], a
+	ld a, PC_DEPOSIT
+	ld [wPokemonWithdrawDepositParameter], a
 	jp Functiondd64
 ; dd64
 
@@ -8698,25 +8736,25 @@
 	ld hl, PartyCount
 	ld a, [hl]
 	cp PARTY_LENGTH
-	jr nz, .asm_dd6e
+	jr nz, .room_in_party
 	scf
 	ret
 
-.asm_dd6e
+.room_in_party
 	inc a
 	ld [hl], a
 	ld c, a
 	ld b, 0
 	add hl, bc
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	ld a, [wBreedMon1Species]
 	ld de, wBreedMon1Nick
-	jr z, .asm_dd86
+	jr z, .okay
 	ld a, [wBreedMon2Species]
 	ld de, wBreedMon2Nick
 
-.asm_dd86
+.okay
 	ld [hli], a
 	ld [CurSpecies], a
 	ld a, $ff
@@ -8742,21 +8780,21 @@
 	push hl
 	call Functionde1a
 	pop hl
-	ld bc, $0020
+	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
 	call GetBaseData
 	call Functionde1a
 	ld b, d
 	ld c, e
-	ld hl, $001f
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [CurPartyLevel]
 	ld [hl], a
-	ld hl, $0024
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc
 	push bc
 	ld b, $1
@@ -8764,7 +8802,7 @@
 	ld hl, PartyMon1Moves
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -8777,15 +8815,15 @@
 	callba HealPartyMon
 	ld a, [CurPartyLevel]
 	ld d, a
-	callab Function50e47
+	callab CalcExpAtLevel
 	pop bc
-	ld hl, $0008
+	ld hl, $8
 	add hl, bc
 	ld a, [hMultiplicand]
 	ld [hli], a
-	ld a, [$ffb5]
+	ld a, [hMultiplicand + 1]
 	ld [hli], a
-	ld a, [$ffb6]
+	ld a, [hMultiplicand + 2]
 	ld [hl], a
 	and a
 	ret
@@ -8795,7 +8833,7 @@
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -8806,7 +8844,7 @@
 	ld de, wBreedMon1Nick
 	call Functionde44
 	xor a
-	ld [wd10b], a
+	ld [wPokemonWithdrawDepositParameter], a
 	jp Functione039
 ; de37
 
@@ -8814,7 +8852,7 @@
 	ld de, wBreedMon2Nick
 	call Functionde44
 	xor a
-	ld [wd10b], a
+	ld [wPokemonWithdrawDepositParameter], a
 	jp Functione039
 ; de44
 
@@ -8829,9 +8867,9 @@
 	call CopyBytes
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	jp CopyBytes
 
 
@@ -8892,7 +8930,7 @@
 	push de
 	ld a, [CurPartyLevel]
 	ld d, a
-	callab Function50e47
+	callab CalcExpAtLevel
 	pop de
 	ld a, [hMultiplicand]
 	ld [de], a
@@ -8980,7 +9018,7 @@
 	call .asm_df5f
 
 	ld hl, sBoxMons
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 
 .asm_df5f
 	ld a, [sBoxCount]
@@ -9062,7 +9100,7 @@
 	ld [CurPartySpecies], a
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Species
 	call AddNTimes
 	ld a, [CurPartySpecies]
@@ -9083,7 +9121,7 @@
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMon1Happiness
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [wc2cc]
 	bit 1, a
@@ -9096,7 +9134,7 @@
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMon1HP
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	xor a
 	ld [hli], a
@@ -9112,15 +9150,15 @@
 Functione039: ; e039
 	ld hl, PartyCount
 
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
-	jr z, .asm_e04a
+	jr z, .okay
 
 	ld a, BANK(sBoxCount)
 	call GetSRAMBank
 	ld hl, sBoxCount
 
-.asm_e04a
+.okay
 	ld a, [hl]
 	dec a
 	ld [hli], a
@@ -9139,7 +9177,7 @@
 	jr nz, .asm_e057
 	ld hl, PartyMonOT
 	ld d, PARTY_LENGTH - 1
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .asm_e06d
 	ld hl, sBoxMonOT
@@ -9160,7 +9198,7 @@
 	ld bc, PKMN_NAME_LENGTH
 	add hl, bc
 	ld bc, PartyMonNicknames
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .asm_e090
 	ld bc, sBoxMonNicknames
@@ -9168,12 +9206,12 @@
 	call CopyDataUntil
 
 	ld hl, PartyMons
-	ld bc, PartyMon2 - PartyMon1
-	ld a, [wd10b]
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .asm_e0a5
 	ld hl, sBoxMons
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 
 .asm_e0a5
 	ld a, [CurPartyMon]
@@ -9180,16 +9218,16 @@
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .asm_e0bc
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	ld bc, sBoxMonOT
 	jr .asm_e0c3
 
 .asm_e0bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	ld bc, PartyMonOT
 
@@ -9196,7 +9234,7 @@
 .asm_e0c3
 	call CopyDataUntil
 	ld hl, PartyMonNicknames
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .asm_e0d2
 	ld hl, sBoxMonNicknames
@@ -9210,7 +9248,7 @@
 	ld bc, PKMN_NAME_LENGTH
 	add hl, bc
 	ld bc, PartyMonNicknamesEnd
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jr z, .asm_e0ed
 	ld bc, sBoxMonNicknamesEnd
@@ -9219,20 +9257,20 @@
 	call CopyDataUntil
 
 .asm_60f0
-	ld a, [wd10b]
+	ld a, [wPokemonWithdrawDepositParameter]
 	and a
 	jp nz, CloseSRAM
 	ld a, [wLinkMode]
 	and a
 	ret nz
-	ld a, BANK(s0_a600)
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
 	ld hl, PartyCount
 	ld a, [CurPartyMon]
 	cp [hl]
 	jr z, .asm_e131
-	ld hl, s0_a600
-	ld bc, $002f
+	ld hl, sPartyScratch1
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
 	add hl, bc
@@ -9242,11 +9280,11 @@
 .asm_e11a
 	push bc
 	push hl
-	ld bc, $002f
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	pop hl
 	push hl
-	ld bc, $002f
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	add hl, bc
 	pop de
 	pop bc
@@ -9260,26 +9298,26 @@
 ; e134
 
 Functione134: ; e134
-	ld a, PartyMon1Level - PartyMon1
+	ld a, MON_LEVEL
 	call GetPartyParamLocation
 	ld a, [hl]
-	ld [PartyMon1Level - PartyMon1], a ; wow
-	ld a, PartyMon1Species - PartyMon1
+	ld [MON_LEVEL], a ; wow
+	ld a, MON_SPECIES
 	call GetPartyParamLocation
 	ld a, [hl]
 	ld [CurSpecies], a
 	call GetBaseData
-	ld a, PartyMon1MaxHP - PartyMon1
+	ld a, MON_MAXHP
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
 	push de
-	ld a, PartyMon1Exp + 2 - PartyMon1
+	ld a, MON_EXP + 2
 	call GetPartyParamLocation
 	ld b, $1
 	call CalcPkmnStats
 	pop de
-	ld a, PartyMon1HP - PartyMon1
+	ld a, MON_HP
 	call GetPartyParamLocation
 	ld a, [de]
 	inc de
@@ -9296,24 +9334,29 @@
 ; results in $ffb5 and $ffb6 are saved in [de]
 
 	ld c, $0
-.asm_e169
+.loop
 	inc c
-	call Functione17b
-	ld a, [$ffb5]
+	call CalcPkmnStatC
+	ld a, [hMultiplicand + 1]
 	ld [de], a
 	inc de
-	ld a, [$ffb6]
+	ld a, [hMultiplicand + 2]
 	ld [de], a
 	inc de
 	ld a, c
-	cp $6
-	jr nz, .asm_e169
+	cp STAT_SDEF
+	jr nz, .loop
 	ret
 ; e17b
 
-Functione17b: ; e17b
+CalcPkmnStatC: ; e17b
 ; 'c' is 1-6 and points to the BaseStat
-
+; 1: HP
+; 2: Attack
+; 3: Defense
+; 4: Speed
+; 5: SpAtk
+; 6: SpDef
 	push hl
 	push de
 	push bc
@@ -9329,17 +9372,17 @@
 	pop hl
 	push hl
 	ld a, c
-	cp $6
-	jr nz, .asm_e193
+	cp STAT_SDEF
+	jr nz, .not_spdef
 rept 2
 	dec hl
 endr
 
-.asm_e193
+.not_spdef
 	sla c
 	ld a, d
 	and a
-	jr z, .asm_e1a5
+	jr z, .SkipSqrt
 	add hl, bc
 	push de
 	ld a, [hld]
@@ -9348,24 +9391,25 @@
 	callba GetSquareRoot
 	pop de
 
-.asm_e1a5
+.SkipSqrt
 	srl c
 	pop hl
 	push bc
-	ld bc, $000b
+	ld bc, MON_DVS - MON_HP_EXP + 1
 	add hl, bc
 	pop bc
 	ld a, c
-	cp $2
-	jr z, .asm_e1e3
-	cp $3
-	jr z, .asm_e1ea
-	cp $4
-	jr z, .asm_e1ef
-	cp $5
-	jr z, .asm_e1f7
-	cp $6
-	jr z, .asm_e1f7
+	cp STAT_ATK
+	jr z, .Attack
+	cp STAT_DEF
+	jr z, .Defense
+	cp STAT_SPD
+	jr z, .Speed
+	cp STAT_SATK
+	jr z, .Special
+	cp STAT_SDEF
+	jr z, .Special
+; DV_HP = (DV_ATK & 1) << 3 + (DV_DEF & 1) << 2 + (DV_SPD & 1) << 1 + (DV_SPC & 1)
 	push bc
 	ld a, [hl]
 	swap a
@@ -9391,39 +9435,39 @@
 	and $1
 	add b
 	pop bc
-	jr .asm_e1fb
+	jr .GotDV
 
-.asm_e1e3
+.Attack
 	ld a, [hl]
 	swap a
 	and $f
-	jr .asm_e1fb
+	jr .GotDV
 
-.asm_e1ea
+.Defense
 	ld a, [hl]
 	and $f
-	jr .asm_e1fb
+	jr .GotDV
 
-.asm_e1ef
+.Speed
 	inc hl
 	ld a, [hl]
 	swap a
 	and $f
-	jr .asm_e1fb
+	jr .GotDV
 
-.asm_e1f7
+.Special
 	inc hl
 	ld a, [hl]
 	and $f
 
-.asm_e1fb
-	ld d, $0
+.GotDV
+	ld d, 0
 	add e
 	ld e, a
-	jr nc, .asm_e202
+	jr nc, .no_overflow_1
 	inc d
 
-.asm_e202
+.no_overflow_1
 	sla e
 	rl d
 	srl b
@@ -9430,10 +9474,10 @@
 	srl b
 	ld a, b
 	add e
-	jr nc, .asm_e20f
+	jr nc, .no_overflow_2
 	inc d
 
-.asm_e20f
+.no_overflow_2
 	ld [hMultiplicand + 2], a
 	ld a, d
 	ld [hMultiplicand + 1], a
@@ -9448,55 +9492,55 @@
 	ld [hDividend + 1], a
 	ld a, [hProduct + 3]
 	ld [hDividend + 2], a
-	ld a, $64
+	ld a, 100
 	ld [hDivisor], a
-	ld a, $3
+	ld a, 3
 	ld b, a
 	call Divide
 	ld a, c
-	cp $1
-	ld a, $5
-	jr nz, .asm_e24e
+	cp STAT_HP
+	ld a, 5
+	jr nz, .not_hp
 	ld a, [CurPartyLevel]
 	ld b, a
 	ld a, [hQuotient + 2]
 	add b
-	ld [$ffb6], a
-	jr nc, .asm_e24c
+	ld [hMultiplicand + 2], a
+	jr nc, .no_overflow_3
 	ld a, [hQuotient + 1]
 	inc a
-	ld [$ffb5], a
+	ld [hMultiplicand + 1], a
 
-.asm_e24c
-	ld a, $a
+.no_overflow_3
+	ld a, 10
 
-.asm_e24e
+.not_hp
 	ld b, a
-	ld a, [$ffb6]
+	ld a, [hQuotient + 2]
 	add b
-	ld [$ffb6], a
-	jr nc, .asm_e25b
-	ld a, [$ffb5]
+	ld [hMultiplicand + 2], a
+	jr nc, .no_overflow_4
+	ld a, [hQuotient + 1]
 	inc a
-	ld [$ffb5], a
+	ld [hMultiplicand + 1], a
 
-.asm_e25b
-	ld a, [$ffb5]
-	cp $4
-	jr nc, .asm_e26b
-	cp $3
-	jr c, .asm_e273
-	ld a, [$ffb6]
-	cp $e8
-	jr c, .asm_e273
+.no_overflow_4
+	ld a, [hQuotient + 1]
+	cp (1000 / $100) + 1
+	jr nc, .max_stat
+	cp 1000 / $100
+	jr c, .stat_value_okay
+	ld a, [hQuotient + 2]
+	cp 1000 % $100
+	jr c, .stat_value_okay
 
-.asm_e26b
-	ld a, $3
-	ld [$ffb5], a
-	ld a, $e7
-	ld [$ffb6], a
+.max_stat
+	ld a, 999 / $100
+	ld [hMultiplicand + 1], a
+	ld a, 999 % $100
+	ld [hMultiplicand + 2], a
 
-.asm_e273
+.stat_value_okay
 	pop bc
 	pop de
 	pop hl
@@ -9528,7 +9572,7 @@
 	jr z, .done
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [CurItem]
 	ld [hl], a
@@ -9613,20 +9657,20 @@
 	push bc
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, 01001 / $100
 	ld [hli], a
 	ld [hl], 01001 % $100
 	pop bc
-	callba SetPkmnCaughtData
-	jr .asm_e3b2
+	callba SetPartymonCaughtData
+	jr .skip_nickname
 
 .asm_e35e
 	ld a, BANK(sBoxMonOT)
 	call GetSRAMBank
 	ld de, sBoxMonOT
-.asm_e366
+.loop
 	ld a, [ScriptBank]
 	call GetFarByte
 	ld [de], a
@@ -9633,7 +9677,7 @@
 	inc hl
 	inc de
 	cp "@"
-	jr nz, .asm_e366
+	jr nz, .loop
 	ld a, [ScriptBank]
 	call GetFarByte
 	ld b, a
@@ -9643,8 +9687,8 @@
 	call Random
 	ld [hl], a
 	call CloseSRAM
-	callba Function4db92
-	jr .asm_e3b2
+	callba SetBoxMonCaughtData
+	jr .skip_nickname
 
 .asm_e390
 	pop de
@@ -9663,10 +9707,10 @@
 .asm_e3a6
 	callba GiveANickname_YesNo
 	pop de
-	jr c, .asm_e3b2
-	call Functione3de
+	jr c, .skip_nickname
+	call InitNickname
 
-.asm_e3b2
+.skip_nickname
 	pop bc
 	pop de
 	ld a, b
@@ -9699,14 +9743,14 @@
 	db "@"
 ; 0xe3de
 
-Functione3de: ; e3de
+InitNickname: ; e3de
 	push de
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call DisableSpriteUpdates
 	pop de
 	push de
 	ld b, $0
-	callba Function116c1
+	callba NamingScreen
 	pop hl
 	ld de, StringBuffer1
 	call InitName
@@ -9741,13 +9785,13 @@
 
 Functione41c: ; e41c (3:641c)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call LoadMenuDataHeader_0x1d75
+	ld [hBGMapMode], a
+	call LoadStandardMenuDataHeader
 	call ClearPCItemScreen
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	ld hl, UnknownText_0xe43a
 	call PrintText
 	pop af
@@ -9767,47 +9811,47 @@
 	ret
 
 Functione443: ; e443 (3:6443)
-	ld hl, MenuDataHeader_0xe46f
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 	ld a, $1
-.asm_e44b
+.loop
 	ld [wMenuCursorBuffer], a
 	call SetPalettes
 	xor a
 	ld [wcf76], a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function1e5d
-	jr c, .asm_e46b
+	jr c, .cancel
 	ld a, [wMenuCursorBuffer]
 	push af
 	ld a, [MenuSelection]
-	ld hl, Jumptable_e4ba
+	ld hl, .Jumptable
 	rst JumpTable
 	pop bc
 	ld a, b
-	jr nc, .asm_e44b
-.asm_e46b
+	jr nc, .loop
+.cancel
 	call WriteBackup
 	ret
 ; e46f (3:646f)
 
-MenuDataHeader_0xe46f: ; 0xe46f
+.MenuDataHeader: ; 0xe46f
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 17, 19 ; end coords
-	dw MenuData2_0xe477
+	dw .MenuData2
 	db 1 ; default option
 ; 0xe477
 
-MenuData2_0xe477: ; 0xe477
+.MenuData2: ; 0xe477
 	db $80 ; flags
 	db 0 ; items
-	dw MenuItems_e4c4
+	dw .items
 	dw Function1f79
-	dw Strings_e47f
+	dw .strings
 ; 0xe47f
 
-Strings_e47f: ; e47f
+.strings: ; e47f
 	db "WITHDRAW <PK><MN>@"
 	db "DEPOSIT <PK><MN>@"
 	db "CHANGE BOX@"
@@ -9814,15 +9858,15 @@
 	db "MOVE <PK><MN> W/O MAIL@"
 	db "SEE YA!@"
 
-Jumptable_e4ba: ; e4ba (3:64ba)
-	dw Functione559
-	dw Functione4fe
-	dw Functione583
-	dw Functione4cd
-	dw Functione4cb
+.Jumptable: ; e4ba (3:64ba)
+	dw BillsPC_WithdrawMenu
+	dw BillsPC_DepositMenu
+	dw BillsPC_ChangeBoxMenu
+	dw BillsPC_MovePKMNMenu
+	dw BillsPC_SeeYa
 ; e4c4
 
-MenuItems_e4c4: ; e4c4
+.items: ; e4c4
 	db 5
 	db 0 ; WITHDRAW
 	db 1;  DEPOSIT
@@ -9832,27 +9876,27 @@
 	db -1
 ; e4cb
 
-Functione4cb: ; e4cb
+BillsPC_SeeYa: ; e4cb
 	scf
 	ret
 ; e4cd
 
-Functione4cd: ; e4cd
-	call LoadMenuDataHeader_0x1d75
+BillsPC_MovePKMNMenu: ; e4cd
+	call LoadStandardMenuDataHeader
 	callba Function44781
-	jr nc, .asm_e4e0
+	jr nc, .no_mail
 	ld hl, UnknownText_0xe4f9
 	call PrintText
-	jr .asm_e4f4
+	jr .quit
 
-.asm_e4e0
+.no_mail
 	callba Function14b34
-	jr c, .asm_e4f4
-	callba Functione2759
-	call Function222a
+	jr c, .quit
+	callba _MovePKMNWithoutMail
+	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
 
-.asm_e4f4
+.quit
 	call WriteBackup
 	and a
 	ret
@@ -9864,10 +9908,10 @@
 	db "@"
 ; 0xe4fe
 
-Functione4fe: ; e4fe (3:64fe)
-	call LoadMenuDataHeader_0x1d75
-	callba Functione2391
-	call Function222a
+BillsPC_DepositMenu: ; e4fe (3:64fe)
+	call LoadStandardMenuDataHeader
+	callba _DepositPKMN
+	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
 	call WriteBackup
 	and a
@@ -9911,7 +9955,7 @@
 
 CheckCurPartyMonFainted: ; e538
 	ld hl, PartyMon1HP
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 	ld b, $0
 .loop
 	ld a, [CurPartyMon]
@@ -9940,10 +9984,10 @@
 ; e559
 
 
-Functione559: ; e559 (3:6559)
-	call LoadMenuDataHeader_0x1d75
-	callba Functione2583
-	call Function222a
+BillsPC_WithdrawMenu: ; e559 (3:6559)
+	call LoadStandardMenuDataHeader
+	callba _WithdrawPKMN
+	call ReturnToMapFromSubmenu
 	call ClearPCItemScreen
 	call WriteBackup
 	and a
@@ -9970,8 +10014,8 @@
 	db "@"
 ; 0xe583
 
-Functione583: ; e583 (3:6583)
-	callba Functione35aa
+BillsPC_ChangeBoxMenu: ; e583 (3:6583)
+	callba _ChangeBox
 	and a
 	ret
 
@@ -9979,7 +10023,7 @@
 	call DisableSpriteUpdates
 	xor a
 	ld [hBGMapMode], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	hlcoord 0, 0
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
@@ -9986,10 +10030,10 @@
 	ld a, " "
 	call ByteFill
 	hlcoord 0,0
-	ld bc, $0a12
+	lb bc, 10, 18
 	call TextBox
 	hlcoord 0,12
-	ld bc, $0412
+	lb bc, 4, 18
 	call TextBox
 	call Function3200
 	call SetPalettes ; load regular palettes?
@@ -9999,10 +10043,10 @@
 Functione5bb: ; e5bb
 	ld a, [CurPartyMon]
 	ld hl, sBoxMon1Species
-	ld bc, $0020
+	ld bc, $20
 	call AddNTimes
 	ld de, TempMonSpecies
-	ld bc, $0020
+	ld bc, $20
 	ld a, BANK(sBoxMon1Species)
 	call GetSRAMBank
 	call CopyBytes
@@ -10016,7 +10060,7 @@
 	jr z, .asm_e5f1
 	ld a, b
 	ld hl, Unknown_e66e
-	ld bc, $0003
+	ld bc, 3
 	call AddNTimes
 	ld a, [hli]
 	push af
@@ -10033,7 +10077,7 @@
 .asm_e5f6
 	call GetSRAMBank
 	ld a, [hl]
-	ld bc, $0016
+	ld bc, $16
 	add hl, bc
 	ld b, a
 	ld c, $0
@@ -10047,7 +10091,7 @@
 	ld a, c
 	ld bc, 0
 	add hl, bc
-	ld bc, $0020
+	ld bc, $20
 	call AddNTimes
 	ld a, [hl]
 	ld [de], a
@@ -10059,7 +10103,7 @@
 	push hl
 	push bc
 	ld a, c
-	ld bc, $035c
+	ld bc, $35c
 	add hl, bc
 	call SkipNames
 	call CopyBytes
@@ -10068,9 +10112,9 @@
 	push hl
 	push bc
 	ld a, c
-	ld bc, $001f
+	ld bc, $1f
 	add hl, bc
-	ld bc, $0020
+	ld bc, $20
 	call AddNTimes
 	ld a, [hl]
 	ld [de], a
@@ -10080,9 +10124,9 @@
 	push hl
 	push bc
 	ld a, c
-	ld bc, $0015
+	ld bc, $15
 	add hl, bc
-	ld bc, $0020
+	ld bc, $20
 	call AddNTimes
 	ld a, [hli]
 	and $f0
@@ -10113,15 +10157,15 @@
 ; e66e
 
 Unknown_e66e: ; e66e
-	dbw BANK(sBox1),  sBox1
-	dbw BANK(sBox2),  sBox2
-	dbw BANK(sBox3),  sBox3
-	dbw BANK(sBox4),  sBox4
-	dbw BANK(sBox5),  sBox5
-	dbw BANK(sBox6),  sBox6
-	dbw BANK(sBox7),  sBox7
-	dbw BANK(sBox8),  sBox8
-	dbw BANK(sBox9),  sBox9
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
 	dba sBox10
 	dba sBox11
 	dba sBox12
@@ -10132,9 +10176,9 @@
 Functione698: ; e698
 	ld hl, wBreedMon1Stats
 	ld de, TempMon
-	ld bc, $0020
+	ld bc, $20
 	call CopyBytes
-	callab Function50e1b
+	callab CalcLevel
 	ld a, [wBreedMon1Level]
 	ld b, a
 	ld a, d
@@ -10147,9 +10191,9 @@
 Functione6b3: ; e6b3
 	ld hl, wBreedMon2Stats
 	ld de, TempMon
-	ld bc, $0020
+	ld bc, $20
 	call CopyBytes
-	callab Function50e1b
+	callab CalcLevel
 	ld a, [wBreedMon2Level]
 	ld b, a
 	ld a, d
@@ -10187,7 +10231,7 @@
 	ld [CurPartySpecies], a
 	call GetBaseData
 	xor a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, wContestMon
 	call ByteFill
 	xor a
@@ -10298,7 +10342,7 @@
 
 
 KnowsMove: ; f9ea
-	ld a, PartyMon1Moves - PartyMon1
+	ld a, MON_MOVES
 	call GetPartyParamLocation
 	ld a, [wd262]
 	ld b, a
@@ -10328,1094 +10372,23 @@
 
 SECTION "bank4", ROMX, BANK[$4]
 
-
 INCLUDE "engine/pack.asm"
 
 INCLUDE "engine/time.asm"
 
-CanLearnTMHMMove: ; 11639
-	ld a, [CurPartySpecies]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld hl, BaseTMHM
-	push hl
+INCLUDE "engine/tmhm.asm"
 
-	ld a, [wd262]
-	ld b, a
-	ld c, 0
-	ld hl, TMHMMoves
-.loop
-	ld a, [hli]
-	and a
-	jr z, .end
-	cp b
-	jr z, .asm_11659
-	inc c
-	jr .loop
+INCLUDE "engine/namingscreen.asm"
 
-.asm_11659
-	pop hl
-	ld b, CHECK_FLAG
-	push de
-	ld d, 0
-	predef FlagPredef
-	pop de
-	ret
-
-.end
-	pop hl
-	ld c, 0
-	ret
-; 1166a
-
-GetTMHMMove: ; 1166a
-	ld a, [wd265]
-	dec a
-	ld hl, TMHMMoves
-	ld b, 0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	ld [wd265], a
-	ret
-; 1167a
-
-TMHMMoves: ; 1167a
-	db DYNAMICPUNCH
-	db HEADBUTT
-	db CURSE
-	db ROLLOUT
-	db ROAR
-	db TOXIC
-	db ZAP_CANNON
-	db ROCK_SMASH
-	db PSYCH_UP
-	db HIDDEN_POWER
-	db SUNNY_DAY
-	db SWEET_SCENT
-	db SNORE
-	db BLIZZARD
-	db HYPER_BEAM
-	db ICY_WIND
-	db PROTECT
-	db RAIN_DANCE
-	db GIGA_DRAIN
-	db ENDURE
-	db FRUSTRATION
-	db SOLARBEAM
-	db IRON_TAIL
-	db DRAGONBREATH
-	db THUNDER
-	db EARTHQUAKE
-	db RETURN
-	db DIG
-	db PSYCHIC_M
-	db SHADOW_BALL
-	db MUD_SLAP
-	db DOUBLE_TEAM
-	db ICE_PUNCH
-	db SWAGGER
-	db SLEEP_TALK
-	db SLUDGE_BOMB
-	db SANDSTORM
-	db FIRE_BLAST
-	db SWIFT
-	db DEFENSE_CURL
-	db THUNDERPUNCH
-	db DREAM_EATER
-	db DETECT
-	db REST
-	db ATTRACT
-	db THIEF
-	db STEEL_WING
-	db FIRE_PUNCH
-	db FURY_CUTTER
-	db NIGHTMARE
-	db CUT
-	db FLY
-	db SURF
-	db STRENGTH
-	db FLASH
-	db WHIRLPOOL
-	db WATERFALL
-
-; Move tutor
-	db FLAMETHROWER
-	db THUNDERBOLT
-	db ICE_BEAM
-
-	db 0 ; end
-; 116b7
-
-_NamingScreen: ; 0x116b7
-	call DisableSpriteUpdates
-	call Function116c1
-	call Function2b74
-	ret
-; 0x116c1
-
-Function116c1: ; 116c1
-	ld hl, wc6d0
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, wc6d4
-	ld [hl], b
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	ld a, [$ffde]
-	push af
-	xor a
-	ld [$ffde], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call Function116f8
-	call DelayFrame
-.asm_116e5
-	call Function11915
-	jr nc, .asm_116e5
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [$ffde], a
-	pop af
-	ld [Options], a
-	call ClearJoypad
-	ret
-; 116f8
-
-Function116f8: ; 116f8
-	call WhiteBGMap
-	ld b, $8
-	call GetSGBLayout
-	call DisableLCD
-	call Function11c51
-	call Function118a8
-	ld a, $e3
-	ld [rLCDC], a
-	call Function1171d
-	call WaitBGMap
-	call WaitTop
-	call SetPalettes
-	call Function11be0
-	ret
-; 1171d
-
-Function1171d: ; 1171d
-	ld a, [wc6d4]
-	and 7
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1172e
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 1172e
-
-
-Jumptable_1172e: ; 1172e (4:572e)
-	dw Function1173e
-	dw Function1178d
-	dw Function117ae
-	dw Function117d1
-	dw Function117f5
-	dw Function1182c
-	dw Function1173e
-	dw Function1173e
-
-
-Function1173e: ; 1173e (4:573e)
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	ld hl, Function8e83f
-	ld a, BANK(Function8e83f)
-	ld e, $1
-	rst FarCall ;  ; indirect jump to Function8e83f (8e83f (23:683f))
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-	hlcoord 5, 2
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld de, Strings_11780
-	call PlaceString
-	inc de
-	hlcoord 5, 4
-	call PlaceString
-	callba GetGender
-	jr c, .asm_1177c
-	ld a, $ef
-	jr nz, .asm_11778
-	ld a, $f5
-.asm_11778
-	hlcoord 1, 2
-	ld [hl], a
-.asm_1177c
-	call Function1187b
-	ret
-; 11780 (4:5780)
-
-Strings_11780: ; 11780
-	db "'S@"
-	db "NICKNAME?@"
-; 1178d
-
-Function1178d: ; 1178d (4:578d)
-	callba GetPlayerIcon
-	call Function11847
-	hlcoord 5, 2
-	ld de, String_117a3
-	call PlaceString
-	call Function11882
-	ret
-; 117a3 (4:57a3)
-
-String_117a3: ; 117a3
-	db "YOUR NAME?@"
-; 117ae
-
-Function117ae: ; 117ae (4:57ae)
-	ld de, SilverSpriteGFX
-	ld b, BANK(SilverSpriteGFX)
-	call Function11847
-	hlcoord 5, 2
-	ld de, String_117c3
-	call PlaceString
-	call Function11882
-	ret
-; 117c3 (4:57c3)
-
-String_117c3: ; 117c3
-	db "RIVAL'S NAME?@"
-; 117d1
-
-Function117d1: ; 117d1 (4:57d1)
-	ld de, MomSpriteGFX
-	ld b, BANK(MomSpriteGFX)
-	call Function11847
-	hlcoord 5, 2
-	ld de, String_117e6
-	call PlaceString
-	call Function11882
-	ret
-; 117e6 (4:57e6)
-
-String_117e6: ; 117e6
-	db "MOTHER'S NAME?@"
-; 117f5
-
-Function117f5: ; 117f5 (4:57f5)
-	ld de, PokeBallSpriteGFX
-	ld hl, VTiles0 tile $00
-	lb bc, BANK(PokeBallSpriteGFX), $4
-	call Request2bpp
-	xor a
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], a
-	ld de, $2420
-	ld a, $a
-	call Function3b2a
-	ld hl, $1
-	add hl, bc
-	ld [hl], $0
-	hlcoord 5, 2
-	ld de, String_11822
-	call PlaceString
-	call Function11889
-	ret
-; 11822 (4:5822)
-
-String_11822: ; 11822
-	db "BOX NAME?@"
-; 1182c
-
-Function1182c: ; 1182c (4:582c)
-	hlcoord 3, 2
-	ld de, String_11839
-	call PlaceString
-	call Function11882
-	ret
-; 11839 (4:5839)
-
-String_11839: ; 11839
-	db "おともだち の なまえは?@"
-; 11847
-
-Function11847: ; 11847 (4:5847)
-	push de
-	ld hl, VTiles0 tile $00
-	ld c, $4
-	push bc
-	call Request2bpp
-	pop bc
-	ld hl, $c0
-	add hl, de
-	ld e, l
-	ld d, h
-	ld hl, VTiles0 tile $04
-	call Request2bpp
-	xor a
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], a
-	pop de
-	ld b, $a
-	ld a, d
-	cp $7a
-	jr nz, .asm_11873
-	ld a, e
-	cp $40
-	jr nz, .asm_11873
-	ld b, $1e
-.asm_11873
-	ld a, b
-	ld de, $2420
-	call Function3b2a
-	ret
-
-Function1187b: ; 1187b (4:587b)
-	ld a, $a
-	hlcoord 5, 6
-	jr Function11890
-
-Function11882: ; 11882 (4:5882)
-	ld a, $7
-	hlcoord 5, 6
-	jr Function11890
-
-Function11889: ; 11889 (4:5889)
-	ld a, $8
-	hlcoord 5, 4
-	jr Function11890
-
-Function11890: ; 11890 (4:5890)
-	ld [wc6d3], a
-	ld a, l
-	ld [wc6d8], a
-	ld a, h
-	ld [wc6d9], a
-	ret
-
-
-Function1189c: ; 1189c
-	push bc
-	push af
-	ld a, [wc6d4]
-	sub $3
-	ld b, a
-	pop af
-	dec b
-	pop bc
-	ret
-; 118a8
-
-Function118a8: ; 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 Function1189c
-	jr nz, .asm_118c4
-	lb bc, 4, 18
-
-.asm_118c4
-	call ClearBox
-	ld de, NameInputUpper
-Function118ca: ; 118ca
-	call Function1189c
-	jr nz, .asm_118d5
-	ld hl, BoxNameInputLower - NameInputLower
-	add hl, de
-	ld d, h
-	ld e, l
-
-.asm_118d5
-	push de
-	hlcoord 1, 8
-	lb bc, 7, 18
-	call Function1189c
-	jr nz, .asm_118e7
-	hlcoord 1, 6
-	lb bc, 9, 18
-
-.asm_118e7
-	call ClearBox
-	hlcoord 1, 16
-	lb bc, 1, 18
-	call ClearBox
-	pop de
-	hlcoord 2, 8
-	ld b, $5
-	call Function1189c
-	jr nz, .asm_11903
-	hlcoord 2, 6
-	ld b, $6
-
-.asm_11903
-	ld c, $11
-.asm_11905
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .asm_11905
-	push de
-	ld de, $0017
-	add hl, de
-	pop de
-	dec b
-	jr nz, .asm_11903
-	ret
-; 11915
-
-Function11915: ; 11915
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_11930
-	call Function11968
-	callba Function8cf62
-	call Function11940
-	call DelayFrame
-	and a
-	ret
-
-.asm_11930
-	callab Function8cf53
-	call ClearSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	scf
-	ret
-; 11940
-
-Function11940: ; 11940
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 1, 5
-	call Function1189c
-	jr nz, .asm_1194e
-	hlcoord 1, 3
-
-.asm_1194e
-	lb bc, 1, 18
-	call ClearBox
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, wc6d8
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-; 11968
-
-Function11968: ; 11968
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, $0
-	ld hl, Jumptable_11977
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11977
-
-
-Jumptable_11977: ; 11977 (4:5977)
-	dw Function1197b
-	dw Function119a1
-
-
-Function1197b: ; 1197b (4:597b)
-	lb de, $50, $18
-	call Function1189c
-	jr nz, .asm_11985
-	ld d, $40
-.asm_11985
-	ld a, $2
-	call Function3b2a
-	ld a, c
-	ld [wc6d5], a
-	ld a, b
-	ld [wc6d6], a
-	ld hl, $1
-	add hl, bc
-	ld a, [hl]
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Function119a1: ; 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 Function11a0b
-	cp $1
-	jr z, .select
-	cp $2
-	jr z, .b
-	cp $3
-	jr z, .asm_119eb
-	call Function11c11
-	call Function11b14
-	ret nc
-
-.start
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, $c
-	add hl, bc
-	ld [hl], $8
-	ld hl, $d
-	add hl, bc
-	ld [hl], $4
-	call Function1189c
-	ret nz
-	inc [hl]
-	ret
-
-.b
-	call Function11bbc
-	ret
-
-.asm_119eb
-	call Function11bf7
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.select
-	ld hl, wcf64
-	ld a, [hl]
-	xor 1
-	ld [hl], a
-	jr z, .asm_11a04
-	ld de, NameInputLower
-	call Function118ca
-	ret
-
-.asm_11a04
-	ld de, NameInputUpper
-	call Function118ca
-	ret
-
-Function11a0b: ; 11a0b (4:5a0b)
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-
-Function11a11: ; 11a11 (4:5a11)
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	push bc
-	ld b, $4
-	call Function1189c
-	jr nz, .asm_11a1f
-	inc b
-.asm_11a1f
-	cp b
-	pop bc
-	jr nz, .asm_11a39
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $3
-	jr c, .asm_11a33
-	cp $6
-	jr c, .asm_11a36
-	ld a, $3
-	ret
-.asm_11a33
-	ld a, $1
-	ret
-.asm_11a36
-	ld a, $2
-	ret
-.asm_11a39
-	xor a
-	ret
-
-Function11a3b: ; 11a3b (4:5a3b)
-	call Function11a8b
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	swap e
-	ld hl, $7
-	add hl, bc
-	ld [hl], e
-	ld d, $4
-	call Function1189c
-	jr nz, .asm_11a53
-	inc d
-.asm_11a53
-	cp d
-	ld de, Unknown_11a79
-	ld a, $0
-	jr nz, .asm_11a60
-	ld de, Unknown_11a82
-	ld a, $1
-.asm_11a60
-	ld hl, $e
-	add hl, bc
-	add [hl]
-	ld hl, $1
-	add hl, bc
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld l, [hl]
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-; 11a79 (4:5a79)
-
-Unknown_11a79: ; 11a79
-	db $00, $10, $20, $30, $40, $50, $60, $70, $80
-Unknown_11a82: ; 11a82
-	db $00, $00, $00, $30, $30, $30, $60, $60, $60
-; 11a8b
-
-Function11a8b: ; 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 Function11a11
-	and a
-	jr nz, .asm_11ab7
-	ld hl, $c
-	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, $c
-	add hl, bc
-	ld [hl], a
-	ret
-.left
-	call Function11a11
-	and a
-	jr nz, .asm_11ad8
-	ld hl, $c
-	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
-rept 2
-	dec a
-endr
-	ld e, a
-	add a
-	add e
-	ld hl, $c
-	add hl, bc
-	ld [hl], a
-	ret
-.down
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	call Function1189c
-	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, $d
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_11b0c
-	dec [hl]
-	ret
-.asm_11b0c
-	ld [hl], $4
-	call Function1189c
-	ret nz
-	inc [hl]
-	ret
-
-Function11b14: ; 11b14 (4:5b14)
-	ld a, [wc6d7]
-
-Function11b17: ; 11b17 (4:5b17)
-	ld a, [wc6d3]
-	ld c, a
-	ld a, [wc6d2]
-	cp c
-	ret nc
-
-	ld a, [wc6d7]
-
-Function11b23: ; 11b23
-	call Function11bd0
-	ld [hl], a
-
-Function11b27: ; 11b27
-	ld hl, wc6d2
-	inc [hl]
-	call Function11bd0
-	ld a, [hl]
-	cp $50
-	jr z, .asm_11b37
-	ld [hl], $f2
-	and a
-	ret
-.asm_11b37
-	scf
-	ret
-; 11b39 (4:5b39)
-
-Function11b39: ; 11b39
-	ld a, [wc6d2]
-	and a
-	ret z
-	push hl
-	ld hl, wc6d2
-	dec [hl]
-	call Function11bd0
-	ld c, [hl]
-	pop hl
-
-.asm_11b48
-	ld a, [hli]
-	cp $ff
-	jr z, Function11b27
-	cp c
-	jr z, .asm_11b53
-	inc hl
-	jr .asm_11b48
-
-.asm_11b53
-	ld a, [hl]
-	jr Function11b23
-; 11b56
-
-Dakutens: ; Dummied out
-	db "かが", "きぎ", "くぐ", "けげ", "こご"
-	db "さざ", "しじ", "すず", "せぜ", "そぞ"
-	db "ただ", "ちぢ", "つづ", "てで", "とど"
-	db "はば", "ひび", "ふぶ", "へべ", "ほぼ"
-	db "カガ", "キギ", "クグ", "ケゲ", "コゴ"
-	db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
-	db "タダ", "チヂ", "ツヅ", "テデ", "トド"
-	db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
-	db $ff
-
-Handakutens: ; Dummied out
-	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
-	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
-	db $ff
-; 11bbc
-
-Function11bbc: ; 11bbc (4:5bbc)
-	ld hl, wc6d2
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	call Function11bd0
-	ld [hl], $f2
-	inc hl
-	ld a, [hl]
-	cp $f2
-	ret nz
-	ld [hl], $eb
-	ret
-
-Function11bd0: ; 11bd0 (4:5bd0)
-	push af
-	ld hl, wc6d0
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wc6d2]
-	ld e, a
-	ld d, 0
-	add hl, de
-	pop af
-	ret
-; 11be0
-
-Function11be0: ; 11be0
-; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0
-	ld hl, wc6d0
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld [hl], "·"
-	inc hl
-	ld a, [wc6d3]
-	dec a
-	ld c, a
-	ld a, "→"
-.loop
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	ld [hl], "@"
-	ret
-; 11bf7
-
-
-Function11bf7: ; 11bf7 (4:5bf7)
-	ld hl, wc6d0
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wc6d3]
-	ld c, a
-.asm_11c01
-	ld a, [hl]
-	cp $eb
-	jr z, .asm_11c0a
-	cp $f2
-	jr nz, .asm_11c0c
-.asm_11c0a
-	ld [hl], $50
-.asm_11c0c
-	inc hl
-	dec c
-	jr nz, .asm_11c01
-	ret
-
-Function11c11: ; 11c11 (4:5c11)
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-	ld hl, $4
-	add hl, bc
-	add [hl]
-	sub $8
-	srl a
-	srl a
-	srl a
-	ld e, a
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	ld hl, $5
-	add hl, bc
-	add [hl]
-	sub $10
-	srl a
-	srl a
-	srl a
-	ld d, a
-	hlcoord 0, 0
-	ld bc, $14
-.asm_11c43
-	ld a, d
-	and a
-	jr z, .asm_11c4b
-	add hl, bc
-	dec d
-	jr .asm_11c43
-.asm_11c4b
-	add hl, de
-	ld a, [hl]
-	ld [wc6d7], a
-	ret
-
-
-Function11c51: ; 11c51
-	call ClearSprites
-	callab Function8cf53
-	call Functione51
-	call Functione5f
-
-	ld de, GFX_11e65
-	ld hl, VTiles1 tile $6b
-	lb bc, BANK(GFX_11e65), 1
-	call Get1bpp
-
-	ld de, GFX_11e6d
-	ld hl, VTiles1 tile $72
-	lb bc, BANK(GFX_11e6d), 1
-	call Get1bpp
-
-	ld de, VTiles2 tile $60
-	ld hl, GFX_11cb7
-	ld bc, $10
-	ld a, BANK(GFX_11cb7)
-	call FarCopyBytes
-
-	ld de, VTiles0 tile $7e
-	ld hl, GFX_11cc7
-	ld bc, $20
-	ld a, BANK(GFX_11cc7)
-	call FarCopyBytes
-
-	ld a, $5
-	ld hl, wc312
-	ld [hli], a
-	ld [hl], $7e
-	xor a
-	ld [hSCY], a
-	ld [wc3bf], a
-	ld [hSCX], a
-	ld [wc3c0], a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [hBGMapMode], a
-	ld [wc6d2], a
-	ld a, $7
-	ld [hWX], a
-	ret
-; 11cb7
-
-GFX_11cb7: ; 11cb7
-INCBIN "gfx/unknown/011cb7.2bpp"
-; 11cc7
-
-GFX_11cc7: ; 11cc7
-INCBIN "gfx/unknown/011cc7.2bpp"
-; 11ce7
-
-NameInputLower:
-	db "a b c d e f g h i"
-	db "j k l m n o p q r"
-	db "s t u v w x y z  "
-	db "× ( ) : ; [ ] <PK> <MN>"
-	db "UPPER  DEL   END "
-BoxNameInputLower:
-	db "a b c d e f g h i"
-	db "j k l m n o p q r"
-	db "s t u v w x y z  "
-	db "é 'd 'l 'm 'r 's 't 'v 0"
-	db "1 2 3 4 5 6 7 8 9"
-	db "UPPER  DEL   END "
-NameInputUpper: ; Unreferenced?
-	db "A B C D E F G H I"
-	db "J K L M N O P Q R"
-	db "S T U V W X Y Z  "
-	db "- ? ! / . ,      "
-	db "lower  DEL   END "
-BoxNameInputUpper:
-	db "A B C D E F G H I"
-	db "J K L M N O P Q R"
-	db "S T U V W X Y Z  "
-	db "× ( ) : ; [ ] <PK> <MN>"
-	db "- ? ! ♂ ♀ / . , &"
-	db "lower  DEL   END "
-; 11e5d
-
-GFX_11e5d: ; ????
-INCBIN "gfx/unknown/011e5d.2bpp"
-; 11e6d
-
-GFX_11e65:
-INCBIN "gfx/unknown/011e65.2bpp"
-; 11e6d
-
-GFX_11e6d: ; 11e6d
-INCBIN "gfx/unknown/011e6d.2bpp"
-; 11e75
-
 Function11e75: ; 11e75 (4:5e75)
 	ld hl, wc6d0
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld a, [hInMenu]
 	push af
 	ld a, $1
@@ -11428,11 +10401,11 @@
 	pop af
 	ld [hInMenu], a
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 
 Function11e9a: ; 11e9a (4:5e9a)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call Function11c51
 	ld de, VTiles0 tile $00
@@ -11452,7 +10425,7 @@
 	ld [hl], $0
 	call Function11f84
 	ld a, $e3
-	ld [rLCDC], a ; $ff00+$40
+	ld [rLCDC], a
 	call Function11f74
 	ld b, $8
 	call GetSGBLayout
@@ -11536,14 +10509,14 @@
 	callab Function8cf53
 	call ClearSprites
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	scf
 	ret
 
 Function11feb: ; 11feb (4:5feb)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	hlcoord 1, 1
 	lb bc, 4, 18
 	call ClearBox
@@ -11554,7 +10527,7 @@
 	hlcoord 2, 2
 	call PlaceString
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Function12008: ; 12008 (4:6008)
@@ -11888,7 +10861,7 @@
 	db "K L M N O P Q R S T"
 	db "U V W X Y Z   , ? !"
 	db "1 2 3 4 5 6 7 8 9 0"
-	db "ゅ ょ ", $70, " ", $71, " é ♂ ♀ ¥ … ×"
+	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
 	db "lower  DEL   END   "
 ; 1224f
 
@@ -11897,3011 +10870,33 @@
 	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 $72, " ", $73, " [ ] ' : ;      "
+	db "<``> <''> [ ] ' : ;      "
 	db "UPPER  DEL   END   "
 ; 122c1
 
-UnknownScript_0x122c1: ; 0x122c1
+Script_AbortBugContest: ; 0x122c1
 	checkflag ENGINE_BUG_CONTEST_TIMER
-	iffalse .script_122cd
+	iffalse .finish
 	setflag ENGINE_DAILY_BUG_CONTEST
 	special ContestReturnMons
-.script_122cd
+.finish
 	end
 ; 0x122ce
 
-FindItemInBallScript:: ; 0x122ce
-	callasm Function122f8
-	iffalse NoRoomForItemInBallScript
-	disappear LAST_TALKED
-	loadfont
-	writetext UnknownText_0x122ee
-	playsound SFX_ITEM
-	pause 60
-	itemnotify
-	loadmovesprites
-	end
-; 0x122e3
-
-NoRoomForItemInBallScript: ; 0x122e3
-	loadfont
-	writetext UnknownText_0x122ee
-	closetext
-	writetext UnknownText_0x122f3
-	closetext
-	loadmovesprites
-	end
-; 0x122ee
-
-UnknownText_0x122ee: ; 0x122ee
-	; found @ !
-	text_jump UnknownText_0x1c0a1c
-	db "@"
-; 0x122f3
-
-UnknownText_0x122f3: ; 0x122f3
-	; But   can't carry any more items.
-	text_jump UnknownText_0x1c0a2c
-	db "@"
-; 0x122f8
-
-Function122f8: ; 122f8
-	xor a
-	ld [ScriptVar], a
-	ld a, [EngineBuffer1]
-	ld [wd265], a
-	call GetItemName
-	ld hl, StringBuffer3
-	call CopyName2
-	ld a, [EngineBuffer1]
-	ld [CurItem], a
-	ld a, [CurFruit]
-	ld [wItemQuantityChangeBuffer], a
-	ld hl, NumItems
-	call ReceiveItem
-	ret nc
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-; 12324
-
-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
-	ret z
-	; The location of the healing machine relative to the player is stored in ScriptVar.
-	; 0: Up and left (Pokemon Center)
-	; 1: Left (Elm's Lab)
-	; 2: Up (Hall of Fame)
-	ld a, [ScriptVar]
-	ld [Buffer1], a
-	ld a, [rOBP1]
-	ld [Buffer2], a
-	call Function1233e
-	ld a, [Buffer2]
-	call Functiond24
-	ret
-; 1233e
-
-Function1233e: ; 1233e
-	xor a
-	ld [wd1ec], a
-.asm_12342
-	ld a, [Buffer1]
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_12365
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wd1ec]
-	ld e, a
-	inc a
-	ld [wd1ec], a
-	add hl, de
-	ld a, [hl]
-	cp 5
-	jr z, .asm_12364
-	ld hl, Jumptable_12377
-	rst JumpTable
-	jr .asm_12342
-
-.asm_12364
-	ret
-; 12365
-
-Unknown_12365: ; 12365
-	dw Unknown_1236b
-	dw Unknown_1236f
-	dw Unknown_12373
-; 1236b
-
-Unknown_1236b: ; 1236b
-	db 0, 1, 3, 5
-Unknown_1236f: ; 1236f
-	db 0, 1, 3, 5
-Unknown_12373: ; 12373
-	db 0, 2, 4, 5
-; 12377
-
-Jumptable_12377: ; 12377
-	dw Function12383
-	dw Function12393
-	dw Function123a1
-	dw Function123bf
-	dw Function123c8
-	dw Function123db
-; 12383
-
-Function12383: ; 12383
-	call Function12434
-	ld de, GFX_123fc
-	ld hl, VTiles0 tile $7c
-	lb bc, BANK(GFX_123fc), $2
-	call Request2bpp
-	ret
-; 12393
-
-Function12393: ; 12393
-	ld hl, Sprites + $80
-	ld de, Unknown_123dc
-	call Function124a3
-	call Function124a3
-	jr Function123a7
-
-Function123a1: ; 123a1
-	ld hl, Sprites + $80
-	ld de, Unknown_1241c
-
-Function123a7: ; 123a7
-	ld a, [PartyCount]
-	ld b, a
-.asm_123ab
-	call Function124a3
-	push de
-	ld de, SFX_SECOND_PART_OF_ITEMFINDER
-	call PlaySFX
-	pop de
-	ld c, 30
-	call DelayFrames
-	dec b
-	jr nz, .asm_123ab
-	ret
-; 123bf
-
-Function123bf: ; 123bf
-	ld de, MUSIC_HEAL
-	call PlayMusic
-	jp Function12459
-; 123c8
-
-Function123c8: ; 123c8
-	ld de, SFX_GAME_FREAK_LOGO_GS
-	call PlaySFX
-	call Function12459
-	call WaitSFX
-	ld de, SFX_BOOT_PC
-	call PlaySFX
-	ret
-; 123db
-
-Function123db: ; 123db
-	ret
-; 123dc
-
-Unknown_123dc: ; 123dc
-	db $20, $22, $7c, $16
-	db $20, $26, $7c, $16
-	db $26, $20, $7d, $16
-	db $26, $28, $7d, $36
-	db $2b, $20, $7d, $16
-	db $2b, $28, $7d, $36
-	db $30, $20, $7d, $16
-	db $30, $28, $7d, $36
-; 123fc
-
-GFX_123fc: ; 123fc
-INCBIN "gfx/unknown/0123fc.2bpp"
-; 1241c
-
-Unknown_1241c: ; 1241c
-	db $3c, $51, $7d, $16
-	db $3c, $56, $7d, $16
-	db $3b, $4d, $7d, $16
-	db $3b, $5a, $7d, $16
-	db $39, $49, $7d, $16
-	db $39, $5d, $7d, $16
-; 12434
-
-Function12434: ; 12434
-	call Function3218
-	jr nz, .asm_1243e
-	ld a, $e0
-	ld [rOBP1], a
-	ret
-
-.asm_1243e
-	ld hl, Palette_12451
-	ld de, OBPals + 8 * 6
-	ld bc, 8
-	ld a, $5
-	call FarCopyWRAM
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; 12451
-
-Palette_12451: ; 12451
-	RGB 31, 31, 31
-	RGB 31, 19, 10
-	RGB 31, 07, 01
-	RGB 00, 00, 00
-; 12459
-
-Function12459: ; 12459
-	ld c, $8
-.asm_1245b
-	push bc
-	call Function12469
-	ld c, $a
-	call DelayFrames
-	pop bc
-	dec c
-	jr nz, .asm_1245b
-	ret
-; 12469
-
-Function12469: ; 12469
-	call Function3218
-	jr nz, .asm_12475
-	ld a, [rOBP1]
-	xor $28
-	ld [rOBP1], a
-	ret
-
-.asm_12475
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, OBPals + 8 * 6
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	push de
-	ld c, $3
-.asm_12486
-	ld a, [hli]
-	ld e, a
-	ld a, [hld]
-	ld d, a
-	dec hl
-	ld a, d
-	ld [hld], a
-	ld a, e
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec c
-	jr nz, .asm_12486
-	pop de
-	dec hl
-	ld a, d
-	ld [hld], a
-	ld a, e
-	ld [hl], a
-	pop af
-	ld [rSVBK], a
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; 124a3
-
-Function124a3: ; 124a3
-	push bc
-	ld a, [Buffer1]
-	lb bc, $10, $20
-	cp $1
-	jr z, .asm_124b1
-	lb bc, $00, $00
-
-.asm_124b1
-	ld a, [de]
-	add c
-	inc de
-	ld [hli], a
-	ld a, [de]
-	add b
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	pop bc
-	ret
-; 124c1
-
-UnknownScript_0x124c1:: ; 0x124c1
-	callasm Function1250a
-	jump UnknownScript_0x124ce
-; 0x124c8
-
-UnknownScript_0x124c8:: ; 0x124c8
-	refreshscreen $0
-	callasm Function124fa
-
-UnknownScript_0x124ce: ; 0x124ce
-	writetext UnknownText_0x124f5
-	closetext
-	special FadeBlackBGMap
-	pause 40
-	special HealParty
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue .script_64f2
-	callasm HalveMoney
-	callasm Function12527
-	farscall UnknownScript_0x122c1
-	special WarpToSpawnPoint
-	newloadmap $f1
-	resetfuncs
-
-.script_64f2
-	jumpstd bugcontestresultswarp
-; 0x124f5
-
-UnknownText_0x124f5: ; 0x124f5
-	; is out of useable #MON!  whited out!
-	text_jump UnknownText_0x1c0a4e
-	db "@"
-; 0x124fa
-
-Function124fa: ; 124fa
-	call ClearPalettes
-	call ClearScreen
-	call Function3200
-	call HideSprites
-	call Function4f0
-	ret
-; 1250a
-
-Function1250a: ; 1250a
-	ld b, $0
-	call GetSGBLayout
-	call SetPalettes
-	ret
-; 12513
-
-HalveMoney: ; 12513
-
-; Empty function...
-	callba MobileFn_1060c7
-
-; Halve the player's money.
-	ld hl, Money
-	ld a, [hl]
-	srl a
-	ld [hli], a
-	ld a, [hl]
-	rra
-	ld [hli], a
-	ld a, [hl]
-	rra
-	ld [hl], a
-	ret
-; 12527
-
-
-Function12527: ; 12527
-	ld a, [wdcb2]
-	ld d, a
-	ld a, [wdcb3]
-	ld e, a
-	callba IsSpawnPoint
-	ld a, c
-	jr c, .yes
-	xor a
-
-.yes
-	ld [wd001], a
-	ret
-; 1253d
-
-Script_ForcedMovement:: ; 0x1253d
-	checkcode VAR_FACING
-	if_equal DOWN, UnknownScript_0x12555
-	if_equal UP, UnknownScript_0x12550
-	if_equal LEFT, UnknownScript_0x1255f
-	if_equal RIGHT, UnknownScript_0x1255a
-	end
-; 0x12550
-
-UnknownScript_0x12550: ; 0x12550
-	applymovement PLAYER, MovementData_0x12564
-	end
-; 0x12555
-
-UnknownScript_0x12555: ; 0x12555
-	applymovement PLAYER, MovementData_0x1256b
-	end
-; 0x1255a
-
-UnknownScript_0x1255a: ; 0x1255a
-	applymovement PLAYER, MovementData_0x12572
-	end
-; 0x1255f
-
-UnknownScript_0x1255f: ; 0x1255f
-	applymovement PLAYER, MovementData_0x12579
-	end
-; 0x12564
-
-MovementData_0x12564: ; 0x12564
-	step_wait5
-	big_step_down
-	turn_in_down
-	step_wait5
-	big_step_down
-	turn_head_down
-	step_end
-; 0x1256b
-
-MovementData_0x1256b: ; 0x1256b
-	step_wait5
-	big_step_down
-	turn_in_up
-	step_wait5
-	big_step_down
-	turn_head_up
-	step_end
-; 0x12572
-
-MovementData_0x12572: ; 0x12572
-	step_wait5
-	big_step_down
-	turn_in_left
-	step_wait5
-	big_step_down
-	turn_head_left
-	step_end
-; 0x12579
-
-MovementData_0x12579: ; 0x12579
-	step_wait5
-	big_step_down
-	turn_in_right
-	step_wait5
-	big_step_down
-	turn_head_right
-	step_end
-; 0x12580
-
-
-ItemFinder: ; 12580
-	callba CheckForSignpostItems
-	jr c, .asm_1258d
-	ld hl, UnknownScript_0x125ba
-	jr .asm_12590
-
-.asm_1258d
-	ld hl, UnknownScript_0x125ad
-
-.asm_12590
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 12599
-
-Function12599: ; 12599
-	ld c, $4
-.asm_1259b
-	push bc
-	ld de, SFX_SECOND_PART_OF_ITEMFINDER
-	call WaitPlaySFX
-	ld de, SFX_TRANSACTION
-	call WaitPlaySFX
-	pop bc
-	dec c
-	jr nz, .asm_1259b
-	ret
-; 125ad
-
-UnknownScript_0x125ad: ; 0x125ad
-	reloadmappart
-	special UpdateTimePals
-	callasm Function12599
-	writetext UnknownText_0x125c3
-	loadmovesprites
-	end
-; 0x125ba
-
-UnknownScript_0x125ba: ; 0x125ba
-	reloadmappart
-	special UpdateTimePals
-	writetext UnknownText_0x125c8
-	loadmovesprites
-	end
-; 0x125c3
-
-UnknownText_0x125c3: ; 0x125c3
-	; Yes! ITEMFINDER indicates there's an item nearby.
-	text_jump UnknownText_0x1c0a77
-	db "@"
-; 0x125c8
-
-UnknownText_0x125c8: ; 0x125c8
-	; Nope! ITEMFINDER isn't responding.
-	text_jump UnknownText_0x1c0aa9
-	db "@"
-; 0x125cd
-
-
-StartMenu:: ; 125cd
-
-	call ResetTextRelatedRAM
-
-	ld de, SFX_MENU
-	call PlaySFX
-
-	callba Function6454
-
-	ld hl, StatusFlags2
-	bit 2, [hl] ; bug catching contest
-	ld hl, .MenuDataHeader
-	jr z, .GotMenuData
-	ld hl, .ContestMenuDataHeader
-.GotMenuData
-
-	call LoadMenuDataHeader
-	call .SetUpMenuItems
-	ld a, [wd0d2]
-	ld [wMenuCursorBuffer], a
-	call .DrawMenuAccount_
-	call MenuFunc_1e7f
-	call .DrawBugContestStatusBox
-	call Function2e31
-	call Function2e20
-	callba Function64bf
-	call .DrawBugContestStatus
-	call UpdateTimePals
-	jr .Select
-
-.Reopen
-	call UpdateSprites
-	call UpdateTimePals
-	call .SetUpMenuItems
-	ld a, [wd0d2]
-	ld [wMenuCursorBuffer], a
-
-.Select
-	call .GetInput
-	jr c, .Exit
-	call .DrawMenuAccount
-	ld a, [wMenuCursorBuffer]
-	ld [wd0d2], a
-	call PlayClickSFX
-	call Function1bee
-	call .OpenMenu
-
-; Menu items have different return functions.
-; For example, saving exits the menu.
-	ld hl, .MenuReturns
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.MenuReturns
-	dw .Reopen
-	dw .Exit
-	dw .ExitMenuCallFuncLoadMoveSprites
-	dw .ExitMenuRunScriptLoadMoveSprites
-	dw .ExitMenuRunScript
-	dw .ReturnEnd
-	dw .ReturnRedraw
-
-.Exit
-	ld a, [hOAMUpdate]
-	push af
-	ld a, 1
-	ld [hOAMUpdate], a
-	call Functione5f
-	pop af
-	ld [hOAMUpdate], a
-.ReturnEnd
-	call ExitMenu
-.ReturnEnd2
-	call LoadMoveSprites
-	call UpdateTimePals
-	ret
-
-.GetInput
-; Return carry on exit, and no-carry on selection.
-	xor a
-	ld [hBGMapMode], a
-	call .DrawMenuAccount
-	call SetUpMenu
-	ld a, $ff
-	ld [MenuSelection], a
-.loop
-	call .PrintMenuAccount
-	call Function1f1a
-	ld a, [wcf73]
-	cp B_BUTTON
-	jr z, .b
-	cp A_BUTTON
-	jr z, .a
-	jr .loop
-.a
-	call PlayClickSFX
-	and a
-	ret
-.b
-	scf
-	ret
-; 12691
-
-.ExitMenuRunScript ; 12691
-	call ExitMenu
-	ld a, HMENURETURN_SCRIPT
-	ld [hMenuReturn], a
-	ret
-; 12699
-
-.ExitMenuRunScriptLoadMoveSprites ; 12699
-	call ExitMenu
-	ld a, HMENURETURN_SCRIPT
-	ld [hMenuReturn], a
-	jr .ReturnEnd2
-; 126a2
-
-.ExitMenuCallFuncLoadMoveSprites ; 126a2
-	call ExitMenu
-	ld hl, wQueuedScriptAddr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [wQueuedScriptBank]
-	rst FarCall
-	jr .ReturnEnd2
-; 126b1
-
-.ReturnRedraw ; 126b1
-	call .Clear
-	jp .Reopen
-; 126b7
-
-.Clear ; 126b7
-	call WhiteBGMap
-	call Call_ExitMenu
-	call Function2bae
-	call .DrawMenuAccount_
-	call MenuFunc_1e7f
-	call .DrawBugContestStatus
-	call UpdateSprites
-	call Functiond90
-	call Function2b5c
-	ret
-; 126d3
-
-
-.MenuDataHeader
-	db $40 ; tile backup
-	db 0, 10 ; start coords
-	db 17, 19 ; end coords
-	dw .MenuData
-	db 1 ; default selection
-
-.ContestMenuDataHeader
-	db $40 ; tile backup
-	db 2, 10 ; start coords
-	db 17, 19 ; end coords
-	dw .MenuData
-	db 1 ; default selection
-
-.MenuData
-	db %10101000 ; x padding, wrap around, start can close
-	dn 0, 0 ; rows, columns
-	dw MenuItemsList
-	dw .MenuString
-	dw .Items
-
-.Items
-	dw StartMenu_Pokedex,  .PokedexString,  .PokedexDesc
-	dw StartMenu_Pokemon,  .PartyString,    .PartyDesc
-	dw StartMenu_Pack,     .PackString,     .PackDesc
-	dw StartMenu_Status,   .StatusString,   .StatusDesc
-	dw StartMenu_Save,     .SaveString,     .SaveDesc
-	dw StartMenu_Option,   .OptionString,   .OptionDesc
-	dw StartMenu_Exit,     .ExitString,     .ExitDesc
-	dw StartMenu_Pokegear, .PokegearString, .PokegearDesc
-	dw StartMenu_Quit,     .QuitString,     .QuitDesc
-
-.PokedexString 	db "#DEX@"
-.PartyString   	db "#MON@"
-.PackString    	db "PACK@"
-.StatusString  	db "<PLAYER>@"
-.SaveString    	db "SAVE@"
-.OptionString  	db "OPTION@"
-.ExitString    	db "EXIT@"
-.PokegearString	db $24, "GEAR@"
-.QuitString    	db "QUIT@"
-
-.PokedexDesc  db   "#MON"
-              next "database@"
-
-.PartyDesc    db   "Party ", $4a
-              next "status@"
-
-.PackDesc     db   "Contains"
-              next "items@"
-
-.PokegearDesc db   "Trainer's"
-              next "key device@"
-
-.StatusDesc   db   "Your own"
-              next "status@"
-
-.SaveDesc     db   "Save your"
-              next "progress@"
-
-.OptionDesc   db   "Change"
-              next "settings@"
-
-.ExitDesc     db   "Close this"
-              next "menu@"
-
-.QuitDesc     db   "Quit and"
-              next "be judged.@"
-
-
-.OpenMenu ; 127e5
-	ld a, [MenuSelection]
-	call .GetMenuAccountTextPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 127ef
-
-.MenuString ; 127ef
-	push de
-	ld a, [MenuSelection]
-	call .GetMenuAccountTextPointer
-rept 2
-	inc hl
-endr
-	ld a, [hli]
-	ld d, [hl]
-	ld e, a
-	pop hl
-	call PlaceString
-	ret
-; 12800
-
-.MenuDesc ; 12800
-	push de
-	ld a, [MenuSelection]
-	cp $ff
-	jr z, .none
-	call .GetMenuAccountTextPointer
-rept 4
-	inc hl
-endr
-	ld a, [hli]
-	ld d, [hl]
-	ld e, a
-	pop hl
-	call PlaceString
-	ret
-.none
-	pop de
-	ret
-; 12819
-
-
-.GetMenuAccountTextPointer ; 12819
-	ld e, a
-	ld d, 0
-	ld hl, wcf97
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-rept 6
-	add hl, de
-endr
-	ret
-; 12829
-
-
-.SetUpMenuItems ; 12829
-	xor a
-	ld [wcf76], a
-	call .FillMenuList
-
-	ld hl, StatusFlags
-	bit 0, [hl]
-	jr z, .no_pokedex
-	ld a, 0 ; pokedex
-	call .AppendMenuList
-.no_pokedex
-
-	ld a, [PartyCount]
-	and a
-	jr z, .no_pokemon
-	ld a, 1 ; pokemon
-	call .AppendMenuList
-.no_pokemon
-
-	ld a, [wLinkMode]
-	and a
-	jr nz, .no_pack
-	ld hl, StatusFlags2
-	bit 2, [hl] ; bug catching contest
-	jr nz, .no_pack
-	ld a, 2 ; pack
-	call .AppendMenuList
-.no_pack
-
-	ld hl, wPokegearFlags
-	bit 7, [hl]
-	jr z, .no_pokegear
-	ld a, 7 ; pokegear
-	call .AppendMenuList
-.no_pokegear
-
-	ld a, 3 ; status
-	call .AppendMenuList
-
-	ld a, [wLinkMode]
-	and a
-	jr nz, .no_save
-	ld hl, StatusFlags2
-	bit 2, [hl] ; bug catching contest
-	ld a, 8 ; quit
-	jr nz, .write
-	ld a, 4 ; save
-.write
-	call .AppendMenuList
-.no_save
-
-	ld a, 5 ; option
-	call .AppendMenuList
-	ld a, 6 ; exit
-	call .AppendMenuList
-	ld a, c
-	ld [MenuItemsList], a
-	ret
-; 1288d
-
-
-.FillMenuList ; 1288d
-	xor a
-	ld hl, MenuItemsList
-	ld [hli], a
-	ld a, -1
-	ld bc, MenuItemsListEnd - (MenuItemsList + 1)
-	call ByteFill
-	ld de, MenuItemsList + 1
-	ld c, 0
-	ret
-; 128a0
-
-.AppendMenuList ; 128a0
-	ld [de], a
-	inc de
-	inc c
-	ret
-; 128a4
-
-.DrawMenuAccount_ ; 128a4
-	jp .DrawMenuAccount
-; 128a7
-
-.PrintMenuAccount ; 128a7
-	call .IsMenuAccountOn
-	ret z
-	call .DrawMenuAccount
-	decoord 0, 14
-	jp .MenuDesc
-; 128b4
-
-.DrawMenuAccount ; 128b4
-	call .IsMenuAccountOn
-	ret z
-	hlcoord 0, 13
-	lb bc, 5, 10
-	call ClearBox
-	hlcoord 0, 13
-	ld b, 3
-	ld c, 8
-	jp TextBoxPalette
-; 128cb
-
-.IsMenuAccountOn ; 128cb
-	ld a, [Options2]
-	and 1
-	ret
-; 128d1
-
-.DrawBugContestStatusBox ; 128d1
-	ld hl, StatusFlags2
-	bit 2, [hl] ; bug catching contest
-	ret z
-	callba Function24bdc
-	ret
-; 128de
-
-.DrawBugContestStatus ; 128de
-	ld hl, StatusFlags2
-	bit 2, [hl] ; bug catching contest
-	jr nz, .contest
-	ret
-.contest
-	callba Function24be7
-	ret
-; 128ed
-
-
-StartMenu_Exit: ; 128ed
-; Exit the menu.
-
-	ld a, 1
-	ret
-; 128f0
-
-
-StartMenu_Quit: ; 128f0
-; Retire from the bug catching contest.
-
-	ld hl, .EndTheContestText
-	call Function12cf5
-	jr c, .DontEndContest
-	ld a, BANK(BugCatchingContestReturnToGateScript)
-	ld hl, BugCatchingContestReturnToGateScript
-	call FarQueueScript
-	ld a, 4
-	ret
-
-.DontEndContest
-	ld a, 0
-	ret
-
-.EndTheContestText
-	text_jump UnknownText_0x1c1a6c
-	db "@"
-; 1290b
-
-
-StartMenu_Save: ; 1290b
-; Save the game.
-
-	call BufferScreen
-	callba Function14a1a
-	jr nc, .asm_12919
-	ld a, 0
-	ret
-.asm_12919
-	ld a, 1
-	ret
-; 1291c
-
-
-StartMenu_Option: ; 1291c
-; Game options.
-
-	call FadeToMenu
-	callba OptionsMenu
-	ld a, 6
-	ret
-; 12928
-
-
-StartMenu_Status: ; 12928
-; Player status.
-
-	call FadeToMenu
-	callba Function25105
-	call Function2b3c
-	ld a, 0
-	ret
-; 12937
-
-
-StartMenu_Pokedex: ; 12937
-
-	ld a, [PartyCount]
-	and a
-	jr z, .asm_12949
-
-	call FadeToMenu
-	callba Pokedex
-	call Function2b3c
-
-.asm_12949
-	ld a, 0
-	ret
-; 1294c
-
-
-StartMenu_Pokegear: ; 1294c
-
-	call FadeToMenu
-	callba Function90b8d
-	call Function2b3c
-	ld a, 0
-	ret
-; 1295b
-
-
-StartMenu_Pack: ; 1295b
-
-	call FadeToMenu
-	callba Pack
-	ld a, [wcf66]
-	and a
-	jr nz, .asm_12970
-	call Function2b3c
-	ld a, 0
-	ret
-.asm_12970
-	call Function2b4d
-	ld a, 4
-	ret
-; 12976
-
-
-StartMenu_Pokemon: ; 12976
-
-	ld a, [PartyCount]
-	and a
-	jr z, .return
-
-	call FadeToMenu
-
-.choosemenu
-	xor a
-	ld [PartyMenuActionText], a ; Choose a POKéMON.
-	call WhiteBGMap
-
-.menu
-	callba Function5004f
-	callba Function50405
-	callba Function503e0
-
-.menunoreload
-	callba WritePartyMenuTilemap
-	callba PrintPartyMenuText
-	call WaitBGMap
-	call SetPalettes ; load regular palettes?
-	call DelayFrame
-	callba PartyMenuSelect
-	jr c, .return ; if cancelled or pressed B
-
-	call PokemonActionSubmenu
-	cp 3
-	jr z, .menu
-	cp 0
-	jr z, .choosemenu
-	cp 1
-	jr z, .menunoreload
-	cp 2
-	jr z, .quit
-
-.return
-	call Function2b3c
-	ld a, 0
-	ret
-
-.quit
-	ld a, b
-	push af
-	call Function2b4d
-	pop af
-	ret
-; 129d5
-
-Function129d5: ; 129d5
-	ld a, [NumItems]
-	and a
-	ret nz
-	ld a, [NumKeyItems]
-	and a
-	ret nz
-	ld a, [NumBalls]
-	and a
-	ret nz
-	ld hl, TMsHMs
-	ld b, NUM_TMS + NUM_HMS
-.asm_129e9
-	ld a, [hli]
-	and a
-	jr nz, .asm_129f2
-	dec b
-	jr nz, .asm_129e9
-	scf
-	ret
-.asm_129f2
-	and a
-	ret
-
-Function129f4: ; 129f4
-	push de
-	call PartyMonItemName
-	callba _CheckTossableItem
-	ld a, [wItemAttributeParamBuffer]
-	and a
-	jr nz, .asm_12a3f
-	ld hl, UnknownText_0x12a45
-	call MenuTextBox
-	callba Function24fbf
-	push af
-	call WriteBackup
-	call ExitMenu
-	pop af
-	jr c, .asm_12a42
-	ld hl, UnknownText_0x12a4a
-	call MenuTextBox
-	call YesNoBox
-	push af
-	call ExitMenu
-	pop af
-	jr c, .asm_12a42
-	pop hl
-	ld a, [wd107]
-	call TossItem
-	call PartyMonItemName
-	ld hl, UnknownText_0x12a4f
-	call MenuTextBox
-	call ExitMenu
-	and a
-	ret
-.asm_12a3f
-	call Function12a54
-.asm_12a42
-	pop hl
-	scf
-	ret
-; 12a45 (4:6a45)
-
-UnknownText_0x12a45: ; 0x12a45
-	; Toss out how many @ (S)?
-	text_jump UnknownText_0x1c1a90
-	db "@"
-; 0x12a4a
-
-UnknownText_0x12a4a: ; 0x12a4a
-	; Throw away @ @ (S)?
-	text_jump UnknownText_0x1c1aad
-	db "@"
-; 0x12a4f
-
-UnknownText_0x12a4f: ; 0x12a4f
-	; Discarded @ (S).
-	text_jump UnknownText_0x1c1aca
-	db "@"
-; 0x12a54
-
-Function12a54: ; 12a54 (4:6a54)
-	ld hl, UnknownText_0x12a5b
-	call MenuTextBoxBackup
-	ret
-; 12a5b (4:6a5b)
-
-UnknownText_0x12a5b: ; 0x12a5b
-	; That's too impor- tant to toss out!
-	text_jump UnknownText_0x1c1adf
-	db "@"
-; 0x12a60
-
-CantUseItem: ; 12a60
-	ld hl, CantUseItemText
-	call Function2012
-	ret
-; 12a67
-
-CantUseItemText: ; 12a67
-	text_jump UnknownText_0x1c1b03
-	db "@"
-; 12a6c
-
-
-PartyMonItemName: ; 12a6c
-	ld a, [CurItem]
-	ld [wd265], a
-	call GetItemName
-	call CopyName1
-	ret
-; 12a79
-
-
-CancelPokemonAction: ; 12a79
-	callba Function50405
-	callba Function8ea71
-	ld a, 1
-	ret
-; 12a88
-
-
-PokemonActionSubmenu: ; 12a88
-	hlcoord 1, 15
-	lb bc, 2, 18
-	call ClearBox
-	callba Function24d19
-	call GetCurNick
-	ld a, [MenuSelection]
-	ld hl, .Actions
-	ld de, 3
-	call IsInArray
-	jr nc, .nothing
-
-	inc hl
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.nothing
-	ld a, 0
-	ret
-
-.Actions
-	dbw  1, Function12e1b ; Cut
-	dbw  2, Function12e30 ; Fly
-	dbw  3, Function12ebd ; Surf
-	dbw  4, Function12e6a ; Strength
-	dbw  6, Function12e55 ; Flash
-	dbw  7, Function12e7f ; Whirlpool
-	dbw  8, Function12ed1 ; Dig
-	dbw  9, Function12ea9 ; Teleport
-	dbw 10, Function12ee6 ; Softboiled
-	dbw 13, Function12ee6 ; MilkDrink
-	dbw 11, Function12f26 ; Headbutt
-	dbw  5, Function12e94 ; Waterfall
-	dbw 12, Function12f3b ; RockSmash
-	dbw 14, Function12f50 ; SweetScent
-	dbw 15, OpenPartyStats
-	dbw 16, SwitchPartyMons
-	dbw 17, GiveTakePartyMonItem
-	dbw 18, CancelPokemonAction
-	dbw 19, Function12fba ; move
-	dbw 20, MonMailAction ; mail
-; 12aec
-
-
-SwitchPartyMons: ; 12aec
-
-; Don't try if there's nothing to switch!
-	ld a, [PartyCount]
-	cp 2
-	jr c, .DontSwitch
-
-	ld a, [CurPartyMon]
-	inc a
-	ld [wd0e3], a
-
-	callba Function8ea8c
-	callba Function5042d
-
-	ld a, 4
-	ld [PartyMenuActionText], a
-	callba WritePartyMenuTilemap
-	callba PrintPartyMenuText
-
-	hlcoord 0, 1
-	ld bc, 20 * 2
-	ld a, [wd0e3]
-	dec a
-	call AddNTimes
-	ld [hl], "▷"
-	call WaitBGMap
-	call SetPalettes
-	call DelayFrame
-
-	callba PartyMenuSelect
-	bit 1, b
-	jr c, .DontSwitch
-
-	callba Function50f12
-
-	xor a
-	ld [PartyMenuActionText], a
-
-	callba Function5004f
-	callba Function50405
-	callba Function503e0
-
-	ld a, 1
-	ret
-
-.DontSwitch
-	xor a
-	ld [PartyMenuActionText], a
-	call CancelPokemonAction
-	ret
-; 12b60
-
-
-GiveTakePartyMonItem: ; 12b60
-
-; Eggs can't hold items!
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .asm_12ba6
-
-	ld hl, GiveTakeItemMenuData
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	call ExitMenu
-	jr c, .asm_12ba6
-
-	call GetCurNick
-	ld hl, StringBuffer1
-	ld de, wd050
-	ld bc, $b
-	call CopyBytes
-	ld a, [wcfa9]
-	cp 1
-	jr nz, .asm_12ba0
-
-	call LoadMenuDataHeader_0x1d75
-	call ClearPalettes
-	call Function12ba9
-	call ClearPalettes
-	call LoadFontsBattleExtra
-	call ExitMenu
-	ld a, 0
-	ret
-
-.asm_12ba0
-	call TakePartyItem
-	ld a, 3
-	ret
-
-.asm_12ba6
-	ld a, 3
-	ret
-; 12ba9
-
-
-Function12ba9: ; 12ba9
-
-	callba Function106a5
-
-.loop
-	callba Function106be
-
-	ld a, [wcf66]
-	and a
-	jr z, .quit
-
-	ld a, [wcf65]
-	cp 2
-	jr z, .next
-
-	call CheckTossableItem
-	ld a, [wItemAttributeParamBuffer]
-	and a
-	jr nz, .next
-
-	call Function12bd9
-	jr .quit
-
-.next
-	ld hl, CantBeHeldText
-	call MenuTextBoxBackup
-	jr .loop
-
-.quit
-	ret
-; 12bd9
-
-
-Function12bd9: ; 12bd9
-
-	call SpeechTextBox
-	call PartyMonItemName
-	call GetPartyItemLocation
-	ld a, [hl]
-	and a
-	jr z, .asm_12bf4
-
-	push hl
-	ld d, a
-	callba ItemIsMail
-	pop hl
-	jr c, .asm_12c01
-	ld a, [hl]
-	jr .asm_12c08
-
-.asm_12bf4
-	call Function12cea
-	ld hl, MadeHoldText
-	call MenuTextBoxBackup
-	call GivePartyItem
-	ret
-
-.asm_12c01
-	ld hl, PleaseRemoveMailText
-	call MenuTextBoxBackup
-	ret
-
-.asm_12c08
-	ld [wd265], a
-	call GetItemName
-	ld hl, SwitchAlreadyHoldingText
-	call Function12cf5
-	jr c, .asm_12c4b
-
-	call Function12cea
-	ld a, [wd265]
-	push af
-	ld a, [CurItem]
-	ld [wd265], a
-	pop af
-	ld [CurItem], a
-	call Function12cdf
-	jr nc, .asm_12c3c
-
-	ld hl, TookAndMadeHoldText
-	call MenuTextBoxBackup
-	ld a, [wd265]
-	ld [CurItem], a
-	call GivePartyItem
-	ret
-
-.asm_12c3c
-	ld a, [wd265]
-	ld [CurItem], a
-	call Function12cdf
-	ld hl, ItemStorageIsFullText
-	call MenuTextBoxBackup
-
-.asm_12c4b
-	ret
-; 12c4c
-
-
-GivePartyItem: ; 12c4c
-
-	call GetPartyItemLocation
-	ld a, [CurItem]
-	ld [hl], a
-	ld d, a
-	callba ItemIsMail
-	jr nc, .asm_12c5f
-	call Function12cfe
-
-.asm_12c5f
-	ret
-; 12c60
-
-
-TakePartyItem: ; 12c60
-
-	call SpeechTextBox
-	call GetPartyItemLocation
-	ld a, [hl]
-	and a
-	jr z, .asm_12c8c
-
-	ld [CurItem], a
-	call Function12cdf
-	jr nc, .asm_12c94
-
-	callba ItemIsMail
-	call GetPartyItemLocation
-	ld a, [hl]
-	ld [wd265], a
-	ld [hl], NO_ITEM
-	call GetItemName
-	ld hl, TookFromText
-	call MenuTextBoxBackup
-	jr .asm_12c9a
-
-.asm_12c8c
-	ld hl, IsntHoldingAnythingText
-	call MenuTextBoxBackup
-	jr .asm_12c9a
-
-.asm_12c94
-	ld hl, ItemStorageIsFullText
-	call MenuTextBoxBackup
-
-.asm_12c9a
-	ret
-; 12c9b
-
-
-GiveTakeItemMenuData: ; 12c9b
-	db %01010000
-	db 12, 12 ; start coords
-	db 17, 19 ; end coords
-	dw .Items
-	db 1 ; default option
-
-.Items
-	db %10000000 ; x padding
-	db 2 ; # items
-	db "GIVE@"
-	db "TAKE@"
-; 12caf
-
-
-TookAndMadeHoldText: ; 12caf
-	text_jump UnknownText_0x1c1b2c
-	db "@"
-; 12cb4
-
-MadeHoldText: ; 12cb4
-	text_jump UnknownText_0x1c1b57
-	db "@"
-; 12cb9
-
-PleaseRemoveMailText: ; 12cb9
-	text_jump UnknownText_0x1c1b6f
-	db "@"
-; 12cbe
-
-IsntHoldingAnythingText: ; 12cbe
-	text_jump UnknownText_0x1c1b8e
-	db "@"
-; 12cc3
-
-ItemStorageIsFullText: ; 12cc3
-	text_jump UnknownText_0x1c1baa
-	db "@"
-; 12cc8
-
-TookFromText: ; 12cc8
-	text_jump UnknownText_0x1c1bc4
-	db "@"
-; 12ccd
-
-SwitchAlreadyHoldingText: ; 12ccd
-	text_jump UnknownText_0x1c1bdc
-	db "@"
-; 12cd2
-
-CantBeHeldText: ; 12cd2
-	text_jump UnknownText_0x1c1c09
-	db "@"
-; 12cd7
-
-
-GetPartyItemLocation: ; 12cd7
-	push af
-	ld a, PartyMon1Item - PartyMon1
-	call GetPartyParamLocation
-	pop af
-	ret
-; 12cdf
-
-
-Function12cdf: ; 12cdf
-	ld a, $1
-	ld [wItemQuantityChangeBuffer], a
-	ld hl, NumItems
-	jp ReceiveItem
-; 12cea
-
-
-Function12cea: ; 12cea (4:6cea)
-	ld a, $1
-	ld [wItemQuantityChangeBuffer], a
-	ld hl, NumItems
-	jp TossItem
-
-Function12cf5: ; 12cf5
-	call MenuTextBox
-	call YesNoBox
-	jp ExitMenu
-; 12cfe
-
-
-Function12cfe: ; 12cfe (4:6cfe)
-	ld de, DefaultFlypoint
-	callba Function11e75
-	ld hl, PlayerName
-	ld de, wd023
-	ld bc, $a
-	call CopyBytes
-	ld hl, PlayerID
-	ld bc, $2
-	call CopyBytes
-	ld a, [CurPartySpecies]
-	ld [de], a
-	inc de
-	ld a, [CurItem]
-	ld [de], a
-	ld a, [CurPartyMon]
-	ld hl, s0_a600
-	ld bc, $2f
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld hl, DefaultFlypoint
-	ld bc, $2f
-	ld a, BANK(s0_a600)
-	call GetSRAMBank
-	call CopyBytes
-	call CloseSRAM
-	ret
-
-MonMailAction: ; 12d45
-; If in the time capsule or trade center,
-; selecting the mail only allows you to
-; read the mail.
-	ld a, [wLinkMode]
-	cp LINK_TIMECAPSULE
-	jr z, .read
-	cp LINK_TRADECENTER
-	jr z, .read
-
-; Show the READ/TAKE/QUIT menu.
-	ld hl, .MenuDataHeader
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	call ExitMenu
-
-; Interpret the menu.
-	jp c, .done
-	ld a, [wcfa9]
-	cp $1
-	jr z, .read
-	cp $2
-	jr z, .take
-	jp .done
-
-.read
-	callba ReadPartyMonMail
-	ld a, $0
-	ret
-
-.take
-	ld hl, .sendmailtopctext
-	call Function12cf5
-	jr c, .RemoveMailToBag
-	ld a, [CurPartyMon]
-	ld b, a
-	callba Function4456e
-	jr c, .MailboxFull
-	ld hl, .sentmailtopctext
-	call MenuTextBoxBackup
-	jr .done
-
-.MailboxFull
-	ld hl, .mailboxfulltext
-	call MenuTextBoxBackup
-	jr .done
-
-.RemoveMailToBag
-	ld hl, .mailwilllosemessagetext
-	call Function12cf5
-	jr c, .done
-	call GetPartyItemLocation
-	ld a, [hl]
-	ld [CurItem], a
-	call Function12cdf
-	jr nc, .BagIsFull
-	call GetPartyItemLocation
-	ld [hl], $0
-	call GetCurNick
-	ld hl, .tookmailfrommontext
-	call MenuTextBoxBackup
-	jr .done
-
-.BagIsFull
-	ld hl, .bagfulltext
-	call MenuTextBoxBackup
-	jr .done
-
-.done
-	ld a, $3
-	ret
-; 12dc9
-
-
-.MenuDataHeader: ; 0x12dc9
-	db $40 ; flags
-	db 10, 12 ; start coords
-	db 17, 19 ; end coords
-	dw .MenuData2
-	db 1 ; default option
-; 0x12dd1
-
-.MenuData2: ; 0x12dd1
-	db $80 ; flags
-	db 3 ; items
-	db "READ@"
-	db "TAKE@"
-	db "QUIT@"
-; 0x12de2
-
-
-.mailwilllosemessagetext: ; 0x12de2
-; The MAIL will lose its message. OK?
-	text_jump UnknownText_0x1c1c22
-	db "@"
-; 0x12de7
-
-.tookmailfrommontext: ; 0x12de7
-; MAIL detached from <POKEMON>.
-	text_jump UnknownText_0x1c1c47
-	db "@"
-; 0x12dec
-
-.bagfulltext: ; 0x12dec
-; There's no space for removing MAIL.
-	text_jump UnknownText_0x1c1c62
-	db "@"
-; 0x12df1
-
-.sendmailtopctext: ; 0x12df1
-; Send the removed MAIL to your PC?
-	text_jump UnknownText_0x1c1c86
-	db "@"
-; 0x12df6
-
-.mailboxfulltext: ; 0x12df6
-; Your PC's MAILBOX is full.
-	text_jump UnknownText_0x1c1ca9
-	db "@"
-; 0x12dfb
-
-.sentmailtopctext: ; 0x12dfb
-; The MAIL was sent to your PC.
-	text_jump UnknownText_0x1c1cc4
-	db "@"
-; 0x12e00
-
-
-OpenPartyStats: ; 12e00
-	call LoadMenuDataHeader_0x1d75
-	call ClearSprites
-; PartyMon
-	xor a
-	ld [MonType], a
-	call LowVolume
-	predef StatsScreenInit
-	call MaxVolume
-	call Call_ExitMenu
-	ld a, 0
-	ret
-; 12e1b
-
-
-Function12e1b: ; 12e1b
-	callba CutFunction
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12e2d
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12e2d
-	ld a, $3
-	ret
-; 12e30
-
-
-Function12e30: ; 12e30
-	callba FlyFunction
-	ld a, [wd0ec]
-	cp $2
-	jr z, .asm_12e4c
-	cp $0
-	jr z, .asm_12e4f
-	callba MobileFn_1060b5
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12e4c
-	ld a, $3
-	ret
-
-.asm_12e4f
-	ld a, $0
-	ret
-
-.asm_12e52
-	ld a, $1
-	ret
-; 12e55
-
-Function12e55: ; 12e55
-	callba Functionc8ac
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12e67
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12e67
-	ld a, $3
-	ret
-; 12e6a
-
-Function12e6a: ; 12e6a
-	callba StrengthFunction
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12e7c
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12e7c
-	ld a, $3
-	ret
-; 12e7f
-
-Function12e7f: ; 12e7f
-	callba WhirlpoolFunction
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12e91
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12e91
-	ld a, $3
-	ret
-; 12e94
-
-Function12e94: ; 12e94
-	callba Functioncade
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12ea6
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12ea6
-	ld a, $3
-	ret
-; 12ea9
-
-Function12ea9: ; 12ea9
-	callba TeleportFunction
-	ld a, [wd0ec]
-	and a
-	jr z, .asm_12eba
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12eba
-	ld a, $3
-	ret
-; 12ebd
-
-Function12ebd: ; 12ebd
-	callba SurfFunction
-	ld a, [wd0ec]
-	and a
-	jr z, .asm_12ece
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12ece
-	ld a, $3
-	ret
-; 12ed1
-
-Function12ed1: ; 12ed1
-	callba DigFunction
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12ee3
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12ee3
-	ld a, $3
-	ret
-; 12ee6
-
-Function12ee6: ; 12ee6
-	call Function12f05
-	jr nc, .asm_12ef3
-	callba Functionf3df
-	jr .asm_12ef9
-
-.asm_12ef3
-	ld hl, UnknownText_0x12f00
-	call PrintText
-
-.asm_12ef9
-	xor a
-	ld [PartyMenuActionText], a
-	ld a, $3
-	ret
-; 12f00
-
-UnknownText_0x12f00: ; 0x12f00
-	; Not enough HP!
-	text_jump UnknownText_0x1c1ce3
-	db "@"
-; 0x12f05
-
-Function12f05: ; 12f05
-	ld a, PartyMon1MaxHP - PartyMon1
-	call GetPartyParamLocation
-	ld a, [hli]
-	ld [hDividend + 0], a
-	ld a, [hl]
-	ld [hDividend + 1], a
-	ld a, $5
-	ld [hDivisor], a
-	ld b, $2
-	call Divide
-	ld a, PartyMon1HP + 1 - PartyMon1
-	call GetPartyParamLocation
-	ld a, [hQuotient + 2]
-	sub [hl]
-	dec hl
-	ld a, [hQuotient + 1]
-	sbc [hl]
-	ret
-; 12f26
-
-Function12f26: ; 12f26
-	callba HeadbuttFunction
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12f38
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12f38
-	ld a, $3
-	ret
-; 12f3b
-
-Function12f3b: ; 12f3b
-	callba RockSmashFunction
-	ld a, [wd0ec]
-	cp $1
-	jr nz, .asm_12f4d
-	ld b, $4
-	ld a, $2
-	ret
-
-.asm_12f4d
-	ld a, $3
-	ret
-; 12f50
-
-Function12f50: ; 12f50
-	callba DoMovementFunctionc
-	ld b, $4
-	ld a, $2
-	ret
-; 12f5b
-
-Function12f5b: ; 12f5b
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	call LoadFontsBattleExtra
-	call Function12f73
-	pop bc
-	ld a, b
-	ld [Options], a
-	push af
-	call WhiteBGMap
-	pop af
-	ret
-; 12f73
-
-Function12f73: ; 12f73
-	call Function13172
-	ld de, Unknown_12fb2
-	call Function1bb1
-	call Function131ef
-	ld hl, wcfa5
-	set 6, [hl]
-	jr Function12f93
-
-Function12f86: ; 12f86
-	call Function1bd3
-	bit 1, a
-	jp nz, Function12f9f
-	bit 0, a
-	jp nz, Function12f9c
-
-Function12f93: ; 12f93
-	call Function13235
-	call Function13256
-	jp Function12f86
-; 12f9c
-
-Function12f9c: ; 12f9c
-	and a
-	jr Function12fa0
-
-Function12f9f: ; 12f9f
-	scf
-
-Function12fa0: ; 12fa0
-	push af
-	xor a
-	ld [wd0e3], a
-	ld hl, wcfa5
-	res 6, [hl]
-	call ClearSprites
-	call ClearTileMap
-	pop af
-	ret
-; 12fb2
-
-Unknown_12fb2: ; 12fb2
-	db $03, $01, $03, $01, $40, $00, $20, $c3
-; 12fba
-
-Function12fba: ; 12fba
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .asm_12fd2
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	call Function12fd5
-	pop af
-	ld [Options], a
-	call WhiteBGMap
-
-.asm_12fd2
-	ld a, $0
-	ret
-; 12fd5
-
-Function12fd5: ; 12fd5
-	ld a, [CurPartyMon]
-	inc a
-	ld [wd0d8], a
-	call Function13172
-	call Function132d3
-	ld de, Unknown_13163
-	call Function1bb1
-.asm_12fe8
-	call Function131ef
-	ld hl, wcfa5
-	set 6, [hl]
-	jr .asm_13009
-
-.asm_12ff2
-	call Function1bd3
-	bit 1, a
-	jp nz, .asm_13038
-	bit 0, a
-	jp nz, .asm_130c6
-	bit 4, a
-	jp nz, .asm_1305b
-	bit 5, a
-	jp nz, .asm_13075
-
-.asm_13009
-	call Function13235
-	ld a, [wd0e3]
-	and a
-	jr nz, .asm_13018
-	call Function13256
-	jp .asm_12ff2
-
-.asm_13018
-	ld a, " "
-	hlcoord 1, 11
-	ld bc, 5
-	call ByteFill
-	hlcoord 1, 12
-	lb bc, 5, SCREEN_WIDTH - 2
-	call ClearBox
-	hlcoord 1, 12
-	ld de, String_1316b
-	call PlaceString
-	jp .asm_12ff2
-.asm_13038: ; 13038
-	call PlayClickSFX
-	call WaitSFX
-	ld a, [wd0e3]
-	and a
-	jp z, Function13154
-	ld a, [wd0e3]
-	ld [wcfa9], a
-	xor a
-	ld [wd0e3], a
-	hlcoord 1, 2
-	lb bc, 8, SCREEN_WIDTH - 2
-	call ClearBox
-	jp .asm_12fe8
-; 1305b
-
-.asm_1305b: ; 1305b
-	ld a, [wd0e3]
-	and a
-	jp nz, .asm_12ff2
-	ld a, [CurPartyMon]
-	ld b, a
-	push bc
-	call .asm_1308f
-	pop bc
-	ld a, [CurPartyMon]
-	cp b
-	jp z, .asm_12ff2
-	jp Function12fd5
-
-.asm_13075: ; 13075
-	ld a, [wd0e3]
-	and a
-	jp nz, .asm_12ff2
-	ld a, [CurPartyMon]
-	ld b, a
-	push bc
-	call .asm_130a7
-	pop bc
-	ld a, [CurPartyMon]
-	cp b
-	jp z, .asm_12ff2
-	jp Function12fd5
-
-.asm_1308f
-	ld a, [CurPartyMon]
-	inc a
-	ld [CurPartyMon], a
-	ld c, a
-	ld b, 0
-	ld hl, PartySpecies
-	add hl, bc
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_130a7
-	cp EGG
-	ret nz
-	jr .asm_1308f
-
-.asm_130a7
-	ld a, [CurPartyMon]
-	and a
-	ret z
-.asm_130ac
-	ld a, [CurPartyMon]
-	dec a
-	ld [CurPartyMon], a
-	ld c, a
-	ld b, 0
-	ld hl, PartySpecies
-	add hl, bc
-	ld a, [hl]
-	cp EGG
-	ret nz
-	ld a, [CurPartyMon]
-	and a
-	jr z, .asm_1308f
-	jr .asm_130ac
-; 130c6
-
-.asm_130c6: ; 130c6
-	call PlayClickSFX
-	call WaitSFX
-	ld a, [wd0e3]
-	and a
-	jr nz, .asm_130de
-	ld a, [wcfa9]
-	ld [wd0e3], a
-	call Function1bee
-	jp .asm_13018
-
-.asm_130de
-	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
-	ld a, [CurPartyMon]
-	call AddNTimes
-	push hl
-	call Function1313a
-	pop hl
-	ld bc, $0015
-	add hl, bc
-	call Function1313a
-	ld a, [wBattleMode]
-	jr z, .asm_13113
-	ld hl, BattleMonMoves
-	ld bc, $0020
-	ld a, [CurPartyMon]
-	call AddNTimes
-	push hl
-	call Function1313a
-	pop hl
-	ld bc, $0006
-	add hl, bc
-	call Function1313a
-
-.asm_13113
-	ld de, SFX_SWITCH_POKEMON
-	call PlaySFX
-	call WaitSFX
-	ld de, SFX_SWITCH_POKEMON
-	call PlaySFX
-	call WaitSFX
-	hlcoord 1, 2
-	lb bc, 8, 18
-	call ClearBox
-	hlcoord 10, 10
-	lb bc, 1, 9
-	call ClearBox
-	jp .asm_12fe8
-; 1313a
-
-Function1313a: ; 1313a
-	push hl
-	ld a, [wcfa9]
-	dec a
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld d, h
-	ld e, l
-	pop hl
-	ld a, [wd0e3]
-	dec a
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [de]
-	ld b, [hl]
-	ld [hl], a
-	ld a, b
-	ld [de], a
-	ret
-; 13154
-
-Function13154: ; 13154
-	xor a
-	ld [wd0e3], a
-	ld hl, wcfa5
-	res 6, [hl]
-	call ClearSprites
-	jp ClearTileMap
-; 13163
-
-Unknown_13163: ; 13163
-	db $03, $01, $03, $01, $40, $00, $20, $f3
-; 1316b
-
-String_1316b: ; 1316b
-	db "Where?@"
-; 13172
-
-Function13172: ; 13172
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	callba Functionfb571
-	callba InefficientlyClear121BytesAtwc300
-	ld a, [CurPartyMon]
-	ld e, a
-	ld d, $0
-	ld hl, PartySpecies
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-	ld e, $2
-	callba Function8e83f
-	hlcoord 0, 1
-	ld b, $9
-	ld c, $12
-	call TextBox
-	hlcoord 0, 11
-	ld b, $5
-	ld c, $12
-	call TextBox
-	hlcoord 2, 0
-	lb bc, 2, 3
-	call ClearBox
-	xor a
-	ld [MonType], a
-	ld hl, PartyMonNicknames
-	ld a, [CurPartyMon]
-	call GetNick
-	hlcoord 5, 1
-	call PlaceString
-	push bc
-	callba CopyPkmnToTempMon
-	pop hl
-	call PrintLevel
-	ld hl, PlayerHPPal
-	call SetHPPal
-	ld b, $e
-	call GetSGBLayout
-	hlcoord 16, 0
-	lb bc, 1, 3
-	jp ClearBox
-; 131ef
-
-Function131ef: ; 131ef
-	xor a
-	ld [hBGMapMode], a
-	ld [wd0e3], a
-	ld [MonType], a
-	predef CopyPkmnToTempMon
-	ld hl, TempMonMoves
-	ld de, wListMoves_MoveIndicesBuffer
-	ld bc, NUM_MOVES
-	call CopyBytes
-	ld a, SCREEN_WIDTH * 2
-	ld [Buffer1], a
-	hlcoord 2, 3
-	predef ListMoves
-	hlcoord 10, 4
-	predef Function50c50
-	call WaitBGMap
-	call SetPalettes
-	ld a, [wd0eb]
-	inc a
-	ld [wcfa3], a
-	hlcoord 0, 11
-	ld b, 5
-	ld c, 18
-	jp TextBox
-; 13235
-
-Function13235: ; 13235
-	ld hl, PartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld a, [wcfa9]
-	dec a
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [CurSpecies], a
-	hlcoord 1, 12
-	lb bc, 5, 18
-	jp ClearBox
-; 13256
-
-Function13256: ; 13256
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 10
-	ld de, String_132ba
-	call PlaceString
-	hlcoord 0, 11
-	ld de, String_132c2
-	call PlaceString
-	hlcoord 12, 12
-	ld de, String_132ca
-	call PlaceString
-	ld a, [CurSpecies]
-	ld b, a
-	hlcoord 2, 12
-	predef PrintMoveType
-	ld a, [CurSpecies]
-	dec a
-	ld hl, Moves + MOVE_POWER
-	ld bc, MOVE_LENGTH
-	call AddNTimes
-	ld a, BANK(Moves)
-	call GetFarByte
-	hlcoord 16, 12
-	cp $2
-	jr c, .asm_132a7
-	ld [wd265], a
-	ld de, wd265
-	lb bc, 1, 3
-	call PrintNum
-	jr .asm_132ad
-
-.asm_132a7
-	ld de, String_132cf
-	call PlaceString
-
-.asm_132ad
-	hlcoord 1, 14
-	predef PrintMoveDesc
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-; 132ba
-
-String_132ba: ; 132ba
-	db "┌─────┐@"
-; 132c2
-String_132c2: ; 132c2
-	db "│TYPE/└@"
-; 132ca
-String_132ca: ; 132ca
-	db "ATK/@"
-; 132cf
-String_132cf: ; 132cf
-	db "---@"
-; 132d3
-
-Function132d3: ; 132d3
-	call Function132da
-	call Function132fe
-	ret
-; 132da
-
-Function132da: ; 132da
-	ld a, [CurPartyMon]
-	and a
-	ret z
-	ld c, a
-	ld e, a
-	ld d, 0
-	ld hl, PartyCount
-	add hl, de
-.asm_132e7
-	ld a, [hl]
-	and a
-	jr z, .asm_132f3
-	cp EGG
-	jr z, .asm_132f3
-	cp NUM_POKEMON + 1
-	jr c, .asm_132f8
-
-.asm_132f3
-	dec hl
-	dec c
-	jr nz, .asm_132e7
-	ret
-
-.asm_132f8
-	hlcoord 16, 0
-	ld [hl], $71
-	ret
-; 132fe
-
-Function132fe: ; 132fe
-	ld a, [CurPartyMon]
-	inc a
-	ld c, a
-	ld a, [PartyCount]
-	cp c
-	ret z
-	ld e, c
-	ld d, 0
-	ld hl, PartySpecies
-	add hl, de
-.asm_1330f
-	ld a, [hl]
-	cp $ff
-	ret z
-	and a
-	jr z, .asm_1331e
-	cp EGG
-	jr z, .asm_1331e
-	cp NUM_POKEMON + 1
-	jr c, .asm_13321
-
-.asm_1331e
-	inc hl
-	jr .asm_1330f
-
-.asm_13321
-	hlcoord 18, 0
-	ld [hl], "▶"
-	ret
-; 13327
-
-
-SelectMenu:: ; 13327
-
-	call CheckRegisteredItem
-	jr c, .NotRegistered
-	jp UseRegisteredItem
-
-.NotRegistered
-	call LoadFont
-	ld b, BANK(ItemMayBeRegisteredText)
-	ld hl, ItemMayBeRegisteredText
-	call MapTextbox
-	call CloseText
-	jp LoadMoveSprites
-; 13340
-
-
-ItemMayBeRegisteredText: ; 13340
-	text_jump UnknownText_0x1c1cf3
-	db "@"
-; 13345
-
-
-CheckRegisteredItem: ; 13345
-
-	ld a, [WhichRegisteredItem]
-	and a
-	jr z, .NoRegisteredItem
-	and REGISTERED_POCKET
-	rlca
-	rlca
-	ld hl, .Pockets
-	rst JumpTable
-	ret
-
-.Pockets
-	dw .CheckItem
-	dw .CheckBall
-	dw .CheckKeyItem
-	dw .CheckTMHM
-
-.CheckItem
-	ld hl, NumItems
-	call .CheckRegisteredNo
-	jr c, .NoRegisteredItem
-	inc hl
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	call .IsSameItem
-	jr c, .NoRegisteredItem
-	and a
-	ret
-
-.CheckKeyItem
-	ld a, [RegisteredItem]
-	ld hl, KeyItems
-	ld de, 1
-	call IsInArray
-	jr nc, .NoRegisteredItem
-	ld a, [RegisteredItem]
-	ld [CurItem], a
-	and a
-	ret
-
-.CheckBall
-	ld hl, NumBalls
-	call .CheckRegisteredNo
-	jr nc, .NoRegisteredItem
-	inc hl
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	call .IsSameItem
-	jr c, .NoRegisteredItem
-	ret
-
-.CheckTMHM
-	jr .NoRegisteredItem
-
-.NoRegisteredItem
-	xor a
-	ld [WhichRegisteredItem], a
-	ld [RegisteredItem], a
-	scf
-	ret
-; 133a6
-
-
-.CheckRegisteredNo ; 133a6
-	ld a, [WhichRegisteredItem]
-	and REGISTERED_NUMBER
-	dec a
-	cp [hl]
-	jr nc, .NotEnoughItems
-	ld [wd107], a
-	and a
-	ret
-
-.NotEnoughItems
-	scf
-	ret
-; 133b6
-
-
-.IsSameItem ; 133b6
-	ld a, [RegisteredItem]
-	cp [hl]
-	jr nz, .NotSameItem
-	ld [CurItem], a
-	and a
-	ret
-
-.NotSameItem
-	scf
-	ret
-; 133c3
-
-
-UseRegisteredItem: ; 133c3
-
-	callba CheckItemMenu
-	ld a, [wItemAttributeParamBuffer]
-	ld hl, .SwitchTo
-	rst JumpTable
-	ret
-
-.SwitchTo
-	dw .CantUse
-	dw .NoFunction
-	dw .NoFunction
-	dw .NoFunction
-	dw .Current
-	dw .Party
-	dw .Overworld
-; 133df
-
-.NoFunction ; 133df
-	call LoadFont
-	call CantUseItem
-	call LoadMoveSprites
-	and a
-	ret
-; 133ea
-
-.Current ; 133ea
-	call LoadFont
-	call DoItemEffect
-	call LoadMoveSprites
-	and a
-	ret
-; 133f5
-
-.Party ; 133f5
-	call ResetWindow
-	call FadeToMenu
-	call DoItemEffect
-	call Function2b3c
-	call LoadMoveSprites
-	and a
-	ret
-; 13406
-
-.Overworld ; 13406
-	call ResetWindow
-	ld a, 1
-	ld [wd0ef], a
-	call DoItemEffect
-	xor a
-	ld [wd0ef], a
-	ld a, [wd0ec]
-	cp 1
-	jr nz, ._cantuse
-	scf
-	ld a, HMENURETURN_SCRIPT
-	ld [hMenuReturn], a
-	ret
-; 13422
-
-.CantUse ; 13422
-	call ResetWindow
-
-._cantuse
-	call CantUseItem
-	call LoadMoveSprites
-	and a
-	ret
-; 1342d
-
-
-Elevator:: ; 1342d
-	call Function1344a
-	call Function1347d
-	jr c, .asm_13448
-	ld [wd041], a
-	call Function134dd
-	jr c, .asm_13448
-	ld hl, wd041
-	cp [hl]
-	jr z, .asm_13448
-	call Function134c0
-	and a
-	ret
-
-.asm_13448
-	scf
-	ret
-; 1344a
-
-Function1344a: ; 1344a
-	ld a, b
-	ld [EngineBuffer1], a
-	ld a, e
-	ld [wd03f], a
-	ld a, d
-	ld [wd040], a
-	call Function1345a
-	ret
-; 1345a
-
-Function1345a: ; 1345a
-	ld de, OBPals + 8 * 6
-	ld bc, $0004
-	ld hl, wd03f
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [EngineBuffer1]
-	call GetFarByte
-	inc hl
-	ld [de], a
-	inc de
-.asm_1346f
-	ld a, [EngineBuffer1]
-	call GetFarByte
-	ld [de], a
-	inc de
-	add hl, bc
-	cp $ff
-	jr nz, .asm_1346f
-	ret
-; 1347d
-
-Function1347d: ; 1347d
-	ld hl, wd03f
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [EngineBuffer1]
-	call GetFarByte
-	ld c, a
-	inc hl
-	ld a, [BackupMapGroup]
-	ld d, a
-	ld a, [BackupMapNumber]
-	ld e, a
-	ld b, $0
-.asm_13495
-	ld a, [EngineBuffer1]
-	call GetFarByte
-	cp $ff
-	jr z, .asm_134be
-rept 2
-	inc hl
-endr
-	ld a, [EngineBuffer1]
-	call GetFarByte
-	inc hl
-	cp d
-	jr nz, .asm_134b7
-	ld a, [EngineBuffer1]
-	call GetFarByte
-	inc hl
-	cp e
-	jr nz, .asm_134b8
-	jr .asm_134bb
-
-.asm_134b7
-	inc hl
-
-.asm_134b8
-	inc b
-	jr .asm_13495
-
-.asm_134bb
-	xor a
-	ld a, b
-	ret
-
-.asm_134be
-	scf
-	ret
-; 134c0
-
-Function134c0: ; 134c0
-	push af
-	ld hl, wd03f
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	inc hl
-	pop af
-	ld bc, $0004
-	call AddNTimes
-	inc hl
-	ld de, wdcac
-	ld a, [EngineBuffer1]
-	ld bc, $0003
-	call FarCopyBytes
-	ret
-; 134dd
-
-Function134dd: ; 134dd
-	call LoadMenuDataHeader_0x1d75
-	ld hl, Elevator_WhichFloorText
-	call PrintText
-	call Elevator_GetCurrentFloorText
-	ld hl, Elevator_MenuDataHeader
-	call CopyMenuDataHeader
-	call Function352f
-	call UpdateSprites
-	xor a
-	ld [wd0e4], a
-	call Function350c
-	call WriteBackup
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_1350b
-	xor a
-	ld a, [wcf77]
-	ret
-
-.asm_1350b
-	scf
-	ret
-; 1350d
-
-Elevator_WhichFloorText: ; 0x1350d
-	; Which floor?
-	text_jump UnknownText_0x1bd2bc
-	db "@"
-; 0x13512
-
-
-Elevator_GetCurrentFloorText: ; 13512
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	hlcoord 0, 0
-	ld b, $4
-	ld c, $8
-	call TextBox
-	hlcoord 1, 2
-	ld de, Elevator_CurrentFloorText
-	call PlaceString
-	hlcoord 4, 4
-	call Elevator_GetCurrentFloorString
-	pop af
-	ld [Options], a
-	ret
-; 13537
-
-Elevator_CurrentFloorText: ; 13537
-	db "Now on:@"
-; 1353f
-
-
-Elevator_GetCurrentFloorString: ; 1353f
-	push hl
-	ld a, [wd041]
-	ld e, a
-	ld d, 0
-	ld hl, wd0f1
-	add hl, de
-	ld a, [hl]
-	pop de
-	call GetFloorString
-	ret
-; 13550
-
-Elevator_MenuDataHeader: ; 0x13550
-	db $40 ; flags
-	db 01, 12 ; start coords
-	db 09, 18 ; end coords
-	dw Elevator_MenuData2
-	db 1 ; default option
-; 0x13558
-
-Elevator_MenuData2: ; 0x13558
-	db $10 ; flags
-	db 4, 0 ; rows, columns
-	db 1 ; horizontal spacing
-	dbw 0, OBPals + 8 * 6
-	dba GetElevatorFlorStrings
-	dba NULL
-	dba NULL
-; 13568
-
-GetElevatorFlorStrings: ; 13568
-	ld a, [MenuSelection]
-
-GetFloorString: ; 1356b
-	push de
-	call FloorToString
-	ld d, h
-	ld e, l
-	pop hl
-	jp PlaceString
-; 13575
-
-FloorToString: ; 13575
-	push de
-	ld e, a
-	ld d, 0
-	ld hl, .floors
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop de
-	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 "event/itemball.asm"
+INCLUDE "engine/healmachineanim.asm"
+INCLUDE "event/whiteout.asm"
+INCLUDE "event/forced_movement.asm"
+INCLUDE "event/itemfinder.asm"
+INCLUDE "engine/startmenu.asm"
+INCLUDE "engine/selectmenu.asm"
+INCLUDE "event/elevator.asm"
 
-
 Special_GiveParkBalls: ; 135db
 	xor a
 	ld [wContestMon], a
 	ld a, 20
-	ld [wdc79], a
+	ld [wParkBallsRemaining], a
 	callba StartBugContestTimer
 	ret
 ; 135eb
@@ -14911,7 +10906,7 @@
 	battlecheck
 	startbattle
 	returnafterbattle
-	copybytetovar wdc79
+	copybytetovar wParkBallsRemaining
 	iffalse BugCatchingContestOutOfBallsScript
 	end
 ; 0x135f8
@@ -14949,13 +10944,13 @@
 
 RepelWoreOffScript:: ; 0x13619
 	loadfont
-	writetext UnknownText_0x13620
+	writetext .text
 	closetext
 	loadmovesprites
 	end
 ; 0x13620
 
-UnknownText_0x13620: ; 0x13620
+.text: ; 0x13620
 	; REPEL's effect wore off.
 	text_jump UnknownText_0x1bd308
 	db "@"
@@ -14963,34 +10958,34 @@
 
 SignpostItemScript:: ; 0x13625
 	loadfont
-	copybytetovar Unkn2Pals
+	copybytetovar EngineBuffer3
 	itemtotext 0, 0
-	writetext UnknownText_0x13645
-	giveitem -1, 1
-	iffalse UnknownScript_0x1363e
+	writetext .found_text
+	giveitem ITEM_FROM_MEM
+	iffalse .bag_full
 	callasm SetMemEvent
 	specialsound
 	itemnotify
-	jump UnknownScript_0x13643
+	jump .finish
 ; 0x1363e
 
-UnknownScript_0x1363e: ; 0x1363e
+.bag_full: ; 0x1363e
 	keeptextopen
-	writetext UnknownText_0x1364a
+	writetext .no_room_text
 	closetext
 
-UnknownScript_0x13643: ; 13643
+.finish: ; 13643
 	loadmovesprites
 	end
 ; 0x13645
 
-UnknownText_0x13645: ; 0x13645
+.found_text: ; 0x13645
 	; found @ !
 	text_jump UnknownText_0x1bd321
 	db "@"
 ; 0x1364a
 
-UnknownText_0x1364a: ; 0x1364a
+.no_room_text: ; 0x1364a
 	; But   has no space left…
 	text_jump UnknownText_0x1bd331
 	db "@"
@@ -15015,12 +11010,12 @@
 	jr nc, .notintable
 
 	ld a, jumpstd_command
-	ld [wd03f], a
+	ld [wJumpStdScriptBuffer], a
 	inc hl
 	ld a, [hli]
-	ld [wd03f + 1], a
+	ld [wJumpStdScriptBuffer + 1], a
 	ld a, [hli]
-	ld [wd03f + 2], a
+	ld [wJumpStdScriptBuffer + 2], a
 	ld a, BANK(Script_JumpStdFromRAM)
 	ld hl, Script_JumpStdFromRAM
 	call CallScript
@@ -15045,491 +11040,11 @@
 ; 1369a
 
 Script_JumpStdFromRAM: ; 0x1369a
-	jump wd03f
+	jump wJumpStdScriptBuffer
 ; 0x1369d
 
+INCLUDE "event/bug_contest_judging.asm"
 
-_BugContestJudging: ; 1369d
-	call ContestScore
-	callba MobileFn_105f79
-	call Function13819
-	ld a, [wd00a]
-	call LoadContestantName
-	ld a, [wd00b]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, BugContest_ThirdPlaceText
-	call PrintText
-	ld a, [EndFlypoint]
-	call LoadContestantName
-	ld a, [MovementBuffer]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, BugContest_SecondPlaceText
-	call PrintText
-	ld a, [DefaultFlypoint]
-	call LoadContestantName
-	ld a, [wd003]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, BugContest_FirstPlaceText
-	call PrintText
-	jp Function13807
-; 136eb
-
-BugContest_FirstPlaceText: ; 0x136eb
-	text_jump ContestJudging_FirstPlaceText
-	start_asm
-BugContest_FirstPlace: ; 136f0
-	ld de, SFX_1ST_PLACE
-	call PlaySFX
-	call WaitSFX
-	ld hl, BugContest_FirstPlaceScoreText
-	ret
-; 136fd
-
-BugContest_FirstPlaceScoreText: ; 0x136fd
-	; The winning score was @  points!
-	text_jump ContestJudging_FirstPlaceScoreText
-	db "@"
-; 0x13702
-
-BugContest_SecondPlaceText: ; 0x13702
-	; Placing second was @ , who caught a @ !@ @
-	text_jump ContestJudging_SecondPlaceText
-	start_asm
-BugContest_SecondPlace: ; 13707
-	ld de, SFX_2ND_PLACE
-	call PlaySFX
-	call WaitSFX
-	ld hl, BugContest_SecondPlaceScoreText
-	ret
-; 13714
-
-BugContest_SecondPlaceScoreText: ; 0x13714
-	; The score was @  points!
-	text_jump ContestJudging_SecondPlaceScoreText
-	db "@"
-; 0x13719
-
-BugContest_ThirdPlaceText: ; 0x13719
-	; Placing third was @ , who caught a @ !@ @
-	text_jump ContestJudging_ThirdPlaceText
-	start_asm
-; 0x1371e
-
-BugContest_ThirdPlace: ; 1371e
-	ld de, SFX_3RD_PLACE
-	call PlaySFX
-	call WaitSFX
-	ld hl, BugContest_ThirdPlaceScoreText
-	ret
-; 1372b
-
-BugContest_ThirdPlaceScoreText: ; 0x1372b
-	; The score was @  points!
-	text_jump ContestJudging_ThirdPlaceScoreText
-	db "@"
-; 0x13730
-
-LoadContestantName: ; 13730
-
-; If a = 0, get your name.
-	dec a
-	jr z, .done
-; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a.
-	ld c, a
-	ld b, 0
-	ld hl, BugContestantPointers
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-; Copy the Trainer Class to c.
-	ld a, [hli]
-	ld c, a
-; Save hl and bc for later.
-	push hl
-	push bc
-; Get the Trainer Class name and copy it into wd016.
-	callab GetTrainerClassName
-	ld hl, StringBuffer1
-	ld de, wd016
-	ld bc, TRAINER_CLASS_NAME_LENGTH
-	call CopyBytes
-	ld hl, wd016
-; Delete the trailing terminator and replace it with a space.
-.next
-	ld a, [hli]
-	cp "@"
-	jr nz, .next
-	dec hl
-	ld [hl], " "
-	inc hl
-	ld d, h
-	ld e, l
-; Restore the Trainer Class ID and Trainer ID pointer.  Save de for later.
-	pop bc
-	pop hl
-	push de
-; Get the name of the trainer with class c and ID b.
-	ld a, [hl]
-	ld b, a
-	callab GetTrainerName
-; Append the name to wd016.
-	ld hl, StringBuffer1
-	pop de
-	ld bc, NAME_LENGTH - 1
-	jp CopyBytes
-
-.done
-	ld hl, PlayerName
-	ld de, wd016
-	ld bc, NAME_LENGTH
-	jp CopyBytes
-; 13783
-
-BugContestantPointers: ; 13783
-	dw BugContestant_BugCatcherDon ; This reverts back to the player
-	dw BugContestant_BugCatcherDon
-	dw BugContestant_BugCatcherEd
-	dw BugContestant_CooltrainerMNick
-	dw BugContestant_PokefanMWilliam
-	dw BugContestant_BugCatcherBenny
-	dw BugContestant_CamperBarry
-	dw BugContestant_PicnickerCindy
-	dw BugContestant_BugCatcherJosh
-	dw BugContestant_YoungsterSamuel
-	dw BugContestant_SchoolboyKipp
-; 13799
-
-BugContestant_BugCatcherDon:
-	db BUG_CATCHER, DON
-	dbw KAKUNA,     300
-	dbw METAPOD,    285
-	dbw CATERPIE,   226
-
-BugContestant_BugCatcherEd:
-	db BUG_CATCHER, ED
-	dbw BUTTERFREE, 286
-	dbw BUTTERFREE, 251
-	dbw CATERPIE,   237
-
-BugContestant_CooltrainerMNick:
-	db COOLTRAINERM, NICK
-	dbw SCYTHER,    357
-	dbw BUTTERFREE, 349
-	dbw PINSIR,     368
-
-BugContestant_PokefanMWilliam:
-	db POKEFANM, WILLIAM
-	dbw PINSIR,     332
-	dbw BUTTERFREE, 324
-	dbw VENONAT,    321
-
-BugContestant_BugCatcherBenny:
-	db BUG_CATCHER, BUG_CATCHER_BENNY
-	dbw BUTTERFREE, 318
-	dbw WEEDLE,     295
-	dbw CATERPIE,   285
-
-BugContestant_CamperBarry:
-	db CAMPER, BARRY
-	dbw PINSIR,     366
-	dbw VENONAT,    329
-	dbw KAKUNA,     314
-
-BugContestant_PicnickerCindy:
-	db PICNICKER, CINDY
-	dbw BUTTERFREE, 341
-	dbw METAPOD,    301
-	dbw CATERPIE,   264
-
-BugContestant_BugCatcherJosh:
-	db BUG_CATCHER, JOSH
-	dbw SCYTHER,    326
-	dbw BUTTERFREE, 292
-	dbw METAPOD,    282
-
-BugContestant_YoungsterSamuel:
-	db YOUNGSTER, SAMUEL
-	dbw WEEDLE,     270
-	dbw PINSIR,     282
-	dbw CATERPIE,   251
-
-BugContestant_SchoolboyKipp:
-	db SCHOOLBOY, KIPP
-	dbw VENONAT,    267
-	dbw PARAS,      254
-	dbw KAKUNA,     259
-; 13807
-
-Function13807: ; 13807
-	ld hl, wd00a
-	ld de, -4
-	ld b, 3
-.loop
-	ld a, [hl]
-	cp 1
-	jr z, .done
-	add hl, de
-	dec b
-	jr nz, .loop
-
-.done
-	ret
-; 13819
-
-Function13819: ; 13819
-	call Function13833
-	call Function138b0
-	ld hl, wd00e
-	ld a, 1
-	ld [hli], a
-	ld a, [wContestMon]
-	ld [hli], a
-	ld a, [hProduct]
-	ld [hli], a
-	ld a, [hMultiplicand]
-	ld [hl], a
-	call Function1383e
-	ret
-; 13833
-
-Function13833: ; 13833
-	ld hl, DefaultFlypoint
-	ld b, 12
-	xor a
-.loop
-	ld [hli], a
-	dec b
-	jr nz, .loop
-	ret
-; 1383e
-
-Function1383e: ; 1383e
-	ld de, wd010
-	ld hl, wd004
-	ld c, 2
-	call StringCmp
-	jr c, .next
-	ld hl, EndFlypoint
-	ld de, wd00a
-	ld bc, $0004
-	call CopyBytes
-	ld hl, DefaultFlypoint
-	ld de, EndFlypoint
-	ld bc, 4
-	call CopyBytes
-	ld hl, DefaultFlypoint
-	call Function138a0
-	jr .done
-
-.next
-	ld de, wd010
-	ld hl, wd008
-	ld c, 2
-	call StringCmp
-	jr c, .next2
-	ld hl, EndFlypoint
-	ld de, wd00a
-	ld bc, 4
-	call CopyBytes
-	ld hl, EndFlypoint
-	call Function138a0
-	jr .done
-
-.next2
-	ld de, wd010
-	ld hl, wd00c
-	ld c, 2
-	call StringCmp
-	jr c, .done
-	ld hl, wd00a
-	call Function138a0
-
-.done
-	ret
-; 138a0
-
-Function138a0: ; 138a0
-	ld de, wd00e
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hl], a
-	ret
-; 138b0
-
-Function138b0: ; 138b0
-	ld e, 0
-.loop
-	push de
-	call Special_CheckBugContestContestantFlag
-	pop de
-	jr nz, .done
-	ld a, e
-rept 2
-	inc a
-endr
-	ld [wd00e], a
-	dec a
-	ld c, a
-	ld b, 0
-	ld hl, BugContestantPointers
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-rept 2
-	inc hl
-endr
-.loop2
-	call Random
-	and 3
-	cp 3
-	jr z, .loop2
-	ld c, a
-	ld b, 0
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	ld [wd00f], a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Random
-	and 7
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, h
-	ld [wd010], a
-	ld a, l
-	ld [wd011], a
-	push de
-	call Function1383e
-	pop de
-
-.done
-	inc e
-	ld a, e
-	cp 10
-	jr nz, .loop
-	ret
-; 13900
-
-ContestScore: ; 13900
-; Determine the player's score in the Bug Catching Contest.
-
-	xor a
-	ld [hProduct], a
-	ld [hMultiplicand], a
-
-	ld a, [wContestMonSpecies] ; Species
-	and a
-	jr z, .done
-
-	; Tally the following:
-
-	; Max HP * 4
-	ld a, [wContestMonMaxHP + 1]
-	call .AddContestStat
-	ld a, [wContestMonMaxHP + 1]
-	call .AddContestStat
-	ld a, [wContestMonMaxHP + 1]
-	call .AddContestStat
-	ld a, [wContestMonMaxHP + 1]
-	call .AddContestStat
-
-	; Stats
-	ld a, [wContestMonAttack  + 1]
-	call .AddContestStat
-	ld a, [wContestMonDefense + 1]
-	call .AddContestStat
-	ld a, [wContestMonSpeed   + 1]
-	call .AddContestStat
-	ld a, [wContestMonSpclAtk + 1]
-	call .AddContestStat
-	ld a, [wContestMonSpclDef + 1]
-	call .AddContestStat
-
-	; DVs
-	ld a, [wContestMonDVs + 0]
-	ld b, a
-	and 2
-rept 2
-	add a
-endr
-	ld c, a
-
-	swap b
-	ld a, b
-	and 2
-	add a
-	add c
-	ld d, a
-
-	ld a, [wContestMonDVs + 1]
-	ld b, a
-	and 2
-	ld c, a
-
-	swap b
-	ld a, b
-	and 2
-	srl a
-rept 2
-	add c
-endr
-rept 2
-	add d
-endr
-
-	call .AddContestStat
-
-	; Remaining HP / 8
-	ld a, [wContestMonHP + 1]
-	srl a
-	srl a
-	srl a
-	call .AddContestStat
-
-	; Whether it's holding an item
-	ld a, [wContestMonItem]
-	and a
-	jr z, .done
-
-	ld a, 1
-	call .AddContestStat
-
-.done
-	ret
-; 1397f
-
-.AddContestStat: ; 1397f
-	ld hl, hMultiplicand
-	add [hl]
-	ld [hl], a
-	ret nc
-	dec hl
-	inc [hl]
-	ret
-; 13988
-
 ; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
 ApplyPokerusTick: ; 13988
 	ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS
@@ -15553,7 +11068,7 @@
 	ld [hl], a
 
 .does_not_have_pokerus
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 	add hl, de
 	dec c
 	jr nz, .loop
@@ -15560,370 +11075,10 @@
 	ret
 ; 139a8
 
-Special_SelectRandomBugContestContestants: ; 139a8
-; Select five random people to participate in the current contest.
+INCLUDE "event/bug_contest_2.asm"
 
-; First we have to make sure that any old data is cleared away.
-	ld c, 10 ; Number of people to choose from.
-	ld hl, BugCatchingContestantEventFlagTable
-.loop1
-	push bc
-	push hl
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld b, RESET_FLAG
-	call EventFlagAction
-	pop hl
-rept 2
-	inc hl
-endr
-	pop bc
-	dec c
-	jr nz, .loop1
+INCLUDE "unknown/013a47.asm"
 
-; Now that that's out of the way, we can get on to the good stuff.
-	ld c, 5
-.loop2
-	push bc
-.next
-; Choose a flag at uniform random to be set.
-	call Random
-	cp $fa ; 250
-	jr nc, .next
-	ld c, $19 ; 25
-	call SimpleDivide
-	ld e, b
-	ld d, 0
-	ld hl, BugCatchingContestantEventFlagTable
-rept 2
-	add hl, de
-endr
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	push de
-; If we've already set it, it doesn't count.
-	ld b, CHECK_FLAG
-	call EventFlagAction
-	pop de
-	ld a, c
-	and a
-	jr nz, .next
-; Set the flag.  This will cause that sprite to not be visible in the contest.
-	ld b, SET_FLAG
-	call EventFlagAction
-	pop bc
-; Check if we're done.  If so, return.  Otherwise, choose the next victim.
-	dec c
-	jr nz, .loop2
-	ret
-; 139ed
-
-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.
-
-	ld hl, BugCatchingContestantEventFlagTable
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld b, CHECK_FLAG
-	call EventFlagAction
-	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
-
-CheckFirstMonFainted: ; 13a12
-	ld hl, PartyMon1HP
-	ld a, [hli]
-	or [hl]
-	jr z, .fainted
-	ld hl, PartyCount
-	ld a, 1
-	ld [hli], a
-	inc hl
-	ld a, [hl]
-	ld [wdf9b], a
-	ld [hl], $ff
-	xor a
-	ld [ScriptVar], a
-	ret
-
-.fainted
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-; 13a31
-
-ContestReturnMons: ; 13a31
-	ld hl, PartySpecies + 1
-	ld a, [wdf9b]
-	ld [hl], a
-	ld b, $1
-.asm_13a3a
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_13a42
-	inc b
-	jr .asm_13a3a
-
-.asm_13a42
-	ld a, b
-	ld [PartyCount], a
-	ret
-; 13a47
-
-Function13a47: ; unreferenced
-	ld hl, PartyCount
-	ld a, [hl]
-	and a
-	ret z
-
-	cp PARTY_LENGTH + 1
-	jr c, .asm_13a54
-	ld a, PARTY_LENGTH
-	ld [hl], a
-.asm_13a54
-	inc hl
-
-	ld b, a
-	ld c, 0
-.asm_13a58
-	ld a, [hl]
-	and a
-	jr z, .asm_13a64
-	cp $fc
-	jr z, .asm_13a64
-	cp $fe
-	jr c, .asm_13a73
-
-.asm_13a64
-	ld [hl], SMEARGLE
-	push hl
-	push bc
-	ld a, c
-	ld hl, PartyMon1Species
-	call GetPartyLocation
-	ld [hl], SMEARGLE
-	pop bc
-	pop hl
-
-.asm_13a73
-	inc hl
-	inc c
-	dec b
-	jr nz, .asm_13a58
-	ld [hl], $ff
-
-	ld hl, PartyMon1
-	ld a, [PartyCount]
-	ld d, a
-	ld e, 0
-.asm_13a83
-	push de
-	push hl
-	ld b, h
-	ld c, l
-	ld a, [hl]
-	and a
-	jr z, .asm_13a8f
-	cp NUM_POKEMON + 1
-	jr c, .asm_13a9c
-
-.asm_13a8f
-	ld [hl], SMEARGLE
-	push de
-	ld d, 0
-	ld hl, PartySpecies
-	add hl, de
-	pop de
-	ld a, SMEARGLE
-	ld [hl], a
-
-.asm_13a9c
-	ld [CurSpecies], a
-	call GetBaseData
-	ld hl, PartyMon1Level - PartyMon1
-	add hl, bc
-	ld a, [hl]
-	cp MIN_LEVEL
-	ld a, MIN_LEVEL
-	jr c, .asm_13ab4
-	ld a, [hl]
-	cp MAX_LEVEL
-	jr c, .asm_13ab5
-	ld a, MAX_LEVEL
-.asm_13ab4
-	ld [hl], a
-.asm_13ab5
-	ld [CurPartyLevel], a
-
-	ld hl, PartyMon1MaxHP - PartyMon1
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, PartyMon1Exp + 2 - PartyMon1
-	add hl, bc
-	ld b, $1
-	predef CalcPkmnStats
-	pop hl
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop de
-	inc e
-	dec d
-	jr nz, .asm_13a83
-
-	ld de, PartyMonNicknames
-	ld a, [PartyCount]
-	ld b, a
-	ld c, 0
-.asm_13adc
-	push bc
-	call Function13b71
-	push de
-	callba Function17d073
-	pop hl
-	pop bc
-	jr nc, .asm_13b0e
-
-	push bc
-	push hl
-	ld hl, PartySpecies
-	push bc
-	ld b, 0
-	add hl, bc
-	pop bc
-	ld a, [hl]
-	cp EGG
-	ld hl, String_13b6b
-	jr z, .asm_13b06
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-.asm_13b06
-	pop de
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	pop bc
-
-.asm_13b0e
-	inc c
-	dec b
-	jr nz, .asm_13adc
-
-	ld de, PartyMonOT
-	ld a, [PartyCount]
-	ld b, a
-	ld c, 0
-.asm_13b1b
-	push bc
-	call Function13b71
-	push de
-	callba Function17d073
-	pop hl
-	jr nc, .asm_13b34
-	ld d, h
-	ld e, l
-	ld hl, PlayerName
-	ld bc, $000b
-	call CopyBytes
-.asm_13b34
-	pop bc
-	inc c
-	dec b
-	jr nz, .asm_13b1b
-
-	ld hl, PartyMon1Moves
-	ld a, [PartyCount]
-	ld b, a
-.asm_13b40
-	push hl
-	ld c, NUM_MOVES
-	ld a, [hl]
-	and a
-	jr z, .asm_13b4b
-	cp NUM_ATTACKS + 1
-	jr c, .asm_13b4d
-.asm_13b4b
-	ld [hl], POUND
-
-.asm_13b4d
-	ld a, [hl]
-	and a
-	jr z, .asm_13b55
-	cp NUM_ATTACKS + 1
-	jr c, .asm_13b5c
-
-.asm_13b55
-	xor a
-	ld [hli], a
-	dec c
-	jr nz, .asm_13b55
-	jr .asm_13b60
-
-.asm_13b5c
-	inc hl
-	dec c
-	jr nz, .asm_13b4d
-
-.asm_13b60
-	pop hl
-	push bc
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_13b40
-	ret
-; 13b6b
-
-String_13b6b: ; 13b6b
-	db "タマゴ@@@"
-; 13b71
-
-Function13b71: ; 13b71
-	push de
-	ld c, 1
-	ld b, 6
-.asm_13b76
-	ld a, [de]
-	cp "@"
-	jr z, .asm_13b85
-	inc de
-	inc c
-	dec b
-	jr nz, .asm_13b76
-	dec c
-	dec de
-	ld a, "@"
-	ld [de], a
-
-.asm_13b85
-	pop de
-	ret
-; 13b87
-
-
 GetSquareRoot: ; 13b87
 ; Return the square root of de in b.
 
@@ -16066,10 +11221,12 @@
 	call GetClock
 	call Function1409b
 	call FixDays
-	jr nc, .asm_14097
-	call Function6d3
+	jr nc, .skip_set
+	; bit 5: Day count exceeds 139
+	; bit 6: Day count exceeds 255
+	call Function6d3 ; set flag on s0_ac60
 
-.asm_14097
+.skip_set
 	call StartRTC
 	ret
 ; 1409b
@@ -16077,15 +11234,16 @@
 Function1409b: ; 1409b
 	ld hl, hRTCDayHi
 	bit 7, [hl]
-	jr nz, .asm_140a8
+	jr nz, .set_bit_7
 	bit 6, [hl]
-	jr nz, .asm_140a8
+	jr nz, .set_bit_7
 	xor a
 	ret
 
-.asm_140a8
-	ld a, $80
-	call Function6d3
+.set_bit_7
+	; Day count exceeds 16383
+	ld a, %10000000
+	call Function6d3 ; set bit 7 on s0_ac60
 	ret
 ; 140ae
 
@@ -16092,12 +11250,12 @@
 Function140ae: ; 140ae
 	call Function6e3
 	ld c, a
-	and %11000000
-	jr nz, .asm_140c8
+	and %11000000 ; Day count exceeded 255 or 16383
+	jr nz, .time_overflow
 
 	ld a, c
-	and %00100000
-	jr z, .asm_140eb
+	and %00100000 ; Day count exceeded 139
+	jr z, .dont_update
 
 	call UpdateTime
 	ld a, [wRTC + 0]
@@ -16104,11 +11262,12 @@
 	ld b, a
 	ld a, [CurDay]
 	cp b
-	jr c, .asm_140eb
+	jr c, .dont_update
 
-.asm_140c8
+.time_overflow
 	callba ClearDailyTimers
 	callba Function170923
+; mobile
 	ld a, $5
 	call GetSRAMBank
 	ld a, [$aa8c]
@@ -16120,7 +11279,7 @@
 	call CloseSRAM
 	ret
 
-.asm_140eb
+.dont_update
 	xor a
 	ret
 ; 140ed
@@ -16173,1519 +11332,8 @@
 	ret
 ; 1412a
 
-GetEmote2bpp: ; 1412a
-	ld a, $1
-	ld [rVBK], a
-	call Get2bpp
-	xor a
-	ld [rVBK], a
-	ret
-; 14135
+INCLUDE "engine/sprites.asm"
 
-Function14135:: ; 14135
-	call GetPlayerSprite
-	ld a, [UsedSprites]
-	ld [hUsedSpriteIndex], a
-	ld a, [UsedSprites + 1]
-	ld [hUsedSpriteTile], a
-	call Function143c8
-	ret
-; 14146
-
-Function14146: ; 14146
-	ld hl, wd13e
-	ld a, [hl]
-	push af
-	res 7, [hl]
-	set 6, [hl]
-	call RunCallback_04
-	pop af
-	ld [wd13e], a
-	ret
-; 14157
-
-Function14157: ; 14157
-	ld hl, wd13e
-	ld a, [hl]
-	push af
-	set 7, [hl]
-	res 6, [hl]
-	call RunCallback_04
-	pop af
-	ld [wd13e], a
-	ret
-; 14168
-
-
-Function14168:: ; 14168
-	call Function1416f
-	call RunCallback_04
-	ret
-; 1416f
-
-Function1416f: ; 1416f
-	xor a
-	ld bc, $0040
-	ld hl, UsedSprites
-	call ByteFill
-	call GetPlayerSprite
-	call AddMapSprites
-	call Function142db
-	ret
-; 14183
-
-
-
-GetPlayerSprite: ; 14183
-; Get Chris or Kris's sprite.
-
-	ld hl, .Chris
-	ld a, [wPlayerSpriteSetupFlags]
-	bit 2, a
-	jr nz, .go
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .go
-	ld hl, .Kris
-
-.go
-	ld a, [PlayerState]
-	ld c, a
-.loop
-	ld a, [hli]
-	cp c
-	jr z, .asm_141ac
-	inc hl
-	cp $ff
-	jr nz, .loop
-
-; Any player state not in the array defaults to Chris's sprite.
-	xor a ; ld a, PLAYER_NORMAL
-	ld [PlayerState], a
-	ld a, SPRITE_CHRIS
-	jr .asm_141ad
-
-.asm_141ac
-	ld a, [hl]
-
-.asm_141ad
-	ld [UsedSprites + 0], a
-	ld [PlayerStruct + 0], a
-	ld [MapObjects + OBJECT_LENGTH * 0 + 1], a
-	ret
-
-.Chris
-	db PLAYER_NORMAL,    SPRITE_CHRIS
-	db PLAYER_BIKE,      SPRITE_CHRIS_BIKE
-	db PLAYER_SURF,      SPRITE_SURF
-	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
-	db $ff
-
-.Kris
-	db PLAYER_NORMAL,    SPRITE_KRIS
-	db PLAYER_BIKE,      SPRITE_KRIS_BIKE
-	db PLAYER_SURF,      SPRITE_SURF
-	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
-	db $ff
-; 141c9
-
-
-AddMapSprites: ; 141c9
-	call GetMapPermission
-	call CheckOutdoorMap
-	jr z, .outdoor
-	call AddIndoorSprites
-	ret
-.outdoor
-	call AddOutdoorSprites
-	ret
-; 141d9
-
-
-AddIndoorSprites: ; 141d9
-	ld hl, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite
-	ld a, 1
-.loop
-	push af
-	ld a, [hl]
-	call AddSpriteGFX
-	ld de, OBJECT_LENGTH
-	add hl, de
-	pop af
-	inc a
-	cp NUM_OBJECTS
-	jr nz, .loop
-	ret
-; 141ee
-
-
-AddOutdoorSprites: ; 141ee
-	ld a, [MapGroup]
-	dec a
-	ld c, a
-	ld b, 0
-	ld hl, OutdoorSprites
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld c, $17
-.loop
-	push bc
-	ld a, [hli]
-	call AddSpriteGFX
-	pop bc
-	dec c
-	jr nz, .loop
-	ret
-; 14209
-
-
-RunCallback_04: ; 14209
-	ld a, $4
-	call RunMapCallback
-	call Function1439b
-	call Function14215
-	ret
-; 14215
-
-Function14215: ; 14215
-	ld a, [wd13e]
-	bit 6, a
-	ret nz
-	ld c, $8
-	callba LoadEmote
-	call GetMapPermission
-	call CheckOutdoorMap
-	ld c, $b
-	jr z, .asm_1422f
-	ld c, $a
-
-.asm_1422f
-	callba LoadEmote
-	ret
-; 14236
-
-
-
-SafeGetSprite: ; 14236
-	push hl
-	call GetSprite
-	pop hl
-	ret
-; 1423c
-
-GetSprite: ; 1423c
-	call GetMonSprite
-	ret c
-
-	ld hl, SpriteHeaders ; address
-	dec a
-	ld c, a
-	ld b, 0
-	ld a, 6
-	call AddNTimes
-	; load the address into de
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	; load the length into c
-	ld a, [hli]
-	swap a
-	ld c, a
-	; load the sprite bank into both b and h
-	ld b, [hl]
-	ld a, [hli]
-	; load the sprite type into l
-	ld l, [hl]
-	ld h, a
-	ret
-; 14259
-
-
-GetMonSprite: ; 14259
-; Return carry if a monster sprite was loaded.
-
-	cp SPRITE_POKEMON
-	jr c, .Normal
-	cp SPRITE_DAYCARE_MON_1
-	jr z, .wBreedMon1
-	cp SPRITE_DAYCARE_MON_2
-	jr z, .wBreedMon2
-	cp SPRITE_VARS
-	jr nc, .Variable
-	jr .Icon
-
-.Normal
-	and a
-	ret
-
-.Icon
-	sub SPRITE_POKEMON
-	ld e, a
-	ld d, 0
-	ld hl, SpriteMons
-	add hl, de
-	ld a, [hl]
-	jr .Mon
-
-.wBreedMon1
-	ld a, [wBreedMon1Species]
-	jr .Mon
-
-.wBreedMon2
-	ld a, [wBreedMon2Species]
-
-.Mon
-	ld e, a
-	and a
-	jr z, .NoBreedmon
-
-	callba Function8e82b
-
-	ld l, 1
-	ld h, 0
-	scf
-	ret
-
-.Variable
-	sub SPRITE_VARS
-	ld e, a
-	ld d, 0
-	ld hl, VariableSprites
-	add hl, de
-	ld a, [hl]
-	and a
-	jp nz, GetMonSprite
-
-.NoBreedmon
-	ld a, 1
-	ld l, 1
-	ld h, 0
-	and a
-	ret
-; 142a7
-
-
-Function142a7:: ; 142a7
-	cp SPRITE_POKEMON
-	jr nc, .is_pokemon
-
-	push hl
-	push bc
-	ld hl, SpriteHeaders + 4 ; type
-	dec a
-	ld c, a
-	ld b, 0
-	ld a, 6
-	call AddNTimes
-	ld a, [hl]
-	pop bc
-	pop hl
-	cp 3
-	jr nz, .is_pokemon
-	scf
-	ret
-
-.is_pokemon
-	and a
-	ret
-; 142c4
-
-
-_GetSpritePalette:: ; 142c4
-	ld a, c
-	call GetMonSprite
-	jr c, .is_pokemon
-
-	ld hl, SpriteHeaders + 5 ; palette
-	dec a
-	ld c, a
-	ld b, 0
-	ld a, 6
-	call AddNTimes
-	ld c, [hl]
-	ret
-
-.is_pokemon
-	xor a
-	ld c, a
-	ret
-; 142db
-
-
-Function142db: ; 142db
-	call LoadSpriteGFX
-	call SortUsedSprites
-	call ArrangeUsedSprites
-	ret
-; 142e5
-
-
-AddSpriteGFX: ; 142e5
-; Add any new sprite ids to a list of graphics to be loaded.
-; Return carry if the list is full.
-
-	push hl
-	push bc
-	ld b, a
-	ld hl, UsedSprites + 2
-	ld c, SPRITE_GFX_LIST_CAPACITY - 1
-.loop
-	ld a, [hl]
-	cp b
-	jr z, .exists
-	and a
-	jr z, .new
-rept 2
-	inc hl
-endr
-	dec c
-	jr nz, .loop
-
-	pop bc
-	pop hl
-	scf
-	ret
-
-.exists
-	pop bc
-	pop hl
-	and a
-	ret
-
-.new
-	ld [hl], b
-	pop bc
-	pop hl
-	and a
-	ret
-; 14306
-
-
-LoadSpriteGFX: ; 14306
-; Bug: b is not preserved, so
-; it's useless as a next count.
-
-	ld hl, UsedSprites
-	ld b, SPRITE_GFX_LIST_CAPACITY
-.loop
-	ld a, [hli]
-	and a
-	jr z, .done
-	push hl
-	call .LoadSprite
-	pop hl
-	ld [hli], a
-	dec b
-	jr nz, .loop
-
-.done
-	ret
-
-.LoadSprite
-	call GetSprite
-	ld a, l
-	ret
-; 1431e
-
-
-SortUsedSprites: ; 1431e
-; Bubble-sort sprites by type.
-
-; Run backwards through UsedSprites to find the last one.
-
-	ld c, SPRITE_GFX_LIST_CAPACITY
-	ld de, UsedSprites + (SPRITE_GFX_LIST_CAPACITY - 1) * 2
-.FindLastSprite
-	ld a, [de]
-	and a
-	jr nz, .FoundLastSprite
-rept 2
-	dec de
-endr
-	dec c
-	jr nz, .FindLastSprite
-.FoundLastSprite
-	dec c
-	jr z, .quit
-
-; If the length of the current sprite is
-; higher than a later one, swap them.
-
-	inc de
-	ld hl, UsedSprites + 1
-
-.CheckSprite
-	push bc
-	push de
-	push hl
-
-.CheckFollowing
-	ld a, [de]
-	cp [hl]
-	jr nc, .loop
-
-; Swap the two sprites.
-
-	ld b, a
-	ld a, [hl]
-	ld [hl], b
-	ld [de], a
-	dec de
-	dec hl
-	ld a, [de]
-	ld b, a
-	ld a, [hl]
-	ld [hl], b
-	ld [de], a
-	inc de
-	inc hl
-
-; Keep doing this until everything's in order.
-
-.loop
-rept 2
-	dec de
-endr
-	dec c
-	jr nz, .CheckFollowing
-
-	pop hl
-rept 2
-	inc hl
-endr
-	pop de
-	pop bc
-	dec c
-	jr nz, .CheckSprite
-
-.quit
-	ret
-; 14355
-
-
-ArrangeUsedSprites: ; 14355
-; Get the length of each sprite and space them out in VRAM.
-; Crystal introduces a second table in VRAM bank 0.
-
-	ld hl, UsedSprites
-	ld c, SPRITE_GFX_LIST_CAPACITY
-	ld b, 0
-.FirstTableLength
-; Keep going until the end of the list.
-	ld a, [hli]
-	and a
-	jr z, .quit
-
-	ld a, [hl]
-	call GetSpriteLength
-
-; Spill over into the second table after $80 tiles.
-	add b
-	cp $80
-	jr z, .loop
-	jr nc, .SecondTable
-
-.loop
-	ld [hl], b
-	inc hl
-	ld b, a
-
-; Assumes the next table will be reached before c hits 0.
-	dec c
-	jr nz, .FirstTableLength
-
-.SecondTable
-; The second tile table starts at tile $80.
-	ld b, $80
-	dec hl
-.SecondTableLength
-; Keep going until the end of the list.
-	ld a, [hli]
-	and a
-	jr z, .quit
-
-	ld a, [hl]
-	call GetSpriteLength
-
-; There are only two tables, so don't go any further than that.
-	add b
-	jr c, .quit
-
-	ld [hl], b
-	ld b, a
-	inc hl
-
-	dec c
-	jr nz, .SecondTableLength
-
-.quit
-	ret
-; 14386
-
-
-GetSpriteLength: ; 14386
-; Return the length of sprite type a in tiles.
-
-	cp WALKING_SPRITE
-	jr z, .AnyDirection
-	cp STANDING_SPRITE
-	jr z, .AnyDirection
-	cp STILL_SPRITE
-	jr z, .OneDirection
-
-	ld a, 12
-	ret
-
-.AnyDirection
-	ld a, 12
-	ret
-
-.OneDirection
-	ld a, 4
-	ret
-; 1439b
-
-
-Function1439b: ; 1439b
-	ld hl, UsedSprites
-	ld c, SPRITE_GFX_LIST_CAPACITY
-.loop
-	ld a, [wd13e]
-	res 5, a
-	ld [wd13e], a
-	ld a, [hli]
-	and a
-	jr z, .done
-	ld [hUsedSpriteIndex], a
-	ld a, [hli]
-	ld [hUsedSpriteTile], a
-	bit 7, a
-	jr z, .dont_set
-	ld a, [wd13e]
-	set 5, a
-	ld [wd13e], a
-
-.dont_set
-	push bc
-	push hl
-	call Function143c8
-	pop hl
-	pop bc
-	dec c
-	jr nz, .loop
-
-.done
-	ret
-; 143c8
-
-Function143c8: ; 143c8
-	ld a, [hUsedSpriteIndex]
-	call SafeGetSprite
-	ld a, [hUsedSpriteTile]
-	call GetTileAddr
-	push hl
-	push de
-	push bc
-	ld a, [wd13e]
-	bit 7, a
-	jr nz, .asm_143df
-	call Function14418
-
-.asm_143df
-	pop bc
-	ld l, c
-	ld h, $0
-rept 4
-	add hl, hl
-endr
-	pop de
-	add hl, de
-	ld d, h
-	ld e, l
-	pop hl
-	ld a, [wd13e]
-	bit 5, a
-	jr nz, .asm_14405
-	bit 6, a
-	jr nz, .asm_14405
-	ld a, [hUsedSpriteIndex]
-	call Function142a7
-	jr c, .asm_14405
-	ld a, h
-	add $8
-	ld h, a
-	call Function14418
-
-.asm_14405
-	ret
-; 14406
-
-GetTileAddr: ; 14406
-; Return the address of tile (a) in (hl).
-	and $7f
-	ld l, a
-	ld h, 0
-rept 4
-	add hl, hl
-endr
-	ld a, l
-	add VTiles0 % $100
-	ld l, a
-	ld a, h
-	adc VTiles0 / $100
-	ld h, a
-	ret
-; 14418
-
-Function14418: ; 14418
-	ld a, [rVBK]
-	push af
-	ld a, [wd13e]
-	bit 5, a
-	ld a, $1
-	jr z, .asm_14426
-	ld a, $0
-
-.asm_14426
-	ld [rVBK], a
-	call Get2bpp
-	pop af
-	ld [rVBK], a
-	ret
-; 1442f
-
-LoadEmote:: ; 1442f
-; Get the address of the pointer to emote c.
-	ld a, c
-	ld bc, 6
-	ld hl, EmotesPointers
-	call AddNTimes
-; Load the emote address into de
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-; load the length of the emote (in tiles) into c
-	inc hl
-	ld c, [hl]
-	swap c
-; load the emote pointer bank into b
-	inc hl
-	ld b, [hl]
-; load the VRAM destination into hl
-	inc hl
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-; if the emote has a length of 0, do not proceed (error handling)
-	ld a, c
-	and a
-	ret z
-	call GetEmote2bpp
-	ret
-; 1444d
-
-EmotesPointers: ; 144d
-; dw source address
-; db length, bank
-; dw dest address
-
-	dw ShockEmote
-	db 4 * $10, BANK(ShockEmote)
-	dw VTiles1 tile $78
-
-	dw QuestionEmote
-	db 4 * $10, BANK(QuestionEmote)
-	dw VTiles1 tile $78
-
-	dw HappyEmote
-	db 4 * $10, BANK(HappyEmote)
-	dw VTiles1 tile $78
-
-	dw SadEmote
-	db 4 * $10, BANK(SadEmote)
-	dw VTiles1 tile $78
-
-	dw HeartEmote
-	db 4 * $10, BANK(HeartEmote)
-	dw VTiles1 tile $78
-
-	dw BoltEmote
-	db 4 * $10, BANK(BoltEmote)
-	dw VTiles1 tile $78
-
-	dw SleepEmote
-	db 4 * $10, BANK(SleepEmote)
-	dw VTiles1 tile $78
-
-	dw FishEmote
-	db 4 * $10, BANK(FishEmote)
-	dw VTiles1 tile $78
-
-	dw FishingRodGFX + $00
-	db 1 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7c
-
-	dw FishingRodGFX + $10
-	db 2 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7c
-
-	dw FishingRodGFX + $30
-	db 2 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7e
-
-	dw FishingRodGFX + $50
-	db 1 * $10, BANK(FishingRodGFX)
-	dw VTiles1 tile $7e
-
-; 14495
-
-
-SpriteMons: ; 14495
-	db UNOWN
-	db GEODUDE
-	db GROWLITHE
-	db WEEDLE
-	db SHELLDER
-	db ODDISH
-	db GENGAR
-	db ZUBAT
-	db MAGIKARP
-	db SQUIRTLE
-	db TOGEPI
-	db BUTTERFREE
-	db DIGLETT
-	db POLIWAG
-	db PIKACHU
-	db CLEFAIRY
-	db CHARMANDER
-	db JYNX
-	db STARMIE
-	db BULBASAUR
-	db JIGGLYPUFF
-	db GRIMER
-	db EKANS
-	db PARAS
-	db TENTACOOL
-	db TAUROS
-	db MACHOP
-	db VOLTORB
-	db LAPRAS
-	db RHYDON
-	db MOLTRES
-	db SNORLAX
-	db GYARADOS
-	db LUGIA
-	db HO_OH
-; 144b8
-
-
-OutdoorSprites: ; 144b8
-; Valid sprite IDs for each map group.
-
-	dw Group1Sprites
-	dw Group2Sprites
-	dw Group3Sprites
-	dw Group4Sprites
-	dw Group5Sprites
-	dw Group6Sprites
-	dw Group7Sprites
-	dw Group8Sprites
-	dw Group9Sprites
-	dw Group10Sprites
-	dw Group11Sprites
-	dw Group12Sprites
-	dw Group13Sprites
-	dw Group14Sprites
-	dw Group15Sprites
-	dw Group16Sprites
-	dw Group17Sprites
-	dw Group18Sprites
-	dw Group19Sprites
-	dw Group20Sprites
-	dw Group21Sprites
-	dw Group22Sprites
-	dw Group23Sprites
-	dw Group24Sprites
-	dw Group25Sprites
-	dw Group26Sprites
-; 144ec
-
-
-Group13Sprites: ; 144ec
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14503
-
-Group23Sprites: ; 14503
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1451a
-
-Group14Sprites: ; 1451a
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14531
-
-Group6Sprites: ; 14531
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_BLUE
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SWIMMER_GUY
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14548
-
-Group7Sprites: ; 14548
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_POKEFAN_M
-	db SPRITE_ROCKET
-	db SPRITE_MISTY
-	db SPRITE_POKE_BALL
-	db SPRITE_SLOWPOKE
-; 1455f
-
-Group25Sprites: ; 1455f
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_POKEFAN_M
-	db SPRITE_ROCKET
-	db SPRITE_MISTY
-	db SPRITE_POKE_BALL
-	db SPRITE_SLOWPOKE
-; 14576
-
-Group21Sprites: ; 14576
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_FISHER
-	db SPRITE_POLIWAG
-	db SPRITE_TEACHER
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_BIKER
-	db SPRITE_SILVER
-	db SPRITE_BLUE
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1458d
-
-Group18Sprites: ; 1458d
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_MACHOP
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 145a4
-
-Group12Sprites: ; 145a4
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_MACHOP
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 145bb
-
-Group17Sprites: ; 145bb
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_MACHOP
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 145d2
-
-Group16Sprites: ; 145d2
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_POKEFAN_M
-	db SPRITE_BUENA
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_MACHOP
-	db SPRITE_BIKER
-	db SPRITE_POKE_BALL
-	db SPRITE_BOULDER
-; 145e9
-
-Group24Sprites: ; 145e9
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SILVER
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_YOUNGSTER
-	db SPRITE_MONSTER
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14600
-
-Group26Sprites: ; 14600
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SILVER
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_YOUNGSTER
-	db SPRITE_MONSTER
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14617
-
-Group19Sprites: ; 14617
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SILVER
-	db SPRITE_TEACHER
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_YOUNGSTER
-	db SPRITE_MONSTER
-	db SPRITE_GRAMPS
-	db SPRITE_BUG_CATCHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1462e
-
-Group10Sprites: ; 1462e
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_FISHER
-	db SPRITE_LASS
-	db SPRITE_OFFICER
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_BUG_CATCHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_WEIRD_TREE
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 14645
-
-Group4Sprites: ; 14645
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_FISHER
-	db SPRITE_LASS
-	db SPRITE_OFFICER
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_BUG_CATCHER
-	db SPRITE_SUPER_NERD
-	db SPRITE_WEIRD_TREE
-	db SPRITE_POKE_BALL
-	db SPRITE_FRUIT_TREE
-; 1465c
-
-Group8Sprites: ; 1465c
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_KURT_OUTSIDE
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_OFFICER
-	db SPRITE_POKEFAN_M
-	db SPRITE_BLACK_BELT
-	db SPRITE_TEACHER
-	db SPRITE_AZALEA_ROCKET
-	db SPRITE_LASS
-	db SPRITE_SILVER
-	db SPRITE_FRUIT_TREE
-	db SPRITE_SLOWPOKE
-; 14673
-
-Group11Sprites: ; 14673
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_POKE_BALL
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_OFFICER
-	db SPRITE_POKEFAN_M
-	db SPRITE_DAYCARE_MON_1
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_ROCKET
-	db SPRITE_LASS
-	db SPRITE_DAYCARE_MON_2
-	db SPRITE_FRUIT_TREE
-	db SPRITE_SLOWPOKE
-; 1468a
-
-Group22Sprites: ; 1468a
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_STANDING_YOUNGSTER
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_OLIVINE_RIVAL
-	db SPRITE_POKEFAN_M
-	db SPRITE_LASS
-	db SPRITE_BUENA
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SAILOR
-	db SPRITE_POKEFAN_F
-	db SPRITE_SUPER_NERD
-	db SPRITE_TAUROS
-	db SPRITE_FRUIT_TREE
-	db SPRITE_ROCK
-; 146a1
-
-Group1Sprites: ; 146a1
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_STANDING_YOUNGSTER
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_OLIVINE_RIVAL
-	db SPRITE_POKEFAN_M
-	db SPRITE_LASS
-	db SPRITE_BUENA
-	db SPRITE_SWIMMER_GIRL
-	db SPRITE_SAILOR
-	db SPRITE_POKEFAN_F
-	db SPRITE_SUPER_NERD
-	db SPRITE_TAUROS
-	db SPRITE_FRUIT_TREE
-	db SPRITE_ROCK
-; 146b8
-
-Group9Sprites: ; 146b8
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_LANCE
-	db SPRITE_GRAMPS
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_LASS
-	db SPRITE_YOUNGSTER
-	db SPRITE_GYARADOS
-	db SPRITE_FRUIT_TREE
-	db SPRITE_POKE_BALL
-; 146cf
-
-Group2Sprites: ; 146cf
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_POKEFAN_M
-	db SPRITE_BLACK_BELT
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_FRUIT_TREE
-	db SPRITE_POKE_BALL
-; 146e6
-
-Group5Sprites: ; 146e6
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_GRAMPS
-	db SPRITE_YOUNGSTER
-	db SPRITE_LASS
-	db SPRITE_SUPER_NERD
-	db SPRITE_COOLTRAINER_M
-	db SPRITE_POKEFAN_M
-	db SPRITE_BLACK_BELT
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_FISHER
-	db SPRITE_FRUIT_TREE
-	db SPRITE_POKE_BALL
-; 146fd
-
-Group3Sprites: ; 146fd
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_GAMEBOY_KID
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_LASS
-	db SPRITE_POKEFAN_F
-	db SPRITE_TEACHER
-	db SPRITE_YOUNGSTER
-	db SPRITE_GROWLITHE
-	db SPRITE_POKEFAN_M
-	db SPRITE_ROCKER
-	db SPRITE_FISHER
-	db SPRITE_SCIENTIST
-	db SPRITE_POKE_BALL
-	db SPRITE_BOULDER
-; 14714
-
-Group15Sprites: ; 14714
-	db SPRITE_SUICUNE
-	db SPRITE_SILVER_TROPHY
-	db SPRITE_FAMICOM
-	db SPRITE_POKEDEX
-	db SPRITE_WILL
-	db SPRITE_KAREN
-	db SPRITE_NURSE
-	db SPRITE_OLD_LINK_RECEPTIONIST
-	db SPRITE_BIG_LAPRAS
-	db SPRITE_BIG_ONIX
-	db SPRITE_SUDOWOODO
-	db SPRITE_BIG_SNORLAX
-	db SPRITE_SAILOR
-	db SPRITE_FISHING_GURU
-	db SPRITE_GENTLEMAN
-	db SPRITE_SUPER_NERD
-	db SPRITE_HO_OH
-	db SPRITE_TEACHER
-	db SPRITE_COOLTRAINER_F
-	db SPRITE_YOUNGSTER
-	db SPRITE_FAIRY
-	db SPRITE_POKE_BALL
-	db SPRITE_ROCK
-; 1472b
-
-Group20Sprites: ; 1472b
-	db SPRITE_OAK
-	db SPRITE_FISHER
-	db SPRITE_TEACHER
-	db SPRITE_TWIN
-	db SPRITE_POKEFAN_M
-	db SPRITE_GRAMPS
-	db SPRITE_FAIRY
-	db SPRITE_SILVER
-	db SPRITE_FISHING_GURU
-	db SPRITE_POKE_BALL
-	db SPRITE_POKEDEX
-; 14736
-
-
-SpriteHeaders: ; 14736
-INCLUDE "gfx/overworld/sprite_headers.asm"
-; 1499a
-
-
 Function1499a:: ; 1499a
 	ld a, [PlayerStandingTile]
 	cp $60
@@ -17784,13 +11432,13 @@
 
 Function14a07:: ; 14a07
 	ld a, [PlayerStandingTile]
-	ld de, $001f
+	ld de, $1f
 	cp $71 ; door
 	ret z
-	ld de, $0013
+	ld de, $13
 	cp $7c ; warp pad
 	ret z
-	ld de, $0023
+	ld de, $23
 	ret
 ; 14a1a
 
@@ -17878,7 +11526,7 @@
 ; 1563e
 
 Function1563e: ; 1563e
-	call Function2ead
+	call CheckReceivedDex
 	jr nz, .asm_15646
 	ld a, $0
 	ret
@@ -17989,7 +11637,7 @@
 	call Function15704
 	and a
 	jr nz, .asm_156f9
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function321c
 	call UpdateSprites
 	call Function156b8
@@ -17997,7 +11645,7 @@
 	ret
 
 .asm_156f9
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld c, $1
 	ret
 ; 156ff
@@ -18101,7 +11749,7 @@
 PC_DisplayTextWaitMenu: ; 157bb
 	ld a, [Options]
 	push af
-	set 4, a
+	set NO_TEXT_SCROLL, a
 	ld [Options], a
 	call MenuTextBox
 	pop af
@@ -18116,7 +11764,7 @@
 ; 0x157d1
 
 KrisWithdrawItemMenu: ; 0x157d1
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba ClearPCItemScreen
 .asm_157da
 	call Function15985
@@ -18195,7 +11843,7 @@
 
 
 KrisTossItemMenu: ; 0x1585f
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba ClearPCItemScreen
 .asm_15868
 	call Function15985
@@ -18232,7 +11880,7 @@
 	call Function158b8
 	jr c, .asm_158b6
 	call DisableSpriteUpdates
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba Function106a5
 .asm_1589c
 	callba Function106be
@@ -18393,10 +12041,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [wd0dd]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [wd0dd], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd0d7], a
 	pop af
 	ld [wc2ce], a
@@ -18507,989 +12155,8 @@
 ; 0x15a45
 
 
-OpenMartDialog:: ; 15a45
-	call GetMart
-	ld a, c
-	ld [EngineBuffer1], a
-	call LoadMartPointer
-	ld a, [EngineBuffer1]
-	ld hl, .dialogs
-	rst JumpTable
-	ret
-; 15a57
+INCLUDE "engine/mart.asm"
 
-.dialogs
-	dw MartDialog
-	dw HerbShop
-	dw BargainShop
-	dw Pharmacist
-	dw RooftopSale
-; 15a61
-
-MartDialog: ; 15a61
-	ld a, 0
-	ld [EngineBuffer1], a
-	xor a
-	ld [MovementAnimation], a
-	call StandardMart
-	ret
-; 15a6e
-
-HerbShop: ; 15a6e
-	call ReadMart
-	call LoadMenuDataHeader_0x1d75
-	ld hl, UnknownText_0x15e4a
-	call Function15fcd
-	call Function15c62
-	ld hl, UnknownText_0x15e68
-	call Function15fcd
-	ret
-; 15a84
-
-BargainShop: ; 15a84
-	ld b, BANK(BargainShopData)
-	ld de, BargainShopData
-	call LoadMartPointer
-	call Function15c25
-	call LoadMenuDataHeader_0x1d75
-	ld hl, UnknownText_0x15e6d
-	call Function15fcd
-	call Function15c62
-	ld hl, WalkingDirection
-	ld a, [hli]
-	or [hl]
-	jr z, .asm_15aa7
-	ld hl, DailyFlags
-	set 6, [hl]
-
-.asm_15aa7
-	ld hl, UnknownText_0x15e8b
-	call Function15fcd
-	ret
-; 15aae
-
-Pharmacist: ; 15aae
-	call ReadMart
-	call LoadMenuDataHeader_0x1d75
-	ld hl, UnknownText_0x15e90
-	call Function15fcd
-	call Function15c62
-	ld hl, UnknownText_0x15eae
-	call Function15fcd
-	ret
-; 15ac4
-
-RooftopSale: ; 15ac4
-	ld b, BANK(RooftopSaleData1)
-	ld de, RooftopSaleData1
-	ld hl, StatusFlags
-	bit 6, [hl] ; hall of fame
-	jr z, .ok
-	ld b, BANK(RooftopSaleData2)
-	ld de, RooftopSaleData2
-
-.ok
-	call LoadMartPointer
-	call Function15c25
-	call LoadMenuDataHeader_0x1d75
-	ld hl, UnknownText_0x15f83
-	call Function15fcd
-	call Function15c62
-	ld hl, UnknownText_0x15fb4
-	call Function15fcd
-	ret
-; 15aee
-
-RooftopSaleData1: ; 15aee
-	db 5
-	dbw POKE_BALL,     150
-	dbw GREAT_BALL,    500
-	dbw SUPER_POTION,  500
-	dbw FULL_HEAL,     500
-	dbw REVIVE,       1200
-	db -1
-RooftopSaleData2: ; 15aff
-	db 5
-	dbw HYPER_POTION, 1000
-	dbw FULL_RESTORE, 2000
-	dbw FULL_HEAL,     500
-	dbw ULTRA_BALL,   1000
-	dbw PROTEIN,      7800
-	db -1
-; 15b10
-
-LoadMartPointer: ; 15b10
-	ld a, b
-	ld [MartPointerBank], a
-	ld a, e
-	ld [MartPointer], a
-	ld a, d
-	ld [MartPointer + 1], a
-	ld hl, CurMart
-	xor a
-	ld bc, 16
-	call ByteFill
-	xor a
-	ld [MovementAnimation], a
-	ld [WalkingDirection], a
-	ld [FacingDirection], a
-	ret
-; 15b31
-
-GetMart: ; 15b31
-	ld a, e
-	cp (MartsEnd - Marts) / 2
-	jr c, .IsAMart
-	ld b, $5
-	ld de, DefaultMart
-	ret
-
-.IsAMart
-	ld hl, Marts
-rept 2
-	add hl, de
-endr
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld b, $5
-	ret
-; 15b47
-
-StandardMart: ; 15b47
-.loop
-	ld a, [MovementAnimation]
-	ld hl, .MartFunctions
-	rst JumpTable
-	ld [MovementAnimation], a
-	cp $ff
-	jr nz, .loop
-	ret
-
-.MartFunctions
-	dw .HowMayIHelpYou
-	dw .TopMenu
-	dw .Buy
-	dw .Sell
-	dw .Quit
-	dw .AnythingElse
-; 15b62
-
-.HowMayIHelpYou: ; 15b62
-	call LoadMenuDataHeader_0x1d75
-	ld hl, UnknownText_0x15f83
-	call PrintText
-	ld a, $1
-	ret
-; 15b6e
-
-.TopMenu: ; 15b6e
-	ld hl, MenuDataHeader_0x15f88
-	call CopyMenuDataHeader
-	call InterpretMenu2
-	jr c, .quit
-	ld a, [wcfa9]
-	cp $1
-	jr z, .buy
-	cp $2
-	jr z, .sell
-.quit
-	ld a, $4
-	ret
-.buy
-	ld a, $2
-	ret
-.sell
-	ld a, $3
-	ret
-; 15b8d
-
-.Buy: ; 15b8d
-	call ExitMenu
-	call ReadMart
-	call Function15c62
-	and a
-	ld a, $5
-	ret
-; 15b9a
-
-.Sell: ; 15b9a
-	call ExitMenu
-	call Function15eb3
-	ld a, $5
-	ret
-; 15ba3
-
-.Quit: ; 15ba3
-	call ExitMenu
-	ld hl, UnknownText_0x15fb4
-	call Function15fcd
-	ld a, $ff
-	ret
-; 15baf
-
-.AnythingElse: ; 15baf
-	call LoadMenuDataHeader_0x1d75
-	ld hl, UnknownText_0x15fb9
-	call PrintText
-	ld a, $1
-	ret
-; 15bbb
-
-ReadMart: ; 15bbb
-	ld hl, MartPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, CurMart
-.CopyMart
-	ld a, [MartPointerBank]
-	call GetFarByte
-	ld [de], a
-	inc hl
-	inc de
-	cp -1
-	jr nz, .CopyMart
-	ld hl, DefaultFlypoint
-	ld de, CurMart + 1
-.ReadMartItem
-	ld a, [de]
-	inc de
-	cp -1
-	jr z, .done
-	push de
-	call GetMartItemPrice
-	pop de
-	jr .ReadMartItem
-
-.done
-	ret
-; 15be5
-
-GetMartItemPrice: ; 15be5
-; Return the price of item a in BCD at hl and in tiles at StringBuffer1.
-	push hl
-	ld [CurItem], a
-	callba GetItemPrice
-	pop hl
-
-GetMartPrice: ; 15bf0
-; Return price de in BCD at hl and in tiles at StringBuffer1.
-	push hl
-	ld a, d
-	ld [StringBuffer2], a
-	ld a, e
-	ld [StringBuffer2 + 1], a
-	ld hl, StringBuffer1
-	ld de, StringBuffer2
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 6 ; 6 digits
-	call PrintNum
-	pop hl
-
-	ld de, StringBuffer1
-	ld c, 6 / 2 ; 6 digits
-.loop
-	call .TileToNum
-	swap a
-	ld b, a
-	call .TileToNum
-	or b
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	ret
-; 15c1a
-
-.TileToNum ; 15c1a
-	ld a, [de]
-	inc de
-	cp " "
-	jr nz, .asm_15c22
-	ld a, "0"
-
-.asm_15c22
-	sub "0"
-	ret
-; 15c25
-
-Function15c25: ; 15c25
-	ld hl, MartPointer
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	push hl
-	inc hl
-	ld bc, wd002
-	ld de, CurMart + 1
-.loop
-	ld a, [hli]
-	ld [de], a
-	inc de
-	cp -1
-	jr z, .done
-
-	push de
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	push hl
-	ld h, b
-	ld l, c
-	call GetMartPrice
-	ld b, h
-	ld c, l
-	pop hl
-	pop de
-	jr .loop
-
-.done
-	pop hl
-	ld a, [hl]
-	ld [CurMart], a
-	ret
-; 15c51
-
-BargainShopData: ; 15c51
-	db 5
-	dbw NUGGET,     4500
-	dbw PEARL,       650
-	dbw BIG_PEARL,  3500
-	dbw STARDUST,    900
-	dbw STAR_PIECE, 4600
-	db -1
-; 15c62
-
-
-Function15c62: ; 15c62
-	call FadeToMenu
-	callba Function8000
-	xor a
-	ld [WalkingY], a
-	ld a, 1
-	ld [WalkingX], a
-.asm_15c74
-	call Function15cef
-	jr nc, .asm_15c74
-	call Function2b3c
-	ret
-; 15c7d
-
-Function15c7d: ; 15c7d
-	push af
-	call Function15ca3
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	pop af
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call PrintText
-	ret
-; 15c91
-
-Function15c91: ; 15c91
-	call Function15ca3
-rept 2
-	inc hl
-endr
-	ld a, [hl]
-	and a
-	jp z, Function15d83
-	cp 1
-	jp z, Function15da5
-	jp Function15de2
-; 15ca3
-
-Function15ca3: ; 15ca3
-	ld a, [EngineBuffer1]
-	ld e, a
-	ld d, 0
-	ld hl, .data_15cb0
-rept 3
-	add hl, de
-endr
-	ret
-; 15cb0
-
-.data_15cb0 ; 15cb0
-	 dwb Unknown_15cbf, 0
-	 dwb Unknown_15ccb, 0
-	 dwb Unknown_15cd7, 1
-	 dwb Unknown_15ce3, 0
-	 dwb Unknown_15cbf, 2
-; 15cbf
-
-Unknown_15cbf: ; 15cbf
-	dw UnknownText_0x15e0e
-	dw UnknownText_0x15e13
-	dw UnknownText_0x15fa5
-	dw UnknownText_0x15faa
-	dw UnknownText_0x15fa0
-	dw Function15cef
-
-Unknown_15ccb: ; 15ccb
-	dw UnknownText_0x15e4f
-	dw UnknownText_0x15e54
-	dw UnknownText_0x15e63
-	dw UnknownText_0x15e5e
-	dw UnknownText_0x15e59
-	dw Function15cef
-
-Unknown_15cd7: ; 15cd7
-	dw Function15cef
-	dw UnknownText_0x15e72
-	dw UnknownText_0x15e86
-	dw UnknownText_0x15e7c
-	dw UnknownText_0x15e77
-	dw UnknownText_0x15e81
-
-Unknown_15ce3: ; 15ce3
-	dw UnknownText_0x15e95
-	dw UnknownText_0x15e9a
-	dw UnknownText_0x15ea9
-	dw UnknownText_0x15ea4
-	dw UnknownText_0x15e9f
-	dw Function15cef
-; 15cef
-
-
-Function15cef: ; 15cef
-	callba Function24ae8
-	call UpdateSprites
-	ld hl, MenuDataHeader_0x15e18
-	call CopyMenuDataHeader
-	ld a, [WalkingX]
-	ld [wMenuCursorBuffer], a
-	ld a, [WalkingY]
-	ld [wd0e4], a
-	call Function350c
-	ld a, [wd0e4]
-	ld [WalkingY], a
-	ld a, [wcfa9]
-	ld [WalkingX], a
-	call SpeechTextBox
-	ld a, [wcf73]
-	cp $2
-	jr z, .asm_15d6d
-	cp $1
-	jr z, .asm_15d27
-
-.asm_15d27
-	call Function15c91
-	jr c, .asm_15d68
-	call Function15d97
-	jr c, .asm_15d68
-	ld de, Money
-	ld bc, hMoneyTemp
-	ld a, $3
-	call CompareMoney
-	jr c, .asm_15d79
-	ld hl, NumItems
-	call ReceiveItem
-	jr nc, .asm_15d6f
-	ld a, [wd107]
-	ld e, a
-	ld d, $0
-	ld b, $1
-	ld hl, WalkingDirection
-	call FlagAction
-	call Function15fc3
-	ld de, Money
-	ld bc, hMoneyTemp
-	call TakeMoney
-	ld a, $4
-	call Function15c7d
-	call JoyWaitAorB
-
-.asm_15d68
-	call SpeechTextBox
-	and a
-	ret
-
-.asm_15d6d
-	scf
-	ret
-
-.asm_15d6f
-	ld a, $3
-	call Function15c7d
-	call JoyWaitAorB
-	and a
-	ret
-
-.asm_15d79
-	ld a, $2
-	call Function15c7d
-	call JoyWaitAorB
-	and a
-	ret
-; 15d83
-
-Function15d83: ; 15d83
-	ld a, $63
-	ld [wItemQuantityBuffer], a
-	ld a, $0
-	call Function15c7d
-	callba Function24fc9
-	call ExitMenu
-	ret
-; 15d97
-
-Function15d97: ; 15d97
-	predef PartyMonItemName
-	ld a, $1
-	call Function15c7d
-	call YesNoBox
-	ret
-; 15da5
-
-Function15da5: ; 15da5
-	ld a, $1
-	ld [wItemQuantityChangeBuffer], a
-	ld a, [wd107]
-	ld e, a
-	ld d, $0
-	ld b, $2
-	ld hl, WalkingDirection
-	call FlagAction
-	ld a, c
-	and a
-	jr nz, .asm_15dd8
-	ld a, [wd107]
-	ld e, a
-	ld d, $0
-	ld hl, wd040
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	inc hl
-rept 3
-	add hl, de
-endr
-	inc hl
-	ld a, [hli]
-	ld [$ffc5], a
-	ld a, [hl]
-	ld [$ffc4], a
-	xor a
-	ld [hMoneyTemp], a
-	and a
-	ret
-
-.asm_15dd8
-	ld a, $5
-	call Function15c7d
-	call JoyWaitAorB
-	scf
-	ret
-; 15de2
-
-Function15de2: ; 15de2
-	ld a, $0
-	call Function15c7d
-	call Function15df9
-	ld a, $63
-	ld [wItemQuantityBuffer], a
-	callba Function24fcf
-	call ExitMenu
-	ret
-; 15df9
-
-Function15df9: ; 15df9
-	ld a, [wd107]
-	ld e, a
-	ld d, 0
-	ld hl, wd040
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	inc hl
-rept 3
-	add hl, de
-endr
-	inc hl
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ret
-; 15e0e
-
-
-UnknownText_0x15e0e: ; 0x15e0e
-	; How many?
-	text_jump UnknownText_0x1c4bfd
-	db "@"
-; 0x15e13
-
-UnknownText_0x15e13: ; 0x15e13
-	; @ (S) will be ¥@ .
-	text_jump UnknownText_0x1c4c08
-	db "@"
-; 0x15e18
-
-MenuDataHeader_0x15e18: ; 0x15e18
-	db $40 ; flags
-	db 03, 01 ; start coords
-	db 11, 19 ; end coords
-	dw MenuData2_0x15e20
-	db 1 ; default option
-; 0x15e20
-
-MenuData2_0x15e20: ; 0x15e20
-	db $30 ; flags
-	db 4, 8 ; rows, columns
-	db 1 ; horizontal spacing
-	dbw 0, OBPals + 8 * 6
-	dba PlaceMenuItemName
-	dba Function15e30
-	dba Function244c3
-; 15e30
-
-Function15e30: ; 15e30
-	ld a, [wcf77]
-	ld c, a
-	ld b, 0
-	ld hl, DefaultFlypoint
-rept 3
-	add hl, bc
-endr
-	push de
-	ld d, h
-	ld e, l
-	pop hl
-	ld bc, $14
-	add hl, bc
-	ld c, $a3
-	call PrintBCDNumber
-	ret
-; 15e4a (5:5e4a)
-
-UnknownText_0x15e4a: ; 0x15e4a
-	; Hello, dear. I sell inexpensive herbal medicine. They're good, but a trifle bitter. Your #MON may not like them. Hehehehe…
-	text_jump UnknownText_0x1c4c28
-	db "@"
-; 0x15e4f
-
-UnknownText_0x15e4f: ; 0x15e4f
-	; How many?
-	text_jump UnknownText_0x1c4ca3
-	db "@"
-; 0x15e54
-
-UnknownText_0x15e54: ; 0x15e54
-	; @ (S) will be ¥@ .
-	text_jump UnknownText_0x1c4cae
-	db "@"
-; 0x15e59
-
-UnknownText_0x15e59: ; 0x15e59
-	; Thank you, dear. Hehehehe…
-	text_jump UnknownText_0x1c4cce
-	db "@"
-; 0x15e5e
-
-UnknownText_0x15e5e: ; 0x15e5e
-	; Oh? Your PACK is full, dear.
-	text_jump UnknownText_0x1c4cea
-	db "@"
-; 0x15e63
-
-UnknownText_0x15e63: ; 0x15e63
-	; Hehehe… You don't have the money.
-	text_jump UnknownText_0x1c4d08
-	db "@"
-; 0x15e68
-
-UnknownText_0x15e68: ; 0x15e68
-	; Come again, dear. Hehehehe…
-	text_jump UnknownText_0x1c4d2a
-	db "@"
-; 0x15e6d
-
-UnknownText_0x15e6d: ; 0x15e6d
-	; Hiya! Care to see some bargains? I sell rare items that nobody else carries--but only one of each item.
-	text_jump UnknownText_0x1c4d47
-	db "@"
-; 0x15e72
-
-UnknownText_0x15e72: ; 0x15e72
-	; costs ¥@ . Want it?
-	text_jump UnknownText_0x1c4db0
-	db "@"
-; 0x15e77
-
-UnknownText_0x15e77: ; 0x15e77
-	; Thanks.
-	text_jump UnknownText_0x1c4dcd
-	db "@"
-; 0x15e7c
-
-UnknownText_0x15e7c: ; 0x15e7c
-	; Uh-oh, your PACK is chock-full.
-	text_jump UnknownText_0x1c4dd6
-	db "@"
-; 0x15e81
-
-UnknownText_0x15e81: ; 0x15e81
-	; You bought that already. I'm all sold out of it.
-	text_jump UnknownText_0x1c4df7
-	db "@"
-; 0x15e86
-
-UnknownText_0x15e86: ; 0x15e86
-	; Uh-oh, you're short on funds.
-	text_jump UnknownText_0x1c4e28
-	db "@"
-; 0x15e8b
-
-UnknownText_0x15e8b: ; 0x15e8b
-	; Come by again sometime.
-	text_jump UnknownText_0x1c4e46
-	db "@"
-; 0x15e90
-
-UnknownText_0x15e90: ; 0x15e90
-	; What's up? Need some medicine?
-	text_jump UnknownText_0x1c4e5f
-	db "@"
-; 0x15e95
-
-UnknownText_0x15e95: ; 0x15e95
-	; How many?
-	text_jump UnknownText_0x1c4e7e
-	db "@"
-; 0x15e9a
-
-UnknownText_0x15e9a: ; 0x15e9a
-	; @ (S) will cost ¥@ .
-	text_jump UnknownText_0x1c4e89
-	db "@"
-; 0x15e9f
-
-UnknownText_0x15e9f: ; 0x15e9f
-	; Thanks much!
-	text_jump UnknownText_0x1c4eab
-	db "@"
-; 0x15ea4
-
-UnknownText_0x15ea4: ; 0x15ea4
-	; You don't have any more space.
-	text_jump UnknownText_0x1c4eb9
-	db "@"
-; 0x15ea9
-
-UnknownText_0x15ea9: ; 0x15ea9
-	; Huh? That's not enough money.
-	text_jump UnknownText_0x1c4ed8
-	db "@"
-; 0x15eae
-
-UnknownText_0x15eae: ; 0x15eae
-	; All right. See you around.
-	text_jump UnknownText_0x1c4ef6
-	db "@"
-; 0x15eb3
-
-
-Function15eb3: ; 15eb3
-	call DisableSpriteUpdates
-	callba Function106a5
-.asm_15ebc
-	callba Function106be
-	ld a, [wcf66]
-	and a
-	jp z, Function15ece
-	call Function15ee0
-	jr .asm_15ebc
-; 15ece
-
-Function15ece: ; 15ece
-	call Function2b74
-	and a
-	ret
-; 15ed3
-
-Function15ed3: ; unreferenced
-	ld hl, UnknownText_0x15edb
-	call MenuTextBoxBackup
-	and a
-	ret
-; 15edb
-
-UnknownText_0x15edb: ; 0x15edb
-	; You don't have anything to sell.
-	text_jump UnknownText_0x1c4f12
-	db "@"
-; 0x15ee0
-
-
-Function15ee0: ; 15ee0
-	callba CheckItemMenu
-	ld a, [wItemAttributeParamBuffer]
-	ld hl, .jumptable
-	rst JumpTable
-	ret
-; 15eee
-
-.jumptable: ; 15eee
-	dw .maybe_use
-	dw .no_use
-	dw .no_use
-	dw .no_use
-	dw .maybe_use
-	dw .maybe_use
-	dw .maybe_use
-; 15efc
-
-.no_use: ; 15efc
-	ret
-; 15efd
-
-
-.maybe_use: ; 15efd
-	callba _CheckTossableItem
-	ld a, [wItemAttributeParamBuffer]
-	and a
-	jr z, .asm_15f11
-	ld hl, UnknownText_0x15faf
-	call PrintText
-	and a
-	ret
-
-.asm_15f11
-	ld hl, UnknownText_0x15f73
-	call PrintText
-	callba Function24af8
-	callba Function24fe1
-	call ExitMenu
-	jr c, .asm_15f6e
-	hlcoord 1, 14
-	lb bc, 3, 18
-	call ClearBox
-	ld hl, UnknownText_0x15f78
-	call PrintTextBoxText
-	call YesNoBox
-	jr c, .asm_15f6e
-	ld de, Money
-	ld bc, hMoneyTemp
-	call GiveMoney
-	ld a, [wd107]
-	ld hl, NumItems
-	call TossItem
-	predef PartyMonItemName
-	hlcoord 1, 14
-	lb bc, 3, 18
-	call ClearBox
-	ld hl, UnknownText_0x15fbe
-	call PrintTextBoxText
-	call Function15fc3
-	callba Function24af0
-	call JoyWaitAorB
-
-.asm_15f6e
-	call ExitMenu
-	and a
-	ret
-; 15f73
-
-UnknownText_0x15f73: ; 0x15f73
-	; How many?
-	text_jump UnknownText_0x1c4f33
-	db "@"
-; 0x15f78
-
-UnknownText_0x15f78: ; 0x15f78
-	; I can pay you ¥@ . Is that OK?
-	text_jump UnknownText_0x1c4f3e
-	db "@"
-; 0x15f7d
-
-String15f7d: ; 15f7d
-	db "!ダミー!@"
-
-UnknownText_0x15f83: ; 0x15f83
-	; Welcome! How may I help you?
-	text_jump UnknownText_0x1c4f62
-	db "@"
-; 0x15f88
-
-MenuDataHeader_0x15f88: ; 0x15f88
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 08, 07 ; end coords
-	dw MenuData2_0x15f90
-	db 1 ; default option
-; 0x15f90
-
-MenuData2_0x15f90: ; 0x15f90
-	db $80 ; flags
-	db 3 ; items
-	db "BUY@"
-	db "SELL@"
-	db "QUIT@"
-; 0x15f96
-
-UnknownText_0x15fa0: ; 0x15fa0
-	; Here you are. Thank you!
-	text_jump UnknownText_0x1c4f80
-	db "@"
-; 0x15fa5
-
-UnknownText_0x15fa5: ; 0x15fa5
-	; You don't have enough money.
-	text_jump UnknownText_0x1c4f9a
-	db "@"
-; 0x15faa
-
-UnknownText_0x15faa: ; 0x15faa
-	; You can't carry any more items.
-	text_jump UnknownText_0x1c4fb7
-	db "@"
-; 0x15faf
-
-UnknownText_0x15faf: ; 0x15faf
-	; Sorry, I can't buy that from you.
-	text_jump UnknownText_0x1c4fd7
-	db "@"
-; 0x15fb4
-
-UnknownText_0x15fb4: ; 0x15fb4
-	; Please come again!
-	text_jump UnknownText_0x1c4ff9
-	db "@"
-; 0x15fb9
-
-UnknownText_0x15fb9: ; 0x15fb9
-	text_jump UnknownText_0x1c500d
-	db "@"
-; 0x15fbe
-
-UnknownText_0x15fbe: ; 0x15fbe
-	text_jump UnknownText_0x1c502e
-	db "@"
-; 0x15fc3
-
-Function15fc3: ; 15fc3
-	call WaitSFX
-	ld de, SFX_TRANSACTION
-	call PlaySFX
-	ret
-; 15fcd
-
-Function15fcd: ; 15fcd
-	call MenuTextBox
-	call JoyWaitAorB
-	call ExitMenu
-	ret
-; 15fd7
-
 GiveMoney:: ; 15fd7
 	ld a, $3
 	call AddMoney
@@ -19818,7 +12485,7 @@
 	callba CheckCurPartyMonFainted
 	jr c, .asm_167e9
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld d, [hl]
@@ -19938,13 +12605,13 @@
 	ld a, d
 	ld [StringBuffer2 + 1], a
 	ld de, StringBuffer1
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld hl, 0
-	ld bc, $0064
+	ld bc, $64
 	ld a, [StringBuffer2 + 1]
 	call AddNTimes
-	ld de, $0064
+	ld de, $64
 	add hl, de
 	xor a
 	ld [StringBuffer2 + 2], a
@@ -20142,7 +12809,7 @@
 	call PrintText
 	ld de, SFX_GET_EGG_FROM_DAYCARE_LADY
 	call PlaySFX
-	ld c, $78
+	ld c, 120
 	call DelayFrames
 	ld hl, UnknownText_0x1699d
 	jr .asm_1697f
@@ -20219,12 +12886,12 @@
 	ld hl, wEggNick
 	call CopyBytes
 	ld hl, PartyMonOT
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call Function16a31
 	ld hl, wEggOT
 	call CopyBytes
 	ld hl, PartyMon1
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Function16a31
 	ld hl, wEggMon
 	ld bc, wEggMonEnd - wEggMon
@@ -20233,14 +12900,14 @@
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMon1
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld b, h
 	ld c, l
-	ld hl, PartyMon1ID + 1 - PartyMon1
+	ld hl, MON_ID + 1
 	add hl, bc
 	push hl
-	ld hl, PartyMon1MaxHP - PartyMon1
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld d, h
 	ld e, l
@@ -20249,7 +12916,7 @@
 	ld b, $0
 	predef CalcPkmnStats
 	pop bc
-	ld hl, PartyMon1HP - PartyMon1
+	ld hl, MON_HP
 	add hl, bc
 	xor a
 	ld [hli], a
@@ -20375,7 +13042,7 @@
 	ld [hl], a
 	ld a, [CurPartyLevel]
 	ld d, a
-	callab Function50e47
+	callab CalcExpAtLevel
 	ld hl, wEggMonExp
 	ld a, [hMultiplicand]
 	ld [hli], a
@@ -20448,7 +13115,7 @@
 .asm_16bab
 	ld hl, StringBuffer1
 	ld de, wd050
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld hl, wEggMonMoves
 	ld de, wEggMonPP
@@ -20455,7 +13122,7 @@
 	predef FillPP
 	ld hl, wd050
 	ld de, StringBuffer1
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [BaseEggSteps]
 	ld hl, wEggMonHappiness
@@ -20485,9 +13152,9 @@
 	ld [hInMenu], a
 	ld a, [Options]
 	push af
-	set 4, a
+	set NO_TEXT_SCROLL, a
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 
 	ld de, UnownDexATile
@@ -20501,7 +13168,7 @@
 	call Request1bpp
 
 	hlcoord 0, 0
-	ld bc, $0312
+	lb bc, 3, 18
 	call TextBox
 
 	hlcoord 0, 5
@@ -20509,7 +13176,7 @@
 	call TextBox
 
 	hlcoord 0, 14
-	ld bc, $0212
+	lb bc, 2, 18
 	call TextBox
 
 	hlcoord 1, 2
@@ -20539,22 +13206,22 @@
 	call GetSGBLayout
 	call SetPalettes
 
-.asm_16c6b
+.joy_loop
 	call JoyTextDelay
 
 	ld a, [hJoyPressed]
 	and B_BUTTON
-	jr nz, .asm_16c95
+	jr nz, .pressed_b
 
 	ld a, [hJoyPressed]
 	and A_BUTTON
-	jr nz, .asm_16c82
+	jr nz, .pressed_a
 
 	call Function16ca0
 	call DelayFrame
-	jr .asm_16c6b
+	jr .joy_loop
 
-.asm_16c82
+.pressed_a
 	ld a, [wJumptableIndex]
 	push af
 	callba Function84560
@@ -20561,14 +13228,14 @@
 	call RestartMapMusic
 	pop af
 	ld [wJumptableIndex], a
-	jr .asm_16c6b
+	jr .joy_loop
 
-.asm_16c95
+.pressed_b
 	pop af
 	ld [Options], a
 	pop af
 	ld [hInMenu], a
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ret
 ; 16ca0
 
@@ -20575,34 +13242,34 @@
 Function16ca0: ; 16ca0
 	ld a, [hJoyLast]
 	and D_RIGHT
-	jr nz, .asm_16cb9
+	jr nz, .press_right
 	ld a, [hJoyLast]
 	and D_LEFT
-	jr nz, .asm_16cad
+	jr nz, .press_left
 	ret
 
-.asm_16cad
+.press_left
 	ld hl, wJumptableIndex
 	ld a, [hl]
 	and a
-	jr nz, .asm_16cb6
+	jr nz, .wrap_around_left
 	ld [hl], $1b
 
-.asm_16cb6
+.wrap_around_left
 	dec [hl]
-	jr .asm_16cc4
+	jr .return
 
-.asm_16cb9
+.press_right
 	ld hl, wJumptableIndex
 	ld a, [hl]
 	cp $1a
-	jr c, .asm_16cc3
+	jr c, .wrap_around_right
 	ld [hl], $ff
 
-.asm_16cc3
+.wrap_around_right
 	inc [hl]
 
-.asm_16cc4
+.return
 	call Function16cc8
 	ret
 ; 16cc8
@@ -20622,7 +13289,7 @@
 	call Function16cff
 	hlcoord 1, 6
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	lb bc, 7, 7
 	predef FillBox
 	ld de, VTiles2 tile $31
@@ -20635,6 +13302,7 @@
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	ld a, BANK(sScratch)
 	call GetSRAMBank
 	ld de, w6_d000
@@ -20644,6 +13312,7 @@
 	ld c, $31
 	call Get2bpp
 	call CloseSRAM
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -20659,7 +13328,7 @@
 	xor a
 	call GetSRAMBank
 	ld hl, sScratch
-	ld bc, $0310 ; 784
+	ld bc, $31 tiles
 	xor a
 	call ByteFill
 	ld hl, VTiles2 tile $31
@@ -20681,10 +13350,10 @@
 	db "Do what?@"
 
 UnownDexMenuString:
-	db   $ef, " PRINT"
-	next $f5, " CANCEL"
-	next $df, " PREVIOUS"
-	next $eb, " NEXT"
+	db   "♂ PRINT"
+	next "♀ CANCEL"
+	next "← PREVIOUS"
+	next "→ NEXT"
 	db   "@"
 
 UnownDexVacantString:
@@ -20704,21 +13373,22 @@
 	call ByteFill
 	hlcoord 7, 11
 	ld a, $31
-	ld [$ffad], a
+	ld [hFillBox], a
 	lb bc, 7, 7
 	predef FillBox
 	ret
 ; 16dc7
 
-Function16dc7: ; 16dc7
-	ld hl, UnknownText_0x16e04
+PhotoStudio: ; 16dc7
+	ld hl, .Text_AskWhichMon
 	call PrintText
 	callba SelectMonFromParty
-	jr c, .asm_16df8
+	jr c, .cancel
 	ld a, [CurPartySpecies]
 	cp EGG
-	jr z, .asm_16dfd
-	ld hl, UnknownText_0x16e09
+	jr z, .egg
+
+	ld hl, .Text_HoldStill
 	call PrintText
 	call DisableSpriteUpdates
 	callba Function8461a
@@ -20725,1030 +13395,54 @@
 	call Function2b74
 	ld a, [$ffac]
 	and a
-	jr nz, .asm_16df8
-	ld hl, UnknownText_0x16e0e
-	jr .asm_16e00
+	jr nz, .cancel
+	ld hl, .Text_Presto
+	jr .print_text
 
-.asm_16df8
-	ld hl, UnknownText_0x16e13
-	jr .asm_16e00
+.cancel
+	ld hl, .Text_NoPicture
+	jr .print_text
 
-.asm_16dfd
-	ld hl, UnknownText_0x16e18
+.egg
+	ld hl, .Text_Egg
 
-.asm_16e00
+.print_text
 	call PrintText
 	ret
 ; 16e04
 
-UnknownText_0x16e04: ; 0x16e04
+.Text_AskWhichMon: ; 0x16e04
 	; Which #MON should I photo- graph?
 	text_jump UnknownText_0x1be024
 	db "@"
 ; 0x16e09
 
-UnknownText_0x16e09: ; 0x16e09
+.Text_HoldStill: ; 0x16e09
 	; All righty. Hold still for a bit.
 	text_jump UnknownText_0x1be047
 	db "@"
 ; 0x16e0e
 
-UnknownText_0x16e0e: ; 0x16e0e
+.Text_Presto: ; 0x16e0e
 	; Presto! All done. Come again, OK?
 	text_jump UnknownText_0x1be06a
 	db "@"
 ; 0x16e13
 
-UnknownText_0x16e13: ; 0x16e13
+.Text_NoPicture: ; 0x16e13
 	; Oh, no picture? Come again, OK?
 	text_jump UnknownText_0x1c0000
 	db "@"
 ; 0x16e18
 
-UnknownText_0x16e18: ; 0x16e18
+.Text_Egg: ; 0x16e18
 	; An EGG? My talent is worth more…
 	text_jump UnknownText_0x1c0021
 	db "@"
 ; 0x16e1d
 
+INCLUDE "engine/breeding/egg.asm"
 
-Function16e1d: ; 16e1d
-	call Function16ed6
-	ld c, $0
-	jp nc, .asm_16eb7
-	ld a, [wBreedMon1Species]
-	ld [CurPartySpecies], a
-	ld a, [wBreedMon1DVs]
-	ld [TempMonDVs], a
-	ld a, [wBreedMon1DVs + 1]
-	ld [TempMonDVs + 1], a
-	ld a, $3
-	ld [MonType], a
-	predef GetGender
-	jr c, .asm_16e70
-	ld b, $1
-	jr nz, .asm_16e48
-	inc b
-
-.asm_16e48
-	push bc
-	ld a, [wBreedMon2Species]
-	ld [CurPartySpecies], a
-	ld a, [wBreedMon2DVs]
-	ld [TempMonDVs], a
-	ld a, [wBreedMon2DVs + 1]
-	ld [TempMonDVs + 1], a
-	ld a, $3
-	ld [MonType], a
-	predef GetGender
-	pop bc
-	jr c, .asm_16e70
-	ld a, $1
-	jr nz, .asm_16e6d
-	inc a
-
-.asm_16e6d
-	cp b
-	jr nz, .asm_16e89
-
-.asm_16e70
-	ld c, $0
-	ld a, [wBreedMon1Species]
-	cp DITTO
-	jr z, .asm_16e82
-	ld a, [wBreedMon2Species]
-	cp DITTO
-	jr nz, .asm_16eb7
-	jr .asm_16e89
-
-.asm_16e82
-	ld a, [wBreedMon2Species]
-	cp DITTO
-	jr z, .asm_16eb7
-
-.asm_16e89
-	call Function16ebc
-	ld c, $ff
-	jp z, .asm_16eb7
-	ld a, [wBreedMon2Species]
-	ld b, a
-	ld a, [wBreedMon1Species]
-	cp b
-	ld c, $fe
-	jr z, .asm_16e9f
-	ld c, $80
-.asm_16e9f
-	ld a, [wBreedMon1ID]
-	ld b, a
-	ld a, [wBreedMon2ID]
-	cp b
-	jr nz, .asm_16eb7
-	ld a, [wBreedMon1ID + 1]
-	ld b, a
-	ld a, [wBreedMon2ID + 1]
-	cp b
-	jr nz, .asm_16eb7
-	ld a, c
-	sub $4d
-	ld c, a
-
-.asm_16eb7
-	ld a, c
-	ld [wd265], a
-	ret
-; 16ebc
-
-
-Function16ebc: ; 16ebc (5:6ebc)
-	ld a, [wBreedMon1DVs]
-	and $f
-	ld b, a
-	ld a, [wBreedMon2DVs]
-	and $f
-	cp b
-	ret nz
-	ld a, [wBreedMon1DVs + 1]
-	and $7
-	ld b, a
-	ld a, [wBreedMon2DVs + 1]
-	and $7
-	cp b
-	ret
-; 16ed6
-
-Function16ed6: ; 16ed6
-	ld a, [wBreedMon2Species]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, [BaseEggGroups]
-	cp $ff
-	jr z, .asm_16f3a
-	ld a, [wBreedMon1Species]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, [BaseEggGroups]
-	cp $ff
-	jr z, .asm_16f3a
-	ld a, [wBreedMon2Species]
-	cp DITTO
-	jr z, .asm_16f3c
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, [BaseEggGroups]
-	push af
-	and $f
-	ld b, a
-	pop af
-	and $f0
-	swap a
-	ld c, a
-	ld a, [wBreedMon1Species]
-	cp DITTO
-	jr z, .asm_16f3c
-	ld [CurSpecies], a
-	push bc
-	call GetBaseData
-	pop bc
-	ld a, [BaseEggGroups]
-	push af
-	and $f
-	ld d, a
-	pop af
-	and $f0
-	swap a
-	ld e, a
-	ld a, d
-	cp b
-	jr z, .asm_16f3c
-	cp c
-	jr z, .asm_16f3c
-	ld a, e
-	cp b
-	jr z, .asm_16f3c
-	cp c
-	jr z, .asm_16f3c
-
-.asm_16f3a
-	and a
-	ret
-
-.asm_16f3c
-	scf
-	ret
-; 16f3e
-
-DoEggStep:: ; 16f3e
-	ld de, PartySpecies
-	ld hl, PartyMon1Happiness
-	ld c, 0
-.loop
-	ld a, [de]
-	inc de
-	cp -1
-	ret z
-	cp EGG
-	jr nz, .next
-	dec [hl]
-	jr nz, .next
-	ld a, 1
-	and a
-	ret
-
-.next
-	push de
-	ld de, PartyMon2 - PartyMon1
-	add hl, de
-	pop de
-	jr .loop
-; 16f5e
-
-OverworldHatchEgg:: ; 16f5e
-	call ResetWindow
-	call LoadMenuDataHeader_0x1d75
-	call Function16f70
-	call Function2b4d
-	call RestartMapMusic
-	jp LoadMoveSprites
-; 16f70
-
-Function16f70: ; 16f70 (5:6f70)
-	ld de, PartySpecies
-	ld hl, PartyMon1Happiness
-	xor a
-	ld [CurPartyMon], a
-
-Function16f7a: ; 16f7a (5:6f7a)
-	ld a, [de]
-	inc de
-	cp -1
-	jp z, Function1708a
-	push de
-	push hl
-	cp EGG
-	jp nz, Function1707d
-	ld a, [hl]
-	and a
-	jp nz, Function1707d
-	ld [hl], $78
-
-	push de
-
-	callba Function4dbb8
-	callba MobileFn_10608d
-	ld a, [CurPartyMon]
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, PartyMon2 - PartyMon1
-	call AddNTimes
-	ld a, [hl]
-	ld [CurPartySpecies], a
-	dec a
-	call SetSeenAndCaughtMon
-
-	ld a, [CurPartySpecies]
-	cp TOGEPI
-	jr nz, .nottogepi
-	; set the event flag for hatching togepi
-	ld de, EVENT_TOGEPI_HATCHED
-	ld b, SET_FLAG
-	call EventFlagAction
-.nottogepi
-
-	pop de
-
-	ld a, [CurPartySpecies]
-	dec de
-	ld [de], a
-	ld [wd265], a
-	ld [CurSpecies], a
-	call GetPokemonName
-	xor a
-	ld [wd26b], a
-	call GetBaseData
-	ld a, [CurPartyMon]
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, PartyMon2 - PartyMon1
-	call AddNTimes
-	push hl
-	ld bc, PartyMon1MaxHP - PartyMon1
-	add hl, bc
-	ld d, h
-	ld e, l
-	pop hl
-	push hl
-	ld bc, PartyMon1Level - PartyMon1
-	add hl, bc
-	ld a, [hl]
-	ld [CurPartyLevel], a
-	pop hl
-	push hl
-	ld bc, PartyMon1Status - PartyMon1
-	add hl, bc
-	xor a
-	ld [hli], a
-	ld [hl], a
-	pop hl
-	push hl
-	ld bc, PartyMon1Exp + 2 - PartyMon1
-	add hl, bc
-	ld b, $0
-	predef CalcPkmnStats
-	pop bc
-	ld hl, PartyMon1MaxHP - PartyMon1
-	add hl, bc
-	ld d, h
-	ld e, l
-	ld hl, PartyMon1HP - PartyMon1
-	add hl, bc
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	ld [hl], a
-	ld hl, PartyMon1ID - PartyMon1
-	add hl, bc
-	ld a, [PlayerID]
-	ld [hli], a
-	ld a, [PlayerID + 1]
-	ld [hl], a
-	ld a, [CurPartyMon]
-	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
-	ld bc, NAME_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld hl, PlayerName
-	call CopyBytes
-	ld hl, UnknownText_0x1708b
-	call PrintText
-	ld a, [CurPartyMon]
-	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
-	call AddNTimes
-	ld d, h
-	ld e, l
-	push de
-	ld hl, UnknownText_0x170ba
-	call PrintText
-	call YesNoBox
-	pop de
-	jr c, .nonickname
-	ld a, $1
-	ld [wd26b], a
-	xor a
-	ld [MonType], a
-	push de
-	ld b, $0
-	callba Function116c1
-	pop hl
-	ld de, StringBuffer1
-	call InitName
-	jr Function1707d
-.nonickname
-	ld hl, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-Function1707d: ; 1707d (5:707d)
-	ld hl, CurPartyMon
-	inc [hl]
-	pop hl
-	ld de, PartyMon2 - PartyMon1
-	add hl, de
-	pop de
-	jp Function16f7a
-
-Function1708a: ; 1708a (5:708a)
-	ret
-; 1708b (5:708b)
-
-UnknownText_0x1708b: ; 0x1708b
-	; Huh? @ @
-	text_jump UnknownText_0x1c0db0
-	start_asm
-; 0x17090
-
-Function17090: ; 17090
-	ld hl, VramState
-	res 0, [hl]
-	push hl
-	push de
-	push bc
-	ld a, [CurPartySpecies]
-	push af
-	call Function1728f
-	ld hl, UnknownText_0x170b0
-	call PrintText
-	pop af
-	ld [CurPartySpecies], a
-	pop bc
-	pop de
-	pop hl
-	ld hl, UnknownText_0x170b5
-	ret
-; 170b0 (5:70b0)
-
-UnknownText_0x170b0: ; 0x170b0
-	;
-	text_jump UnknownText_0x1c0db8
-	db "@"
-; 0x170b5
-
-UnknownText_0x170b5: ; 0x170b5
-	; came out of its EGG!@ @
-	text_jump UnknownText_0x1c0dba
-	db "@"
-; 0x170ba
-
-UnknownText_0x170ba: ; 0x170ba
-	; Give a nickname to @ ?
-	text_jump UnknownText_0x1c0dd8
-	db "@"
-; 0x170bf
-
-Function170bf: ; 170bf
-	call Function17197
-	ld d, h
-	ld e, l
-	ld b, NUM_MOVES
-.loop
-	ld a, [de]
-	and a
-	jr z, .done
-	ld hl, wEggMonMoves
-	ld c, NUM_MOVES
-.next
-	ld a, [de]
-	cp [hl]
-	jr z, .skip
-	inc hl
-	dec c
-	jr nz, .next
-	call Function170e4
-	jr nc, .skip
-	call Function17169
-
-.skip
-	inc de
-	dec b
-	jr nz, .loop
-
-.done
-	ret
-; 170e4
-
-Function170e4: ; 170e4
-GLOBAL EggMoves
-
-	push bc
-	ld a, [wEggMonSpecies]
-	dec a
-	ld c, a
-	ld b, 0
-	ld hl, EggMovePointers
-rept 2
-	add hl, bc
-endr
-	ld a, BANK(EggMovePointers)
-	call GetFarHalfword
-.loop
-	ld a, BANK(EggMoves)
-	call GetFarByte
-	cp -1
-	jr z, .found_mon
-	ld b, a
-	ld a, [de]
-	cp b
-	jr z, .done_carry
-	inc hl
-	jr .loop
-
-.found_mon
-	call Function1720b
-	ld b, NUM_MOVES
-.loop2
-	ld a, [de]
-	cp [hl]
-	jr z, .found_eggmove
-	inc hl
-	dec b
-	jr z, .inherit_tmhm
-	jr .loop2
-
-.found_eggmove
-	ld a, [wEggMonSpecies]
-	dec a
-	ld c, a
-	ld b, 0
-	ld hl, EvosAttacksPointers
-rept 2
-	add hl, bc
-endr
-	ld a, BANK(EvosAttacksPointers)
-	call GetFarHalfword
-.loop3
-	ld a, BANK(EvosAttacks)
-	call GetFarByte
-	inc hl
-	and a
-	jr nz, .loop3
-.loop4
-	ld a, BANK(EvosAttacks)
-	call GetFarByte
-	and a
-	jr z, .inherit_tmhm
-	inc hl
-	ld a, BANK(EvosAttacks)
-	call GetFarByte
-	ld b, a
-	ld a, [de]
-	cp b
-	jr z, .done_carry
-	inc hl
-	jr .loop4
-
-.inherit_tmhm
-	ld hl, TMHMMoves
-.loop5
-	ld a, BANK(TMHMMoves)
-	call GetFarByte
-	inc hl
-	and a
-	jr z, .done
-	ld b, a
-	ld a, [de]
-	cp b
-	jr nz, .loop5
-	ld [wd262], a
-	predef CanLearnTMHMMove
-	ld a, c
-	and a
-	jr z, .done
-
-.done_carry
-	pop bc
-	scf
-	ret
-
-.done
-	pop bc
-	and a
-	ret
-; 17169
-
-Function17169: ; 17169
-	push de
-	push bc
-	ld a, [de]
-	ld b, a
-	ld hl, wEggMonMoves
-	ld c, NUM_MOVES
-.loop
-	ld a, [hli]
-	and a
-	jr z, .done
-	dec c
-	jr nz, .loop
-	ld de, wEggMonMoves
-	ld hl, wEggMonMoves + 1
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-
-.done
-	dec hl
-	ld [hl], b
-	ld hl, wEggMonMoves
-	ld de, wEggMonPP
-	predef FillPP
-	pop bc
-	pop de
-	ret
-; 17197
-
-Function17197: ; 17197
-	ld hl, wBreedMon2Moves
-	ld a, [wBreedMon1Species]
-	cp DITTO
-	jr z, .ditto1
-	ld a, [wBreedMon2Species]
-	cp DITTO
-	jr z, .ditto2
-	ld a, [wDittoInDaycare]
-	and a
-	ret z
-	ld hl, wBreedMon1Moves
-	ret
-
-.ditto1
-	ld a, [CurPartySpecies]
-	push af
-	ld a, [wBreedMon2Species]
-	ld [CurPartySpecies], a
-	ld a, [wBreedMon2DVs]
-	ld [TempMonDVs], a
-	ld a, [wBreedMon2DVs + 1]
-	ld [TempMonDVs + 1], a
-	ld a, $3
-	ld [MonType], a
-	predef GetGender
-	jr c, .inherit_mon2_moves
-	jr nz, .inherit_mon2_moves
-	jr .inherit_mon1_moves
-
-.ditto2
-	ld a, [CurPartySpecies]
-	push af
-	ld a, [wBreedMon1Species]
-	ld [CurPartySpecies], a
-	ld a, [wBreedMon1DVs]
-	ld [TempMonDVs], a
-	ld a, [wBreedMon1DVs + 1]
-	ld [TempMonDVs + 1], a
-	ld a, $3
-	ld [MonType], a
-	predef GetGender
-	jr c, .inherit_mon1_moves
-	jr nz, .inherit_mon1_moves
-
-.inherit_mon2_moves
-	ld hl, wBreedMon2Moves
-	pop af
-	ld [CurPartySpecies], a
-	ret
-
-.inherit_mon1_moves
-	ld hl, wBreedMon1Moves
-	pop af
-	ld [CurPartySpecies], a
-	ret
-; 1720b
-
-Function1720b: ; 1720b
-	ld hl, wBreedMon1Moves
-	ld a, [wBreedMon1Species]
-	cp DITTO
-	ret z
-	ld a, [wBreedMon2Species]
-	cp DITTO
-	jr z, .ditto
-	ld a, [wDittoInDaycare]
-	and a
-	ret z
-
-.ditto
-	ld hl, wBreedMon2Moves
-	ret
-; 17224
-
-
-Function17224: ; 17224 (5:7224)
-	push de
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call GetBaseData
-	ld hl, BattleMonDVs
-	predef GetUnownLetter
-	pop de
-	predef_jump GetFrontpic
-
-Function1723c: ; 1723c (5:723c)
-	push de
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call GetBaseData
-	ld hl, BattleMonDVs
-	predef GetUnownLetter
-	pop de
-	predef_jump Function5108b
-
-Function17254: ; 17254 (5:7254)
-	push af
-	call WaitTop
-	push hl
-	push bc
-	hlcoord 0, 0
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	pop bc
-	pop hl
-	ld a, b
-	ld [hBGMapAddress + 1], a
-	ld a, c
-	ld [$ffad], a
-	ld bc, $707
-	predef FillBox
-	pop af
-	call Function17363
-	call SetPalettes
-	jp WaitBGMap
-
-Function1727f: ; 1727f (5:727f)
-	push hl
-	push de
-	push bc
-	callab Function8cf69
-	call DelayFrame
-	pop bc
-	pop de
-	pop hl
-	ret
-
-Function1728f: ; 1728f (5:728f)
-	ld a, [wd265]
-	ld [wJumptableIndex], a
-	ld a, [CurSpecies]
-	push af
-	ld de, MUSIC_NONE
-	call PlayMusic
-	callba Function8000
-	call DisableLCD
-	ld hl, EggHatchGFX
-	ld de, VTiles0 tile $00
-	ld bc, $20
-	ld a, BANK(EggHatchGFX)
-	call FarCopyBytes
-	callba Function8cf53
-	ld de, VTiles2 tile $00
-	ld a, [wJumptableIndex]
-	call Function1723c
-	ld de, VTiles2 tile $31
-	ld a, EGG
-	call Function17224
-	ld de, MUSIC_EVOLUTION
-	call PlayMusic
-	call EnableLCD
-	hlcoord 7, 4
-	ld b, $98
-	ld c, $31
-	ld a, EGG
-	call Function17254
-	ld c, $50
-	call DelayFrames
-	xor a
-	ld [wcf64], a
-	ld a, [hSCX] ; $ff00+$cf
-	ld b, a
-.asm_172ee
-	ld hl, wcf64
-	ld a, [hl]
-	inc [hl]
-	cp $8
-	jr nc, .asm_17327
-	ld e, [hl]
-.asm_172f8
-	ld a, $2
-	ld [hSCX], a ; $ff00+$cf
-	ld a, $fe
-	ld [wc3c0], a
-	call Function1727f
-	ld c, $2
-	call DelayFrames
-	ld a, $fe
-	ld [hSCX], a ; $ff00+$cf
-	ld a, $2
-	ld [wc3c0], a
-	call Function1727f
-	ld c, $2
-	call DelayFrames
-	dec e
-	jr nz, .asm_172f8
-	ld c, $10
-	call DelayFrames
-	call Function1736d
-	jr .asm_172ee
-.asm_17327
-	ld de, SFX_EGG_HATCH
-	call PlaySFX
-	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [wc3c0], a
-	call ClearSprites
-	call Function173b3
-	hlcoord 6, 3
-	ld b, $98
-	ld c, $0
-	ld a, [wJumptableIndex]
-	call Function17254
-	call Function17418
-	call WaitSFX
-	ld a, [wJumptableIndex]
-	ld [CurPartySpecies], a
-	hlcoord 6, 3
-	ld d, $0
-	ld e, $5
-	predef Functiond008e
-	pop af
-	ld [CurSpecies], a
-	ret
-
-Function17363: ; 17363 (5:7363)
-	ld [PlayerHPPal], a
-	ld b, $b
-	ld c, $0
-	jp GetSGBLayout
-
-Function1736d: ; 1736d (5:736d)
-	ld a, [wcf64]
-	dec a
-	and $7
-	cp $7
-	ret z
-	srl a
-	ret nc
-	swap a
-	srl a
-	add $4c
-	ld d, a
-	ld e, $58
-	ld a, $19
-	call Function3b2a
-	ld hl, $3
-	add hl, bc
-	ld [hl], $0
-	ld de, SFX_EGG_CRACK
-	jp PlaySFX
-; 17393 (5:7393)
-
-EggHatchGFX: ; 17393
-INCBIN "gfx/unknown/017393.2bpp"
-; 173b3
-
-Function173b3: ; 173b3 (5:73b3)
-	callba Function8cf53
-	ld hl, Unknown_173ef
-.loop
-	ld a, [hli]
-	cp $ff
-	jr z, .done
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	push hl
-	push bc
-	ld a, $1c
-	call Function3b2a
-	ld hl, $3
-	add hl, bc
-	ld [hl], $0
-	pop de
-	ld a, e
-	ld hl, $1
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	ld hl, $b
-	add hl, bc
-	ld [hl], d
-	pop hl
-	jr .loop
-.done
-	ld de, SFX_EGG_HATCH
-	call PlaySFX
-	call Function1727f
-	ret
-; 173ef (5:73ef)
-
-Unknown_173ef: ; 173ef
-; Probably OAM.
-	db $54, $48, $00, $3c
-	db $5c, $48, $01, $04
-	db $54, $50, $00, $30
-	db $5c, $50, $01, $10
-	db $54, $58, $02, $24
-	db $5c, $58, $03, $1c
-	db $50, $4c, $00, $36
-	db $60, $4c, $01, $0a
-	db $50, $54, $02, $2a
-	db $60, $54, $03, $16
-	db $ff
-; 17418
-
-Function17418: ; 17418 (5:7418)
-	ld c, $81
-.asm_1741a
-	call Function1727f
-	dec c
-	jr nz, .asm_1741a
-	ret
-
-Special_DayCareMon1: ; 17421
-	ld hl, UnknownText_0x17467
-	call PrintText
-	ld a, [wBreedMon1Species]
-	call PlayCry
-	ld a, [wDaycareLady]
-	bit 0, a
-	jr z, Function1745f
-	call KeepTextOpen
-	ld hl, wBreedMon2Nick
-	call Function1746c
-	jp PrintText
-
-Special_DayCareMon2: ; 17440
-	ld hl, UnknownText_0x17462
-	call PrintText
-	ld a, [wBreedMon2Species]
-	call PlayCry
-	ld a, [wDaycareMan]
-	bit 0, a
-	jr z, Function1745f
-	call KeepTextOpen
-	ld hl, wBreedMon1Nick
-	call Function1746c
-	jp PrintText
-
-Function1745f: ; 1745f
-	jp Functiona80
-; 17462
-
-UnknownText_0x17462: ; 0x17462
-	; It's @ that was left with the DAY-CARE LADY.
-	text_jump UnknownText_0x1c0df3
-	db "@"
-; 0x17467
-
-UnknownText_0x17467: ; 0x17467
-	; It's @ that was left with the DAY-CARE MAN.
-	text_jump UnknownText_0x1c0e24
-	db "@"
-; 0x1746c
-
-Function1746c: ; 1746c
-	push bc
-	ld de, StringBuffer1
-	ld bc, $000b
-	call CopyBytes
-	call Function16e1d
-	pop bc
-	ld a, [wd265]
-	ld hl, UnknownText_0x1749c
-	cp $ff
-	jr z, .asm_1749b
-	ld hl, UnknownText_0x174a1
-	and a
-	jr z, .asm_1749b
-	ld hl, UnknownText_0x174a6
-	cp 230
-	jr nc, .asm_1749b
-	cp 70
-	ld hl, UnknownText_0x174ab
-	jr nc, .asm_1749b
-	ld hl, UnknownText_0x174b0
-
-.asm_1749b
-	ret
-; 1749c
-
-UnknownText_0x1749c: ; 0x1749c
-	; It's brimming with energy.
-	text_jump UnknownText_0x1c0e54
-	db "@"
-; 0x174a1
-
-UnknownText_0x174a1: ; 0x174a1
-	; It has no interest in @ .
-	text_jump UnknownText_0x1c0e6f
-	db "@"
-; 0x174a6
-
-UnknownText_0x174a6: ; 0x174a6
-	; It appears to care for @ .
-	text_jump UnknownText_0x1c0e8d
-	db "@"
-; 0x174ab
-
-UnknownText_0x174ab: ; 0x174ab
-	; It's friendly with @ .
-	text_jump UnknownText_0x1c0eac
-	db "@"
-; 0x174b0
-
-UnknownText_0x174b0: ; 0x174b0
-	; It shows interest in @ .
-	text_jump UnknownText_0x1c0ec6
-	db "@"
-; 0x174b5
-
-Function_174b5: ; 174b5
-	ld hl, String_174b9
-	ret
-; 174b9
-
-String_174b9: ; 174b9
-	db "@"
-; 174ba
-
-
 SECTION "Tileset Data 1", ROMX, BANK[TILESETS_1]
 
 INCLUDE "tilesets/data_1.asm"
@@ -21767,249 +13461,8 @@
 
 SECTION "bank8", ROMX, BANK[$8]
 
+INCLUDE "engine/clock_reset.asm"
 
-Function20000: ; 20000 (8:4000)
-	push hl
-	dec a
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_20015
-rept 4
-	add hl, de
-endr
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	inc hl
-	ld b, [hl]
-	inc hl
-	ld c, [hl]
-	pop hl
-	ret
-; 20015 (8:4015)
-
-Unknown_20015: ; 20015
-	dw wd1ed
-	db $07, $04
-
-	dw wd1ee
-	db $18, $0c
-
-	dw wd1ef
-	db $3c, $0f
-; 20021
-
-Function20021: ; 20021 (8:4021)
-	ld hl, UnknownText_0x20047
-	call PrintText
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	call LoadMenuDataHeader_0x1d75
-	call ClearTileMap
-	ld hl, UnknownText_0x2004c
-	call PrintText
-	call Function20051
-	call ExitMenu
-	pop bc
-	ld hl, Options
-	ld [hl], b
-	ld c, a
-	ret
-; 20047 (8:4047)
-
-UnknownText_0x20047: ; 0x20047
-	; The clock's time may be wrong. Please reset the time.
-	text_jump UnknownText_0x1c40e6
-	db "@"
-; 0x2004c
-
-UnknownText_0x2004c: ; 0x2004c
-	; Set with the Control Pad. Confirm: A Button Cancel:  B Button
-	text_jump UnknownText_0x1c411c
-	db "@"
-; 0x20051
-
-Function20051: ; 20051 (8:4051)
-	ld a, $1
-	ld [Buffer1], a ; wd1ea (aliases: MagikarpLength)
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
-	ld a, $8
-	ld [wd1ec], a
-	call UpdateTime
-	call GetWeekday
-	ld [wd1ed], a
-	ld a, [hHours] ; $ff00+$94
-	ld [wd1ee], a
-	ld a, [hMinutes] ; $ff00+$96
-	ld [wd1ef], a
-.asm_20071
-	call Function200ba
-	jr nc, .asm_20071
-	and a
-	ret nz
-	call Function2011f
-	ld hl, UnknownText_0x200b0
-	call PrintText
-	call YesNoBox
-	jr c, .asm_200ad
-	ld a, [wd1ed]
-	ld [StringBuffer2], a
-	ld a, [wd1ee]
-	ld [StringBuffer2 + 1], a
-	ld a, [wd1ef]
-	ld [StringBuffer2 + 2], a
-	xor a
-	ld [StringBuffer2 + 3], a
-	call Function677
-	call Function2011f
-	ld hl, UnknownText_0x200b5
-	call PrintText
-	call Functiona80
-	xor a
-	ret
-.asm_200ad
-	ld a, $1
-	ret
-; 200b0 (8:40b0)
-
-UnknownText_0x200b0: ; 0x200b0
-	; Is this OK?
-	text_jump UnknownText_0x1c415b
-	db "@"
-; 0x200b5
-
-UnknownText_0x200b5: ; 0x200b5
-	; The clock has been reset.
-	text_jump UnknownText_0x1c4168
-	db "@"
-; 0x200ba
-
-Function200ba: ; 200ba (8:40ba)
-	call Function354b
-	ld c, a
-	push af
-	call Function2011f
-	pop af
-	bit 0, a
-	jr nz, .asm_200dd
-	bit 1, a
-	jr nz, .asm_200e1
-	bit 6, a
-	jr nz, .asm_200e5
-	bit 7, a
-	jr nz, .asm_200f6
-	bit 5, a
-	jr nz, .asm_20108
-	bit 4, a
-	jr nz, .asm_20112
-	jr Function200ba
-.asm_200dd
-	ld a, $0
-	scf
-	ret
-.asm_200e1
-	ld a, $1
-	scf
-	ret
-.asm_200e5
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
-	call Function20000
-	ld a, [de]
-	inc a
-	ld [de], a
-	cp b
-	jr c, .asm_2011d
-	ld a, $0
-	ld [de], a
-	jr .asm_2011d
-.asm_200f6
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
-	call Function20000
-	ld a, [de]
-	dec a
-	ld [de], a
-	cp $ff
-	jr nz, .asm_2011d
-	ld a, b
-	dec a
-	ld [de], a
-	jr .asm_2011d
-.asm_20108
-	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
-	dec [hl]
-	jr nz, .asm_2011d
-	ld [hl], $3
-	jr .asm_2011d
-.asm_20112
-	ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
-	inc [hl]
-	ld a, [hl]
-	cp $4
-	jr c, .asm_2011d
-	ld [hl], $1
-.asm_2011d
-	xor a
-	ret
-
-Function2011f: ; 2011f (8:411f)
-	hlcoord 0, 5
-	ld b, $5
-	ld c, $12
-	call TextBox
-	decoord 1, 8
-	ld a, [wd1ed]
-	ld b, a
-	callba Function5b05
-	ld a, [wd1ee]
-	ld b, a
-	ld a, [wd1ef]
-	ld c, a
-	decoord 11, 8
-	callba Function1dd6bb
-	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
-	lb de, $7f, $7f
-	call Function20168
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
-	lb de, $61, $ee
-	call Function20168
-	ld a, [Buffer1] ; wd1ea (aliases: MagikarpLength)
-	ld [Buffer2], a ; wd1eb (aliases: MovementType)
-	ret
-; 20160 (8:4160)
-
-Function20160: ; 20160
-	ld a, [wd1ec]
-	ld b, a
-	call GetTileCoord
-	ret
-; 20168
-
-Function20168: ; 20168 (8:4168)
-	push de
-	call Function20000
-	ld a, [wd1ec]
-	dec a
-	ld b, a
-	call GetTileCoord
-	pop de
-	ld [hl], d
-	ld bc, $28
-	add hl, bc
-	ld [hl], e
-	ret
-; 2017c (8:417c)
-
-String_2017c: ; 2017c
-	db "じ@" ; HR
-; 2017e
-
-String_2017e: ; 2017e
-	db "ふん@" ; MIN
-; 20181
-
-
 SECTION "Tileset Data 3", ROMX, BANK[TILESETS_3]
 
 INCLUDE "tilesets/data_3.asm"
@@ -22027,592 +13480,8 @@
 	dw BattleMonNick
 ; 2400e
 
-Function2400e:: ; 2400e
-	ld hl, Function1c66
-	ld a, [wcf94]
-	rst FarCall
-	call Function24085
-	call UpdateSprites
-	call Function321c
-	call Function2408f
-	ret
-; 24022
+INCLUDE "engine/menu.asm"
 
-Function24022:: ; 24022
-	ld hl, Function1c66
-	ld a, [wcf94]
-	rst FarCall
-	call Function24085
-	callba MobileTextBorder
-	call UpdateSprites
-	call Function321c
-	call Function2408f
-	ret
-; 2403c
-
-Function2403c:: ; 2403c
-	ld hl, Function1c66
-	ld a, [wcf94]
-	rst FarCall
-	call Function24085
-	callba MobileTextBorder
-	call UpdateSprites
-	call Function321c
-	call Function2411a
-	ld hl, wcfa5
-	set 7, [hl]
-.asm_2405a
-	call DelayFrame
-	callba Function10032e
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_24076
-	call Function241ba
-	ld a, [wcfa8]
-	and c
-	jr z, .asm_2405a
-	call Function24098
-	ret
-
-.asm_24076
-	ld a, [wcfa4]
-	ld c, a
-	ld a, [wcfa3]
-	call SimpleMultiply
-	ld [wMenuCursorBuffer], a
-	and a
-	ret
-; 24085
-
-
-
-Function24085: ; 24085
-	xor a
-	ld [hBGMapMode], a
-	call Function1cbb
-	call Function240db
-	ret
-; 2408f
-
-Function2408f: ; 2408f
-	call Function2411a
-	call Function1bc9
-	call Function1ff8
-
-Function24098: ; 24098
-	ld a, [wcf91]
-	bit 1, a
-	jr z, .asm_240a6
-	call Function1bdd
-	bit 2, a
-	jr nz, .asm_240c9
-
-.asm_240a6
-	ld a, [wcf91]
-	bit 0, a
-	jr nz, .asm_240b4
-	call Function1bdd
-	bit 1, a
-	jr nz, .asm_240cb
-
-.asm_240b4
-	ld a, [wcfa4]
-	ld c, a
-	ld a, [wcfa9]
-	dec a
-	call SimpleMultiply
-	ld c, a
-	ld a, [wcfaa]
-	add c
-	ld [wMenuCursorBuffer], a
-	and a
-	ret
-
-.asm_240c9
-	scf
-	ret
-
-.asm_240cb
-	scf
-	ret
-; 240cd
-
-Function240cd: ; 240cd
-	ld a, [wcf92]
-	and $f
-	ret
-; 240d3
-
-Function240d3: ; 240d3
-	ld a, [wcf92]
-	swap a
-	and $f
-	ret
-; 240db
-
-Function240db: ; 240db
-	ld hl, wcf95
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	call Function1cc6
-	call GetTileCoord
-	call Function240d3
-	ld b, a
-.asm_240eb
-	push bc
-	push hl
-	call Function240cd
-	ld c, a
-.asm_240f1
-	push bc
-	ld a, [wcf94]
-	call Function201c
-	inc de
-	ld a, [wcf93]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	pop bc
-	dec c
-	jr nz, .asm_240f1
-	pop hl
-	ld bc, $0028
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_240eb
-	ld hl, wcf98
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	or h
-	ret z
-	ld a, [wcf97]
-	rst FarCall
-	ret
-; 2411a
-
-
-Function2411a: ; 2411a (9:411a)
-	call Function1cc6
-	ld a, b
-	ld [wcfa1], a
-	dec c
-	ld a, c
-	ld [wcfa2], a
-	call Function240d3
-	ld [wcfa3], a
-	call Function240cd
-	ld [wcfa4], a
-	call Function24179
-	call Function2418a
-	call Function24193
-	ld a, [wcfa4]
-	ld e, a
-	ld a, [wMenuCursorBuffer]
-	ld b, a
-	xor a
-	ld d, $0
-.asm_24146
-	inc d
-	add e
-	cp b
-	jr c, .asm_24146
-	sub e
-	ld c, a
-	ld a, b
-	sub c
-	and a
-	jr z, .asm_24157
-	cp e
-	jr z, .asm_24159
-	jr c, .asm_24159
-.asm_24157
-	ld a, $1
-.asm_24159
-	ld [wcfaa], a
-	ld a, [wcfa3]
-	ld e, a
-	ld a, d
-	and a
-	jr z, .asm_24169
-	cp e
-	jr z, .asm_2416b
-	jr c, .asm_2416b
-.asm_24169
-	ld a, $1
-.asm_2416b
-	ld [wcfa9], a
-	xor a
-	ld [wcfab], a
-	ld [wcfac], a
-	ld [wcfad], a
-	ret
-; 24179
-
-Function24179: ; 24179
-	xor a
-	ld hl, wcfa5
-	ld [hli], a
-	ld [hld], a
-	ld a, [wcf91]
-	bit 5, a
-	ret z
-	set 5, [hl]
-	set 4, [hl]
-	ret
-; 2418a
-
-Function2418a: ; 2418a
-	ld a, [wcf93]
-	or $20
-	ld [wcfa7], a
-	ret
-; 24193
-
-Function24193: ; 24193
-	ld hl, wcf91
-	ld a, $1
-	bit 0, [hl]
-	jr nz, .asm_2419e
-	or $2
-
-.asm_2419e
-	bit 1, [hl]
-	jr z, .asm_241a4
-	or $4
-
-.asm_241a4
-	ld [wcfa8], a
-	ret
-; 241a8
-
-
-Function241a8:: ; 241a8
-	call Function24329
-Function241ab:: ; 241ab
-	ld hl, wcfa6
-	res 7, [hl]
-	ld a, [hBGMapMode]
-	push af
-	call Function24216
-	pop af
-	ld [hBGMapMode], a
-	ret
-; 241ba
-
-Function241ba: ; 241ba
-	ld hl, wcfa6
-	res 7, [hl]
-	ld a, [hBGMapMode]
-	push af
-	call Function2431a
-	call Function24249
-	jr nc, .asm_241cd
-	call Function24270
-
-.asm_241cd
-	pop af
-	ld [hBGMapMode], a
-	call Function1bdd
-	ld c, a
-	ret
-; 241d5
-
-
-Function241d5: ; 241d5
-	call Function24329
-.asm_241d8
-	call Function2431a
-	call Function10402d ; BUG: This function is in another bank.
-	call Function241fa
-	jr nc, .asm_241f9
-	call Function24270
-	jr c, .asm_241f9
-	ld a, [wcfa5]
-	bit 7, a
-	jr nz, .asm_241f9
-	call Function1bdd
-	ld c, a
-	ld a, [wcfa8]
-	and c
-	jr z, .asm_241d8
-
-.asm_241f9
-	ret
-; 241fa
-
-Function241fa: ; 241fa
-.asm_241fa
-	call Function24259
-	ret c
-	ld c, $1
-	ld b, $3
-	call Function10062d ; BUG: This function is in another bank.
-	ret c
-	callba Function100337
-	ret c
-	ld a, [wcfa5]
-	bit 7, a
-	jr z, .asm_241fa
-	and a
-	ret
-; 24216
-
-
-Function24216: ; 24216
-.asm_24216
-	call Function2431a
-	call Function24238
-	call Function24249
-	jr nc, .asm_24237
-	call Function24270
-	jr c, .asm_24237
-	ld a, [wcfa5]
-	bit 7, a
-	jr nz, .asm_24237
-	call Function1bdd
-	ld b, a
-	ld a, [wcfa8]
-	and b
-	jr z, .asm_24216
-
-.asm_24237
-	ret
-; 24238
-
-Function24238: ; 24238
-	ld a, [hOAMUpdate]
-	push af
-	ld a, $1
-	ld [hOAMUpdate], a
-	call WaitBGMap
-	pop af
-	ld [hOAMUpdate], a
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 24249
-
-Function24249: ; 24249
-.asm_24249
-	call RTC
-	call Function24259
-	ret c
-	ld a, [wcfa5]
-	bit 7, a
-	jr z, .asm_24249
-	and a
-	ret
-; 24259
-
-Function24259: ; 24259
-	ld a, [wcfa5]
-	bit 6, a
-	jr z, .asm_24266
-	callab Function8cf62
-
-.asm_24266
-	call JoyTextDelay
-	call Function1bdd
-	and a
-	ret z
-	scf
-	ret
-; 24270
-
-Function24270: ; 24270
-	call Function1bdd
-	bit 0, a
-	jp nz, Function24318
-	bit 1, a
-	jp nz, Function24318
-	bit 2, a
-	jp nz, Function24318
-	bit 3, a
-	jp nz, Function24318
-	bit 4, a
-	jr nz, .asm_242fa
-	bit 5, a
-	jr nz, .asm_242dc
-	bit 6, a
-	jr nz, .asm_242be
-	bit 7, a
-	jr nz, .asm_242a0
-	and a
-	ret
-
-.asm_24299: ; 24299
-	ld hl, wcfa6
-	set 7, [hl]
-	scf
-	ret
-
-.asm_242a0
-	ld hl, wcfa9
-	ld a, [wcfa3]
-	cp [hl]
-	jr z, .asm_242ac
-	inc [hl]
-	xor a
-	ret
-
-.asm_242ac
-	ld a, [wcfa5]
-	bit 5, a
-	jr nz, .asm_242ba
-	bit 3, a
-	jp nz, .asm_24299
-	xor a
-	ret
-
-.asm_242ba
-	ld [hl], $1
-	xor a
-	ret
-
-.asm_242be
-	ld hl, wcfa9
-	ld a, [hl]
-	dec a
-	jr z, .asm_242c8
-	ld [hl], a
-	xor a
-	ret
-
-.asm_242c8
-	ld a, [wcfa5]
-	bit 5, a
-	jr nz, .asm_242d6
-	bit 2, a
-	jp nz, .asm_24299
-	xor a
-	ret
-
-.asm_242d6
-	ld a, [wcfa3]
-	ld [hl], a
-	xor a
-	ret
-
-.asm_242dc
-	ld hl, wcfaa
-	ld a, [hl]
-	dec a
-	jr z, .asm_242e6
-	ld [hl], a
-	xor a
-	ret
-
-.asm_242e6
-	ld a, [wcfa5]
-	bit 4, a
-	jr nz, .asm_242f4
-	bit 1, a
-	jp nz, .asm_24299
-	xor a
-	ret
-
-.asm_242f4
-	ld a, [wcfa4]
-	ld [hl], a
-	xor a
-	ret
-
-.asm_242fa
-	ld hl, wcfaa
-	ld a, [wcfa4]
-	cp [hl]
-	jr z, .asm_24306
-	inc [hl]
-	xor a
-	ret
-
-.asm_24306
-	ld a, [wcfa5]
-	bit 4, a
-	jr nz, .asm_24314
-	bit 0, a
-	jp nz, .asm_24299
-	xor a
-	ret
-
-.asm_24314
-	ld [hl], $1
-	xor a
-	ret
-; 24318
-
-Function24318: ; 24318
-	xor a
-	ret
-; 2431a
-
-Function2431a: ; 2431a
-	ld hl, wcfac
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hl]
-	cp $ed
-	jr nz, Function24329
-	ld a, [wcfab]
-	ld [hl], a
-
-Function24329: ; 24329
-	ld a, [wcfa1]
-	ld b, a
-	ld a, [wcfa2]
-	ld c, a
-	call GetTileCoord
-	ld a, [wcfa7]
-	swap a
-	and $f
-	ld c, a
-	ld a, [wcfa9]
-	ld b, a
-	xor a
-	dec b
-	jr z, .asm_24348
-.asm_24344
-	add c
-	dec b
-	jr nz, .asm_24344
-
-.asm_24348
-	ld c, $14
-	call AddNTimes
-	ld a, [wcfa7]
-	and $f
-	ld c, a
-	ld a, [wcfaa]
-	ld b, a
-	xor a
-	dec b
-	jr z, .asm_2435f
-.asm_2435b
-	add c
-	dec b
-	jr nz, .asm_2435b
-
-.asm_2435f
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	cp $ed
-	jr z, .asm_2436b
-	ld [wcfab], a
-	ld [hl], $ed
-
-.asm_2436b
-	ld a, l
-	ld [wcfac], a
-	ld a, h
-	ld [wcfad], a
-	ret
-; 24374
-
 _BackUpTiles:: ; 24374
 	ld a, [rSVBK]
 	push af
@@ -22626,7 +13495,7 @@
 	push de
 
 	ld b, $10
-	ld hl, wcf81
+	ld hl, wMenuFlags
 .loop
 	ld a, [hli]
 	ld [de], a
@@ -22637,7 +13506,7 @@
 ; If bit 6 or 7 of the menu flags is set, set bit 0 of the address
 ; at 7:[wcf71], and draw the menu using the coordinates from the header.
 ; Otherwise, reset bit 0 of 7:[wcf71].
-	ld a, [wcf81]
+	ld a, [wMenuFlags]
 	bit 6, a
 	jr nz, .bit_6
 	bit 7, a
@@ -22649,9 +13518,9 @@
 	ld h, [hl]
 	ld l, a
 	set 0, [hl]
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	call .copy
-	call GetMemAttrCoord
+	call MenuBoxCoord2Attr
 	call .copy
 	jr .done
 
@@ -22718,10 +13587,12 @@
 Function243e8:: ; 243e8
 	xor a
 	ld [hBGMapMode], a
+
 	ld a, [rSVBK]
 	push af
 	ld a, $7
 	ld [rSVBK], a
+
 	call Function1c7e
 	ld a, l
 	or h
@@ -22731,7 +13602,7 @@
 	ld a, h
 	ld [wcf72], a
 	call Function1c47
-	ld a, [wcf81]
+	ld a, [wMenuFlags]
 	bit 0, a
 	jr z, .next
 	ld d, h
@@ -22742,10 +13613,10 @@
 	call Function1c7e
 	ld a, h
 	or l
-	jr z, .next2
+	jr z, .done
 	call Function1c47
 
-.next2
+.done
 	pop af
 	ld [rSVBK], a
 	ld hl, wcf78
@@ -22765,7 +13636,7 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyBytes
 	call CloseSRAM
-	call Function2173
+	call OverworldTextModeSwitch
 	xor a
 	call GetSRAMBank
 	ld hl, sScratch
@@ -22802,7 +13673,7 @@
 ; 2446d
 
 Function2446d:: ; 2446d
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	ld b, a
 	ld hl, wcfa1
 	ld a, [wMenuBorderTopCoord]
@@ -22816,7 +13687,7 @@
 	ld a, [wMenuBorderLeftCoord]
 	inc a
 	ld [hli], a
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	ld [hli], a
 	ld a, $1
 	ld [hli], a
@@ -22826,7 +13697,7 @@
 	set 5, [hl]
 
 .asm_24492
-	ld a, [wcf81]
+	ld a, [wMenuFlags]
 	bit 4, a
 	jr z, .asm_2449b
 	set 6, [hl]
@@ -22848,7 +13719,7 @@
 	and a
 	jr z, .asm_244b7
 	ld c, a
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	cp c
 	jr nc, .asm_244b9
 
@@ -22886,7 +13757,7 @@
 Pokepic:: ; 244e3
 	ld hl, MenuDataHeader_0x24547
 	call CopyMenuDataHeader
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
 	call Function321c
 	ld b, $12
@@ -22904,9 +13775,9 @@
 	ld a, [wMenuBorderLeftCoord]
 	inc a
 	ld c, a
-	call GetTileCoord
+	call Coord2Tile
 	ld a, $80
-	ld [$ffad], a
+	ld [hFillBox], a
 	lb bc, 7, 7
 	predef FillBox
 	call WaitBGMap
@@ -22916,15 +13787,15 @@
 PokepicYesOrNo:: ; 24528
 	ld hl, MenuDataHeader_0x24547
 	call CopyMenuDataHeader
-	call Function1ce1
+	call ClearMenuBoxInterior
 	call WaitBGMap
 	call ClearSGB
 	xor a
 	ld [hBGMapMode], a
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function321c
 	call UpdateSprites
-	call Functione51
+	call LoadStandardFont
 	ret
 ; 24547
 
@@ -23014,7 +13885,7 @@
 	ld [hBGMapMode], a
 	inc a
 	ld [hInMenu], a
-	call Function2471a
+	call ClearObjectStructsa
 	call Function24764
 	call Function247dd
 	call Function245f1
@@ -23057,7 +13928,7 @@
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	call Function247f0
 	call Function2488b
 	call Function248b8
@@ -23103,7 +13974,7 @@
 
 .a_button: ; 24644
 	call Function1bee
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call Function248d5
 	ld a, [MenuSelection]
@@ -23129,10 +14000,10 @@
 ; 24673
 
 .select: ; 24673
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 7, a
 	jp z, xor_a_dec_a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call Function248d5
 	ld a, [MenuSelection]
@@ -23147,7 +14018,7 @@
 ; 24695
 
 .start: ; 24695
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 6, a
 	jp z, xor_a_dec_a
 	ld a, START
@@ -23159,7 +14030,7 @@
 	ld hl, wcfa6
 	bit 7, [hl]
 	jp z, xor_a_dec_a
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 3, a
 	jp z, xor_a_dec_a
 	ld a, D_LEFT
@@ -23171,7 +14042,7 @@
 	ld hl, wcfa6
 	bit 7, [hl]
 	jp z, xor_a_dec_a
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 2, a
 	jp z, xor_a_dec_a
 	ld a, D_RIGHT
@@ -23199,7 +14070,7 @@
 	bit 7, [hl]
 	jp z, xor_a
 	ld hl, wd0e4
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	add [hl]
 	ld b, a
 	ld a, [wd144]
@@ -23215,7 +14086,7 @@
 Function246fc: ; 246fc
 	ld a, [wd0e4]
 	ld c, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	add c
 	ld c, a
 	ret
@@ -23222,11 +14093,11 @@
 ; 24706
 
 Function24706: ; 24706 (9:4706)
-	call GetMemTileCoord
+	call MenuBoxCoord2Tile
 	ld de, SCREEN_WIDTH
 	add hl, de
 	ld de, 2 * SCREEN_WIDTH
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 .asm_24713
 	ld [hl], " "
 	add hl, de
@@ -23234,7 +14105,7 @@
 	jr nz, .asm_24713
 	ret
 
-Function2471a: ; 2471a
+ClearObjectStructsa: ; 2471a
 ; Get the value of (wcf95):(wcf96,wcf97) and store it in wd144.
 	ld hl, wcf96
 	ld a, [hli]
@@ -23243,8 +14114,8 @@
 	ld a, [wcf95]
 	call GetFarByte
 	ld [wd144], a
-; if ([wd144] + 1) < [wcf92] + [wd0e4]: [wd0e4] = max(([wd144] + 1) - [wcf92], 0)
-	ld a, [wcf92]
+; if ([wd144] + 1) < [wMenuData2Items] + [wd0e4]: [wd0e4] = max(([wd144] + 1) - [wMenuData2Items], 0)
+	ld a, [wMenuData2Items]
 	ld c, a
 	ld a, [wd0e4]
 	add c
@@ -23253,7 +14124,7 @@
 	inc a
 	cp c
 	jr nc, .skip
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	ld c, a
 	ld a, [wd144]
 	inc a
@@ -23287,7 +14158,7 @@
 ; 24764
 
 Function24764: ; 24764
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	ld c, a
 	ld a, [wd144]
 	ld b, a
@@ -23297,7 +14168,7 @@
 	ld a, [wMenuBorderLeftCoord]
 	add $0
 	ld [wcfa2], a
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	cp b
 	jr c, .asm_24786
 	jr z, .asm_24786
@@ -23349,7 +14220,7 @@
 	ld a, $1
 
 .asm_247ca
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1
 	ld [wcfaa], a
 	xor a
@@ -23376,8 +14247,8 @@
 ; 247f0
 
 Function247f0: ; 247f0
-	call Function1cf1
-	ld a, [wcf91]
+	call ClearWholeMenuBox
+	ld a, [wMenuData2Flags]
 	bit 4, a
 	jr z, .asm_2480d
 	ld a, [wd0e4]
@@ -23387,14 +14258,14 @@
 	ld b, a
 	ld a, [wMenuBorderRightCoord]
 	ld c, a
-	call GetTileCoord
+	call Coord2Tile
 	ld [hl], $61
 
 .asm_2480d
-	call GetMemTileCoord
-	ld bc, $0015
+	call MenuBoxCoord2Tile
+	ld bc, $15
 	add hl, bc
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	ld b, a
 	ld c, $0
 .asm_2481a
@@ -23410,7 +14281,7 @@
 	push hl
 	call Function2486e
 	pop hl
-	ld bc, $0028
+	ld bc, $28
 	add hl, bc
 	pop bc
 	inc c
@@ -23417,7 +14288,7 @@
 	ld a, c
 	cp b
 	jr nz, .asm_2481a
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 4, a
 	jr z, .asm_24850
 	ld a, [wMenuBorderBottomCoord]
@@ -23424,7 +14295,7 @@
 	ld b, a
 	ld a, [wMenuBorderRightCoord]
 	ld c, a
-	call GetTileCoord
+	call Coord2Tile
 	ld [hl], $ee
 
 .asm_24850
@@ -23431,7 +14302,7 @@
 	ret
 
 .asm_24851
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 0, a
 	jr nz, .asm_24866
 	ld de, .string_2485f
@@ -23479,7 +14350,7 @@
 	cp b
 	jr nc, .asm_248b7
 	ld c, a
-	ld a, [wcf92]
+	ld a, [wMenuData2Items]
 	add c
 	cp b
 	jr c, .asm_248b7
@@ -23495,7 +14366,7 @@
 	ld a, [wMenuBorderLeftCoord]
 	add $0
 	ld c, a
-	call GetTileCoord
+	call Coord2Tile
 	ld [hl], $ec
 
 .asm_248b7
@@ -23503,7 +14374,7 @@
 ; 248b8
 
 Function248b8: ; 248b8
-	ld a, [wcf91]
+	ld a, [wMenuData2Flags]
 	bit 5, a
 	ret z
 	bit 1, a
@@ -23513,7 +14384,7 @@
 	ret nz
 
 .asm_248c7
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	call Function248d5
 	ld hl, wcf9e
@@ -23736,7 +14607,7 @@
 
 Function24a40: ; 24a40 (9:4a40)
 	call Function24a5c
-	ld de, DefaultFlypoint
+	ld de, wd002
 	call Function24a80
 	call CopyBytes
 	ret
@@ -23745,7 +14616,7 @@
 	call Function24a5c
 	ld d, h
 	ld e, l
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	call Function24a80
 	call CopyBytes
 	ret
@@ -23771,7 +14642,7 @@
 	dec a
 	cpl
 .asm_24a76
-	ld hl, $0
+	ld hl, 0
 	call AddNTimes
 	ld b, h
 	ld c, l
@@ -23843,7 +14714,7 @@
 	pop hl
 	and a
 	jr nz, .done
-	ld de, $0015
+	ld de, $15
 	add hl, de
 	ld [hl], "×"
 	inc hl
@@ -23867,13 +14738,13 @@
 
 Function24af8: ; 24af8
 	ld hl, MenuDataHeader_0x24b15
-	ld de, $000b
+	ld de, $b
 	call Function1e2e
 
 Function24b01: ; 24b01
-	call Function1cbb
-	call GetMemTileCoord
-	ld de, $0015
+	call MenuBox
+	call MenuBoxCoord2Tile
+	ld de, $15
 	add hl, de
 	ld de, Money
 	lb bc, PRINTNUM_MONEY | 3, 6
@@ -23947,26 +14818,27 @@
 ; 24b8f
 
 Function24b8f: ; 24b8f
+; unreferenced, related to safari?
 	ld hl, Options
 	ld a, [hl]
 	push af
-	set 4, [hl]
+	set NO_TEXT_SCROLL, [hl]
 	hlcoord 0, 0
-	ld b, $3
-	ld c, $7
+	ld b, 3
+	ld c, 7
 	call TextBox
 	hlcoord 1, 1
-	ld de, wdc7a
+	ld de, wSafariTimeRemaining
 	lb bc, 2, 3
 	call PrintNum
 	hlcoord 4, 1
-	ld de, String24bcf
+	ld de, .slash_500
 	call PlaceString
 	hlcoord 1, 3
-	ld de, String24bd4
+	ld de, .booru_ko
 	call PlaceString
 	hlcoord 5, 3
-	ld de, wdc79
+	ld de, wSafariBallsRemaining
 	lb bc, 1, 2
 	call PrintNum
 	pop af
@@ -23974,9 +14846,9 @@
 	ret
 ; 24bcf
 
-String24bcf: ; 24bcf
+.slash_500: ; 24bcf
 	db "/500@"
-String24bd4: ; 24bd4
+.booru_ko: ; 24bd4
 	db "ボール   こ@"
 ; 24bdc
 
@@ -23998,7 +14870,7 @@
 	ld de, String24c52
 	call PlaceString
 	hlcoord 8, 5
-	ld de, wdc79
+	ld de, wSafariBallsRemaining
 	lb bc, PRINTNUM_RIGHTALIGN | 1, 2
 	call PrintNum
 	hlcoord 1, 1
@@ -24119,41 +14991,41 @@
 MonMenuOptions: ; 24cd9
 
 ; Moves
-	db 0,  1, CUT
-	db 0,  2, FLY
-	db 0,  3, SURF
-	db 0,  4, STRENGTH
-	db 0,  6, FLASH
-	db 0,  5, WATERFALL
-	db 0,  7, WHIRLPOOL
-	db 0,  8, DIG
-	db 0,  9, TELEPORT
-	db 0, 10, SOFTBOILED
-	db 0, 11, HEADBUTT
-	db 0, 12, ROCK_SMASH
-	db 0, 13, MILK_DRINK
-	db 0, 14, SWEET_SCENT
+	db MONMENU_FIELD_MOVE, MONMENU_CUT,        CUT
+	db MONMENU_FIELD_MOVE, MONMENU_FLY,        FLY
+	db MONMENU_FIELD_MOVE, MONMENU_SURF,       SURF
+	db MONMENU_FIELD_MOVE, MONMENU_STRENGTH,   STRENGTH
+	db MONMENU_FIELD_MOVE, MONMENU_FLASH,      FLASH
+	db MONMENU_FIELD_MOVE, MONMENU_WATERFALL,  WATERFALL
+	db MONMENU_FIELD_MOVE, MONMENU_WHIRLPOOL,  WHIRLPOOL
+	db MONMENU_FIELD_MOVE, MONMENU_DIG,        DIG
+	db MONMENU_FIELD_MOVE, MONMENU_TELEPORT,   TELEPORT
+	db MONMENU_FIELD_MOVE, MONMENU_SOFTBOILED, SOFTBOILED
+	db MONMENU_FIELD_MOVE, MONMENU_HEADBUTT,   HEADBUTT
+	db MONMENU_FIELD_MOVE, MONMENU_ROCKSMASH,  ROCK_SMASH
+	db MONMENU_FIELD_MOVE, MONMENU_MILKDRINK,  MILK_DRINK
+	db MONMENU_FIELD_MOVE, MONMENU_SWEETSCENT, SWEET_SCENT
 
 ; Options
-	db 1, 15, 1 ; STATS
-	db 1, 16, 2 ; SWITCH
-	db 1, 17, 3 ; ITEM
-	db 1, 18, 4 ; CANCEL
-	db 1, 19, 5 ; MOVE
-	db 1, 20, 6 ; MAIL
-	db 1, 21, 7 ; ERROR!
+	db MONMENU_MENUOPTION, MONMENU_STATS,      1 ; STATS
+	db MONMENU_MENUOPTION, MONMENU_SWITCH,     2 ; SWITCH
+	db MONMENU_MENUOPTION, MONMENU_ITEM,       3 ; ITEM
+	db MONMENU_MENUOPTION, MONMENU_CANCEL,     4 ; CANCEL
+	db MONMENU_MENUOPTION, MONMENU_MOVE,       5 ; MOVE
+	db MONMENU_MENUOPTION, MONMENU_MAIL,       6 ; MAIL
+	db MONMENU_MENUOPTION, MONMENU_ERROR,      7 ; ERROR!
 
-	db $ff
+	db -1
 ; 24d19
 
-Function24d19: ; 24d19
+MonSubmenu: ; 24d19
 	xor a
 	ld [hBGMapMode], a
-	call Function24dd4
+	call GetMonSubmenuItems
 	callba Function8ea4a
-	ld hl, MenuDataHeader_0x24d3f
+	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
-	call Function24d47
+	call .GetTopCoord
 	call PopulateMonMenu
 
 	ld a, 1
@@ -24165,7 +15037,7 @@
 	ret
 ; 24d3f
 
-MenuDataHeader_0x24d3f: ; 24d3f
+.MenuDataHeader: ; 24d3f
 	db $40 ; tile backup
 	db 00, 06 ; start coords
 	db 17, 19 ; end coords
@@ -24173,7 +15045,8 @@
 	db 1 ; default option
 ; 24d47
 
-Function24d47: ; 24d47
+.GetTopCoord: ; 24d47
+; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1)
 	ld a, [Buffer1]
 	inc a
 	add a
@@ -24182,16 +15055,16 @@
 	sub b
 	inc a
 	ld [wMenuBorderTopCoord], a
-	call Function1cbb
+	call MenuBox
 	ret
 ; 24d59
 
 MonMenuLoop: ; 24d59
 .loop
-	ld a, $a0
-	ld [wcf91], a
-	ld a, [Buffer1]
-	ld [wcf92], a
+	ld a, $a0 ; flags
+	ld [wMenuData2Flags], a
+	ld a, [Buffer1] ; items
+	ld [wMenuData2Items], a
 	call Function1c10
 	ld hl, wcfa5
 	set 6, [hl]
@@ -24206,11 +15079,11 @@
 	jr .loop
 
 .cancel
-	ld a, 18 ; CANCEL
+	ld a, MONMENU_CANCEL ; CANCEL
 	ret
 
 .select
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld c, a
 	ld b, 0
@@ -24221,8 +15094,8 @@
 ; 24d91
 
 PopulateMonMenu: ; 24d91
-	call GetMemTileCoord
-	ld bc, $002a ; 42
+	call MenuBoxCoord2Tile
+	ld bc, $2a ; 42
 	add hl, bc
 	ld de, Buffer2
 .loop
@@ -24235,7 +15108,7 @@
 	call GetMonMenuString
 	pop hl
 	call PlaceString
-	ld bc, $0028 ; 40
+	ld bc, $28 ; 40
 	add hl, bc
 	pop de
 	jr .loop
@@ -24266,15 +15139,15 @@
 	ret
 ; 24dd4
 
-Function24dd4: ; 24dd4
-	call Function24e68
+GetMonSubmenuItems: ; 24dd4
+	call ResetMonSubmenu
 	ld a, [CurPartySpecies]
 	cp EGG
 	jr z, .egg
 	ld a, [wLinkMode]
 	and a
-	jr nz, .skip
-	ld a, PartyMon1Moves - PartyMon1
+	jr nz, .skip_moves
+	ld a, MON_MOVES
 	call GetPartyParamLocation
 	ld d, h
 	ld e, l
@@ -24286,10 +15159,10 @@
 	and a
 	jr z, .next
 	push hl
-	call Function24e52
+	call IsFieldMove
 	pop hl
 	jr nc, .next
-	call Function24e83
+	call AddMonMenuItem
 
 .next
 	pop de
@@ -24298,82 +15171,82 @@
 	dec c
 	jr nz, .loop
 
-.skip
-	ld a, $f
-	call Function24e83
-	ld a, $10
-	call Function24e83
-	ld a, $13
-	call Function24e83
+.skip_moves
+	ld a, MONMENU_STATS
+	call AddMonMenuItem
+	ld a, MONMENU_SWITCH
+	call AddMonMenuItem
+	ld a, MONMENU_MOVE
+	call AddMonMenuItem
 	ld a, [wLinkMode]
 	and a
 	jr nz, .skip2
 	push hl
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 	ld d, [hl]
 	callba ItemIsMail
 	pop hl
-	ld a, $14
+	ld a, MONMENU_MAIL
 	jr c, .ok
-	ld a, $11
+	ld a, MONMENU_ITEM
 
 .ok
-	call Function24e83
+	call AddMonMenuItem
 
 .skip2
 	ld a, [Buffer1]
-	cp $8
+	cp NUM_MON_SUBMENU_ITEMS
 	jr z, .ok2
-	ld a, $12
-	call Function24e83
+	ld a, MONMENU_CANCEL
+	call AddMonMenuItem
 
 .ok2
-	call Function24e76
+	call TerminateMonSubmenu
 	ret
 
 .egg
-	ld a, $f
-	call Function24e83
-	ld a, $10
-	call Function24e83
-	ld a, $12
-	call Function24e83
-	call Function24e76
+	ld a, MONMENU_STATS
+	call AddMonMenuItem
+	ld a, MONMENU_SWITCH
+	call AddMonMenuItem
+	ld a, MONMENU_CANCEL
+	call AddMonMenuItem
+	call TerminateMonSubmenu
 	ret
 ; 24e52
 
-Function24e52: ; 24e52
+IsFieldMove: ; 24e52
 	ld b, a
 	ld hl, MonMenuOptions
-.asm_24e56
+.next
 	ld a, [hli]
-	cp $ff
-	jr z, .asm_24e67
-	cp $1
-	jr z, .asm_24e67
+	cp -1
+	jr z, .nope
+	cp MONMENU_MENUOPTION
+	jr z, .nope
 	ld d, [hl]
 	inc hl
 	ld a, [hli]
 	cp b
-	jr nz, .asm_24e56
+	jr nz, .next
 	ld a, d
 	scf
 
-.asm_24e67
+.nope
 	ret
 ; 24e68
 
-Function24e68: ; 24e68
+ResetMonSubmenu: ; 24e68
 	xor a
 	ld [Buffer1], a
 	ld hl, Buffer2
-	ld bc, 9
+	ld bc, NUM_MON_SUBMENU_ITEMS + 1
 	call ByteFill
 	ret
 ; 24e76
 
-Function24e76: ; 24e76
+TerminateMonSubmenu: ; 24e76
 	ld a, [Buffer1]
 	ld e, a
 	ld d, $0
@@ -24383,7 +15256,7 @@
 	ret
 ; 24e83
 
-Function24e83: ; 24e83
+AddMonMenuItem: ; 24e83
 	push hl
 	push de
 	push af
@@ -24407,12 +15280,12 @@
 	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
 	call Function1c89
 	call WaitBGMap
-	call Function1c66
-	ld a, [wcf91]
+	call CopyMenuData2
+	ld a, [wMenuData2Flags]
 	bit 7, a
 	jr z, .asm_24ed0
 	call Function1c10
@@ -24537,7 +15410,7 @@
 
 Function24f7c: ; 24f7c
 	hlcoord 17, 13
-	ld de, wdc79
+	ld de, wSafariBallsRemaining
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	ret
@@ -24562,7 +15435,7 @@
 
 Strings24f9a: ; 24f9a
 	db "FIGHT@"
-	db $4a, "@"
+	db "<PKMN>", "@"
 	db "PARKBALL×  @"
 	db "RUN@"
 ; 24fb2
@@ -24569,7 +15442,7 @@
 
 Function24fb2: ; 24fb2
 	hlcoord 13, 16
-	ld de, wdc79
+	ld de, wParkBallsRemaining
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
 	ret
@@ -24708,9 +15581,9 @@
 ; 25072
 
 Function25072: ; 25072
-	call Function1cbb
-	call GetMemTileCoord
-	ld de, $0015
+	call MenuBox
+	call MenuBoxCoord2Tile
+	ld de, $15
 	add hl, de
 	ld [hl], $f1
 	inc hl
@@ -24717,11 +15590,11 @@
 	ld de, wItemQuantityChangeBuffer
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
-	ld a, [wcf86]
+	ld a, [wMenuData2Pointer]
 	ld e, a
-	ld a, [wcf87]
+	ld a, [wMenuData2Pointer + 1]
 	ld d, a
-	ld a, [wcf8a]
+	ld a, [wMenuDataBank]
 	call FarCall_de
 	ret
 ; 25097
@@ -24847,7 +15720,7 @@
 	ret
 
 Function2513b: ; 2513b (9:513b)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -25063,7 +15936,7 @@
 	hlcoord 14, 1
 	lb bc, 5, 7
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	predef FillBox
 	ret
 ; 252ec (9:52ec)
@@ -25257,7 +16130,7 @@
 	ld de, GameTimeMinutes
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
 	call PrintNum
-	ld a, [$ff9b]
+	ld a, [hVBlankCounter]
 	and $1f
 	ret nz
 	hlcoord 15, 12
@@ -25267,7 +16140,7 @@
 	ret
 
 Function25438: ; 25438 (9:5438)
-	ld a, [$ff9b]
+	ld a, [hVBlankCounter]
 	and $7
 	ret nz
 	ld a, [wcf64]
@@ -25463,7 +16336,7 @@
 	ld hl, PokedexSeen
 	ld b, EndPokedexSeen - PokedexSeen
 	call CountSetBits
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld hl, PokedexCaught
 	ld b, EndPokedexCaught - PokedexCaught
 	call CountSetBits
@@ -25485,7 +16358,7 @@
 
 ClearOakRatingBuffers: ; 0x26647
 	ld hl, StringBuffer3
-	ld de, DefaultFlypoint
+	ld de, wd002
 	call ClearOakRatingBuffer
 	ld hl, StringBuffer4
 	ld de, wd003
@@ -25703,11 +16576,11 @@
 	db "@"
 
 
-Function26751: ; 26751 (9:6751)
-	ld a, $2
-	ld [wdc0f], a
-	ld a, $10
-	ld [wdc12], a
+InitDecorations: ; 26751 (9:6751)
+	ld a, DECO_FEATHERY_BED
+	ld [Bed], a
+	ld a, DECO_TOWN_MAP
+	ld [Poster], a
 	ret
 
 _KrisDecorationMenu: ; 0x2675c
@@ -25724,7 +16597,7 @@
 	ld [wMenuCursorBuffer], a
 	call Function26806
 	call Function1e5d
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd1ef], a
 	jr c, .asm_2678e
 	ld a, [MenuSelection]
@@ -25785,7 +16658,7 @@
 	ld a, $7
 	call Function26830
 	ld hl, StringBuffer2
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld bc, $d
 	call CopyBytes
 	ret
@@ -25845,10 +16718,10 @@
 
 Function2686c: ; 2686c
 	xor a
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld [hli], a
 	ld a, -1
-	ld bc, $0010
+	ld bc, $10
 	call ByteFill
 	ret
 ; 2687a
@@ -25875,7 +16748,7 @@
 ; 26891
 
 Function26891: ; 26891
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	inc [hl]
 	ld e, [hl]
 	ld d, $0
@@ -25891,7 +16764,7 @@
 	pop hl
 	call CheckAllDecorationFlags
 	pop bc
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and a
 	ret z
 	ld a, c
@@ -26029,7 +16902,7 @@
 ; 2695b
 
 Function2695b: ; 2695b
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and a
 	jr z, .empty
 	cp 8
@@ -26047,13 +16920,13 @@
 	ret
 
 .beyond_eight
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld e, [hl]
 	dec [hl]
 	ld d, 0
 	add hl, de
 	ld [hl], -1
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld hl, MenuDataHeader_0x269c5
 	call CopyMenuDataHeader
 	xor a
@@ -26061,7 +16934,7 @@
 	call Function352f
 	xor a
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wcf73]
 	cp 2
 	jr z, .no_action_2
@@ -26668,9 +17541,9 @@
 	ld hl, MenuDataHeader_0x26eab
 	call GetMenu2
 	call ExitMenu
-	call Function1c66
+	call CopyMenuData2
 	jr c, .nope
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp 3
 	jr z, .nope
 	ld [Buffer2], a
@@ -27134,28 +18007,28 @@
 INCLUDE "trainers/dvs.asm"
 
 Function2715c: ; 2715c
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, [BattleType]
 	cp BATTLETYPE_TUTORIAL
 	jr z, .gettutorialbackpic
-	callba Function3f43d
+	callba GetMonBackpic
 	jr .continue
 
 .gettutorialbackpic
-	callba GetBattleBackpic
+	callba GetTrainerBackpic
 
 .continue
-	callba Function3f47c
-	callba Function3ed9f
+	callba GetMonFrontpic
+	callba _LoadBattleFontsHPBar
 	call ClearSGB
 	call WriteBackup
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call WaitBGMap
 	jp SetPalettes
 ; 27192
 
-Function27192: ; 27192
+ConsumeHeldItem: ; 27192
 	push hl
 	push de
 	push bc
@@ -27174,8 +18047,8 @@
 	push af
 	ld a, [de]
 	ld b, a
-	callba GetItem
-	ld hl, Unknown_271de
+	callba GetItemHeldEffect
+	ld hl, .ConsumableEffects
 .loop
 	ld a, [hli]
 	cp b
@@ -27212,11 +18085,11 @@
 	ret
 ; 271de
 
-Unknown_271de: ; 271de
+.ConsumableEffects: ; 271de
 ; Consumable items?
 	db HELD_BERRY
-	db $02
-	db $05
+	db HELD_2
+	db HELD_5
 	db HELD_HEAL_POISON
 	db HELD_HEAL_FREEZE
 	db HELD_HEAL_BURN
@@ -27223,7 +18096,7 @@
 	db HELD_HEAL_SLEEP
 	db HELD_HEAL_PARALYZE
 	db HELD_HEAL_STATUS
-	db $1e
+	db HELD_30
 	db HELD_ATTACK_UP
 	db HELD_DEFENSE_UP
 	db HELD_SPEED_UP
@@ -27231,8 +18104,8 @@
 	db HELD_SP_DEFENSE_UP
 	db HELD_ACCURACY_UP
 	db HELD_EVASION_UP
-	db $26
-	db $47
+	db HELD_38
+	db HELD_71
 	db HELD_ESCAPE
 	db HELD_CRITICAL_UP
 	db -1
@@ -27253,4129 +18126,13 @@
 
 SECTION "bankA", ROMX, BANK[$A]
 
-LinkCommunications: ; 28000
-	call WhiteBGMap
-	ld c, $50
-	call DelayFrames
-	call ClearScreen
-	call ClearSprites
-	call UpdateSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	ld c, $50
-	call DelayFrames
-	call ClearScreen
-	call UpdateSprites
-	call Functione51
-	call LoadFontsBattleExtra
-	callba Function16d69a
-	call Function3200
-	hlcoord 3, 8
-	ld b, $2
-	ld c, $c
-	ld d, h
-	ld e, l
-	callba Function4d35b
-	hlcoord 4, 10
-	ld de, String28419
-	call PlaceString
-	call Function28eff
-	call Function3200
-	ld hl, wcf5d
-	xor a
-	ld [hli], a
-	ld [hl], $50
-	ld a, [wLinkMode]
-	cp LINK_TIMECAPSULE
-	jp nz, Function28177
+INCLUDE "engine/link.asm"
 
-Function2805d: ; 2805d
-	call Function28426
-	call Function28499
-	call Function28434
-	xor a
-	ld [wcf56], a
-	call Function87d
-	ld a, [$ffcb]
-	cp $2
-	jr nz, .asm_28091
-	ld c, $3
-	call DelayFrames
-	xor a
-	ld [hSerialSend], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-	call DelayFrame
-	xor a
-	ld [hSerialSend], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-
-.asm_28091
-	ld de, MUSIC_NONE
-	call PlayMusic
-	ld c, $3
-	call DelayFrames
-	xor a
-	ld [rIF], a
-	ld a, $8
-	ld [rIE], a
-	ld hl, wd1f3
-	ld de, EnemyMonSpecies
-	ld bc, $0011
-	call Function75f
-	ld a, $fe
-	ld [de], a
-	ld hl, OverworldMap
-	ld de, wd26b
-	ld bc, $01a8
-	call Function75f
-	ld a, $fe
-	ld [de], a
-	ld hl, wc608
-	ld de, wc6d0
-	ld bc, $00c8
-	call Function75f
-	xor a
-	ld [rIF], a
-	ld a, $1d
-	ld [rIE], a
-	call Function287ab
-	ld hl, wd26b
-	call Function287ca
-	push hl
-	ld bc, $000b
-	add hl, bc
-	ld a, [hl]
-	pop hl
-	and a
-	jp z, Function28b22
-	cp $7
-	jp nc, Function28b22
-	ld de, OverworldMap
-	ld bc, $01a2
-	call Function2879e
-	ld de, wc6d0
-	ld hl, wc813
-	ld c, $2
-.asm_280fe
-	ld a, [de]
-	inc de
-	and a
-	jr z, .asm_280fe
-	cp $fd
-	jr z, .asm_280fe
-	cp $fe
-	jr z, .asm_280fe
-	cp $ff
-	jr z, .asm_2811d
-	push hl
-	push bc
-	ld b, $0
-	dec a
-	ld c, a
-	add hl, bc
-	ld a, $fe
-	ld [hl], a
-	pop bc
-	pop hl
-	jr .asm_280fe
-
-.asm_2811d
-	ld hl, wc90f
-	dec c
-	jr nz, .asm_280fe
-	ld hl, OverworldMap
-	ld de, wd26b
-	ld bc, $000b
-	call CopyBytes
-	ld de, OTPartyCount
-	ld a, [hli]
-	ld [de], a
-	inc de
-.asm_28135
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_2814e
-	ld [wd265], a
-	push hl
-	push de
-	callab ConvertMon_1to2
-	pop de
-	pop hl
-	ld a, [wd265]
-	ld [de], a
-	inc de
-	jr .asm_28135
-
-.asm_2814e
-	ld [de], a
-	ld hl, wc813
-	call Function2868a
-	ld a, OTPartyMonOT % $100
-	ld [wd102], a
-	ld a, OTPartyMonOT / $100
-	ld [wd103], a
-	ld de, MUSIC_NONE
-	call PlayMusic
-	ld a, [$ffcb]
-	cp $2
-	ld c, 66
-	call z, DelayFrames
-	ld de, MUSIC_ROUTE_30
-	call PlayMusic
-	jp Function287e3
-; 28177
-
-Function28177: ; 28177
-	call Function28426
-	call Function28595
-	call Function28434
-	call Function29dba
-	ld a, [ScriptVar]
-	and a
-	jp z, Function283b2
-	ld a, [$ffcb]
-	cp $2
-	jr nz, .asm_281ae
-	ld c, $3
-	call DelayFrames
-	xor a
-	ld [hSerialSend], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-	call DelayFrame
-	xor a
-	ld [hSerialSend], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-
-.asm_281ae
-	ld de, MUSIC_NONE
-	call PlayMusic
-	ld c, $3
-	call DelayFrames
-	xor a
-	ld [rIF], a
-	ld a, $8
-	ld [rIE], a
-	ld hl, wd1f3
-	ld de, EnemyMonSpecies
-	ld bc, $0011
-	call Function75f
-	ld a, $fe
-	ld [de], a
-	ld hl, OverworldMap
-	ld de, wd26b
-	ld bc, $01c2
-	call Function75f
-	ld a, $fe
-	ld [de], a
-	ld hl, wc608
-	ld de, wc6d0
-	ld bc, $00c8
-	call Function75f
-	ld a, [wLinkMode]
-	cp LINK_TRADECENTER
-	jr nz, .asm_281fd
-	ld hl, wc9f4
-	ld de, wcb84
-	ld bc, $0186
-	call Function283f2
-
-.asm_281fd
-	xor a
-	ld [rIF], a
-	ld a, $1d
-	ld [rIE], a
-	ld de, MUSIC_NONE
-	call PlayMusic
-	call Function287ab
-	ld hl, wd26b
-	call Function287ca
-	ld de, OverworldMap
-	ld bc, $01b9
-	call Function2879e
-	ld de, wc6d0
-	ld hl, wc813
-	ld c, $2
-.asm_28224
-	ld a, [de]
-	inc de
-	and a
-	jr z, .asm_28224
-	cp $fd
-	jr z, .asm_28224
-	cp $fe
-	jr z, .asm_28224
-	cp $ff
-	jr z, .asm_28243
-	push hl
-	push bc
-	ld b, $0
-	dec a
-	ld c, a
-	add hl, bc
-	ld a, $fe
-	ld [hl], a
-	pop bc
-	pop hl
-	jr .asm_28224
-
-.asm_28243
-	ld hl, wc90f
-	dec c
-	jr nz, .asm_28224
-	ld a, [wLinkMode]
-	cp LINK_TRADECENTER
-	jp nz, .asm_282fe
-	ld hl, wcb84
-.asm_28254
-	ld a, [hli]
-	cp $20
-	jr nz, .asm_28254
-.asm_28259
-	ld a, [hli]
-	cp $fe
-	jr z, .asm_28259
-	cp $20
-	jr z, .asm_28259
-	dec hl
-	ld de, wcb84
-	ld bc, $0190
-	call CopyBytes
-	ld hl, wcb84
-	ld bc, $00c6
-.asm_28272
-	ld a, [hl]
-	cp $21
-	jr nz, .asm_28279
-	ld [hl], $fe
-
-.asm_28279
-	inc hl
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_28272
-	ld de, wcc9e
-.asm_28282
-	ld a, [de]
-	inc de
-	cp $ff
-	jr z, .asm_28294
-	ld hl, wcc4a
-	dec a
-	ld b, $0
-	ld c, a
-	add hl, bc
-	ld [hl], $fe
-	jr .asm_28282
-
-.asm_28294
-	ld hl, wcb84
-	ld de, wc9f4
-	ld b, $6
-.asm_2829c
-	push bc
-	ld bc, $0021
-	call CopyBytes
-	ld a, $e
-	add e
-	ld e, a
+Function29fe4: ; unreferenced
 	ld a, $0
-	adc d
-	ld d, a
-	pop bc
-	dec b
-	jr nz, .asm_2829c
-	ld de, wc9f4
-	ld b, $6
-.asm_282b4
-	push bc
-	ld a, $21
-	add e
-	ld e, a
-	ld a, $0
-	adc d
-	ld d, a
-	ld bc, $000e
-	call CopyBytes
-	pop bc
-	dec b
-	jr nz, .asm_282b4
-	ld b, $6
-	ld de, wc9f4
-.asm_282cc
-	push bc
-	push de
-	callba Function1de5c8
-	ld a, c
-	or a
-	jr z, .asm_282ee
-	sub $3
-	jr nc, .asm_282e4
-	callba Function1df203
-	jr .asm_282ee
-
-.asm_282e4
-	cp $2
-	jr nc, .asm_282ee
-	callba Function1df220
-
-.asm_282ee
-	pop de
-	ld hl, $002f
-	add hl, de
-	ld d, h
-	ld e, l
-	pop bc
-	dec b
-	jr nz, .asm_282cc
-	ld de, wcb0e
-	xor a
-	ld [de], a
-
-.asm_282fe
-	ld hl, OverworldMap
-	ld de, wd26b
-	ld bc, $000b
-	call CopyBytes
-	ld de, OTPartyCount
-	ld bc, $0008
-	call CopyBytes
-	ld de, wd276
-	ld bc, $0002
-	call CopyBytes
-	ld de, OTPartyMon1Species
-	ld bc, $01a4
-	call CopyBytes
-	ld a, OTPartyMonOT % $100
-	ld [wd102], a
-	ld a, OTPartyMonOT / $100
-	ld [wd103], a
-	ld de, MUSIC_NONE
-	call PlayMusic
-	ld a, [$ffcb]
-	cp $2
-	ld c, 66
-	call z, DelayFrames
-	ld a, [wLinkMode]
-	cp LINK_COLOSSEUM
-	jr nz, .asm_283a9
-	ld a, CAL
-	ld [OtherTrainerClass], a
-	call ClearScreen
-	callba Function4d354
-	ld hl, Options
-	ld a, [hl]
-	push af
-	and $20
-	or $3
-	ld [hl], a
-	ld hl, wd26b
-	ld de, OTName
-	ld bc, NAME_LENGTH
-	call CopyBytes
-	call Function222a
-	ld a, [wc2d7]
-	push af
-	ld a, $1
-	ld [wc2d7], a
-	ld a, [rIE]
-	push af
-	ld a, [rIF]
-	push af
-	xor a
-	ld [rIF], a
-	ld a, [rIE]
-	set 1, a
-	ld [rIE], a
-	pop af
-	ld [rIF], a
-	predef StartBattle
-	ld a, [rIF]
-	ld h, a
-	xor a
-	ld [rIF], a
-	pop af
-	ld [rIE], a
-	ld a, h
-	ld [rIF], a
-	pop af
-	ld [wc2d7], a
-	pop af
-	ld [Options], a
-	callba LoadPokemonData
-	jp Function28b22
-
-.asm_283a9
-	ld de, MUSIC_ROUTE_30
-	call PlayMusic
-	jp Function287e3
-; 283b2
-
-Function283b2: ; 283b2
-	ld de, UnknownText_0x283ed
-	ld b, $a
-.asm_283b7
-	call DelayFrame
-	call Function908
-	dec b
-	jr nz, .asm_283b7
-	xor a
-	ld [hld], a
-	ld [hl], a
-	ld [hVBlank], a
-	push de
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	push de
-	ld d, h
-	ld e, l
-	callba Function4d35b
-	pop de
-	pop hl
-	bccoord 1, 14
-	call PlaceWholeStringInBoxAtOnce
-	call FadeToWhite
-	call ClearScreen
-	ld b, $8
-	call GetSGBLayout
-	call Function3200
-	ret
-; 283ed
-
-UnknownText_0x283ed: ; 0x283ed
-	; Too much time has elapsed. Please try again.
-	text_jump UnknownText_0x1c4183
-	db "@"
-; 0x283f2
-
-Function283f2: ; 283f2
-	ld a, $1
-	ld [$ffcc], a
-.asm_283f6
-	ld a, [hl]
-	ld [hSerialSend], a
-	call Function78a
-	push bc
-	ld b, a
-	inc hl
-	ld a, $30
-.asm_28401
-	dec a
-	jr nz, .asm_28401
-	ld a, [$ffcc]
-	and a
-	ld a, b
-	pop bc
-	jr z, .asm_28411
-	dec hl
-	xor a
-	ld [$ffcc], a
-	jr .asm_283f6
-
-.asm_28411
-	ld [de], a
-	inc de
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_283f6
-	ret
-; 28419
-
-String28419: ; 28419
-	db "PLEASE WAIT!@"
-; 28426
-
-Function28426: ; 28426
-	ld hl, OverworldMap
-	ld bc, $0514
-.asm_2842c
-	xor a
-	ld [hli], a
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_2842c
-	ret
-; 28434
-
-Function28434: ; 28434
-	ld hl, wd1f3
-	ld a, $fd
-	ld b, $7
-.asm_2843b
-	ld [hli], a
-	dec b
-	jr nz, .asm_2843b
-	ld b, $a
-.asm_28441
-	call Random
-	cp $fd
-	jr nc, .asm_28441
-	ld [hli], a
-	dec b
-	jr nz, .asm_28441
-	ld hl, wc608
-	ld a, $fd
-rept 3
-	ld [hli], a
-endr
-	ld b, $c8
-	xor a
-.asm_28457
-	ld [hli], a
-	dec b
-	jr nz, .asm_28457
-	ld hl, wc818
-	ld de, wc608 + 10
-	ld bc, 0
-.asm_28464
-	inc c
-	ld a, c
-	cp $fd
-	jr z, .asm_2848c
-	ld a, b
-	dec a
-	jr nz, .asm_2847f
-	push bc
-	ld a, [wLinkMode]
-	cp LINK_TIMECAPSULE
-	ld b, $d
-	jr z, .asm_2847a
-	ld b, $27
-
-.asm_2847a
-	ld a, c
-	cp b
-	pop bc
-	jr z, .asm_28495
-
-.asm_2847f
-	inc hl
-	ld a, [hl]
-	cp $fe
-	jr nz, .asm_28464
-	ld a, c
-	ld [de], a
-	inc de
-	ld [hl], $ff
-	jr .asm_28464
-
-.asm_2848c
-	ld a, $ff
-	ld [de], a
-	inc de
-	ld bc, $100
-	jr .asm_28464
-
-.asm_28495
-	ld a, $ff
-	ld [de], a
-	ret
-; 28499
-
-Function28499: ; 28499
-	ld de, OverworldMap
-	ld a, $fd
-	ld b, $6
-.asm_284a0
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .asm_284a0
-	ld hl, PlayerName
-	ld bc, $000b
-	call CopyBytes
-	push de
-	ld hl, PartyCount
-	ld a, [hli]
-	ld [de], a
-	inc de
-.asm_284b5
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_284ce
-	ld [wd265], a
-	push hl
-	push de
-	callab ConvertMon_2to1
-	pop de
-	pop hl
-	ld a, [wd265]
-	ld [de], a
-	inc de
-	jr .asm_284b5
-
-.asm_284ce
-	ld [de], a
-	pop de
-	ld hl, $0008
-	add hl, de
-	ld d, h
-	ld e, l
-	ld hl, PartyMon1Species
-	ld c, $6
-.asm_284db
-	push bc
-	call Function284f6
-	ld bc, PartyMon2 - PartyMon1
-	add hl, bc
-	pop bc
-	dec c
-	jr nz, .asm_284db
-	ld hl, PartyMonOT
-	call .asm_284f0
-	ld hl, PartyMonNicknames
-.asm_284f0
-	ld bc, $0042
-	jp CopyBytes
-; 284f6
-
-Function284f6: ; 284f6
-	ld b, h
-	ld c, l
-	push de
-	push bc
-	ld a, [hl]
-	ld [wd265], a
-	callab ConvertMon_2to1
-	pop bc
-	pop de
-	ld a, [wd265]
-	ld [de], a
-	inc de
-	ld hl, $0022
-	add hl, bc
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	inc de
-	xor a
-	ld [de], a
-	inc de
-	ld hl, $0020
-	add hl, bc
-	ld a, [hl]
-	ld [de], a
-	inc de
-	ld a, [bc]
-	cp $51
-	jr z, .asm_28528
-	cp $52
-	jr nz, .asm_28530
-
-.asm_28528
-	ld a, $17
-	ld [de], a
-	inc de
-	ld [de], a
-	inc de
-	jr .asm_28544
-
-.asm_28530
-	push bc
-	dec a
-	ld hl, BaseData + 7 ; type
-	ld bc, BaseData1 - BaseData0
-	call AddNTimes
-	ld bc, 2
-	ld a, BANK(BaseData)
-	call FarCopyBytes
-	pop bc
-
-.asm_28544
-	push bc
-	ld hl, $0001
-	add hl, bc
-	ld bc, $1a
-	call CopyBytes
-	pop bc
-
-	ld hl, $001f
-	add hl, bc
-	ld a, [hl]
-	ld [de], a
-	ld [CurPartyLevel], a
-	inc de
-
-	push bc
-	ld hl, $0024
-	add hl, bc
-	ld bc, $0008
-	call CopyBytes
-	pop bc
-
-	push de
-	push bc
-
-	ld a, [bc]
-	dec a
-	push bc
-	ld b, 0
-	ld c, a
-	ld hl, KantoMonSpecials
-	add hl, bc
-	ld a, BANK(KantoMonSpecials)
-	call GetFarByte
-	ld [BaseSpecialAttack], a
-	pop bc
-
-	ld hl, $000a
-	add hl, bc
-	ld c, $5
-	ld b, $1
-	predef Functione17b
-
-	pop bc
-	pop de
-
-	ld a, [$ffb5]
-	ld [de], a
-	inc de
-	ld a, [$ffb6]
-	ld [de], a
-	inc de
-	ld h, b
-	ld l, c
-	ret
-; 28595
-
-Function28595: ; 28595
-	ld de, OverworldMap
-	ld a, $fd
-	ld b, $6
-.loop1
-	ld [de], a
-	inc de
-	dec b
-	jr nz, .loop1
-	ld hl, PlayerName
-	ld bc, $000b
-	call CopyBytes
-	ld hl, PartyCount
-	ld bc, $0008
-	call CopyBytes
-	ld hl, PlayerID
-	ld bc, $0002
-	call CopyBytes
-	ld hl, PartyMon1Species
-	ld bc, $0120
-	call CopyBytes
-	ld hl, PartyMonOT
-	ld bc, $0042
-	call CopyBytes
-	ld hl, PartyMonNicknames
-	ld bc, $0042
-	call CopyBytes
-	ld a, [wLinkMode]
-	cp LINK_TRADECENTER
-	ret nz
-	ld de, wc9f4
-	ld a, $20
-	call Function28682
-	ld a, BANK(s0_a600)
 	call GetSRAMBank
-	ld hl, s0_a600
-	ld b, $6
-.loop2
-	push bc
-	ld bc, $0021
-	call CopyBytes
-	ld bc, $000e
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .loop2
-	ld hl, s0_a600
-	ld b, $6
-.loop3
-	push bc
-	ld bc, $0021
-	add hl, bc
-	ld bc, $000e
-	call CopyBytes
-	pop bc
-	dec b
-	jr nz, .loop3
-	ld b, $6
-	ld de, s0_a600
-	ld hl, wc9f9
-.loop4
-	push bc
-	push hl
-	push de
-	push hl
-	callba Function1de5c8
-	pop de
-	ld a, c
-	or a
-	jr z, .next
-	sub $3
-	jr nc, .skip
-	callba Function1df1e6
-	jr .next
-
-.skip
-	cp $2
-	jr nc, .next
-	callba Function1df220
-
-.next
-	pop de
-	ld hl, $002f
-	add hl, de
-	ld d, h
-	ld e, l
-	pop hl
-	ld bc, $0021
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .loop4
-	call CloseSRAM
-	ld hl, wc9f9
-	ld bc, $00c6
-.loop5
-	ld a, [hl]
-	cp $fe
-	jr nz, .skip2
-	ld [hl], $21
-
-.skip2
-	inc hl
-	dec bc
-	ld a, b
-	or c
-	jr nz, .loop5
-	ld hl, wcabf
-	ld de, wcb13
-	ld b, $54
-	ld c, $0
-.loop6
-	inc c
-	ld a, [hl]
-	cp $fe
-	jr nz, .skip3
-	ld [hl], $ff
-	ld a, c
-	ld [de], a
-	inc de
-
-.skip3
-	inc hl
-	dec b
-	jr nz, .loop6
-	ld a, $ff
-	ld [de], a
-	ret
-; 28682
-
-Function28682: ; 28682
-	ld c, $5
-.loop
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .loop
-	ret
-; 2868a
-
-Function2868a: ; 2868a
-	push hl
-	ld d, h
-	ld e, l
-	ld bc, wcbea
-	ld hl, wcbe8
-	ld a, c
-	ld [hli], a
-	ld [hl], b
-	ld hl, OTPartyMon1Species
-	ld c, $6
-.loop
-	push bc
-	call Function286ba
-	pop bc
-	dec c
-	jr nz, .loop
-	pop hl
-	ld bc, $0108
-	add hl, bc
-	ld de, OTPartyMonOT
-	ld bc, $0042
-	call CopyBytes
-	ld de, OTPartyMonNicknames
-	ld bc, $0042
-	jp CopyBytes
-; 286ba
-
-Function286ba: ; 286ba
-	ld b, h
-	ld c, l
-	ld a, [de]
-	inc de
-	push bc
-	push de
-	ld [wd265], a
-	callab ConvertMon_1to2
-	pop de
-	pop bc
-	ld a, [wd265]
-	ld [bc], a
-	ld [CurSpecies], a
-	ld hl, $0022
-	add hl, bc
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	inc de
-	ld [hl], a
-	inc de
-	ld hl, $0020
-	add hl, bc
-	ld a, [de]
-	inc de
-	ld [hl], a
-	ld hl, wcbe8
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [de]
-	ld [hli], a
-	inc de
-	ld a, [de]
-	ld [hli], a
-	inc de
-	ld a, l
-	ld [wcbe8], a
-	ld a, h
-	ld [wcbe9], a
-	push bc
-	ld hl, $0001
-	add hl, bc
-	push hl
-	ld h, d
-	ld l, e
-	pop de
-	push bc
-	ld a, [hli]
-	ld b, a
-	call Function28771
-	ld a, b
-	ld [de], a
-	inc de
-	pop bc
-	ld bc, $0019
-	call CopyBytes
-	pop bc
-	ld d, h
-	ld e, l
-	ld hl, $001f
-	add hl, bc
-	ld a, [de]
-	inc de
-	ld [hl], a
-	ld [CurPartyLevel], a
-	push bc
-	ld hl, $0024
-	add hl, bc
-	push hl
-	ld h, d
-	ld l, e
-	pop de
-	ld bc, $0008
-	call CopyBytes
-	pop bc
-	call GetBaseData
-	push de
-	push bc
-	ld d, h
-	ld e, l
-	ld hl, $000a
-	add hl, bc
-	ld c, $5
-	ld b, $1
-	predef Functione17b
-	pop bc
-	pop hl
-	ld a, [$ffb5]
-	ld [hli], a
-	ld a, [$ffb6]
-	ld [hli], a
-	push hl
-	push bc
-	ld hl, $000a
-	add hl, bc
-	ld c, $6
-	ld b, $1
-	predef Functione17b
-	pop bc
-	pop hl
-	ld a, [$ffb5]
-	ld [hli], a
-	ld a, [$ffb6]
-	ld [hli], a
-	push hl
-	ld hl, $001b
-	add hl, bc
-	ld a, $46
-	ld [hli], a
-	xor a
-rept 2
-	ld [hli], a
-endr
-	ld [hl], a
-	pop hl
-rept 2
-	inc de
-endr
-	ret
-; 28771
-
-Function28771: ; 28771
-	ld a, b
-	and a
-	ret z
-	push hl
-	ld hl, .TimeCapsuleAlt
-.loop
-	ld a, [hli]
-	and a
-	jr z, .end
-	cp b
-	jr z, .found
-	inc hl
-	jr .loop
-
-.found
-	ld b, [hl]
-
-.end
-	pop hl
-	ret
-
-.TimeCapsuleAlt ; 28785
-; Pokémon traded from RBY do not have held items, so GSC usually interprets the
-; catch rate as an item. However, if the catch rate appears in this table, the
-; item associated with the table entry is used instead.
-	db ITEM_19, LEFTOVERS
-	db ITEM_2D, BITTER_BERRY
-	db ITEM_32, GOLD_BERRY
-	db ITEM_5A, BERRY
-	db ITEM_64, BERRY
-	db ITEM_78, BERRY
-	db ITEM_87, BERRY
-	db ITEM_BE, BERRY
-	db ITEM_C3, BERRY
-	db ITEM_DC, BERRY
-	db HM_08,   BERRY
-	db $ff,     BERRY
-	db $00
-; 2879e
-
-Function2879e: ; 2879e
-.asm_2879e
-	ld a, [hli]
-	cp $fe
-	jr z, .asm_2879e
-	ld [de], a
-	inc de
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_2879e
-	ret
-; 287ab
-
-Function287ab: ; 287ab
-	ld a, [$ffcb]
-	cp $2
-	ret z
-	ld hl, EnemyMonSpecies
-	call Function287d8
-	ld de, LinkBattleRNs
-	ld c, $a
-.asm_287bb
-	ld a, [hli]
-	cp $fe
-	jr z, .asm_287bb
-	cp $fd
-	jr z, .asm_287bb
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_287bb
-	ret
-; 287ca
-
-Function287ca: ; 287ca
-.asm_287ca
-	ld a, [hli]
-	and a
-	jr z, .asm_287ca
-	cp $fd
-	jr z, .asm_287ca
-	cp $fe
-	jr z, .asm_287ca
-	dec hl
-	ret
-; 287d8
-
-Function287d8: ; 287d8
-.asm_287d8
-	ld a, [hli]
-	cp $fd
-	jr z, .asm_287d8
-	cp $fe
-	jr z, .asm_287d8
-	dec hl
-	ret
-; 287e3
-
-Function287e3: ; 287e3
-	call ClearScreen
-	call Function28ef8
-	callba Function16d673
-	xor a
-	ld hl, wcf51
-rept 3
-	ld [hli], a
-endr
-	ld [hl], a
-	ld a, $1
-	ld [wcfa9], a
-	inc a
-	ld [wcf56], a
-	jp Function2888b
-; 28803
-
-Function28803: ; 28803
-	ld a, $1
-	ld [MonType], a
-	ld a, $c1
-	ld [wcfa8], a
-	ld a, [OTPartyCount]
-	ld [wcfa3], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $9
-	ld [wcfa1], a
-	ld a, $6
-	ld [wcfa2], a
-	ld a, $1
-	ld [wcfaa], a
-	ld a, $10
-	ld [wcfa7], a
-	ld a, $20
-	ld [wcfa5], a
-	xor a
-	ld [wcfa6], a
-
-Function28835: ; 28835
-	callba Function16d70c
-	ld a, d
-	and a
-	jp z, Function2891c
-	bit 0, a
-	jr z, .asm_2885b
-	ld a, $1
-	ld [wd263], a
-	callab Function50db9
-	ld hl, OTPartyMon1Species
-	callba Function4d319
-	jp Function2891c
-
-.asm_2885b
-	bit 6, a
-	jr z, .asm_28883
-	ld a, [wcfa9]
-	ld b, a
-	ld a, [OTPartyCount]
-	cp b
-	jp nz, Function2891c
-	xor a
-	ld [MonType], a
-	call Function1bf7
-	push hl
-	push bc
-	ld bc, $000b
-	add hl, bc
-	ld [hl], $7f
-	pop bc
-	pop hl
-	ld a, [PartyCount]
-	ld [wcfa9], a
-	jr Function2888b
-
-.asm_28883
-	bit 7, a
-	jp z, Function2891c
-	jp Function28ac9
-; 2888b
-
-Function2888b: ; 2888b
-	callba Function49856
-	xor a
-	ld [MonType], a
-	ld a, $c1
-	ld [wcfa8], a
-	ld a, [PartyCount]
-	ld [wcfa3], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $1
-	ld [wcfa1], a
-	ld a, $6
-	ld [wcfa2], a
-	ld a, $1
-	ld [wcfaa], a
-	ld a, $10
-	ld [wcfa7], a
-	ld a, $20
-	ld [wcfa5], a
-	xor a
-	ld [wcfa6], a
-	call Function3200
-
-Function288c5: ; 288c5
-	callba Function16d70c
-	ld a, d
-	and a
-	jr nz, .asm_288d2
-	jp Function2891c
-
-.asm_288d2
-	bit 0, a
-	jr z, .asm_288d9
-	jp Function28926
-
-.asm_288d9
-	bit 7, a
-	jr z, .asm_288fe
-	ld a, [wcfa9]
-	dec a
-	jp nz, Function2891c
-	ld a, $1
-	ld [MonType], a
-	call Function1bf7
-	push hl
-	push bc
-	ld bc, $000b
-	add hl, bc
-	ld [hl], $7f
-	pop bc
-	pop hl
-	ld a, $1
-	ld [wcfa9], a
-	jp Function28803
-
-.asm_288fe
-	bit 6, a
-	jr z, Function2891c
-	ld a, [wcfa9]
-	ld b, a
-	ld a, [PartyCount]
-	cp b
-	jr nz, Function2891c
-	call Function1bf7
-	push hl
-	push bc
-	ld bc, $000b
-	add hl, bc
-	ld [hl], $7f
-	pop bc
-	pop hl
-	jp Function28ade
-; 2891c
-
-Function2891c: ; 2891c
-	ld a, [MonType]
-	and a
-	jp z, Function288c5
-	jp Function28835
-; 28926
-
-Function28926: ; 28926
-	call LoadTileMapToTempTileMap
-	ld a, [wcfa9]
-	push af
-	hlcoord 0, 15
-	ld b, $1
-	ld c, $12
-	call Function28eef
-	hlcoord 2, 16
-	ld de, String28ab4
-	call PlaceString
-	callba Function4d354
-
-.asm_28946
-	ld a, $7f
-	ldcoord_a 11, 16
-	ld a, $13
-	ld [wcfa8], a
-	ld a, $1
-	ld [wcfa3], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $10
-	ld [wcfa1], a
-	ld a, $1
-	ld [wcfa2], a
-	ld a, $1
-	ld [wcfa9], a
-	ld [wcfaa], a
-	ld a, $20
-	ld [wcfa7], a
-	xor a
-	ld [wcfa5], a
-	ld [wcfa6], a
-	call Function1bd3
-	bit 4, a
-	jr nz, .asm_2898d
-	bit 1, a
-	jr z, .asm_289cd
-.asm_28983
-	pop af
-	ld [wcfa9], a
-	call Call_LoadTempTileMapToTileMap
-	jp Function2888b
-
-.asm_2898d
-	ld a, $7f
-	ldcoord_a 1, 16
-	ld a, $23
-	ld [wcfa8], a
-	ld a, $1
-	ld [wcfa3], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $10
-	ld [wcfa1], a
-	ld a, $b
-	ld [wcfa2], a
-	ld a, $1
-	ld [wcfa9], a
-	ld [wcfaa], a
-	ld a, $20
-	ld [wcfa7], a
-	xor a
-	ld [wcfa5], a
-	ld [wcfa6], a
-	call Function1bd3
-	bit 5, a
-	jp nz, .asm_28946
-	bit 1, a
-	jr nz, .asm_28983
-	jr .asm_289fe
-
-.asm_289cd
-	pop af
-	ld [wcfa9], a
-	ld a, $4
-	ld [wd263], a
-	callab Function50db9
-	callba Function4d319
-	call Call_LoadTempTileMapToTileMap
-	hlcoord 6, 1
-	ld bc, $0601
-	ld a, $7f
-	call Function28b77
-	hlcoord 17, 1
-	ld bc, $0601
-	ld a, $7f
-	call Function28b77
-	jp Function2888b
-
-.asm_289fe
-	call Function1bee
-	pop af
-	ld [wcfa9], a
-	dec a
-	ld [DefaultFlypoint], a
-	ld [wcf56], a
-	callba Function16d6ce
-	ld a, [wcf51]
-	cp $f
-	jp z, Function287e3
-	ld [wd003], a
-	call Function28b68
-	ld c, $64
-	call DelayFrames
-	callba Functionfb57e
-	jr c, .asm_28a58
-	callba Functionfb5dd
-	jp nc, Function28b87
-	xor a
-	ld [wcf57], a
-	ld [wcf52], a
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	callba Function4d354
-	ld hl, UnknownText_0x28aaf
-	bccoord 1, 14
-	call PlaceWholeStringInBoxAtOnce
-	jr .asm_28a89
-
-.asm_28a58
-	xor a
-	ld [wcf57], a
-	ld [wcf52], a
-	ld a, [wd003]
-	ld hl, OTPartySpecies
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [wd265], a
-	call GetPokemonName
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	callba Function4d354
-	ld hl, UnknownText_0x28ac4
-	bccoord 1, 14
-	call PlaceWholeStringInBoxAtOnce
-
-.asm_28a89
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	hlcoord 1, 14
-	ld de, String28ece
-	call PlaceString
-	ld a, $1
-	ld [wcf56], a
-	callba Function16d6ce
-	ld c, $64
-	call DelayFrames
-	jp Function287e3
-; 28aaf
-
-
-UnknownText_0x28aaf: ; 0x28aaf
-	; If you trade that #MON, you won't be able to battle.
-	text_jump UnknownText_0x1c41b1
-	db "@"
-; 0x28ab4
-
-String28ab4: ; 28ab4
-	db "STATS     TRADE@"
-
-UnknownText_0x28ac4: ; 0x28ac4
-	; Your friend's @  appears to be abnormal!
-	text_jump UnknownText_0x1c41e6
-	db "@"
-; 0x28ac9
-
-
-Function28ac9: ; 28ac9
-	ld a, [wcfa9]
-	cp $1
-	jp nz, Function2891c
-	call Function1bf7
-	push hl
-	push bc
-	ld bc, $000b
-	add hl, bc
-	ld [hl], $7f
-	pop bc
-	pop hl
-
-Function28ade: ; 28ade
-.asm_28ade
-	ld a, $ed
-	ldcoord_a 9, 17
-.asm_28ae3
-	call JoyTextDelay
-	ld a, [hJoyLast]
-	and a
-	jr z, .asm_28ae3
-	bit 0, a
-	jr nz, .asm_28b0b
-	push af
-	ld a, " "
-	ldcoord_a 9, 17
-	pop af
-	bit 6, a
-	jr z, .asm_28b03
-	ld a, [OTPartyCount]
-	ld [wcfa9], a
-	jp Function28803
-
-.asm_28b03
-	ld a, $1
-	ld [wcfa9], a
-	jp Function2888b
-
-.asm_28b0b
-	ld a, $ec
-	ldcoord_a 9, 17
-	ld a, $f
-	ld [wcf56], a
-	callba Function16d6ce
-	ld a, [wcf51]
-	cp $f
-	jr nz, .asm_28ade
-
-Function28b22: ; 28b22
-	call FadeToWhite
-	call ClearScreen
-	ld b, $8
-	call GetSGBLayout
-	call Function3200
-	xor a
-	ld [wcfbb], a
-	xor a
-	ld [rSB], a
-	ld [hSerialSend], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-	ret
-; 28b42
-
-Function28b42: ; 28b42
-	hlcoord 0, 16
-	ld a, "┘"
-	ld bc, 2 * SCREEN_WIDTH
-	call ByteFill
-	hlcoord 1, 16
-	ld a, " "
-	ld bc, SCREEN_WIDTH - 2
-	call ByteFill
-	hlcoord 2, 16
-	ld de, String_28b61
-	jp PlaceString
-; 28b61
-
-String_28b61: ; 28b61
-	db "CANCEL@"
-; 28b68
-
-Function28b68: ; 28b68
-	ld a, [wcf51]
-	hlcoord 6, 9
-	ld bc, SCREEN_WIDTH
-	call AddNTimes
-	ld [hl], $ec
-	ret
-; 28b77
-
-Function28b77: ; 28b77
-.asm_28b77
-	push bc
-	push hl
-.asm_28b79
-	ld [hli], a
-	dec c
-	jr nz, .asm_28b79
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_28b77
-	ret
-; 28b87
-
-Function28b87: ; 28b87
-	xor a
-	ld [wcf57], a
-	ld [wcf52], a
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	callba Function4d354
-	ld a, [DefaultFlypoint]
-	ld hl, PartySpecies
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-	ld de, wd004
-	ld bc, $000b
-	call CopyBytes
-	ld a, [wd003]
-	ld hl, OTPartySpecies
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, UnknownText_0x28eb8
-	bccoord 1, 14
-	call PlaceWholeStringInBoxAtOnce
-	call LoadMenuDataHeader_0x1d75
-	hlcoord 10, 7
-	ld b, $3
-	ld c, $7
-	call Function28eef
-	ld de, String28eab
-	hlcoord 12, 8
-	call PlaceString
-	ld a, $8
-	ld [wcfa1], a
-	ld a, $b
-	ld [wcfa2], a
-	ld a, $1
-	ld [wcfa4], a
-	ld a, $2
-	ld [wcfa3], a
-	xor a
-	ld [wcfa5], a
-	ld [wcfa6], a
-	ld a, $20
-	ld [wcfa7], a
-	ld a, $3
-	ld [wcfa8], a
-	ld a, $1
-	ld [wcfa9], a
-	ld [wcfaa], a
-	callba Function4d354
-	call Function1bd3
-	push af
-	call Call_ExitMenu
-	call Function3200
-	pop af
-	bit 1, a
-	jr nz, .asm_28c33
-	ld a, [wcfa9]
-	dec a
-	jr z, .asm_28c54
-
-.asm_28c33
-	ld a, $1
-	ld [wcf56], a
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	hlcoord 1, 14
-	ld de, String28ece
-	call PlaceString
-	callba Function16d6ce
-	jp Function28ea3
-
-.asm_28c54
-	ld a, $2
-	ld [wcf56], a
-	callba Function16d6ce
-	ld a, [wcf51]
-	dec a
-	jr nz, .asm_28c7b
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	hlcoord 1, 14
-	ld de, String28ece
-	call PlaceString
-	jp Function28ea3
-
-.asm_28c7b
-	ld hl, s0_a600
-	ld a, [DefaultFlypoint]
-	ld bc, $002f
-	call AddNTimes
-	ld a, BANK(s0_a600)
-	call GetSRAMBank
-	ld d, h
-	ld e, l
-	ld bc, $002f
-	add hl, bc
-	ld a, [DefaultFlypoint]
-	ld c, a
-.asm_28c96
-	inc c
-	ld a, c
-	cp $6
-	jr z, .asm_28ca6
-	push bc
-	ld bc, $002f
-	call CopyBytes
-	pop bc
-	jr .asm_28c96
-
-.asm_28ca6
-	ld hl, s0_a600
-	ld a, [PartyCount]
-	dec a
-	ld bc, $002f
-	call AddNTimes
-	push hl
-	ld hl, wc9f4
-	ld a, [wd003]
-	ld bc, $002f
-	call AddNTimes
-	pop de
-	ld bc, $002f
-	call CopyBytes
-	call CloseSRAM
-	ld hl, PlayerName
-	ld de, wc6e7
-	ld bc, $000b
-	call CopyBytes
-	ld a, [DefaultFlypoint]
-	ld hl, PartySpecies
-	ld b, $0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	ld [wc6d0], a
-	push af
-	ld a, [DefaultFlypoint]
-	ld hl, PartyMonOT
-	call SkipNames
-	ld de, wc6f2
-	ld bc, $000b
-	call CopyBytes
-	ld hl, PartyMon1ID
-	ld a, [DefaultFlypoint]
-	call GetPartyLocation
-	ld a, [hli]
-	ld [PlayerScreens], a
-	ld a, [hl]
-	ld [EnemyScreens], a
-	ld hl, PartyMon1DVs
-	ld a, [DefaultFlypoint]
-	call GetPartyLocation
-	ld a, [hli]
-	ld [wc6fd], a
-	ld a, [hl]
-	ld [wc6fe], a
-	ld a, [DefaultFlypoint]
-	ld hl, PartyMon1Species
-	call GetPartyLocation
-	ld b, h
-	ld c, l
-	callba GetCaughtGender
-	ld a, c
-	ld [wc701], a
-	ld hl, wd26b
-	ld de, wc719
-	ld bc, $000b
-	call CopyBytes
-	ld a, [wd003]
-	ld hl, OTPartySpecies
-	ld b, $0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	ld [wc702], a
-	ld a, [wd003]
-	ld hl, OTPartyMonOT
-	call SkipNames
-	ld de, wc724
-	ld bc, $000b
-	call CopyBytes
-	ld hl, OTPartyMon1ID
-	ld a, [wd003]
-	call GetPartyLocation
-	ld a, [hli]
-	ld [wc731], a
-	ld a, [hl]
-	ld [wc732], a
-	ld hl, OTPartyMon1DVs
-	ld a, [wd003]
-	call GetPartyLocation
-	ld a, [hli]
-	ld [wc72f], a
-	ld a, [hl]
-	ld [wc730], a
-	ld a, [wd003]
-	ld hl, OTPartyMon1Species
-	call GetPartyLocation
-	ld b, h
-	ld c, l
-	callba GetCaughtGender
-	ld a, c
-	ld [wc733], a
-	ld a, [DefaultFlypoint]
-	ld [CurPartyMon], a
-	ld hl, PartySpecies
-	ld b, $0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	ld [DefaultFlypoint], a
-	xor a
-	ld [wd10b], a
-	callab Functione039
-	ld a, [PartyCount]
-	dec a
-	ld [CurPartyMon], a
-	ld a, $1
-	ld [wd1e9], a
-	ld a, [wd003]
-	push af
-	ld hl, OTPartySpecies
-	ld b, $0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	ld [wd003], a
-	ld c, $64
-	call DelayFrames
-	call ClearTileMap
-	call LoadFontsBattleExtra
-	ld b, $8
-	call GetSGBLayout
-	ld a, [$ffcb]
-	cp $1
-	jr z, .asm_28de4
-	predef Function28f24
-	jr .asm_28de9
-
-.asm_28de4
-	predef Function28f63
-
-.asm_28de9
-	pop af
-	ld c, a
-	ld [CurPartyMon], a
-	ld hl, OTPartySpecies
 	ld d, $0
-	ld e, a
-	add hl, de
-	ld a, [hl]
-	ld [CurPartySpecies], a
-	ld hl, OTPartyMon1Species
-	ld a, c
-	call GetPartyLocation
-	ld de, TempMonSpecies
-	ld bc, PartyMon2 - PartyMon1
-	call CopyBytes
-	predef Functionda96
-	ld a, [PartyCount]
-	dec a
-	ld [CurPartyMon], a
-	callab Function421d8
-	call ClearScreen
-	call Function28ef8
-	call Function28eff
-	callba Function4d354
-	ld b, $1
-	pop af
-	ld c, a
-	cp MEW
-	jr z, .asm_28e49
-	ld a, [CurPartySpecies]
-	cp MEW
-	jr z, .asm_28e49
 	ld b, $2
-	ld a, c
-	cp CELEBI
-	jr z, .asm_28e49
-	ld a, [CurPartySpecies]
-	cp CELEBI
-	jr z, .asm_28e49
-	ld b, $0
-
-.asm_28e49
-	ld a, b
-	ld [wcf56], a
-	push bc
-	call Function862
-	pop bc
-	ld a, [wLinkMode]
-	cp LINK_TIMECAPSULE
-	jr z, .asm_28e63
-	ld a, b
-	and a
-	jr z, .asm_28e63
-	ld a, [wcf52]
-	cp b
-	jr nz, .asm_28e49
-
-.asm_28e63
-	callba Function14a58
-	callba MobileFn_1060af
-	callba Function106187
-	ld c, $28
-	call DelayFrames
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call Function28eef
-	hlcoord 1, 14
-	ld de, String28ebd
-	call PlaceString
-	callba Function4d354
-	ld c, $32
-	call DelayFrames
-	ld a, [wLinkMode]
-	cp LINK_TIMECAPSULE
-	jp z, Function2805d
-	jp Function28177
-; 28ea3
-
-Function28ea3: ; 28ea3
-	ld c, 100
-	call DelayFrames
-	jp Function287e3
-; 28eab
-
-String28eab: ; 28eab
-	db   "TRADE"
-	next "CANCEL@"
-
-UnknownText_0x28eb8: ; 0x28eb8
-	; Trade @ for @ ?
-	text_jump UnknownText_0x1c4212
-	db "@"
-; 0x28ebd
-
-String28ebd: ; 28ebd
-	db   "Trade completed!@"
-
-String28ece: ; 28ece
-	db   "Too bad! The trade"
-	next "was canceled!@"
-
-
-Function28eef: ; 28eef
-	ld d, h
-	ld e, l
-	callba Function16d6ca
-	ret
-; 28ef8
-
-Function28ef8: ; 28ef8
-	callba Function16d696
-	ret
-; 28eff
-
-Function28eff: ; 28eff
-	callba Function16d6a7
-	call SetPalettes
-	ret
-; 28f09
-
-Function28f09: ; 28f09
-	hlcoord 0, 0
-	ld b, 6
-	ld c, 18
-	call Function28eef
-	hlcoord 0, 8
-	ld b, 6
-	ld c, 18
-	call Function28eef
-	callba Functionfb60d
-	ret
-; 28f24
-
-Function28f24: ; 28f24
-	xor a
-	ld [wcf66], a
-	ld hl, wc6e7
-	ld de, wc719
-	call Function297ff
-	ld hl, wc6d0
-	ld de, wc702
-	call Function29814
-	ld de, .data_28f3f
-	jr Function28fa1
-
-.data_28f3f
-	db $1b
-	db $1
-	db $1c
-	db $21
-	db $2d
-	db $27
-	db $23
-	db $3
-	db $25
-	db $28
-	db $25
-	db $1e
-	db $29
-	db $6
-	db $16
-	db $1f
-	db $19
-	db $17
-	db $22
-	db $1f
-	db $2a
-	db $e
-	db $3
-	db $24
-	db $5
-	db $25
-	db $2
-	db $27
-	db $25
-	db $1d
-	db $2c
-	db $2e
-	db $1e
-	db $18
-	db $1f
-	db $2b
-
-Function28f63: ; 28f63
-	xor a
-	ld [wcf66], a
-	ld hl, wc719
-	ld de, wc6e7
-	call Function297ff
-	ld hl, wc702
-	ld de, wc6d0
-	call Function29814
-	ld de, .data_28f7e
-	jr Function28fa1
-
-.data_28f7e
-	db $1a
-	db $17
-	db $22
-	db $1f
-	db $2a
-	db $6
-	db $3
-	db $24
-	db $5
-	db $25
-	db $2
-	db $27
-	db $25
-	db $1d
-	db $2c
-	db $2f
-	db $1e
-	db $18
-	db $1f
-	db $1b
-	db $1
-	db $1c
-	db $22
-	db $27
-	db $23
-	db $3
-	db $25
-	db $28
-	db $25
-	db $1e
-	db $29
-	db $e
-	db $16
-	db $1f
-	db $2b
-
-Function28fa1: ; 28fa1
-	ld hl, BattleEnded
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld a, [$ffde]
-	push af
-	xor a
-	ld [$ffde], a
-	ld hl, VramState
-	ld a, [hl]
-	push af
-	res 0, [hl]
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	call Function28fdb
-	ld a, [wcf66]
-	and a
-	jr nz, .asm_28fca
-	ld de, MUSIC_EVOLUTION
-	call PlayMusic2
-.asm_28fca
-	call Function29082
-	jr nc, .asm_28fca
-	pop af
-	ld [Options], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [$ffde], a
-	ret
-; 28fdb
-
-Function28fdb: ; 28fdb
-	xor a
-	ld [wJumptableIndex], a
-	call WhiteBGMap
-	call ClearSprites
-	call ClearTileMap
-	call DisableLCD
-	call LoadFontsBattleExtra
-	callab Function8cf53
-	ld a, [hCGB]
-	and a
-	jr z, .asm_2900b
-	ld a, $1
-	ld [rVBK], a
-	ld hl, VTiles0
-	ld bc, sScratch - VTiles0
-	xor a
-	call ByteFill
-	ld a, $0
-	ld [rVBK], a
-
-.asm_2900b
-	ld hl, VBGMap0
-	ld bc, sScratch - VBGMap0
-	ld a, " "
-	call ByteFill
-	ld hl, TradeGameBoyLZ
-	ld de, VTiles2 tile $31
-	call Decompress
-	ld hl, TradeArrowGFX
-	ld de, VTiles1 tile $6d
-	ld bc, $0010
-	ld a, BANK(TradeArrowGFX)
-	call FarCopyBytes
-	ld hl, TradeArrowGFX + $10
-	ld de, VTiles1 tile $6e
-	ld bc, $0010
-	ld a, BANK(TradeArrowGFX)
-	call FarCopyBytes
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	ld a, $7
-	ld [hWX], a
-	ld a, $90
-	ld [hWY], a
-	callba Function4d7fd
-	call EnableLCD
-	call Function2982b
-	ld a, [wc6d0]
-	ld hl, wc6fd
-	ld de, VTiles0
-	call Function29491
-	ld a, [wc702]
-	ld hl, wc72f
-	ld de, VTiles0 tile $31
-	call Function29491
-	ld a, [wc6d0]
-	ld de, wc6d1
-	call Function294a9
-	ld a, [wc702]
-	ld de, wc703
-	call Function294a9
-	call Function297ed
-	ret
-; 29082
-
-Function29082: ; 29082
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_2909b
-	call Function290a0
-	callab Function8cf69
-	ld hl, wcf65
-	inc [hl]
-	call DelayFrame
-	and a
-	ret
-
-.asm_2909b
-	call Functione51
-	scf
-	ret
-; 290a0
-
-Function290a0: ; 290a0
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, JumpTable290af
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 290af
-
-JumpTable290af: ; 290af
-	dw Function29114
-	dw Function2942e
-	dw Function29461
-	dw Function29348
-	dw Function2937e
-	dw Function29391
-	dw Function29129
-	dw Function291af
-	dw Function291c4
-	dw Function291d9
-	dw Function2925d
-	dw Function29220
-	dw Function2925d
-	dw Function29229
-	dw Function2913c
-	dw Function2925d
-	dw Function291e8
-	dw Function291fd
-	dw Function29211
-	dw Function29220
-	dw Function2925d
-	dw Function29229
-	dw Function29701
-	dw Function2973c
-	dw Function2975c
-	dw Function2977f
-	dw Function297a4
-	dw Function293a6
-	dw Function293b6
-	dw Function293d2
-	dw Function293de
-	dw Function293ea
-	dw Function2940c
-	dw Function294e7
-	dw Function294f0
-	dw Function2961b
-	dw Function2962c
-	dw Function29879
-	dw Function29886
-	dw Function29649
-	dw Function29660
-	dw Function2926d
-	dw Function29277
-	dw Function29123
-	dw Function29487
-	dw Function294f9
-	dw Function29502
-	dw Function2950c
-; 2910f
-
-Function2910f: ; 2910f
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; 29114
-
-Function29114: ; 29114
-	ld hl, BattleEnded
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld a, [de]
-	ld [wJumptableIndex], a
-	inc de
-	ld [hl], d
-	dec hl
-	ld [hl], e
-	ret
-; 29123
-
-Function29123: ; 29123
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-; 29129
-
-Function29129: ; 29129
-	ld a, $ed
-	call Function292f6
-	ld a, [wc74c]
-	ld [wd265], a
-	xor a
-	ld de, $2c58
-	ld b, $0
-	jr Function2914e
-
-Function2913c: ; 2913c
-	ld a, $ee
-	call Function292f6
-	ld a, [wc74d]
-	ld [wd265], a
-	ld a, $2
-	lb de, $4c, $94
-	ld b, $4
-
-Function2914e: ; 2914e
-	push bc
-	push de
-	push bc
-	push de
-	push af
-	call DisableLCD
-	callab Function8cf53
-	ld hl, $9874
-	ld bc, $000c
-	ld a, $60
-	call ByteFill
-	pop af
-	call Function29281
-	xor a
-	ld [hSCX], a
-	ld a, $7
-	ld [hWX], a
-	ld a, $70
-	ld [hWY], a
-	call EnableLCD
-	call Function2985a
-	pop de
-	ld a, $11
-	call Function3b2a
-	ld hl, $000b
-	add hl, bc
-	pop bc
-	ld [hl], b
-	pop de
-	ld a, $12
-	call Function3b2a
-	ld hl, $000b
-	add hl, bc
-	pop bc
-	ld [hl], b
-	call WaitBGMap
-	ld b, $1b
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $d0
-	call Functioncf8
-	call Function2910f
-	ld a, $5c
-	ld [wcf64], a
-	ret
-; 291af
-
-Function291af: ; 291af
-	call Function2981d
-	ld a, [hSCX]
-	add $2
-	ld [hSCX], a
-	cp $50
-	ret nz
-	ld a, $1
-	call Function29281
-	call Function2910f
-	ret
-; 291c4
-
-Function291c4: ; 291c4
-	call Function2981d
-	ld a, [hSCX]
-	add $2
-	ld [hSCX], a
-	cp $a0
-	ret nz
-	ld a, $2
-	call Function29281
-	call Function2910f
-	ret
-; 291d9
-
-Function291d9: ; 291d9
-	call Function2981d
-	ld a, [hSCX]
-	add $2
-	ld [hSCX], a
-	and a
-	ret nz
-	call Function2910f
-	ret
-; 291e8
-
-Function291e8: ; 291e8
-	call Function2981d
-	ld a, [hSCX]
-	sub $2
-	ld [hSCX], a
-	cp $b0
-	ret nz
-	ld a, $1
-	call Function29281
-	call Function2910f
-	ret
-; 291fd
-
-Function291fd: ; 291fd
-	call Function2981d
-	ld a, [hSCX]
-	sub $2
-	ld [hSCX], a
-	cp $60
-	ret nz
-	xor a
-	call Function29281
-	call Function2910f
-	ret
-; 29211
-
-Function29211: ; 29211
-	call Function2981d
-	ld a, [hSCX]
-	sub $2
-	ld [hSCX], a
-	and a
-	ret nz
-	call Function2910f
-	ret
-; 29220
-
-Function29220: ; 29220
-	ld a, $80
-	ld [wcf64], a
-	call Function2910f
-	ret
-; 29229
-
-Function29229: ; 29229
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	callab Function8cf53
-	ld hl, VBGMap0
-	ld bc, sScratch - VBGMap0
-	ld a, " "
-	call ByteFill
-	xor a
-	ld [hSCX], a
-	ld a, $90
-	ld [hWY], a
-	call EnableLCD
-	call Function2982b
-	call WaitBGMap
-	call Function297ed
-	call Function29114
-	ret
-; 2925d
-
-Function2925d: ; 2925d
-	call Function2981d
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_29269
-	dec [hl]
-	ret
-
-.asm_29269
-	call Function2910f
-	ret
-; 2926d
-
-Function2926d: ; 2926d
-	call Function29114
-	ld de, SFX_GIVE_TRADEMON
-	call PlaySFX
-	ret
-; 29277
-
-Function29277: ; 29277
-	call Function29114
-	ld de, SFX_GET_TRADEMON
-	call PlaySFX
-	ret
-; 29281
-
-Function29281: ; 29281
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_2928f
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 2928f
-
-Jumptable_2928f: ; 2928f
-	dw Function29297
-	dw Function292af
-	dw Function292be
-	dw Function29297
-; 29297
-
-Function29297: ; 29297
-	call Function297cf
-	hlcoord 9, 3
-	ld [hl], $5b
-	inc hl
-	ld bc, $000a
-	ld a, $60
-	call ByteFill
-	hlcoord 3, 2
-	call Function292ec
-	ret
-; 292af
-
-Function292af: ; 292af
-	call Function297cf
-	hlcoord 0, 3
-	ld bc, SCREEN_WIDTH
-	ld a, $60
-	call ByteFill
-	ret
-; 292be
-
-Function292be: ; 292be
-	call Function297cf
-	hlcoord 0, 3
-	ld bc, $0011
-	ld a, $60
-	call ByteFill
-	hlcoord 17, 3
-	ld a, $5d
-	ld [hl], a
-	ld a, $61
-	ld de, SCREEN_WIDTH
-	ld c, $3
-.asm_292d9
-	add hl, de
-	ld [hl], a
-	dec c
-	jr nz, .asm_292d9
-	add hl, de
-	ld a, $5f
-	ld [hld], a
-	ld a, $5b
-	ld [hl], a
-	hlcoord 10, 6
-	call Function292ec
-	ret
-; 292ec
-
-Function292ec: ; 292ec
-	ld de, TradeGameBoyTilemap
-	lb bc, 8, 6
-	call Function297db
-	ret
-; 292f6
-
-Function292f6: ; 292f6
-	push af
-	call WhiteBGMap
-	call WaitTop
-	ld a, VBGMap1 / $100
-	ld [hBGMapAddress + 1], a
-	call ClearTileMap
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH
-	ld a, "─"
-	call ByteFill
-	hlcoord 0, 1
-	ld de, wc736
-	call PlaceString
-	ld hl, wc741
-	ld de, 0
-.asm_2931e
-	ld a, [hli]
-	cp "@"
-	jr z, .asm_29326
-	dec de
-	jr .asm_2931e
-
-.asm_29326
-	hlcoord 0, 4
-	add hl, de
-	ld de, wc741
-	call PlaceString
-	hlcoord 7, 2
-	ld bc, $0006
-	pop af
-	call ByteFill
-	call WaitBGMap
-	call WaitTop
-	ld a, VBGMap0 / $100
-	ld [hBGMapAddress + 1], a
-	call ClearTileMap
-	ret
-; 29348
-
-Function29348: ; 29348
-	call ClearTileMap
-	call WaitTop
-	ld a, $a0
-	ld [hSCX], a
-	call DelayFrame
-	hlcoord 8, 2
-	ld de, Tilemap_298f7
-	lb bc, 3, 12
-	call Function297db
-	call WaitBGMap
-	ld b, $1b
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld de, $e4e4
-	call DmgToCgbObjPals
-	ld de, SFX_POTION
-	call PlaySFX
-	call Function2910f
-	ret
-; 2937e
-
-Function2937e: ; 2937e
-	ld a, [hSCX]
-	and a
-	jr z, .asm_29388
-	add $4
-	ld [hSCX], a
-	ret
-
-.asm_29388
-	ld c, $50
-	call DelayFrames
-	call Function29114
-	ret
-; 29391
-
-Function29391: ; 29391
-	ld a, [hSCX]
-	cp $a0
-	jr z, .asm_2939c
-	sub $4
-	ld [hSCX], a
-	ret
-
-.asm_2939c
-	call ClearTileMap
-	xor a
-	ld [hSCX], a
-	call Function29114
-	ret
-; 293a6
-
-Function293a6: ; 293a6
-	ld a, $8f
-	ld [hWX], a
-	ld a, $88
-	ld [hSCX], a
-	ld a, $50
-	ld [hWY], a
-	call Function29114
-	ret
-; 293b6
-
-Function293b6: ; 293b6
-	ld a, [hWX]
-	cp $7
-	jr z, .asm_293c7
-	sub $4
-	ld [hWX], a
-	ld a, [hSCX]
-	sub $4
-	ld [hSCX], a
-	ret
-
-.asm_293c7
-	ld a, $7
-	ld [hWX], a
-	xor a
-	ld [hSCX], a
-	call Function29114
-	ret
-; 293d2
-
-Function293d2: ; 293d2
-	ld a, $7
-	ld [hWX], a
-	ld a, $50
-	ld [hWY], a
-	call Function29114
-	ret
-; 293de
-
-Function293de: ; 293de
-	ld a, $7
-	ld [hWX], a
-	ld a, $90
-	ld [hWY], a
-	call Function29114
-	ret
-; 293ea
-
-Function293ea: ; 293ea
-	call WaitTop
-	ld a, VBGMap1 / $100
-	ld [hBGMapAddress + 1], a
-	call WaitBGMap
-	ld a, $7
-	ld [hWX], a
-	xor a
-	ld [hWY], a
-	call DelayFrame
-	call WaitTop
-	ld a, VBGMap0 / $100
-	ld [hBGMapAddress + 1], a
-	call ClearTileMap
-	call Function2910f
-	ret
-; 2940c
-
-Function2940c: ; 2940c
-	ld a, [hWX]
-	cp $a1
-	jr nc, .asm_29417
-	add $4
-	ld [hWX], a
-	ret
-
-.asm_29417
-	ld a, VBGMap1 / $100
-	ld [hBGMapAddress + 1], a
-	call WaitBGMap
-	ld a, $7
-	ld [hWX], a
-	ld a, $90
-	ld [hWY], a
-	ld a, VBGMap0 / $100
-	ld [hBGMapAddress + 1], a
-	call Function29114
-	ret
-; 2942e
-
-Function2942e: ; 2942e
-	call Function2951f
-	ld a, [wc6d0]
-	ld [CurPartySpecies], a
-	ld a, [wc6fd]
-	ld [TempMonDVs], a
-	ld a, [wc6fe]
-	ld [TempMonDVs + 1], a
-	ld b, $1a
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	call Function294bb
-
-	ld a, [wc6d0]
-	call GetCryIndex
-	jr c, .asm_2945d
-	ld e, c
-	ld d, b
-	call PlayCryHeader
-.asm_2945d
-
-	call Function29114
-	ret
-; 29461
-
-Function29461: ; 29461
-	call Function29549
-	ld a, [wc702]
-	ld [CurPartySpecies], a
-	ld a, [wc72f]
-	ld [TempMonDVs], a
-	ld a, [wc730]
-	ld [TempMonDVs + 1], a
-	ld b, $1a
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	call Function294c0
-	call Function29114
-	ret
-; 29487
-
-Function29487: ; 29487
-	callba Function4d81e
-	call Function29114
-	ret
-; 29491
-
-Function29491: ; 29491
-	push de
-	push af
-	predef GetUnownLetter
-	pop af
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call GetBaseData
-	pop de
-	predef GetFrontpic
-	ret
-; 294a9
-
-Function294a9: ; 294a9
-	push de
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-	pop de
-	ld bc, $000b
-	call CopyBytes
-	ret
-; 294bb
-
-Function294bb: ; 294bb
-	ld de, VTiles0
-	jr Function294c3
-
-Function294c0: ; 294c0
-	ld de, VTiles0 tile $31
-
-Function294c3: ; 294c3
-	call DelayFrame
-	ld hl, VTiles2
-	ld bc, $0a31
-	call Request2bpp
-	call WaitTop
-	call Function297cf
-	hlcoord 7, 2
-	xor a
-	ld [$ffad], a
-	lb bc, 7, 7
-	predef FillBox
-	call WaitBGMap
-	ret
-; 294e7
-
-Function294e7: ; 294e7
-	ld c, $50
-	call DelayFrames
-	call Function29114
-	ret
-; 294f0
-
-Function294f0: ; 294f0
-	ld c, $28
-	call DelayFrames
-	call Function29114
-	ret
-; 294f9
-
-Function294f9: ; 294f9
-	ld c, $60
-	call DelayFrames
-	call Function29114
-	ret
-; 29502
-
-Function29502: ; 29502
-	call Function29516
-	ret nz
-	ld c, $50
-	call DelayFrames
-	ret
-; 2950c
-
-Function2950c: ; 2950c
-	call Function29516
-	ret nz
-	ld c, $b4
-	call DelayFrames
-	ret
-; 29516
-
-Function29516: ; 29516
-	call Function29114
-	ld a, [wc702]
-	cp $fd
-	ret
-; 2951f
-
-Function2951f: ; 2951f
-	ld de, wc6d0
-	ld a, [de]
-	cp $fd
-	jr z, Function295a1
-	call Function29573
-	ld de, wc6d0
-	call Function295e3
-	ld de, wc6d1
-	call Function295ef
-	ld a, [wc701]
-	ld de, wc6f2
-	call Function295f6
-	ld de, PlayerScreens
-	call Function29611
-	call Function295d8
-	ret
-; 29549
-
-Function29549: ; 29549
-	ld de, wc702
-	ld a, [de]
-	cp $fd
-	jr z, Function295a1
-	call Function29573
-	ld de, wc702
-	call Function295e3
-	ld de, wc703
-	call Function295ef
-	ld a, [wc733]
-	ld de, wc724
-	call Function295f6
-	ld de, wc731
-	call Function29611
-	call Function295d8
-	ret
-; 29573
-
-Function29573: ; 29573
-	call WaitTop
-	call Function297cf
-	ld a, VBGMap1 / $100
-	ld [hBGMapAddress + 1], a
-	hlcoord 3, 0
-	ld b, $6
-	ld c, $d
-	call TextBox
-	hlcoord 4, 0
-	ld de, String29591
-	call PlaceString
-	ret
-; 29591
-
-String29591: ; 29591
-	db   "─── №."
-	next ""
-	next "OT/"
-	next $73, "№.@"
-; 295a1
-
-Function295a1: ; 295a1
-	call WaitTop
-	call Function297cf
-	ld a, VBGMap1 / $100
-	ld [hBGMapAddress + 1], a
-	hlcoord 3, 0
-	ld b, $6
-	ld c, $d
-	call TextBox
-	hlcoord 4, 2
-	ld de, String295c2
-	call PlaceString
-	call Function295d8
-	ret
-; 295c2
-
-String295c2: ; 295c2
-	db   "EGG"
-	next "OT/?????"
-	next $73, "№.?????@"
-; 295d8
-
-Function295d8: ; 295d8
-	call WaitBGMap
-	call WaitTop
-	ld a, VBGMap0 / $100
-	ld [hBGMapAddress + 1], a
-	ret
-; 295e3
-
-Function295e3: ; 295e3
-	hlcoord 10, 0
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
-	call PrintNum
-	ld [hl], $7f
-	ret
-; 295ef
-
-Function295ef: ; 295ef
-	hlcoord 4, 2
-	call PlaceString
-	ret
-; 295f6
-
-Function295f6: ; 295f6
-	cp 3
-	jr c, .asm_295fb
-	xor a
-
-.asm_295fb
-	push af
-	hlcoord 7, 4
-	call PlaceString
-	inc bc
-	pop af
-	ld hl, Unknown_2960e
-	ld d, 0
-	ld e, a
-	add hl, de
-	ld a, [hl]
-	ld [bc], a
-	ret
-; 2960e
-
-Unknown_2960e: ; 2960e
-	db " ", "♂", "♀"
-; 29611
-
-Function29611: ; 29611
-	hlcoord 7, 6
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
-	call PrintNum
-	ret
-; 2961b
-
-Function2961b: ; 2961b
-	lb de, $54, $58
-	ld a, $e
-	call Function3b2a
-	call Function29114
-	ld a, $20
-	ld [wcf64], a
-	ret
-; 2962c
-
-Function2962c: ; 2962c
-	lb de, $54, $58
-	ld a, $e
-	call Function3b2a
-	ld hl, $000b
-	add hl, bc
-	ld [hl], $1
-	ld hl, $0007
-	add hl, bc
-	ld [hl], $dc
-	call Function29114
-	ld a, $38
-	ld [wcf64], a
-	ret
-; 29649
-
-Function29649: ; 29649
-	lb de, $54, $58
-	ld a, $f
-	call Function3b2a
-	call Function29114
-	ld a, $10
-	ld [wcf64], a
-	ld de, SFX_BALL_POOF
-	call PlaySFX
-	ret
-; 29660
-
-Function29660: ; 29660
-	ld a, $e4
-	call Functioncf8
-	lb de, $28, $58
-	ld a, $10
-	call Function3b2a
-	call Function29114
-	ld a, $40
-	ld [wcf64], a
-	ret
-; 29676
-
-Function29676: ; 29676 (a:5676)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_29686
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 29686
-
-Jumptable_29686: ; 29686 (a:5686)
-	dw Function2969a
-	dw Function296a4
-	dw Function296af
-	dw Function296bd
-	dw Function296cf
-	dw Function296dd
-	dw Function296f2
-; 2969a
-
-Function29694: ; 29694 (a:5694)
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ret
-
-Function2969a: ; 2969a (a:569a)
-	call Function29694
-	ld hl, $c
-	add hl, bc
-	ld [hl], $80
-	ret
-
-Function296a4: ; 296a4 (a:56a4)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	and a
-	ret nz
-	call Function29694
-
-Function296af: ; 296af (a:56af)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	cp $94
-	jr nc, .asm_296ba
-	inc [hl]
-	ret
-.asm_296ba
-	call Function29694
-
-Function296bd: ; 296bd (a:56bd)
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
-	cp $4c
-	jr nc, .asm_296c8
-	inc [hl]
-	ret
-.asm_296c8
-	ld hl, $0
-	add hl, bc
-	ld [hl], $0
-	ret
-
-Function296cf: ; 296cf (a:56cf)
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
-	cp $2c
-	jr z, .asm_296da
-	dec [hl]
-	ret
-.asm_296da
-	call Function29694
-
-Function296dd: ; 296dd (a:56dd)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	cp $58
-	jr z, .asm_296e8
-	dec [hl]
-	ret
-.asm_296e8
-	call Function29694
-	ld hl, $c
-	add hl, bc
-	ld [hl], $80
-	ret
-
-Function296f2: ; 296f2 (a:56f2)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	dec [hl]
-	and a
-	ret nz
-	ld hl, $0
-	add hl, bc
-	ld [hl], $0
-	ret
-; 29701 (a:5701)
-
-Function29701: ; 29701
-	ld a, [wLinkMode]
-	cp LINK_TIMECAPSULE
-	jr z, .asm_29725
-	ld hl, UnknownText_0x29737
-	call PrintText
-	ld c, $bd
-	call DelayFrames
-	ld hl, UnknownText_0x29732
-	call PrintText
-	call Function297c9
-	ld c, $80
-	call DelayFrames
-	call Function29114
-	ret
-
-.asm_29725
-	ld hl, UnknownText_0x29732
-	call PrintText
-	call Function297c9
-	call Function29114
-	ret
-; 29732
-
-UnknownText_0x29732: ; 0x29732
-	; was sent to @ .
-	text_jump UnknownText_0x1bc6e9
-	db "@"
-; 0x29737
-
-UnknownText_0x29737: ; 0x29737
-	;
-	text_jump UnknownText_0x1bc701
-	db "@"
-; 0x2973c
-
-Function2973c: ; 2973c
-	ld hl, UnknownText_0x29752
-	call PrintText
-	call Function297c9
-	ld hl, UnknownText_0x29757
-	call PrintText
-	call Function297c9
-	call Function29114
-	ret
-; 29752
-
-UnknownText_0x29752: ; 0x29752
-	; bids farewell to
-	text_jump UnknownText_0x1bc703
-	db "@"
-; 0x29757
-
-UnknownText_0x29757: ; 0x29757
-	; .
-	text_jump UnknownText_0x1bc719
-	db "@"
-; 0x2975c
-
-Function2975c: ; 2975c
-	call WaitTop
-	hlcoord 0, 10
-	ld bc, 8 * SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	call WaitBGMap
-	ld hl, UnknownText_0x2977a
-	call PrintText
-	call Function297c9
-	call Function29114
-	ret
-; 2977a
-
-UnknownText_0x2977a: ; 0x2977a
-	; Take good care of @ .
-	text_jump UnknownText_0x1bc71f
-	db "@"
-; 0x2977f
-
-Function2977f: ; 2977f
-	ld hl, UnknownText_0x2979a
-	call PrintText
-	call Function297c9
-	ld hl, UnknownText_0x2979f
-	call PrintText
-	call Function297c9
-	ld c, $e
-	call DelayFrames
-	call Function29114
-	ret
-; 2979a
-
-UnknownText_0x2979a: ; 0x2979a
-	; For @ 's @ ,
-	text_jump UnknownText_0x1bc739
-	db "@"
-; 0x2979f
-
-UnknownText_0x2979f: ; 0x2979f
-	; sends @ .
-	text_jump UnknownText_0x1bc74c
-	db "@"
-; 0x297a4
-
-Function297a4: ; 297a4
-	ld hl, UnknownText_0x297bf
-	call PrintText
-	call Function297c9
-	ld hl, UnknownText_0x297c4
-	call PrintText
-	call Function297c9
-	ld c, $e
-	call DelayFrames
-	call Function29114
-	ret
-; 297bf
-
-UnknownText_0x297bf: ; 0x297bf
-	; will trade @ @
-	text_jump UnknownText_0x1bc75e
-	db "@"
-; 0x297c4
-
-UnknownText_0x297c4: ; 0x297c4
-	; for @ 's @ .
-	text_jump UnknownText_0x1bc774
-	db "@"
-; 0x297c9
-
-Function297c9: ; 297c9
-	ld c, $50
-	call DelayFrames
-	ret
-; 297cf
-
-Function297cf: ; 297cf
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, " "
-	call ByteFill
-	ret
-; 297db
-
-Function297db: ; 297db
-.asm_297db
-	push bc
-	push hl
-.asm_297dd
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .asm_297dd
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_297db
-	ret
-; 297ed
-
-Function297ed: ; 297ed
-	ld a, [hSGB]
-	and a
-	ld a, $e4
-	jr z, .asm_297f6
-	ld a, $f0
-
-.asm_297f6
-	call Functioncf8
-	ld a, $e4
-	call DmgToCgbBGPals
-	ret
-; 297ff
-
-Function297ff: ; 297ff
-	push de
-	ld de, wc736
-	ld bc, $000b
-	call CopyBytes
-	pop hl
-	ld de, wc741
-	ld bc, $000b
-	call CopyBytes
-	ret
-; 29814
-
-Function29814: ; 29814
-	ld a, [hl]
-	ld [wc74c], a
-	ld a, [de]
-	ld [wc74d], a
-	ret
-; 2981d
-
-Function2981d: ; 2981d
-	ld a, [wcf65]
-	and $7
-	ret nz
-	ld a, [rBGP]
-	xor $3c
-	call DmgToCgbBGPals
-	ret
-; 2982b
-
-Function2982b: ; 2982b
-	call DelayFrame
-	ld de, TradeBallGFX
-	ld hl, VTiles0 tile $62
-	lb bc, BANK(TradeBallGFX), $6
-	call Request2bpp
-	ld de, TradePoofGFX
-	ld hl, VTiles0 tile $68
-	lb bc, BANK(TradePoofGFX), $c
-	call Request2bpp
-	ld de, TradeCableGFX
-	ld hl, VTiles0 tile $74
-	lb bc, BANK(TradeCableGFX), $4
-	call Request2bpp
-	xor a
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], $62
-	ret
-; 2985a
-
-Function2985a: ; 2985a
-	call DelayFrame
-	ld e, $3
-	callab Function8e83f
-	ld de, TradeBubbleGFX
-	ld hl, VTiles0 tile $72
-	lb bc, BANK(TradeBubbleGFX), $4
-	call Request2bpp
-	xor a
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], $62
-	ret
-; 29879
-
-Function29879: ; 29879
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_29882
-	dec [hl]
-	ret
-
-.asm_29882
-	call Function29114
-	ret
-; 29886
-
-Function29886: ; 29886
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_2988f
-	dec [hl]
-	ret
-
-.asm_2988f
-	call Function29114
-	ret
-; 29893
-
-
-Function29893: ; 29893
-; This function is unreferenced.
-; It was meant for use in Japanese versions, so the
-; constant used for copy length was changed by accident.
-
-	ld hl, Unknown_298b5
-
-	ld a, [hli]
-	ld [wc6d0], a
-	ld de, wc6e7
-	ld c, 13 ; jp: 8
-.asm_2989f
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_2989f
-
-	ld a, [hli]
-	ld [wc702], a
-	ld de, wc719
-	ld c, 13 ; jp: 8
-.asm_298ae
-	ld a, [hli]
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_298ae
-	ret
-; 298b5
-
-Unknown_298b5: ; 298b5
-	db $03, "ゲーフり@@", $23, $01 ; GAME FREAK
-	db $06, "クりーチャ@", $56, $04 ; Creatures Inc.
-; 298c7
-
-
-TradeGameBoyTilemap: ; 298c7
-; 6x8
-	db $31, $32, $32, $32, $32, $33
-	db $34, $35, $36, $36, $37, $38
-	db $34, $39, $3a, $3a, $3b, $38
-	db $3c, $3d, $3e, $3e, $3f, $40
-	db $41, $42, $43, $43, $44, $45
-	db $46, $47, $43, $48, $49, $4a
-	db $41, $43, $4b, $4c, $4d, $4e
-	db $4f, $50, $50, $50, $51, $52
-; 297f7
-
-Tilemap_298f7: ; 297f7
-; 12x3
-	db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
-	db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
-	db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43
-; 2991b
-
-TradeArrowGFX:  INCBIN "gfx/trade/arrow.2bpp"
-TradeCableGFX:  INCBIN "gfx/trade/cable.2bpp"
-TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp"
-TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz"
-TradeBallGFX:   INCBIN "gfx/trade/ball.2bpp"
-TradePoofGFX:   INCBIN "gfx/trade/poof.2bpp"
-
-Special_CheckTimeCapsuleCompatibility: ; 29bfb
-; Checks to see if your Party is compatible with the generation 1 games.  Returns the following in ScriptVar:
-; 0: Party is okay
-; 1: At least one Pokemon was introduced in GS
-; 2: At least one Pokemon has a move that was introduced in GS
-; 3: At least one Pokemon is holding mail
-
-; If any party Pokemon was introduced in the generation 2 games, don't let it in.
-	ld hl, PartySpecies
-	ld b, PARTY_LENGTH ; 6
-.loop
-	ld a, [hli]
-	cp $ff
-	jr z, .checkitem
-	cp CHIKORITA ; MEW + 1 ; 151 + 1
-	jr nc, .mon_too_new
-	dec b
-	jr nz, .loop
-
-; If any party Pokemon is holding mail, don't let it in.
-.checkitem
-	ld a, [PartyCount]
-	ld b, a
-	ld hl, PartyMon1Item
-.itemloop
-	push hl
-	push bc
-	ld d, [hl]
-	callba ItemIsMail
-	pop bc
-	pop hl
-	jr c, .mon_has_mail
-	ld de, PartyMon2 - PartyMon1
-	add hl, de
-	dec b
-	jr nz, .itemloop
-
-; If any party Pokemon has a move that was introduced in the generation 2 games, don't let it in.
-	ld hl, PartyMon1Moves
-	ld a, [PartyCount]
-	ld b, a
-.move_loop
-	ld c, NUM_MOVES
-.move_next
-	ld a, [hli]
-	cp STRUGGLE + 1
-	jr nc, .move_too_new
-	dec c
-	jr nz, .move_next
-	ld de, PartyMon2 - (PartyMon1 + NUM_MOVES)
-	add hl, de
-	dec b
-	jr nz, .move_loop
-	xor a
-	jr .done
-
-.mon_too_new
-	ld [wd265], a
-	call GetPokemonName
-	ld a, $1
-	jr .done
-
-.move_too_new
-	push bc
-	ld [wd265], a
-	call GetMoveName
-	call CopyName1
-	pop bc
-	call Function29c67
-	ld a, $2
-	jr .done
-
-.mon_has_mail
-	call Function29c67
-	ld a, $3
-
-.done
-	ld [ScriptVar], a
-	ret
-; 29c67
-
-Function29c67: ; 29c67
-	ld a, [PartyCount]
-	sub b
-	ld c, a
-	inc c
-	ld b, $0
-	ld hl, PartyCount
-	add hl, bc
-	ld a, [hl]
-	ld [wd265], a
-	call GetPokemonName
-	ret
-; 29c7b
-
-Special_EnterTimeCapsule: ; 29c7b
-	ld c, $a
-	call DelayFrames
-	ld a, $4
-	call Function29f17
-	ld c, $28
-	call DelayFrames
-	xor a
-	ld [hVBlank], a
-	inc a
-	ld [wLinkMode], a
-	ret
-; 29c92
-
-Special_AbortLink: ; 29c92
-	ld c, $3
-	call DelayFrames
-	ld a, -1
-	ld [$ffcb], a
-	xor a
-	ld [rSB], a
-	ld [hSerialReceive], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-	ld c, $3
-	call DelayFrames
-	xor a
-	ld [rSB], a
-	ld [hSerialReceive], a
-	ld a, $0
-	ld [rSC], a
-	ld a, $80
-	ld [rSC], a
-	ld c, $3
-	call DelayFrames
-	xor a
-	ld [rSB], a
-	ld [hSerialReceive], a
-	ld [rSC], a
-	ld c, $3
-	call DelayFrames
-	ld a, -1
-	ld [$ffcb], a
-	ld a, [rIF]
-	push af
-	xor a
-	ld [rIF], a
-	ld a, $f
-	ld [rIE], a
-	pop af
-	ld [rIF], a
-	ld hl, wcf5b
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ld [hVBlank], a
-	ld [wLinkMode], a
-	ret
-; 29ce8
-
-Special_SetBitsForLinkTradeRequest: ; 29ce8
-	ld a, $1
-	ld [wcf56], a
-	ld [wd265], a
-	ret
-; 29cf1
-
-Special_SetBitsForBattleRequest: ; 29cf1
-	ld a, $2
-	ld [wcf56], a
-	ld [wd265], a
-	ret
-; 29cfa
-
-Special_SetBitsForTimeCapsuleRequest: ; 29cfa
-	ld a, $2
-	ld [rSB], a
-	xor a
-	ld [hSerialReceive], a
-	ld a, $0
-	ld [rSC], a
-	ld a, $80
-	ld [rSC], a
-	xor a
-	ld [wcf56], a
-	ld [wd265], a
-	ret
-; 29d11
-
-Special_WaitForLinkedFriend: ; 29d11
-	ld a, [wcf56]
-	and a
-	jr z, .asm_29d2f
-	ld a, $2
-	ld [rSB], a
-	xor a
-	ld [hSerialReceive], a
-	ld a, $0
-	ld [rSC], a
-	ld a, $80
-	ld [rSC], a
-	call DelayFrame
-	call DelayFrame
-	call DelayFrame
-
-.asm_29d2f
-	ld a, $2
-	ld [wcf5c], a
-	ld a, $ff
-	ld [wcf5b], a
-.asm_29d39
-	ld a, [$ffcb]
-	cp $2
-	jr z, .asm_29d79
-	cp $1
-	jr z, .asm_29d79
-	ld a, -1
-	ld [$ffcb], a
-	ld a, $2
-	ld [rSB], a
-	xor a
-	ld [hSerialReceive], a
-	ld a, $0
-	ld [rSC], a
-	ld a, $80
-	ld [rSC], a
-	ld a, [wcf5b]
-	dec a
-	ld [wcf5b], a
-	jr nz, .asm_29d68
-	ld a, [wcf5c]
-	dec a
-	ld [wcf5c], a
-	jr z, .asm_29d8d
-
-.asm_29d68
-	ld a, $1
-	ld [rSB], a
-	ld a, $1
-	ld [rSC], a
-	ld a, $81
-	ld [rSC], a
-	call DelayFrame
-	jr .asm_29d39
-
-.asm_29d79
-	call Function908
-	call DelayFrame
-	call Function908
-	ld c, $32
-	call DelayFrames
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.asm_29d8d
-	xor a
-	ld [ScriptVar], a
-	ret
-; 29d92
-
-Special_CheckLinkTimeout: ; 29d92
-	ld a, $1
-	ld [wcf56], a
-	ld hl, wcf5b
-	ld a, $3
-	ld [hli], a
-	xor a
-	ld [hl], a
-	call WaitBGMap
-	ld a, $2
-	ld [hVBlank], a
-	call DelayFrame
-	call DelayFrame
-	call Function29e0c
-	xor a
-	ld [hVBlank], a
-	ld a, [ScriptVar]
-	and a
-	ret nz
-	jp Function29f04
-; 29dba
-
-Function29dba: ; 29dba
-	ld a, $5
-	ld [wcf56], a
-	ld hl, wcf5b
-	ld a, $3
-	ld [hli], a
-	xor a
-	ld [hl], a
-	call WaitBGMap
-	ld a, $2
-	ld [hVBlank], a
-	call DelayFrame
-	call DelayFrame
-	call Function29e0c
-	ld a, [ScriptVar]
-	and a
-	jr z, .asm_29e08
-	ld bc, rIE
-.asm_29de0
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_29de0
-	ld a, [wcf51]
-	cp $5
-	jr nz, .asm_29e03
-	ld a, $6
-	ld [wcf56], a
-	ld hl, wcf5b
-	ld a, $1
-	ld [hli], a
-	ld [hl], $32
-	call Function29e0c
-	ld a, [wcf51]
-	cp $6
-	jr z, .asm_29e08
-
-.asm_29e03
-	xor a
-	ld [ScriptVar], a
-	ret
-
-.asm_29e08
-	xor a
-	ld [hVBlank], a
-	ret
-; 29e0c
-
-Function29e0c: ; 29e0c
-	xor a
-	ld [$ffca], a
-	ld a, [wcf5b]
-	ld h, a
-	ld a, [wcf5c]
-	ld l, a
-	push hl
-	call Function29e3b
-	pop hl
-	jr nz, .asm_29e2f
-	call Function29e47
-	call Function29e53
-	call Function29e3b
-	jr nz, .asm_29e2f
-	call Function29e47
-	xor a
-	jr .asm_29e31
-
-.asm_29e2f
-	ld a, $1
-
-.asm_29e31
-	ld [ScriptVar], a
-	ld hl, wcf5b
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ret
-; 29e3b
-
-Function29e3b: ; 29e3b
-	call Function87d
-	ld hl, wcf5b
-	ld a, [hli]
-	inc a
-	ret nz
-	ld a, [hl]
-	inc a
-	ret
-; 29e47
-
-Function29e47: ; 29e47
-	ld b, $a
-.asm_29e49
-	call DelayFrame
-	call Function908
-	dec b
-	jr nz, .asm_29e49
-	ret
-; 29e53
-
-Function29e53: ; 29e53
-	dec h
-	srl h
-	rr l
-	srl h
-	rr l
-	inc h
-	ld a, h
-	ld [wcf5b], a
-	ld a, l
-	ld [wcf5c], a
-	ret
-; 29e66
-
-Special_TryQuickSave: ; 29e66
-	ld a, [wd265]
-	push af
-	callba Function14ab2
-	ld a, $1
-	jr nc, .asm_29e75
-	xor a
-
-.asm_29e75
-	ld [ScriptVar], a
-	ld c, $1e
-	call DelayFrames
-	pop af
-	ld [wd265], a
-	ret
-; 29e82
-
-Special_CheckBothSelectedSameRoom: ; 29e82
-	ld a, [wd265]
-	call Function29f17
-	push af
-	call Function908
-	call DelayFrame
-	call Function908
-	pop af
-	ld b, a
-	ld a, [wd265]
-	cp b
-	jr nz, .asm_29eaa
-	ld a, [wd265]
-	inc a
-	ld [wLinkMode], a
-	xor a
-	ld [hVBlank], a
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.asm_29eaa
-	xor a
-	ld [ScriptVar], a
-	ret
-; 29eaf
-
-Special_TimeCapsule: ; 29eaf
-	ld a, LINK_TIMECAPSULE
-	ld [wLinkMode], a
-	call DisableSpriteUpdates
-	callab LinkCommunications
-	call EnableSpriteUpdates
-	xor a
-	ld [hVBlank], a
-	ret
-; 29ec4
-
-Special_TradeCenter: ; 29ec4
-	ld a, LINK_TRADECENTER
-	ld [wLinkMode], a
-	call DisableSpriteUpdates
-	callab LinkCommunications
-	call EnableSpriteUpdates
-	xor a
-	ld [hVBlank], a
-	ret
-; 29ed9
-
-Special_Colosseum: ; 29ed9
-	ld a, LINK_COLOSSEUM
-	ld [wLinkMode], a
-	call DisableSpriteUpdates
-	callab LinkCommunications
-	call EnableSpriteUpdates
-	xor a
-	ld [hVBlank], a
-	ret
-; 29eee
-
-Special_CloseLink: ; 29eee
-	xor a
-	ld [wLinkMode], a
-	ld c, $3
-	call DelayFrames
-	jp Function29f04
-; 29efa
-
-Special_FailedLinkToPast: ; 29efa
-	ld c, $28
-	call DelayFrames
-	ld a, $e
-	jp Function29f17
-; 29f04
-
-Function29f04: ; 29f04
-	ld c, $3
-	call DelayFrames
-	ld a, -1
-	ld [$ffcb], a
-	ld a, $2
-	ld [rSB], a
-	xor a
-	ld [hSerialReceive], a
-	ld [rSC], a
-	ret
-; 29f17
-
-Function29f17: ; 29f17
-	add $d0
-	ld [wcf56], a
-	ld [wcf57], a
-	ld a, $2
-	ld [hVBlank], a
-	call DelayFrame
-	call DelayFrame
-.asm_29f29
-	call Function83b
-	ld a, [wcf51]
-	ld b, a
-	and $f0
-	cp $d0
-	jr z, .asm_29f40
-	ld a, [wcf52]
-	ld b, a
-	and $f0
-	cp $d0
-	jr nz, .asm_29f29
-
-.asm_29f40
-	xor a
-	ld [hVBlank], a
-	ld a, b
-	and $f
-	ret
-; 29f47
-
-Special_CableClubCheckWhichChris: ; 29f47
-	ld a, [$ffcb]
-	cp $1
-	ld a, $1
-	jr z, .yes
-	dec a
-
-.yes
-	ld [ScriptVar], a
-	ret
-; 29f54
-
-GFX_29f54: ; 29f54
-INCBIN "gfx/unknown/029f54.2bpp"
-; 29fe4
-
-Function29fe4: ; 29fe4
-	ld a, $0
-	call GetSRAMBank
-	ld d, $0
-	ld b, $2
 	predef FlagPredef
 	call CloseSRAM
 	ld a, c
@@ -31385,30 +18142,27 @@
 
 LoadWildMonData: ; 29ff8
 	call _GrassWildmonLookup
-	jr c, .asm_2a006
+	jr c, .copy
 	ld hl, wd25a
 	xor a
-rept 2
 	ld [hli], a
-endr
+	ld [hli], a
 	ld [hl], a
-	jr .asm_2a011
-.asm_2a006
-rept 2
+	jr .done_copy
+.copy
 	inc hl
-endr
+	inc hl
 	ld de, wd25a
 	ld bc, $3
 	call CopyBytes
-.asm_2a011
+.done_copy
 	call _WaterWildmonLookup
 	ld a, $0
-	jr nc, .asm_2a01b
-rept 2
+	jr nc, .no_copy
 	inc hl
-endr
+	inc hl
 	ld a, [hl]
-.asm_2a01b
+.no_copy
 	ld [wd25d], a
 	ret
 
@@ -31419,7 +18173,7 @@
 	call ByteFill
 	ld a, e
 	and a
-	jr nz, .asm_2a043
+	jr nz, .kanto
 	decoord 0, 0
 	ld hl, JohtoGrassWildMons
 	call Function2a052
@@ -31429,7 +18183,7 @@
 	call Function2a0cf
 	ret
 
-.asm_2a043
+.kanto
 	decoord 0, 0
 	ld hl, KantoGrassWildMons
 	call Function2a052
@@ -31438,7 +18192,7 @@
 ; 2a052
 
 Function2a052: ; 2a052
-.asm_2a052
+.loop
 	ld a, [hl]
 	cp $ff
 	ret z
@@ -31452,19 +18206,19 @@
 endr
 	ld a, $15
 	call Function2a088
-	jr nc, .asm_2a067
+	jr nc, .next
 	ld [de], a
 	inc de
 
-.asm_2a067
+.next
 	pop hl
-	ld bc, $002f
+	ld bc, $2f
 	add hl, bc
-	jr .asm_2a052
+	jr .loop
 ; 2a06e
 
 Function2a06e: ; 2a06e
-.asm_2a06e
+.loop
 	ld a, [hl]
 	cp $ff
 	ret z
@@ -31476,34 +18230,34 @@
 	inc hl
 	ld a, $3
 	call Function2a088
-	jr nc, .asm_2a081
+	jr nc, .next
 	ld [de], a
 	inc de
 
-.asm_2a081
+.next
 	pop hl
-	ld bc, $0009
+	ld bc, 9
 	add hl, bc
-	jr .asm_2a06e
+	jr .loop
 ; 2a088
 
 Function2a088: ; 2a088
 	inc hl
-.asm_2a089
+.loop
 	push af
 	ld a, [wd265]
 	cp [hl]
-	jr z, .asm_2a098
+	jr z, .found
 rept 2
 	inc hl
 endr
 	pop af
 	dec a
-	jr nz, .asm_2a089
+	jr nz, .loop
 	and a
 	ret
 
-.asm_2a098
+.found
 	pop af
 	jp Function2a09c
 ; 2a09c
@@ -31514,20 +18268,20 @@
 	ld c, a
 	hlcoord 0, 0
 	ld de, SCREEN_WIDTH * SCREEN_HEIGHT
-.asm_2a0a7
+.loop
 	ld a, [hli]
 	cp c
-	jr z, .asm_2a0b4
+	jr z, .found
 	dec de
 	ld a, e
 	or d
-	jr nz, .asm_2a0a7
+	jr nz, .loop
 	ld a, c
 	pop de
 	scf
 	ret
 
-.asm_2a0b4
+.found
 	pop de
 	and a
 	ret
@@ -31631,7 +18385,7 @@
 ApplyCleanseTagEffectOnEncounterRate:: ; 2a138
 ; Cleanse Tag halves encounter rate.
 	ld hl, PartyMon1Item
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 	ld a, [PartyCount]
 	ld c, a
 .loop
@@ -31768,7 +18522,7 @@
 	jr z, .encounter
 ; Get the first Pokemon in your party that isn't fainted.
 	ld hl, PartyMon1HP
-	ld bc, PartyMon2 - PartyMon1 - 1
+	ld bc, PARTYMON_STRUCT_LENGTH - 1
 .loop
 	ld a, [hli]
 	or [hl]
@@ -32445,53 +19199,53 @@
 INCLUDE "data/wild/swarm_water.asm"
 
 
-Function2b930: ; 2b930
+DetermineLinkBattleResult: ; 2b930
 	callba UpdateEnemyMonInParty
 	ld hl, PartyMon1HP
-	call Function2b995
+	call .CountMonsRemaining
 	push bc
 	ld hl, OTPartyMon1HP
-	call Function2b995
+	call .CountMonsRemaining
 	ld a, c
 	pop bc
 	cp c
-	jr z, .asm_2b94c
-	jr c, .asm_2b97f
-	jr .asm_2b976
+	jr z, .even_number_of_mons_remaining
+	jr c, .defeat
+	jr .victory
 
-.asm_2b94c
-	call Function2b9e1
-	jr z, .asm_2b98a
+.even_number_of_mons_remaining
+	call .BothSides_CheckNumberMonsAtFullHealth
+	jr z, .drawn
 	ld a, e
 	cp $1
-	jr z, .asm_2b976
+	jr z, .victory
 	cp $2
-	jr z, .asm_2b97f
+	jr z, .defeat
 	ld hl, PartyMon1HP
-	call Function2b9a6
+	call .CalcPercentHPRemaining
 	push de
 	ld hl, OTPartyMon1HP
-	call Function2b9a6
+	call .CalcPercentHPRemaining
 	pop hl
 	ld a, d
 	cp h
-	jr c, .asm_2b976
-	jr z, .asm_2b970
-	jr .asm_2b97f
+	jr c, .victory
+	jr z, .compare_lo
+	jr .defeat
 
-.asm_2b970
+.compare_lo
 	ld a, e
 	cp l
-	jr z, .asm_2b98a
-	jr nc, .asm_2b97f
+	jr z, .drawn
+	jr nc, .defeat
 
-.asm_2b976
+.victory
 	ld a, [wBattleResult]
 	and $f0
 	ld [wBattleResult], a
 	ret
 
-.asm_2b97f
+.defeat
 	ld a, [wBattleResult]
 	and $f0
 	add $1
@@ -32498,7 +19252,7 @@
 	ld [wBattleResult], a
 	ret
 
-.asm_2b98a
+.drawn
 	ld a, [wBattleResult]
 	and $f0
 	add $2
@@ -32506,30 +19260,30 @@
 	ret
 ; 2b995
 
-Function2b995: ; 2b995
-	ld c, $0
-	ld b, $3
-	ld de, $002f
-.asm_2b99c
+.CountMonsRemaining: ; 2b995
+	ld c, 0
+	ld b, 3
+	ld de, PARTYMON_STRUCT_LENGTH - 1
+.loop
 	ld a, [hli]
 	or [hl]
-	jr nz, .asm_2b9a1
+	jr nz, .not_fainted
 	inc c
 
-.asm_2b9a1
+.not_fainted
 	add hl, de
 	dec b
-	jr nz, .asm_2b99c
+	jr nz, .loop
 	ret
 ; 2b9a6
 
-Function2b9a6: ; 2b9a6
+.CalcPercentHPRemaining: ; 2b9a6
 	ld de, 0
 	ld c, $3
-.asm_2b9ab
+.loop2
 	ld a, [hli]
 	or [hl]
-	jr z, .asm_2b9d7
+	jr z, .next
 	dec hl
 	xor a
 	ld [hDividend + 0], a
@@ -32557,30 +19311,30 @@
 	ld d, a
 	dec hl
 
-.asm_2b9d7
+.next
 	push de
-	ld de, $002f
+	ld de, $2f
 	add hl, de
 	pop de
 	dec c
-	jr nz, .asm_2b9ab
+	jr nz, .loop2
 	ret
 ; 2b9e1
 
-Function2b9e1: ; 2b9e1
+.BothSides_CheckNumberMonsAtFullHealth: ; 2b9e1
 	ld hl, PartyMon1HP
-	call Function2ba01
-	jr nz, .asm_2b9f2
+	call .CheckFaintedOrFullHealth
+	jr nz, .finish ; we have a pokemon that's neither fainted nor at full health
 	ld hl, OTPartyMon1HP
-	call Function2ba01
+	call .CheckFaintedOrFullHealth
 	ld e, $1
 	ret
 
-.asm_2b9f2
+.finish
 	ld hl, OTPartyMon1HP
-	call Function2ba01
+	call .CheckFaintedOrFullHealth
 	ld e, $0
-	ret nz
+	ret nz ; we both have pokemon that are neither fainted nor at full health
 	ld e, $2
 	ld a, $1
 	and a
@@ -32587,15 +19341,15 @@
 	ret
 ; 2ba01
 
-Function2ba01: ; 2ba01
-	ld d, $3
-.asm_2ba03
+.CheckFaintedOrFullHealth: ; 2ba01
+	ld d, 3
+.loop3
 	ld a, [hli]
 	ld b, a
 	ld a, [hli]
 	ld c, a
 	or b
-	jr z, .asm_2ba10
+	jr z, .fainted_or_full_health
 	ld a, [hli]
 	cp b
 	ret nz
@@ -32603,13 +19357,13 @@
 	cp c
 	ret nz
 
-.asm_2ba10
+.fainted_or_full_health
 	push de
-	ld de, $002e
+	ld de, PARTYMON_STRUCT_LENGTH - 2
 	add hl, de
 	pop de
 	dec d
-	jr nz, .asm_2ba03
+	jr nz, .loop3
 	ret
 ; 2ba1a
 
@@ -32729,7 +19483,7 @@
 .asm_2c08e
 	ld a, b
 	ld [de], a
-	ld bc, $0032
+	ld bc, $32
 	add hl, bc
 	ret
 ; 2c095
@@ -32861,7 +19615,7 @@
 	ld de, GFX_2c172
 	ld hl, VTiles0 tile $31
 	lb bc, BANK(GFX_2c172), 4
-	call Functiondc9
+	call Get2bpp_2
 	ret
 ; 2c172
 
@@ -32870,8 +19624,8 @@
 ; 2c1b2
 
 _ShowLinkBattleParticipants: ; 2c1b2
-	call WhiteBGMap
-	call Functione5f
+	call ClearBGPalettes
+	call LoadFontsExtra
 	hlcoord 2, 3
 	ld b, 9
 	ld c, 14
@@ -33110,7 +19864,7 @@
 	jr .NotRedundant
 
 .Attract: ; 2c4fe
-	callba Function377f5
+	callba CheckOppositeGender
 	jr c, .Redundant
 	ld a, [PlayerSubStatus1]
 	bit SUBSTATUS_IN_LOVE, a
@@ -33293,7 +20047,7 @@
 	pop de
 	ret
 
-MysteryGiftGetItem: ; 2c708 (b:4708)
+MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
 	ld a, c
 	cp $25 ; 37
 	jr nc, Function2c722
@@ -33478,7 +20232,7 @@
 	ld de, wd066
 	ld bc, $c
 	call CopyBytes
-	call WhiteBGMap
+	call ClearBGPalettes
 
 Function2c80a: ; 2c80a
 	callba Function5004f
@@ -33599,7 +20353,7 @@
 
 Function2c8d3: ; 2c8d3 (b:48d3)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function2c9e2
 	ld a, $2
 	ld [wcfa1], a
@@ -33625,7 +20379,7 @@
 	ld [wcfa8], a
 	ld a, [wTMHMPocketCursor]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1
 	ld [wcfaa], a
 	jr Function2c946
@@ -33634,11 +20388,11 @@
 	call Function2c9e2
 	call Function1bc9
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [wTMHMPocketCursor], a
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, [wcfa6]
 	bit 7, a
 	jp nz, Function2c9b1
@@ -33674,7 +20428,7 @@
 Function2c974: ; 2c974 (b:4974)
 	call Function2cad6
 	call Function2cb2a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld b, a
 	ld a, [wd0e2]
@@ -33686,7 +20440,7 @@
 
 Function2c98a: ; 2c98a (b:498a)
 	call Function2cab5
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 .asm_2c991
 	inc c
@@ -34008,7 +20762,7 @@
 	ld hl, PartyMon1PokerusStatus
 	ld a, [PartyCount]
 	ld b, a
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 .loopMons
 	ld a, [hl]
 	and $f
@@ -34134,7 +20888,7 @@
 	ld a, [hl]
 	cp SHUCKLE
 	jr nz, .loopMon
-	ld bc, PartyMon1Item - PartyMon1Species
+	ld bc, MON_ITEM
 	add hl, bc
 	ld a, [hl]
 	cp BERRY
@@ -34142,7 +20896,7 @@
 
 .loopMon
 	pop hl
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop af
 	dec a
@@ -34175,11 +20929,11 @@
 
 FindFirstAliveMon: ; 2ee2f
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call DelayFrame
 	ld b, 6
 	ld hl, PartyMon1HP
-	ld de, PartyMon2 - PartyMon1 - 1
+	ld de, PARTYMON_STRUCT_LENGTH - 1
 
 .loop
 	ld a, [hli]
@@ -34190,12 +20944,12 @@
 	jr nz, .loop
 
 .okay
-	ld de, PartyMon1Level - PartyMon1HP
+	ld de, MON_LEVEL - MON_HP
 	add hl, de
 	ld a, [hl]
 	ld [BattleMonLevel], a
 	predef Predef_StartBattle
-	callba Function3ed9f
+	callba _LoadBattleFontsHPBar
 	ld a, 1
 	ld [hBGMapMode], a
 	call ClearSprites
@@ -34204,7 +20958,7 @@
 	ld [hBGMapMode], a
 	ld [hWY], a
 	ld [rWY], a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 2ee6c
 
@@ -34326,9 +21080,9 @@
 	ld [wd0e4], a
 	ld [CriticalHit], a
 	ld [BattleMonSpecies], a
-	ld [wc664], a
+	ld [wBattleParticipantsNotFainted], a
 	ld [CurBattleMon], a
-	ld [wd232], a
+	ld [wForcedSwitch], a
 	ld [TimeOfDayPal], a
 	ld [PlayerTurnsTaken], a
 	ld [EnemyTurnsTaken], a
@@ -34366,7 +21120,7 @@
 
 FillBox: ; 2ef6e
 ; Fill wc2c6-aligned box width b height c
-; with iterating tile starting from $ffad at hl.
+; with iterating tile starting from hFillBox at hl.
 ; Predef $13
 
 	ld de, 20
@@ -34375,7 +21129,7 @@
 	and a
 	jr nz, .left
 
-	ld a, [$ffad]
+	ld a, [hFillBox]
 .x1
 	push bc
 	push hl
@@ -34402,7 +21156,7 @@
 	add hl, bc
 	pop bc
 
-	ld a, [$ffad]
+	ld a, [hFillBox]
 .x2
 	push bc
 	push hl
@@ -34498,7 +21252,7 @@
 	ld hl, TrainerClassAttributes
 	ld bc, NUM_TRAINER_ATTRIBUTES
 	call AddNTimes
-	ld de, wc650
+	ld de, wEnemyTrainerItem1
 	ld a, [hli]
 	ld [de], a
 	inc de
@@ -34644,7 +21398,7 @@
 	ld a, [OTPartyCount]
 	dec a
 	ld hl, OTPartyMon1Moves
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -34663,14 +21417,14 @@
 	ld a, [OTPartyCount]
 	dec a
 	ld hl, OTPartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld hl, OTPartyMon1PP - OTPartyMon1
+	ld hl, MON_PP
 	add hl, de
 	push hl
-	ld hl, OTPartyMon1Moves - OTPartyMon1
+	ld hl, MON_MOVES
 	add hl, de
 	pop de
 
@@ -34720,7 +21474,7 @@
 	ld a, [OTPartyCount]
 	dec a
 	ld hl, OTPartyMon1Item
-	ld bc, OTPartyMon2 - OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -34751,7 +21505,7 @@
 	ld a, [OTPartyCount]
 	dec a
 	ld hl, OTPartyMon1Item
-	ld bc, OTPartyMon2 - OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -34764,7 +21518,7 @@
 	ld a, [OTPartyCount]
 	dec a
 	ld hl, OTPartyMon1Moves
-	ld bc, OTPartyMon2 - OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -34783,15 +21537,15 @@
 	ld a, [OTPartyCount]
 	dec a
 	ld hl, OTPartyMon1
-	ld bc, OTPartyMon2 - OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld hl, OTPartyMon1PP - OTPartyMon1
+	ld hl, MON_PP
 	add hl, de
 
 	push hl
-	ld hl, OTPartyMon1Moves - OTPartyMon1
+	ld hl, MON_MOVES
 	add hl, de
 	pop de
 
@@ -34937,8 +21691,8 @@
 	callba Function1de247
 	call Function41af7
 	call DisableLCD
-	call Functione51
-	call Functione5f
+	call LoadStandardFont
+	call LoadFontsExtra
 	call Function414b7
 	call Function4147b
 	ld a, [wd265]
@@ -34948,7 +21702,7 @@
 	hlcoord 0, 17
 	ld [hl], $3b
 	inc hl
-	ld bc, $0013
+	ld bc, $13
 	ld a, " "
 	call ByteFill
 	callba Function4424d
@@ -34967,20 +21721,20 @@
 
 Function41ad7: ; 41ad7 (10:5ad7)
 	ld a, $3
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld c, $4
+	ld [hBGMapMode], a
+	ld c, 4
 	call DelayFrames
 	ret
 
 Function41ae1: ; 41ae1 (10:5ae1)
 	ld a, $4
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld c, $4
+	ld [hBGMapMode], a
+	ld c, 4
 	call DelayFrames
 	ret
 
 Function41aeb: ; 41aeb (10:5aeb)
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	jr z, .asm_41af3
 	call Function41ae1
@@ -35272,11 +22026,11 @@
 
 	ld a, [CurPartyMon]
 	ld hl, PartyMons
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld e, l
 	ld d, h
-	ld bc, PartyMon1MaxHP - PartyMon1
+	ld bc, MON_MAXHP
 	add hl, bc
 	ld a, [hli]
 	ld b, a
@@ -35297,7 +22051,7 @@
 	ld [hl], a
 
 	ld hl, TempMonSpecies
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 
 	ld a, [CurSpecies]
@@ -35400,7 +22154,7 @@
 	push hl
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hl]
 	cp EVERSTONE
@@ -35467,7 +22221,7 @@
 	ld d, a
 	ld hl, PartyMon1Moves
 	ld a, [CurPartyMon]
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 
 	ld b, NUM_MOVES
@@ -35538,7 +22292,7 @@
 	ld a, [Buffer1]
 	and a
 	jr z, .CheckMove
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	cp b
 	jr nc, .GetMove
 
@@ -35590,7 +22344,7 @@
 	jr z, .NextMove
 	push hl
 	ld a, [hl]
-	ld hl, PartyMon1PP - PartyMon1Moves
+	ld hl, MON_PP - MON_MOVES
 	add hl, de
 	push hl
 	dec a
@@ -35613,12 +22367,12 @@
 
 ShiftMoves: ; 4256e
 	ld c, NUM_MOVES - 1
-.asm_42570
+.loop
 	inc de
 	ld a, [de]
 	ld [hli], a
 	dec c
-	jr nz, .asm_42570
+	jr nz, .loop
 	ret
 ; 42577
 
@@ -35638,7 +22392,7 @@
 ; if a pre-evolution is found.
 
 	ld c, 0
-.asm_42583
+.loop ; For each Pokemon...
 	ld hl, EvosAttacksPointers
 	ld b, 0
 rept 2
@@ -35647,33 +22401,33 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-.asm_4258d
+.loop2 ; For each evolution...
 	ld a, [hli]
 	and a
-	jr z, .asm_425a2
-	cp EVOLVE_STAT
-	jr nz, .asm_42596
+	jr z, .no_evolve ; If we jump, this Pokemon does not evolve into CurPartySpecies.
+	cp EVOLVE_STAT ; This evolution type has the extra parameter of stat comparison.
+	jr nz, .not_tyrogue
 	inc hl
 
-.asm_42596
+.not_tyrogue
 	inc hl
 	ld a, [CurPartySpecies]
 	cp [hl]
-	jr z, .asm_425aa
+	jr z, .found_preevo
 	inc hl
 	ld a, [hl]
 	and a
-	jr nz, .asm_4258d
+	jr nz, .loop2
 
-.asm_425a2
+.no_evolve
 	inc c
 	ld a, c
 	cp NUM_POKEMON
-	jr c, .asm_42583
+	jr c, .loop
 	and a
 	ret
 
-.asm_425aa
+.found_preevo
 	inc c
 	ld a, c
 	ld [CurPartySpecies], a
@@ -35760,7 +22514,7 @@
 	; so we have always the same AI, regardless of the loaded class of trainer
 	ld a, [InBattleTowerBattle]
 	bit 0, a
-	jr nz, .asm_4412f
+	jr nz, .battle_tower_skip
 
 	ld a, [TrainerClass]
 	dec a
@@ -35767,7 +22521,7 @@
 	ld bc, 7 ; Trainer2AI - Trainer1AI
 	call AddNTimes
 
-.asm_4412f
+.battle_tower_skip
 	lb bc, CHECK_FLAG, 0
 	push bc
 	push hl
@@ -35838,12 +22592,12 @@
 .PickLowestScoreMoves
 	ld a, c
 
-.asm_44175
+.move_loop
 	inc [hl]
 	dec hl
 	inc a
 	cp NUM_MOVES + 1
-	jr nz, .asm_44175
+	jr nz, .move_loop
 
 	ld hl, Buffer1
 	ld de, EnemyMonMoves
@@ -35850,28 +22604,28 @@
 	ld c, NUM_MOVES
 
 ; Give a score of 0 to a blank move	
-.asm_44184
+.loop2
 	ld a, [de]
 	and a
-	jr nz, .asm_44189
+	jr nz, .skip_load
 	ld [hl], a
 
 ; Disregard the move if its score is not 1	
-.asm_44189
+.skip_load
 	ld a, [hl]
 	dec a
-	jr z, .asm_44191
+	jr z, .keep
 	xor a
 	ld [hli], a
-	jr .asm_44193
+	jr .after_toss
 
-.asm_44191
+.keep
 	ld a, [de]
 	ld [hli], a
-.asm_44193
+.after_toss
 	inc de
 	dec c
-	jr nz, .asm_44184
+	jr nz, .loop2
 
 ; Randomly choose one of the moves with a score of 1 	
 .ChooseMove
@@ -35939,7 +22693,7 @@
 	xor a
 	ld [wc7db], a
 	call Function44207
-	ld c, $20
+	ld c, 32
 	call DelayFrames
 	ret
 ; 441fc
@@ -36077,7 +22831,7 @@
 	hlcoord 2, 11
 	call ClearBox
 	hlcoord 1, 10
-	ld bc, $0013
+	ld bc, $13
 	ld a, $61
 	call ByteFill
 	hlcoord 1, 9
@@ -36104,7 +22858,7 @@
 	hlcoord 2, 11
 	call ClearBox
 	hlcoord 1, 10
-	ld bc, $0013
+	ld bc, $13
 	ld a, $61
 	call ByteFill
 	hlcoord 1, 9
@@ -36203,7 +22957,7 @@
 
 
 Function4456e: ; 4456e
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 	ld d, [hl]
 	callba ItemIsMail
@@ -36211,25 +22965,25 @@
 	call Function44648
 	cp $a
 	jr nc, .asm_445be
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	ld hl, s0_a835
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld a, [CurPartyMon]
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
-	ld hl, s0_a600
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	ld hl, sPartyScratch1
 	call AddNTimes
 	push hl
 	ld a, BANK(s0_a834)
 	call GetSRAMBank
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	pop hl
 	xor a
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call ByteFill
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 	ld [hl], $0
 	ld hl, s0_a834
@@ -36249,7 +23003,7 @@
 	ld a, b
 	push bc
 	ld hl, s0_a835
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
 	add hl, bc
@@ -36260,7 +23014,7 @@
 	cp $9
 	jr z, .done
 	push bc
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	pop bc
 	inc b
@@ -36269,7 +23023,7 @@
 	ld h, d
 	ld l, e
 	xor a
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call ByteFill
 	ld hl, s0_a834
 	dec [hl]
@@ -36279,7 +23033,7 @@
 ReadMailMessage: ; 445f4
 	ld a, b
 	ld hl, s0_a835
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -36291,27 +23045,27 @@
 	call GetSRAMBank
 	push bc
 	ld a, b
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	ld hl, s0_a835
 	call AddNTimes
 	push hl
 	ld a, [CurPartyMon]
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
-	ld hl, s0_a600
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	ld hl, sPartyScratch1
 	call AddNTimes
 	ld d, h
 	ld e, l
 	pop hl
 	push hl
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	pop hl
-	ld de, PartyMon1StatsEnd - PartyMon1Moves
+	ld de, PARTYMON_STRUCT_LENGTH - MON_MOVES
 	add hl, de
 	ld d, [hl]
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld [hl], d
 	call CloseSRAM
@@ -36335,17 +23089,17 @@
 	jr c, .asm_446c6
 	ld a, [CurPartyMon]
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, [hl]
 	callba ItemIsMail
 	ld a, $3
 	jr nc, .asm_446c6
-	ld a, BANK(s0_a600)
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
 	ld a, [CurPartyMon]
-	ld hl, s0_a600
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld hl, sPartyScratch1
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
@@ -36376,7 +23130,7 @@
 	ld a, $4
 	jr c, .asm_446c1
 	xor a
-	ld [wd10b], a
+	ld [wPokemonWithdrawDepositParameter], a
 	callba Functione039
 	ld a, $1
 
@@ -36399,7 +23153,7 @@
 	push af
 	push bc
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop bc
 	ld [hl], b
@@ -36406,26 +23160,26 @@
 	pop af
 	push bc
 	push af
-	ld hl, s0_a600
-	ld bc, $002f
+	ld hl, sPartyScratch1
+	ld bc, $2f
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld hl, wd002
-	ld bc, $0021
-	ld a, BANK(s0_a600)
+	ld bc, $21
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
 	call CopyBytes
 	pop af
 	push af
 	ld hl, PartyMonOT
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call AddNTimes
-	ld bc, $000a
+	ld bc, $a
 	call CopyBytes
 	pop af
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [hli]
 	ld [de], a
@@ -36443,43 +23197,43 @@
 ; 44725
 
 
-Function44725: ; 44725
-	ld a, BANK(s0_a600)
+BackupScratchmons: ; 44725
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
-	ld hl, s0_a600
-	ld de, s0_a71a
-	ld bc, $11a
+	ld hl, sPartyScratch1
+	ld de, sPartyScratch2
+	ld bc, 6 * SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	ld hl, s0_a834
 	ld de, s0_aa0b
-	ld bc, $1d7
+	ld bc, 1 + 10 * SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	jp CloseSRAM
 ; 44745
 
-Function44745: ; 44745 (11:4745)
-	ld a, BANK(s0_a600)
+RestoreScratchmons: ; 44745 (11:4745)
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
-	ld hl, s0_a71a
-	ld de, s0_a600
-	ld bc, $11a
+	ld hl, sPartyScratch2
+	ld de, sPartyScratch1
+	ld bc, 6 * SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	ld hl, s0_aa0b
 	ld de, s0_a834
-	ld bc, $1d7
+	ld bc, 1 + 10 * SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	jp CloseSRAM
 
-Function44765: ; 44765 (11:4765)
-	ld a, BANK(s0_a600)
+DeleteScratchmons: ; 44765 (11:4765)
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
 	xor a
-	ld hl, s0_a600
-	ld bc, $11a
+	ld hl, sPartyScratch1
+	ld bc, 6 * SCRATCHMON_STRUCT_LENGTH
 	call ByteFill
 	xor a
 	ld hl, s0_a834
-	ld bc, $1d7
+	ld bc, 1 + 10 * SCRATCHMON_STRUCT_LENGTH
 	call ByteFill
 	jp CloseSRAM
 ; 44781 (11:4781)
@@ -36499,7 +23253,7 @@
 	pop de
 	pop hl
 	ret c
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	dec e
 	jr nz, .asm_4478b
@@ -36512,7 +23266,7 @@
 _KrisMailBoxMenu: ; 0x447a0
 	call InitMail
 	jr z, .nomail
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function44806
 	jp WriteBackup
 
@@ -36556,16 +23310,16 @@
 
 Function447da: ; 0x447da
 	dec a
-	ld hl, s0_a835 + $21
-	ld bc, $002f
+	ld hl, s0_a835 + MON_HP - 1
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, BANK(s0_a834)
 	call GetSRAMBank
 	ld de, StringBuffer2
 	push de
-	ld bc, $a
+	ld bc, NAME_LENGTH - 1
 	call CopyBytes
-	ld a, $50
+	ld a, "@"
 	ld [de], a
 	call CloseSRAM
 	pop de
@@ -36597,10 +23351,10 @@
 	ld [wMenuCursorBuffer], a
 	ld a, [OBPals + 8 * 6]
 	ld [wd0e4], a
-	call Function350c
+	call HandleScrollingMenu
 	ld a, [wd0e4]
 	ld [OBPals + 8 * 6], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd0f1], a
 	ld a, [wcf73]
 	cp $2
@@ -36619,7 +23373,7 @@
 	call InterpretMenu2
 	call ExitMenu
 	jr c, .asm_44860
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld hl, .JumpTable
 	rst JumpTable
@@ -36687,7 +23441,7 @@
 	call GetSRAMBank
 	pop af
 	ld hl, s0_a835 + $2e
-	ld bc, $002f
+	ld bc, $2f
 	call AddNTimes
 	ld a, [hl]
 	ld [CurItem], a
@@ -36698,7 +23452,7 @@
 	call FadeToMenu
 	xor a
 	ld [PartyMenuActionText], a
-	call WhiteBGMap
+	call ClearBGPalettes
 .asm_448dc
 	callba Function5004f
 	callba Function50405
@@ -36713,7 +23467,7 @@
 	ld a, [CurPartySpecies]
 	cp EGG
 	jr z, .asm_44923
-	ld a, PartyMon1Item - PartyMon1
+	ld a, MON_ITEM
 	call GetPartyParamLocation
 	ld a, [hl]
 	and a
@@ -36798,7 +23552,7 @@
 	ld [wd476], a
 	ld [wd477], a
 	ld [wd478], a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld [wd003], a
 	; could have done "ld a, [wd479] \ and -4", saved four operations
 	ld a, [wd479]
@@ -36814,13 +23568,13 @@
 Function4802f: ; 4802f (12:402f)
 	xor a
 	set 6, a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld hl, wd003
 	set 0, [hl]
 	ld a, c
 	and a
 	call z, Function48000
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48d3d
 	ld a, [wd479]
 	bit 1, a
@@ -36833,7 +23587,7 @@
 	ld [wd003], a
 .asm_4805a
 	call Function486bf
-	call Functione5f
+	call LoadFontsExtra
 	ld de, GFX_488c3
 	ld hl, VTiles2 tile $10
 	lb bc, BANK(GFX_488c3), 1
@@ -36843,8 +23597,8 @@
 	lb bc, BANK(GFX_488cb), 1
 	call Request1bpp
 	call Function4a3a7
-	call WhiteBGMap
-	ld a, [DefaultFlypoint]
+	call ClearBGPalettes
+	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_4808a
 	call Function48689
@@ -36856,11 +23610,11 @@
 	ld [MusicFadeIDLo], a
 	ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
 	ld [MusicFadeIDHi], a
-	ld c, $14
+	ld c, 20
 	call DelayFrames
 	ld b, $1
 	call Function4930f
-	call WhiteBGMap
+	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $2
 	ld c, $14
@@ -36894,7 +23648,7 @@
 	hlcoord 2, 12
 	ld de, String_4849e
 	call PlaceString
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_48113
 	ld a, [PlayerGender]
@@ -36928,7 +23682,7 @@
 	call Function3200
 	call SetPalettes
 	call Function1bc9
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 	jr asm_4815f
@@ -36935,7 +23689,7 @@
 
 Function48157: ; 48157 (12:4157)
 	call Function1bd3
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 
@@ -36943,7 +23697,7 @@
 	bit 0, a
 	jp nz, Function4820d
 	ld b, a
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_48177
 	ld hl, wd479
@@ -36954,7 +23708,7 @@
 .asm_48177
 	jp Function48272
 .asm_4817a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48d30
 	pop bc
 	call ClearTileMap
@@ -36980,7 +23734,7 @@
 	call PlaceString
 	pop de
 .asm_481ad
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_481c1
 	bit 0, d
@@ -37028,10 +23782,10 @@
 
 Function4820d: ; 4820d (12:420d)
 	call Function1bee
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	push af
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_4821f
 	pop af
@@ -37049,7 +23803,7 @@
 	jp z, Function488d3
 	ld a, $2
 	call Function1ff8
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_4825c
 	jr .asm_4825c
@@ -37063,11 +23817,11 @@
 	hlcoord 1, 16
 	call PlaceString
 	call WaitBGMap
-	ld c, $30
+	ld c, 48
 	call DelayFrames
 
 .asm_4825c
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48d30
 	pop bc
 	call ClearTileMap
@@ -37119,7 +23873,7 @@
 	call ExitMenu
 	bit 0, a
 	jp z, Function4840c
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	ld hl, Strings_484fb
 	cp $1
@@ -37174,7 +23928,7 @@
 	ld [wd0e4], a
 	callba Function104148
 .asm_48348
-	call Function350c
+	call HandleScrollingMenu
 	ld de, $629
 	call Function48383
 	jr c, .asm_48348
@@ -37189,7 +23943,7 @@
 	call ExitMenu
 	call ExitMenu
 	pop af
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	bit 0, a
 	jr z, .asm_48377
 	call Function483bb
@@ -37228,7 +23982,7 @@
 	ld [wd0e4], a
 	jr .asm_483af
 .asm_483af
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	ld [wMenuCursorBuffer], a
 	scf
@@ -37306,9 +24060,9 @@
 	call PlaceString
 	call Function486bf
 	pop bc
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld [hl], b
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_48437
 	ld b, $9
@@ -37475,11 +24229,11 @@
 ; 48689
 
 Function48689: ; 48689 (12:4689)
-	ld c, $7
+	ld c, 7
 	call DelayFrames
 	ld b, $1
 	call Function4930f
-	call WhiteBGMap
+	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $4
 	ld c, $14
@@ -37501,7 +24255,7 @@
 
 Function486bf: ; 486bf (12:46bf)
 	ld hl, wcfa1
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_486ce
 	ld a, $4
@@ -37513,7 +24267,7 @@
 .asm_486d1
 	ld a, $1
 	ld [hli], a
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr nz, .asm_486e7
 	call Function48725
@@ -37549,7 +24303,7 @@
 	add $40
 	add $80
 	push af
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_4871a
 	pop af
@@ -37657,7 +24411,7 @@
 .asm_487b7
 	hlcoord 11, 6
 	call Function487ec
-	ld c, $a
+	ld c, 10
 	call DelayFrames
 	ld a, [wd473]
 	push af
@@ -37709,10 +24463,10 @@
 ; 4880e
 
 Function4880e: ; 4880e (12:480e)
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and A_BUTTON
 	jp nz, Function488b9
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and B_BUTTON
 	jp nz, Function488b4
 	ld hl, hJoyLast
@@ -37861,7 +24615,7 @@
 asm_48922: ; 48922 (12:4922)
 	push bc
 	call JoyTextDelay
-	ld a, [hJoyDown] ; $ff00+$a8
+	ld a, [hJoyDown]
 	and a
 	jp z, Function4896e
 	bit 0, a
@@ -37868,10 +24622,10 @@
 	jp nz, Function4896e
 	bit 1, a
 	jp nz, Function4896e
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and %11001111
 	res 7, a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	pop bc
 	inc b
 	ld a, b
@@ -37887,7 +24641,7 @@
 	ld a, b
 	cp $4
 	jr nz, asm_48972
-	ld c, $a
+	ld c, 10
 	call DelayFrames
 	jr asm_48972
 ; 4895a (12:495a)
@@ -37922,10 +24676,10 @@
 	jr z, .asm_48994
 	cp $f
 	jr nz, .asm_48988
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	set 7, a
 	and $cf
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 .asm_48988
 	hlcoord 11, 10
 	ld b, $0
@@ -38034,7 +24788,7 @@
 	ld a, $b
 	ld [wcfa2], a
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	hlcoord 10, 8
 	ld b, $4
 	ld c, $8
@@ -38049,7 +24803,7 @@
 	pop af
 	bit 1, a
 	jp nz, Function48a9a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, .asm_48a98
 	ld a, [wd003]
@@ -38084,10 +24838,10 @@
 
 
 Function48ab5: ; 48ab5 (12:4ab5)
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and A_BUTTON
 	jp nz, Function48c0f
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and B_BUTTON
 	jp nz, Function48c0d
 	ld a, d
@@ -38171,7 +24925,7 @@
 	jr nz, .asm_48b9d
 	hlcoord 11, 10
 	call Function489ea
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 7, a
 	jr nz, .asm_48b51
 .asm_48b51
@@ -38322,7 +25076,7 @@
 	ret
 
 Function48c11: ; 48c11 (12:4c11)
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 7, a
 	jr z, .asm_48c20
 	ld a, d
@@ -38332,30 +25086,30 @@
 .asm_48c1e
 	ld [hl], $7f
 .asm_48c20
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	swap a
 	and $3
 	inc a
 	cp b
 	jr nz, .asm_48c40
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 7, a
 	jr z, .asm_48c3a
 	res 7, a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	xor a
 	jr .asm_48c40
 .asm_48c3a
 	set 7, a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	xor a
 .asm_48c40
 	swap a
 	ld b, a
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and $cf
 	or b
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ret
 
 Function48c4d: ; 48c4d (12:4c4d)
@@ -38612,16 +25366,16 @@
 Function48d94: ; 48d94 (12:4d94)
 	xor a
 	ld [hDividend + 0], a
-	ld [hDividend + 1], a ; $ff00+$b4 (aliases: hMultiplicand)
+	ld [hDividend + 1], a
 	ld a, [hli]
 	ld [hDividend + 0], a
 	ld a, [hl]
-	ld [hDividend + 1], a ; $ff00+$b4 (aliases: hMultiplicand)
+	ld [hDividend + 1], a
 	ld a, 100
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
+	ld [hDivisor], a
 	ld b, 2
 	call Divide
-	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
+	ld a, [hDivisor]
 	ld c, $a
 	call SimpleDivide
 	sla b
@@ -38654,7 +25408,7 @@
 	call Function3200
 	call InterpretMenu2
 	call WriteBackup
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [PlayerGender], a
 	ld c, 10
@@ -38690,11 +25444,11 @@
 	ld [MusicFadeIDLo], a
 	ld a, $0
 	ld [MusicFadeIDHi], a
-	ld c, $8
+	ld c, 8
 	call DelayFrames
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function48000
-	call Functione5f
+	call LoadFontsExtra
 	hlcoord 0, 0
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	ld a, $0
@@ -38707,7 +25461,7 @@
 
 Function48e47: ; 48e47 (12:4e47)
 	ld hl, Palette_48e5c
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $8
 	ld a, $5
 	call FarCopyWRAM
@@ -38761,7 +25515,7 @@
 
 Function4925b: ; 4925b
 	call FadeToMenu
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearScreen
 	call DelayFrame
 	ld b, $14
@@ -38869,7 +25623,7 @@
 	db 17, 19 ; end coords
 ; 4930f
 
-Function4930f: ; 4930f (12:530f)
+Function4930f: ; 4930f (mobile)
 	ld a, b
 	cp $ff
 	jr nz, .asm_49317
@@ -38925,15 +25679,15 @@
 	ret
 
 Function49351: ; 49351 (12:5351)
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, Palette_493e1
 	ld bc, $28
-	ld a, $5 ; BANK(Unkn1Pals)
+	ld a, $5 ; BANK(wMapPals)
 	call FarCopyWRAM
-	ld de, Unkn1Pals + $38
+	ld de, wMapPals + $38
 	ld hl, Palette_49418
 	ld bc, $8
-	ld a, $5 ; BANK(Unkn1Pals)
+	ld a, $5 ; BANK(wMapPals)
 	call FarCopyWRAM
 	ret
 
@@ -38947,33 +25701,33 @@
 
 Function49384: ; 49384 (12:5384)
 	hlcoord 0, 0, AttrMap
-	ld bc, $401
+	lb bc, 4, 1
 	ld a, $1
 	call Function49336
-	ld bc, $201
+	lb bc, 2, 1
 	ld a, $2
 	call Function49336
-	ld bc, $601
+	lb bc, 6, 1
 	ld a, $3
 	call Function49336
 	hlcoord 1, 0, AttrMap
 	ld a, $1
-	ld bc, $312
+	lb bc, 3, 18
 	call Function49336
-	ld bc, $212
+	lb bc, 2, 18
 	ld a, $2
 	call Function49336
-	ld bc, $c12
+	lb bc, 12, 18
 	ld a, $3
 	call Function49336
 	hlcoord 19, 0, AttrMap
-	ld bc, $401
+	lb bc, 4, 1
 	ld a, $1
 	call Function49336
-	ld bc, $201
+	lb bc, 2, 1
 	ld a, $2
 	call Function49336
-	ld bc, $601
+	lb bc, 6, 1
 	ld a, $3
 	call Function49336
 	hlcoord 0, 12, AttrMap
@@ -39013,8 +25767,8 @@
 
 Function49409:: ; 49409
 	ld hl, Palette_49418
-	ld de, Unkn1Pals + 8 * 7
-	ld bc, $0008
+	ld de, wMapPals + 8 * 7
+	ld bc, 8
 	ld a, $5
 	call FarCopyWRAM
 	ret
@@ -39029,9 +25783,9 @@
 
 Function49420:: ; 49420 (12:5420)
 	ld hl, MansionPalette4
-	ld de, Unkn1Pals + $30
+	ld de, wMapPals + $30
 	ld bc, $8
-	ld a, $5 ; BANK(Unkn1Pals)
+	ld a, $5 ; BANK(wMapPals)
 	call FarCopyWRAM
 	ret
 ; 4942f (12:542f)
@@ -39038,10 +25792,10 @@
 
 Function4942f: ; 4942f
 	call Function49351
-	ld de, Unkn1Pals + $38
+	ld de, wMapPals + $38
 	ld hl, Palette_49478
 	ld bc, $8
-	ld a, $5 ; BANK(Unkn1Pals)
+	ld a, $5 ; BANK(wMapPals)
 	call FarCopyWRAM
 	call Function49346
 	hlcoord 0, 0, AttrMap
@@ -39052,7 +25806,7 @@
 	ld bc, 4 * SCREEN_WIDTH
 	ld a, $7
 	call ByteFill
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	bit 6, a
 	jr z, .asm_49464
 	call Function49480
@@ -39078,7 +25832,7 @@
 
 Function49480: ; 49480
 	hlcoord 0, 0, AttrMap
-	ld bc, $0414
+	lb bc, 4, SCREEN_WIDTH
 	ld a, $7
 	call Function49336
 	hlcoord 0, 2, AttrMap
@@ -39091,7 +25845,7 @@
 
 Function49496: ; 49496
 	hlcoord 0, 0, AttrMap
-	ld bc, $0214
+	lb bc, 2, SCREEN_WIDTH
 	ld a, $7
 	call Function49336
 	hlcoord 0, 1, AttrMap
@@ -39102,19 +25856,19 @@
 	ret
 ; 494ac
 
-Function494ac: ; 494ac
-	ld a, [wd199]
-	cp $15
+LoadSpecialMapPalette: ; 494ac
+	ld a, [wTileset]
+	cp TILESET_GOLDENROD_POKECOM_CENTER_2F_MOBILE
 	jr z, .pokecom_2f
-	cp $16
+	cp TILESET_BATTLE_TOWER
 	jr z, .battle_tower
-	cp $1d
+	cp TILESET_ICE_PATH
 	jr z, .ice_path
-	cp $5
+	cp TILESET_HOUSE_1
 	jr z, .house
-	cp $1b
+	cp TILESET_RADIO_TOWER
 	jr z, .radio_tower
-	cp $d
+	cp TILESET_CELADON_MANSION
 	jr z, .mansion_mobile
 	jr .do_nothing
 
@@ -39159,9 +25913,9 @@
 
 LoadPokeComPalette: ; 494f2
 	ld a, $5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, PokeComPalette
-	ld bc, $0040
+	ld bc, 8 palettes
 	call FarCopyWRAM
 	ret
 ; 49501
@@ -39172,9 +25926,9 @@
 
 LoadBattleTowerPalette: ; 49541
 	ld a, $5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, BattleTowerPalette
-	ld bc, $0040
+	ld bc, 8 palettes
 	call FarCopyWRAM
 	ret
 ; 49550
@@ -39185,9 +25939,9 @@
 
 LoadIcePathPalette: ; 49590
 	ld a, $5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, IcePathPalette
-	ld bc, $0040
+	ld bc, 8 palettes
 	call FarCopyWRAM
 	ret
 ; 4959f
@@ -39198,9 +25952,9 @@
 
 LoadHousePalette: ; 495df
 	ld a, $5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, HousePalette
-	ld bc, $0040
+	ld bc, 8 palettes
 	call FarCopyWRAM
 	ret
 ; 495ee
@@ -39211,9 +25965,9 @@
 
 LoadRadioTowerPalette: ; 4962e
 	ld a, $5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, RadioTowerPalette
-	ld bc, $0040
+	ld bc, 8 palettes
 	call FarCopyWRAM
 	ret
 ; 4963d
@@ -39274,24 +26028,24 @@
 
 LoadMansionPalette: ; 496c5
 	ld a, $5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld hl, MansionPalette1
-	ld bc, $0040
+	ld bc, 8 palettes
 	call FarCopyWRAM
 	ld a, $5
-	ld de, Unkn1Pals + $20
+	ld de, wMapPals + 4 palettes
 	ld hl, MansionPalette2
-	ld bc, $0008
+	ld bc, 1 palettes
 	call FarCopyWRAM
 	ld a, $5
-	ld de, Unkn1Pals + $18
+	ld de, wMapPals + 3 palettes
 	ld hl, MansionPalette3
-	ld bc, $0008
+	ld bc, 1 palettes
 	call FarCopyWRAM
 	ld a, $5
-	ld de, Unkn1Pals + $30
+	ld de, wMapPals + 6 palettes
 	ld hl, MansionPalette4
-	ld bc, $0008
+	ld bc, 1 palettes
 	call FarCopyWRAM
 	ret
 ; 496fe
@@ -39305,8 +26059,8 @@
 
 Function49706: ; 49706
 	ld hl, Palette_49732
-	ld de, Unkn1Pals
-	ld bc, $0008
+	ld de, wMapPals
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
 	callba Function96a4
@@ -39314,7 +26068,7 @@
 	callba Function96b3
 	ld hl, Palette_4973a
 	ld de, Unkn2Pals
-	ld bc, $0008
+	ld bc, 1 palettes
 	ld a, $5
 	call FarCopyWRAM
 	ret
@@ -39336,8 +26090,8 @@
 
 Function49742: ; 49742
 	ld hl, Palette_49757
-	ld de, Unkn1Pals
-	ld bc, $0040
+	ld de, wMapPals
+	ld bc, $40
 	ld a, $5
 	call FarCopyWRAM
 	callba Function96a4
@@ -39388,7 +26142,7 @@
 
 Function49797: ; 49797
 	hlcoord 0, 0, AttrMap
-	ld bc, $1002
+	lb bc, 16, 2
 	ld a, $4
 	call Function49336
 	ld a, $3
@@ -39395,31 +26149,31 @@
 	ldcoord_a 0, 1, AttrMap
 	ldcoord_a 0, 14, AttrMap
 	hlcoord 2, 0, AttrMap
-	ld bc, $0812
+	lb bc, 8, 18
 	ld a, $5
 	call Function49336
 	hlcoord 2, 8, AttrMap
-	ld bc, $0812
+	lb bc, 8, 18
 	ld a, $6
 	call Function49336
 	hlcoord 0, 16, AttrMap
-	ld bc, $0214
+	lb bc, 2, SCREEN_WIDTH
 	ld a, $4
 	call Function49336
 	ld a, $3
-	ld bc, $0601
+	lb bc, 6, 1
 	hlcoord 6, 1, AttrMap
 	call Function49336
 	ld a, $3
-	ld bc, $0601
+	lb bc, 6, 1
 	hlcoord 17, 1, AttrMap
 	call Function49336
 	ld a, $3
-	ld bc, $0601
+	lb bc, 6, 1
 	hlcoord 6, 9, AttrMap
 	call Function49336
 	ld a, $3
-	ld bc, $0601
+	lb bc, 6, 1
 	hlcoord 17, 9, AttrMap
 	call Function49336
 	ld a, $2
@@ -39440,8 +26194,8 @@
 
 Function49811: ; 49811
 	ld hl, Palette_49826
-	ld de, wd010
-	ld bc, $0030
+	ld de, wMapPals + $10
+	ld bc, $30
 	ld a, $5
 	call FarCopyWRAM
 	callba Function96a4
@@ -39502,16 +26256,16 @@
 	xor a
 	ld [VramState], a
 	call LoadCelebiGFX
-	ld de, $0750
+	ld de, $750
 	ld a, $2c
 	call Function3b2a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], $84
-	ld hl, $0002
+	ld hl, $2
 	add hl, bc
 	ld [hl], $1f
-	ld hl, $000f
+	ld hl, $f
 	add hl, bc
 	ld a, $80
 	ld [hl], a
@@ -39530,7 +26284,7 @@
 	ld [wc3b5], a
 	callba Function8cf7a
 	call Function49935
-	ld c, $2
+	ld c, 2
 	call DelayFrames
 	pop de
 	pop bc
@@ -39557,7 +26311,7 @@
 	dec c
 	jr nz, .loop
 	ld hl, Sprites + $10
-	ld bc, $0090
+	ld bc, $90
 	xor a
 	call ByteFill
 	ret
@@ -39606,7 +26360,7 @@
 	ld e, $0
 	ld a, $18
 	call Function3b2a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], $80
 	ret
@@ -39747,7 +26501,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, $0
+	ld hl, 0
 .asm_49b61
 	srl a
 	jr nc, .asm_49b66
@@ -39802,7 +26556,7 @@
 	ld a, $90
 
 .asm_49bde
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], a
 	jr .asm_49be9
@@ -40181,10 +26935,10 @@
 
 Function49ed0: ; 49ed0
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call ClearTileMap
-	call Functione5f
-	call Functione51
+	call LoadFontsExtra
+	call LoadStandardFont
 	call ResetTextRelatedRAM
 	ret
 ; 49ee0
@@ -40211,19 +26965,19 @@
 ; 49efc
 
 MainMenu_Mobile: ; 49efc
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld a, MUSIC_MOBILE_ADAPTER_MENU
 	ld [wMapMusic], a
 	ld de, MUSIC_MOBILE_ADAPTER_MENU
 	call Function4a6c5
 Function49f0a: ; 49f0a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function4a3a7
 	call Function4a492
-	call WhiteBGMap
+	call ClearBGPalettes
 Function49f16: ; 49f16
 	call Function4a071
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	hlcoord 4, 0
 	ld b, $a
@@ -40243,7 +26997,7 @@
 	call Function3200
 	call SetPalettes
 	call Function1bc9
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 	jr .asm_49f5d
@@ -40250,7 +27004,7 @@
 
 .asm_49f55
 	call Function1bd3
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 
@@ -40262,7 +27016,7 @@
 	jr .asm_49f97
 
 .asm_49f67
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	cp $1
 	jp z, Function4a098
@@ -40277,7 +27031,7 @@
 
 .asm_49f84
 	pop bc
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, MUSIC_MAIN_MENU
 	ld [wMapMusic], a
@@ -40286,7 +27040,7 @@
 	ret
 
 .asm_49f97
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	dec a
 	ld hl, MobileStrings2
@@ -40304,7 +27058,7 @@
 .asm_49fb7
 	call Function4a071
 	pop bc
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld [hl], b
 	ld b, $a
 	ld c, $1
@@ -40327,27 +27081,27 @@
 MobileStrings2:
 
 String_0x49fe9: ; 49fe9
-	db   "めいし", $1f, "つくったり"
+	db   "めいし¯つくったり"
 	next "ほぞんしておける フ,ルダーです@"
 ; 4a004
 
 String_0x4a004: ; 4a004
 	db   "モバイルたいせんや じぶんのめいしで"
-	next "つかう あいさつ", $1f, "つくります@"
+	next "つかう あいさつ¯つくります@"
 ; 4a026
 
 String_0x4a026: ; 4a026
-	db   "あなた", $25, "じゅうしょや ねんれいの"
-	next "せ", $1e, "い", $1f, "かえられます@"
+	db   "あなた%じゅうしょや ねんれいの"
+	next "せ", $1e, "い¯かえられます@"
 ; 4a042
 
 String_0x4a042: ; 4a042
 	db  "モバイルセンター", $1d, "せつぞくするとき"
-	next "ひつような こと", $1f, "きめます@"
+	next "ひつような こと¯きめます@"
 ; 4a062
 
 String_0x4a062: ; 4a062
-	db   "まえ", $25, "がめん ", $1d, "もどります"
+	db   "まえ%がめん ", $1d, "もどります"
 	next "@"
 ; 4a071
 
@@ -40386,7 +27140,7 @@
 	call Function1ff8
 	call Function1bee
 	call WaitBGMap
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	callba Function89de0
 	call Call_ExitMenu
 	call Function49351
@@ -40411,18 +27165,18 @@
 	call CopyBytes
 	call CloseSRAM
 	callba Function150b9
-	ld c, $2
+	ld c, 2
 	call DelayFrames
 	ld c, $1
 	call Function4802f
 	push af
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop af
 	and a
 	jr nz, .asm_4a0f9
 	callba Function1509a
 .asm_4a0f9
-	ld c, $5
+	ld c, 5
 	call DelayFrames
 	jr asm_4a111
 
@@ -40429,14 +27183,14 @@
 Function4a100: ; 4a100 (12:6100)
 	ld a, $2
 	call Function1ff8
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function4a13b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 
 asm_4a111: ; 4a111 (12:6111)
 	pop bc
-	call Functione5f
+	call LoadFontsExtra
 	jp Function49f0a
 
 Function4a118: ; 4a118 (12:6118)
@@ -40469,7 +27223,7 @@
 	call Function4a3a7
 	call Function4a492
 	call Function4a373
-	ld c, $a
+	ld c, 10
 	call DelayFrames
 
 Function4a149: ; 4a149 (12:6149)
@@ -40484,7 +27238,7 @@
 	ld b, $4
 	ld c, $12
 	call TextBox
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld hl, Strings_4a23d
 	call GetNthString
@@ -40499,7 +27253,7 @@
 	callba Function104148
 	call SetPalettes
 	call Function1bc9
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 	jr asm_4a19d
@@ -40506,7 +27260,7 @@
 
 Function4a195: ; 4a195 (12:6195)
 	call Function1bd3
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 
@@ -40517,7 +27271,7 @@
 	jr nz, .asm_4a1ba
 	jr .asm_4a1bc
 .asm_4a1a7
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	cp $1
 	jp z, Function4a20e
@@ -40529,7 +27283,7 @@
 	pop bc
 	ret
 .asm_4a1bc
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	dec a
 	ld hl, Strings_4a23d
@@ -40546,7 +27300,7 @@
 .asm_4a1db
 	call Function4a373
 	pop bc
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld [hl], b
 	lb bc, 6, 1
 	hlcoord 2, 3
@@ -40555,8 +27309,8 @@
 ; 4a1ef (12:61ef)
 
 String_4a1ef: ; 4a1ef
-	db   "モバイルセンター", $1f, "えらぶ"
-	next "ログインパスワード", $1f, "いれる"
+	db   "モバイルセンター¯えらぶ"
+	next "ログインパスワード¯いれる"
 	next "もどる@"
 ; 4a20e
 
@@ -40564,7 +27318,7 @@
 	ld a, $1
 	call Function1ff8
 	callba Function1719c8
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DelayFrame
 	jr Function4a239
 
@@ -40575,7 +27329,7 @@
 	jr c, Function4a239
 	call Function4a373
 	ld a, $2
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jr .asm_4a235
 .asm_4a235
 	pop bc
@@ -40587,13 +27341,13 @@
 ; 4a23d (12:623d)
 
 Strings_4a23d: ; 4a23d
-	db   "いつも せつぞく", $1f, "する"
-	next "モバイルセンター", $1f, "えらびます@"
+	db   "いつも せつぞく¯する"
+	next "モバイルセンター¯えらびます@"
 
 	db   "モバイルセンター", $1d, "せつぞくするとき"
-	next "つかうパスワード", $1f, "ほぞんできます@"
+	next "つかうパスワード¯ほぞんできます@"
 
-	db   "まえ", $25, "がめん ", $1d, "もどります@"
+	db   "まえ%がめん ", $1d, "もどります@"
 
 	db   "@"
 ; 4a28a
@@ -40600,12 +27354,12 @@
 
 Function4a28a: ; 4a28a (12:628a)
 	hlcoord 2, 3
-	ld bc, $601
-	ld a, $7f
+	lb bc, 6, 1
+	ld a, " "
 	call Function4a6d8
 	call Function1bee
 	call WaitBGMap
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld a, $5
 	call GetSRAMBank
 	ld a, [$aa4b]
@@ -40627,7 +27381,7 @@
 	pop af
 	bit 1, a
 	jr nz, .asm_4a33b
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $2
 	jr z, .asm_4a2f0
 	cp $3
@@ -40634,9 +27388,9 @@
 	jr z, .asm_4a33b
 .asm_4a2df
 	callba Function11765d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
-	call Functione5f
+	call LoadFontsExtra
 	scf
 	ret
 .asm_4a2f0
@@ -40653,7 +27407,7 @@
 	call InterpretMenu2
 	bit 1, a
 	jr nz, .asm_4a338
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $2
 	jr z, .asm_4a338
 	ld a, $5
@@ -40754,64 +27508,64 @@
 	call Function4a485
 Function4a3aa: ; 4a3aa
 	hlcoord 0, 0
-	ld bc, $301
+	lb bc, 3, 1
 	xor a
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	ld a, $1
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	xor a
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	ld a, $1
 	call Function4a6d8
-	ld bc, $401
+	lb bc, 4, 1
 	ld a, $2
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	ld a, $3
 	call Function4a6d8
-	ld bc, $101
-	ld a, $7f
+	lb bc, 1, 1
+	ld a, " "
 	call Function4a6d8
 	hlcoord 1, 0
 	ld a, $1
-	ld bc, $312
+	lb bc, 3, 18
 	call Function4a6d8
-	ld bc, $112
+	lb bc, 1, 18
 	ld a, $0
 	call Function4a6d8
-	ld bc, $112
+	lb bc, 1, 18
 	ld a, $1
 	call Function4a6d8
-	ld bc, $112
+	lb bc, 1, 18
 	ld a, $2
 	call Function4a6d8
-	ld bc, $b12
-	ld a, $7f
+	lb bc, 11, 18
+	ld a, " "
 	call Function4a6d8
 	hlcoord 19, 0
-	ld bc, $301
+	lb bc, 3, 1
 	ld a, $0
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	ld a, $1
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	xor a
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	ld a, $1
 	call Function4a6d8
-	ld bc, $401
+	lb bc, 4, 1
 	ld a, $2
 	call Function4a6d8
-	ld bc, $101
+	lb bc, 1, 1
 	ld a, $3
 	call Function4a6d8
-	ld bc, $101
-	ld a, $7f
+	lb bc, 1, 1
+	ld a, " "
 	call Function4a6d8
 	ret
 ; 4a449 (12:6449)
@@ -40866,7 +27620,7 @@
 	push bc
 	push de
 	callba MobileStudium
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop de
 	pop bc
 	ld a, b
@@ -40882,12 +27636,12 @@
 
 
 Function4a4c4: ; 4a4c4 (12:64c4)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function4a3a7
 	call Function4a492
 	call Function4a680
-	call WhiteBGMap
-	ld c, $14
+	call ClearBGPalettes
+	ld c, 20
 	call DelayFrames
 	hlcoord 2, 0
 	ld b, $a
@@ -40928,7 +27682,7 @@
 	call Function3200
 	call SetPalettes
 	call Function1bc9
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 	jr asm_4a54d
@@ -40935,7 +27689,7 @@
 
 Function4a545: ; 4a545 (12:6545)
 	call Function1bd3
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld b, [hl]
 	push bc
 
@@ -40946,7 +27700,7 @@
 	jr nz, .asm_4a574
 	jr .asm_4a57e
 .asm_4a557
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	cp $1
 	jp z, Function4a6ab
@@ -40960,11 +27714,11 @@
 	call Function1ff8
 .asm_4a574
 	pop bc
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	jp Function49f0a
 .asm_4a57e
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	dec a
 	add a
@@ -40992,7 +27746,7 @@
 Function4a5b0: ; 4a5b0 (12:65b0)
 	call Function4a680
 	pop bc
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld [hl], b
 	ld b, $a
 	ld c, $1
@@ -41015,7 +27769,7 @@
 
 Strings_4a5f6: ; 4a5f6
 	db "めいし や ニュース ", $1d, "のせる@"
-	db "あなた", $25, "あいさつです@"
+	db "あなた%あいさつです@"
 	db "モバイル たいせん", $4a, "はじまるとき@"
 	db "あいて", $1d, "みえる あいさつです@"
 	db "モバイル たいせんで かったとき@"
@@ -41022,7 +27776,7 @@
 	db "あいて", $1d, "みえる あいさつです@"
 	db "モバイル たいせんで まけたとき@"
 	db "あいて", $1d, "みえる あいさつです@"
-	db "まえ", $25, "がめん ", $1d, "もどります@"
+	db "まえ%がめん ", $1d, "もどります@"
 	db "@"
 ; 4a680
 
@@ -41061,12 +27815,12 @@
 Function4a6ab: ; 4a6ab (12:66ab)
 	ld a, $2
 	call Function1ff8
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld b, $8
 	call GetSGBLayout
 	callba Function11c1ab
 	pop bc
-	call Functione5f
+	call LoadFontsExtra
 	jp Function4a4c4
 
 Function4a6c5: ; 4a6c5 (12:66c5)
@@ -41076,7 +27830,7 @@
 	ld [MusicFadeIDLo], a
 	ld a, d
 	ld [MusicFadeIDHi], a
-	ld c, $16
+	ld c, 22
 	call DelayFrames
 	ret
 
@@ -41166,7 +27920,7 @@
 	ret c ; found!
 
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	call UpdateOTPointer
@@ -41193,7 +27947,7 @@
 
 .loop
 	push bc
-	ld bc, sBoxMon2 - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	call UpdateOTPointer
@@ -41257,7 +28011,7 @@
 
 .loopboxmon
 	push bc
-	ld bc, sBoxMon2 - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	call UpdateOTPointer
@@ -41301,7 +28055,7 @@
 	jr nz, .notfound ; species doesn't match
 
 ; check ID number
-	ld bc, PartyMon1ID - PartyMon1Species
+	ld bc, MON_ID
 	add hl, bc ; now hl points to ID number
 	ld a, [PlayerID]
 	cp [hl]
@@ -41347,15 +28101,15 @@
 ; 0x4a810
 
 BoxAddressTable1: ; 4a810
-	dbw BANK(sBox1),  sBox1
-	dbw BANK(sBox2),  sBox2
-	dbw BANK(sBox3),  sBox3
-	dbw BANK(sBox4),  sBox4
-	dbw BANK(sBox5),  sBox5
-	dbw BANK(sBox6),  sBox6
-	dbw BANK(sBox7),  sBox7
-	dbw BANK(sBox8),  sBox8
-	dbw BANK(sBox9),  sBox9
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
 	dba sBox10
 	dba sBox11
 	dba sBox12
@@ -41390,7 +28144,7 @@
 	call Function4a8dc
 	ret c
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	call Function4a91e
@@ -41412,7 +28166,7 @@
 
 .asm_4a87c
 	push bc
-	ld bc, sBoxMon2 - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	call Function4a91e
@@ -41463,7 +28217,7 @@
 
 .asm_4a8c4
 	push bc
-	ld bc, sBoxMon2 - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	call Function4a91e
@@ -41509,15 +28263,15 @@
 ; 4a8f4
 
 BoxAddressTable2: ; 4a8f4
-	dbw BANK(sBox1),  sBox1
-	dbw BANK(sBox2),  sBox2
-	dbw BANK(sBox3),  sBox3
-	dbw BANK(sBox4),  sBox4
-	dbw BANK(sBox5),  sBox5
-	dbw BANK(sBox6),  sBox6
-	dbw BANK(sBox7),  sBox7
-	dbw BANK(sBox8),  sBox8
-	dbw BANK(sBox9),  sBox9
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
 	dba sBox10
 	dba sBox11
 	dba sBox12
@@ -41562,7 +28316,7 @@
 Function4a94e: ; 4a94e
 	call FadeToMenu
 	ld a, -1
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld bc, 3
 	call ByteFill
 	xor a
@@ -41596,7 +28350,7 @@
 
 .asm_4a990
 	call Function2b3c
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld a, -1
 	ld bc, 3
 	call ByteFill
@@ -41629,7 +28383,7 @@
 ; 0x4a9c3
 
 Function4a9c3: ; 4a9c3
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld a, $ff
 	cp [hl]
 	jr z, .asm_4a9d5
@@ -41648,13 +28402,13 @@
 ; 4a9d7
 
 Function4a9d7: ; 4a9d7
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld hl, PartyMonNicknames
 	call GetNick
 	ld h, d
 	ld l, e
 	ld de, EndFlypoint
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
 	ld a, [wd003]
 	ld hl, PartyMonNicknames
@@ -41662,7 +28416,7 @@
 	ld h, d
 	ld l, e
 	ld de, wd00c
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
 	ld a, [wd004]
 	ld hl, PartyMonNicknames
@@ -41670,7 +28424,7 @@
 	ld h, d
 	ld l, e
 	ld de, wd012
-	ld bc, $0006
+	ld bc, 6
 	call CopyBytes
 	ld hl, UnknownText_0x4aa1d
 	call PrintText
@@ -41685,7 +28439,7 @@
 ; 0x4aa22
 
 Function4aa22: ; 4aa22
-	call WhiteBGMap
+	call ClearBGPalettes
 
 Function4aa25: ; 4aa25
 	callba Function5004f
@@ -41731,7 +28485,7 @@
 ; 4aa7a
 
 Function4aa7a: ; 4aa7a
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld d, $3
 .loop
 	ld e, PARTY_LENGTH
@@ -41740,7 +28494,7 @@
 	push hl
 	cp -1
 	jr z, .done
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	inc a
 	ld d, a
 .inner_loop
@@ -41761,13 +28515,13 @@
 	push hl
 	ld c, l
 	ld b, h
-	ld hl, $0002
+	ld hl, $2
 	add hl, bc
 	ld [hl], a
 	pop hl
 
 .next
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 	dec e
 	jr nz, .inner_loop
@@ -41786,7 +28540,7 @@
 ; 4aab6
 
 Function4aab6: ; 4aab6
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld d, $3
 .loop
 	ld a, [hli]
@@ -41795,7 +28549,7 @@
 	push de
 	push hl
 	hlcoord 0, 1
-	ld bc, $0028
+	ld bc, $28
 	call AddNTimes
 	ld [hl], $ec
 	pop hl
@@ -41848,7 +28602,7 @@
 
 Function4ab06: ; 4ab06
 	ld a, [CurPartyMon]
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1HP
 	call AddNTimes
 	ld a, [hli]
@@ -41883,11 +28637,11 @@
 	ld a, [PartyCount]
 	inc a
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd0d8], a
 	cp b
 	jr z, .asm_4ab7e
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurPartyMon], a
 	ld c, a
@@ -41904,7 +28658,7 @@
 	ret
 
 .asm_4ab6d
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd0d8], a
 .asm_4ab73
 	ld de, SFX_READ_TEXT_2
@@ -41931,7 +28685,7 @@
 Function4ab99: ; 4ab99
 	bit 1, a
 	jr z, .asm_4aba6
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	cp $ff
 	jr z, .asm_4aba6
 	scf
@@ -41970,7 +28724,7 @@
 	jr z, .asm_4abd5
 	ld a, [PartyCount]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1
 	ld [wcfaa], a
 	jr .asm_4ac29
@@ -41978,30 +28732,30 @@
 .asm_4abd5
 	bit 6, a
 	jr z, .asm_4abeb
-	ld a, [wcfa9]
-	ld [wcfa9], a
+	ld a, [MenuSelection2]
+	ld [MenuSelection2], a
 	and a
 	jr nz, .asm_4ac29
 	ld a, [PartyCount]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jr .asm_4ac29
 
 .asm_4abeb
 	bit 7, a
 	jr z, .asm_4ac08
-	ld a, [wcfa9]
-	ld [wcfa9], a
+	ld a, [MenuSelection2]
+	ld [MenuSelection2], a
 	ld a, [PartyCount]
 rept 2
 	inc a
 endr
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp b
 	jr nz, .asm_4ac29
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jr .asm_4ac29
 
 .asm_4ac08
@@ -42011,7 +28765,7 @@
 	jr z, .asm_4ac56
 
 .asm_4ac10
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 	ld a, [PartyCount]
 	inc a
@@ -42034,12 +28788,12 @@
 	ld a, [PartyCount]
 	hlcoord 6, 1
 .asm_4ac3b
-	ld bc, $0028
+	ld bc, $28
 	add hl, bc
 	dec a
 	jr nz, .asm_4ac3b
 	ld [hl], $7f
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 	ld a, [PartyCount]
 	inc a
@@ -42103,12 +28857,12 @@
 Function4acaa: ; 4acaa
 .asm_4acaa
 	ld a, $a0
-	ld [wcf91], a
+	ld [wMenuData2Flags], a
 	ld a, [wd019]
 	bit 1, a
 	jr z, .asm_4acc2
 	ld a, $2
-	ld [wcf92], a
+	ld [wMenuData2Items], a
 	ld a, $c
 	ld [wMenuBorderTopCoord], a
 	jr .asm_4accc
@@ -42115,7 +28869,7 @@
 
 .asm_4acc2
 	ld a, $4
-	ld [wcf92], a
+	ld [wMenuData2Items], a
 	ld a, $8
 	ld [wMenuBorderTopCoord], a
 
@@ -42144,7 +28898,7 @@
 	ld a, [wd019]
 	bit 1, a
 	jr nz, .asm_4ad0e
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, Function4ad17
 	cp $2
@@ -42154,7 +28908,7 @@
 	jr .asm_4acf3
 
 .asm_4ad0e
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, Function4ad56
 	jr .asm_4acf3
@@ -42162,7 +28916,7 @@
 Function4ad17: ; 4ad17
 	call Function4adb2
 	jr z, .asm_4ad4a
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld a, $ff
 	cp [hl]
 	jr z, .asm_4ad39
@@ -42207,7 +28961,7 @@
 ; 4ad60
 
 Function4ad60: ; 4ad60
-	callba Function12fba
+	callba ManagePokemonMoves
 	ret
 ; 4ad67
 
@@ -42254,7 +29008,7 @@
 ; 4adb2
 
 Function4adb2: ; 4adb2
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld a, [CurPartyMon]
 	cp [hl]
 	ret z
@@ -42269,7 +29023,7 @@
 ; 4adc2
 
 Function4adc2: ; 4adc2
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	cp $ff
 	jr nz, .asm_4ade5
 	ld a, [wd003]
@@ -42276,13 +29030,13 @@
 	cp $ff
 	jr nz, .asm_4addd
 	ld a, [wd004]
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld a, $ff
 	ld [wd004], a
 	jr .asm_4ade5
 
 .asm_4addd
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld a, $ff
 	ld [wd003], a
 
@@ -42304,7 +29058,7 @@
 	ret z
 	ld a, [PartyCount]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1
 	ld [wcfaa], a
 	ld a, [wd019]
@@ -42325,7 +29079,7 @@
 ; 4ae1f
 
 Function4ae1f: ; 4ae1f
-	ld bc, $0e07
+	lb bc, 14, 7
 	push bc
 	ld hl, YesNoMenuDataHeader
 	call CopyMenuDataHeader
@@ -42341,12 +29095,12 @@
 	call BackUpTiles
 	call InterpretMenu2
 	push af
-	ld c, $f
+	ld c, 15
 	call DelayFrames
 	call Function4ae5e
 	pop af
 	jr c, .asm_4ae57
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $2
 	jr z, .asm_4ae57
 	and a
@@ -42354,7 +29108,7 @@
 
 .asm_4ae57
 	ld a, $2
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	scf
 	ret
 ; 4ae5e
@@ -42537,43 +29291,43 @@
 
 
 Function4cf45: ; 4cf45 (13:4f45)
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	jp z, WaitBGMap
 
 ; The following is a modified version of Function3246.
-	ld a, [hBGMapMode] ; $ff00+$d4
+	ld a, [hBGMapMode]
 	push af
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld a, [$ffde]
+	ld [hBGMapMode], a
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 .WaitLY
-	ld a, [rLY] ; $ff00+$44
+	ld a, [rLY]
 	cp $60
 	jr c, .WaitLY
 
 	di
 	ld a, 1 ; BANK(VBGMap2)
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	hlcoord 0, 0, AttrMap
 	call Function4cf80
 	ld a, 0 ; BANK(VBGMap0)
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	hlcoord 0, 0
 	call Function4cf80
 .WaitLY2
-	ld a, [rLY] ; $ff00+$44
+	ld a, [rLY]
 	cp $60
 	jr c, .WaitLY2
 	ei
 
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	pop af
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Function4cf80: ; 4cf80 (13:4f80)
@@ -42583,7 +29337,7 @@
 	ld h, a
 	ld l, 0
 	ld a, SCREEN_HEIGHT
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	ld b, 1 << 1
 	ld c, rSTAT % $100
 
@@ -42602,12 +29356,12 @@
 
 	ld de, $20 - SCREEN_WIDTH
 	add hl, de
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	dec a
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	jr nz, .loop
 
-	ld a, [hSPBuffer] ; $ff00+$d9
+	ld a, [hSPBuffer]
 	ld l, a
 	ld a, [hSPBuffer + 1]
 	ld h, a
@@ -42645,38 +29399,38 @@
 	ld hl, wc608
 	ld a, [wd196]
 	and a
-	jr z, .asm_4d168
-	ld bc, $0030
+	jr z, .skip
+	ld bc, $30
 	add hl, bc
 
-.asm_4d168
+.skip
 	ld a, [wd197]
 	and a
-	jr z, .asm_4d170
+	jr z, .next_dw
 rept 2
 	inc hl
 endr
 
-.asm_4d170
+.next_dw
 	decoord 0, 0
 	ld b, SCREEN_HEIGHT
-.asm_4d175
+.loop
 	ld c, SCREEN_WIDTH
-.asm_4d177
+.loop2
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_4d177
+	jr nz, .loop2
 	ld a, l
-	add $4
+	add 4
 	ld l, a
-	jr nc, .asm_4d184
+	jr nc, .carry
 	inc h
 
-.asm_4d184
+.carry
 	dec b
-	jr nz, .asm_4d175
+	jr nz, .loop
 	ret
 ; 4d188
 
@@ -42688,15 +29442,15 @@
 	cp $0
 	jp z, WaitBGMap
 
-; What follows is a modified version of Function3246.
+; What follows is a modified version of Function3246 (LoadEDTile).
 	ld a, [hBGMapMode]
 	push af
 	xor a
 	ld [hBGMapMode], a
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 .wait
 	ld a, [rLY]
 	cp $8f
@@ -42718,7 +29472,7 @@
 	ei
 
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	pop af
 	ld [hBGMapMode], a
 	ret
@@ -42731,7 +29485,7 @@
 	ld h, a
 	ld l, 0
 	ld a, SCREEN_HEIGHT
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	ld b, 1 << 1 ; not in v/hblank
 	ld c, rSTAT % $100
 
@@ -42750,9 +29504,9 @@
 
 	ld de, $20 - SCREEN_WIDTH
 	add hl, de
-	ld a, [$ffd3]
+	ld a, [hTilesPerCycle]
 	dec a
-	ld [$ffd3], a
+	ld [hTilesPerCycle], a
 	jr nz, .loop
 
 	ld a, [hSPBuffer]
@@ -42771,7 +29525,7 @@
 ; 4d319
 
 Function4d319: ; 4d319
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurPartyMon], a
 	call LowVolume
@@ -42778,9 +29532,9 @@
 	predef StatsScreenInit
 	ld a, [CurPartyMon]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	call ClearScreen
-	call WhiteBGMap
+	call ClearBGPalettes
 	call MaxVolume
 	callba Function28ef8
 	callba Function4d354
@@ -42874,8 +29628,8 @@
 	callba Function8000
 	ld b, $8
 	call GetSGBLayout
-	call Functione51
-	call Functione5f
+	call LoadStandardFont
+	call LoadFontsExtra
 	ld de, MUSIC_MAIN_MENU
 	call PlayMusic
 	ld hl, .text_askreset
@@ -42884,7 +29638,7 @@
 	call CopyMenuDataHeader
 	call InterpretMenu2
 	ret c
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	ret z
 	call ClockResetPassword
@@ -42960,7 +29714,7 @@
 	and D_PAD
 	jr z, .loop2
 	call .dpadinput
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	jr .loop
 
@@ -43150,8 +29904,8 @@
 	callba Function8000
 	ld b, $8
 	call GetSGBLayout
-	call Functione51
-	call Functione5f
+	call LoadStandardFont
+	call LoadFontsExtra
 	ld de, MUSIC_MAIN_MENU
 	call PlayMusic
 	ld hl, UnknownText_0x4d580
@@ -43160,7 +29914,7 @@
 	call CopyMenuDataHeader
 	call InterpretMenu2
 	ret c
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	ret z
 	callba EmptyAllSRAMBanks
@@ -43266,7 +30020,7 @@
 
 Function4d7fd: ; 4d7fd
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	push de
 	push af
@@ -43287,9 +30041,9 @@
 	callba Function29549
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -43300,8 +30054,8 @@
 	ld [CurPartySpecies], a
 	hlcoord 7, 2
 	ld d, $0
-	ld e, $3
-	predef Functiond008e
+	ld e, ANIM_MON_TRADE
+	predef AnimateFrontpic
 	ret
 ; 4d860
 
@@ -43315,7 +30069,7 @@
 	ld b, a
 ; Check each monster in the party for Pokerus
 	ld hl, PartyMon1PokerusStatus
-	ld de, PartyMon2 - PartyMon1
+	ld de, PARTYMON_STRUCT_LENGTH
 .Check
 	ld a, [hl]
 	and $0f ; only the bottom nybble is used
@@ -43348,7 +30102,7 @@
 	cp EGG
 	call nz, .CompareLuckyNumberToMonID
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	dec d
@@ -43373,7 +30127,7 @@
 
 .SkipOpenBoxMon
 	push bc
-	ld bc, sBoxMon2 - sBoxMon1 ; box_struct_length
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	dec d
@@ -43404,7 +30158,7 @@
 	ld b, h
 	ld c, l
 	inc bc
-	ld de, MONS_PER_BOX + NUM_MOVES + 4
+	ld de, sBoxMon1ID - sBox
 	add hl, de
 	ld d, a
 .BoxNLoop
@@ -43413,7 +30167,7 @@
 	cp EGG
 	jr z, .SkipBoxMon
 
-	call .CompareLuckyNumberToMonID
+	call .CompareLuckyNumberToMonID ; sets ScriptVar and CurPartySpecies appropriately
 	jr nc, .SkipBoxMon
 	ld a, 1
 	ld [wFoundMatchingIDInParty], a
@@ -43420,7 +30174,7 @@
 
 .SkipBoxMon
 	push bc
-	ld bc, sBoxMon2 - sBoxMon1 ; box_struct_length
+	ld bc, BOXMON_STRUCT_LENGTH
 	add hl, bc
 	pop bc
 	dec d
@@ -43504,11 +30258,11 @@
 	inc b
 	ld a, [ScriptVar]
 	and a
-	jr z, .foundmatch
+	jr z, .bettermatch
 	cp b
 	jr c, .nomatch
 
-.foundmatch
+.bettermatch
 	dec b
 	ld a, b
 	ld [ScriptVar], a
@@ -43527,15 +30281,15 @@
 ; 4d99f
 
 .BoxBankAddresses: ; 4d99f
-	dbw BANK(sBox1),  sBox1
-	dbw BANK(sBox2),  sBox2
-	dbw BANK(sBox3),  sBox3
-	dbw BANK(sBox4),  sBox4
-	dbw BANK(sBox5),  sBox5
-	dbw BANK(sBox6),  sBox6
-	dbw BANK(sBox7),  sBox7
-	dbw BANK(sBox8),  sBox8
-	dbw BANK(sBox9),  sBox9
+	dba sBox1
+	dba sBox2
+	dba sBox3
+	dba sBox4
+	dba sBox5
+	dba sBox6
+	dba sBox7
+	dba sBox8
+	dba sBox9
 	dba sBox10
 	dba sBox11
 	dba sBox12
@@ -43568,7 +30322,7 @@
 CheckPartyFullAfterContest: ; 4d9e5
 	ld a, [wContestMon]
 	and a
-	jp z, Function4db35
+	jp z, .DidntCatchAnything
 	ld [CurPartySpecies], a
 	ld [CurSpecies], a
 	call GetBaseData
@@ -43575,7 +30329,7 @@
 	ld hl, PartyCount
 	ld a, [hl]
 	cp 6
-	jp nc, Function4daa3
+	jp nc, .TryAddToBox
 	inc a
 	ld [hl], a
 	ld c, a
@@ -43589,12 +30343,12 @@
 	ld hl, PartyMon1Species
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld hl, wContestMon
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	ld a, [PartyCount]
 	dec a
@@ -43609,10 +30363,10 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	ld de, wd050
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	call GiveANickname_YesNo
-	jr c, .asm_4da66
+	jr c, .Party_SkipNickname
 	ld a, [PartyCount]
 	dec a
 	ld [CurPartyMon], a
@@ -43619,9 +30373,9 @@
 	xor a
 	ld [MonType], a
 	ld de, wd050
-	callab Functione3de
+	callab InitNickname
 
-.asm_4da66
+.Party_SkipNickname
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMonNicknames
@@ -43653,7 +30407,7 @@
 	ret
 ; 4daa3
 
-Function4daa3: ; 4daa3
+.TryAddToBox: ; 4daa3
 	ld a, BANK(sBoxCount)
 	call GetSRAMBank
 	ld hl, sBoxCount
@@ -43660,12 +30414,12 @@
 	ld a, [hl]
 	cp MONS_PER_BOX
 	call CloseSRAM
-	jr nc, .asm_4db08
+	jr nc, .BoxFull
 	xor a
 	ld [CurPartyMon], a
 	ld hl, wContestMon
 	ld de, wd018
-	ld bc, sBoxMon2 - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	call CopyBytes
 	ld hl, PlayerName
 	ld de, wd00d
@@ -43677,14 +30431,14 @@
 	call GetPokemonName
 	call GiveANickname_YesNo
 	ld hl, StringBuffer1
-	jr c, .asm_4daf7
+	jr c, .Box_SkipNickname
 	ld a, BOXMON
 	ld [MonType], a
 	ld de, wd050
-	callab Functione3de
+	callab InitNickname
 	ld hl, wd050
 
-.asm_4daf7
+.Box_SkipNickname
 	ld a, BANK(sBoxMonNicknames)
 	call GetSRAMBank
 	ld de, sBoxMonNicknames
@@ -43692,7 +30446,7 @@
 	call CopyBytes
 	call CloseSRAM
 
-.asm_4db08
+.BoxFull
 	ld a, BANK(sBoxMon1Level)
 	call GetSRAMBank
 	ld a, [sBoxMon1Level]
@@ -43715,7 +30469,7 @@
 	ret
 ; 4db35
 
-Function4db35: ; 4db35
+.DidntCatchAnything: ; 4db35
 	ld a, $2
 	ld [ScriptVar], a
 	ret
@@ -43754,10 +30508,10 @@
 	ld a, [MapNumber]
 	ld c, a
 	cp MAP_POKECENTER_2F
-	jr nz, .asm_4db78
+	jr nz, .NotPokeCenter2F
 	ld a, b
 	cp GROUP_POKECENTER_2F
-	jr nz, .asm_4db78
+	jr nz, .NotPokeCenter2F
 
 	ld a, [BackupMapGroup]
 	ld b, a
@@ -43764,7 +30518,7 @@
 	ld a, [BackupMapNumber]
 	ld c, a
 
-.asm_4db78
+.NotPokeCenter2F
 	call GetWorldMapLocation
 	ld b, a
 	ld a, [PlayerGender]
@@ -43783,18 +30537,18 @@
 	ret
 ; 4db92
 
-Function4db92: ; 4db92
+SetBoxMonCaughtData: ; 4db92
 	push bc
 	ld a, BANK(sBoxMon1CaughtLevel)
 	call GetSRAMBank
 	ld hl, sBoxMon1CaughtLevel
 	pop bc
-	call Function4dbaf
+	call SetPkmnCaughtData
 	call CloseSRAM
 	ret
 ; 4dba3
 
-SetPkmnCaughtData: ; 4dba3
+SetPartymonCaughtData: ; 4dba3
 	ld a, [PartyCount]
 	dec a
 	ld hl, PartyMon1CaughtLevel
@@ -43801,7 +30555,7 @@
 	push bc
 	call GetPartyLocation
 	pop bc
-Function4dbaf: ; 4dbaf
+SetPkmnCaughtData: ; 4dbaf
 	xor a
 	ld [hli], a
 	ld a, $7e
@@ -43848,7 +30602,7 @@
 	ret z
 	ld a, c
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld a, [PlayerID]
 	cp [hl]
@@ -43877,7 +30631,7 @@
 	dec a
 	push hl
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop bc
 	ld a, b
@@ -43910,7 +30664,7 @@
 	dec a
 	push hl
 	push bc
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop bc
 	ld a, b
@@ -43988,10 +30742,10 @@
 	jr StatsScreenInit_gotaddress
 
 StatsScreenInit_gotaddress: ; 4dc94
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a ; disable overworld tile animations
+	ld [hMapAnims], a ; disable overworld tile animations
 	ld a, [wc2c6] ; whether sprite is to be mirrorred
 	push af
 	ld a, [wJumptableIndex]
@@ -44001,13 +30755,13 @@
 
 	push bc
 	push hl
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call UpdateSprites
 	callba Functionfb53e
 	pop hl
 	call _hl_
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	pop bc
 
@@ -44019,7 +30773,7 @@
 	pop af
 	ld [wc2c6], a
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 0x4dcd2
 
@@ -44026,6 +30780,7 @@
 StatsScreenMain: ; 0x4dcd2
 	xor a
 	ld [wJumptableIndex], a
+	; stupid interns
 	ld [wcf64], a
 	ld a, [wcf64]
 	and $fc
@@ -44046,12 +30801,13 @@
 StatsScreenBattle: ; 4dcf7
 	xor a
 	ld [wJumptableIndex], a
+	; stupid interns
 	ld [wcf64], a
 	ld a, [wcf64]
 	and $fc
 	or $1
 	ld [wcf64], a
-.asm_4dd08
+.loop
 	callba Function100dd2
 	ld a, [wJumptableIndex]
 	and $7f
@@ -44059,22 +30815,22 @@
 	rst JumpTable
 	call Function4dd3a
 	callba Function100dfd
-	jr c, .asm_4dd29
+	jr c, .exit
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr z, .asm_4dd08
+	jr z, .loop
 
-.asm_4dd29
+.exit
 	ret
 ; 4dd2a
 
 StatsScreenPointerTable: ; 4dd2a
-	dw Function4dd72 ; regular pokémon
+	dw MonStatsInit ; regular pokémon
 	dw EggStatsInit ; egg
-	dw Function4dde6
+	dw StatsScreenWaitCry
 	dw Function4ddac
 	dw Function4ddc6
-	dw Function4dde6
+	dw StatsScreenWaitCry
 	dw Function4ddd6
 	dw Function4dd6c
 ; 4dd3a
@@ -44111,10 +30867,10 @@
 	set 7, [hl]
 	ret
 
-Function4dd72: ; 4dd72 (13:5d72)
+MonStatsInit: ; 4dd72 (13:5d72)
 	ld hl, wcf64
 	res 6, [hl]
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	callba Function10402d
 	call Function4ddf2
@@ -44172,11 +30928,12 @@
 	ld h, $0
 	call Function4dd62
 	ret
+
 .asm_4dde1
 	and $f3
 	jp Function4de54
 
-Function4dde6: ; 4dde6 (13:5de6)
+StatsScreenWaitCry: ; 4dde6 (13:5de6)
 	call IsSFXPlaying
 	ret nc
 	ld a, [wJumptableIndex]
@@ -44186,7 +30943,7 @@
 
 Function4ddf2: ; 4ddf2 (13:5df2)
 	ld a, [MonType]
-	cp $3
+	cp BREEDMON
 	jr nz, .asm_4de10
 	ld a, [wd018]
 	ld [CurSpecies], a
@@ -44193,7 +30950,7 @@
 	call GetBaseData
 	ld hl, wd018
 	ld de, TempMon
-	ld bc, $30
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	jr .asm_4de2a
 .asm_4de10
@@ -44202,7 +30959,7 @@
 	cp EGG
 	jr z, .asm_4de2a
 	ld a, [MonType]
-	cp $2
+	cp BOXMON
 	jr c, .asm_4de2a
 	callba Function50890
 .asm_4de2a
@@ -44212,8 +30969,8 @@
 Function4de2c: ; 4de2c (13:5e2c)
 	call GetJoypad
 	ld a, [MonType]
-	cp $3
-	jr nz, .asm_4de4e
+	cp BREEDMON
+	jr nz, .notbreedmon
 	push hl
 	push de
 	push bc
@@ -44223,15 +30980,17 @@
 	pop hl
 	ld a, [wcf73]
 	and $c0
-	jr nz, .asm_4de52
+	jr nz, .set_carry
 	ld a, [wcf73]
-	jr .asm_4de50
-.asm_4de4e
-	ld a, [hJoyPressed] ; $ff00+$a7
-.asm_4de50
+	jr .clear_flags
+
+.notbreedmon
+	ld a, [hJoyPressed]
+.clear_flags
 	and a
 	ret
-.asm_4de52
+
+.set_carry
 	scf
 	ret
 
@@ -44256,7 +31015,7 @@
 	jr .asm_4dece
 .asm_4de77
 	ld a, [MonType]
-	cp $2
+	cp BOXMON
 	jr nc, .asm_4dece
 	and a
 	ld a, [PartyCount]
@@ -44330,7 +31089,7 @@
 Function4deea: ; 4deea (13:5eea)
 	call Function4df45
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
 	ld [wd265], a
 	ld [CurSpecies], a
@@ -44353,7 +31112,7 @@
 	hlcoord 18, 0
 	call Function4df66
 	hlcoord 9, 4
-	ld a, $f3
+	ld a, "/"
 	ld [hli], a
 	ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
 	ld [wd265], a
@@ -44373,7 +31132,7 @@
 	ld a, [hli]
 	ld d, a
 	ld e, [hl]
-	callba Functionc699
+	callba DrawPartyMenuHPBar
 	ld hl, wcda1
 	call SetHPPal
 	ld b, $3
@@ -44387,9 +31146,9 @@
 	pop hl
 	ret c
 	ld a, "♂"
-	jr nz, .asm_4df75
+	jr nz, .got_gender
 	ld a, "♀"
-.asm_4df75
+.got_gender
 	ld [hl], a
 	ret
 ; 4df77 (13:5f77)
@@ -44403,32 +31162,32 @@
 
 Function4df7f: ; 4df7f
 	hlcoord 7, 0
-	ld bc, 20
-	ld d, 18
-.asm_4df87
+	ld bc, SCREEN_WIDTH
+	ld d, SCREEN_HEIGHT
+.loop
 	ld a, $31
 	ld [hl], a
 	add hl, bc
 	dec d
-	jr nz, .asm_4df87
+	jr nz, .loop
 	ret
 ; 4df8f
 
 Function4df8f: ; 4df8f (13:5f8f)
 	hlcoord 0, 7
-	ld b, 20
-	ld a, $62
-.asm_4df96
+	ld b, SCREEN_WIDTH
+	ld a, "_"
+.loop
 	ld [hli], a
 	dec b
-	jr nz, .asm_4df96
+	jr nz, .loop
 	ret
 
 Function4df9b: ; 4df9b (13:5f9b)
 	hlcoord 12, 6
-	ld [hl], $71
+	ld [hl], "◀"
 	hlcoord 19, 6
-	ld [hl], $ed
+	ld [hl], "▶"
 	ret
 
 Function4dfa6: ; 4dfa6 (13:5fa6)
@@ -44436,7 +31195,7 @@
 	callba CheckShininess
 	ret nc
 	hlcoord 19, 0
-	ld [hl], $3f
+	ld [hl], "<SHINY>"
 	ret
 
 Function4dfb6: ; 4dfb6 (13:5fb6)
@@ -44444,7 +31203,7 @@
 	ld [wd265], a
 	ld [CurSpecies], a
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function4dfda
 	call Function4e002
 	call Function4dfed
@@ -44453,6 +31212,7 @@
 	jr nz, .asm_4dfd6
 	call SetPalettes
 	ret
+
 .asm_4dfd6
 	call Function4e226
 	ret
@@ -44516,7 +31276,7 @@
 	hlcoord 6, 13
 	push hl
 	ld de, TempMonStatus
-	predef Function50d0a
+	predef PlaceStatusString
 	pop hl
 	jr nz, .asm_4e066
 	jr .asm_4e060
@@ -44590,7 +31350,7 @@
 	jr z, .asm_4e111
 	inc a
 	ld d, a
-	callba Function50e47
+	callba CalcExpAtLevel
 rept 2
 	ld hl, TempMonExp + 2
 endr
@@ -44602,7 +31362,7 @@
 	sbc [hl]
 	dec hl
 	ld [Buffer2], a ; wd1eb (aliases: MovementType)
-	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
+	ld a, [hQuotient]
 	sbc [hl]
 	ld [Buffer1], a ; wd1ea (aliases: MagikarpLength)
 	ret
@@ -44784,13 +31544,13 @@
 	cp UNOWN
 	jr z, .asm_4e266
 	hlcoord 0, 0
-	call Function3786
+	call PrepMonFrontpic
 	ret
 .asm_4e266
 	xor a
 	ld [wc2c6], a
 	hlcoord 0, 0
-	call Function378b
+	call _PrepMonFrontpic
 	ret
 
 Function4e271: ; 4e271 (13:6271)
@@ -44817,7 +31577,7 @@
 	hlcoord 0, 0
 	ld d, $0
 	ld e, $2
-	predef Functiond00a3
+	predef LoadMonAnimation
 	ld hl, wcf64
 	set 6, [hl]
 	ret
@@ -44839,7 +31599,7 @@
 Function4e2bf: ; 4e2bf (13:62bf)
 	ld a, [CurPartyMon]
 	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld b, h
 	ld c, l
@@ -44872,7 +31632,7 @@
 	ld a, [CurPartySpecies]
 	cp EGG
 	jr z, .asm_4e2fe
-	call Function4e53f
+	call CheckFaintedFrzSlp
 	jr c, Function4e305
 .asm_4e2fe
 	xor a
@@ -44894,16 +31654,16 @@
 	push bc
 	push af
 	call DelayFrame
-	ld a, [rVBK] ; $ff00+$4f
+	ld a, [rVBK]
 	push af
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
-	ld de, GFX_f9204
-	lb bc, BANK(GFX_f9204), 1
+	ld [rVBK], a
+	ld de, TextBoxSpaceGFX
+	lb bc, BANK(TextBoxSpaceGFX), 1
 	ld hl, VTiles2 tile $7f
 	call Get2bpp
 	pop af
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	pop af
 	pop bc
 	pop de
@@ -44958,7 +31718,7 @@
 	call SetPalettes ; pals
 	call DelayFrame
 	hlcoord 0, 0
-	call Function3786
+	call PrepMonFrontpic
 	callba Function10402d
 	call Function4e497
 
@@ -45020,7 +31780,7 @@
 	pop de
 	hlcoord 0, 0
 	ld d, $0
-	predef Functiond00a3
+	predef LoadMonAnimation
 	ld hl, wcf64
 	set 6, [hl]
 	ret
@@ -45095,31 +31855,31 @@
 	jp SkipNames
 
 
-Function4e53f: ; 4e53f
-	ld hl, PartyMon1HP - PartyMon1
+CheckFaintedFrzSlp: ; 4e53f
+	ld hl, MON_HP
 	add hl, bc
 	ld a, [hli]
 	or [hl]
-	jr z, .asm_4e552
-	ld hl, PartyMon1Status - PartyMon1
+	jr z, .fainted_frz_slp
+	ld hl, MON_STATUS
 	add hl, bc
 	ld a, [hl]
 	and (1 << FRZ) | SLP
-	jr nz, .asm_4e552
+	jr nz, .fainted_frz_slp
 	and a
 	ret
 
-.asm_4e552
+.fainted_frz_slp
 	scf
 	ret
 ; 4e554
 
 
-Function4e554:: ; 4e554
+CatchTutorial:: ; 4e554
 	ld a, [BattleType]
 	dec a
 	ld c, a
-	ld hl, Jumptable_4e564
+	ld hl, .jumptable
 	ld b, 0
 rept 2
 	add hl, bc
@@ -45130,23 +31890,24 @@
 	jp [hl]
 ; 4e564
 
-Jumptable_4e564: ; 4e564 (13:6564)
-	dw Function4e56a
-	dw Function4e56a
-	dw Function4e56a
+.jumptable: ; 4e564 (13:6564)
+	dw .DudeTutorial
+	dw .DudeTutorial
+	dw .DudeTutorial
 
-Function4e56a: ; 4e56a (13:656a)
+.DudeTutorial: ; 4e56a (13:656a)
+; Back up your name to your Mom's name.
 	ld hl, PlayerName
 	ld de, MomsName
 	ld bc, NAME_LENGTH
 	call CopyBytes
-
-	ld hl, DudeString
+; Copy Dude's name to your name
+	ld hl, .Dude
 	ld de, PlayerName
 	ld bc, NAME_LENGTH
 	call CopyBytes
 
-	call Function4e5b7
+	call .LoadDudeData
 
 	xor a
 	ld [hJoyDown], a
@@ -45156,8 +31917,8 @@
 	and $f8
 	add $3
 	ld [Options], a
-	ld hl, AutoInput_4e5df
-	ld a, BANK(AutoInput_4e5df)
+	ld hl, .AutoInput
+	ld a, BANK(.AutoInput)
 	call StartAutoInput
 	callab StartBattle
 	call StopAutoInput
@@ -45170,13 +31931,13 @@
 	call CopyBytes
 	ret
 
-Function4e5b7: ; 4e5b7 (13:65b7)
+.LoadDudeData: ; 4e5b7 (13:65b7)
 	ld hl, OTPartyMon1
-	ld [hl], $1
+	ld [hl], BULBASAUR
 	inc hl
-	ld [hl], $12
+	ld [hl], POTION
 	inc hl
-	ld [hl], $1
+	ld [hl], POUND
 	inc hl
 	ld [hl], $ff
 	ld hl, OTPartyMon1Exp + 2
@@ -45194,474 +31955,17 @@
 	ret
 ; 4e5da (13:65da)
 
-DudeString: ; 4e5da
+.Dude: ; 4e5da
 	db "DUDE@"
 ; 4e5df
 
-AutoInput_4e5df: ; 4e5df
+.AutoInput: ; 4e5df
 	db NO_INPUT, $ff ; end
 ; 4e5e1
 
+INCLUDE "engine/evolution_animation.asm"
 
-EvolutionAnimation: ; 4e5e1
-	push hl
-	push de
-	push bc
-	ld a, [CurSpecies]
-	push af
-	ld a, [rOBP0]
-	push af
-	ld a, [BaseDexNo]
-	push af
-
-	call _EvolutionAnimation
-
-	pop af
-	ld [BaseDexNo], a
-	pop af
-	ld [rOBP0], a
-	pop af
-	ld [CurSpecies], a
-	pop bc
-	pop de
-	pop hl
-
-	ld a, [wd1ed]
-	and a
-	ret z
-
-	scf
-	ret
-; 4e607
-
-_EvolutionAnimation: ; 4e607
-	ld a, $e4
-	ld [rOBP0], a
-
-	ld de, MUSIC_NONE
-	call PlayMusic
-
-	callba Function8cf53
-
-	ld de, EvolutionGFX
-	ld hl, VTiles0
-	lb bc, BANK(EvolutionGFX), 8
-	call Request2bpp
-
-	xor a
-	ld [Danger], a
-	call WaitBGMap
-	xor a
-	ld [hBGMapMode], a
-	ld a, [Buffer1]
-	ld [PlayerHPPal], a
-
-	ld c, $0
-	call Function4e703
-	ld a, [Buffer1]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call Function4e708
-
-	ld de, VTiles2
-	ld hl, VTiles2 tile $31
-	ld bc, $0031
-	call Request2bpp
-
-	ld a, $31
-	ld [wd1ec], a
-	call Function4e755
-	ld a, [Buffer2]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	call Function4e711
-	ld a, [Buffer1]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-
-	ld a, $1
-	ld [hBGMapMode], a
-	call Function4e794
-	jr c, .asm_4e67c
-
-	ld a, [Buffer1]
-	call PlayCry
-
-.asm_4e67c
-	ld de, MUSIC_EVOLUTION
-	call PlayMusic
-
-	ld c, 80
-	call DelayFrames
-
-	ld c, $1
-	call Function4e703
-	call Function4e726
-	jr c, .asm_4e6df
-
-	ld a, $cf
-	ld [wd1ec], a
-
-	call Function4e755
-	xor a
-	ld [wd1ed], a
-
-	ld a, [Buffer2]
-	ld [PlayerHPPal], a
-
-	ld c, $0
-	call Function4e703
-	call Function4e7a6
-	callba Function8cf53
-	call Function4e794
-	jr c, .asm_4e6de
-
-	ld a, [wc2c6]
-	push af
-	ld a, $1
-	ld [wc2c6], a
-	ld a, [CurPartySpecies]
-	push af
-
-	ld a, [PlayerHPPal]
-	ld [CurPartySpecies], a
-	hlcoord 7, 2
-	ld d, $0
-	ld e, $4
-	predef Functiond008e
-
-	pop af
-	ld [CurPartySpecies], a
-	pop af
-	ld [wc2c6], a
-	ret
-
-.asm_4e6de
-	ret
-
-.asm_4e6df
-	ld a, $1
-	ld [wd1ed], a
-
-	ld a, [Buffer1]
-	ld [PlayerHPPal], a
-
-	ld c, $0
-	call Function4e703
-	call Function4e7a6
-	callba Function8cf53
-	call Function4e794
-	ret c
-
-	ld a, [PlayerHPPal]
-	call PlayCry
-	ret
-; 4e703
-
-Function4e703: ; 4e703
-	ld b, $b
-	jp GetSGBLayout
-; 4e708
-
-Function4e708: ; 4e708
-	call GetBaseData
-	hlcoord 7, 2
-	jp Function3786
-; 4e711
-
-Function4e711: ; 4e711
-	call GetBaseData
-	ld a, $1
-	ld [wc2c6], a
-	ld de, VTiles2
-	predef Function5108b
-	xor a
-	ld [wc2c6], a
-	ret
-; 4e726
-
-Function4e726: ; 4e726
-	call ClearJoypad
-	ld bc, $010e
-.asm_4e72c
-	push bc
-	call Function4e779
-	pop bc
-	jr c, .asm_4e73f
-	push bc
-	call Function4e741
-	pop bc
-	inc b
-rept 2
-	dec c
-endr
-	jr nz, .asm_4e72c
-	and a
-	ret
-
-.asm_4e73f
-	scf
-	ret
-; 4e741
-
-Function4e741: ; 4e741
-.asm_4e741
-	ld a, $cf
-	ld [wd1ec], a
-	call Function4e755
-	ld a, $31
-	ld [wd1ec], a
-	call Function4e755
-	dec b
-	jr nz, .asm_4e741
-	ret
-; 4e755
-
-Function4e755: ; 4e755
-	push bc
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 7, 2
-	lb bc, 7, 7
-	ld de, $000d
-.asm_4e762
-	push bc
-.asm_4e763
-	ld a, [wd1ec]
-	add [hl]
-	ld [hli], a
-	dec c
-	jr nz, .asm_4e763
-	pop bc
-	add hl, de
-	dec b
-	jr nz, .asm_4e762
-	ld a, $1
-	ld [hBGMapMode], a
-	call WaitBGMap
-	pop bc
-	ret
-; 4e779
-
-Function4e779: ; 4e779
-.asm_4e779
-	call DelayFrame
-	push bc
-	call JoyTextDelay
-	ld a, [hJoyDown]
-	pop bc
-	and B_BUTTON
-	jr nz, .asm_4e78c
-.asm_4e787
-	dec c
-	jr nz, .asm_4e779
-	and a
-	ret
-
-.asm_4e78c
-	ld a, [wd1e9]
-	and a
-	jr nz, .asm_4e787
-	scf
-	ret
-; 4e794
-
-Function4e794: ; 4e794
-	ld a, [CurPartyMon]
-	ld hl, PartyMon1Species
-	call GetPartyLocation
-	ld b, h
-	ld c, l
-	callba Function4e53f
-	ret
-; 4e7a6
-
-Function4e7a6: ; 4e7a6
-	ld a, [wd1ed]
-	and a
-	ret nz
-	ld de, SFX_EVOLVED
-	call PlaySFX
-	ld hl, wJumptableIndex
-	ld a, [hl]
-	push af
-	ld [hl], $0
-.asm_4e7b8
-	call Function4e7cf
-	jr nc, .asm_4e7c2
-	call Function4e80c
-	jr .asm_4e7b8
-
-.asm_4e7c2
-	ld c, $20
-.asm_4e7c4
-	call Function4e80c
-	dec c
-	jr nz, .asm_4e7c4
-	pop af
-	ld [wJumptableIndex], a
-	ret
-; 4e7cf
-
-Function4e7cf: ; 4e7cf
-	ld hl, wJumptableIndex
-	ld a, [hl]
-	cp $20
-	ret nc
-	ld d, a
-	inc [hl]
-	and $1
-	jr nz, .asm_4e7e6
-	ld e, $0
-	call Function4e7e8
-	ld e, $10
-	call Function4e7e8
-
-.asm_4e7e6
-	scf
-	ret
-; 4e7e8
-
-Function4e7e8: ; 4e7e8
-	push de
-	ld de, $4858
-	ld a, $13
-	call Function3b2a
-	ld hl, $000b
-	add hl, bc
-	ld a, [wJumptableIndex]
-	and $e
-	sla a
-	pop de
-	add e
-	ld [hl], a
-	ld hl, $0003
-	add hl, bc
-	ld [hl], $0
-	ld hl, $000c
-	add hl, bc
-	ld [hl], $10
-	ret
-; 4e80c
-
-Function4e80c: ; 4e80c
-	push bc
-	callab Function8cf69
-	ld a, [$ff9b]
-	and $e
-	srl a
-rept 2
-	inc a
-endr
-	and $7
-	ld b, a
-	ld hl, Sprites + 3
-	ld c, $28
-.asm_4e823
-	ld a, [hl]
-	or b
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec c
-	jr nz, .asm_4e823
-	pop bc
-	call DelayFrame
-	ret
-; 4e831
-
-
-EvolutionGFX:
-INCBIN "gfx/evo/bubble_large.2bpp"
-INCBIN "gfx/evo/bubble.2bpp"
-
-Function4e881: ; 4e881
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	call Functione51
-	call LoadFontsBattleExtra
-	ld hl, VBGMap0
-	ld bc, VBGMap1 - VBGMap0
-	ld a, " "
-	call ByteFill
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	xor a
-	call ByteFill
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	call EnableLCD
-	ld hl, UnknownText_0x4e8bd
-	call PrintText
-	call Function3200
-	call SetPalettes
-	ret
-; 4e8bd
-
-UnknownText_0x4e8bd: ; 0x4e8bd
-	; SAVING RECORD… DON'T TURN OFF!
-	text_jump UnknownText_0x1bd39e
-	db "@"
-; 0x4e8c2
-
-
-Function4e8c2: ; 4e8c2
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	call DisableLCD
-	call Functione51
-	call LoadFontsBattleExtra
-	ld hl, VBGMap0
-	ld bc, VBGMap1 - VBGMap0
-	ld a, " "
-	call ByteFill
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	xor a
-	call ByteFill
-	ld hl, wd000
-	ld c, $40
-.asm_4e8ee
-	ld a, -1
-	ld [hli], a
-	ld a, " "
-	ld [hli], a
-	dec c
-	jr nz, .asm_4e8ee
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	call EnableLCD
-	call Function3200
-	call SetPalettes
-	ret
-; 4e906
-
-Function4e906: ; 4e906
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	ld hl, w6_d000
-	ld bc, w6_d400 - w6_d000
-	ld a, " "
-	call ByteFill
-	ld hl, VBGMap0
-	ld de, w6_d000
-	ld b, $0
-	ld c, $40
-	call Request2bpp
-	pop af
-	ld [rSVBK], a
-	ret
-; 4e929
-
-Function4e929: ; 4e929
+Function4e929: ; mobile function
 	ld h, b
 	ld l, c
 	call Function4e930
@@ -45673,35 +31977,35 @@
 	ld a, [hli]
 	xor [hl]
 	ld c, a
-	jr z, .asm_4e941
+	jr z, .skip_male_trainers
 	srl c
 	srl c
-.asm_4e939
+.male_trainer_loop
 	srl c
 	ld a, c
 	cp MaleTrainersEnd - MaleTrainers - 1
-	jr nc, .asm_4e939
+	jr nc, .male_trainer_loop
 	inc c
 
-.asm_4e941
+.skip_male_trainers
 	ld a, [de]
 	cp $1
 	ld hl, MaleTrainers
-	jr nz, .asm_4e958
+	jr nz, .finished
 
 	ld hl, FemaleTrainers
 	ld a, c
 	and a
-	jr z, .asm_4e958
+	jr z, .finished
 
-.asm_4e950
+.female_trainer_loop
 	srl c
 	ld a, c
 	cp FemaleTrainersEnd - FemaleTrainers - 1
-	jr nc, .asm_4e950
+	jr nc, .female_trainer_loop
 	inc c
 
-.asm_4e958
+.finished
 	ld b, $0
 	add hl, bc
 	ld a, [hl]
@@ -45752,116 +32056,9 @@
 ; 4e980
 
 
-Function4e980: ; 4e980
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	call Function4e998
-	ld a, rSCX - $ff00
-	ld [hLCDStatCustom], a
-	call Function4e9ab
-	xor a
-	ld [hLCDStatCustom], a
-	pop af
-	ld [rSVBK], a
-	ret
-; 4e998
+INCLUDE "battle/sliding_intro.asm"
 
-Function4e998: ; 4e998
-	call Function4e9e5
-	ld a, $90
-	ld [hSCX], a
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld de, $e4e4
-	call DmgToCgbObjPals
-	ret
-; 4e9ab
 
-Function4e9ab: ; 4e9ab
-	ld d, $90
-	ld e, $72
-	ld a, $48
-	inc a
-.asm_4e9b2
-	push af
-.asm_4e9b3
-	ld a, [rLY]
-	cp $60
-	jr c, .asm_4e9b3
-	ld a, d
-	ld [hSCX], a
-	call Function4e9f1
-rept 2
-	inc e
-endr
-rept 2
-	dec d
-endr
-	pop af
-	push af
-	cp $1
-	jr z, .asm_4e9ce
-	push de
-	call Function4e9d6
-	pop de
-
-.asm_4e9ce
-	call DelayFrame
-	pop af
-	dec a
-	jr nz, .asm_4e9b2
-	ret
-; 4e9d6
-
-Function4e9d6: ; 4e9d6
-	ld hl, Sprites + 1
-	ld c, $12
-	ld de, $0004
-.asm_4e9de
-rept 2
-	dec [hl]
-endr
-	add hl, de
-	dec c
-	jr nz, .asm_4e9de
-	ret
-; 4e9e5
-
-Function4e9e5: ; 4e9e5
-	ld hl, LYOverrides
-	ld a, $90
-	ld bc, SCREEN_HEIGHT_PX
-	call ByteFill
-	ret
-; 4e9f1
-
-Function4e9f1: ; 4e9f1
-	ld hl, LYOverrides
-	ld a, d
-	ld c, $3e
-.asm_4e9f7
-	ld [hli], a
-	dec c
-	jr nz, .asm_4e9f7
-	ld a, e
-	ld c, $22
-.asm_4e9fe
-	ld [hli], a
-	dec c
-	jr nz, .asm_4e9fe
-	xor a
-	ld c, $30
-.asm_4ea05
-	ld [hli], a
-	dec c
-	jr nz, .asm_4ea05
-	ret
-; 4ea0a
-
-
-
 Function4ea0a: ; 4ea0a
 	ld a, c
 	push af
@@ -45869,23 +32066,27 @@
 	call MobileTextBorder
 	pop af
 	dec a
-	ld bc, $000c
-	ld hl, wdc1a
+	ld bc, $c
+	ld hl, w5_dc1a
 	call AddNTimes
 	ld de, wcd53
-	ld bc, $000c
-	ld a, $5
+	ld bc, $c
+	ld a, $5 ; BANK(w5_dc1a)
 	call FarCopyWRAM
+
 	ld a, [rSVBK]
 	push af
 	ld a, $1
 	ld [rSVBK], a
+
 	ld bc, wcd53
 	decoord 1, 14
 	callba Function11c0c6
+
 	pop af
 	ld [rSVBK], a
-	ld c, $b4
+
+	ld c, 180
 	call DelayFrames
 	ret
 ; 4ea44
@@ -45949,1384 +32150,14 @@
 
 SECTION "bank14", ROMX, BANK[$14]
 
-SelectMonFromParty: ; 50000
-	call DisableSpriteUpdates
-	xor a
-	ld [PartyMenuActionText], a
-	call WhiteBGMap
-	call Function5003f
-	call WaitBGMap
-	call SetPalettes
-	call DelayFrame
-	call PartyMenuSelect
-	call Function2b74
-	ret
-; 5001d
+INCLUDE "engine/party_menu.asm"
+INCLUDE "event/poisonstep.asm"
+INCLUDE "event/sweet_scent.asm"
+INCLUDE "event/squirtbottle.asm"
+INCLUDE "event/card_key.asm"
+INCLUDE "event/basement_key.asm"
+INCLUDE "event/sacred_ash.asm"
 
-
-Function5001d: ; 5001d
-	ld a, b
-	ld [PartyMenuActionText], a
-	call DisableSpriteUpdates
-	call WhiteBGMap
-	call Function5003f
-	call WaitBGMap
-	ld b, $a
-	call GetSGBLayout
-	call SetPalettes
-	call DelayFrame
-	call PartyMenuSelect
-	call Function2b74
-	ret
-; 5003f
-
-Function5003f: ; 5003f
-	call Function5004f
-	call Function50405
-	call Function503e0
-	call WritePartyMenuTilemap
-	call PrintPartyMenuText
-	ret
-; 5004f
-
-Function5004f: ; 5004f
-	call LoadFontsBattleExtra
-	callab Function8ad1 ; engine/color.asm
-	callab InefficientlyClear121BytesAtwc300
-	ret
-; 5005f
-
-
-WritePartyMenuTilemap: ; 0x5005f
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl] ; Disable text delay
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, " "
-	call ByteFill ; blank the tilemap
-	call Function50396 ; This reads from a pointer table???
-.asm_50077
-	ld a, [hli]
-	cp $ff
-	jr z, .asm_50084 ; 0x5007a $8
-	push hl
-	ld hl, Jumptable_50089
-	rst JumpTable
-	pop hl
-	jr .asm_50077 ; 0x50082 $f3
-.asm_50084
-	pop af
-	ld [Options], a
-	ret
-; 0x50089
-
-Jumptable_50089: ; 50089
-	dw Function5009b
-	dw Function500cf
-	dw Function50138
-	dw Function50176
-	dw Function501b2
-	dw Function501e0
-	dw Function5022f
-	dw Function502b1
-	dw Function50307
-; 5009b
-
-Function5009b: ; 5009b
-	hlcoord 3, 1
-	ld a, [PartyCount]
-	and a
-	jr z, .asm_500bf
-	ld c, a
-	ld b, $0
-.asm_500a7
-	push bc
-	push hl
-	push hl
-	ld hl, PartyMonNicknames
-	ld a, b
-	call GetNick
-	pop hl
-	call PlaceString
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_500a7
-
-.asm_500bf
-rept 2
-	dec hl
-endr
-	ld de, String_500c8
-	call PlaceString
-	ret
-; 500c8
-
-String_500c8: ; 500c8
-	db "CANCEL@"
-; 500cf
-
-
-Function500cf: ; 500cf
-	xor a
-	ld [wcda9], a
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, $0
-	hlcoord 11, 2
-.asm_500de
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_50103
-	push hl
-	call Function50117
-	pop hl
-	ld d, $6
-	ld b, $0
-	call DrawHPBar
-	ld hl, wcd9b
-	ld a, [wcda9]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	call SetHPPal
-	ld b, $fc
-	call GetSGBLayout
-
-.asm_50103
-	ld hl, wcda9
-	inc [hl]
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_500de
-	ld b, $a
-	call GetSGBLayout
-	ret
-; 50117
-
-Function50117: ; 50117
-	ld a, b
-	ld bc, PartyMon2 - PartyMon1
-	ld hl, PartyMon1HP
-	call AddNTimes
-	ld a, [hli]
-	or [hl]
-	jr nz, .asm_50129
-	xor a
-	ld e, a
-	ld c, a
-	ret
-
-.asm_50129
-	dec hl
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld e, a
-	predef Functionc699
-	ret
-; 50138
-
-Function50138: ; 50138
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, $0
-	hlcoord 13, 1
-.asm_50143
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_5016b
-	push hl
-	ld a, b
-	ld bc, PartyMon2 - PartyMon1
-	ld hl, PartyMon1HP
-	call AddNTimes
-	ld e, l
-	ld d, h
-	pop hl
-	push de
-	lb bc, 2, 3
-	call PrintNum
-	pop de
-	ld a, $f3
-	ld [hli], a
-rept 2
-	inc de
-endr
-	lb bc, 2, 3
-	call PrintNum
-
-.asm_5016b
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_50143
-	ret
-; 50176
-
-Function50176: ; 50176
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 8, 2
-.asm_50181
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_501a7
-	push hl
-	ld a, b
-	ld bc, PartyMon2 - PartyMon1
-	ld hl, PartyMon1Level
-	call AddNTimes
-	ld e, l
-	ld d, h
-	pop hl
-	ld a, [de]
-	cp 100 ; This is distinct from MAX_LEVEL.
-	jr nc, .asm_501a1
-	ld a, "<LV>"
-	ld [hli], a
-	ld bc, $4102
-.asm_501a1
-	lb bc, PRINTNUM_RIGHTALIGN | 1, 3
-	call PrintNum
-
-.asm_501a7
-	pop hl
-	ld de, SCREEN_WIDTH * 2
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_50181
-	ret
-; 501b2
-
-Function501b2: ; 501b2
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 5, 2
-.asm_501bd
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_501d5
-	push hl
-	ld a, b
-	ld bc, PartyMon2 - PartyMon1
-	ld hl, PartyMon1Status
-	call AddNTimes
-	ld e, l
-	ld d, h
-	pop hl
-	call Function50d0a
-
-.asm_501d5
-	pop hl
-	ld de, SCREEN_WIDTH * 2
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_501bd
-	ret
-; 501e0
-
-Function501e0: ; 501e0
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 2
-.asm_501eb
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_5020a
-	push hl
-	ld hl, PartySpecies
-	ld e, b
-	ld d, 0
-	add hl, de
-	ld a, [hl]
-	ld [CurPartySpecies], a
-	predef CanLearnTMHMMove
-	pop hl
-	call Function50215
-	call PlaceString
-
-.asm_5020a
-	pop hl
-	ld de, SCREEN_WIDTH * 2
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_501eb
-	ret
-; 50215
-
-Function50215: ; 50215
-	ld a, c
-	and a
-	jr nz, .asm_5021d
-	ld de, String_50226
-	ret
-
-.asm_5021d
-	ld de, String_50221
-	ret
-; 50221
-
-String_50221: ; 50221
-	db "ABLE@"
-; 50226
-
-String_50226: ; 50226
-	db "NOT ABLE@"
-; 5022f
-
-
-Function5022f: ; 5022f
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 2
-.asm_5023a
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_5025d
-	push hl
-	ld a, b
-	ld bc, PartyMon2 - PartyMon1
-	ld hl, PartyMon1Species
-	call AddNTimes
-	ld a, [hl]
-	dec a
-	ld e, a
-	ld d, 0
-	ld hl, EvosAttacksPointers
-rept 2
-	add hl, de
-endr
-	call Function50268
-	pop hl
-	call PlaceString
-
-.asm_5025d
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_5023a
-	ret
-; 50268
-
-Function50268: ; 50268
-	ld de, StringBuffer1
-	ld a, BANK(EvosAttacksPointers)
-	ld bc, 2
-	call FarCopyBytes
-	ld hl, StringBuffer1
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, StringBuffer1
-	ld a, BANK(EvosAttacks)
-	ld bc, $a
-	call FarCopyBytes
-	ld hl, StringBuffer1
-.asm_50287
-	ld a, [hli]
-	and a
-	jr z, .asm_5029f
-rept 2
-	inc hl
-endr
-	cp EVOLVE_ITEM
-	jr nz, .asm_50287
-rept 2
-	dec hl
-endr
-	ld a, [CurItem]
-	cp [hl]
-rept 2
-	inc hl
-endr
-	jr nz, .asm_50287
-	ld de, String_502a3
-	ret
-
-.asm_5029f
-	ld de, String_502a8
-	ret
-; 502a3
-
-String_502a3: ; 502a3
-	db "ABLE@"
-; 502a8
-String_502a8: ; 502a8
-	db "NOT ABLE@"
-; 502b1
-
-
-Function502b1: ; 502b1
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 2
-.asm_502bc
-	push bc
-	push hl
-	call Function50389
-	jr z, .asm_502e3
-	ld [CurPartySpecies], a
-	push hl
-	ld a, b
-	ld [CurPartyMon], a
-	xor a
-	ld [MonType], a
-	call GetGender
-	ld de, String_502fe
-	jr c, .asm_502df
-	ld de, String_502ee
-	jr nz, .asm_502df
-	ld de, String_502f5
-
-.asm_502df
-	pop hl
-	call PlaceString
-
-.asm_502e3
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_502bc
-	ret
-; 502ee
-
-String_502ee: ; 502ee
-	db "♂…MALE@"
-; 502f5
-
-String_502f5: ; 502f5
-	db "♀…FEMALE@"
-; 502fe
-
-String_502fe: ; 502fe
-	db "…UNKNOWN@"
-; 50307
-
-
-Function50307: ; 50307
-	ld a, [PartyCount]
-	and a
-	ret z
-	ld c, a
-	ld b, 0
-	hlcoord 12, 1
-.asm_50312
-	push bc
-	push hl
-	ld de, String_50372
-	call PlaceString
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop bc
-	inc b
-	dec c
-	jr nz, .asm_50312
-	ld a, l
-	ld e, $b
-	sub e
-	ld l, a
-	ld a, h
-	sbc $0
-	ld h, a
-	ld de, String_50379
-	call PlaceString
-	ld b, $3
-	ld c, $0
-	ld hl, DefaultFlypoint
-	ld a, [hl]
-.asm_5033b
-	push hl
-	push bc
-	hlcoord 12, 1
-.asm_50340
-	and a
-	jr z, .asm_5034a
-	ld de, $0028
-	add hl, de
-	dec a
-	jr .asm_50340
-
-.asm_5034a
-	ld de, String_5036b
-	push hl
-	call PlaceString
-	pop hl
-	pop bc
-	push bc
-	push hl
-	ld a, c
-	ld hl, Strings_50383
-	call GetNthString
-	ld d, h
-	ld e, l
-	pop hl
-	call PlaceString
-	pop bc
-	pop hl
-	inc hl
-	ld a, [hl]
-	inc c
-	dec b
-	ret z
-	jr .asm_5033b
-; 5036b
-
-String_5036b: ; 5036b
-	db " ばんめ  @" ; Place
-; 50372
-String_50372: ; 50372
-	db "さんかしない@" ; Cancel
-; 50379
-String_50379: ; 50379
-	db "けってい  やめる@" ; Quit
-; 50383
-Strings_50383: ; 50383
-	db "1@", "2@", "3@" ; 1st, 2nd, 3rd
-; 50389
-
-
-Function50389: ; 50389
-	ld a, PartySpecies % $100
-	add b
-	ld e, a
-	ld a, PartySpecies / $100
-	adc 0
-	ld d, a
-	ld a, [de]
-	cp EGG
-	ret
-; 50396
-
-Function50396: ; 50396
-	ld a, [PartyMenuActionText]
-	and $f0
-	jr nz, .asm_503ae
-	ld a, [PartyMenuActionText]
-	and $f
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_503b2
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-.asm_503ae
-	ld hl, Unknown_503c6
-	ret
-; 503b2
-
-Unknown_503b2: ; 503b2
-	dw Unknown_503c6
-	dw Unknown_503c6
-	dw Unknown_503c6
-	dw Unknown_503cc
-	dw Unknown_503c6
-	dw Unknown_503d1
-	dw Unknown_503d6
-	dw Unknown_503d6
-	dw Unknown_503c6
-	dw Unknown_503db
-; 503c6
-
-Unknown_503c6: db 0, 1, 2, 3, 4, $ff
-Unknown_503cc: db 0, 5, 3, 4, $ff
-Unknown_503d1: db 0, 6, 3, 4, $ff
-Unknown_503d6: db 0, 7, 3, 4, $ff
-Unknown_503db: db 0, 8, 3, 4, $ff
-; 503e0
-
-
-Function503e0: ; 503e0
-	ld hl, PartyCount
-	ld a, [hli]
-	and a
-	ret z
-	ld c, a
-	xor a
-	ld [hObjectStructIndexBuffer], a
-.asm_503ea
-	push bc
-	push hl
-	ld hl, Function8e83f
-	ld a, BANK(Function8e83f)
-	ld e, $0
-	rst FarCall
-	ld a, [hObjectStructIndexBuffer]
-	inc a
-	ld [hObjectStructIndexBuffer], a
-	pop hl
-	pop bc
-	dec c
-	jr nz, .asm_503ea
-	callab Function8cf69
-	ret
-; 50405
-
-Function50405: ; 50405
-	xor a
-	ld [wd0e3], a
-	ld de, Unknown_5044f
-	call Function1bb1
-	ld a, [PartyCount]
-	inc a
-	ld [wcfa3], a
-	dec a
-	ld b, a
-	ld a, [wd0d8]
-	and a
-	jr z, .asm_50422
-	inc b
-	cp b
-	jr c, .asm_50424
-
-.asm_50422
-	ld a, $1
-
-.asm_50424
-	ld [wcfa9], a
-	ld a, $3
-	ld [wcfa8], a
-	ret
-; 5042d
-
-Function5042d: ; 0x5042d
-	ld de, Unknown_5044f
-	call Function1bb1
-	ld a, [PartyCount]
-	ld [wcfa3], a
-	ld b, a
-	ld a, [wd0d8]
-	and a
-	jr z, .asm_50444
-	inc b
-	cp b
-	jr c, .asm_50446
-.asm_50444
-	ld a, $1
-.asm_50446
-	ld [wcfa9], a
-	ld a, $3
-	ld [wcfa8], a
-	ret
-; 5044f (14:444f)
-
-Unknown_5044f: ; 5044f
-; cursor y
-; cursor x
-; list length
-; ?
-; bit 6: animate sprites  bit 5: wrap around
-; ?
-; distance between items (hi: y, lo: x)
-; allowed buttons (mask)
-	db $01, $00, $00, $01, $60, $00, $20, $00
-; 50457
-
-PartyMenuSelect: ; 0x50457
-; sets carry if exitted menu.
-	call Function1bc9
-	call Function1bee
-	ld a, [PartyCount]
-	inc a
-	ld b, a
-	ld a, [wcfa9] ; menu selection?
-	cp b
-	jr z, .exitmenu ; CANCEL
-	ld [wd0d8], a
-	ld a, [hJoyLast]
-	ld b, a
-	bit 1, b
-	jr nz, .exitmenu ; B button?
-	ld a, [wcfa9]
-	dec a
-	ld [CurPartyMon], a
-	ld c, a
-	ld b, $0
-	ld hl, PartySpecies
-	add hl, bc
-	ld a, [hl]
-	ld [CurPartySpecies], a
-
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	and a
-	ret
-
-.exitmenu
-	ld de, SFX_READ_TEXT_2
-	call PlaySFX
-	call WaitSFX
-	scf
-	ret
-; 0x5049a
-
-
-PrintPartyMenuText: ; 5049a
-	hlcoord 0, 14
-	ld bc, $0212
-	call TextBox
-	ld a, [PartyCount]
-	and a
-	jr nz, .haspokemon
-	ld de, YouHaveNoPKMNString
-	jr .gotstring
-.haspokemon ; 504ae
-	ld a, [PartyMenuActionText]
-	and $f ; drop high nibble
-	ld hl, PartyMenuStrings
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld d, [hl]
-	ld e, a
-.gotstring ; 504be
-	ld a, [Options]
-	push af
-	set 4, a ; disable text delay
-	ld [Options], a
-	hlcoord 1, 16 ; Coord
-	call PlaceString
-	pop af
-	ld [Options], a
-	ret
-; 0x504d2
-
-PartyMenuStrings: ; 0x504d2
-	dw ChooseAMonString
-	dw UseOnWhichPKMNString
-	dw WhichPKMNString
-	dw TeachWhichPKMNString
-	dw MoveToWhereString
-	dw UseOnWhichPKMNString
-	dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString
-	dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString
-	dw ToWhichPKMNString
-
-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
-	db "Choose a ♀<PK><MN>.@"
-ChooseAMalePKMNString: ; 0x5053b    ; UNUSED
-	db "Choose a ♂<PK><MN>.@"
-ToWhichPKMNString: ; 0x50549
-	db "To which <PK><MN>?@"
-
-YouHaveNoPKMNString: ; 0x50556
-	db "You have no <PK><MN>!@"
-
-
-Function50566: ; 50566
-	ld a, [CurPartyMon]
-	ld hl, PartyMonNicknames
-	call GetNick
-	ld a, [PartyMenuActionText]
-	and $f
-	ld hl, Unknown_5057b
-	call Function505c1
-	ret
-; 5057b
-
-Unknown_5057b: ; 5057b
-	dw UnknownText_0x50594
-	dw UnknownText_0x5059e
-	dw UnknownText_0x505a3
-	dw UnknownText_0x505a8
-	dw UnknownText_0x50599
-	dw UnknownText_0x5058f
-	dw UnknownText_0x505ad
-	dw UnknownText_0x505b2
-	dw UnknownText_0x505b7
-	dw UnknownText_0x505bc
-; 5058f
-
-UnknownText_0x5058f: ; 0x5058f
-	; recovered @ HP!
-	text_jump UnknownText_0x1bc0a2
-	db "@"
-; 0x50594
-
-UnknownText_0x50594: ; 0x50594
-	; 's cured of poison.
-	text_jump UnknownText_0x1bc0bb
-	db "@"
-; 0x50599
-
-UnknownText_0x50599: ; 0x50599
-	; 's rid of paralysis.
-	text_jump UnknownText_0x1bc0d2
-	db "@"
-; 0x5059e
-
-UnknownText_0x5059e: ; 0x5059e
-	; 's burn was healed.
-	text_jump UnknownText_0x1bc0ea
-	db "@"
-; 0x505a3
-
-UnknownText_0x505a3: ; 0x505a3
-	; was defrosted.
-	text_jump UnknownText_0x1bc101
-	db "@"
-; 0x505a8
-
-UnknownText_0x505a8: ; 0x505a8
-	; woke up.
-	text_jump UnknownText_0x1bc115
-	db "@"
-; 0x505ad
-
-UnknownText_0x505ad: ; 0x505ad
-	; 's health returned.
-	text_jump UnknownText_0x1bc123
-	db "@"
-; 0x505b2
-
-UnknownText_0x505b2: ; 0x505b2
-	; is revitalized.
-	text_jump UnknownText_0x1bc13a
-	db "@"
-; 0x505b7
-
-UnknownText_0x505b7: ; 0x505b7
-	; grew to level @ !@ @
-	text_jump UnknownText_0x1bc14f
-	db "@"
-; 0x505bc
-
-UnknownText_0x505bc: ; 0x505bc
-	; came to its senses.
-	text_jump UnknownText_0x1bc16e
-	db "@"
-; 0x505c1
-
-
-Function505c1: ; 505c1
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [Options]
-	push af
-	set 4, a
-	ld [Options], a
-	call PrintText
-	pop af
-	ld [Options], a
-	ret
-; 505da
-
-DoPoisonStep:: ; 505da
-	ld a, [PartyCount]
-	and a
-	jr z, .asm_5062c
-	xor a
-	ld c, 7
-	ld hl, EngineBuffer1
-.asm_505e6
-	ld [hli], a
-	dec c
-	jr nz, .asm_505e6
-	xor a
-	ld [CurPartyMon], a
-.asm_505ee
-	call Function5062e
-	jr nc, .asm_50605
-	ld a, [CurPartyMon]
-	ld e, a
-	ld d, 0
-	ld hl, wd03f
-	add hl, de
-	ld [hl], c
-	ld a, [EngineBuffer1]
-	or c
-	ld [EngineBuffer1], a
-
-.asm_50605
-	ld a, [PartyCount]
-	ld hl, CurPartyMon
-	inc [hl]
-	cp [hl]
-	jr nz, .asm_505ee
-	ld a, [EngineBuffer1]
-	and $2
-	jr nz, .asm_50622
-	ld a, [EngineBuffer1]
-	and $1
-	jr z, .asm_5062c
-	call Function50658
-	xor a
-	ret
-
-.asm_50622
-	ld a, BANK(UnknownScript_0x50669)
-	ld hl, UnknownScript_0x50669
-	call CallScript
-	scf
-	ret
-
-.asm_5062c
-	xor a
-	ret
-; 5062e
-
-Function5062e: ; 5062e
-	ld a, PartyMon1Status - PartyMon1
-	call GetPartyParamLocation
-	ld a, [hl]
-	and 1 << PSN
-	ret z
-
-	ld a, PartyMon1HP - PartyMon1
-	call GetPartyParamLocation
-	ld a, [hli]
-	ld b, a
-	ld c, [hl]
-
-	or c
-	ret z
-
-	dec bc
-	ld [hl], c
-	dec hl
-	ld [hl], b
-
-	ld a, b
-	or c
-	jr nz, .not_fainted
-
-	ld a, PartyMon1Status - PartyMon1
-	call GetPartyParamLocation
-	ld [hl], 0
-	ld c, 2
-	scf
-	ret
-
-.not_fainted
-	ld c, 1
-	scf
-	ret
-; 50658
-
-Function50658: ; 50658
-	ld de, SFX_POISON
-	call PlaySFX
-	ld b, $2
-	predef Functioncbcdd
-	call DelayFrame
-	ret
-; 50669
-
-UnknownScript_0x50669: ; 50669
-	callasm Function50658
-	loadfont
-	callasm Function5067b
-	iffalse UnknownScript_0x50677
-	loadmovesprites
-	end
-; 50677
-
-UnknownScript_0x50677: ; 50677
-	farjump UnknownScript_0x124c8
-; 5067b
-
-Function5067b: ; 5067b
-	xor a
-	ld [CurPartyMon], a
-	ld de, wd03f
-.asm_50682
-	push de
-	ld a, [de]
-	and 2
-	jr z, .asm_5069c
-	ld c, HAPPINESS_POISONFAINT
-	callba ChangeHappiness
-	callba GetPartyNick
-	ld hl, PoisonFaintText
-	call PrintText
-
-.asm_5069c
-	pop de
-	inc de
-	ld hl, CurPartyMon
-	inc [hl]
-	ld a, [PartyCount]
-	cp [hl]
-	jr nz, .asm_50682
-	predef CheckPlayerPartyForFitPkmn
-	ld a, d
-	ld [ScriptVar], a
-	ret
-; 506b2
-
-PoisonFaintText: ; 506b2
-	text_jump UnknownText_0x1c0acc
-	db "@"
-; 506b7
-
-PoisonWhiteOutText: ; 506b7
-	text_jump UnknownText_0x1c0ada
-	db "@"
-; 506bc
-
-
-DoMovementFunctionc: ; 506bc
-	ld hl, UnknownScript_0x506c8
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 506c8
-
-UnknownScript_0x506c8: ; 0x506c8
-	reloadmappart
-	special UpdateTimePals
-	callasm GetPartyNick
-	writetext UnknownText_0x50726
-	closetext
-	callasm SweetScentEncounter
-	iffalse UnknownScript_0x506e9
-	checkflag ENGINE_BUG_CONTEST_TIMER
-	iftrue UnknownScript_0x506e5
-	battlecheck
-	startbattle
-	returnafterbattle
-	end
-; 0x506e5
-
-UnknownScript_0x506e5: ; 0x506e5
-	farjump BugCatchingContestBattleScript
-; 0x506e9
-
-UnknownScript_0x506e9: ; 0x506e9
-	writetext UnknownText_0x5072b
-	closetext
-	loadmovesprites
-	end
-; 0x506ef
-
-SweetScentEncounter: ; 506ef
-	callba CanUseSweetScent
-	jr nc, .no_battle
-	ld hl, StatusFlags2
-	bit 2, [hl]
-	jr nz, .not_in_bug_contest
-	callba GetMapEncounterRate
-	ld a, b
-	and a
-	jr z, .no_battle
-	callba ChooseWildEncounter
-	jr nz, .no_battle
-	jr .start_battle
-
-.not_in_bug_contest
-	callba ChooseWildEncounter_BugContest
-
-.start_battle
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.no_battle
-	xor a
-	ld [ScriptVar], a
-	ld [BattleType], a
-	ret
-; 50726
-
-UnknownText_0x50726: ; 0x50726
-	; used SWEET SCENT!
-	text_jump UnknownText_0x1c0b03
-	db "@"
-; 0x5072b
-
-UnknownText_0x5072b: ; 0x5072b
-	; Looks like there's nothing here…
-	text_jump UnknownText_0x1c0b1a
-	db "@"
-; 0x50730
-
-
-_Squirtbottle: ; 50730
-	ld hl, UnknownScript_0x5073c
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 5073c
-
-UnknownScript_0x5073c: ; 0x5073c
-	reloadmappart
-	special UpdateTimePals
-	callasm Function50753
-	iffalse UnknownScript_0x5074b
-	farjump WateredWeirdTreeScript
-; 0x5074b
-
-UnknownScript_0x5074b: ; 0x5074b
-	jumptext UnknownText_0x5074e
-; 0x5074e
-
-UnknownText_0x5074e: ; 0x5074e
-	; sprinkled water. But nothing happened…
-	text_jump UnknownText_0x1c0b3b
-	db "@"
-; 0x50753
-
-Function50753: ; 50753
-	ld a, [MapGroup]
-	cp GROUP_ROUTE_36
-	jr nz, .asm_50774
-
-	ld a, [MapNumber]
-	cp MAP_ROUTE_36
-	jr nz, .asm_50774
-
-	callba GetFacingObject
-	jr c, .asm_50774
-
-	ld a, d
-	cp $17
-	jr nz, .asm_50774
-
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.asm_50774
-	xor a
-	ld [ScriptVar], a
-	ret
-; 50779
-
-
-_CardKey: ; 50779
-; Are we even in the right map to use this?
-	ld a, [MapGroup]
-	cp GROUP_RADIO_TOWER_3F
-	jr nz, .nope
-
-	ld a, [MapNumber]
-	cp MAP_RADIO_TOWER_3F
-	jr nz, .nope
-; Are we facing the slot?
-	ld a, [PlayerDirection]
-	and $c
-	cp OW_UP
-	jr nz, .nope
-
-	call GetFacingTileCoord
-	ld a, d
-	cp 18
-	jr nz, .nope
-	ld a, e
-	cp 6
-	jr nz, .nope
-; Let's use the Card Key.
-	ld hl, .CardKeyScript
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-
-.nope
-	ld a, $0
-	ld [wd0ec], a
-	ret
-; 507af
-
-.CardKeyScript: ; 0x507af
-	loadmovesprites
-	farjump MapRadioTower3FSignpost2Script
-; 0x507b4
-
-
-_BasementKey: ; 507b4
-; Are we even in the right map to use this?
-	ld a, [MapGroup]
-	cp GROUP_WAREHOUSE_ENTRANCE
-	jr nz, .nope
-
-	ld a, [MapNumber]
-	cp MAP_WAREHOUSE_ENTRANCE
-	jr nz, .nope
-; Are we on the tile in front of the door?
-	call GetFacingTileCoord
-	ld a, d
-	cp 22
-	jr nz, .nope
-	ld a, e
-	cp 10
-	jr nz, .nope
-; Let's use the Basement Key
-	ld hl, .BasementKeyScript
-	call QueueScript
-	ld a, 1
-	ld [wd0ec], a
-	ret
-
-.nope
-	ld a, $0
-	ld [wd0ec], a
-	ret
-; 507e1
-
-.BasementKeyScript: ; 0x507e1
-	loadmovesprites
-	farjump BasementDoorScript
-; 0x507e6
-
-
-_SacredAsh: ; 507e6
-	ld a, $0
-	ld [wd0ec], a
-	call CheckAnyFaintedMon
-	ret nc
-
-	ld hl, SacredAshScript
-	call QueueScript
-	ld a, $1
-	ld [wd0ec], a
-	ret
-; 507fb
-
-CheckAnyFaintedMon: ; 507fb
-	ld de, PartyMon2 - PartyMon1
-	ld bc, PartySpecies
-	ld hl, PartyMon1HP
-	ld a, [PartyCount]
-	and a
-	ret z
-
-.loop
-	push af
-	push hl
-	ld a, [bc]
-	inc bc
-	cp EGG
-	jr z, .next
-
-	ld a, [hli]
-	or [hl]
-	jr z, .done
-
-.next
-	pop hl
-	add hl, de
-	pop af
-	dec a
-	jr nz, .loop
-	xor a
-	ret
-
-.done
-	pop hl
-	pop af
-	scf
-	ret
-; 50821
-
-SacredAshScript: ; 0x50821
-	special HealParty
-	reloadmappart
-	playsound SFX_WARP_TO
-	special FadeBlackBGMap
-	special FadeInBGMap
-	special FadeBlackBGMap
-	special FadeInBGMap
-	special FadeBlackBGMap
-	special FadeInBGMap
-	waitbutton
-	writetext UnknownText_0x50845
-	playsound SFX_CAUGHT_MON
-	waitbutton
-	closetext
-	loadmovesprites
-	end
-; 0x50845
-
-UnknownText_0x50845: ; 0x50845
-	; 's #MON were all healed!
-	text_jump UnknownText_0x1c0b65
-	db "@"
-; 0x5084a
-
 CopyPkmnToTempMon: ; 5084a
 ; gets the BaseData of a Pkmn
 ; and copys the PkmnStructure to TempMon
@@ -47340,11 +32171,11 @@
 
 	ld a, [MonType]
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	and a
 	jr z, .copywholestruct
 	ld hl, OTPartyMon1Species
-	ld bc, OTPartyMon2 - OTPartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	cp OTPARTYMON
 	jr z, .copywholestruct
 	ld bc, BOXMON_STRUCT_LENGTH
@@ -47355,7 +32186,7 @@
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld de, TempMon
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 
 .done
@@ -47374,21 +32205,21 @@
 ; 50893
 
 Function50893: ; 50893
-	ld hl, TempMonLevel - TempMon
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [CurPartyLevel], a
-	ld hl, TempMonMaxHP - TempMon
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, TempMonExp + 2 - TempMon
+	ld hl, MON_EXP + 2
 	add hl, bc
 	push bc
 	ld b, $1
 	predef CalcPkmnStats
 	pop bc
-	ld hl, TempMonHP - TempMon
+	ld hl, MON_HP
 	add hl, bc
 	ld d, h
 	ld e, l
@@ -47403,7 +32234,7 @@
 
 .asm_508c1
 	push bc
-	ld hl, TempMonMaxHP - TempMon
+	ld hl, MON_MAXHP
 	add hl, bc
 	ld bc, 2
 	call CopyBytes
@@ -47410,7 +32241,7 @@
 	pop bc
 
 .asm_508cd
-	ld hl, TempMonStatus - TempMon
+	ld hl, MON_STATUS
 	add hl, bc
 	xor a
 	ld [hli], a
@@ -47608,7 +32439,7 @@
 	ld c, e
 
 .asm_50b41
-	predef Functionc699
+	predef DrawPartyMenuHPBar
 	ld a, 6
 	ld d, a
 	ld c, a
@@ -47621,11 +32452,11 @@
 	push de
 	push hl
 	push hl
-	call DrawHPBar
+	call DrawBattleHPBar
 	pop hl
 
 ; Print HP
-	ld bc, $0015 ; move (1,1)
+	ld bc, $15 ; move (1,1)
 	add hl, bc
 	ld de, TempMonHP
 	ld a, [MonType]
@@ -47709,7 +32540,7 @@
 
 ; 0: PartyMon
 	ld hl, PartyMon1DVs
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [MonType]
 	and a
 	jr z, .PartyMon
@@ -47721,7 +32552,7 @@
 
 ; 2: sBoxMon
 	ld hl, sBoxMon1DVs
-	ld bc, sBoxMon2 - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	dec a
 	jr z, .sBoxMon
 
@@ -47848,12 +32679,12 @@
 	push bc
 	push hl
 	push de
-	ld hl, wcfa9
+	ld hl, MenuSelection2
 	ld a, [hl]
 	push af
 	ld [hl], b
 	push hl
-	callab Functionf8ec
+	callab GetMaxPPOfMove
 	pop hl
 	pop af
 	ld [hl], a
@@ -47916,7 +32747,7 @@
 	ret
 ; 50cdb
 
-Function50cdb: ; 50cdb
+Function50cdb: ; unreferenced predef
 	push hl
 	push hl
 	ld hl, PartyMonNicknames
@@ -47930,12 +32761,12 @@
 	cp EGG
 	jr z, .asm_50d09
 	push hl
-	ld bc, $fff4
+	ld bc, -12
 	add hl, bc
 	ld b, $0
 	call DrawEnemyHP
 	pop hl
-	ld bc, $0005
+	ld bc, 5
 	add hl, bc
 	push de
 	call PrintLevel
@@ -47946,7 +32777,7 @@
 ; 50d0a
 
 
-Function50d0a: ; 50d0a
+PlaceStatusString: ; 50d0a
 	push de
 rept 2
 	inc de
@@ -47957,10 +32788,10 @@
 	ld a, [de]
 	or b
 	pop de
-	jr nz, Function50d2e
+	jr nz, PlaceNonFaintStatus
 	push de
 	ld de, FntString
-	call Function50d25
+	call CopyStatusString
 	pop de
 	ld a, $1
 	and a
@@ -47971,7 +32802,7 @@
 	db "FNT@"
 ; 50d25
 
-Function50d25: ; 50d25
+CopyStatusString: ; 50d25
 	ld a, [de]
 	inc de
 	ld [hli], a
@@ -47983,31 +32814,31 @@
 	ret
 ; 50d2e
 
-Function50d2e: ; 50d2e
+PlaceNonFaintStatus: ; 50d2e
 	push de
 	ld a, [de]
 	ld de, PsnString
 	bit PSN, a
-	jr nz, .asm_50d53
+	jr nz, .place
 	ld de, BrnString
 	bit BRN, a
-	jr nz, .asm_50d53
+	jr nz, .place
 	ld de, FrzString
 	bit FRZ, a
-	jr nz, .asm_50d53
+	jr nz, .place
 	ld de, ParString
 	bit PAR, a
-	jr nz, .asm_50d53
+	jr nz, .place
 	ld de, SlpString
 	and SLP
-	jr z, .asm_50d59
+	jr z, .no_status
 
-.asm_50d53
-	call Function50d25
+.place
+	call CopyStatusString
 	ld a, $1
 	and a
 
-.asm_50d59
+.no_status
 	pop de
 	ret
 ; 50d5b
@@ -48132,35 +32963,35 @@
 ; 50e1b
 
 
-Function50e1b: ; 50e1b
+CalcLevel: ; 50e1b
 	ld a, [TempMonSpecies]
 	ld [CurSpecies], a
 	call GetBaseData
 	ld d, 1
-.asm_50e26
+.next_level
 	inc d
 	ld a, d
 	cp (MAX_LEVEL + 1) % $100
-	jr z, .asm_50e45
-	call Function50e47
+	jr z, .got_level
+	call CalcExpAtLevel
 	push hl
 	ld hl, TempMonExp + 2
-	ld a, [hMultiplicand + 2]
+	ld a, [hProduct + 3]
 	ld c, a
 	ld a, [hld]
 	sub c
-	ld a, [hMultiplicand + 1]
+	ld a, [hProduct + 2]
 	ld c, a
 	ld a, [hld]
 	sbc c
-	ld a, [hMultiplicand + 0]
+	ld a, [hProduct + 1]
 	ld c, a
 	ld a, [hl]
 	sbc c
 	pop hl
-	jr nc, .asm_50e26
+	jr nc, .next_level
 
-.asm_50e45
+.got_level
 	dec d
 	ret
 ; 50e47
@@ -48167,8 +32998,8 @@
 
 
 
-Function50e47: ; 50e47
-
+CalcExpAtLevel: ; 50e47
+; (a/b)*n**3 + c*n**2 + d*n - e
 	ld a, [BaseGrowthRate]
 rept 2
 	add a
@@ -48177,23 +33008,25 @@
 	ld b, 0
 	ld hl, GrowthRates
 	add hl, bc
-	call Function50eed
+; Cube the level
+	call .LevelSquared
 	ld a, d
 	ld [hMultiplier], a
 	call Multiply
 
+; Multiply by a
 	ld a, [hl]
 	and $f0
 	swap a
 	ld [hMultiplier], a
 	call Multiply
-
+; Divide by b
 	ld a, [hli]
 	and $f
 	ld [hDivisor], a
-	ld b, $4
+	ld b, 4
 	call Divide
-
+; Push the cubic term to the stack
 	ld a, [hQuotient + 0]
 	push af
 	ld a, [hQuotient + 1]
@@ -48200,13 +33033,13 @@
 	push af
 	ld a, [hQuotient + 2]
 	push af
-
-	call Function50eed
+; Square the level and multiply by the lower 7 bits of c
+	call .LevelSquared
 	ld a, [hl]
 	and $7f
 	ld [hMultiplier], a
 	call Multiply
-
+; Push the absolute value of the quadratic term to the stack
 	ld a, [hProduct + 1]
 	push af
 	ld a, [hProduct + 2]
@@ -48215,7 +33048,7 @@
 	push af
 	ld a, [hli]
 	push af
-
+; Multiply the level by d
 	xor a
 	ld [hMultiplicand + 0], a
 	ld [hMultiplicand + 1], a
@@ -48224,68 +33057,70 @@
 	ld a, [hli]
 	ld [hMultiplier], a
 	call Multiply
-
+; Subtract e
 	ld b, [hl]
 	ld a, [hProduct + 3]
 	sub b
-	ld [$ffb6], a
+	ld [hMultiplicand + 2], a
 	ld b, $0
 	ld a, [hProduct + 2]
 	sbc b
-	ld [$ffb5], a
+	ld [hMultiplicand + 1], a
 	ld a, [hProduct + 1]
 	sbc b
 	ld [hMultiplicand], a
-
+; If bit 7 of c is set, c is negative; otherwise, it's positive
 	pop af
 	and $80
-	jr nz, .asm_50ec8
-
+	jr nz, .subtract
+; Add c*n**2 to (d*n - e)
 	pop bc
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	add b
-	ld [$ffb6], a
+	ld [hMultiplicand + 2], a
 	pop bc
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	adc b
-	ld [$ffb5], a
+	ld [hMultiplicand + 1], a
 	pop bc
-	ld a, [hMultiplicand]
+	ld a, [hProduct + 1]
 	adc b
 	ld [hMultiplicand], a
-	jr .asm_50eda
+	jr .done_quadratic
 
-.asm_50ec8
+.subtract
+; Subtract c*n**2 from (d*n - e)
 	pop bc
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	sub b
-	ld [$ffb6], a
+	ld [hMultiplicand + 2], a
 	pop bc
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	sbc b
-	ld [$ffb5], a
+	ld [hMultiplicand + 1], a
 	pop bc
-	ld a, [hMultiplicand]
+	ld a, [hProduct + 1]
 	sbc b
 	ld [hMultiplicand], a
 
-.asm_50eda
+.done_quadratic
+; Add (a/b)*n**3 to (d*n - e +/- c*n**2)
 	pop bc
-	ld a, [$ffb6]
+	ld a, [hProduct + 3]
 	add b
-	ld [$ffb6], a
+	ld [hMultiplicand + 2], a
 	pop bc
-	ld a, [$ffb5]
+	ld a, [hProduct + 2]
 	adc b
-	ld [$ffb5], a
+	ld [hMultiplicand + 1], a
 	pop bc
-	ld a, [hMultiplicand]
+	ld a, [hProduct + 1]
 	adc b
 	ld [hMultiplicand], a
 	ret
 ; 50eed
 
-Function50eed: ; 50eed
+.LevelSquared: ; 50eed
 	xor a
 	ld [hMultiplicand + 0], a
 	ld [hMultiplicand + 1], a
@@ -48316,25 +33151,25 @@
 	growth_rate 5, 4,   0,   0,   0 ; Slow
 ; 50f12
 
-Function50f12:
+_SwitchPartyMons:
 	ld a, [wd0e3]
 	dec a
 	ld [wd1ec], a
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [Buffer2], a ; wd1eb (aliases: MovementType)
 	cp b
-	jr z, .asm_50f33
-	call Function50f62
+	jr z, .skip
+	call .SwapPartymonViaSRAM
 	ld a, [wd1ec]
-	call Function50f34
+	call .ClearSprite
 	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
-	call Function50f34
-.asm_50f33
+	call .ClearSprite
+.skip
 	ret
 
-Function50f34: ; 50f34 (14:4f34)
+.ClearSprite: ; 50f34 (14:4f34)
 	push af
 	hlcoord 0, 1
 	ld bc, 2 * SCREEN_WIDTH
@@ -48348,16 +33183,16 @@
 	call AddNTimes
 	ld de, $4
 	ld c, $4
-.asm_50f55
+.gfx_loop
 	ld [hl], $a0
 	add hl, de
 	dec c
-	jr nz, .asm_50f55
+	jr nz, .gfx_loop
 	ld de, SFX_SWITCH_POKEMON
 	call WaitPlaySFX
 	ret
 
-Function50f62: ; 50f62 (14:4f62)
+.SwapPartymonViaSRAM: ; 50f62 (14:4f62)
 	push hl
 	push de
 	push bc
@@ -48368,7 +33203,7 @@
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld l, a
 	ld h, $0
 	add hl, bc
@@ -48380,73 +33215,73 @@
 	ld [de], a
 	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
 	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, $30
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
-	ld de, DefaultFlypoint
-	ld bc, $30
+	ld de, wd002
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, $30
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop de
 	push hl
-	ld bc, $30
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	pop de
-	ld hl, DefaultFlypoint
-	ld bc, $30
+	ld hl, wd002
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call CopyBytes
 	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
 	ld hl, PartyMonOT
 	call SkipNames
 	push hl
-	call Function51036
-	ld a, [wd1ec]
+	call .CopyNameTowd002
+	ld a, [Buffer3]
 	ld hl, PartyMonOT
 	call SkipNames
 	pop de
 	push hl
-	call Function51039
+	call .CopyName
 	pop de
-	ld hl, DefaultFlypoint
-	call Function51039
+	ld hl, wd002
+	call .CopyName
 	ld hl, PartyMonNicknames
 	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
 	call SkipNames
 	push hl
-	call Function51036
+	call .CopyNameTowd002
 	ld hl, PartyMonNicknames
-	ld a, [wd1ec]
+	ld a, [Buffer3]
 	call SkipNames
 	pop de
 	push hl
-	call Function51039
+	call .CopyName
 	pop de
-	ld hl, DefaultFlypoint
-	call Function51039
-	ld hl, s0_a600
+	ld hl, wd002
+	call .CopyName
+	ld hl, sPartyScratch1
 	ld a, [Buffer2] ; wd1eb (aliases: MovementType)
-	ld bc, $2f
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	push hl
-	ld de, DefaultFlypoint
-	ld bc, $2f
-	ld a, BANK(s0_a600)
+	ld de, wd002
+	ld bc, SCRATCHMON_STRUCT_LENGTH
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
 	call CopyBytes
-	ld hl, s0_a600
-	ld a, [wd1ec]
-	ld bc, $2f
+	ld hl, sPartyScratch1
+	ld a, [Buffer3]
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	pop de
 	push hl
-	ld bc, $2f
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	pop de
-	ld hl, DefaultFlypoint
-	ld bc, $2f
+	ld hl, wd002
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call CopyBytes
 	call CloseSRAM
 	pop bc
@@ -48454,11 +33289,11 @@
 	pop hl
 	ret
 
-Function51036: ; 51036 (14:5036)
-	ld de, DefaultFlypoint
+.CopyNameTowd002: ; 51036 (14:5036)
+	ld de, wd002
 
-Function51039: ; 51039 (14:5039)
-	ld bc, $b
+.CopyName: ; 51039 (14:5039)
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ret
 
@@ -48503,7 +33338,7 @@
 	ld [hDividend + 2], a
 	ld a, 10
 	ld [hDivisor], a
-	ld b, $4
+	ld b, 4
 	call Divide
 
 ; Increment to get 1-26
@@ -48997,7 +33832,7 @@
 	dec a
 	ld [wd265], a
 	ld hl, sBoxMons
-	ld bc, sBoxMon1End - sBoxMon1
+	ld bc, BOXMON_STRUCT_LENGTH
 	ld de, wd018
 	call Function513e0
 	ld hl, wd01a
@@ -49035,7 +33870,7 @@
 	dec a
 	ld [wd265], a
 	ld hl, PartyMons
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld de, wd018
 	call Function513e0
 	ret
@@ -49590,7 +34425,7 @@
 	and 3
 	cp e
 	jr nz, .asm_80259
-	call Function224a ; CheckFallPit?
+	call WarpCheck ; CheckFallPit?
 	jr nc, .asm_80259
 
 	call StandInPlace
@@ -49809,24 +34644,24 @@
 	bit 0, [hl]
 	jr z, .asm_8039c
 
-	ld hl, $0007
+	ld hl, $7
 	add hl, bc
 	ld a, [hl]
 	cp $ff
 	jr nz, .asm_8039c
 
-	ld hl, $0006
+	ld hl, $6
 	add hl, bc
 	bit 6, [hl]
 	jr z, .asm_8039c
 
-	ld hl, $0005
+	ld hl, $5
 	add hl, bc
 	set 2, [hl]
 
 	ld a, [WalkingDirection]
 	ld d, a
-	ld hl, $0020
+	ld hl, $20
 	add hl, bc
 	ld a, [hl]
 	and $fc
@@ -49951,7 +34786,7 @@
 	push bc
 	ld a, PLAYER_NORMAL
 	ld [PlayerState], a
-	call Special_ReplaceKrisSprite ; UpdateSprites
+	call ReplaceKrisSprite ; UpdateSprites
 	pop bc
 	ret
 ; 80404
@@ -50284,7 +35119,7 @@
 ; 818f4
 
 Function818f4: ; 818f4
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and a
 	jr nz, Function81911
 	ld hl, PokemonPalettes
@@ -50297,7 +35132,7 @@
 	push hl
 	call Function81928
 	pop hl
-	ld bc, $0008
+	ld bc, 8
 	add hl, bc
 	pop bc
 	dec c
@@ -50313,7 +35148,7 @@
 	push hl
 	call Function81928
 	pop hl
-	ld bc, $0004
+	ld bc, 4
 	add hl, bc
 	pop bc
 	dec c
@@ -50372,15 +35207,15 @@
 Function8197c: ; 8197c
 	ld hl, DebugColorTestGFX + $10
 	ld de, VTiles2 tile $6a
-	ld bc, $0160
+	ld bc, $160
 	call CopyBytes
 	ld hl, DebugColorTestGFX
 	ld de, VTiles0
-	ld bc, $0010
+	ld bc, $10
 	call CopyBytes
-	call Functione51
+	call LoadStandardFont
 	ld hl, VTiles1
-	ld bc, $0800
+	lb bc, 8, 0
 .asm_8199d
 	ld a, [hl]
 	xor $ff
@@ -50402,7 +35237,7 @@
 	ld [rSVBK], a
 	ld hl, Palette_819f4
 	ld de, BGPals
-	ld bc, $0080
+	ld bc, $80
 	call CopyBytes
 	ld a, $80
 	ld [rBGPI], a
@@ -50580,7 +35415,7 @@
 
 Function81ac3: ; 81ac3
 ; Looping back around the pic set.
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and a
 	jr nz, .asm_81acc
 	ld a, NUM_POKEMON ; CELEBI
@@ -50629,7 +35464,7 @@
 	ld de, wd265
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
 	call PrintNum
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and a
 	jr nz, .asm_81b7a
 	ld a, $1
@@ -50640,13 +35475,13 @@
 	xor a
 	ld [wc2c6], a
 	hlcoord 12, 3
-	call Function378b
+	call _PrepMonFrontpic
 	ld de, VTiles2 tile $31
 	predef GetBackpic
 	ld a, $31
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 2, 4
-	ld bc, $0606
+	lb bc, 6, 6
 	predef FillBox
 	ld a, [wd003]
 	and a
@@ -50676,7 +35511,7 @@
 	callab GetTrainerPic
 	xor a
 	ld [TempEnemyMonSpecies], a
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 2, 3
 	lb bc, 7, 7
 	predef FillBox
@@ -50709,13 +35544,13 @@
 	push af
 	ld a, $6a
 	ld [hli], a
-	ld bc, $000f
+	ld bc, $f
 	ld a, $6b
 	call ByteFill
 	ld l, e
 	ld h, d
 	pop af
-	ld bc, $0028
+	ld bc, $28
 	call ByteFill
 	ret
 ; 81bf4
@@ -50731,7 +35566,7 @@
 	ld de, OverworldMap
 	add hl, de
 	ld de, wc608
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	xor a
 	ld [wcf64], a
@@ -50866,7 +35701,7 @@
 	ret
 
 .asm_81ce5
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	and a
 	ret nz
 	ld a, [wd003]
@@ -50986,7 +35821,7 @@
 
 Function81d8e: ; 81d8e
 	hlcoord 0, 10
-	ld bc, $00a0
+	ld bc, $a0
 	ld a, $6f
 	call ByteFill
 	hlcoord 2, 12
@@ -51108,7 +35943,7 @@
 ; 81e5e
 
 Function81e5e: ; 81e5e
-	ld bc, $000a
+	ld bc, $a
 	ld a, $6f
 	call ByteFill
 	ret
@@ -51189,7 +36024,7 @@
 	ld e, l
 	ld d, h
 	ld hl, wc608
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ret
 ; 81ee3
@@ -51389,9 +36224,9 @@
 	ld [wcf64], a
 	ld [wcf65], a
 	ld [wcf66], a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call ClearSprites
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function3200
 	xor a
 	ld [hBGMapMode], a
@@ -51413,16 +36248,16 @@
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, $7
 	call ByteFill
-	ld de, $0015
+	ld de, $15
 	ld a, $6c
 	call Function821d2
-	ld de, $001a
+	ld de, $1a
 	ld a, $6d
 	call Function821d2
-	ld de, $001f
+	ld de, $1f
 	ld a, $6e
 	call Function821d2
-	ld de, $0024
+	ld de, $24
 	ld a, $6f
 	call Function821d2
 	call Function821f4
@@ -51447,12 +36282,12 @@
 rept 4
 	ld [hli], a
 endr
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 rept 4
 	ld [hli], a
 endr
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 rept 4
 	ld [hli], a
@@ -51487,10 +36322,10 @@
 rept 3
 	add hl, hl
 endr
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	add hl, de
 	ld de, wc608
-	ld bc, $0008
+	ld bc, 8
 	call CopyBytes
 	ld de, wc608
 	call Function81ea5
@@ -51522,13 +36357,13 @@
 
 .asm_82253
 	ld [hl], a
-	ld de, $0015
+	ld de, $15
 	call Function821d8
-	ld de, $001a
+	ld de, $1a
 	call Function821d8
-	ld de, $001f
+	ld de, $1f
 	call Function821d8
-	ld de, $0024
+	ld de, $24
 	call Function821d8
 	ld a, [rSVBK]
 	push af
@@ -51536,16 +36371,16 @@
 	ld [rSVBK], a
 	ld hl, BGPals
 	ld a, [wcf64]
-	ld bc, $0008
+	ld bc, 8
 	call AddNTimes
 	ld de, wc608
-	ld bc, $0008
+	ld bc, 8
 	call CopyBytes
 	pop af
 	ld [rSVBK], a
 	ld a, $2
 	ld [hBGMapMode], a
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	ld a, $1
 	ld [hBGMapMode], a
@@ -51566,12 +36401,12 @@
 	ld [rSVBK], a
 	ld hl, BGPals
 	ld a, [wcf64]
-	ld bc, $0008
+	ld bc, 8
 	call AddNTimes
 	ld e, l
 	ld d, h
 	ld hl, wc608
-	ld bc, $0008
+	ld bc, 8
 	call CopyBytes
 	hlcoord 1, 0
 	ld de, wc608
@@ -51764,7 +36599,7 @@
 
 Function84000: ; 84000
 	ld hl, OverworldMap
-	ld bc, $040c
+	lb bc, 4, 12
 	xor a
 	call Function842ab
 	xor a
@@ -51951,17 +36786,18 @@
 	ret nz
 	ld a, [wca88]
 	cp $ff
-	jr nz, .asm_84156
+	jr nz, .printer_connected
 	ld a, [wca89]
 	cp $ff
-	jr z, .asm_84172
-.asm_84156
+	jr z, .printer_error
+
+.printer_connected
 	ld a, [wca88]
 	cp $81
-	jr nz, .asm_84172
+	jr nz, .printer_error
 	ld a, [wca89]
 	cp $0
-	jr nz, .asm_84172
+	jr nz, .printer_error
 	ld hl, wc2d4
 	set 1, [hl]
 	ld a, $5
@@ -51968,7 +36804,8 @@
 	ld [wca8a], a
 	call Function84059
 	ret
-.asm_84172
+
+.printer_error
 	ld a, $ff
 	ld [wca88], a
 	ld [wca89], a
@@ -52030,11 +36867,11 @@
 	ld a, $1
 	ld [wc2d5], a
 	ld a, $88
-	ld [rSB], a ; $ff00+$1
+	ld [rSB], a
 	ld a, $1
-	ld [rSC], a ; $ff00+$2
+	ld [rSC], a
 	ld a, $81
-	ld [rSC], a ; $ff00+$2
+	ld [rSC], a
 	ret
 
 Function841e2: ; 841e2 (21:41e2)
@@ -52071,7 +36908,7 @@
 	ret
 
 Function84219: ; 84219 (21:4219)
-	ld hl, $0
+	ld hl, 0
 	ld bc, $4
 	ld de, wca82
 	call Function8423c
@@ -52323,7 +37160,7 @@
 	ret
 
 Function843a8: ; 843a8 (21:43a8)
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld [wca88], a
 	ld a, $0
 	call Function843db
@@ -52331,7 +37168,7 @@
 	ret
 
 Function843b6: ; 843b6 (21:43b6)
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld [wca89], a
 	xor a
 	ld [wc2d5], a
@@ -52356,15 +37193,15 @@
 	ret
 
 Function843db: ; 843db (21:43db)
-	ld [rSB], a ; $ff00+$1
+	ld [rSB], a
 	ld a, $1
-	ld [rSC], a ; $ff00+$2
+	ld [rSC], a
 	ld a, $81
-	ld [rSC], a ; $ff00+$2
+	ld [rSC], a
 	ret
 
 Function843e6: ; 843e6 (21:43e6)
-	ld a, [rSB] ; $ff00+$1
+	ld a, [rSB]
 	ld [wca89], a
 	xor a
 	ld [wc2d5], a
@@ -52410,7 +37247,7 @@
 ; 84425
 
 Function84425: ; 84425
-	call Function222a
+	call ReturnToMapFromSubmenu
 	call Function84753
 	ret
 ; 8442c
@@ -52449,7 +37286,7 @@
 	call Function843f0
 	jr c, .asm_8449d
 	call Function84411
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	xor a
 	ld [hBGMapMode], a
@@ -52499,18 +37336,18 @@
 	ld [$ffac], a
 	ld [wd003], a
 	call Function8474c
-	ld a, [rIE] ; $ff00+$ff
+	ld a, [rIE]
 	push af
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	ld a, $9
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	ld hl, hVBlank
 	ld a, [hl]
 	push af
 	ld [hl], $4
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function84817
 	ld a, $10
 	call Function84419
@@ -52517,10 +37354,10 @@
 	call Function84559
 	jr c, .asm_84545
 	call Function84411
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function8486f
 	ld a, $0
 	call Function84419
@@ -52527,10 +37364,10 @@
 	call Function84559
 	jr c, .asm_84545
 	call Function84411
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function84893
 	ld a, $0
 	call Function84419
@@ -52537,10 +37374,10 @@
 	call Function84559
 	jr c, .asm_84545
 	call Function84411
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function848b7
 	ld a, $3
 	call Function84419
@@ -52550,9 +37387,9 @@
 	ld [hVBlank], a
 	call Function84411
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	pop af
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	call Function84425
 	pop af
 	ld [wcf65], a
@@ -52692,7 +37529,7 @@
 	call Function843f0
 	jr c, .asm_84671
 	call Function84411
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	xor a
 	ld [hBGMapMode], a
@@ -52744,7 +37581,7 @@
 	call Function843f0
 	jr c, .asm_846e2
 	call Function84411
-	ld c, $c
+	ld c, 12
 	call DelayFrames
 	call LoadTileMapToTempTileMap
 	xor a
@@ -52846,34 +37683,35 @@
 Function84757: ; 84757
 	ld a, [wca88]
 	cp -1
-	jr nz, .c_directly_below_e5
+	jr nz, .printer_connected
 	ld a, [wca89]
 	cp -1
-	jr z, .asm_8477f
+	jr z, .error_2
 
-.c_directly_below_e5
+.printer_connected
 	ld a, [wca89]
-	and $e0
-	ret z
+	and %11100000
+	ret z ; no error
+
 	bit 7, a
-	jr nz, .asm_8477b
+	jr nz, .error_1
 	bit 6, a
-	jr nz, .asm_84777
-	ld a, $6
-	jr .asm_84781
+	jr nz, .error_4
+	ld a, 6 ; error 3
+	jr .load_text_index
 
-.asm_84777
-	ld a, $7
-	jr .asm_84781
+.error_4
+	ld a, 7 ; error 4
+	jr .load_text_index
 
-.asm_8477b
-	ld a, $4
-	jr .asm_84781
+.error_1
+	ld a, 4 ; error 1
+	jr .load_text_index
 
-.asm_8477f
-	ld a, $5
+.error_2
+	ld a, 5 ; error 2
 
-.asm_84781
+.load_text_index
 	ld [wcbf8], a
 	ret
 ; 84785
@@ -52886,12 +37724,12 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 5
-	ld bc, $0a12
+	lb bc, 10, 18
 	call TextBox
 	pop af
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_84807
+	ld hl, PrinterStatusStringPointers
 rept 2
 	add hl, de
 endr
@@ -52902,7 +37740,7 @@
 	ld a, BANK(GBPrinterStrings)
 	call FarString
 	hlcoord 2, 15
-	ld de, String_847f5
+	ld de, String_PressBToCancel
 	call PlaceString
 	ld a, $1
 	ld [hBGMapMode], a
@@ -52924,7 +37762,7 @@
 	pop af
 	ld e, a
 	ld d, 0
-	ld hl, Unknown_84807
+	ld hl, PrinterStatusStringPointers
 rept 2
 	add hl, de
 endr
@@ -52935,7 +37773,7 @@
 	ld a, BANK(GBPrinterStrings)
 	call FarString
 	hlcoord 4, 15
-	ld de, String_847f5
+	ld de, String_PressBToCancel
 	call PlaceString
 	ld a, $1
 	ld [hBGMapMode], a
@@ -52944,19 +37782,19 @@
 	ret
 ; 847f5
 
-String_847f5:
+String_PressBToCancel:
 	db "Press B to Cancel@"
 ; 84807
 
-Unknown_84807: ; 84807
-	dw String_1dc275
-	dw String_1dc276
-	dw String_1dc289
-	dw String_1dc29c
-	dw String_1dc2ad
-	dw String_1dc2e2
-	dw String_1dc317
-	dw String_1dc34c
+PrinterStatusStringPointers: ; 84807
+	dw String_1dc275 ; @
+	dw String_1dc276 ; CHECKING LINK
+	dw String_1dc289 ; TRANSMITTING
+	dw String_1dc29c ; PRINTING
+	dw String_1dc2ad ; error 1
+	dw String_1dc2e2 ; error 2
+	dw String_1dc317 ; error 3
+	dw String_1dc34c ; error 4
 ; 84817
 
 Function84817: ; 84817 (21:4817)
@@ -52977,7 +37815,7 @@
 	ld de, String_84865
 	call PlaceString
 	ld a, [wd007]
-	ld bc, 9
+	ld bc, BOX_NAME_LENGTH
 	ld hl, wBoxNames
 	call AddNTimes
 	ld d, h
@@ -53102,7 +37940,7 @@
 	ld bc, $372
 	add hl, bc
 	ld bc, $b
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	call AddNTimes
 	ld e, l
 	ld d, h
@@ -53120,13 +37958,13 @@
 	ld bc, $35
 	add hl, bc
 	ld bc, $20
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	call AddNTimes
 	ld a, [hl]
 	pop hl
 	call Function383d
 .ok2
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	inc [hl]
 	pop de
 	pop hl
@@ -53153,7 +37991,7 @@
 	ld bc, $2b
 	add hl, bc
 	ld bc, $20
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	call AddNTimes
 	ld de, TempMonDVs
 	ld a, [hli]
@@ -53161,7 +37999,7 @@
 	inc de
 	ld a, [hli]
 	ld [de], a
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld [CurPartyMon], a
 	ld a, $3
 	ld [MonType], a
@@ -53299,12 +38137,12 @@
 	ld [MusicFadeIDHi], a
 	ld a, $a
 	ld [MusicFade], a
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	xor a
 	ld [VramState], a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	callba Function4e8c2
-	ld c, $8
+	ld c, 8
 	call DelayFrames
 	call DisableSpriteUpdates
 	ld a, SPAWN_RED
@@ -53322,10 +38160,10 @@
 	ld [MusicFadeIDHi], a
 	ld a, 10
 	ld [MusicFade], a
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	xor a
 	ld [VramState], a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	callba Function4e881
 	ld c, 100
 	jp DelayFrames
@@ -53355,7 +38193,7 @@
 	cp 6
 	jr nc, .done
 	ld hl, wc608 + 1
-	ld bc, $0010
+	ld bc, $10
 	call AddNTimes
 	ld a, [hl]
 	cp -1
@@ -53374,7 +38212,7 @@
 	ld a, $4
 	ld [MusicFade], a
 	call FadeToWhite
-	ld c, $8
+	ld c, 8
 	call DelayFrames
 	ret
 ; 8650c
@@ -53426,18 +38264,18 @@
 
 	ld a, c
 	ld hl, PartyMons
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	ld c, l
 	ld b, h
 
-	ld hl, PartyMon1Species - PartyMon1
+	ld hl, MON_SPECIES
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
 	inc de
 
-	ld hl, PartyMon1ID - PartyMon1
+	ld hl, MON_ID
 	add hl, bc
 	ld a, [hli]
 	ld [de], a
@@ -53446,7 +38284,7 @@
 	ld [de], a
 	inc de
 
-	ld hl, PartyMon1DVs - PartyMon1
+	ld hl, MON_DVS
 	add hl, bc
 	ld a, [hli]
 	ld [de], a
@@ -53455,7 +38293,7 @@
 	ld [de], a
 	inc de
 
-	ld hl, PartyMon1Level - PartyMon1
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
@@ -53488,7 +38326,7 @@
 
 Function865b5: ; 865b5
 	push hl
-	call WhiteBGMap
+	call ClearBGPalettes
 	callba Function4e906
 	pop hl
 	ld a, [hli]
@@ -53510,9 +38348,9 @@
 	ld de, VTiles2 tile $31
 	predef GetBackpic
 	ld a, $31
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 6, 6
-	ld bc, $0606
+	lb bc, 6, 6
 	predef FillBox
 	ld a, $d0
 	ld [hSCY], a
@@ -53532,7 +38370,7 @@
 	ld a, " "
 	call ByteFill
 	hlcoord 6, 5
-	call Function378b
+	call _PrepMonFrontpic
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
@@ -53621,7 +38459,7 @@
 	cp $6
 	jr nc, .asm_866a7
 	ld hl, wc608 + 1
-	ld bc, $0010
+	ld bc, $10
 	call AddNTimes
 	ld a, [hl]
 	cp $ff
@@ -53633,7 +38471,7 @@
 
 .asm_866a9
 	push hl
-	call WhiteBGMap
+	call ClearBGPalettes
 	pop hl
 	call Function86748
 	ld a, [wc608]
@@ -53747,7 +38585,7 @@
 	xor a
 	ld [wc2c6], a
 	hlcoord 6, 5
-	call Function378b
+	call _PrepMonFrontpic
 	ld a, [CurPartySpecies]
 	cp EGG
 	jr z, .asm_867f8
@@ -53797,7 +38635,7 @@
 ; 86810
 
 Function86810: ; 86810
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld hl, VTiles2 tile $63
 	ld de, FontExtra + $d0
 	lb bc, BANK(FontExtra), 1
@@ -53808,7 +38646,7 @@
 	call ByteFill
 	callba GetPlayerBackpic
 	ld a, $31
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 6, 6
 	lb bc, 6, 6
 	predef FillBox
@@ -53832,7 +38670,7 @@
 	call ByteFill
 	callba Function88840
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 12, 5
 	lb bc, 7, 7
 	predef FillBox
@@ -53846,10 +38684,10 @@
 	xor a
 	ld [hBGMapMode], a
 	hlcoord 0, 2
-	ld bc, $0809
+	lb bc, 8, 9
 	call TextBox
 	hlcoord 0, 12
-	ld bc, $0412
+	lb bc, 4, 18
 	call TextBox
 	hlcoord 2, 4
 	ld de, PlayerName
@@ -53958,9 +38796,9 @@
 .GotGender
 	call LoadMenuDataHeader
 	call InterpretMenu2
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
-	call Function1db8
+	call CopyNameFromMenu
 	call WriteBackup
 	ret
 ; 882b5
@@ -54148,7 +38986,7 @@
 
 ; Draw
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 6, 4
 	lb bc, 7, 7
 	predef FillBox
@@ -54211,7 +39049,7 @@
 	ret
 ; 8c7d4
 
-Function8c7d4: ; 8c7d4
+PlayWhirlpoolSound: ; 8c7d4
 	call WaitSFX
 	ld de, SFX_SURF
 	call PlaySFX
@@ -54220,7 +39058,7 @@
 ; 8c7e1
 
 BlindingFlash: ; 8c7e1
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	ld hl, StatusFlags
 	set 2, [hl]
 	callba Function8c0e5
@@ -54228,15 +39066,15 @@
 	ld b, $9
 	call GetSGBLayout
 	callba Function49409
-	callba FadeInBGMap
+	callba FadeInPalettes
 	ret
 ; 8c80a
 
 ShakeHeadbuttTree: ; 8c80a
 	callba Function8cf53
-	ld de, GFX_8c9cc
+	ld de, CutGrassGFX
 	ld hl, VTiles1
-	lb bc, BANK(GFX_8c9cc), 4
+	lb bc, BANK(CutGrassGFX), 4
 	call Request2bpp
 	ld de, HeadbuttTreeGFX
 	ld hl, VTiles1 tile $04
@@ -54245,7 +39083,7 @@
 	call Function8cad3
 	ld a, $1b
 	call Function3b2a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], $84
 	ld a, $90
@@ -54270,13 +39108,13 @@
 	jr .loop
 
 .done
-	call Function2173
+	call OverworldTextModeSwitch
 	call WaitBGMap
 	xor a
 	ld [hBGMapMode], a
 	callba Function8cf53
 	ld hl, Sprites + $90
-	ld bc, $0010
+	ld bc, $10
 	xor a
 	call ByteFill
 	ld de, Font
@@ -54283,7 +39121,7 @@
 	ld hl, VTiles1
 	lb bc, BANK(Font), $c
 	call Get1bpp
-	call Special_ReplaceKrisSprite
+	call ReplaceKrisSprite
 	ret
 ; 8c893
 
@@ -54324,39 +39162,38 @@
 	dwcoord 8 - 2, 8     ; DOWN
 	dwcoord 8 + 2, 8     ; UP
 ; 8c940
-; 8c940
 
-Function8c940: ; 8c940
+OWCutAnimation: ; 8c940
 	ld a, e
 	and $1
 	ld [wJumptableIndex], a
-	call Function8c96d
+	call .LoadCutGFX
 	call WaitSFX
 	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
 	call PlaySFX
-.asm_8c952
+.loop
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_8c96c
+	jr nz, .finish
 	ld a, $90
 	ld [wc3b5], a
 	callab Function8cf7a
-	call Function8ca0c
+	call OWCutJumptable
 	call DelayFrame
-	jr .asm_8c952
+	jr .loop
 
-.asm_8c96c
+.finish
 	ret
 ; 8c96d
 
-Function8c96d: ; 8c96d
-	callab Function8cf53
-	ld de, GFX_8c9cc
+.LoadCutGFX: ; 8c96d
+	callab Function8cf53 ; pointless to farcall
+	ld de, CutGrassGFX
 	ld hl, VTiles1
-	lb bc, BANK(GFX_8c9cc), 4
+	lb bc, BANK(CutGrassGFX), 4
 	call Request2bpp
 	ld de, CutTreeGFX
-	ld hl, VTiles1 + $40
+	ld hl, VTiles1 tile $4
 	lb bc, BANK(CutTreeGFX), 4
 	call Request2bpp
 	ret
@@ -54363,18 +39200,18 @@
 ; 8c98c
 
 CutTreeGFX: ; c898c
-INCBIN "gfx/unknown/08c98c.2bpp"
+INCBIN "gfx/misc/cut_tree.2bpp"
 ; c89cc
 
-GFX_8c9cc: ; 8c9cc
-INCBIN "gfx/unknown/08c9cc.2bpp"
+CutGrassGFX: ; 8c9cc
+INCBIN "gfx/misc/cut_grass.2bpp"
 ; 8ca0c
 
-Function8ca0c: ; 8ca0c
+OWCutJumptable: ; 8ca0c
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_8ca1b
+	ld hl, .jumptable
 rept 2
 	add hl, de
 endr
@@ -54385,7 +39222,7 @@
 ; 8ca1b
 
 
-Jumptable_8ca1b: ; 8ca1b (23:4a1b)
+.jumptable: ; 8ca1b (23:4a1b)
 	dw Function8ca23
 	dw Function8ca3c
 	dw Function8ca5c
@@ -54425,7 +39262,7 @@
 
 Function8ca5c: ; 8ca5c (23:4a5c)
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld hl, wJumptableIndex
 	inc [hl]
 
@@ -54460,7 +39297,7 @@
 	ret
 
 Function8ca8e: ; 8ca8e (23:4a8e)
-	ld de, $0
+	ld de, 0
 	ld a, [wd197]
 	bit 0, a
 	jr z, .asm_8ca9a
@@ -54616,9 +39453,9 @@
 
 Function8cb9b: ; 8cb9b (23:4b9b)
 	callab Function8cf53
-	ld de, GFX_8c9cc
+	ld de, CutGrassGFX
 	ld hl, VTiles1 tile $00
-	lb bc, BANK(GFX_8c9cc), 4
+	lb bc, BANK(CutGrassGFX), 4
 	call Request2bpp
 	ld a, [CurPartyMon]
 	ld hl, PartySpecies
@@ -54730,7 +39567,7 @@
 .done
 	pop af
 	ld [hVBlank], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	xor a
 	ld [hLCDStatCustom], a
 	ld [hLCDStatCustom + 1], a
@@ -54787,7 +39624,7 @@
 ; 8ccc9
 
 Function8ccc9: ; 8ccc9
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call DisableLCD
 	callab Function8cf53
@@ -54810,7 +39647,7 @@
 	ld hl, VTiles0
 	ld c, $4
 	call Request2bpp
-	ld hl, $00c0
+	ld hl, $c0
 	add hl, de
 	ld d, h
 	ld e, l
@@ -54918,11 +39755,11 @@
 
 Function8cda6: ; 8cda6
 	ld hl, LYOverrides
-	ld bc, $0090
+	ld bc, $90
 	ld a, [wd192]
 	call ByteFill
 	ld hl, LYOverridesBackup
-	ld bc, $0090
+	ld bc, $90
 	ld a, [wd192]
 	call ByteFill
 	ld a, $43
@@ -54936,25 +39773,25 @@
 
 	; bushes
 	ld hl, VBGMap0
-	ld bc, $0080
+	ld bc, 8 tiles
 	ld a, $2
 	call ByteFill
 
 	; train
 	ld hl, VBGMap0 tile $08
-	ld bc, $0140
+	ld bc, 20 tiles
 	xor a
 	call ByteFill
 
 	; more bushes
 	ld hl, VBGMap0 tile $1c
-	ld bc, $0080
+	ld bc, 8 tiles
 	ld a, $2
 	call ByteFill
 
 	; train window
-	ld hl, $9907
-	ld bc, $0006
+	ld hl, VBGMap0 tile $10 + 7
+	ld bc, 6
 	ld a, $4
 	call ByteFill
 
@@ -54995,7 +39832,7 @@
 
 Function8ce19: ; 8ce19
 	ld d, $55
-	ld a, [wd195]
+	ld a, [wd194 + 1]
 	ld e, a
 	ld b, $15
 	ld a, [rSVBK]
@@ -55012,7 +39849,7 @@
 	ld [rSVBK], a
 	ld a, b
 	call Function3b2a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], $0
 	call Function8ce14
@@ -55165,7 +40002,7 @@
 
 Function8cf53: ; 8cf53
 	ld hl, wc300
-	ld bc, $00c1
+	ld bc, $c1
 .asm_8cf59
 	ld [hl], $0
 	inc hl
@@ -55200,18 +40037,18 @@
 ; 8cf7a
 
 Function8cf7a: ; 8cf7a
-	ld hl, wPartyMonMenuIconAnims
-	ld e, 10 ; Do this first loop 10 times
+	ld hl, wc314
+	ld e, 10 ; There are 10 structs here.
 
 .loop
 	ld a, [hl]
 	and a
-	jr z, .next ; Done with this iteration
+	jr z, .next ; This struct is deinitialized.
 	ld c, l
 	ld b, h
 	push hl
 	push de
-	call Function8d24b
+	call Function8d24b ; Uses a massive jumptable
 	call LoadBouncingMonIcon
 	pop de
 	pop hl
@@ -55218,10 +40055,11 @@
 	jr c, .done
 
 .next
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 	dec e
 	jr nz, .loop
+
 	ld a, [wc3b5]
 	ld l, a
 	ld h, Sprites / $0100
@@ -55228,7 +40066,7 @@
 
 .loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd)
 	ld a, l
-	cp SpritesEnd % $0100
+	cp SpritesEnd % $100
 	jr nc, .done
 	xor a
 	ld [hli], a
@@ -55239,7 +40077,7 @@
 ; 8cfa8
 
 Function8cfa8: ; 8cfa8 (23:4fa8)
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	ld e, 10
 
 .loop
@@ -55250,7 +40088,7 @@
 	ld b, h
 	push hl
 	push de
-	call Function8d24b
+	call Function8d24b ; Uses a massive jumptable
 	call LoadBouncingMonIcon
 	pop de
 	pop hl
@@ -55257,7 +40095,7 @@
 	jr c, .done
 
 .next
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 	dec e
 	jr nz, .loop
@@ -55264,10 +40102,11 @@
 
 	ld a, [wc3b5]
 	ld l, a
-	ld h, Sprites / $100
-.loop2
+	ld h, (Sprites + $40) / $100
+
+.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40)
 	ld a, l
-	cp 4 * 16
+	cp (Sprites + $40) % $100
 	jr nc, .done
 	xor a
 	ld [hli], a
@@ -55277,18 +40116,21 @@
 	ret
 
 Function8cfd6:: ; 8cfd6
+; Find if there's any room in the wc314 array, which is 10x16
 	push de
 	push af
-	ld hl, wPartyMonMenuIconAnims
-	ld e, 2 * 4 + 2 ; 4 tiles for each frame, then one frame each for mail and item
+	ld hl, wc314
+	ld e, 10
 .loop
 	ld a, [hl]
 	and a
 	jr z, .found
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 	dec e
 	jr nz, .loop
+; We've reached the end.  There is no more room here.
+; Return carry.
 	pop af
 	pop de
 	scf
@@ -55295,8 +40137,11 @@
 	ret
 
 .found
+; Back up the structure address to bc.
 	ld c, l
 	ld b, h
+; Value [wc3b4] is initially set to -1. Set it to
+; the number of objects loaded into this array.
 	ld hl, wc3b4
 	inc [hl]
 	ld a, [hl]
@@ -55305,6 +40150,7 @@
 	inc [hl]
 
 .initialized
+; Get row a of Unknown_8d1c4, copy the pointer into de
 	pop af
 	ld e, a
 	ld d, 0
@@ -55314,11 +40160,13 @@
 endr
 	ld e, l
 	ld d, h
+; Set hl to the first field (field 0) in the current structure.
 	ld hl, 0
 	add hl, bc
+; Load the index.
 	ld a, [wc3b4]
 	ld [hli], a
-; read from the table
+; Copy the table entry to the next two fields.
 	ld a, [de]
 	ld [hli], a
 	inc de
@@ -55325,17 +40173,21 @@
 	ld a, [de]
 	ld [hli], a
 	inc de
+; Look up the third field from the table in the wc300 array (10x2).
+; Take the value and load it in 
 	ld a, [de]
-	call Function8d109
+	call LookUpInwDict_c300
 	ld [hli], a
 	pop de
-
-	ld hl, $0004
+; Set hl to field 4.  Kinda pointless, because we're presumably already here.
+	ld hl, $4
 	add hl, bc
+; Load the original value of de into here.
 	ld a, e
 	ld [hli], a
 	ld a, d
 	ld [hli], a
+; load 0 into the next four fields
 	xor a
 rept 2
 	ld [hli], a
@@ -55344,21 +40196,25 @@
 rept 2
 	ld [hli], a
 endr
+; load -1 into the next field
 	dec a
 	ld [hli], a
+; load 0 into the last five fields
 	xor a
 rept 4
 	ld [hli], a
 endr
 	ld [hl], a
+; back up the address of the first field to wc3b8
 	ld a, c
 	ld [wc3b8], a
 	ld a, b
-	ld [wc3b9], a
+	ld [wc3b8 + 1], a
 	ret
 ; 8d036
 
 Function8d036: ; 8d036
+; Clear the index field of the struct in bc.
 	ld hl, 0
 	add hl, bc
 	ld [hl], $0
@@ -55367,9 +40223,10 @@
 
 
 Function8d03d: ; 8d03d (23:503d)
-	ld hl, wPartyMonMenuIconAnims
+; Clear the index field of every struct in the wc314 array.
+	ld hl, wc314
 	ld bc, $10
-	ld e, $a
+	ld e, 10
 	xor a
 .loop
 	ld [hl], a
@@ -55383,9 +40240,9 @@
 ; Populate Sprites with the bouncing mon icons
 	call Function8d0ec
 	call Function8d132
-	cp $fd
+	cp EGG
 	jr z, .done
-	cp $fc
+	cp NUM_POKEMON + 1
 	jr z, .almost
 	call Function8d1a2
 	ld a, [wc3ba]
@@ -55505,7 +40362,7 @@
 Function8d0ec: ; 8d0ec
 	xor a
 	ld [wc3b8], a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld a, [hli]
 	ld [wc3ba], a
@@ -55520,12 +40377,13 @@
 	ret
 ; 8d109
 
-Function8d109: ; 8d109
+LookUpInwDict_c300: ; 8d109
+; a = wDict_c300[a] if a in wDict_c300 else 0
 	push hl
 	push bc
-	ld hl, wc300
+	ld hl, wDict_c300
 	ld b, a
-	ld c, $a
+	ld c, 10
 .loop
 	ld a, [hli]
 	cp b
@@ -55546,13 +40404,13 @@
 ; 8d120
 
 Function8d120:: ; 8d120
-	ld hl, $0001
+	ld hl, $1
 	add hl, bc
 	ld [hl], a
-	ld hl, $0008
+	ld hl, $8
 	add hl, bc
 	ld [hl], $0
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc
 	ld [hl], $ff
 	ret
@@ -55561,7 +40419,7 @@
 
 Function8d132: ; 8d132
 .loop
-	ld hl, $0008
+	ld hl, $8
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -55573,7 +40431,7 @@
 	jr .skip
 
 .ok
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc
 	inc [hl]
 	call Function8d189
@@ -55586,10 +40444,10 @@
 	ld a, [hl]
 	push hl
 	and $3f
-	ld hl, $0009
+	ld hl, $9
 	add hl, bc
 	add [hl]
-	ld hl, $0008
+	ld hl, $8
 	add hl, bc
 	ld [hl], a
 	pop hl
@@ -55604,10 +40462,10 @@
 
 .minus_1
 	xor a
-	ld hl, $0008
+	ld hl, $8
 	add hl, bc
 	ld [hl], a
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc
 rept 2
 	dec [hl]
@@ -55616,11 +40474,11 @@
 
 .minus_2
 	xor a
-	ld hl, $0008
+	ld hl, $8
 	add hl, bc
 	ld [hl], a
 	dec a
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc
 	ld [hl], a
 	jr .loop
@@ -55629,7 +40487,7 @@
 Function8d189: ; 8d189
 	; Get the [bc+10]th entry in the data table
 	; indexed at [bc+1] in Unknown_8d6e6
-	ld hl, $0001
+	ld hl, $1
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
@@ -55640,7 +40498,7 @@
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
-	ld hl, $000a
+	ld hl, $a
 	add hl, bc
 	ld l, [hl]
 	ld h, 0
@@ -55683,56 +40541,56 @@
 ; 8d1c4
 
 Unknown_8d1c4: ; 8d1c4
-	db $01, $01, $00 ; 00
-	db $07, $04, $00 ; 01
-	db $08, $05, $05 ; 02
-	db $0a, $06, $00 ; 03
-	db $0b, $07, $06 ; 04
-	db $0c, $08, $06 ; 05
-	db $0d, $09, $07 ; 06
-	db $0e, $0a, $07 ; 07
-	db $10, $0b, $07 ; 08
-	db $08, $0c, $05 ; 09
-	db $11, $00, $00 ; 0a
-	db $12, $0d, $08 ; 0b
-	db $12, $0e, $08 ; 0c
-	db $12, $0f, $08 ; 0d
-	db $13, $10, $00 ; 0e
-	db $15, $00, $00 ; 0f
-	db $16, $11, $00 ; 10
-	db $17, $12, $00 ; 11
-	db $18, $12, $00 ; 12
-	db $19, $13, $00 ; 13
-	db $1a, $14, $00 ; 14
-	db $1b, $00, $00 ; 15
-	db $1d, $15, $00 ; 16
-	db $1e, $00, $00 ; 17
-	db $1d, $17, $00 ; 18
-	db $1f, $00, $00 ; 19
-	db $24, $19, $00 ; 1a
-	db $25, $00, $00 ; 1b
-	db $20, $13, $00 ; 1c
-	db $26, $1a, $00 ; 1d
-	db $2d, $00, $00 ; 1e
-	db $2e, $00, $00 ; 1f
-	db $2f, $00, $00 ; 20
-	db $30, $00, $00 ; 21
-	db $31, $00, $00 ; 22
-	db $32, $1b, $00 ; 23
-	db $33, $1c, $00 ; 24
-	db $34, $00, $00 ; 25
-	db $35, $1d, $00 ; 26
-	db $37, $1e, $00 ; 27
-	db $38, $1e, $00 ; 28
-	db $39, $20, $00 ; 29
-	db $3f, $21, $00 ; 2a
-	db $3e, $22, $00 ; 2b
-	db $40, $00, $00 ; 2c
+	db $01, JUMPTABLE_8D24B_FUNCTION_01, $00 ; 00
+	db $07, JUMPTABLE_8D24B_FUNCTION_04, $00 ; 01
+	db $08, JUMPTABLE_8D24B_FUNCTION_05, $05 ; 02
+	db $0a, JUMPTABLE_8D24B_FUNCTION_06, $00 ; 03
+	db $0b, JUMPTABLE_8D24B_FUNCTION_07, $06 ; 04
+	db $0c, JUMPTABLE_8D24B_FUNCTION_08, $06 ; 05
+	db $0d, JUMPTABLE_8D24B_FUNCTION_09, $07 ; 06
+	db $0e, JUMPTABLE_8D24B_FUNCTION_0A, $07 ; 07
+	db $10, JUMPTABLE_8D24B_FUNCTION_0B, $07 ; 08
+	db $08, JUMPTABLE_8D24B_FUNCTION_0C, $05 ; 09
+	db $11, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0a
+	db $12, JUMPTABLE_8D24B_FUNCTION_0D, $08 ; 0b
+	db $12, JUMPTABLE_8D24B_FUNCTION_0E, $08 ; 0c
+	db $12, JUMPTABLE_8D24B_FUNCTION_0F, $08 ; 0d
+	db $13, JUMPTABLE_8D24B_FUNCTION_10, $00 ; 0e
+	db $15, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0f
+	db $16, JUMPTABLE_8D24B_FUNCTION_11, $00 ; 10
+	db $17, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 11
+	db $18, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 12
+	db $19, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 13
+	db $1a, JUMPTABLE_8D24B_FUNCTION_14, $00 ; 14
+	db $1b, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 15
+	db $1d, JUMPTABLE_8D24B_FUNCTION_15, $00 ; 16
+	db $1e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 17
+	db $1d, JUMPTABLE_8D24B_FUNCTION_17, $00 ; 18
+	db $1f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 19
+	db $24, JUMPTABLE_8D24B_FUNCTION_19, $00 ; 1a
+	db $25, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1b
+	db $20, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 1c
+	db $26, JUMPTABLE_8D24B_FUNCTION_1A, $00 ; 1d
+	db $2d, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1e
+	db $2e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1f
+	db $2f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 20
+	db $30, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 21
+	db $31, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 22
+	db $32, JUMPTABLE_8D24B_FUNCTION_1B, $00 ; 23
+	db $33, JUMPTABLE_8D24B_FUNCTION_1C, $00 ; 24
+	db $34, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 25
+	db $35, JUMPTABLE_8D24B_FUNCTION_1D, $00 ; 26
+	db $37, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 27
+	db $38, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 28
+	db $39, JUMPTABLE_8D24B_FUNCTION_20, $00 ; 29
+	db $3f, JUMPTABLE_8D24B_FUNCTION_21, $00 ; 2a
+	db $3e, JUMPTABLE_8D24B_FUNCTION_22, $00 ; 2b
+	db $40, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 2c
 ; 8d24b
 
 
 Function8d24b: ; 8d24b
-	ld hl, $0002
+	ld hl, $2 ; field 2, see the second column in the above table
 	add hl, bc
 	ld e, [hl]
 	ld d, 0
@@ -55789,8 +40647,8 @@
 	ret
 
 .one: ; 8d2a2 (23:52a2)
-	ld a, [wcfa9]
-	ld hl, $0
+	ld a, [MenuSelection2]
+	ld hl, 0
 	add hl, bc
 	cp [hl]
 	jr z, .two
@@ -55840,8 +40698,8 @@
 	ret
 
 .three: ; 8d2ea (23:52ea)
-	ld a, [wcfa9]
-	ld hl, $0
+	ld a, [MenuSelection2]
+	ld hl, 0
 	add hl, bc
 	cp [hl]
 	jr z, .asm_8d2fb
@@ -55870,44 +40728,44 @@
 	ld hl, 0
 	add hl, bc
 	ld a, [hl]
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	and $3
 	ld [hl], a
 	inc [hl]
 	swap a
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld [hl], a
 
 .four_one: ; 8d321
-	ld hl, $0004
+	ld hl, $4
 	add hl, bc
 	ld a, [hl]
 	cp $a4
 	jr nc, .asm_8d356
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	add $4
-	ld hl, $0004
+	ld hl, $4
 	add hl, bc
 	ld [hl], a
-	ld hl, $0005
+	ld hl, $5
 	add hl, bc
 	inc [hl]
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	ld a, [hl]
 	sla a
 	sla a
 	ld d, $2
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld a, [hl]
 	add $3
 	ld [hl], a
 	call Function8d6de
-	ld hl, $0007
+	ld hl, $7
 	add hl, bc
 	ld [hl], a
 	ret
@@ -56127,10 +40985,10 @@
 .sixteen_zero: ; 8d493
 	ld a, $14
 	call Function8d120
-	ld hl, $000b
+	ld hl, $b
 	add hl, bc
 	ld [hl], $2
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld [hl], $20
 	ret
@@ -56137,7 +40995,7 @@
 ; 8d4a5
 
 .sixteen_two: ; 8d4a5
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld a, [hl]
 	and a
@@ -56147,12 +41005,12 @@
 
 .asm_8d4af
 	call Function8d6d8
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld [hl], $40
 
 .sixteen_three: ; 8d4b8
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld a, [hl]
 	cp $30
@@ -56160,7 +41018,7 @@
 	dec [hl]
 	ld d, $28
 	call Function8d6de
-	ld hl, $0007
+	ld hl, $7
 	add hl, bc
 	ld [hl], a
 	ret
@@ -56172,13 +41030,13 @@
 ; 8d4d5
 
 .sixteen_one: ; 8d4d5
-	ld hl, $000b
+	ld hl, $b
 	add hl, bc
 	ld [hl], $4
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld [hl], $30
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	ld [hl], $24
 	ret
@@ -56185,29 +41043,29 @@
 ; 8d4e8
 
 .sixteen_four: ; 8d4e8
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	ld a, [hl]
 	and a
 	jr z, .asm_8d51c
 	ld d, a
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld a, [hl]
 	call Function8e72c
-	ld hl, $0007
+	ld hl, $7
 	add hl, bc
 	ld [hl], a
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	inc [hl]
 	ld a, [hl]
 	and $3f
 	ret nz
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld [hl], $20
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	ld a, [hl]
 	sub $c
@@ -56218,7 +41076,7 @@
 
 .asm_8d51c
 	xor a
-	ld hl, $0007
+	ld hl, $7
 	add hl, bc
 	ld [hl], a
 	call Function8d6d8
@@ -56531,7 +41389,7 @@
 ; 8d6d8 (23:56d8)
 
 Function8d6d8: ; 8d6d8
-	ld hl, $000b
+	ld hl, $b
 	add hl, bc
 	inc [hl]
 	ret
@@ -58181,7 +43039,7 @@
 	push bc
 	ld a, [hObjectStructIndexBuffer]
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	pop bc
 	ld a, [hl]
@@ -58289,6 +43147,7 @@
 	ld [CurIcon], a
 	call Function8e9db
 	ld a, [hObjectStructIndexBuffer]
+; and $f \ swap a
 rept 4
 	add a
 endr
@@ -58321,7 +43180,7 @@
 	ret
 
 Function8e94c: ; 8e94c (23:694c)
-	callba Function50117
+	callba PlacePartymonHPBar
 	call GetHPPal
 	ld e, d
 	ld d, 0
@@ -58475,13 +43334,13 @@
 	ld a, [wLinkMode]
 	cp LINK_MOBILE
 	jp nz, Request2bpp
-	jp Functiondc9
+	jp Get2bpp_2
 ; 8ea4a
 
 Function8ea4a: ; 8ea4a
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	ld e, $6
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld d, a
 .loop
 	ld a, [hl]
@@ -58499,13 +43358,13 @@
 	push hl
 	ld c, l
 	ld b, h
-	ld hl, $0002
+	ld hl, $2
 	add hl, bc
 	ld [hl], a
 	pop hl
 
 .next
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 	dec e
 	jr nz, .loop
@@ -58513,7 +43372,7 @@
 ; 8ea71
 
 Function8ea71: ; 8ea71
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	ld e, $6
 .loop
 	ld a, [hl]
@@ -58535,7 +43394,7 @@
 ; 8ea8c (23:6a8c)
 
 Function8ea8c: ; 8ea8c
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	ld e, $6
 	ld a, [wd0e3]
 	ld d, a
@@ -58595,8 +43454,8 @@
 	ld b, $8
 	call GetSGBLayout
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call Functione51
+	ld [hBGMapMode], a
+	call LoadStandardFont
 	ld de, GFX_908fb
 	ld hl, VTiles2 tile $00
 	lb bc, BANK(GFX_908fb), 1
@@ -58634,7 +43493,7 @@
 	ld [hl], $2
 	hlcoord 4, 9
 	call DisplayHourOClock
-	ld c, $a
+	ld c, 10
 	call DelayFrames
 
 .SetHourLoop
@@ -58686,7 +43545,7 @@
 	call Function658
 	ld hl, OakText_ResponseToSetTime
 	call PrintText
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	pop af
 	ld [hInMenu], a
 	ret
@@ -58693,13 +43552,13 @@
 
 .ClearScreen: ; 90783 (24:4783)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	hlcoord 0, 0
 	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
 	xor a
 	call ByteFill
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 SetHour: ; 90795 (24:4795)
@@ -58781,7 +43640,7 @@
 	ld [de], a
 	inc de
 	push de
-	ld hl, $0003
+	ld hl, $3
 	add hl, de
 	ld a, [de]
 	inc de
@@ -58797,7 +43656,7 @@
 ; 90810
 
 SetMinutes: ; 90810 (24:4810)
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and A_BUTTON
 	jr nz, .asm_90857
 	ld hl, hJoyLast
@@ -58992,12 +43851,12 @@
 	lb bc, BANK(GFX_9090b), 1
 	call Request1bpp
 	xor a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 .asm_90936
 	hlcoord 0, 12
 	lb bc, 4, 18
 	call TextBox
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld hl, UnknownText_0x90a3f
 	call PrintText
 	hlcoord 9, 3
@@ -59011,7 +43870,7 @@
 	hlcoord 10, 5
 	call Function909de
 	call Function321c
-	ld c, $a
+	ld c, 10
 	call DelayFrames
 .asm_9096a
 	call JoyTextDelay
@@ -59023,10 +43882,10 @@
 	call PrintText
 	call YesNoBox
 	jr c, .asm_90936
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld [StringBuffer2], a
 	call Function663
-	call Functione51
+	call LoadStandardFont
 	pop af
 	ld [hInMenu], a
 	ret
@@ -59159,12 +44018,12 @@
 UnknownText_0x90a6c: ; 90a6c
 	start_asm
 	call UpdateTime
-	ld a, [hHours] ; $ff00+$94
+	ld a, [hHours]
 	ld b, a
-	ld a, [hMinutes] ; $ff00+$96
+	ld a, [hMinutes]
 	ld c, a
 	decoord 1, 14
-	callba Function1dd6bb
+	callba PrintHoursMins
 	ld hl, TextJump_DSTIsThatOK
 	ret
 ; 90a83 (24:4a83)
@@ -59195,7 +44054,7 @@
 	ld a, [hMinutes]
 	ld c, a
 	decoord 1, 14
-	callba Function1dd6bb
+	callba PrintHoursMins
 	ld hl, UnknownText_0x90ab7
 	ret
 ; 90ab7
@@ -59381,7 +44240,7 @@
 	ld [hInMenu], a
 	pop af
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	xor a
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
@@ -59392,7 +44251,7 @@
 	ret
 
 Function90bea: ; 90bea (24:4bea)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
@@ -59624,12 +44483,12 @@
 	ret
 
 Function90e00: ; 90e00 (24:4e00)
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	jr z, .asm_90e0e
 	ld a, $2
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld c, $3
+	ld [hBGMapMode], a
+	ld c, 3
 	call DelayFrames
 .asm_90e0e
 	call WaitBGMap
@@ -59691,7 +44550,7 @@
 	ld de, RadioTilemapRLE
 	call Function914bb
 	hlcoord 0, 12
-	ld bc, $412
+	lb bc, 4, 18
 	call TextBox
 	ret
 ; 90e82
@@ -59700,7 +44559,7 @@
 	ld de, PhoneTilemapRLE
 	call Function914bb
 	hlcoord 0, 12
-	ld bc, $412
+	lb bc, 4, 18
 	call TextBox
 	call Function90e98
 	call Function912d8
@@ -59857,10 +44716,10 @@
 
 Function90f7b: ; 90f7b (24:4f7b)
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call Function90f86
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Function90f86: ; 90f86 (24:4f86)
@@ -59867,12 +44726,12 @@
 	hlcoord 3, 5
 	lb bc, 5, 14
 	call ClearBox
-	ld a, [hHours] ; $ff00+$94
+	ld a, [hHours]
 	ld b, a
-	ld a, [hMinutes] ; $ff00+$96
+	ld a, [hMinutes]
 	ld c, a
 	decoord 6, 8
-	callba Function1dd6bb
+	callba PrintHoursMins
 	ld hl, UnknownText_0x90faf
 	bccoord 6, 6
 	call PlaceWholeStringInBoxAtOnce
@@ -60023,7 +44882,7 @@
 .asm_91079
 	ld a, b
 	call Function3b2a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], $10
 	pop af
@@ -60031,10 +44890,10 @@
 	push bc
 	callba GetLandmarkCoords
 	pop bc
-	ld hl, $0004
+	ld hl, $4
 	add hl, bc
 	ld [hl], e
-	ld hl, $0005
+	ld hl, $5
 	add hl, bc
 	ld [hl], d
 	ret
@@ -60045,10 +44904,10 @@
 	ld de, 0
 	ld a, $d
 	call Function3b2a
-	ld hl, $0003
+	ld hl, $3
 	add hl, bc
 	ld [hl], $4
-	ld hl, $0002
+	ld hl, $2
 	add hl, bc
 	ld [hl], $0
 	pop af
@@ -60079,10 +44938,10 @@
 	ld e, a
 	callba GetLandmarkCoords
 	pop bc
-	ld hl, $0004
+	ld hl, $4
 	add hl, bc
 	ld [hl], e
-	ld hl, $0005
+	ld hl, $5
 	add hl, bc
 	ld [hl], d
 	ret
@@ -60307,7 +45166,7 @@
 ; 0x91256
 
 Function91256: ; 91256 (24:5256)
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and A_BUTTON | B_BUTTON
 	ret z
 	callba HangUp
@@ -60706,7 +45565,7 @@
 
 
 Function914ab: ; 914ab (24:54ab)
-	ld hl, wPartyMonMenuIconAnims + 16
+	ld hl, wc314 + 16
 	ld bc, $90
 	xor a
 	call ByteFill
@@ -60781,7 +45640,7 @@
 	push af
 	xor a
 	ld [VramState], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call DisableLCD
@@ -60836,7 +45695,7 @@
 	ld [hInMenu], a
 	pop af
 	ld [Options], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 919b0
 
@@ -60913,7 +45772,7 @@
 .asm_91a11
 	callba Function91ae1
 	ld a, $7
-	ld bc, $0006
+	ld bc, 6
 	hlcoord 1, 0
 	call ByteFill
 	hlcoord 0, 0
@@ -60925,7 +45784,7 @@
 	hlcoord 7, 2
 	ld [hl], $26
 	ld a, $7
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	hlcoord 8, 2
 	call ByteFill
 	hlcoord 19, 2
@@ -60987,7 +45846,7 @@
 .jump_return
 	push de
 	hlcoord 0, 12
-	ld bc, $0412
+	lb bc, 4, 18
 	call TextBox
 	hlcoord 1, 14
 	ld [hl], $72
@@ -61042,927 +45901,12 @@
 ; 91af3
 
 
-_FlyMap: ; 91af3
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld hl, hInMenu
-	ld a, [hl]
-	push af
-	ld [hl], $1
-	xor a
-	ld [hBGMapMode], a
-	callba Function8cf53
-	call Function91ff2
-	ld de, GFX_922e1
-	ld hl, VTiles2 tile $30
-	lb bc, BANK(GFX_922e1), 6
-	call Request1bpp
-	call FlyMap
-	call Function91c8f
-	ld b, $2
-	call GetSGBLayout
-	call SetPalettes
-.loop
-	call JoyTextDelay
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .pressedB
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .pressedA
-	call FlyMapScroll
-	call GetMapCursorCoordinates
-	callba Function8cf69
-	call DelayFrame
-	jr .loop
+INCLUDE "engine/flypoints.asm"
 
-.pressedB
-	ld a, -1
-	jr .exit
-
-.pressedA
-	ld a, [DefaultFlypoint]
-	ld l, a
-	ld h, 0
-	add hl, hl
-	ld de, Flypoints + 1
-	add hl, de
-	ld a, [hl]
-
-.exit
-	ld [DefaultFlypoint], a
-	pop af
-	ld [hInMenu], a
-	call WhiteBGMap
-	ld a, $90
-	ld [hWY], a
+Function92311: ; unreferenced
 	xor a
-	ld [hBGMapAddress], a
-	ld a, VBGMap0 / $100
-	ld [hBGMapAddress + 1], a
-	ld a, [DefaultFlypoint]
-	ld e, a
-	ret
-; 91b73
-
-FlyMapScroll: ; 91b73
-	ld a, [StartFlypoint]
-	ld e, a
-	ld a, [EndFlypoint]
-	ld d, a
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .ScrollNext
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .ScrollPrev
-	ret
-
-.ScrollNext
-	ld hl, DefaultFlypoint
-	ld a, [hl]
-	cp d
-	jr nz, .NotAtEndYet
-	ld a, e
-	dec a
-	ld [hl], a
-
-.NotAtEndYet
-	inc [hl]
-	call CheckIfVisitedFlypoint
-	jr z, .ScrollNext
-	jr .Finally
-
-.ScrollPrev
-	ld hl, DefaultFlypoint
-	ld a, [hl]
-	cp e
-	jr nz, .NotAtStartYet
-	ld a, d
-	inc a
-	ld [hl], a
-
-.NotAtStartYet
-	dec [hl]
-	call CheckIfVisitedFlypoint
-	jr z, .ScrollPrev
-
-.Finally
-	call TownMapBubble
-	call WaitBGMap
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 91bb5
-
-TownMapBubble: ; 91bb5
-; Draw the bubble containing the location text in the town map HUD
-
-; Top-left corner
-	hlcoord 1, 0
-	ld a, $30
-	ld [hli], a
-
-; Top row
-	ld bc, 16
-	ld a, " "
-	call ByteFill
-
-; Top-right corner
-	ld a, $31
-	ld [hl], a
-	hlcoord 1, 1
-
-
-; Middle row
-	ld bc, 18
-	ld a, " "
-	call ByteFill
-
-
-; Bottom-left corner
-	hlcoord 1, 2
-	ld a, $32
-	ld [hli], a
-
-; Bottom row
-	ld bc, 16
-	ld a, " "
-	call ByteFill
-
-; Bottom-right corner
-	ld a, $33
-	ld [hl], a
-
-
-; Print "Where?"
-	hlcoord 2, 0
-	ld de, .Where
-	call PlaceString
-
-; Print the name of the default flypoint
-	call .Name
-
-; Up/down arrows
-	hlcoord 18, 1
-	ld [hl], $34	
-	ret
-
-.Where
-	db "Where?@"
-
-.Name
-; We need the map location of the default flypoint
-	ld a, [DefaultFlypoint]
-	ld l, a
-	ld h, 0
-	add hl, hl ; two bytes per flypoint
-	ld de, Flypoints
-	add hl, de
-	ld e, [hl]
-
-	callba GetLandmarkName
-
-	hlcoord 2, 1
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-; 91c17
-
-GetMapCursorCoordinates: ; 91c17
-	ld a, [DefaultFlypoint]
-	ld l, a
-	ld h, $0
-	add hl, hl
-	ld de, Flypoints
-	add hl, de
-	ld e, [hl]
-	callba GetLandmarkCoords
-	ld a, [wd003]
-	ld c, a
-	ld a, [wd004]
-	ld b, a
-	ld hl, $0004
-	add hl, bc
-	ld [hl], e
-	ld hl, $0005
-	add hl, bc
-	ld [hl], d
-	ret
-; 91c3c
-
-CheckIfVisitedFlypoint: ; 91c3c
-; Check if the flypoint loaded in [hl] has been visited yet.
-	push bc
-	push de
-	push hl
-	ld l, [hl]
-	ld h, 0
-	add hl, hl
-	ld de, Flypoints + 1
-	add hl, de
-	ld c, [hl]
-	call HasVisitedSpawn
-	pop hl
-	pop de
-	pop bc
-	and a
-	ret
-; 91c50
-
-HasVisitedSpawn: ; 91c50
-; Check if spawn point c has been visited.
-	ld hl, VisitedSpawns
-	ld b, CHECK_FLAG
-	ld d, 0
-	predef FlagPredef
-	ld a, c
-	ret
-; 91c5e
-
-Flypoints: ; 91c5e
-; landmark, spawn point
-
-	const_def
-
-flypoint: MACRO
-; \1\@FLY   EQUS "FLY_\1"
-; \1\@SPAWN EQUS "SPAWN_\1"
-	; const \1\@FLY
-	; db \2, \1\@SPAWN
-	const FLY_\1
-	db \2, SPAWN_\1
-ENDM
-
-; Johto
-	flypoint NEW_BARK,    NEW_BARK_TOWN
-	flypoint CHERRYGROVE, CHERRYGROVE_CITY
-	flypoint VIOLET,      VIOLET_CITY
-	flypoint AZALEA,      AZALEA_TOWN
-	flypoint GOLDENROD,   GOLDENROD_CITY
-	flypoint ECRUTEAK,    ECRUTEAK_CITY
-	flypoint OLIVINE,     OLIVINE_CITY
-	flypoint CIANWOOD,    CIANWOOD_CITY
-	flypoint MAHOGANY,    MAHOGANY_TOWN
-	flypoint LAKE,        LAKE_OF_RAGE
-	flypoint BLACKTHORN,  BLACKTHORN_CITY
-	flypoint MT_SILVER,   SILVER_CAVE
-
-; Kanto
-KANTO_FLYPOINT EQU const_value
-
-	flypoint PALLET,      PALLET_TOWN
-	flypoint VIRIDIAN,    VIRIDIAN_CITY
-	flypoint PEWTER,      PEWTER_CITY
-	flypoint CERULEAN,    CERULEAN_CITY
-	flypoint VERMILION,   VERMILION_CITY
-	flypoint ROCK_TUNNEL, ROCK_TUNNEL
-	flypoint LAVENDER,    LAVENDER_TOWN
-	flypoint CELADON,     CELADON_CITY
-	flypoint SAFFRON,     SAFFRON_CITY
-	flypoint FUCHSIA,     FUCHSIA_CITY
-	flypoint CINNABAR,    CINNABAR_ISLAND
-	flypoint INDIGO,      INDIGO_PLATEAU
-
-	db -1
-; 91c8f
-
-Function91c8f: ; 91c8f
-	ret
-; 91c90
-
-FlyMap: ; 91c90
-
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetWorldMapLocation
-
-; If we're not in a valid location, i.e. Pokecenter floor 2F,
-; the backup map information is used
-
-	cp SPECIAL_MAP
-	jr nz, .CheckRegion
-
-	ld a, [BackupMapGroup]
-	ld b, a
-	ld a, [BackupMapNumber]
-	ld c, a
-	call GetWorldMapLocation
-
-.CheckRegion
-; The first 46 locations are part of Johto. The rest are in Kanto
-	cp KANTO_LANDMARK
-	jr nc, .KantoFlyMap
-
-.JohtoFlyMap
-; Note that .NoKanto should be modified in tandem with this branch
-
-	push af
-
-; Start from New Bark Town
-	ld a, FLY_NEW_BARK
-	ld [DefaultFlypoint], a
-
-; Flypoints begin at New Bark Town...
-	ld [StartFlypoint], a
-; ..and end at Silver Cave
-	ld a, FLY_MT_SILVER
-	ld [EndFlypoint], a
-
-; Fill out the map
-	call FillJohtoMap
-	call .MapHud
-	pop af
-	call TownMapPlayerIcon
-	ret
-
-.KantoFlyMap
-
-; The event that there are no flypoints enabled in a map is not
-; accounted for. As a result, if you attempt to select a flypoint
-; when there are none enabled, the game will crash. Additionally,
-; the flypoint selection has a default starting point that
-; can be flown to even if none are enabled
-
-; To prevent both of these things from happening when the player
-; enters Kanto, fly access is restricted until Indigo Plateau is
-; visited and its flypoint enabled
-
-	push af
-	ld c, SPAWN_INDIGO
-	call HasVisitedSpawn
-	and a
-	jr z, .NoKanto
-
-; Kanto's map is only loaded if we've visited Indigo Plateau
-
-; Flypoints begin at Pallet Town...
-	ld a, FLY_PALLET
-	ld [StartFlypoint], a
-; ...and end at Indigo Plateau
-	ld a, FLY_INDIGO
-	ld [EndFlypoint], a
-
-; Because Indigo Plateau is the first flypoint the player
-; visits, it's made the default flypoint
-	ld [DefaultFlypoint], a
-
-; Fill out the map
-	call FillKantoMap
-	call .MapHud
-	pop af
-	call TownMapPlayerIcon
-	ret
-
-.NoKanto
-; If Indigo Plateau hasn't been visited, we use Johto's map instead
-
-; Start from New Bark Town
-	ld a, FLY_NEW_BARK
-	ld [DefaultFlypoint], a
-
-; Flypoints begin at New Bark Town...
-	ld [StartFlypoint], a
-; ..and end at Silver Cave
-	ld a, FLY_MT_SILVER
-	ld [EndFlypoint], a
-
-	call FillJohtoMap
-
-	pop af
-
-.MapHud
-	call TownMapBubble
-	call TownMapPals
-
-	ld hl, VBGMap0 ; BG Map 0
-	call TownMapBGUpdate
-
-	call TownMapMon
-	ld a, c
-	ld [wd003], a
-	ld a, b
-	ld [wd004], a
-	ret
-; 91d11
-
-Function91d11: ; 91d11
-	ld a, [DefaultFlypoint]
-	push af
-	ld a, [wd003]
-	push af
-	ld a, e
-	ld [DefaultFlypoint], a
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	ld a, $1
-	ld [hInMenu], a
-	ld de, GFX_922d1
-	ld hl, VTiles0 tile $7f
-	lb bc, BANK(GFX_922d1), 1
-	call Request2bpp ; actually 1bpp
-	call Function91ed0
-	ld hl, VTiles0 tile $78
-	ld c, $4
-	call Request2bpp
-	call Function91ff2
-	call FillKantoMap
-	call Function91de9
-	call TownMapPals
-	ld hl, VBGMap1
-	call TownMapBGUpdate
-	call FillJohtoMap
-	call Function91de9
-	call TownMapPals
-	ld hl, VBGMap0
-	call TownMapBGUpdate
-	ld b, $2
-	call GetSGBLayout
-	call SetPalettes
-	xor a
-	ld [hBGMapMode], a
-	xor a
-	call Function91e1e
-.asm_91d6e
-	call JoyTextDelay
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and A_BUTTON | B_BUTTON
-	jr nz, .asm_91d8f
-	ld a, [hJoypadDown]
-	and SELECT
-	jr nz, .asm_91d87
-	call Function91d9b
-	call Function91dcd
-	jr .asm_91d8a
-
-.asm_91d87
-	call Function91e5a
-
-.asm_91d8a
-	call DelayFrame
-	jr .asm_91d6e
-
-.asm_91d8f
-	call ClearSprites
-	pop af
-	ld [wd003], a
-	pop af
-	ld [DefaultFlypoint], a
-	ret
-; 91d9b
-
-Function91d9b: ; 91d9b
-	ld a, [hl]
-	and $20
-	jr nz, .asm_91da6
-	ld a, [hl]
-	and $10
-	jr nz, .asm_91db7
-	ret
-
-.asm_91da6
-	ld a, [hWY]
-	cp $90
-	ret z
-	call ClearSprites
-	ld a, $90
-	ld [hWY], a
-	xor a
-	call Function91e1e
-	ret
-
-.asm_91db7
-	ld a, [StatusFlags]
-	bit 6, a
-	ret z
-	ld a, [hWY]
-	and a
-	ret z
-	call ClearSprites
-	xor a
-	ld [hWY], a
-	ld a, $1
-	call Function91e1e
-	ret
-; 91dcd
-
-Function91dcd: ; 91dcd
-	ld a, [$ff9b]
-	ld e, a
-	and $f
-	ret nz
-	ld a, e
-	and $10
-	jr nz, .asm_91ddc
-	call ClearSprites
-	ret
-
-.asm_91ddc
-	hlcoord 0, 0
-	ld de, Sprites
-	ld bc, $00a0
-	call CopyBytes
-	ret
-; 91de9
-
-Function91de9: ; 91de9
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH
-	ld a, $7f
-	call ByteFill
-	hlcoord 0, 1
-	ld a, $6
-	ld [hli], a
-	ld bc, SCREEN_HEIGHT
-	ld a, $7
-	call ByteFill
-	ld [hl], $17
-	call GetPokemonName
-	hlcoord 2, 0
-	call PlaceString
-	ld h, b
-	ld l, c
-	ld de, String_91e16
-	call PlaceString
-	ret
-; 91e16
-
-String_91e16:
-	db "'S NEST@"
-; 91e1e
-
-Function91e1e: ; 91e1e
-	ld [wd003], a
-	ld e, a
-	callba Function2a01f
-	decoord 0, 0
-	ld hl, Sprites
-.asm_91e2e
-	ld a, [de]
-	and a
-	jr z, .asm_91e4d
-	push de
-	ld e, a
-	push hl
-	callba GetLandmarkCoords
-	pop hl
-	ld a, d
-	sub $4
-	ld [hli], a
-	ld a, e
-	sub $4
-	ld [hli], a
-	ld a, $7f
-	ld [hli], a
-	xor a
-	ld [hli], a
-	pop de
-	inc de
-	jr .asm_91e2e
-
-.asm_91e4d
-	ld hl, Sprites
-	decoord 0, 0
-	ld bc, $00a0
-	call CopyBytes
-	ret
-; 91e5a
-
-Function91e5a: ; 91e5a
-	call Function91ea9
-	ret c
-
-	ld a, [DefaultFlypoint]
-	ld e, a
-	callba GetLandmarkCoords
-	ld c, e
-	ld b, d
-	ld de, Unknown_91e9c
-	ld hl, Sprites
-.asm_91e70
-	ld a, [de]
-	cp $80
-	jr z, .asm_91e91
-
-	add b
-	ld [hli], a
-	inc de
-
-	ld a, [de]
-	add c
-	ld [hli], a
-	inc de
-
-	ld a, [de]
-	add $78
-	ld [hli], a
-	inc de
-
-	push bc
-	ld c, 0
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_91e8c
-	inc c
-.asm_91e8c
-	ld a, c
-	ld [hli], a
-	pop bc
-
-	jr .asm_91e70
-
-.asm_91e91
-	ld hl, Sprites + $10
-	ld bc, SpritesEnd - (Sprites + $10)
-	xor a
-	call ByteFill
-	ret
-; 91e9c
-
-Unknown_91e9c: ; 91e9c
-	db -8, -8,  0
-	db -8,  0,  1
-	db  0, -8,  2
-	db  0,  0,  3
-	db $80 ; terminator
-; 91ea9
-
-Function91ea9: ; 91ea9
-	ld a, [DefaultFlypoint]
-	cp FAST_SHIP
-	jr z, .johto
-	cp KANTO_LANDMARK
-	jr c, .johto
-
-.kanto
-	ld a, [wd003]
-	and a
-	jr z, .clear
-	jr .ok
-
-.johto
-	ld a, [wd003]
-	and a
-	jr nz, .clear
-
-.ok
-	and a
-	ret
-
-.clear
-	ld hl, Sprites
-	ld bc, SpritesEnd - Sprites
-	xor a
-	call ByteFill
-	scf
-	ret
-; 91ed0
-
-Function91ed0: ; 91ed0
-	ld a, [DefaultFlypoint]
-	cp FAST_SHIP
-	jr z, .asm_91ede
-	callba GetPlayerIcon
-	ret
-
-.asm_91ede
-	ld de, FastShipGFX
-	ld b, BANK(FastShipGFX)
-	ret
-; 91ee4
-
-TownMapBGUpdate: ; 91ee4
-; Update BG Map tiles and attributes
-
-; BG Map address
-	ld a, l
-	ld [hBGMapAddress], a
-	ld a, h
-	ld [hBGMapAddress + 1], a
-
-; Only update palettes on CGB
-	ld a, [hCGB]
-	and a
-	jr z, .tiles
-
-; BG Map mode 2 (palettes)
-	ld a, 2
-	ld [hBGMapMode], a
-
-; The BG Map is updated in thirds, so we wait
-; 3 frames to update the whole screen's palettes.
-	ld c, 3
-	call DelayFrames
-
-.tiles
-; Update BG Map tiles
-	call WaitBGMap
-
-; Turn off BG Map update
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 91eff
-
-FillJohtoMap: ; 91eff
-	ld de, JohtoMap
-	jr FillTownMap
-
-FillKantoMap: ; 91f04
-	ld de, KantoMap
-
-FillTownMap: ; 91f07
-	hlcoord 0, 0
-.loop
-	ld a, [de]
-	cp $ff
-	ret z
-	ld a, [de]
-	ld [hli], a
-	inc de
-	jr .loop
-; 91f13
-
-TownMapPals: ; 91f13
-; Assign palettes based on tile ids
-
-	hlcoord 0, 0
-	decoord 0, 0, AttrMap
-	ld bc, 360
-.loop
-; Current tile
-	ld a, [hli]
-	push hl
-
-; HP/borders use palette 0
-	cp $60
-	jr nc, .pal0
-
-; The palette data is condensed to nybbles,
-; least-significant first.
-	ld hl, TownMapPalMap
-	srl a
-	jr c, .odd
-
-; Even-numbered tile ids take the bottom nybble...
-	add l
-	ld l, a
-	ld a, h
-	adc 0
-	ld h, a
-	ld a, [hl]
-	and %111
-	jr .update
-
-.odd
-; ...and odd ids take the top.
-	add l
-	ld l, a
-	ld a, h
-	adc 0
-	ld h, a
-	ld a, [hl]
-	swap a
-	and %111
-	jr .update
-
-.pal0
-	xor a
-
-.update
-	pop hl
-	ld [de], a
-	inc de
-	dec bc
-	ld a, b
-	or c
-	jr nz, .loop
-	ret
-
-TownMapPalMap:
-	db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
-	db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
-	db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
-	db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
-; 91f7b
-
-TownMapMon: ; 91f7b
-; Draw the FlyMon icon at town map location in
-
-; Get FlyMon species
-	ld a, [CurPartyMon]
-	ld hl, PartySpecies
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-
-; Get FlyMon icon
-	ld e, 8 ; starting tile in VRAM
-	callba GetSpeciesIcon
-
-; Animation/palette
-	ld de, 0
-	ld a, $0
-	call Function3b2a
-
-	ld hl, 3
-	add hl, bc
-	ld [hl], 8
-	ld hl, 2
-	add hl, bc
-	ld [hl], 0
-	ret
-; 91fa6
-
-TownMapPlayerIcon: ; 91fa6
-; Draw the player icon at town map location in a
-	push af
-
-	callba GetPlayerIcon
-
-; Standing icon
-	ld hl, VTiles0 tile $10
-	ld c, 4 ; # tiles
-	call Request2bpp
-
-; Walking icon
-	ld hl, $00c0
-	add hl, de
-	ld d, h
-	ld e, l
-	ld hl, VTiles0 tile $14
-	ld c, 4 ; # tiles
-	ld a, BANK(ChrisSpriteGFX) ; does nothing
-	call Request2bpp
-
-; Animation/palette
-	ld de, 0
-	ld b, $0a ; Male
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_91fd3
-	ld b, $1e ; Female
-.asm_91fd3
-	ld a, b
-	call Function3b2a
-
-	ld hl, $0003
-	add hl, bc
-	ld [hl], $10
-
-	pop af
-	ld e, a
-	push bc
-	callba GetLandmarkCoords
-	pop bc
-
-	ld hl, 4
-	add hl, bc
-	ld [hl], e
-	ld hl, 5
-	add hl, bc
-	ld [hl], d
-	ret
-; 0x91ff2
-
-Function91ff2: ; 91ff2
-	ld hl, TownMapGFX
-	ld de, VTiles2
-	lb bc, BANK(TownMapGFX), $30
-	call Functione73
-	ret
-; 91fff
-
-
-JohtoMap: ; 91fff
-INCBIN "gfx/misc/johto.bin"
-; 92168
-
-KantoMap: ; 92168
-INCBIN "gfx/misc/kanto.bin"
-; 922d1
-
-
-GFX_922d1: ; 922d1
-INCBIN "gfx/unknown/0922d1.2bpp"
-GFX_922e1: ; 922e1
-INCBIN "gfx/unknown/0922e1.2bpp"
-GFX_92301: ; 92301
-INCBIN "gfx/unknown/092301.2bpp"
-
-Function92311: ; 92311
-	xor a
-	ld [DefaultFlypoint], a
-	call WhiteBGMap
+	ld [wd002], a
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	ld hl, hInMenu
@@ -62015,7 +45959,7 @@
 	jr .asm_9239f
 
 .pressedA
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld l, a
 	ld h, 0
 	add hl, hl
@@ -62024,10 +45968,10 @@
 	ld a, [hl]
 
 .asm_9239f
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	pop af
 	ld [hInMenu], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	ld a, $90
 	ld [hWY], a
 	xor a
@@ -62034,7 +45978,7 @@
 	ld [hBGMapAddress], a
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld e, a
 	ret
 ; 923b8
@@ -62050,7 +45994,7 @@
 	ret
 
 .asm_923c6
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld a, [hl]
 	cp FLY_INDIGO
 	jr c, .asm_923d0
@@ -62060,7 +46004,7 @@
 	jr .asm_923dd
 
 .asm_923d3
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld a, [hl]
 	and a
 	jr nz, .asm_923dc
@@ -62069,7 +46013,7 @@
 	dec [hl]
 
 .asm_923dd
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	cp KANTO_FLYPOINT
 	jr c, .johto
 
@@ -62096,2123 +46040,9 @@
 
 
 INCLUDE "data/wild/fish.asm"
+INCLUDE "engine/slot_machine.asm"
 
 
-_SlotMachine:
-	ld hl, Options
-	set 4, [hl]
-	call Function926f7
-	call DelayFrame
-.asm_926d2
-	call Function927af
-	jr nc, .asm_926d2
-	call WaitSFX
-	ld de, SFX_QUIT_SLOTS
-	call PlaySFX
-	call WaitSFX
-	call WhiteBGMap
-	callba MobileFn_105fd0
-	ld hl, Options
-	res 4, [hl]
-	ld hl, rLCDC ; $ff40
-	res 2, [hl]
-	ret
-
-Function926f7: ; 926f7 (24:66f7)
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld de, MUSIC_NONE
-	call PlayMusic
-	call DelayFrame
-	call DisableLCD
-	ld hl, VBGMap0 tile $00
-	ld bc, $400
-	ld a, $7f
-	call ByteFill
-	ld b, $5
-	call GetSGBLayout
-	callab Function8cf53
-	ld hl, wc6d0
-	ld bc, $48
-	xor a
-	call ByteFill
-	ld hl, Slots2LZ
-	ld de, VTiles0 tile $00
-	call Decompress
-	ld hl, Slots3LZ
-	ld de, VTiles0 tile $40
-	call Decompress
-	ld hl, Slots1LZ
-	ld de, VTiles2 tile $00
-	call Decompress
-	ld hl, Slots2LZ
-	ld de, VTiles2 tile $25
-	call Decompress
-	ld hl, SlotsTilemap
-	decoord 0, 0
-	ld bc, 20 * 12
-	call CopyBytes
-	ld hl, rLCDC ; $ff40
-	set 2, [hl]
-	call EnableLCD
-	ld hl, wc6d0
-	ld bc, $64
-	xor a
-	call ByteFill
-	call Function92a98
-	call Function9279b
-	ld a, $7
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], $40
-	xor a
-	ld [wJumptableIndex], a
-	ld a, $ff
-	ld [wc709], a
-	ld de, MUSIC_GAME_CORNER
-	call PlayMusic
-	xor a
-	ld [wd002], a
-	call Random
-	and $2a
-	ret nz
-	ld a, $1
-	ld [wd002], a
-	ret
-
-Function9279b: ; 9279b (24:679b)
-	ld a, $e4
-	call DmgToCgbBGPals
-	lb de, $e4, $e4
-	ld a, [hCGB] ; $ff00+$e6
-	and a
-	jr nz, .asm_927ab
-	lb de, $c0, $e4
-.asm_927ab
-	call DmgToCgbObjPals
-	ret
-
-Function927af: ; 927af (24:67af)
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_927d1
-	call Function92844
-	call Function92b0f
-	xor a
-	ld [wc3b5], a
-	callab Function8cfa8
-	call Function927f8
-	call Function927d3
-	call DelayFrame
-	and a
-	ret
-.asm_927d1
-	scf
-	ret
-
-Function927d3: ; 927d3 (24:67d3)
-	ret
-; 927d4 (24:67d4)
-
-Function927d4: ; 927d4
-	ld a, [wc6d0]
-	and a
-	ret nz
-	ld a, [wc6e0]
-	and a
-	ret nz
-	ld a, [wc70c]
-	and a
-	jr nz, .asm_927ea
-	ld a, $e4
-	call DmgToCgbBGPals
-	ret
-
-.asm_927ea
-	ld a, [TextDelayFrames]
-	and $7
-	ret nz
-	ld a, [rBGP]
-	xor %1100
-	call DmgToCgbBGPals
-	ret
-; 927f8
-
-Function927f8: ; 927f8 (24:67f8)
-	hlcoord 5, 1
-	ld de, Coins
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
-	call PrintNum
-	hlcoord 11, 1
-	ld de, wc711
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
-	call PrintNum
-	ret
-; 92811 (24:6811)
-
-Function92811: ; 92811
-	ld a, [wc709]
-	add 0
-	daa
-	ld e, a
-	and $f
-	add "0"
-	hlcoord 1, 0
-	ld [hl], a
-	ld a, e
-	swap a
-	and $f
-	add "0"
-	hlcoord 0, 0
-	ld [hl], a
-	ret
-; 9282c
-
-Function9282c: ; 9282c
-	ld hl, wcf66
-	ld a, [hl]
-	inc [hl]
-	and $7
-	ret nz
-	ld hl, Sprites + $42
-	ld c, $18
-.asm_92839
-	ld a, [hl]
-	xor $20
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec c
-	jr nz, .asm_92839
-	ret
-; 92844
-
-Function92844: ; 92844 (24:6844)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_92853
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 92853 (24:6853)
-
-
-Jumptable_92853: ; 92853 (24:6853)
-	dw Function9287e
-	dw Function9288e
-	dw Function928c6
-	dw Function928d6
-	dw Function928e6
-	dw Function92900
-	dw Function92910
-	dw Function9292a
-	dw Function9293a
-	dw Function92879
-	dw Function92879
-	dw Function92879
-	dw Function92955
-	dw Function9296b
-	dw Function92987
-	dw Function9299e
-	dw Function929a4
-	dw Function929d9
-	dw Function929f0
-
-
-Function92879: ; 92879 (24:6879)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Function9287e: ; 9287e (24:687e)
-	call Function92879
-	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	ld a, $ff
-	ld [wc70d], a
-	ret
-
-Function9288e: ; 9288e (24:688e)
-	call Function9307c
-	jr nc, .asm_92899
-	ld a, $12
-	ld [wJumptableIndex], a
-	ret
-.asm_92899
-	call Function92879
-	call Function9303f
-	call Function93002
-	ld a, $20
-	ld [wcf64], a
-	ld a, $4
-	ld [wc6d0], a
-	ld [wc6e0], a
-	ld [wc6f0], a
-	ld a, $4
-	ld [wc6d9], a
-	ld [wc6e9], a
-	ld [wc6f9], a
-	call WaitSFX
-	ld a, SFX_SLOT_MACHINE_START
-	call Function9331e
-	ret
-
-Function928c6: ; 928c6 (24:68c6)
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_928cf
-	dec [hl]
-	ret
-.asm_928cf
-	call Function92879
-	xor a
-	ld [hJoypadSum], a ; $ff00+$a5
-	ret
-
-Function928d6: ; 928d6 (24:68d6)
-	ld hl, hJoypadSum ; $ffa5
-	ld a, [hl]
-	and A_BUTTON
-	ret z
-	call Function92879
-	call Function92a2b
-	ld [wc6d0], a
-
-Function928e6: ; 928e6 (24:68e6)
-	ld a, [wc6d0]
-	cp $0
-	ret nz
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6d0
-	ld de, wc700
-	call Function929f6
-	call Function92879
-	xor a
-	ld [hJoypadSum], a ; $ff00+$a5
-
-Function92900: ; 92900 (24:6900)
-	ld hl, hJoypadSum ; $ffa5
-	ld a, [hl]
-	and A_BUTTON
-	ret z
-	call Function92879
-	call Function92a2e
-	ld [wc6e0], a
-
-Function92910: ; 92910 (24:6910)
-	ld a, [wc6e0]
-	cp $0
-	ret nz
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6e0
-	ld de, wc703
-	call Function929f6
-	call Function92879
-	xor a
-	ld [hJoypadSum], a ; $ff00+$a5
-
-Function9292a: ; 9292a (24:692a)
-	ld hl, hJoypadSum ; $ffa5
-	ld a, [hl]
-	and A_BUTTON
-	ret z
-	call Function92879
-	call Function92a60
-	ld [wc6f0], a
-
-Function9293a: ; 9293a (24:693a)
-	ld a, [wc6f0]
-	cp $0
-	ret nz
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld bc, wc6f0
-	ld de, wc706
-	call Function929f6
-	call Function92879
-	xor a
-	ld [hJoypadSum], a ; $ff00+$a5
-	ret
-
-Function92955: ; 92955 (24:6955)
-	ld a, [wc70d]
-	cp $ff
-	jr nz, .asm_92963
-	call Function92879
-	call Function92879
-	ret
-.asm_92963
-	call Function92879
-	ld a, $10
-	ld [wcf64], a
-
-Function9296b: ; 9296b (24:696b)
-	ld hl, wcf64
-	ld a, [hl]
-	and a
-	jr z, .asm_92980
-	dec [hl]
-	srl a
-	ret z
-	ld a, [rOBP0] ; $ff00+$48
-	xor $ff
-	ld e, a
-	ld d, a
-	call DmgToCgbObjPals
-	ret
-.asm_92980
-	call Function9279b
-	call Function92879
-	ret
-
-Function92987: ; 92987 (24:6987)
-	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	ld a, $e4
-	call DmgToCgbBGPals
-	call Function93124
-	xor a
-	ld [wcf64], a
-	call Function92879
-	ret
-
-Function9299e: ; 9299e (24:699e)
-	call Function93158
-	call Function92879
-
-Function929a4: ; 929a4 (24:69a4)
-	ld hl, wcf64
-	ld a, [hl]
-	inc [hl]
-	and $1
-	ret z
-	ld hl, wc711
-	ld a, [hli]
-	ld d, a
-	or [hl]
-	jr z, .asm_929d5
-	ld e, [hl]
-	dec de
-	ld [hl], e
-	dec hl
-	ld [hl], d
-	ld hl, Coins
-	ld d, [hl]
-	inc hl
-	ld e, [hl]
-	call Function92a04
-	jr c, .asm_929c5
-	inc de
-.asm_929c5
-	ld [hl], e
-	dec hl
-	ld [hl], d
-	ld a, [wcf64]
-	and $7
-	ret z
-	ld de, SFX_GET_COIN_FROM_SLOTS
-	call PlaySFX
-	ret
-.asm_929d5
-	call Function92879
-	ret
-
-Function929d9: ; 929d9 (24:69d9)
-	call Function9304c
-	call Functiona80
-	call Function930e9
-	jr c, .asm_929ea
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-.asm_929ea
-	ld a, $12
-	ld [wJumptableIndex], a
-	ret
-
-Function929f0: ; 929f0 (24:69f0)
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Function929f6: ; 929f6 (24:69f6)
-	push de
-	call Function92a12
-	pop de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	ret
-
-Function92a04: ; 92a04 (24:6a04)
-	ld a, d
-	cp 9999 / $100
-	jr c, .asm_92a10
-	ld a, e
-	cp 9999 % $100
-	jr c, .asm_92a10
-	scf
-	ret
-.asm_92a10
-	and a
-	ret
-
-Function92a12: ; 92a12 (24:6a12)
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_92a1c
-	ld a, $f
-.asm_92a1c
-	dec a
-	and $f
-	ld e, a
-	ld d, $0
-	ld hl, $1
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ret
-
-Function92a2b: ; 92a2b (24:6a2b)
-	ld a, $7
-	ret
-
-Function92a2e: ; 92a2e (24:6a2e)
-	ld a, [wc70a]
-	cp $2
-	jr c, .asm_92a4e
-	ld a, [wc709]
-	and a
-	jr z, .asm_92a3f
-	cp $ff
-	jr nz, .asm_92a4e
-.asm_92a3f
-	call Function92a51
-	jr nz, .asm_92a4e
-	call Random
-	cp $50
-	jr nc, .asm_92a4e
-	ld a, $a
-	ret
-.asm_92a4e
-	ld a, $8
-	ret
-
-Function92a51: ; 92a51 (24:6a51)
-	ld a, [wc700]
-	and a
-	ret z
-	ld a, [wc701]
-	and a
-	ret z
-	ld a, [wc702]
-	and a
-	ret
-
-Function92a60: ; 92a60 (24:6a60)
-	ld a, [wc70b]
-	and a
-	jr z, .asm_92a95
-	ld a, [wc70c]
-	and a
-	jr z, .asm_92a95
-	ld a, [wc709]
-	and a
-	jr nz, .asm_92a84
-	call Random
-	cp 180
-	jr nc, .asm_92a95
-	cp 120
-	jr nc, .asm_92a92
-	cp 60
-	jr nc, .asm_92a8f
-	ld a, $15
-	ret
-.asm_92a84
-	call Random
-	cp $a0
-	jr nc, .asm_92a95
-	cp $50
-	jr nc, .asm_92a92
-.asm_92a8f
-	ld a, $12
-	ret
-.asm_92a92
-	ld a, $10
-	ret
-.asm_92a95
-	ld a, $9
-	ret
-
-Function92a98: ; 92a98 (24:6a98)
-	ld bc, wc6d0
-	ld hl, $6
-	add hl, bc
-	ld de, Sprites + $40
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $1
-	add hl, bc
-	ld de, Unknown_93327
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $8
-	add hl, bc
-	ld [hl], $30
-	call Function92af9
-	ld bc, wc6e0
-	ld hl, $6
-	add hl, bc
-	ld de, Sprites + $60
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $1
-	add hl, bc
-	ld de, Unknown_93339
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $8
-	add hl, bc
-	ld [hl], $50
-	call Function92af9
-	ld bc, wc6f0
-	ld hl, $6
-	add hl, bc
-	ld de, Sprites + $80
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $1
-	add hl, bc
-	ld de, Unknown_9334b
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld hl, $8
-	add hl, bc
-	ld [hl], $70
-	call Function92af9
-	ret
-
-Function92af9: ; 92af9 (24:6af9)
-	ld hl, $0
-	add hl, bc
-	ld [hl], $0
-	ld hl, $3
-	add hl, bc
-	ld [hl], $e
-	ld hl, $4
-	add hl, bc
-	ld [hl], $0
-	call Function92b53
-	ret
-
-Function92b0f: ; 92b0f (24:6b0f)
-	ld bc, wc6d0
-	call Function92b22
-	ld bc, wc6e0
-	call Function92b22
-	ld bc, wc6f0
-	call Function92b22
-	ret
-
-Function92b22: ; 92b22 (24:6b22)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	and $f
-	jr nz, .asm_92b2e
-	call Function92bd4
-.asm_92b2e
-	ld hl, $5
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	ld d, a
-	ld hl, $4
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	and $f
-	jr z, Function92b53
-	ld hl, $6
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld e, $8
-.asm_92b49
-	ld a, [hl]
-	add d
-	ld [hli], a
-rept 3
-	inc hl
-endr
-	dec e
-	jr nz, .asm_92b49
-	ret
-
-Function92b53: ; 92b53 (24:6b53)
-	ld hl, $8
-	add hl, bc
-	ld a, [hl]
-	ld [wc712 + 1], a
-	ld a, $50
-	ld [wc712 + 2], a
-	ld hl, $3
-	add hl, bc
-	ld e, [hl]
-	ld d, $0
-	ld hl, $1
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	add hl, de
-	ld e, l
-	ld d, h
-	call Function92b83
-	ld hl, $3
-	add hl, bc
-	ld a, [hl]
-	inc a
-	and $f
-	cp $f
-	jr nz, .asm_92b81
-	xor a
-.asm_92b81
-	ld [hl], a
-	ret
-
-Function92b83: ; 92b83 (24:6b83)
-	ld hl, $6
-	add hl, bc
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-.asm_92b8a
-	ld a, [wc712 + 2]
-	ld [hli], a
-	ld a, [wc712 + 1]
-	ld [hli], a
-	ld a, [de]
-	ld [hli], a
-	srl a
-	srl a
-	set 7, a
-	ld [hli], a
-	ld a, [wc712 + 2]
-	ld [hli], a
-	ld a, [wc712 + 1]
-	add $8
-	ld [hli], a
-	ld a, [de]
-rept 2
-	inc a
-endr
-	ld [hli], a
-	srl a
-	srl a
-	set 7, a
-	ld [hli], a
-	inc de
-	ld a, [wc712 + 2]
-	sub $10
-	ld [wc712 + 2], a
-	cp $10
-	jr nz, .asm_92b8a
-	ret
-; 92bbe (24:6bbe)
-
-Function92bbe: ; 92bbe
-	push hl
-	srl a
-	srl a
-	add Unknown_92bce % $100
-	ld l, a
-	ld a, 0
-	adc Unknown_92bce / $100
-	ld h, a
-	ld a, [hl]
-	pop hl
-	ret
-; 92bce
-
-Unknown_92bce: ; 92bce
-	db 0, 1, 2, 3, 4, 5
-; 92bd4
-
-Function92bd4: ; 92bd4 (24:6bd4)
-	ld hl, 0
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_92be4
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 92be4 (24:6be4)
-
-Jumptable_92be4: ; 92be4
-	dw Function92c16
-	dw Function92c4c
-	dw Function92c17
-	dw Function92c1e
-	dw Function92c25
-	dw Function92c2c
-	dw Function92c33
-	dw Function92c5e
-	dw Function92c86
-	dw Function92ca9
-	dw Function92cd2
-	dw Function92cf8
-	dw Function92d13
-	dw Function92df7
-	dw Function92e10
-	dw Function92e31
-	dw Function92e47
-	dw Function92e64
-	dw Function92d20
-	dw Function92d4f
-	dw Function92d6e
-	dw Function92d7e
-	dw Function92da4
-	dw Function92db3
-	dw Function92dca
-; 92c16
-
-Function92c16: ; 92c16
-	ret
-; 92c17
-
-Function92c17: ; 92c17
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $10
-	ret
-; 92c1e
-
-Function92c1e: ; 92c1e
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92c25
-
-Function92c25: ; 92c25
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $4
-	ret
-; 92c2c
-
-Function92c2c: ; 92c2c
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $2
-	ret
-; 92c33
-
-Function92c33: ; 92c33
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $1
-	ret
-; 92c3a
-
-Function92c3a: ; 92c3a
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-	ld hl, 0
-	add hl, bc
-	ld [hl], $1
-	ld hl, $000f
-	add hl, bc
-	ld [hl], $3
-
-Function92c4c: ; 92c4c
-	ld hl, $000f
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92c56
-	dec [hl]
-	ret
-
-.asm_92c56
-	ld hl, 0
-	add hl, bc
-	ld a, $0
-	ld [hl], a
-	ret
-; 92c5e
-
-Function92c5e: ; 92c5e
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92c72
-	ld hl, $0009
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92c72
-	dec [hl]
-	call Function92c76
-	ret nz
-
-.asm_92c72
-	call Function92c3a
-	ret
-; 92c76
-
-Function92c76: ; 92c76
-	call Function92a12
-	ld a, [wc709]
-	ld e, a
-	ld a, [hli]
-	cp e
-	ret z
-	ld a, [hli]
-	cp e
-	ret z
-	ld a, [hl]
-	cp e
-	ret
-; 92c86
-
-Function92c86: ; 92c86
-	call Function92e94
-	jr nc, .asm_92c94
-	ld a, [wc717]
-	ld hl, wc709
-	cp [hl]
-	jr z, .asm_92ca5
-
-.asm_92c94
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92ca5
-	ld hl, $0009
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92ca5
-	dec [hl]
-	ret
-
-.asm_92ca5
-	call Function92c3a
-	ret
-; 92ca9
-
-Function92ca9: ; 92ca9
-	call Function92f1d
-	jr nc, .asm_92cbd
-	ld hl, wc709
-	cp [hl]
-	jr z, .asm_92cce
-	ld hl, $0009
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-
-.asm_92cbd
-	ld a, [wc709]
-	cp $ff
-	jr z, .asm_92cce
-	ld hl, $0009
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92cce
-	dec [hl]
-	ret
-
-.asm_92cce
-	call Function92c3a
-	ret
-; 92cd2
-
-Function92cd2: ; 92cd2
-	call Function92e94
-	jr nc, .asm_92ce1
-	ld a, [wc70c]
-	and a
-	jr z, .asm_92ce1
-	call Function92c3a
-	ret
-
-.asm_92ce1
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $000a
-	add hl, bc
-	ld [hl], $20
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-	ret
-; 92cf8
-
-Function92cf8: ; 92cf8
-	ld hl, $000a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92d02
-	dec [hl]
-	ret
-
-.asm_92d02
-	ld a, SFX_THROW_BALL
-	call Function9331e
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92d13
-
-Function92d13: ; 92d13
-	call Function92e94
-	ret nc
-	ld a, [wc70c]
-	and a
-	ret z
-	call Function92c3a
-	ret
-; 92d20
-
-Function92d20: ; 92d20
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-	call Function92fc0
-	push bc
-	push af
-	ld de, $6068
-	ld a, $6
-	call Function3b2a
-	ld hl, $000e
-	add hl, bc
-	pop af
-	ld [hl], a
-	pop bc
-	xor a
-	ld [wcf64], a
-
-Function92d4f: ; 92d4f
-	ld a, [wcf64]
-	cp $2
-	jr z, .asm_92d5b
-	cp $1
-	jr z, .asm_92d62
-	ret
-
-.asm_92d5b
-	call Function92f1d
-	call Function92c3a
-	ret
-
-.asm_92d62
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92d6e
-
-Function92d6e: ; 92d6e
-	xor a
-	ld [wcf64], a
-	ld hl, 0
-	add hl, bc
-	dec [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-	ret
-; 92d7e
-
-Function92d7e: ; 92d7e
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-	push bc
-	ld de, $6000
-	ld a, $7
-	call Function3b2a
-	pop bc
-	xor a
-	ld [wcf64], a
-	ret
-; 92da4
-
-Function92da4: ; 92da4
-	ld a, [wcf64]
-	and a
-	ret z
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld a, $2
-	ld [wcf64], a
-
-Function92db3: ; 92db3
-	ld a, [wcf64]
-	cp $4
-	ret c
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $10
-	ld hl, $000a
-	add hl, bc
-	ld [hl], $11
-
-Function92dca: ; 92dca
-	ld hl, $000a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92dd4
-	dec [hl]
-	ret
-
-.asm_92dd4
-	call Function92f1d
-	jr nc, .asm_92de5
-	and a
-	jr nz, .asm_92de5
-	ld a, $5
-	ld [wcf64], a
-	call Function92c3a
-	ret
-
-.asm_92de5
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-	ld hl, 0
-	add hl, bc
-rept 2
-	dec [hl]
-endr
-	ld a, $1
-	ld [wcf64], a
-	ret
-; 92df7
-
-Function92df7: ; 92df7
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	call Function92fc0
-	ld hl, $000a
-	add hl, bc
-	ld [hl], a
-
-Function92e10: ; 92e10
-	ld hl, $000a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_92e1f
-	call Function92f1d
-	call Function92c3a
-	ret
-
-.asm_92e1f
-	dec [hl]
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $000b
-	add hl, bc
-	ld [hl], $20
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $0
-
-Function92e31: ; 92e31
-	ld hl, $000b
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92e3b
-	dec [hl]
-	ret
-
-.asm_92e3b
-	ld hl, 0
-	add hl, bc
-	dec [hl]
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $8
-	ret
-; 92e47
-
-Function92e47: ; 92e47
-	call Function92f1d
-	ret c
-	ld a, SFX_STOP_SLOT
-	call Function9331e
-	call Function93316
-	ld hl, $0005
-	add hl, bc
-	ld [hl], $1
-	ld hl, 0
-	add hl, bc
-	inc [hl]
-	ld hl, $000a
-	add hl, bc
-	ld [hl], $10
-
-Function92e64: ; 92e64
-	ld hl, $000a
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_92e73
-	dec [hl]
-.asm_92e6d
-	ld a, SFX_GOT_SAFARI_BALLS
-	call Function9331e
-	ret
-
-.asm_92e73
-	ld a, [wc709]
-	and a
-	jr nz, .asm_92e88
-	call Function92f1d
-	jr nc, .asm_92e6d
-	and a
-	jr nz, .asm_92e6d
-	call Function92c3a
-	call WaitSFX
-	ret
-
-.asm_92e88
-	call Function92f1d
-	jr c, .asm_92e6d
-	call Function92c3a
-	call WaitSFX
-	ret
-; 92e94
-
-Function92e94: ; 92e94
-	xor a
-	ld [wc70b], a
-	ld [wc70c], a
-	call Function92a12
-	call Function92fb4
-	ld a, [wc70a]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_92ebd
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .asm_92eb6
-	push de
-	jp [hl]
-
-.asm_92eb6
-	ld a, [wc70b]
-	and a
-	ret z
-	scf
-	ret
-; 92ebd
-
-Jumptable_92ebd: ; 92ebd
-	dw Function92ed4
-	dw Function92ed1
-	dw Function92ecb
-	dw Function92ec5
-; 92ec5
-
-Function92ec5: ; 92ec5
-	call Function92ee0
-	call Function92ef6
-
-Function92ecb: ; 92ecb
-	call Function92ed5
-	call Function92f01
-
-Function92ed1: ; 92ed1
-	call Function92eeb
-
-Function92ed4: ; 92ed4
-	ret
-; 92ed5
-
-Function92ed5: ; 92ed5
-	ld hl, wc70e
-	ld a, [EnemyScreens]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92ee0
-
-Function92ee0: ; 92ee0
-	ld hl, wc70f
-	ld a, [wc700]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92eeb
-
-Function92eeb: ; 92eeb
-	ld hl, wc70f
-	ld a, [wc701]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92ef6
-
-Function92ef6: ; 92ef6
-	ld hl, wc70f
-	ld a, [wc702]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92f01
-
-Function92f01: ; 92f01
-	ld hl, wc710
-	ld a, [wc702]
-	cp [hl]
-	call z, Function92f0c
-	ret
-; 92f0c
-
-Function92f0c: ; 92f0c
-	ld [wc717], a
-	and a
-	jr nz, .asm_92f17
-	ld a, $1
-	ld [wc70c], a
-
-.asm_92f17
-	ld a, $1
-	ld [wc70b], a
-	ret
-; 92f1d
-
-Function92f1d: ; 92f1d
-	ld a, $ff
-	ld [EffectFailed], a
-	call Function92a12
-	call Function92fb4
-	ld a, [wc70a]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_92f48
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .asm_92f3d
-	push de
-	jp [hl]
-
-.asm_92f3d
-	ld a, [wc70d]
-	cp $ff
-	jr nz, .asm_92f46
-	and a
-	ret
-
-.asm_92f46
-	scf
-	ret
-; 92f48
-
-Jumptable_92f48: ; 92f48
-	dw Function92f5f
-	dw Function92f5c
-	dw Function92f56
-	dw Function92f50
-; 92f50
-
-Function92f50: ; 92f50
-	call Function92f70
-	call Function92f90
-
-Function92f56: ; 92f56
-	call Function92f60
-	call Function92fa0
-
-Function92f5c: ; 92f5c
-	call Function92f80
-
-Function92f5f: ; 92f5f
-	ret
-; 92f60
-
-Function92f60: ; 92f60
-	ld hl, wc70e
-	ld a, [wc700]
-	cp [hl]
-	ret nz
-	ld hl, wc703
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92f70
-
-Function92f70: ; 92f70
-	ld hl, wc710
-	ld a, [wc700]
-	cp [hl]
-	ret nz
-	ld hl, wc704
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92f80
-
-Function92f80: ; 92f80
-	ld hl, wc70f
-	ld a, [wc701]
-	cp [hl]
-	ret nz
-	ld hl, wc704
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92f90
-
-Function92f90: ; 92f90
-	ld hl, wc70e
-	ld a, [wc702]
-	cp [hl]
-	ret nz
-	ld hl, wc704
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92fa0
-
-Function92fa0: ; 92fa0
-	ld hl, wc710
-	ld a, [wc702]
-	cp [hl]
-	ret nz
-	ld hl, wc705
-	cp [hl]
-	call z, Function92fb0
-	ret
-; 92fb0
-
-Function92fb0: ; 92fb0
-	ld [wc70d], a
-	ret
-; 92fb4
-
-Function92fb4: ; 92fb4
-	ld de, wc70e
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	ret
-; 92fc0
-
-Function92fc0: ; 92fc0
-	ld hl, $0003
-	add hl, bc
-	ld a, [hl]
-	push af
-	push hl
-	call Function92fcf
-	pop hl
-	pop af
-	ld [hl], a
-	ld a, e
-	ret
-; 92fcf
-
-Function92fcf: ; 92fcf
-	ld a, [wc709]
-	and a
-	jr nz, .asm_92fe8
-	ld e, $0
-.asm_92fd7
-	ld hl, $0003
-	add hl, bc
-	inc [hl]
-	inc e
-	push de
-	call Function92f1d
-	pop de
-	jr nc, .asm_92fd7
-	and a
-	jr nz, .asm_92fd7
-	ret
-
-.asm_92fe8
-	call Random
-	and $7
-	cp $4
-	jr c, .asm_92fe8
-	ld e, a
-.asm_92ff2
-	ld a, e
-	inc e
-	ld hl, $0003
-	add hl, bc
-	add [hl]
-	ld [hl], a
-	push de
-	call Function92f1d
-	pop de
-	jr c, .asm_92ff2
-	ret
-; 93002
-
-Function93002: ; 93002 (24:7002)
-	ld a, [wc709]
-	and a
-	ret z
-	ld hl, Unknown_93023
-	ld a, [ScriptVar]
-	and a
-	jr z, .asm_93013
-	ld hl, Unknown_93031
-.asm_93013
-	call Random
-	ld c, a
-.asm_93017
-	ld a, [hli]
-	cp c
-	jr nc, .asm_9301e
-	inc hl
-	jr .asm_93017
-.asm_9301e
-	ld a, [hl]
-	ld [wc709], a
-	ret
-; 93023 (24:7023)
-
-Unknown_93023: ; 93023
-	db $01, $00
-	db $03, $04
-	db $0a, $14
-	db $14, $10
-	db $28, $0c
-	db $30, $08
-	db $ff, $ff
-; 93031
-
-Unknown_93031: ; 93031
-	db $02, $00
-	db $03, $04
-	db $08, $14
-	db $10, $10
-	db $1e, $0c
-	db $50, $08
-	db $ff, $ff
-; 9303f
-
-Function9303f: ; 9303f (24:703f)
-	ld b, $14
-	ld a, [wc70a]
-	dec a
-	jr z, asm_93066
-	dec a
-	jr z, asm_9305a
-	jr asm_9304e
-
-Function9304c: ; 9304c (24:704c)
-	ld b, $23
-asm_9304e: ; 9304e (24:704e)
-	hlcoord 3, 2
-	call Function93069
-	hlcoord 3, 10
-	call Function93069
-asm_9305a: ; 9305a (24:705a)
-	hlcoord 3, 4
-	call Function93069
-	hlcoord 3, 8
-	call Function93069
-asm_93066: ; 93066 (24:7066)
-	hlcoord 3, 6
-
-Function93069: ; 93069 (24:7069)
-	ld a, b
-	ld [hl], a
-	ld de, $d
-	add hl, de
-	ld [hl], a
-	ld de, $7
-	add hl, de
-	inc a
-	ld [hl], a
-	ld de, $d
-	add hl, de
-	ld [hl], a
-	ret
-
-Function9307c: ; 9307c (24:707c)
-	ld hl, UnknownText_0x930c7
-	call PrintText
-	ld hl, MenuDataHeader_0x930d6
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	call WriteBackup
-	ret c
-	ld a, [wcfa9]
-	ld b, a
-	ld a, $4
-	sub b
-	ld [wc70a], a
-	ld hl, Coins
-	ld c, a
-	ld a, [hli]
-	and a
-	jr nz, .asm_930ad
-	ld a, [hl]
-	cp c
-	jr nc, .asm_930ad
-	ld hl, UnknownText_0x930d1
-	call PrintText
-	jr Function9307c
-.asm_930ad
-	ld hl, Coins + 1
-	ld a, [hl]
-	sub c
-	ld [hld], a
-	jr nc, .asm_930b6
-	dec [hl]
-.asm_930b6
-	call WaitSFX
-	ld de, SFX_PAY_DAY
-	call PlaySFX
-	ld hl, UnknownText_0x930cc
-	call PrintText
-	and a
-	ret
-; 930c7 (24:70c7)
-
-UnknownText_0x930c7: ; 0x930c7
-	; Bet how many coins?
-	text_jump UnknownText_0x1c5049
-	db "@"
-; 0x930cc
-
-UnknownText_0x930cc: ; 0x930cc
-	; Start!
-	text_jump UnknownText_0x1c505e
-	db "@"
-; 0x930d1
-
-UnknownText_0x930d1: ; 0x930d1
-	; Not enough coins.
-	text_jump UnknownText_0x1c5066
-	db "@"
-; 0x930d6
-
-MenuDataHeader_0x930d6: ; 0x930d6
-	db $40 ; flags
-	db 10, 14 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData2_0x930de
-	db 1 ; default option
-; 0x930de
-
-MenuData2_0x930de: ; 0x930de
-	db $80 ; flags
-	db 3 ; items
-	db " 3@"
-	db " 2@"
-	db " 1@"
-; 0x930e9
-
-Function930e9: ; 930e9 (24:70e9)
-	ld hl, Coins
-	ld a, [hli]
-	or [hl]
-	jr nz, .asm_930fd
-	ld hl, UnknownText_9311a
-	call PrintText
-	ld c, $3c
-	call DelayFrames
-	jr .asm_93118
-.asm_930fd
-	ld hl, UnknownText_9311f
-	call PrintText
-	call LoadMenuTextBox
-	lb bc, 14, 12
-	call PlaceYesNoBox
-	ld a, [wcfa9]
-	dec a
-	call WriteBackup
-	and a
-	jr nz, .asm_93118
-	and a
-	ret
-.asm_93118
-	scf
-	ret
-; 9311a (24:711a)
-
-UnknownText_9311a: ; 9311a
-	text_jump UnknownText_0x1c5079
-	db "@"
-
-UnknownText_9311f: ; 9311f
-	text_jump UnknownText_0x1c5092
-	db "@"
-
-Function93124: ; 93124 (24:7124)
-	ld a, [EffectFailed]
-	cp $ff
-	jr z, .asm_93151
-	srl a
-	ld e, a
-	ld d, 0
-	ld hl, .data_93145
-	add hl, de
-	ld a, [hli]
-	ld [PlayerUsedMoves], a
-	ld e, a
-	ld a, [hl]
-	ld [wc711], a
-	ld d, a
-	callba MobileFn_105fe3
-	ret
-
-.data_93145
-	db $2c, $01
-	db $32, $00
-	db $06, $00
-	db $08, $00
-	db $0a, $00
-	db $0f, $00
-
-.asm_93151
-	ld hl, wc711
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ret
-
-Function93158: ; 93158 (24:7158)
-	ld a, [EffectFailed]
-	cp $ff
-	jr nz, .asm_9316c
-	ld hl, UnknownText_0x931e0
-	call PrintText
-	callba MobileFn_105fd0
-	ret
-.asm_9316c
-	srl a
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_93195
-rept 3
-	add hl, de
-endr
-	ld de, StringBuffer2
-	ld bc, $4
-	call CopyBytes
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, .asm_93188
-	push de
-	jp [hl]
-.asm_93188
-	ld hl, UnknownText_0x931b9
-	call PrintText
-	callba MobileFn_105f9f
-	ret
-; 93195 (24:7195)
-
-Unknown_93195: ; 93195
-	db "300@"
-	dw Function931e5
-	db "50@@"
-	dw Function9320b
-	db "6@@@"
-	dw Function93214
-	db "8@@@"
-	dw Function93214
-	db "10@@"
-	dw Function93214
-	db "15@@"
-	dw Function93214
-; 931b9
-
-UnknownText_0x931b9: ; 0x931b9
-	start_asm
-; 0x931ba
-
-Function931ba: ; 931ba
-	ld a, [EffectFailed]
-	add $25
-	ldcoord_a 2, 13
-	inc a
-	ldcoord_a 2, 14
-	inc a
-	ldcoord_a 3, 13
-	inc a
-	ldcoord_a 3, 14
-	hlcoord 18, 17
-	ld [hl], $ee
-	ld hl, UnknownText_0x931db
-rept 4
-	inc bc
-endr
-	ret
-; 931db
-
-UnknownText_0x931db: ; 0x931db
-	; lined up! Won @  coins!
-	text_jump UnknownText_0x1c509f
-	db "@"
-; 0x931e0
-
-UnknownText_0x931e0: ; 0x931e0
-	; Darn!
-	text_jump UnknownText_0x1c50bb
-	db "@"
-; 0x931e5
-
-Function931e5: ; 931e5
-	ld a, SFX_2ND_PLACE
-	call Function9331e
-	call WaitSFX
-	ld a, [wd002]
-	and a
-	jr nz, .asm_931ff
-	call Random
-	and $14
-	ret z
-	ld a, $ff
-	ld [wc709], a
-	ret
-
-.asm_931ff
-	call Random
-	and $1c
-	ret z
-	ld a, $ff
-	ld [wc709], a
-	ret
-; 9320b
-
-Function9320b: ; 9320b
-	ld a, SFX_3RD_PLACE
-	call Function9331e
-	call WaitSFX
-	ret
-; 93214
-
-Function93214: ; 93214
-	ld a, SFX_PRESENT
-	call Function9331e
-	call WaitSFX
-	ret
-; 9321d
-
-Function9321d: ; 9321d (24:721d)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_9322d
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_9322d: ; 9322d (24:722d)
-	dw Function93233
-	dw Function93259
-	dw Function93289
-
-
-Function93233: ; 93233 (24:7233)
-	ld hl, $e
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr nz, .asm_93247
-	ld a, $2
-	ld [wcf64], a
-	ld hl, $0
-	add hl, bc
-	ld [hl], $0
-	ret
-.asm_93247
-	dec [hl]
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld hl, $c
-	add hl, bc
-	ld [hl], $30
-	ld hl, $6
-	add hl, bc
-	ld [hl], $0
-
-Function93259: ; 93259 (24:7259)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $20
-	jr c, .asm_93273
-	dec [hl]
-	ld e, a
-	ld d, $70
-	callba Functionce765
-	ld a, e
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-.asm_93273
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld hl, $d
-	add hl, bc
-	ld [hl], $2
-	ld a, $1
-	ld [wcf64], a
-	ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
-	call Function9331e
-	ret
-
-Function93289: ; 93289 (24:7289)
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-rept 2
-	inc [hl]
-endr
-	cp $48
-	jr nc, .asm_932a3
-	and $3
-	ret nz
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	xor $ff
-	inc a
-	ld [hl], a
-	ld [hSCY], a ; $ff00+$d0
-	ret
-.asm_932a3
-	ld hl, $b
-	add hl, bc
-	xor a
-	ld [hl], a
-	ld [hSCY], a ; $ff00+$d0
-	ret
-
-Function932ac: ; 932ac (24:72ac)
-	ld hl, $b
-	add hl, bc
-	ld e, [hl]
-	ld d, 0
-	ld hl, Jumptable_932bc
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_932bc: ; 932bc (24:72bc)
-	dw Function932c2
-	dw Function932e0
-	dw Function932fc
-
-
-Function932c2: ; 932c2 (24:72c2)
-	ld hl, $4
-	add hl, bc
-	ld a, [hl]
-	inc [hl]
-	cp $68
-	jr z, .asm_932d6
-	and $f
-	ret nz
-	ld de, SFX_JUMP_OVER_LEDGE
-	call PlaySFX
-	ret
-.asm_932d6
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld a, $1
-	ld [wcf64], a
-
-Function932e0: ; 932e0 (24:72e0)
-	ld a, [wcf64]
-	cp $2
-	jr z, .asm_932f1
-	cp $5
-	ret nz
-	ld hl, $0
-	add hl, bc
-	ld [hl], $0
-	ret
-.asm_932f1
-	ld hl, $b
-	add hl, bc
-	inc [hl]
-	ld hl, $c
-	add hl, bc
-	ld [hl], $8
-
-Function932fc: ; 932fc (24:72fc)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_93306
-	dec [hl]
-	ret
-.asm_93306
-	ld hl, $b
-	add hl, bc
-	dec [hl]
-	push bc
-	ld de, $606c
-	ld a, $8
-	call Function3b2a
-	pop bc
-	ret
-; 93316 (24:7316)
-
-Function93316: ; 93316
-	push bc
-	ld c, $10
-	call DelayFrames
-	pop bc
-	ret
-; 9331e
-
-Function9331e: ; 9331e (24:731e)
-	push de
-	ld e, a
-	ld d, 0
-	call PlaySFX
-	pop de
-	ret
-; 93327 (24:7327)
-
-Unknown_93327: ; 93327
-	db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14
-Unknown_93339: ; 93339
-	db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08
-Unknown_9334b: ; 9334b
-	db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08
-; 9335d
-
-SlotsTilemap: ; 9335d
-INCBIN "gfx/slots.tilemap"
-; 9344d
-
-Slots1LZ: ; 9344d
-INCBIN "gfx/slots_1.2bpp.lz"
-; 935cd
-
-Slots2LZ: ; 935cd
-INCBIN "gfx/slots_2.2bpp.lz"
-; 9382d
-
-Slots3LZ: ; 9382d
-INCBIN "gfx/slots_3.2bpp.lz"
-; 93a3d
-
-
-
 SECTION "bank28", ROMX, BANK[$28]
 
 INCLUDE "engine/more_phone_scripts.asm"
@@ -64247,876 +46077,27 @@
 
 SECTION "bank2E", ROMX, BANK[$2E]
 
-ReturnFromMapSetupScript:: ; b8000
-	xor a
-	ld [hBGMapMode], a
-	; For some reson, GameFreak chose to use a callba here instead of just falling through.
-	; No other function in the game references the function at 2E:400A, here labeled
-	; ReturnFromMapSetupScript.inefficientcallba.
-	callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
-	ret
-; b800a
+INCLUDE "engine/events_3.asm"
 
-.inefficientcallba: ; b800a
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetWorldMapLocation
-	ld [wc2d9], a
-	call Functionb8089
-	jr z, .asm_b8024
-
-	call GetMapPermission
-	cp $6
-	jr nz, .asm_b8029
-
-.asm_b8024
-	ld a, -1
-	ld [wc2d9], a
-
-.asm_b8029
-	ld hl, wd83e
-	bit 1, [hl]
-	res 1, [hl]
-	jr nz, .asm_b8054
-
-	call Functionb8064
-	jr z, .asm_b8054
-
-	ld a, [wc2d9]
-	ld [wc2d8], a
-	call Functionb8070
-	jr z, .asm_b8054
-
-	ld a, $3c
-	ld [wc2da], a
-	call Functionb80c6
-	call Functionb80d3
-	callba Function104303
-	ret
-
-.asm_b8054
-	ld a, [wc2d9]
-	ld [wc2d8], a
-	ld a, $90
-	ld [rWY], a
-	ld [hWY], a
-	xor a
-	ld [hLCDStatCustom], a
-	ret
-; b8064
-
-Functionb8064: ; b8064
-	ld a, [wc2d9]
-	ld c, a
-	ld a, [wc2d8]
-	cp c
-	ret z
-	cp $0
-	ret
-; b8070
-
-Functionb8070: ; b8070
-	cp -1
-	ret z
-	cp SPECIAL_MAP
-	ret z
-	cp RADIO_TOWER
-	ret z
-	cp LAV_RADIO_TOWER
-	ret z
-	cp UNDERGROUND
-	ret z
-	cp INDIGO_PLATEAU
-	ret z
-	cp POWER_PLANT
-	ret z
-	ld a, $1
-	and a
-	ret
-; b8089
-
-Functionb8089: ; 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
-
-
-Functionb8098:: ; b8098 (2e:4098)
-	ld hl, wc2da
-	ld a, [hl]
-	and a
-	jr z, .asm_b80bc
-	dec [hl]
-	cp $3c
-	ret z
-	cp $3b
-	jr nz, .asm_b80b3
-	call Functionb80d3
-	call Functionb80e1
-	callba Function104303
-.asm_b80b3
-	ld a, $80
-	ld a, $70
-	ld [rWY], a ; $ff00+$4a
-	ld [hWY], a ; $ff00+$d2
-	ret
-.asm_b80bc
-	ld a, $90
-	ld [rWY], a ; $ff00+$4a
-	ld [hWY], a ; $ff00+$d2
-	xor a
-	ld [hLCDStatCustom], a ; $ff00+$c6
-	ret
-
-
-Functionb80c6: ; b80c6
-	ld de, GFX_f9344
-	ld hl, VTiles2 tile $60
-	lb bc, BANK(GFX_f9344), $e
-	call Get2bpp
-	ret
-; b80d3
-
-Functionb80d3: ; b80d3
-	hlcoord 0, 0
-	ld b, $2
-	ld c, $12
-	call Functionb8115
-	call Functionb812f
-	ret
-; b80e1
-
-
-Functionb80e1: ; b80e1 (2e:40e1)
-	ld a, [wc2d9]
-	ld e, a
-	callba GetLandmarkName
-	call Functionb8101
-	ld a, $14
-	sub c
-	srl a
-	ld b, $0
-	ld c, a
-	hlcoord 0, 2
-	add hl, bc
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-
-Functionb8101: ; b8101 (2e:4101)
-	ld c, $0
-	push hl
-	ld hl, StringBuffer1
-.loop
-	ld a, [hli]
-	cp $50
-	jr z, .stop
-	cp $25
-	jr z, .loop
-	inc c
-	jr .loop
-.stop
-	pop hl
-	ret
-
-
-Functionb8115: ; b8115
-	ld de, AttrMap - TileMap
-	add hl, de
-rept 2
-	inc b
-endr
-rept 2
-	inc c
-endr
-	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
-
-Functionb812f: ; b812f
-	hlcoord 0, 0
-	ld a, $61
-	ld [hli], a
-	ld a, $62
-	call .Fill5Words
-	ld a, $64
-	ld [hli], a
-	ld a, $65
-	ld [hli], a
-	call .Fill18Bytes
-	ld a, $6b
-	ld [hli], a
-	ld a, $66
-	ld [hli], a
-	call .Fill18Bytes
-	ld a, $6c
-	ld [hli], a
-	ld a, $67
-	ld [hli], a
-	ld a, $68
-	call .Fill5Words
-	ld a, $6a
-	ld [hl], a
-	ret
-; b815b
-
-.Fill18Bytes: ; b815b
-	ld c, 18
-	ld a, $6d
-.loop
-	ld [hli], a
-	dec c
-	jr nz, .loop
-	ret
-; b8164
-
-.Fill5Words: ; b8164
-	ld c, 5
-	jr .enterloop
-
-.continueloop
-rept 2
-	ld [hli], a
-endr
-
-.enterloop
-	inc a
-rept 2
-	ld [hli], a
-endr
-	dec a
-	dec c
-	jr nz, .continueloop
-	ret
-; b8172
-
-CheckForSignpostItems: ; 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 wd1ec/wd1ed.
-	ld a, [XCoord]
-	add SCREEN_WIDTH / 4
-	ld [wd1ed], a
-	ld a, [YCoord]
-	add SCREEN_HEIGHT / 4
-	ld [wd1ec], a
-; Get the pointer for the first signpost header in the map...
-	ld hl, wdc02
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-; ... before even checking to see if there are any signposts on this map.
-	ld a, [wCurrentMapSignpostCount]
-	and a
-	jr z, .nosignpostitems
-; For i = 1:wCurrentMapSignpostCount...
-.loop
-; Store the counter in Buffer2, and store the signpost header pointer in the stack.
-	ld [Buffer2], a
-	push hl
-; Get the Y coordinate of the signpost.
-	call .GetFarByte
-	ld e, a
-; Is the Y coordinate of the signpost on the screen?  If not, go to the next signpost.
-	ld a, [wd1ec]
-	sub e
-	jr c, .next
-	cp SCREEN_HEIGHT / 2
-	jr nc, .next
-; Is the X coordinate of the signpost on the screen?  If not, go to the next signpost.
-	call .GetFarByte
-	ld d, a
-	ld a, [wd1ed]
-	sub d
-	jr c, .next
-	cp SCREEN_WIDTH / 2
-	jr nc, .next
-; Is this signpost a hidden item?  If not, go to the next signpost.
-	call .GetFarByte
-	cp SIGNPOST_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 signpost header pointer and increment it by the length of a signpost header.
-	pop hl
-	ld bc, 5
-	add hl, bc
-; Restore the signpost counter and decrement it.  If it hits zero, there are no hidden items in range.
-	ld a, [Buffer2]
-	dec a
-	jr nz, .loop
-
-.nosignpostitems
-	xor a
-	ret
-
-.itemnearby
-	pop hl
-	scf
-	ret
-; b81e2
-
-.GetFarByte: ; b81e2
-	ld a, [Buffer1]
-	call GetFarByte
-	inc hl
-	ret
-; b81ea
-
-
-TreeMonEncounter: ; b81ea
-	callba MobileFn_1060ef
-
-	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
-
-TreeMonMaps: ; b825e
-treemon_map: macro
-	map \1
-	db  \2 ; treemon set
-endm
-	treemon_map ROUTE_26, 4
-	treemon_map ROUTE_27, 4
-	treemon_map ROUTE_28, 0
-	treemon_map ROUTE_29, 3
-	treemon_map ROUTE_30, 3
-	treemon_map ROUTE_31, 3
-	treemon_map ROUTE_32, 4
-	treemon_map ROUTE_33, 2
-	treemon_map ROUTE_34, 3
-	treemon_map ROUTE_35, 3
-	treemon_map ROUTE_36, 3
-	treemon_map ROUTE_37, 3
-	treemon_map ROUTE_38, 3
-	treemon_map ROUTE_39, 3
-	treemon_map ROUTE_40, 0
-	treemon_map ROUTE_41, 0
-	treemon_map ROUTE_42, 2
-	treemon_map ROUTE_43, 5
-	treemon_map ROUTE_44, 1
-	treemon_map ROUTE_45, 1
-	treemon_map ROUTE_46, 1
-	treemon_map NEW_BARK_TOWN, 0
-	treemon_map CHERRYGROVE_CITY, 0
-	treemon_map VIOLET_CITY, 0
-	treemon_map AZALEA_TOWN, 2
-	treemon_map CIANWOOD_CITY, 0
-	treemon_map GOLDENROD_CITY, 0
-	treemon_map OLIVINE_CITY, 0
-	treemon_map ECRUTEAK_CITY, 0
-	treemon_map MAHOGANY_TOWN, 0
-	treemon_map LAKE_OF_RAGE, 5
-	treemon_map BLACKTHORN_CITY, 0
-	treemon_map SILVER_CAVE_OUTSIDE, 0
-	treemon_map ILEX_FOREST, 6
-	db -1
-; b82c5
-
-RockMonMaps: ; b82c5
-	treemon_map CIANWOOD_CITY, 7
-	treemon_map ROUTE_40, 7
-	treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
-	treemon_map SLOWPOKE_WELL_B1F, 7
-	db -1
-; b82d2
-
-GetTreeMons: ; b82d2
-; Return the address of TreeMon table a in hl.
-; Return nc if table a doesn't exist.
-
-	cp 8
-	jr nc, .quit
-
-	and a
-	jr z, .quit
-
-	ld e, a
-	ld d, 0
-	ld hl, TreeMons
-rept 2
-	add hl, de
-endr
-
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-
-	scf
-	ret
-
-.quit
-	xor a
-	ret
-; b82e8
-
-TreeMons: ; b82e8
-	dw TreeMons1
-	dw TreeMons1
-	dw TreeMons2
-	dw TreeMons3
-	dw TreeMons4
-	dw TreeMons5
-	dw TreeMons6
-	dw RockMons
-	dw TreeMons1
-
-; Two tables each (normal, rare).
-; Structure:
-;	db  %, species, level
-
-TreeMons1: ; b82fa
-	db 50, SPEAROW,    10
-	db 15, SPEAROW,    10
-	db 15, SPEAROW,    10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-	db 50, SPEAROW,    10
-	db 15, HERACROSS,  10
-	db 15, HERACROSS,  10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-TreeMons2: ; b8320
-	db 50, SPEAROW,    10
-	db 15, EKANS,      10
-	db 15, SPEAROW,    10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-	db 50, SPEAROW,    10
-	db 15, HERACROSS,  10
-	db 15, HERACROSS,  10
-	db 10, AIPOM,      10
-	db  5, AIPOM,      10
-	db  5, AIPOM,      10
-	db -1
-
-TreeMons3: ; b8346
-	db 50, HOOTHOOT,   10
-	db 15, SPINARAK,   10
-	db 15, LEDYBA,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons4: ; b836c
-	db 50, HOOTHOOT,   10
-	db 15, EKANS,      10
-	db 15, HOOTHOOT,   10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons5: ; b8392
-	db 50, HOOTHOOT,   10
-	db 15, VENONAT,    10
-	db 15, HOOTHOOT,   10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db  5, EXEGGCUTE,  10
-	db -1
-
-TreeMons6: ; b83b8
-	db 50, HOOTHOOT,   10
-	db 15, PINECO,     10
-	db 15, PINECO,     10
-	db 10, NOCTOWL,    10
-	db  5, BUTTERFREE, 10
-	db  5, BEEDRILL,   10
-	db -1
-
-	db 50, HOOTHOOT,   10
-	db 15, CATERPIE,   10
-	db 15, WEEDLE,     10
-	db 10, HOOTHOOT,   10
-	db  5, METAPOD,    10
-	db  5, KAKUNA,     10
-	db -1
-
-RockMons: ; b83de
-	db 90, KRABBY,     15
-	db 10, SHUCKLE,    15
-	db -1
-; b83e5
-
-GetTreeMon: ; b83e5
-	push hl
-	call GetTreeScore
-	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
-rept 3
-	inc hl
-endr
-	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
-
-
-Functionb84b3: ; b84b3
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-
-	ld de, FishingGFX
-	ld a, [PlayerGender]
-	bit 0, a
-	jr z, .asm_b84c7
-	ld de, KrisFishingGFX
-.asm_b84c7
-
-	ld hl, VTiles0 tile $02
-	call Functionb84e3
-	ld hl, VTiles0 tile $06
-	call Functionb84e3
-	ld hl, VTiles0 tile $0a
-	call Functionb84e3
-	ld hl, VTiles2 tile $00 - $40
-	call Functionb84e3
-
-	pop af
-	ld [rVBK], a
-	ret
-; b84e3
-
-Functionb84e3: ; b84e3
-	lb bc, BANK(FishingGFX), 2
-	push de
-	call Get2bpp
-	pop de
-	ld hl, $20
-	add hl, de
-	ld d, h
-	ld e, l
-	ret
-; b84f2
-
-FishingGFX: ; b84f2
-INCBIN "gfx/unknown/0b84f2.2bpp"
-; b8582
-
-KrisFishingGFX: ; b8582
-INCBIN "gfx/unknown/0b8582.2bpp"
-; b8612
-
 INCLUDE "engine/radio.asm"
 
 ReadPartyMonMail: ; b9229
 	ld a, [CurPartyMon]
-	ld hl, s0_a600
-	ld bc, PartyMon1StatsEnd - PartyMon1Item
+	ld hl, sPartyScratch1
+	ld bc, SCRATCHMON_STRUCT_LENGTH
 	call AddNTimes
 	ld d, h
 	ld e, l
 ReadAnyMail: ; b9237
 	push de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
-	call Functione5f
+	call LoadFontsExtra
 	pop de
 	push de
-	ld a, BANK(s0_a600)
+	ld a, BANK(sPartyScratch1)
 	call GetSRAMBank
 	callba Function1de5c8
 	call CloseSRAM
@@ -65144,9 +46125,9 @@
 	xor a
 	ld [hJoyPressed], a
 	call Functionb929a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
-	call Functione51
+	call LoadStandardFont
 	jp EnableLCD
 ; b929a
 
@@ -65175,7 +46156,7 @@
 	push hl
 	ld a, $0
 	call GetSRAMBank
-	ld de, $002b
+	ld de, $2b
 	add hl, de
 	ld a, [hli]
 	ld [Buffer1], a
@@ -65429,7 +46410,7 @@
 Functionb94d6: ; b94d6
 	push bc
 	ld hl, VTiles2 tile $31
-	ld bc, $0028
+	ld bc, $28
 	call Functionb97f8
 	ld de, Unknown_b9c96
 	ld c, 8
@@ -65509,7 +46490,7 @@
 	ld c, $8
 	call Functionb9915
 	ld a, $ff
-	ld bc, $0010
+	ld bc, $10
 	call ByteFill
 	ld de, Unknown_b992e
 	ld c, $8
@@ -65668,7 +46649,7 @@
 	ld a, $1
 	ld [UnownLetter], a
 	hlcoord 1, 10
-	call Function3786
+	call PrepMonFrontpic
 	pop hl
 	jp Functionb9803
 ; b9710
@@ -65686,7 +46667,7 @@
 	ld c, $30
 	call Functionb991e
 	xor a
-	ld bc, $0010
+	ld bc, $10
 	call ByteFill
 	ld de, Unknown_b9cfe
 	ld c, $18
@@ -65718,7 +46699,7 @@
 Functionb9776: ; b9776
 	push bc
 	ld hl, VTiles2 tile $31
-	ld bc, $0028
+	ld bc, $28
 	call Functionb97f8
 	ld de, Unknown_b992e
 	ld c, $8
@@ -65789,7 +46770,7 @@
 ; b9803
 
 Functionb9803: ; b9803
-	ld bc, $002f
+	ld bc, $2f
 	ld de, wd002
 	ld a, $0
 	call GetSRAMBank
@@ -65797,7 +46778,7 @@
 	call CloseSRAM
 	ld hl, wd023
 	ld de, wd050
-	ld bc, $000a
+	ld bc, $a
 	call CopyBytes
 	ld a, $50
 	ld [wd023], a
@@ -65969,7 +46950,7 @@
 	ld [hli], a
 	inc a
 	ld [hl], a
-	ld bc, $0013
+	ld bc, $13
 	add hl, bc
 	inc a
 	ld [hli], a
@@ -66196,7 +47177,43 @@
 
 INCLUDE "engine/phone_scripts.asm"
 
+TalkToTrainerScript:: ; 0xbe66a
+	faceplayer
+	trainerstatus CHECK_FLAG
+	iftrue AlreadyBeatenTrainerScript
+	loadtrainerdata
+	playrammusic
+	jump StartBattleWithMapTrainerScript
+; 0xbe675
 
+SeenByTrainerScript:: ; 0xbe675
+	loadtrainerdata
+	playrammusic
+	showemote EMOTE_SHOCK, LAST_TALKED, 30
+	callasm TrainerWalkToPlayer
+	applymovement2 MovementBuffer
+	writepersonxy LAST_TALKED
+	faceperson PLAYER, LAST_TALKED
+	jump StartBattleWithMapTrainerScript
+; 0xbe68a
+
+StartBattleWithMapTrainerScript: ; 0xbe68a
+	loadfont
+	trainertext $0
+	closetext
+	loadmovesprites
+	loadtrainerdata
+	startbattle
+	returnafterbattle
+	trainerstatus SET_FLAG
+	loadvar wd04d, -1
+
+AlreadyBeatenTrainerScript:
+	scripttalkafter
+; 0xbe699
+
+
+
 SECTION "bank30", ROMX, BANK[$30]
 
 INCLUDE "gfx/overworld/sprites_1.asm"
@@ -66233,7 +47250,7 @@
 
 .asm_cbcf7
 	call DmgToCgbBGPals
-	ld c, $4
+	ld c, 4
 	call DelayFrames
 	callba _UpdateTimePals
 	ret
@@ -66246,6 +47263,7 @@
 	ld hl, BGPals
 	ld c, $20
 .asm_cbd12
+; RGB 31, 21, 28
 	ld a, $bc
 	ld [hli], a
 	ld a, $7e
@@ -66256,7 +47274,7 @@
 	ld [rSVBK], a
 	ld a, $1
 	ld [hCGBPalUpdate], a
-	ld c, $4
+	ld c, 4
 	call DelayFrames
 	callba _UpdateTimePals
 	ret
@@ -66271,7 +47289,7 @@
 
 DisplayCaughtContestMonStats: ; cc000
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	call LoadFontsBattleExtra
@@ -66479,7 +47497,7 @@
 	ld hl, wd012
 	call Functione004e
 	pop hl
-	ld bc, $0010
+	ld bc, $10
 	add hl, bc
 	pop bc
 	inc c
@@ -66488,7 +47506,7 @@
 	jr c, .asm_e000b
 	ld hl, OverworldMap
 	ld de, sScratch
-	ld bc, $0310
+	ld bc, $310
 	call CopyBytes
 	pop hl
 	ld de, sScratch
@@ -66573,5836 +47591,10 @@
 	ret
 ; e00ee (38:40ee)
 
-_CardFlip: ; e00ee (38:40ee)
-	ld hl, Options
-	set 4, [hl]
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld de, MUSIC_NONE
-	call PlayMusic
-	call DelayFrame
-	call DisableLCD
-	call Functione51
-	call Functione5f
-	ld hl, LZ_e0d16
-	ld de, VTiles2 tile $00
-	call Decompress
-	ld hl, LZ_e0ea8
-	ld de, VTiles2 tile $3e
-	call Decompress
-	ld hl, LZ_e0cdb
-	ld de, VTiles0 tile $00
-	call Decompress
-	ld hl, GFX_e0cf6
-	ld de, VTiles1 tile $6f
-	ld bc, $10
-	call CopyBytes
-	ld hl, GFX_e0d06
-	ld de, VTiles1 tile $75
-	ld bc, $10
-	call CopyBytes
-	call Functione0521
-	call Functione04c1
-	call Functione0c37
-	call EnableLCD
-	call Function3200
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld de, $e4e4
-	call DmgToCgbObjPals
-	call DelayFrame
-	xor a
-	ld [wJumptableIndex], a
-	ld a, $2
-	ld [wcf64], a
-	ld [wcf65], a
-	ld de, MUSIC_GAME_CORNER
-	call PlayMusic
-.MasterLoop
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .leavethegame
-	call .CardFlip
-	jr .MasterLoop
-.leavethegame
-	call WaitSFX
-	ld de, SFX_QUIT_SLOTS
-	call PlaySFX
-	call WaitSFX
-	call WhiteBGMap
-	ld hl, Options
-	res 4, [hl]
-	ret
-
-.CardFlip: ; e0191 (38:4191)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e01a0 (38:41a0)
-
-.Jumptable: ; e01a0
-	dw .AskPlayWithThree
-	dw .DeductCoins
-	dw .ChooseACard
-	dw .PlaceYourBet
-	dw .CheckTheCard
-	dw .TabulateTheResult
-	dw .PlayAgain
-	dw .Quit
-; e01b0
-
-.Increment: ; e01b0
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e01b5
-
-.AskPlayWithThree: ; e01b5
-	ld hl, .PlayWithThreeCoinsText
-	call Functione0489
-	call YesNoBox
-	jr c, .SaidNo
-	call Functione0366
-	call .Increment
-	ret
-
-.SaidNo
-	ld a, $7
-	ld [wJumptableIndex], a
-	ret
-; e01cd
-
-.PlayWithThreeCoinsText: ; 0xe01cd
-	; Play with three coins?
-	text_jump UnknownText_0x1c5793
-	db "@"
-; 0xe01d2
-
-.DeductCoins: ; e01d2
-	ld a, [Coins]
-	ld h, a
-	ld a, [Coins + 1]
-	ld l, a
-	ld a, h
-	and a
-	jr nz, .deduct ; You have at least 256 coins.
-	ld a, l
-	cp 3
-	jr nc, .deduct ; You have at least 3 coins.
-	ld hl, .NotEnoughCoinsText
-	call Functione0489
-	ld a, $7
-	ld [wJumptableIndex], a
-	ret
-
-.deduct
-	ld de, -3
-	add hl, de
-	ld a, h
-	ld [Coins], a
-	ld a, l
-	ld [Coins + 1], a
-	ld de, SFX_TRANSACTION
-	call PlaySFX
-	xor a
-	ld [hBGMapMode], a
-	call Functione049c
-	ld a, $1
-	ld [hBGMapMode], a
-	call WaitSFX
-	call .Increment
-	ret
-; e0212
-
-.NotEnoughCoinsText: ; 0xe0212
-	; Not enough coins…
-	text_jump UnknownText_0x1c57ab
-	db "@"
-; 0xe0217
-
-.ChooseACard: ; e0217
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 0, 0
-	ld bc, $0c09
-	call Functione04e5
-	hlcoord 9, 0
-	ld bc, SCREEN_WIDTH
-	ld a, [wc6e8]
-	call AddNTimes
-	ld [hl], $f5
-	ld a, $1
-	ld [hBGMapMode], a
-	ld c, $14
-	call DelayFrames
-	hlcoord 2, 0
-	call Functione03c1
-	ld a, $1
-	ld [hBGMapMode], a
-	ld c, $14
-	call DelayFrames
-	hlcoord 2, 6
-	call Functione03c1
-	call WaitBGMap
-	ld hl, .ChooseACardText
-	call Functione0489
-	xor a
-	ld [wcf66], a
-.loop
-	call JoyTextDelay
-	ld a, [hJoyLast]
-	and A_BUTTON
-	jr nz, .next
-	ld de, SFX_KINESIS
-	call PlaySFX
-	call Functione0849
-	ld c, $4
-	call DelayFrames
-	ld hl, wcf66
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	jr .loop
-
-.next
-	ld de, SFX_SLOT_MACHINE_START
-	call PlaySFX
-	ld a, $3
-.loop2
-	push af
-	call Functione0849
-	ld c, $4
-	call DelayFrames
-	call ClearSprites
-	ld c, $4
-	call DelayFrames
-	pop af
-	dec a
-	jr nz, .loop2
-	ld hl, wcf66
-	ld a, [hl]
-	push af
-	xor $1
-	ld [hl], a
-	call Functione03ac
-	ld bc, $0605
-	call Functione04e5
-	pop af
-	ld [wcf66], a
-	call .Increment
-	ret
-; e02b2
-
-.ChooseACardText: ; 0xe02b2
-	; Choose a card.
-	text_jump UnknownText_0x1c57be
-	db "@"
-; 0xe02b7
-
-.PlaceYourBet: ; e02b7
-	ld hl, .PlaceYourBetText
-	call Functione0489
-.betloop
-	call JoyTextDelay
-	ld a, [hJoyLast]
-	and A_BUTTON
-	jr nz, .betdone
-	call Functione089c
-	call Functione0960
-	call DelayFrame
-	jr .betloop
-
-.betdone
-	call .Increment
-	ret
-; e02d5
-
-.PlaceYourBetText: ; 0xe02d5
-	; Place your bet.
-	text_jump UnknownText_0x1c57ce
-	db "@"
-; 0xe02da
-
-.CheckTheCard: ; e02da
-	xor a
-	ld [$ff9b], a
-	call Functione0960
-	call WaitSFX
-	ld de, SFX_CHOOSE_A_CARD
-	call PlaySFX
-	call WaitSFX
-	ld a, [wc6e8]
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-rept 2
-	add hl, de
-endr
-	ld a, [wcf66]
-	ld e, a
-	add hl, de
-	ld a, [hl]
-	ld [CurEnemyMoveNum], a
-	ld e, a
-	ld hl, wc6ea
-	add hl, de
-	ld [hl], $1
-	call Functione03ac
-	call Functione03ec
-	call Function3200
-	call .Increment
-	ret
-; e0314
-
-.TabulateTheResult: ; e0314
-	call Functione0637
-	call Functiona80
-	call .Increment
-	ret
-; e031e
-
-.PlayAgain: ; e031e
-	call ClearSprites
-	ld hl, .PlayAgainText
-	call Functione0489
-	call YesNoBox
-	jr nc, .Continue
-	call .Increment
-	ret
-
-.Continue
-	ld a, [wc6e8]
-	inc a
-	ld [wc6e8], a
-	cp $c
-	jr c, .KeepTheCurrentDeck
-	call Functione04c1
-	ld a, $1
-	ld [hBGMapMode], a
-	call Functione0366
-	ld hl, .CardsShuffledText
-	call PrintText
-	jr .LoopAround
-
-.KeepTheCurrentDeck
-	call Functione0534
-
-.LoopAround
-	ld a, $1
-	ld [wJumptableIndex], a
-	ret
-; e0356
-
-.PlayAgainText: ; 0xe0356
-	; Want to play again?
-	text_jump UnknownText_0x1c57df
-	db "@"
-; 0xe035b
-
-.CardsShuffledText: ; 0xe035b
-	; The cards have been shuffled.
-	text_jump UnknownText_0x1c57f4
-	db "@"
-; 0xe0360
-
-.Quit: ; e0360
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-; e0366
-
-Functione0366: ; e0366
-	ld hl, wc6d0
-	ld bc, $0018
-	xor a
-	call ByteFill
-	ld de, wc6d0
-	ld c, $17
-.asm_e0375
-	call Random
-	and $1f
-	cp $18
-	jr nc, .asm_e0375
-	ld l, a
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0375
-	ld [hl], c
-	dec c
-	jr nz, .asm_e0375
-	xor a
-	ld [wc6e8], a
-	ld hl, wc6ea
-	ld bc, $0018
-	call ByteFill
-	ret
-; e0398
-
-Functione0398: ; e0398
-	ld hl, 0
-	ld bc, $0006
-	ld a, [wcf64]
-	call AddNTimes
-	ld b, $0
-	ld a, [wcf65]
-	ld c, a
-	add hl, bc
-	ret
-; e03ac
-
-Functione03ac: ; e03ac
-	ld a, [wcf66]
-	and a
-	jr nz, .asm_e03ba
-	hlcoord 2, 0
-	ld bc, $1018
-	jr .asm_e03c0
-
-.asm_e03ba
-	hlcoord 2, 6
-	ld bc, $4018
-
-.asm_e03c0
-	ret
-; e03c1
-
-Functione03c1: ; e03c1
-	xor a
-	ld [hBGMapMode], a
-	ld de, Unknown_e03ce
-	lb bc, 6, 5
-	call Functione04f7
-	ret
-; e03ce
-
-Unknown_e03ce: ; e03ce
-	db $08, $09, $09, $09, $0a
-	db $0b, $28, $2b, $28, $0c
-	db $0b, $2c, $2d, $2e, $0c
-	db $0b, $2f, $30, $31, $0c
-	db $0b, $32, $33, $34, $0c
-	db $0d, $0e, $0e, $0e, $0f
-; e03ec
-
-Functione03ec: ; e03ec
-	xor a
-	ld [hBGMapMode], a
-	push hl
-	push hl
-	ld de, Unknown_e043b
-	lb bc, 6, 5
-	call Functione04f7
-	ld a, [CurEnemyMoveNum]
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_e0459
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	pop hl
-	ld bc, $0017
-	add hl, bc
-	ld [hl], e
-	ld bc, SCREEN_HEIGHT
-	add hl, bc
-	ld a, d
-	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e0418
-	push hl
-	ld c, $3
-.asm_e041b
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_e041b
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_e0418
-	pop hl
-	ld a, [hCGB]
-	and a
-	ret z
-	ld de, AttrMap - TileMap
-	add hl, de
-	ld a, [CurEnemyMoveNum]
-	and 3
-	inc a
-	lb bc, 6, 5
-	call Functione04e7
-	ret
-; e043b
+INCLUDE "engine/card_flip.asm"
+INCLUDE "engine/dummy_game.asm"
+INCLUDE "engine/billspc.asm"
 
-Unknown_e043b: ; e043b
-	db $18, $19, $19, $19, $1a
-	db $1b, $35, $7f, $7f, $1c
-	db $0b, $28, $28, $28, $0c
-	db $0b, $28, $28, $28, $0c
-	db $0b, $28, $28, $28, $0c
-	db $1d, $1e, $1e, $1e, $1f
-; e0459
-
-Unknown_e0459: ; e0459
-	db $f7,$4e, $f7,$57, $f7,$69, $f7,$60
-	db $f8,$4e, $f8,$57, $f8,$69, $f8,$60
-	db $f9,$4e, $f9,$57, $f9,$69, $f9,$60
-	db $fa,$4e, $fa,$57, $fa,$69, $fa,$60
-	db $fb,$4e, $fb,$57, $fb,$69, $fb,$60
-	db $fc,$4e, $fc,$57, $fc,$69, $fc,$60
-; e0489
-
-Functione0489: ; e0489
-	push hl
-	hlcoord 0, 12
-	ld b, $4
-	ld c, $12
-	call TextBox
-	pop hl
-	call PrintTextBoxText
-	call Functione049c
-	ret
-; e049c
-
-Functione049c: ; e049c
-	hlcoord 9, 15
-	ld b, $1
-	ld c, $9
-	call TextBox
-	hlcoord 10, 16
-	ld de, String_e04bc
-	call PlaceString
-	hlcoord 15, 16
-	ld de, Coins
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 4
-	call PrintNum
-	ret
-; e04bc
-
-String_e04bc:
-	db "COIN@"
-; e04c1
-
-Functione04c1: ; e04c1 (38:44c1)
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	hlcoord 0, 0
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	ld a, $29
-	call ByteFill
-	hlcoord 9, 0
-	ld de, Unknown_e110c
-	lb bc, 12, 11
-	call Functione04f7
-	hlcoord 0, 12
-	ld bc, $412
-	call TextBox
-	ret
-; e04e5 (38:44e5)
-
-Functione04e5: ; e04e5
-	ld a, $29
-
-Functione04e7: ; e04e7 (38:44e7)
-	push bc
-	push hl
-.asm_e04e9
-	ld [hli], a
-	dec c
-	jr nz, .asm_e04e9
-	pop hl
-	ld bc, $14
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, Functione04e7
-	ret
-
-Functione04f7: ; e04f7 (38:44f7)
-	push bc
-	push hl
-.asm_e04f9
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .asm_e04f9
-	pop hl
-	ld bc, $14
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, Functione04f7
-	ret
-; e0509 (38:4509)
-
-Functione0509: ; e0509
-	ld de, Sprites
-	ld a, [hli]
-.asm_e050d
-	push af
-	ld a, [hli]
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_e050d
-	ret
-; e0521
-
-Functione0521: ; e0521 (38:4521)
-	ld de, VTiles1 tile $76
-	ld hl, $8f62
-	ld bc, $9e
-	call CopyBytes
-	ld hl, $8ffe
-	xor a
-	ld [hli], a
-	ld [hl], a
-	ret
-; e0534 (38:4534)
-
-Functione0534: ; e0534
-	xor a
-	ld [hBGMapMode], a
-	ld a, [CurEnemyMoveNum]
-	ld e, a
-	ld d, 0
-	and 3
-	ld c, a
-	ld b, 0
-	ld a, e
-	and $1c
-	srl a
-	add Jumptable_e0553 % $100
-	ld l, a
-	ld a, 0
-	adc Jumptable_e0553 / $100
-	ld h, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e0553
-
-Jumptable_e0553: ; e0553
-	dw Functione055f
-	dw Functione0583
-	dw Functione05a7
-	dw Functione05cb
-	dw Functione05ef
-	dw Functione0613
-; e055f
-
-Functione055f: ; e055f
-	ld hl, wc6e6 + 8
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0575
-	hlcoord 13, 3
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $37
-	ret
-
-.asm_e0575
-	hlcoord 13, 3
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3d
-	ret
-; e0583
-
-Functione0583: ; e0583
-	ld hl, wc6e6
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0599
-	hlcoord 13, 4
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3b
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-
-.asm_e0599
-	hlcoord 13, 4
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3d
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-; e05a7
-
-Functione05a7: ; e05a7
-	ld hl, wc6e6 + 8
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e05bd
-	hlcoord 13, 6
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $38
-	ret
-
-.asm_e05bd
-	hlcoord 13, 6
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3d
-	ret
-; e05cb
-
-Functione05cb: ; e05cb
-	ld hl, wc6e6
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e05e1
-	hlcoord 13, 7
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3c
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-
-.asm_e05e1
-	hlcoord 13, 7
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3d
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-; e05ef
-
-Functione05ef: ; e05ef
-	ld hl, wc6e6 + 8
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0605
-	hlcoord 13, 9
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $39
-	ret
-
-.asm_e0605
-	hlcoord 13, 9
-rept 2
-	add hl, bc
-endr
-	ld [hl], $36
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3d
-	ret
-; e0613
-
-Functione0613: ; e0613
-	ld hl, wc6e6
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e0629
-	hlcoord 13, 10
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3c
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-
-.asm_e0629
-	hlcoord 13, 10
-rept 2
-	add hl, bc
-endr
-	ld [hl], $3d
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hl], $3a
-	ret
-; e0637
-
-Functione0637: ; e0637
-	call Functione0398
-	add hl, hl
-	ld de, Jumptable_e0643
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e0643
-
-Jumptable_e0643: ; e0643
-	dw Functione06a3
-	dw Functione06a3
-	dw Functione06a6
-	dw Functione06a6
-	dw Functione06b0
-	dw Functione06b0
-	dw Functione06a3
-	dw Functione06a3
-	dw Functione06ec
-	dw Functione06f6
-	dw Functione0702
-	dw Functione070e
-	dw Functione06c2
-	dw Functione0722
-	dw Functione0770
-	dw Functione0774
-	dw Functione0778
-	dw Functione077c
-	dw Functione06c2
-	dw Functione072c
-	dw Functione0780
-	dw Functione0784
-	dw Functione0788
-	dw Functione078c
-	dw Functione06cc
-	dw Functione0738
-	dw Functione0790
-	dw Functione0794
-	dw Functione0798
-	dw Functione079c
-	dw Functione06cc
-	dw Functione0744
-	dw Functione07a0
-	dw Functione07a4
-	dw Functione07a8
-	dw Functione07ac
-	dw Functione06d8
-	dw Functione0750
-	dw Functione07b0
-	dw Functione07b4
-	dw Functione07b8
-	dw Functione07bc
-	dw Functione06d8
-	dw Functione075c
-	dw Functione07c0
-	dw Functione07c4
-	dw Functione07c8
-	dw Functione07cc
-; e06a3
-
-Functione06a3: ; e06a3
-	jp Functione07db
-; e06a6
-
-Functione06a6: ; e06a6
-	ld a, [CurEnemyMoveNum]
-	and $2
-	jp nz, Functione07db
-	jr Functione06ba
-
-Functione06b0: ; e06b0
-	ld a, [CurEnemyMoveNum]
-	and $2
-	jr nz, Functione06ba
-	jp Functione07db
-
-Functione06ba: ; e06ba
-	ld c, $6
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e06c2
-
-Functione06c2: ; e06c2
-	ld a, [CurEnemyMoveNum]
-	and $18
-	jr z, Functione06e4
-	jp Functione07db
-
-Functione06cc: ; e06cc
-	ld a, [CurEnemyMoveNum]
-	and $18
-	cp $8
-	jr z, Functione06e4
-	jp Functione07db
-
-Functione06d8: ; e06d8
-	ld a, [CurEnemyMoveNum]
-	and $18
-	cp $10
-	jr z, Functione06e4
-	jp Functione07db
-
-Functione06e4: ; e06e4
-	ld c, $9
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e06ec
-
-Functione06ec: ; e06ec
-	ld a, [CurEnemyMoveNum]
-	and $3
-	jr z, Functione071a
-	jp Functione07db
-
-Functione06f6: ; e06f6
-	ld a, [CurEnemyMoveNum]
-	and $3
-	cp $1
-	jr z, Functione071a
-	jp Functione07db
-
-Functione0702: ; e0702
-	ld a, [CurEnemyMoveNum]
-	and $3
-	cp $2
-	jr z, Functione071a
-	jp Functione07db
-
-Functione070e: ; e070e
-	ld a, [CurEnemyMoveNum]
-	and $3
-	cp $3
-	jr z, Functione071a
-	jp Functione07db
-
-Functione071a: ; e071a
-	ld c, $c
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e0722
-
-Functione0722: ; e0722
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	jr z, Functione0768
-	jp Functione07db
-
-Functione072c: ; e072c
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $4
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0738: ; e0738
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $8
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0744: ; e0744
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $c
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0750: ; e0750
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $10
-	jr z, Functione0768
-	jp Functione07db
-
-Functione075c: ; e075c
-	ld a, [CurEnemyMoveNum]
-	and $1c
-	cp $14
-	jr z, Functione0768
-	jp Functione07db
-
-Functione0768: ; e0768
-	ld c, $12
-	ld de, SFX_2ND_PLACE
-	jp Functione07eb
-; e0770
-
-
-Functione0770: ; e0770
-	ld e, $0
-	jr Functione07ce
-
-Functione0774: ; e0774
-	ld e, $1
-	jr Functione07ce
-
-Functione0778: ; e0778
-	ld e, $2
-	jr Functione07ce
-
-Functione077c: ; e077c
-	ld e, $3
-	jr Functione07ce
-
-Functione0780: ; e0780
-	ld e, $4
-	jr Functione07ce
-
-Functione0784: ; e0784
-	ld e, $5
-	jr Functione07ce
-
-Functione0788: ; e0788
-	ld e, $6
-	jr Functione07ce
-
-Functione078c: ; e078c
-	ld e, $7
-	jr Functione07ce
-
-Functione0790: ; e0790
-	ld e, $8
-	jr Functione07ce
-
-Functione0794: ; e0794
-	ld e, $9
-	jr Functione07ce
-
-Functione0798: ; e0798
-	ld e, $a
-	jr Functione07ce
-
-Functione079c: ; e079c
-	ld e, $b
-	jr Functione07ce
-
-Functione07a0: ; e07a0
-	ld e, $c
-	jr Functione07ce
-
-Functione07a4: ; e07a4
-	ld e, $d
-	jr Functione07ce
-
-Functione07a8: ; e07a8
-	ld e, $e
-	jr Functione07ce
-
-Functione07ac: ; e07ac
-	ld e, $f
-	jr Functione07ce
-
-Functione07b0: ; e07b0
-	ld e, $10
-	jr Functione07ce
-
-Functione07b4: ; e07b4
-	ld e, $11
-	jr Functione07ce
-
-Functione07b8: ; e07b8
-	ld e, $12
-	jr Functione07ce
-
-Functione07bc: ; e07bc
-	ld e, $13
-	jr Functione07ce
-
-Functione07c0: ; e07c0
-	ld e, $14
-	jr Functione07ce
-
-Functione07c4: ; e07c4
-	ld e, $15
-	jr Functione07ce
-
-Functione07c8: ; e07c8
-	ld e, $16
-	jr Functione07ce
-
-Functione07cc: ; e07cc
-	ld e, $17
-
-Functione07ce: ; e07ce
-	ld a, [CurEnemyMoveNum]
-	cp e
-	jr nz, Functione07db
-	ld c, $48
-	ld de, SFX_2ND_PLACE
-	jr Functione07eb
-
-Functione07db: ; e07db
-	ld de, SFX_WRONG
-	call PlaySFX
-	ld hl, UnknownText_0xe0816
-	call Functione0489
-	call WaitSFX
-	ret
-
-Functione07eb: ; e07eb
-	push bc
-	push de
-	ld hl, UnknownText_0xe0811
-	call Functione0489
-	pop de
-	call PlaySFX
-	call WaitSFX
-	pop bc
-.asm_e07fb
-	push bc
-	call Functione0833
-	jr c, .asm_e0804
-	call Functione081b
-
-.asm_e0804
-	call Functione049c
-	ld c, $2
-	call DelayFrames
-	pop bc
-	dec c
-	jr nz, .asm_e07fb
-	ret
-; e0811
-
-UnknownText_0xe0811: ; 0xe0811
-	; Yeah!
-	text_jump UnknownText_0x1c5813
-	db "@"
-; 0xe0816
-
-UnknownText_0xe0816: ; 0xe0816
-	; Darn…
-	text_jump UnknownText_0x1c581a
-	db "@"
-; 0xe081b
-
-Functione081b: ; e081b
-	ld a, [Coins]
-	ld h, a
-	ld a, [Coins + 1]
-	ld l, a
-	inc hl
-	ld a, h
-	ld [Coins], a
-	ld a, l
-	ld [Coins + 1], a
-	ld de, SFX_PAY_DAY
-	call PlaySFX
-	ret
-; e0833
-
-Functione0833: ; e0833
-	ld a, [Coins]
-	cp 9999 / $100
-	jr c, .asm_e0847
-	jr z, .asm_e083e
-	jr .asm_e0845
-
-.asm_e083e
-	ld a, [Coins + 1]
-	cp 9999 % $100
-	jr c, .asm_e0847
-
-.asm_e0845
-	scf
-	ret
-
-.asm_e0847
-	and a
-	ret
-; e0849
-
-Functione0849: ; e0849
-	call Functione03ac
-	ld hl, Unknown_e0853
-	call Functione0509
-	ret
-; e0853
-
-Unknown_e0853: ; e0853
-	db 18
-	db $00, $00, $04, $00
-	db $00, $08, $06, $00
-	db $00, $10, $06, $00
-	db $00, $18, $06, $00
-	db $00, $20, $04, $20
-	db $08, $00, $05, $00
-	db $08, $20, $05, $20
-	db $10, $00, $05, $00
-	db $10, $20, $05, $20
-	db $18, $00, $05, $00
-	db $18, $20, $05, $20
-	db $20, $00, $05, $00
-	db $20, $20, $05, $20
-	db $28, $00, $04, $40
-	db $28, $08, $06, $40
-	db $28, $10, $06, $40
-	db $28, $18, $06, $40
-	db $28, $20, $04, $60
-; e089c
-
-Functione089c: ; e089c
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_LEFT
-	jp nz, Functione08b8
-	ld a, [hl]
-	and D_RIGHT
-	jp nz, Functione08ef
-	ld a, [hl]
-	and D_UP
-	jp nz, Functione090a
-	ld a, [hl]
-	and D_DOWN
-	jp nz, Functione093d
-	ret
-; e08b8
-
-Functione08b8: ; e08b8
-	ld hl, wcf65
-	ld a, [wcf64]
-	and a
-	jr z, .asm_e08d5
-	cp $1
-	jr z, .asm_e08cc
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	jp Functione0959
-
-.asm_e08cc
-	ld a, [hl]
-	cp $3
-	jr c, .asm_e08e2
-	dec [hl]
-	jp Functione0959
-
-.asm_e08d5
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $3
-	jr c, .asm_e08e2
-rept 2
-	dec [hl]
-endr
-	jp Functione0959
-
-.asm_e08e2
-	ld a, $2
-	ld [wcf64], a
-	ld a, $1
-	ld [wcf65], a
-	jp Functione0959
-; e08ef
-
-Functione08ef: ; e08ef
-	ld hl, wcf65
-	ld a, [wcf64]
-	and a
-	jr z, .asm_e08ff
-	ld a, [hl]
-	cp $5
-	ret nc
-	inc [hl]
-	jr Functione0959
-
-.asm_e08ff
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $4
-	ret nc
-rept 2
-	inc [hl]
-endr
-	jr Functione0959
-
-Functione090a: ; e090a
-	ld hl, wcf64
-	ld a, [wcf65]
-	and a
-	jr z, .asm_e0925
-	cp $1
-	jr z, .asm_e091d
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	jr Functione0959
-
-.asm_e091d
-	ld a, [hl]
-	cp $3
-	jr c, .asm_e0931
-	dec [hl]
-	jr Functione0959
-
-.asm_e0925
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $3
-	jr c, .asm_e0931
-rept 2
-	dec [hl]
-endr
-	jr Functione0959
-
-.asm_e0931
-	ld a, $1
-	ld [wcf64], a
-	ld a, $2
-	ld [wcf65], a
-	jr Functione0959
-
-Functione093d: ; e093d
-	ld hl, wcf64
-	ld a, [wcf65]
-	and a
-	jr z, .asm_e0950
-	ld hl, wcf64
-	ld a, [hl]
-	cp $7
-	ret nc
-	inc [hl]
-	jr Functione0959
-
-.asm_e0950
-	ld a, [hl]
-	and $e
-	ld [hl], a
-	cp $6
-	ret nc
-rept 2
-	inc [hl]
-endr
-
-Functione0959: ; e0959
-	ld de, SFX_POKEBALLS_PLACED_ON_TABLE
-	call PlaySFX
-	ret
-; e0960
-
-Functione0960: ; e0960
-	call ClearSprites
-	ld a, [hCGB]
-	and a
-	jr nz, .asm_e096d
-	ld a, [$ff9b]
-	and $4
-	ret nz
-
-.asm_e096d
-	call Functione0398
-rept 2
-	add hl, hl
-endr
-	ld de, Unknown_e0981
-	add hl, de
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Functione0509
-	ret
-; e0981
-
-Unknown_e0981: ; e0981
-	dbbw $58, $10, Unknown_e0c26
-	dbbw $60, $10, Unknown_e0c26
-	dbbw $68, $10, Unknown_e0b8d
-	dbbw $68, $10, Unknown_e0b8d
-	dbbw $88, $10, Unknown_e0b8d
-	dbbw $88, $10, Unknown_e0b8d
-
-	dbbw $58, $18, Unknown_e0c26
-	dbbw $60, $18, Unknown_e0c26
-	dbbw $68, $18, Unknown_e0a5a
-	dbbw $78, $18, Unknown_e0a5a
-	dbbw $88, $18, Unknown_e0a5a
-	dbbw $98, $18, Unknown_e0a5a
-
-	dbbw $58, $28, Unknown_e0b14
-	dbbw $60, $28, Unknown_e0ac3
-	dbbw $68, $28, Unknown_e0a41
-	dbbw $78, $28, Unknown_e0a41
-	dbbw $88, $28, Unknown_e0a41
-	dbbw $98, $28, Unknown_e0a41
-	dbbw $58, $28, Unknown_e0b14
-
-	dbbw $60, $34, Unknown_e0ac3
-	dbbw $68, $34, Unknown_e0a41
-	dbbw $78, $34, Unknown_e0a41
-	dbbw $88, $34, Unknown_e0a41
-	dbbw $98, $34, Unknown_e0a41
-
-	dbbw $58, $40, Unknown_e0b14
-	dbbw $60, $40, Unknown_e0ac3
-	dbbw $68, $40, Unknown_e0a41
-	dbbw $78, $40, Unknown_e0a41
-	dbbw $88, $40, Unknown_e0a41
-	dbbw $98, $40, Unknown_e0a41
-	dbbw $58, $40, Unknown_e0b14
-
-	dbbw $60, $4c, Unknown_e0ac3
-	dbbw $68, $4c, Unknown_e0a41
-	dbbw $78, $4c, Unknown_e0a41
-	dbbw $88, $4c, Unknown_e0a41
-	dbbw $98, $4c, Unknown_e0a41
-
-	dbbw $58, $58, Unknown_e0b14
-	dbbw $60, $58, Unknown_e0ac3
-	dbbw $68, $58, Unknown_e0a41
-	dbbw $78, $58, Unknown_e0a41
-	dbbw $88, $58, Unknown_e0a41
-	dbbw $98, $58, Unknown_e0a41
-	dbbw $58, $58, Unknown_e0b14
-
-	dbbw $60, $64, Unknown_e0ac3
-	dbbw $68, $64, Unknown_e0a41
-	dbbw $78, $64, Unknown_e0a41
-	dbbw $88, $64, Unknown_e0a41
-	dbbw $98, $64, Unknown_e0a41
-; e0a41
-
-Unknown_e0a41: ; e0a41
-	db 6
-	db $00, $ff, $00, $80
-	db $00, $00, $02, $80
-	db $00, $08, $03, $80
-	db $05, $ff, $00, $c0
-	db $05, $00, $02, $c0
-	db $05, $08, $03, $80
-
-Unknown_e0a5a: ; e0a5a
-	db 26
-	db $00, $ff, $00, $80
-	db $00, $00, $02, $80
-	db $00, $08, $00, $a0
-	db $08, $ff, $01, $80
-	db $08, $08, $01, $a0
-	db $10, $ff, $01, $80
-	db $10, $08, $03, $80
-	db $18, $ff, $01, $80
-	db $18, $08, $03, $80
-	db $20, $ff, $01, $80
-	db $20, $08, $03, $80
-	db $28, $ff, $01, $80
-	db $28, $08, $03, $80
-	db $30, $ff, $01, $80
-	db $30, $08, $03, $80
-	db $38, $ff, $01, $80
-	db $38, $08, $03, $80
-	db $40, $ff, $01, $80
-	db $40, $08, $03, $80
-	db $48, $ff, $01, $80
-	db $48, $08, $03, $80
-	db $50, $ff, $01, $80
-	db $50, $08, $03, $80
-	db $51, $ff, $00, $c0
-	db $51, $00, $02, $c0
-	db $51, $08, $03, $80
-
-Unknown_e0ac3: ; e0ac3
-	db 20
-	db $00, $ff, $00, $80
-	db $00, $00, $02, $80
-	db $00, $08, $02, $80
-	db $00, $10, $03, $80
-	db $00, $18, $02, $80
-	db $00, $20, $03, $80
-	db $00, $28, $02, $80
-	db $00, $30, $03, $80
-	db $00, $38, $02, $80
-	db $00, $40, $03, $80
-	db $05, $ff, $00, $c0
-	db $05, $00, $02, $c0
-	db $05, $08, $02, $c0
-	db $05, $10, $03, $80
-	db $05, $18, $02, $c0
-	db $05, $20, $03, $80
-	db $05, $28, $02, $c0
-	db $05, $30, $03, $80
-	db $05, $38, $02, $c0
-	db $05, $40, $03, $80
-
-Unknown_e0b14: ; e0b14
-	db 30
-	db $00, $00, $00, $80
-	db $00, $08, $02, $80
-	db $00, $10, $02, $80
-	db $00, $18, $03, $80
-	db $00, $20, $02, $80
-	db $00, $28, $03, $80
-	db $00, $30, $02, $80
-	db $00, $38, $03, $80
-	db $00, $40, $02, $80
-	db $00, $48, $03, $80
-	db $08, $00, $01, $80
-	db $08, $18, $03, $80
-	db $08, $28, $03, $80
-	db $08, $38, $03, $80
-	db $08, $48, $03, $80
-	db $10, $00, $01, $80
-	db $10, $18, $03, $80
-	db $10, $28, $03, $80
-	db $10, $38, $03, $80
-	db $10, $48, $03, $80
-	db $11, $00, $00, $c0
-	db $11, $08, $02, $c0
-	db $11, $10, $02, $c0
-	db $11, $18, $03, $80
-	db $11, $20, $03, $80
-	db $11, $28, $03, $80
-	db $11, $30, $03, $80
-	db $11, $38, $03, $80
-	db $11, $40, $03, $80
-	db $11, $48, $03, $80
-
-Unknown_e0b8d: ; e0b8d
-	db 38
-	db $00, $ff, $00, $80
-	db $00, $18, $00, $a0
-	db $08, $ff, $01, $80
-	db $08, $18, $01, $a0
-	db $10, $ff, $01, $80
-	db $10, $18, $01, $a0
-	db $18, $ff, $01, $80
-	db $18, $08, $03, $80
-	db $18, $18, $03, $80
-	db $20, $ff, $01, $80
-	db $20, $08, $03, $80
-	db $20, $18, $03, $80
-	db $28, $ff, $01, $80
-	db $28, $08, $03, $80
-	db $28, $18, $03, $80
-	db $30, $ff, $01, $80
-	db $30, $08, $03, $80
-	db $30, $18, $03, $80
-	db $38, $ff, $01, $80
-	db $38, $08, $03, $80
-	db $38, $18, $03, $80
-	db $40, $ff, $01, $80
-	db $40, $08, $03, $80
-	db $40, $18, $03, $80
-	db $48, $ff, $01, $80
-	db $48, $08, $03, $80
-	db $48, $18, $03, $80
-	db $50, $ff, $01, $80
-	db $50, $08, $03, $80
-	db $50, $18, $03, $80
-	db $58, $ff, $01, $80
-	db $58, $08, $03, $80
-	db $58, $18, $03, $80
-	db $59, $ff, $00, $c0
-	db $59, $00, $02, $c0
-	db $59, $08, $03, $c0
-	db $59, $10, $02, $c0
-	db $59, $18, $03, $e0
-
-Unknown_e0c26: ; e0c26
-	db 4
-	db $00, $00, $00, $80
-	db $00, $08, $00, $a0
-	db $08, $00, $00, $c0
-	db $08, $08, $00, $e0
-; e0c37
-
-Functione0c37: ; e0c37 (38:4c37)
-	ld a, [hCGB] ; $ff00+$e6
-	and a
-	ret z
-	hlcoord 0, 0, AttrMap
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	hlcoord 12, 1, AttrMap
-	ld bc, $202
-	ld a, $1
-	call Functione04e7
-	hlcoord 14, 1, AttrMap
-	ld bc, $202
-	ld a, $2
-	call Functione04e7
-	hlcoord 16, 1, AttrMap
-	ld bc, $202
-	ld a, $3
-	call Functione04e7
-	hlcoord 18, 1, AttrMap
-	ld bc, $202
-	ld a, $4
-	call Functione04e7
-	hlcoord 9, 0, AttrMap
-	ld bc, $c01
-	ld a, $1
-	call Functione04e7
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Palette_e0c93
-	ld de, Unkn1Pals
-	ld bc, $48
-	call CopyBytes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-; e0c93 (38:4c93)
-
-Palette_e0c93: ; e0c93
-	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
-; e0cdb
-
-LZ_e0cdb: ; e0cdb
-INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
-
-GFX_e0cf6: ; e0cf6
-INCBIN "gfx/unknown/0e0cf6.2bpp"
-
-GFX_e0d06: ; e0d06
-INCBIN "gfx/unknown/0e0d06.2bpp"
-
-LZ_e0d16: ; e0d16
-INCBIN "gfx/unknown/0e0d16.2bpp.lz"
-
-LZ_e0ea8: ; e0ea8
-INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
-
-Unknown_e110c: ; e110c
-	db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
-	db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b
-	db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d
-	db $ef, $25, $04, $00, $01, $00, $01, $00, $01, $00, $01
-	db $ef, $05, $14, $10, $11, $10, $11, $10, $11, $10, $11
-	db $ef, $16, $24, $20, $21, $20, $21, $20, $21, $20, $21
-	db $ef, $25, $04, $00, $02, $00, $02, $00, $02, $00, $02
-	db $ef, $05, $14, $10, $12, $10, $12, $10, $12, $10, $12
-	db $ef, $16, $24, $20, $22, $20, $22, $20, $22, $20, $22
-	db $ef, $25, $04, $00, $03, $00, $03, $00, $03, $00, $03
-	db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13
-	db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23
-; e1190
-
-Functione1190: ; e1190
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	xor a
-	ld [hBGMapMode], a
-	call DisableLCD
-	ld hl, wc608
-	ld bc, $01e0
-	xor a
-	call ByteFill
-	ld hl, GFX_e17c5
-	ld de, VTiles1 tile $60
-	ld bc, $0040
-	call CopyBytes
-	ld hl, LZ_e1805
-	ld de, VTiles1 tile $6d
-	call Decompress
-	call Functione17a3
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $ee
-	call ByteFill
-	hlcoord 4, 3
-	ld bc, $0c0c
-	ld a, $ef
-	call Functione13ee
-	call Functione124e
-	call Functione13fe
-	call Functione127d
-	xor a
-	ld [hSCY], a
-	ld [hSCX], a
-	ld [rWY], a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ld a, $93
-	ld [rLCDC], a
-	call WaitBGMap
-	ld b, $18
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $24
-	call Functioncf8
-	xor a
-	ld [wd0ec], a
-	call DelayFrame
-.asm_e1217
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e123d
-	call Functione12ca
-	ld a, [wcf64]
-	and a
-	jr nz, .asm_e1230
-	ld a, [$ff9b]
-	and $10
-	jr z, .asm_e1235
-
-.asm_e1230
-	call Functione14d9
-	jr .asm_e1238
-
-.asm_e1235
-	call ClearSprites
-
-.asm_e1238
-	call DelayFrame
-	jr .asm_e1217
-
-.asm_e123d
-	pop af
-	ld [hInMenu], a
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	ld a, $e3
-	ld [rLCDC], a
-	ret
-; e124e
-
-Functione124e: ; e124e
-	ld c, $1
-	ld b, $10
-.asm_e1252
-	call Random
-	and $f
-	ld hl, Unknown_e126d
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld e, [hl]
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e1252
-	ld [hl], c
-	inc c
-	dec b
-	jr nz, .asm_e1252
-	ret
-; e126d
-
-Unknown_e126d: ; e126d
-	db $00, $01, $02, $03
-	db $04, $05, $06, $0b
-	db $0c, $11, $12, $17
-	db $18, $1d, $1e, $23
-; e127d
-
-Functione127d: ; e127d
-	call Functione128d
-	hlcoord 5, 16
-	ld a, $f6
-	ld c, $a
-.asm_e1287
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_e1287
-	ret
-; e128d
-
-Functione128d: ; e128d
-	hlcoord 4, 15
-	ld a, $f0
-	ld [hli], a
-	ld bc, $000a
-	ld a, $f1
-	call ByteFill
-	hlcoord 15, 15
-	ld a, $f2
-	ld [hli], a
-	hlcoord 4, 16
-	ld a, $f3
-	ld [hli], a
-	ld bc, $000a
-	ld a, $ef
-	call ByteFill
-	hlcoord 15, 16
-	ld a, $f3
-	ld [hli], a
-	hlcoord 4, 17
-	ld a, $f4
-	ld [hli], a
-	ld bc, $000a
-	ld a, $f1
-	call ByteFill
-	hlcoord 15, 17
-	ld a, $f5
-	ld [hl], a
-	ret
-; e12ca
-
-Functione12ca: ; e12ca
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_e12d9
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e12d9
-
-Jumptable_e12d9: ; e12d9
-	dw Functione12db
-; e12db
-
-Functione12db: ; e12db
-	ld a, [hJoyPressed]
-	and START
-	jp nz, Functione13de
-	ld a, [hJoyPressed]
-	and A_BUTTON
-	jp nz, Functione1376
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .asm_e1301
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .asm_e130d
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .asm_e1325
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .asm_e1345
-	ret
-
-.asm_e1301
-	ld hl, wcf65
-	ld a, [hl]
-	cp $6
-	ret c
-	sub $6
-	ld [hl], a
-	jr .asm_e1364
-
-.asm_e130d
-	ld hl, wcf65
-	ld a, [hl]
-	cp $19
-	ret z
-	cp $1a
-	ret z
-	cp $1b
-	ret z
-	cp $1c
-	ret z
-	cp $1e
-	ret nc
-	add $6
-	ld [hl], a
-	jr .asm_e1364
-
-.asm_e1325
-	ld hl, wcf65
-	ld a, [hl]
-	and a
-	ret z
-	cp $6
-	ret z
-	cp $c
-	ret z
-	cp $12
-	ret z
-	cp $18
-	ret z
-	cp $1e
-	ret z
-	cp $23
-	jr z, .asm_e1341
-	dec [hl]
-	jr .asm_e1364
-
-.asm_e1341
-	ld [hl], $1e
-	jr .asm_e1364
-
-.asm_e1345
-	ld hl, wcf65
-	ld a, [hl]
-	cp $5
-	ret z
-	cp $b
-	ret z
-	cp $11
-	ret z
-	cp $17
-	ret z
-	cp $1d
-	ret z
-	cp $23
-	ret z
-	cp $1e
-	jr z, .asm_e1362
-	inc [hl]
-	jr .asm_e1364
-
-.asm_e1362
-	ld [hl], $23
-
-.asm_e1364
-	ld a, [wcf64]
-	and a
-	jr nz, .asm_e136f
-	ld de, SFX_POUND
-	jr .asm_e1372
-
-.asm_e136f
-	ld de, SFX_MOVE_PUZZLE_PIECE
-
-.asm_e1372
-	call PlaySFX
-	ret
-; e1376
-
-Functione1376: ; e1376
-	ld a, [wcf64]
-	and a
-	jr nz, .asm_e139f
-	call Functione1475
-	and a
-	jr z, Functione13e4
-	ld de, SFX_MEGA_KICK
-	call PlaySFX
-	ld [hl], $0
-	ld [wcf66], a
-	call Functione14d9
-	call Functione1441
-	call WaitBGMap
-	call WaitSFX
-	ld a, $1
-	ld [wcf64], a
-	ret
-
-.asm_e139f
-	call Functione1475
-	and a
-	jr nz, Functione13e4
-	ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
-	call PlaySFX
-	ld a, [wcf66]
-	ld [hl], a
-	call Functione141f
-	call WaitBGMap
-	xor a
-	ld [wcf66], a
-	call Functione14d9
-	xor a
-	ld [wcf64], a
-	call WaitSFX
-	call Functione14a0
-	ret nc
-	call Functione128d
-	call ClearSprites
-	ld de, SFX_1ST_PLACE
-	call PlaySFX
-	call WaitSFX
-	call Functionaa5
-	ld a, $1
-	ld [wd0ec], a
-
-Functione13de: ; e13de
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Functione13e4: ; e13e4
-	ld de, SFX_WRONG
-	call PlaySFX
-	call WaitSFX
-	ret
-; e13ee
-
-Functione13ee: ; e13ee
-	ld de, SCREEN_WIDTH
-.asm_e13f1
-	push bc
-	push hl
-.asm_e13f3
-	ld [hli], a
-	dec c
-	jr nz, .asm_e13f3
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_e13f1
-	ret
-; e13fe
-
-Functione13fe: ; e13fe
-	xor a
-	ld [wcf65], a
-	ld c, $24
-.asm_e1404
-	push bc
-	call Functione1475
-	ld [wcf66], a
-	and a
-	jr z, .asm_e1413
-	call Functione141f
-	jr .asm_e1416
-
-.asm_e1413
-	call Functione1441
-
-.asm_e1416
-	ld hl, wcf65
-	inc [hl]
-	pop bc
-	dec c
-	jr nz, .asm_e1404
-	ret
-; e141f
-
-Functione141f: ; e141f
-	ld a, $2
-	call Functione1463
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	push hl
-	call Functione1481
-	pop hl
-	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e1431
-	ld c, $3
-	push hl
-.asm_e1434
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_e1434
-	add $9
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_e1431
-	ret
-; e1441
-
-Functione1441: ; e1441
-	ld a, $2
-	call Functione1463
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	push hl
-	ld a, $4
-	call Functione1463
-	ld a, [hl]
-	pop hl
-	ld de, SCREEN_WIDTH
-	ld b, $3
-.asm_e1456
-	ld c, $3
-	push hl
-.asm_e1459
-	ld [hli], a
-	dec c
-	jr nz, .asm_e1459
-	pop hl
-	add hl, de
-	dec b
-	jr nz, .asm_e1456
-	ret
-; e1463
-
-Functione1463: ; e1463
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_e1559
-	add hl, de
-	ld a, [wcf65]
-	ld e, a
-rept 4
-	add hl, de
-endr
-rept 2
-	add hl, de
-endr
-	ret
-; e1475
-
-Functione1475: ; e1475
-	ld hl, wc6d0
-	ld a, [wcf65]
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	ret
-; e1481
-
-Functione1481: ; e1481
-	ld a, [wcf66]
-	ld hl, Unknown_e148f
-	add l
-	ld l, a
-	ld a, $0
-	adc h
-	ld h, a
-	ld a, [hl]
-	ret
-; e148f
-
-Unknown_e148f: ; e148f
-	db $e0
-	db $00, $03, $06, $09
-	db $24, $27, $2a, $2d
-	db $48, $4b, $4e, $51
-	db $6c, $6f, $72, $75
-; e14a0
-
-Functione14a0: ; e14a0
-	ld hl, Unknown_e14b5
-	ld de, wc6d0
-	ld c, $24
-.asm_e14a8
-	ld a, [de]
-	cp [hl]
-	jr nz, .asm_e14b3
-	inc de
-	inc hl
-	dec c
-	jr nz, .asm_e14a8
-	scf
-	ret
-
-.asm_e14b3
-	and a
-	ret
-; e14b5
-
-Unknown_e14b5: ; e14b5
-	db $00, $00, $00, $00, $00, $00
-	db $00, $01, $02, $03, $04, $00
-	db $00, $05, $06, $07, $08, $00
-	db $00, $09, $0a, $0b, $0c, $00
-	db $00, $0d, $0e, $0f, $10, $00
-	db $00, $00, $00, $00, $00, $00
-; e14d9
-
-Functione14d9: ; e14d9
-	call Functione1481
-	ld [DefaultFlypoint], a
-	xor a
-	call Functione1463
-	ld a, [hli]
-	ld b, [hl]
-	ld c, a
-	ld a, [DefaultFlypoint]
-	cp $e0
-	jr z, .asm_e14f2
-	ld hl, Unknown_e150f
-	jr .asm_e14f5
-
-.asm_e14f2
-	ld hl, Unknown_e1534
-
-.asm_e14f5
-	ld de, Sprites
-.asm_e14f8
-	ld a, [hli]
-	cp $ff
-	ret z
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [DefaultFlypoint]
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	jr .asm_e14f8
-; e150f
-
-Unknown_e150f: ; e150f
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $02, $00
-	db $fc, $f4, $0c, $00
-	db $fc, $fc, $0d, $00
-	db $fc, $04, $0e, $00
-	db $04, $f4, $18, $00
-	db $04, $fc, $19, $00
-	db $04, $04, $1a, $00
-	db $ff
-
-Unknown_e1534: ; e1534
-	db $f4, $f4, $00, $00
-	db $f4, $fc, $01, $00
-	db $f4, $04, $00, $20
-	db $fc, $f4, $02, $00
-	db $fc, $fc, $03, $00
-	db $fc, $04, $02, $20
-	db $04, $f4, $00, $40
-	db $04, $fc, $01, $40
-	db $04, $04, $00, $60
-	db $ff
-
-Unknown_e1559: ; e1559
-
-macro_e1559: macro
-	db \1, \2
-	dwcoord \3, \4
-	db \5, \6
-endm
-
-	macro_e1559 $1c, $1c,  1,  0, $ee, $00
-	macro_e1559 $34, $1c,  4,  0, $ee, $00
-	macro_e1559 $4c, $1c,  7,  0, $ee, $00
-	macro_e1559 $64, $1c, 10,  0, $ee, $00
-	macro_e1559 $7c, $1c, 13,  0, $ee, $00
-	macro_e1559 $94, $1c, 16,  0, $ee, $00
-	macro_e1559 $1c, $34,  1,  3, $ee, $00
-	macro_e1559 $34, $34,  4,  3, $ef, $00
-	macro_e1559 $4c, $34,  7,  3, $ef, $00
-	macro_e1559 $64, $34, 10,  3, $ef, $00
-	macro_e1559 $7c, $34, 13,  3, $ef, $00
-	macro_e1559 $94, $34, 16,  3, $ee, $00
-	macro_e1559 $1c, $4c,  1,  6, $ee, $00
-	macro_e1559 $34, $4c,  4,  6, $ef, $00
-	macro_e1559 $4c, $4c,  7,  6, $ef, $00
-	macro_e1559 $64, $4c, 10,  6, $ef, $00
-	macro_e1559 $7c, $4c, 13,  6, $ef, $00
-	macro_e1559 $94, $4c, 16,  6, $ee, $00
-	macro_e1559 $1c, $64,  1,  9, $ee, $00
-	macro_e1559 $34, $64,  4,  9, $ef, $00
-	macro_e1559 $4c, $64,  7,  9, $ef, $00
-	macro_e1559 $64, $64, 10,  9, $ef, $00
-	macro_e1559 $7c, $64, 13,  9, $ef, $00
-	macro_e1559 $94, $64, 16,  9, $ee, $00
-	macro_e1559 $1c, $7c,  1, 12, $ee, $00
-	macro_e1559 $34, $7c,  4, 12, $ef, $00
-	macro_e1559 $4c, $7c,  7, 12, $ef, $00
-	macro_e1559 $64, $7c, 10, 12, $ef, $00
-	macro_e1559 $7c, $7c, 13, 12, $ef, $00
-	macro_e1559 $94, $7c, 16, 12, $ee, $00
-	macro_e1559 $1c, $94,  1, 15, $ee, $00
-	macro_e1559 $34, $94,  4, 15, $ee, $00
-	macro_e1559 $4c, $94,  7, 15, $ee, $00
-	macro_e1559 $64, $94, 10, 15, $ee, $00
-	macro_e1559 $7c, $94, 13, 15, $ee, $00
-	macro_e1559 $94, $94, 16, 15, $ee, $00
-
-Functione1631: ; e1631
-	ld hl, VTiles2
-	ld de, VTiles0
-	ld b, $6
-.asm_e1639
-	push bc
-	push hl
-	push hl
-	call Functione1654
-	pop hl
-	ld bc, $0008
-	add hl, bc
-	call Functione1654
-	pop hl
-	ld bc, $0060
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_e1639
-	call Functione16c7
-	ret
-; e1654
-
-Functione1654: ; e1654
-	ld c, $6
-.asm_e1656
-	push bc
-	push hl
-	push hl
-	ld c, $4
-.asm_e165b
-	push bc
-	ld a, [hli]
-	and $f0
-	swap a
-	call Functione16aa
-	ld c, a
-	ld a, [hli]
-	and $f0
-	swap a
-	call Functione16aa
-	ld b, a
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	pop bc
-	dec c
-	jr nz, .asm_e165b
-	pop hl
-	ld c, $4
-.asm_e1681
-	push bc
-	ld a, [hli]
-	and $f
-	call Functione16aa
-	ld c, a
-	ld a, [hli]
-	and $f
-	call Functione16aa
-	ld b, a
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, b
-	ld [de], a
-	inc de
-	pop bc
-	dec c
-	jr nz, .asm_e1681
-	pop hl
-	ld bc, $0010
-	add hl, bc
-	pop bc
-	dec c
-	jr nz, .asm_e1656
-	ret
-; e16aa
-
-Functione16aa: ; e16aa
-	push hl
-	ld hl, Unknown_e16b7
-	add l
-	ld l, a
-	ld a, 0
-	adc h
-	ld h, a
-	ld a, [hl]
-	pop hl
-	ret
-; e16b7
-
-Unknown_e16b7: ; e16b7
-	db $00, $03, $0c, $0f
-	db $30, $33, $3c, $3f
-	db $c0, $c3, $cc, $cf
-	db $f0, $f3, $fc, $ff
-; e16c7
-
-Functione16c7: ; e16c7
-	ld hl, Unknown_e1703
-	ld a, $8
-.asm_e16cc
-	push af
-	push hl
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	call Functione16e2
-	pop hl
-rept 4
-	inc hl
-endr
-	pop af
-	dec a
-	jr nz, .asm_e16cc
-	ret
-; e16e2
-
-Functione16e2: ; e16e2
-	lb bc, 4, 4
-.asm_e16e5
-	push bc
-.asm_e16e6
-	push de
-	push hl
-	ld b, $10
-.asm_e16ea
-	ld a, [de]
-	or [hl]
-	ld [hli], a
-	inc de
-	dec b
-	jr nz, .asm_e16ea
-	pop hl
-	ld de, $0030
-	add hl, de
-	pop de
-	dec c
-	jr nz, .asm_e16e6
-	ld bc, $0180
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_e16e5
-	ret
-; e1703
-
-Unknown_e1703: ; e1703
-	dw GFX_e1723 + $00, $8000
-	dw GFX_e1723 + $10, $8010
-	dw GFX_e1723 + $20, $8020
-	dw GFX_e1723 + $30, $80c0
-	dw GFX_e1723 + $40, $80e0
-	dw GFX_e1723 + $50, $8180
-	dw GFX_e1723 + $60, $8190
-	dw GFX_e1723 + $70, $81a0
-; e1723
-
-GFX_e1723: ; e1723
-INCBIN "gfx/unknown/0e1723.2bpp"
-
-Functione17a3: ; e17a3
-	ld a, [ScriptVar]
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_e17bd
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, VTiles2
-	call Decompress
-	call Functione1631
-	ret
-; e17bd
-
-Unknown_e17bd: ; e17bd
-	dw LZ_e1bab
-	dw LZ_e1c9b
-	dw LZ_e19fb
-	dw LZ_e18ab
-; e17c5
-
-GFX_e17c5: ; e17c5
-INCBIN "gfx/unknown/0e17c5.2bpp"
-
-LZ_e1805: ; e1805
-INCBIN "gfx/unknown/0e1805.2bpp.lz"
-
-LZ_e18ab: ; e18ab
-INCBIN "gfx/unknown/0e18ab.2bpp.lz"
-
-LZ_e19fb: ; e19fb
-INCBIN "gfx/unknown/0e19fb.2bpp.lz"
-
-LZ_e1bab: ; e1bab
-INCBIN "gfx/unknown/0e1bab.2bpp.lz"
-
-LZ_e1c9b: ; e1c9b
-INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
-
-_DummyGame: ; e1e5b (38:5e5b)
-	call Functione1e67
-	call DelayFrame
-.asm_e1e61
-	call Functione1ebb
-	jr nc, .asm_e1e61
-	ret
-
-Functione1e67: ; e1e67 (38:5e67)
-	call DisableLCD
-	ld b, $8
-	call GetSGBLayout
-	callab Function8cf53
-	ld hl, LZ_e2221
-	ld de, VTiles2 tile $00
-	call Decompress
-	ld hl, Unknown_e00ed
-	ld de, VTiles0 tile $00
-	ld bc, $40
-	ld a, BANK(Unknown_e00ed)
-	call FarCopyBytes
-	ld a, $8
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], $0
-	hlcoord 0, 0
-	ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-	xor a
-	call ByteFill
-	xor a
-	ld [hSCY], a ; $ff00+$d0
-	ld [hSCX], a ; $ff00+$cf
-	ld [rWY], a ; $ff00+$4a
-	ld [wJumptableIndex], a
-	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld a, $e3
-	ld [rLCDC], a ; $ff00+$40
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $e0
-	call Functioncf8
-	ret
-
-Functione1ebb: ; e1ebb (38:5ebb)
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e1ed0
-	call Functione1ed2
-	callab Function8cf69
-	call DelayFrame
-	and a
-	ret
-.asm_e1ed0
-	scf
-	ret
-
-Functione1ed2: ; e1ed2 (38:5ed2)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_e1ee1
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e1ee1 (38:5ee1)
-
-Jumptable_e1ee1: ; e1ee1
-	dw Functione1ef3
-	dw Functione1efb
-	dw Functione1f1c
-	dw Functione1f42
-	dw Functione1f61
-	dw Functione1f8b
-	dw Functione1fba
-	dw Functione1fcc
-	dw Functione2000
-; e1ef3
-
-Functione1ef3: ; e1ef3
-	call Functione2152
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e1efb
-
-Functione1efb: ; e1efb
-	call Functione00ed
-	jr nc, .asm_e1f06
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.asm_e1f06
-	call Functione209d
-	ld hl, wJumptableIndex
-	inc [hl]
-	xor a
-	ld [wc708], a
-	ld hl, wc703
-rept 4
-	ld [hli], a
-endr
-	ld [hl], a
-	ld [wc709], a
-
-Functione1f1c: ; e1f1c
-	ld hl, wc708
-	ld a, [hl]
-	cp $2d
-	jr nc, .asm_e1f30
-	inc [hl]
-	call Functione2183
-	xor a
-	ld [wc6fd], a
-	call Functione2128
-	ret
-
-.asm_e1f30
-	ld de, $341c
-	ld a, $c
-	call Function3b2a
-	ld a, $5
-	ld [wc702], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e1f42
-
-Functione1f42: ; e1f42
-	ld a, [wc702]
-	hlcoord 17, 0
-	add $f6
-	ld [hl], a
-	ld hl, wc702
-	ld a, [hl]
-	and a
-	jr nz, .asm_e1f58
-	ld a, $7
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e1f58
-	dec [hl]
-	xor a
-	ld [wcf64], a
-	ld hl, wJumptableIndex
-	inc [hl]
-
-Functione1f61: ; e1f61
-	ld a, [wcf64]
-	and a
-	ret z
-	dec a
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld [wc6fd], a
-	ld [wc6fe], a
-	ld a, e
-	ld [EnemyScreens], a
-	call Functione2183
-	call Functione2128
-	xor a
-	ld [wcf64], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; e1f8b
-
-Functione1f8b: ; e1f8b
-	ld a, [wcf64]
-	and a
-	ret z
-	dec a
-	ld hl, EnemyScreens
-	cp [hl]
-	ret z
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld [wc6fd], a
-	ld [PlayerScreens], a
-	ld a, e
-	ld [wc701], a
-	call Functione2183
-	call Functione2128
-	ld a, $40
-	ld [wc708], a
-	ld hl, wJumptableIndex
-	inc [hl]
-
-Functione1fba: ; e1fba
-	ld hl, wc708
-	ld a, [hl]
-	and a
-	jr z, .asm_e1fc3
-	dec [hl]
-	ret
-
-.asm_e1fc3
-	call Functione2010
-	ld a, $3
-	ld [wJumptableIndex], a
-	ret
-; e1fcc
-
-Functione1fcc: ; e1fcc
-	ld a, [hJoypadPressed]
-	and A_BUTTON
-	ret z
-	xor a
-	ld [wc708], a
-.asm_e1fd5
-	ld hl, wc708
-	ld a, [hl]
-	cp $2d
-	jr nc, .asm_e1ff9
-	inc [hl]
-	push af
-	call Functione2183
-	pop af
-	push hl
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld a, [hl]
-	pop hl
-	cp $ff
-	jr z, .asm_e1fd5
-	ld [wc6fd], a
-	call Functione2128
-	jr .asm_e1fd5
-
-.asm_e1ff9
-	call Functiona80
-	ld hl, wJumptableIndex
-	inc [hl]
-
-Functione2000: ; e2000
-	call Functione00ed
-	jr nc, .asm_e200b
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.asm_e200b
-	xor a
-	ld [wJumptableIndex], a
-	ret
-; e2010
-
-Functione2010: ; e2010
-	ld hl, wc6fe
-	ld a, [hli]
-	cp [hl]
-	jr nz, .asm_e2066
-	ld a, [EnemyScreens]
-	call Functione2183
-	call Functione2142
-	ld a, [wc701]
-	call Functione2183
-	call Functione2142
-	ld a, [EnemyScreens]
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld [hl], $ff
-	ld a, [wc701]
-	ld e, a
-	ld d, $0
-	ld hl, wc6d0
-	add hl, de
-	ld [hl], $ff
-	ld hl, wc703
-.asm_e2044
-	ld a, [hli]
-	and a
-	jr nz, .asm_e2044
-	dec hl
-	ld a, [wc6fe]
-	ld [hl], a
-	ld [wc6fd], a
-	ld hl, wc709
-	ld e, [hl]
-rept 2
-	inc [hl]
-endr
-	ld d, $0
-	hlcoord 5, 0
-	add hl, de
-	call Functione2128
-	ld hl, UnknownText_0xe2083
-	call PrintText
-	ret
-
-.asm_e2066
-	xor a
-	ld [wc6fd], a
-	ld a, [EnemyScreens]
-	call Functione2183
-	call Functione2128
-	ld a, [wc701]
-	call Functione2183
-	call Functione2128
-	ld hl, UnknownText_0xe2098
-	call PrintText
-	ret
-; e2083
-
-UnknownText_0xe2083: ; 0xe2083
-	start_asm
-; 0xe2084
-
-Functione2084: ; e2084
-	push bc
-	hlcoord 2, 13
-	call Functione2128
-	ld hl, UnknownText_0xe2093
-	pop bc
-rept 3
-	inc bc
-endr
-	ret
-; e2093
-
-UnknownText_0xe2093: ; 0xe2093
-	; , yeah!
-	text_jump UnknownText_0x1c1a5b
-	db "@"
-; 0xe2098
-
-UnknownText_0xe2098: ; 0xe2098
-	; Darn…
-	text_jump UnknownText_0x1c1a65
-	db "@"
-; 0xe209d
-
-Functione209d: ; e209d
-	ld hl, wc6d0
-	ld bc, $002d
-	xor a
-	call ByteFill
-	call Functione2101
-	ld c, $2
-	ld b, [hl]
-	call Functione20e5
-	ld c, $8
-	ld b, [hl]
-	call Functione20e5
-	ld c, $4
-	ld b, [hl]
-	call Functione20e5
-	ld c, $7
-	ld b, [hl]
-	call Functione20e5
-	ld c, $3
-	ld b, [hl]
-	call Functione20e5
-	ld c, $6
-	ld b, [hl]
-	call Functione20e5
-	ld c, $1
-	ld b, [hl]
-	call Functione20e5
-	ld c, $5
-	ld hl, wc6d0
-	ld b, $2d
-.asm_e20db
-	ld a, [hl]
-	and a
-	jr nz, .asm_e20e0
-	ld [hl], c
-
-.asm_e20e0
-	inc hl
-	dec b
-	jr nz, .asm_e20db
-	ret
-; e20e5
-
-Functione20e5: ; e20e5
-	push hl
-	ld de, wc6d0
-.asm_e20e9
-	call Random
-	and $3f
-	cp $2d
-	jr nc, .asm_e20e9
-	ld l, a
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_e20e9
-	ld [hl], c
-	dec b
-	jr nz, .asm_e20e9
-	pop hl
-	inc hl
-	ret
-; e2101
-
-Functione2101: ; e2101
-	ld a, [wcfa9]
-	dec a
-	ld l, a
-	ld h, 0
-rept 3
-	add hl, hl
-endr
-	ld de, Unknown_e2110
-	add hl, de
-	ret
-; e2110
-
-Unknown_e2110: ; e2110
-	db $02, $03, $06, $06, $06, $08, $08, $06
-	db $02, $02, $04, $06, $06, $08, $08, $09
-	db $02, $02, $02, $04, $07, $08, $08, $0c
-; e2128
-
-Functione2128: ; e2128
-	ld a, [wc6fd]
-	sla a
-	sla a
-	add $4
-	ld [hli], a
-	inc a
-	ld [hld], a
-	inc a
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hli], a
-	inc a
-	ld [hl], a
-	ld c, $3
-	call DelayFrames
-	ret
-; e2142
-
-Functione2142: ; e2142
-	ld a, $1
-	ld [hli], a
-	ld [hld], a
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	ld [hli], a
-	ld [hl], a
-	ld c, $3
-	call DelayFrames
-	ret
-; e2152
-
-Functione2152: ; e2152
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, $1
-	call ByteFill
-	hlcoord 0, 0
-	ld de, String_e2177
-	call PlaceString
-	hlcoord 15, 0
-	ld de, String_e217d
-	call PlaceString
-	ld hl, UnknownText_0xe2176
-	call PrintText
-	ret
-; e2176
-
-UnknownText_0xe2176: ; 0xe2176
-	db "@"
-; 0xe2177
-
-String_e2177: db "とったもの@"
-String_e217d: db "あと かい@"
-; e2183
-
-Functione2183: ; e2183
-	ld d, $0
-.asm_e2185
-	sub $9
-	jr c, .asm_e218c
-	inc d
-	jr .asm_e2185
-
-.asm_e218c
-	add $9
-	ld e, a
-	hlcoord 1, 2
-	ld bc, $0028
-.asm_e2195
-	ld a, d
-	and a
-	jr z, .asm_e219d
-	add hl, bc
-	dec d
-	jr .asm_e2195
-
-.asm_e219d
-	sla e
-	add hl, de
-	ret
-; e21a1
-
-Functione21a1: ; e21a1 (38:61a1)
-	ld a, [wJumptableIndex]
-	cp $7
-	jr nc, .asm_e21c8
-	call JoyTextDelay
-	ld hl, hJoypadPressed ; $ffa3
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e21cf
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .asm_e21d9
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .asm_e21e9
-	ld a, [hl]
-	and D_UP
-	jr nz, .asm_e21fa
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .asm_e220d
-	ret
-.asm_e21c8
-	ld hl, $0
-	add hl, bc
-	ld [hl], $0
-	ret
-.asm_e21cf
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	inc a
-	ld [wcf64], a
-	ret
-.asm_e21d9
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	sub $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	dec [hl]
-	ret
-.asm_e21e9
-	ld hl, $6
-	add hl, bc
-	ld a, [hl]
-	cp $80
-	ret z
-	add $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	inc [hl]
-	ret
-.asm_e21fa
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	and a
-	ret z
-	sub $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	sub $9
-	ld [hl], a
-	ret
-.asm_e220d
-	ld hl, $7
-	add hl, bc
-	ld a, [hl]
-	cp $40
-	ret z
-	add $10
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	add $9
-	ld [hl], a
-	ret
-; e2221 (38:6221)
-
-LZ_e2221: ; e2221
-INCBIN "gfx/unknown/0e2221.2bpp.lz"
-
-Functione2391: ; e2391 (38:6391)
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [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 [$ffde], a
-	call Functione2963
-	xor a
-	ld [wcb2e], a
-	call DelayFrame
-.asm_e23b4
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e23c6
-	call Functione23d5
-	call DelayFrame
-	jr .asm_e23b4
-.asm_e23c6
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-
-Functione23d5: ; e23d5 (38:63d5)
-	ld a, [wJumptableIndex]
-	ld hl, Jumptable_e23df
-	call Functione33df
-	jp [hl]
-
-Jumptable_e23df: ; e23df (38:63df)
-	dw Functione23e9
-	dw Functione241a
-	dw Functione245d
-	dw Functione247d
-	dw Functione2992
-
-
-Functione23e9: ; e23e9 (38:63e9)
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call ClearSprites
-	call Functione2d30
-	call Functione2a8e
-	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	call WaitBGMap
-	call Functione2e01
-	call Functione298d
-	ret
-
-Functione241a: ; e241a (38:641a)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e2457
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e2443
-	call Functione29b5
-	and a
-	ret z
-	call Functione2e01
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
-	call DelayFrame
-	call DelayFrame
-	ret
-.asm_e2443
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	jr z, .asm_e2457
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-; e2452 (38:6452)
-
-.asm_e2452
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e2457
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-
-Functione245d: ; e245d (38:645d)
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call ClearSprites
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ld a, $1
-	ld [wcfa9], a
-	call Functione298d
-	ret
-
-Functione247d: ; e247d (38:647d)
-	ld hl, BillsPCDepositMenuDataHeader
-	call CopyMenuDataHeader
-	ld a, [wcfa9]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, BillsPCDepositFuncCancel
-	ld a, [wcfa9]
-	dec a
-	and $3
-	ld e, a
-	ld d, 0
-	ld hl, BillsPCDepositJumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-BillsPCDepositJumptable: ; e24a1 (38:64a1)
-	dw BillsPCDepositFuncDeposit ; Deposit Pokemon
-	dw BillsPCDepositFuncStats ; Pokemon Stats
-	dw BillsPCDepositFuncRelease ; Release Pokemon
-	dw BillsPCDepositFuncCancel ; Cancel
-
-
-BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
-	call Functione2f18
-	jp c, BillsPCDepositFuncCancel
-	call Functione307c
-	jr c, .asm_e24c1
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ret
-.asm_e24c1
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ret
-
-BillsPCDepositFuncStats: ; e24c8 (38:64c8)
-	call LoadMenuDataHeader_0x1d75
-	call Functione2f7e
-	call ExitMenu
-	call PCMonInfo
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ret
-
-BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
-	call Functione2f18
-	jr c, BillsPCDepositFuncCancel
-	call Functione2f5f
-	jr c, BillsPCDepositFuncCancel
-	ld a, [wcfa9]
-	push af
-	ld de, PCString_ReleasePKMN
-	call Functione2a6e
-	call LoadMenuDataHeader_0x1d75
-	lb bc, 14, 11
-	call PlaceYesNoBox
-	ld a, [wcfa9]
-	dec a
-	call ExitMenu
-	and a
-	jr nz, .asm_e252c
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	xor a
-	ld [wd10b], a
-	callba Functione039
-	call Functione3180
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	pop af
-	ret
-.asm_e252c
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	pop af
-	ld [wcfa9], a
-	ret
-
-BillsPCDepositFuncCancel: ; e2537 (38:6537)
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e253d (38:653d)
-
-BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
-	dw BillsPCDepositMenuData
-	db 1 ; default option
-; 0xe2545
-
-BillsPCDepositMenuData: ; 0xe2545 (38:6545)
-	db $80 ; flags
-	db 4 ; items
-	db "DEPOSIT@"
-	db "STATS@"
-	db "RELEASE@"
-	db "CANCEL@"
-; 0xe2564 (38:6564)
-
-Functione2564: ; e2564
-	hlcoord 0, 0
-	ld b, $4
-	ld c, $8
-	call ClearBox
-	hlcoord 0, 4
-	ld b, $a
-	ld c, $9
-	call ClearBox
-	hlcoord 0, 14
-	ld b, $2
-	ld c, $8
-	call ClearBox
-	ret
-; e2583
-
-Functione2583: ; e2583 (38:6583)
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [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 [$ffde], a
-	call Functione2963
-	ld a, $f
-	ld [wcb2e], a
-	call DelayFrame
-.asm_e25a7
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e25b9
-	call Functione25c8
-	call DelayFrame
-	jr .asm_e25a7
-.asm_e25b9
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-
-Functione25c8: ; e25c8 (38:65c8)
-	ld a, [wJumptableIndex]
-	ld hl, .jumptable
-	call Functione33df
-	jp [hl]
-
-.jumptable: ; e25d2 (38:65d2)
-	dw Functione25dc
-	dw Functione2612
-	dw Functione2655
-	dw BillsPC_Withdraw
-	dw Functione2992
-
-
-Functione25dc: ; e25dc (38:65dc)
-	ld a, $f
-	ld [wcb2e], a
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call ClearSprites
-	call Functione2d30
-	call Functione2a8e
-	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	call WaitBGMap
-	call Functione2e01
-	call Functione298d
-	ret
-
-Functione2612: ; e2612 (38:6612)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e264f
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e263b
-	call Functione29b5
-	and a
-	ret z
-	call Functione2e01
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
-	call DelayFrame
-	call DelayFrame
-	ret
-.asm_e263b
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	jr z, .asm_e264f
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-; e264a (38:664a)
-
-.asm_e264a
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e264f
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; e2655
-
-Functione2655: ; e2655 (38:6655)
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call ClearSprites
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ld a, $1
-	ld [wcfa9], a
-	call Functione298d
-	ret
-
-BillsPC_Withdraw: ; e2675 (38:6675)
-	ld hl, .MenuDataHeader
-	call CopyMenuDataHeader
-	ld a, [wcfa9]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, .cancel
-	ld a, [wcfa9]
-	dec a
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, .jumptable
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-.jumptable: ; e2699 (38:6699) #mark
-	dw .withdraw ; Withdraw
-	dw .stats ; Stats
-	dw .release ; Release
-	dw .cancel ; Cancel
-
-
-.withdraw: ; e26a1 (38:66a1)
-	call Functione2f18
-	jp c, .cancel
-	call TryWithdrawPokemon
-	jr c, .FailedWithdraw
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ret
-.FailedWithdraw
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ret
-
-.stats: ; e26c0 (38:66c0)
-	call LoadMenuDataHeader_0x1d75
-	call Functione2f7e
-	call ExitMenu
-	call PCMonInfo
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ret
-
-.release: ; e26d8 (38:66d8)
-	ld a, [wcfa9]
-	push af
-	call Functione2f5f
-	jr c, .FailedRelease
-	ld de, PCString_ReleasePKMN
-	call Functione2a6e
-	call LoadMenuDataHeader_0x1d75
-	lb bc, 14, 11
-	call PlaceYesNoBox
-	ld a, [wcfa9]
-	dec a
-	call ExitMenu
-	and a
-	jr nz, .FailedRelease
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, $1
-	ld [wd10b], a
-	callba Functione039
-	call Functione3180
-	ld a, $0
-	ld [wJumptableIndex], a
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	pop af
-	ret
-.FailedRelease
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	pop af
-	ld [wcfa9], a
-	ret
-
-.cancel: ; e272b (38:672b)
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e2731 (38:6731)
-
-.MenuDataHeader: ; 0xe2731
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
-	dw .MenuData
-	db 1 ; default option
-; 0xe2739
-
-.MenuData: ; 0xe2739
-	db $80 ; flags
-	db 4 ; items
-	db "WITHDRAW@"
-	db "STATS@"
-	db "RELEASE@"
-	db "CANCEL@"
-; 0xe2759
-
-Functione2759: ; e2759
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [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 [$ffde], a
-	call Functione2963
-	ld a, [wCurBox]
-	and $f
-	inc a
-	ld [wcb2e], a
-	call DelayFrame
-.asm_e2781
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_e2793
-	call Functione27a2
-	call DelayFrame
-	jr .asm_e2781
-
-.asm_e2793
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-; e27a2
-
-Functione27a2: ; e27a2
-	ld a, [wJumptableIndex]
-	ld hl, Jumptable_e27ac
-	call Functione33df
-	jp [hl]
-; e27ac
-
-Jumptable_e27ac: ; e27ac
-	dw Functione27ba
-	dw Functione27eb
-	dw Functione283d
-	dw Functione285d
-	dw Functione28df
-	dw Functione2903
-	dw Functione2992
-; e27ba
-
-Functione27ba: ; e27ba
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2d30
-	ld de, PCString_ChooseaPKMN
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call Functione2a80
-	call PCMonInfo
-	ld a, $ff
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	call WaitBGMap
-	call Functione2e01
-	call Functione298d
-	ret
-; e27eb
-
-Functione27eb: ; e27eb
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e2837
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e2823
-	call Functione29d0
-	jr c, .asm_e2816
-	and a
-	ret z
-	call Functione2e01
-	xor a
-	ld [hBGMapMode], a
-	call Functione2c2c
-	call PCMonInfo
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-
-.asm_e2816
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e2823
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	jr z, .asm_e2837
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e2837
-	ld a, $6
-	ld [wJumptableIndex], a
-	ret
-; e283d
-
-Functione283d: ; e283d
-	xor a
-	ld [hBGMapMode], a
-	call ClearSprites
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ld de, PCString_WhatsUp
-	call Functione2a6e
-	ld a, $1
-	ld [wcfa9], a
-	call Functione298d
-	ret
-; e285d
-
-Functione285d: ; e285d
-	ld hl, MenuDataHeader_0xe28c3
-	call CopyMenuDataHeader
-	ld a, [wcfa9]
-	call Function1d4b
-	call InterpretMenu2
-	jp c, Functione28bd
-	ld a, [wcfa9]
-	dec a
-	and 3
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_e2881
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; e2881
-
-Jumptable_e2881: ; e2881
-	dw Functione2887
-	dw Functione28a5
-	dw Functione28bd
-; e2887
-
-Functione2887: ; e2887
-	call Functione2f18
-	jp c, Functione28bd
-	ld a, [wcb2a]
-	ld [wcb2f], a
-	ld a, [wcb2b]
-	ld [wcb30], a
-	ld a, [wcb2e]
-	ld [wcb31], a
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; e28a5
-
-Functione28a5: ; e28a5
-	call LoadMenuDataHeader_0x1d75
-	call Functione2f7e
-	call ExitMenu
-	call PCMonInfo
-	call Functione2def
-	ld [CurPartySpecies], a
-	ld a, $17
-	call Functione33d0
-	ret
-; e28bd
-
-Functione28bd: ; e28bd
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e28c3
-
-MenuDataHeader_0xe28c3: ; 0xe28c3
-	db $40 ; flags
-	db 04, 09 ; start coords
-	db 13, 19 ; end coords
-	dw MenuData2_0xe28cb
-	db 1 ; default option
-; 0xe28cb
-
-MenuData2_0xe28cb: ; 0xe28cb
-	db $80 ; flags
-	db 3 ; items
-	db "MOVE@"
-	db "STATS@"
-	db "CANCEL@"
-; 0xe28df
-
-Functione28df: ; e28df
-	xor a
-	ld [hBGMapMode], a
-	call Functione2d30
-	ld de, PCString_MoveToWhere
-	call Functione2a6e
-	ld a, $5
-	ld [wcb2d], a
-	call Functione2c2c
-	call Functione2a80
-	call ClearSprites
-	call Functione2e8c
-	call WaitBGMap
-	call Functione298d
-	ret
-; e2903
-
-Functione2903: ; e2903
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_e294b
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_e2938
-	call Functione29f4
-	jr c, .asm_e292b
-	and a
-	ret z
-	call Functione2e8c
-	xor a
-	ld [hBGMapMode], a
-	call Functione2c2c
-	ld a, $1
-	ld [hBGMapMode], a
-	call DelayFrame
-	call DelayFrame
-	ret
-
-.asm_e292b
-	xor a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e2938
-	call Functione2ee5
-	jr c, .asm_e2946
-	call Functione31e7
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-
-.asm_e2946
-	ld hl, wJumptableIndex
-	dec [hl]
-	ret
-
-.asm_e294b
-	ld a, [wcb2f]
-	ld [wcb2a], a
-	ld a, [wcb30]
-	ld [wcb2b], a
-	ld a, [wcb31]
-	ld [wcb2e], a
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; e2963
-
-Functione2963: ; e2963 (38:6963)
-	call WhiteBGMap
-	call ClearSprites
-	call ClearTileMap
-	call Functione33e8
-	ld hl, OverworldMap
-	ld bc, $338
-	xor a
-	call ByteFill
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ld [wcb2b], a
-	ld [wcb2a], a
-	ret
-
-Functione298d: ; e298d (38:698d)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Functione2992: ; e2992 (38:6992)
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Functione2998: ; e2998 (38:6998)
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	and a
-	jr z, .asm_e29b2
-	dec a
-	cp $1
-	jr z, .asm_e29b2
-	ld e, a
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-.asm_e29b2
-	jp Functione2a65
-
-Functione29b5: ; e29b5 (38:69b5)
-	ld hl, hJoyLast
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	ld e, a
-	and a
-	jr z, .asm_e29cd
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-.asm_e29cd
-	jp Functione2a65
-; e29d0 (38:69d0)
-
-Functione29d0: ; e29d0
-	ld hl, hJoyLast
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	ld e, a
-	and a
-	jr z, .asm_e29e8
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-
-.asm_e29e8
-	ld a, [hl]
-	and D_LEFT
-	jr nz, Functione2a48
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, Functione2a56
-	jr Functione2a65
-
-Functione29f4: ; e29f4
-	ld hl, hJoyLast
-	ld a, [wcb2d]
-	ld d, a
-	ld a, [wcb2c]
-	ld e, a
-	and a
-	jr z, .asm_e2a0c
-
-	ld a, [hl]
-	and D_UP
-	jr nz, Functione2a18
-	ld a, [hl]
-	and D_DOWN
-	jr nz, Functione2a2c
-
-.asm_e2a0c
-	ld a, [hl]
-	and D_LEFT
-	jr nz, Functione2a48
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, Functione2a56
-	jr Functione2a65
-
-Functione2a18: ; e2a18 (38:6a18)
-	ld hl, wcb2b
-	ld a, [hl]
-	and a
-	jr z, .asm_e2a22
-	dec [hl]
-	jr Functione2a68
-
-.asm_e2a22
-	ld hl, wcb2a
-	ld a, [hl]
-	and a
-	jr z, Functione2a65
-	dec [hl]
-	jr Functione2a68
-
-Functione2a2c: ; e2a2c (38:6a2c)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	inc a
-	cp e
-	jr nc, Functione2a65
-
-	ld hl, wcb2b
-	ld a, [hl]
-	inc a
-	cp d
-	jr nc, .asm_e2a42
-	inc [hl]
-	jr Functione2a68
-
-.asm_e2a42
-	ld hl, wcb2a
-	inc [hl]
-	jr Functione2a68
-; e2a48 (38:6a48)
-
-Functione2a48: ; e2a48
-	ld hl, wcb2e
-	ld a, [hl]
-	and a
-	jr z, .asm_e2a52
-	dec [hl]
-	jr Functione2a6c
-
-.asm_e2a52
-	ld [hl], $e
-	jr Functione2a6c
-
-Functione2a56: ; e2a56
-	ld hl, wcb2e
-	ld a, [hl]
-	cp $e
-	jr z, .asm_e2a61
-	inc [hl]
-	jr Functione2a6c
-
-.asm_e2a61
-	ld [hl], $0
-	jr Functione2a6c
-
-Functione2a65: ; e2a65 (38:6a65)
-	xor a
-	and a
-	ret
-
-Functione2a68: ; e2a68 (38:6a68)
-	ld a, $1
-	and a
-	ret
-; e2a6c (38:6a6c)
-
-Functione2a6c: ; e2a6c
-	scf
-	ret
-; e2a6e
-
-Functione2a6e: ; e2a6e (38:6a6e)
-	push de
-	hlcoord 0, 15
-	ld bc, $112
-	call TextBox
-	pop de
-	hlcoord 1, 16
-	call PlaceString
-	ret
-; e2a80 (38:6a80)
-
-Functione2a80: ; e2a80
-	call Functione2a8e
-	hlcoord 8, 1
-	ld [hl], $5f
-	hlcoord 19, 1
-	ld [hl], $5e
-	ret
-; e2a8e
-
-Functione2a8e: ; e2a8e (38:6a8e)
-	hlcoord 8, 0
-	lb bc, 1, 10
-	call TextBox
-
-	ld a, [wcb2e]
-	and a
-	jr z, .party
-
-	cp NUM_BOXES + 1
-	jr nz, .gotbox
-
-	ld a, [wCurBox]
-	inc a
-.gotbox
-	dec a
-	ld hl, wBoxNames
-	ld bc, 9
-	call AddNTimes
-	ld e, l
-	ld d, h
-	jr .print
-
-.party
-	ld de, String_e2abd
-.print
-	hlcoord 10, 1
-	call PlaceString
-	ret
-; e2abd (38:6abd)
-
-String_e2abd:
-	db "PARTY <PK><MN>@"
-; e2ac6
-
-PCMonInfo: ; e2ac6 (38:6ac6)
-; Display a monster's pic and
-; attributes when highlighting
-; it in a PC menu.
-
-; Includes the neat cascading
-; effect when showing the pic.
-
-; Example: Species, level, gender,
-; whether it's holding an item.
-
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-
-	call Functione2def
-	and a
-	ret z
-	cp $ff
-	ret z
-
-	ld [wd265], a
-	hlcoord 1, 4
-	xor a
-	ld b, 7
-.asm_e2ae9
-	ld c, 7
-	push af
-	push hl
-.asm_e2aed
-	ld [hli], a
-	add 7
-	dec c
-	jr nz, .asm_e2aed
-	pop hl
-	ld de, 20
-	add hl, de
-	pop af
-	inc a
-	dec b
-	jr nz, .asm_e2ae9
-
-	call Functione2b6d
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	ld hl, TempMonDVs
-	predef GetUnownLetter
-	call GetBaseData
-	ld de, VTiles2 tile $00
-	predef GetFrontpic
-	xor a
-	ld [wcb32], a
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-
-	cp EGG
-	ret z
-
-	call GetBasePokemonName
-	hlcoord 1, 14
-	call PlaceString
-
-	hlcoord 1, 12
-	call PrintLevel
-
-	ld a, $3
-	ld [MonType], a
-	callba GetGender
-	jr c, .asm_e2b4f
-	ld a, "♂"
-	jr nz, .printgender
-	ld a, "♀"
-.printgender
-	hlcoord 5, 12
-	ld [hl], a
-.asm_e2b4f
-
-	ld a, [TempMonItem]
-	and a
-	ret z
-
-	ld d, a
-	callab ItemIsMail
-	jr c, .mail
-	ld a, $5d ; item icon
-	jr .printitem
-.mail
-	ld a, $1
-	ld [wcb32], a
-	ld a, $5c ; mail icon
-.printitem
-	hlcoord 7, 12
-	ld [hl], a
-	ret
-
-Functione2b6d: ; e2b6d (38:6b6d)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld e, a
-	ld d, $0
-	ld hl, wc801
-rept 3
-	add hl, de
-endr
-	ld a, [hl]
-	and a
-	jr z, .asm_e2bc6
-	cp $f
-	jr z, .asm_e2bf5
-	ld b, a
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	push hl
-	ld bc, $35
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonLevel], a
-	pop hl
-	push hl
-	ld bc, $17
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonItem], a
-	pop hl
-	ld bc, $2b
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld de, TempMonDVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	call CloseSRAM
-	ret
-.asm_e2bc6
-	ld hl, PartyMon1Level
-	ld bc, $30
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonLevel], a
-	ld hl, PartyMon1Item
-	ld bc, $30
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonItem], a
-	ld hl, PartyMon1DVs
-	ld bc, $30
-	ld a, e
-	call AddNTimes
-	ld de, TempMonDVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	ret
-
-.asm_e2bf5
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxMon1Level
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonLevel], a
-
-	ld hl, sBoxMon1Item
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	ld [TempMonItem], a
-
-	ld hl, sBoxMon1DVs
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld de, TempMonDVs
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-
-	call CloseSRAM
-	ret
-
-Functione2c2c: ; e2c2c (38:6c2c)
-	hlcoord 8, 2
-	lb bc, 10, 10
-	call TextBox
-
-	hlcoord 8, 2
-	ld [hl], "└"
-	hlcoord 19, 2
-	ld [hl], "┘"
-
-	ld a, [wcb2a]
-	ld e, a
-	ld d, 0
-	ld hl, OverworldMap
-rept 3
-	add hl, de
-endr
-	ld e, l
-	ld d, h
-	hlcoord 9, 4
-	ld a, [wcb2d]
-.asm_e2c53
-	push af
-	push de
-	push hl
-	call Functione2c6e
-	pop hl
-	ld de, $28
-	add hl, de
-	pop de
-rept 3
-	inc de
-endr
-	pop af
-	dec a
-	jr nz, .asm_e2c53
-	ret
-; e2c67 (38:6c67)
-
-String_e2c67:
-	db "CANCEL@"
-; e2c6e
-
-Functione2c6e: ; e2c6e (38:6c6e)
-	ld a, [de]
-	and a
-	ret z
-	cp $ff
-	jr nz, .asm_e2c7c
-	ld de, String_e2c67
-	call PlaceString
-	ret
-.asm_e2c7c
-	inc de
-	ld a, [de]
-	ld b, a
-	inc de
-	ld a, [de]
-	ld e, a
-	ld a, b
-	and a
-	jr z, .asm_e2cc8
-	cp $f
-	jr z, .asm_e2cf1
-	push hl
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	push hl
-	ld bc, $16
-	add hl, bc
-	ld bc, $20
-	ld a, e
-	call AddNTimes
-	ld a, [hl]
-	pop hl
-	and a
-	jr z, .asm_e2cc2
-	ld bc, $372
-	add hl, bc
-	ld bc, $b
-	ld a, e
-	call AddNTimes
-	ld de, StringBuffer1
-	ld bc, $b
-	call CopyBytes
-	call CloseSRAM
-	pop hl
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-.asm_e2cc2
-	call CloseSRAM
-	pop hl
-	jr .asm_e2d23
-.asm_e2cc8
-	push hl
-	ld hl, PartySpecies
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr z, .asm_e2cee
-	ld hl, PartyMonNicknames
-	ld bc, $b
-	ld a, e
-	call AddNTimes
-	ld de, StringBuffer1
-	ld bc, $b
-	call CopyBytes
-	pop hl
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-.asm_e2cee
-	pop hl
-	jr .asm_e2d23
-.asm_e2cf1
-	push hl
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr z, .asm_e2d1f
-	ld hl, sBoxMonNicknames
-	ld bc, PKMN_NAME_LENGTH
-	ld a, e
-	call AddNTimes
-	ld de, StringBuffer1
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	call CloseSRAM
-	pop hl
-	ld de, StringBuffer1
-	call PlaceString
-	ret
-.asm_e2d1f
-	call CloseSRAM
-	pop hl
-.asm_e2d23
-	ld de, String_e2d2a
-	call PlaceString
-	ret
-; e2d2a (38:6d2a)
-
-String_e2d2a:
-	db "-----@"
-; e2d30
-
-Functione2d30: ; e2d30 (38:6d30)
-	xor a
-	ld hl, OverworldMap
-	ld bc, $5a
-	call ByteFill
-	ld de, OverworldMap
-	xor a
-	ld [wd003], a
-	ld [wd004], a
-	ld a, [wcb2e]
-	and a
-	jr z, .asm_e2d87
-	cp $f
-	jr z, .asm_e2db7
-	ld b, a
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	inc hl
-.asm_e2d57
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2d79
-	and a
-	jr z, .asm_e2d79
-	ld [de], a
-	inc de
-	ld a, [wcb2e]
-	ld [de], a
-	inc de
-	ld a, [wd003]
-	ld [de], a
-	inc a
-	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
-	ld [wd004], a
-	jr .asm_e2d57
-.asm_e2d79
-	call CloseSRAM
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
-	ret
-.asm_e2d87
-	ld hl, PartySpecies
-.asm_e2d8a
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2dac
-	and a
-	jr z, .asm_e2dac
-	ld [de], a
-	inc de
-	ld a, [wcb2e]
-	ld [de], a
-	inc de
-	ld a, [wd003]
-	ld [de], a
-	inc a
-	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
-	ld [wd004], a
-	jr .asm_e2d8a
-.asm_e2dac
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
-	ret
-.asm_e2db7
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-.asm_e2dbf
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_e2de1
-	and a
-	jr z, .asm_e2de1
-	ld [de], a
-	inc de
-	ld a, [wcb2e]
-	ld [de], a
-	inc de
-	ld a, [wd003]
-	ld [de], a
-	inc a
-	ld [wd003], a
-	inc de
-	inc hl
-	ld a, [wd004]
-	inc a
-	ld [wd004], a
-	jr .asm_e2dbf
-.asm_e2de1
-	call CloseSRAM
-	ld a, $ff
-	ld [de], a
-	ld a, [wd004]
-	inc a
-	ld [wcb2c], a
-	ret
-
-Functione2def: ; e2def (38:6def)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld e, a
-	ld d, $0
-	ld hl, OverworldMap
-rept 3
-	add hl, de
-endr
-	ld a, [hl]
-	ret
-
-Functione2e01: ; e2e01 (38:6e01)
-	ld a, [wcb2c]
-	and a
-	jr nz, .asm_e2e0b
-	call ClearSprites
-	ret
-.asm_e2e0b
-	ld hl, Unknown_e2e2b
-	ld de, Sprites
-.done1
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wcb2b]
-	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 .done1
-; e2e2b (38:6e2b)
-
-Unknown_e2e2b: ; e2e2b
-	db $26, $50, $00, $00
-	db $26, $58, $00, $00
-	db $26, $60, $00, $00
-	db $26, $68, $00, $00
-	db $26, $70, $00, $00
-	db $26, $78, $00, $00
-	db $26, $80, $00, $00
-	db $26, $88, $00, $00
-	db $26, $90, $00, $00
-	db $26, $97, $00, $00
-	db $39, $50, $00, $40
-	db $39, $58, $00, $40
-	db $39, $60, $00, $40
-	db $39, $68, $00, $40
-	db $39, $70, $00, $40
-	db $39, $78, $00, $40
-	db $39, $80, $00, $40
-	db $39, $88, $00, $40
-	db $39, $90, $00, $40
-	db $39, $97, $00, $40
-	db $2e, $4e, $01, $00
-	db $31, $4e, $01, $40
-	db $2e, $99, $01, $20
-	db $31, $99, $01, $60
-	db $ff
-; e2e8c
-
-Functione2e8c: ; e2e8c
-	ld hl, Unknown_e2eac
-	ld de, Sprites
-.asm_e2e92
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wcb2b]
-	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 .asm_e2e92
-; e2eac
-
-Unknown_e2eac: ; e2eac
-	db $27, $50, $06, $00
-	db $2b, $58, $00, $40
-	db $2b, $60, $00, $40
-	db $2b, $68, $00, $40
-	db $2b, $70, $00, $40
-	db $2b, $78, $00, $40
-	db $2b, $80, $00, $40
-	db $2b, $88, $00, $40
-	db $2b, $90, $00, $40
-	db $27, $98, $07, $00
-	db $ff
-; e2ed5
-
-Functione2ed5: ; e2ed5
-.asm_e2ed5
-	push bc
-	push hl
-.asm_e2ed7
-	ld [hli], a
-	dec c
-	jr nz, .asm_e2ed7
-	pop hl
-	ld bc, SCREEN_WIDTH
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_e2ed5
-	ret
-; e2ee5
-
-Functione2ee5: ; e2ee5
-	ld hl, wcb2e
-	ld a, [wcb31]
-	cp [hl]
-	jr z, .asm_e2f00
-	ld a, [wcb2e]
-	and a
-	jr z, .asm_e2ef8
-	ld e, $15
-	jr .asm_e2efa
-
-.asm_e2ef8
-	ld e, $7
-
-.asm_e2efa
-	ld a, [wcb2c]
-	cp e
-	jr nc, .asm_e2f02
-
-.asm_e2f00
-	and a
-	ret
-
-.asm_e2f02
-	ld de, PCString_TheresNoRoom
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-; e2f18
-
-Functione2f18: ; e2f18 (38:6f18)
-	ld a, [wcb2e]
-	and a
-	jr nz, .Okay
-	ld a, [wcb2c]
-	cp $3
-	jr c, .ItsYourLastPokemon
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	callba CheckCurPartyMonFainted
-	jr c, .AllOthersFainted
-	ld a, [wcb32]
-	and a
-	jr nz, .HasMail
-.Okay
-	and a
-	ret
-.HasMail
-	ld de, PCString_RemoveMail
-	jr .NotOkay
-.AllOthersFainted
-	ld de, PCString_NoMoreUsablePKMN
-	jr .NotOkay
-.ItsYourLastPokemon
-	ld de, PCString_ItsYourLastPKMN
-.NotOkay
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-Functione2f5f: ; e2f5f (38:6f5f)
-	ld a, [CurPartySpecies]
-	cp EGG
-	jr z, .asm_e2f68
-	and a
-	ret
-.asm_e2f68
-	ld de, PCString_NoReleasingEGGS
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-Functione2f7e: ; e2f7e (38:6f7e)
-	call LowVolume
-	call Functione2fd6
-	ld a, $3
-	ld [MonType], a
-	predef StatsScreenInit
-	call Functione33e8
-	call MaxVolume
-	ret
-
-Functione2f95: ; e2f95 (38:6f95)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON | B_BUTTON | D_RIGHT + D_LEFT
-	ld [wcf73], a
-	jr nz, .asm_e2fd0
-	ld a, [hl]
-	and D_DOWN | D_UP
-	ld [wcf73], a
-	jr nz, .asm_e2faa
-	jr .asm_e2fd0
-.asm_e2faa
-	call Functione2998
-	and a
-	jr z, .asm_e2fd1
-	call Functione2def
-	ld [wd265], a
-	call Functione2b6d
-	ld a, [wd265]
-	ld [CurPartySpecies], a
-	ld [CurSpecies], a
-	ld hl, TempMonDVs
-	predef GetUnownLetter
-	call GetBaseData
-	call Functione2fd6
-.asm_e2fd0
-	ret
-.asm_e2fd1
-	xor a
-	ld [wcf73], a
-	ret
-
-Functione2fd6: ; e2fd6 (38:6fd6)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, [wcb2e]
-	and a
-	jr z, .asm_e3020
-	cp $f
-	jr nz, .asm_e3048
-	ld a, BANK(sBox)
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-	call Functione3357
-	ld hl, sBoxMonNicknames
-	call Functione3363
-	ld hl, sBoxMonOT
-	call Functione3376
-	ld hl, sBoxMons
-	ld bc, sBoxMon2 - sBoxMon1
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd018
-	ld bc, $30
-	call CopyBytes
-	call CloseSRAM
-	callba Function5088b
-	ret
-.asm_e3020
-	ld hl, PartySpecies
-	call Functione3357
-	ld hl, PartyMonNicknames
-	call Functione3363
-	ld hl, PartyMonOT
-	call Functione3376
-	ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
-	ld bc, $30
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd018
-	ld bc, $30
-	call CopyBytes
-	ret
-.asm_e3048
-	ld b, a
-	call Functione3396
-	ld a, b
-	call GetSRAMBank
-	push hl
-	inc hl
-	call Functione3357
-	pop hl
-	push hl
-	ld bc, $372
-	add hl, bc
-	call Functione3363
-	pop hl
-	push hl
-	ld bc, $296
-	add hl, bc
-	call Functione3376
-	pop hl
-	ld bc, $16
-	add hl, bc
-	ld bc, $20
-	call Functione3389
-	call CloseSRAM
-	callba Function5088b
-	ret
-
-Functione307c: ; e307c (38:707c)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld hl, PartyMonNicknames
-	ld a, [CurPartyMon]
-	call GetNick
-	ld a, $1
-	ld [wd10b], a
-	predef SentGetPkmnIntoFromBox
-	jr c, .asm_boxisfull
-	xor a
-	ld [wd10b], a
-	callba Functione039
-	ld a, [CurPartySpecies]
-	call PlayCry
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-	hlcoord 0, 15
-	ld bc, $112
-	call TextBox
-	call WaitBGMap
-	hlcoord 1, 16
-	ld de, PCString_Stored
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld de, StringBuffer1
-	call PlaceString
-	ld a, "!"
-	ld [bc], a
-	ld c, 50
-	call DelayFrames
-	and a
-	ret
-
-.asm_boxisfull
-	ld de, PCString_BoxFull
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-TryWithdrawPokemon: ; e30fa (38:70fa)
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, BANK(sBoxMonNicknames)
-	call GetSRAMBank
-	ld a, [CurPartyMon]
-	ld hl, sBoxMonNicknames
-	call GetNick
-	call CloseSRAM
-	xor a
-	ld [wd10b], a
-	predef SentGetPkmnIntoFromBox
-	jr c, .PartyFull
-	ld a, $1
-	ld [wd10b], a
-	callba Functione039
-	ld a, [CurPartySpecies]
-	call PlayCry
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-	hlcoord 0, 15
-	ld bc, $112
-	call TextBox
-	call WaitBGMap
-	hlcoord 1, 16
-	ld de, PCString_Got
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld de, StringBuffer1
-	call PlaceString
-	ld a, $e7
-	ld [bc], a
-	ld c, 50
-	call DelayFrames
-	and a
-	ret
-
-.PartyFull
-	ld de, PCString_PartyFull
-	call Functione2a6e
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	scf
-	ret
-
-
-Functione3180: ; e3180 (38:7180)
-	hlcoord 0, 0
-	lb bc, 15, 8
-	call ClearBox
-	hlcoord 8, 14
-	lb bc, 1, 3
-	call ClearBox
-	hlcoord 0, 15
-	ld bc, $112
-	call TextBox
-
-	call WaitBGMap
-	ld a, [CurPartySpecies]
-	call GetCryIndex
-	jr c, .asm_e31ab
-	ld e, c
-	ld d, b
-	call PlayCryHeader
-.asm_e31ab
-
-	ld a, [CurPartySpecies]
-	ld [wd265], a
-	call GetPokemonName
-	hlcoord 1, 16
-	ld de, PCString_ReleasedPKMN
-	call PlaceString
-	ld c, 80
-	call DelayFrames
-	hlcoord 0, 15
-	ld bc, $112
-	call TextBox
-	hlcoord 1, 16
-	ld de, PCString_Bye
-	call PlaceString
-	ld l, c
-	ld h, b
-	inc hl
-	ld de, StringBuffer1
-	call PlaceString
-	ld l, c
-	ld h, b
-	ld [hl], $e7
-	ld c, 50
-	call DelayFrames
-	ret
-; e31e7 (38:71e7)
-
-Functione31e7: ; e31e7
-	push hl
-	push de
-	push bc
-	push af
-	hlcoord 0, 15
-	ld bc, $0112
-	call TextBox
-	hlcoord 1, 16
-	ld de, String_e3233
-	call PlaceString
-	ld c, 20
-	call DelayFrames
-	pop af
-	pop bc
-	pop de
-	pop hl
-	ld a, [wCurBox]
-	push af
-	ld bc, 0
-	ld a, [wcb31]
-	and a
-	jr nz, .asm_e3215
-	set 0, c
-
-.asm_e3215
-	ld a, [wcb2e]
-	and a
-	jr nz, .asm_e321d
-	set 1, c
-
-.asm_e321d
-	ld hl, Jumptable_e3245
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld de, Functione322a
-	push de
-	jp [hl]
-; e322a
-
-Functione322a: ; e322a
-	pop af
-	ld e, a
-	callba Function14ad5
-	ret
-; e3233
-
-String_e3233:
-	db "Saving… Leave ON!@"
-; e3245
-
-Jumptable_e3245: ; e3245
-	dw Functione324d
-	dw Functione3267
-	dw Functione327d
-	dw Functione3284
-; e324d
-
-Functione324d: ; e324d
-	ld hl, wcb31
-	ld a, [wcb2e]
-	cp [hl]
-	jr z, .asm_e325d
-	call Functione32b0
-	call Functione32fa
-	ret
-
-.asm_e325d
-	call Functione32b0
-	call Functione328e
-	call Functione32fa
-	ret
-; e3267
-
-Functione3267: ; e3267
-	call Functione3316
-	ld a, $1
-	ld [wc2cd], a
-	callba SaveGameData
-	xor a
-	ld [wc2cd], a
-	call Functione32fa
-	ret
-; e327d
-
-Functione327d: ; e327d
-	call Functione32b0
-	call Functione3346
-	ret
-; e3284
-
-Functione3284: ; e3284
-	call Functione3316
-	call Functione328e
-	call Functione3346
-	ret
-; e328e
-
-Functione328e: ; e328e
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld e, a
-	ld a, [wcb30]
-	ld hl, wcb2f
-	add [hl]
-	cp e
-	ret nc
-	ld hl, wcb2b
-	ld a, [hl]
-	and a
-	jr z, .asm_e32a8
-	dec [hl]
-	ret
-
-.asm_e32a8
-	ld hl, wcb2a
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-; e32b0
-
-Functione32b0: ; e32b0
-	ld a, [wcb31]
-	dec a
-	ld e, a
-	callba Function14ac2
-	ld a, [wcb30]
-	ld hl, wcb2f
-	add [hl]
-	ld [CurPartyMon], a
-	ld a, $1
-	call GetSRAMBank
-	ld hl, sBoxSpecies
-	call Functione3357
-	ld hl, sBoxMonNicknames
-	call Functione3363
-	ld hl, sBoxMonOT
-	call Functione3376
-	ld hl, sBoxMons
-	ld bc, sBoxMon1End - sBoxMon1
-	call Functione3389
-	call CloseSRAM
-	callba Function5088b
-	ld a, $1
-	ld [wd10b], a
-	callba Functione039
-	ret
-; e32fa
-
-Functione32fa: ; e32fa
-	ld a, [wcb2e]
-	dec a
-	ld e, a
-	callba Function14ac2
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	callba Function51322
-	ret
-; e3316
-
-Functione3316: ; e3316
-	ld a, [wcb30]
-	ld hl, wcb2f
-	add [hl]
-	ld [CurPartyMon], a
-	ld hl, PartySpecies
-	call Functione3357
-	ld hl, PartyMonNicknames
-	call Functione3363
-	ld hl, PartyMonOT
-	call Functione3376
-	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
-	call Functione3389
-	xor a
-	ld [wd10b], a
-	callba Functione039
-	ret
-; e3346
-
-Functione3346: ; e3346
-	ld a, [wcb2b]
-	ld hl, wcb2a
-	add [hl]
-	ld [CurPartyMon], a
-	callba Function5138b
-	ret
-; e3357
-
-Functione3357: ; e3357 (38:7357)
-	ld a, [CurPartyMon]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld a, [hl]
-	ld [CurPartySpecies], a
-	ret
-
-Functione3363: ; e3363 (38:7363)
-	ld bc, $b
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, DefaultFlypoint
-	ld bc, $b
-	call CopyBytes
-	ret
-
-Functione3376: ; e3376 (38:7376)
-	ld bc, $b
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd00d
-	ld bc, $b
-	call CopyBytes
-	ret
-
-Functione3389: ; e3389 (38:7389)
-	ld a, [CurPartyMon]
-	call AddNTimes
-	ld de, wd018
-	call CopyBytes
-	ret
-
-Functione3396: ; e3396 (38:7396)
-	dec b
-	ld c, b
-	ld b, 0
-	ld hl, Unknown_e33a6
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-; e33a6 (38:73a6)
-
-Unknown_e33a6: ; e33a6
-	;  bank, address
-	dbw BANK(sBox1),  sBox1
-	dbw BANK(sBox2),  sBox2
-	dbw BANK(sBox3),  sBox3
-	dbw BANK(sBox4),  sBox4
-	dbw BANK(sBox5),  sBox5
-	dbw BANK(sBox6),  sBox6
-	dbw BANK(sBox7),  sBox7
-	dbw BANK(sBox8),  sBox8
-	dbw BANK(sBox9),  sBox9
-	dba sBox10
-	dba sBox11
-	dba sBox12
-	dba sBox13
-	dba sBox14
-; e33d0
-
-Functione33d0: ; e33d0 (38:73d0)
-	ld b, a
-	call GetSGBLayout
-	ld a, $e4
-	call DmgToCgbBGPals
-	ld a, $fc
-	call Functioncf8
-	ret
-
-Functione33df: ; e33df (38:73df)
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-
-Functione33e8: ; e33e8 (38:73e8)
-	call DisableLCD
-	ld hl, VTiles2 tile $00
-	ld bc, $310
-	xor a
-	call ByteFill
-	call Functione51
-	call LoadFontsBattleExtra
-	ld hl, PCMailGFX
-	ld de, VTiles2 tile $5c
-	ld bc, $40
-	call CopyBytes
-	ld hl, PCSelectLZ
-	ld de, VTiles0 tile $00
-	call Decompress
-	ld a, 6
-	call SkipMusic
-	call EnableLCD
-	ret
-; e3419 (38:7419)
-
-PCSelectLZ: INCBIN "gfx/pc.2bpp.lz"
-PCMailGFX:  INCBIN "gfx/pc_mail.2bpp"
-; e34dd
-
-PCString_ChooseaPKMN: db "Choose a <PK><MN>.@"
-PCString_WhatsUp: db "What's up?@"
-PCString_ReleasePKMN: db "Release <PK><MN>?@"
-PCString_MoveToWhere: db "Move to where?@"
-PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@"
-PCString_TheresNoRoom: db "There's no room!@"
-PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@"
-PCString_RemoveMail: db "Remove MAIL.@"
-PCString_ReleasedPKMN: db "Released <PK><MN>.@"
-PCString_Bye: db "Bye,@"
-PCString_Stored: db "Stored @"
-PCString_Got: db "Got @"
-PCString_Non: db "Non.@"
-PCString_BoxFull: db "The BOX is full.@"
-PCString_PartyFull: db "The party's full!@"
-PCString_NoReleasingEGGS: db "No releasing EGGS!@"
-; e35aa
-
-Functione35aa: ; e35aa (38:75aa)
-	call LoadMenuDataHeader_0x1d75
-	call Functione35e2
-.loop
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	call Functione36cf
-	call Functione379c
-	ld hl, Functione35aa_menudataheader
-	call CopyMenuDataHeader
-	xor a
-	ld [wd0e4], a
-	hlcoord 0, 4
-	lb bc, 8, 9
-	call TextBox
-	call Function350c
-	ld a, [wcf73]
-	cp $2
-	jr z, .done
-	call Functione37af
-	call Functione36f9
-	jr .loop
-.done
-	call WriteBackup
-	ret
-
-Functione35e2: ; e35e2 (38:75e2)
-	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	hlcoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	ld a, " "
-	call ByteFill
-	ret
-; e35f1 (38:75f1)
-
-Functione35aa_menudataheader: ; 0xe35f1
-	db $40 ; flags
-	db 05, 01 ; start coords
-	db 12, 09 ; end coords
-	dw .menudata2
-	db 1 ; default option
-; 0xe35f9
-
-.menudata2: ; 0xe35f9
-	db $22 ; flags
-	db 4, 0
-	db 1
-	dba .boxes
-	dba .boxnames
-	dba NULL
-	dba Functione3632
-; e3609
-
-.boxes: ; e3609
-	db 14
-	db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
-	db -1
-; e3619
-
-.boxnames: ; e3619
-	push de
-	ld a, [MenuSelection]
-	dec a
-	call Functione3626
-	pop hl
-	call PlaceString
-	ret
-; e3626
-
-Functione3626: ; e3626 (38:7626)
-	ld bc, 9
-	ld hl, wBoxNames
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ret
-; e3632 (38:7632)
-
-Functione3632: ; e3632
-	hlcoord 11, 7
-	lb bc, 5, 7
-	call TextBox
-	ld a, [MenuSelection]
-	cp -1
-	ret z
-	hlcoord 12, 9
-	ld de, String_e3663
-	call PlaceString
-	call GetBoxCount
-	ld [wd265], a
-	hlcoord 13, 11
-	ld de, wd265
-	lb bc, 1, 2
-	call PrintNum
-	ld de, String_e3668
-	call PlaceString
-	ret
-; e3663
-
-String_e3663: ; e3663
-	db "#MON@"
-; e3668
-
-String_e3668: ; e3668
-	db "/"
-	db "0" + MONS_PER_BOX / 10 ; "2"
-	db "0" + MONS_PER_BOX % 10 ; "0"
-	db "@"
-; e366c
-
-GetBoxCount: ; e366c (38:766c)
-	ld a, [wCurBox]
-	ld c, a
-	ld a, [MenuSelection]
-	dec a
-	cp c
-	jr z, .activebox
-	ld c, a
-	ld b, 0
-	ld hl, .boxbanks
-rept 3
-	add hl, bc
-endr
-	ld a, [hli]
-	ld b, a
-	call GetSRAMBank
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hl]
-	call CloseSRAM
-	ld c, a
-	ld a, [wSavedAtLeastOnce]
-	and a
-	jr z, .newfile
-	ld a, c
-	ret
-
-.newfile
-	xor a
-	ret
-
-.activebox
-	ld a, BANK(sBoxCount)
-	ld b, a
-	call GetSRAMBank
-	ld hl, sBoxCount
-	ld a, [hl]
-	call CloseSRAM
-	ret
-; e36a5 (38:76a5)
-
-.boxbanks: ; e36a5
-	dbw BANK(sBox1),  sBox1
-	dbw BANK(sBox2),  sBox2
-	dbw BANK(sBox3),  sBox3
-	dbw BANK(sBox4),  sBox4
-	dbw BANK(sBox5),  sBox5
-	dbw BANK(sBox6),  sBox6
-	dbw BANK(sBox7),  sBox7
-	dbw BANK(sBox8),  sBox8
-	dbw BANK(sBox9),  sBox9
-	dba sBox10
-	dba sBox11
-	dba sBox12
-	dba sBox13
-	dba sBox14
-; e36cf
-
-Functione36cf: ; e36cf (38:76cf)
-	hlcoord 0, 0
-	ld b, $2
-	ld c, $12
-	call TextBox
-	hlcoord 1, 2
-	ld de, String_e36f1
-	call PlaceString
-	ld a, [wCurBox]
-	and $f
-	call Functione3626
-	hlcoord 11, 2
-	call PlaceString
-	ret
-; e36f1 (38:76f1)
-
-String_e36f1: ; e36f1
-	db "CURRENT@"
-; e36f9
-
-Functione36f9: ; e36f9 (38:76f9)
-	ld hl, MenuDataHeader_0xe377b
-	call LoadMenuDataHeader
-	call InterpretMenu2
-	call ExitMenu
-	ret c
-	ld a, [wcfa9]
-	cp $1
-	jr z, .asm_e3734
-	cp $2
-	jr z, .asm_e3745
-	cp $3
-	jr z, .asm_e3717
-	and a
-	ret
-
-.asm_e3717
-	call GetBoxCount
-	and a
-	jr z, .asm_e372f
-	ld e, l
-	ld d, h
-	ld a, [MenuSelection]
-	dec a
-	ld c, a
-	callba Function844bc
-	call Functione35e2
-	and a
-	ret
-
-.asm_e372f
-	call Functione37be
-	and a
-	ret
-
-.asm_e3734
-	ld a, [MenuSelection]
-	dec a
-	ld e, a
-	ld a, [wCurBox]
-	cp e
-	ret z
-	callba Function14a83
-	ret
-
-.asm_e3745
-	ld b, $4
-	ld de, DefaultFlypoint
-	callba Function116c1
-	call ClearTileMap
-	call Functione51
-	call LoadFontsBattleExtra
-	ld a, [MenuSelection]
-	dec a
-	call Functione3626
-	ld e, l
-	ld d, h
-	ld hl, DefaultFlypoint
-	ld c, $8
-	call InitString
-	ld a, [MenuSelection]
-	dec a
-	call Functione3626
-	ld de, DefaultFlypoint
-	call CopyName2
-	ret
-; e3778 (38:7778)
-
-	hlcoord 11, 7 ; XXX
-
-MenuDataHeader_0xe377b: ; 0xe377b
-	db $40 ; flags
-	db 04, 11 ; start coords
-	db 13, 19 ; end coords
-	dw MenuData2_0xe3783
-	db 1 ; default option
-; 0xe3783
-
-MenuData2_0xe3783: ; 0xe3783
-	db $80 ; flags
-	db 4 ; items
-	db "SWITCH@"
-	db "NAME@"
-	db "PRINT@"
-	db "QUIT@"
-; 0xe379c
-
-Functione379c: ; e379c (38:779c)
-	ld de, String_e37a1
-	jr Functione37e3
-; e37a1 (38:77a1)
-
-String_e37a1: ; e37a1
-	db "Choose a BOX.@"
-; e37af
-
-Functione37af: ; e37af (38:77af)
-	ld de, String_e37b4
-	jr Functione37e3
-; e37b4 (38:77b4)
-
-String_e37b4: ; e37b4
-	db "What's up?@"
-; e37be
-
-Functione37be: ; e37be (38:77be)
-	ld de, String_e37d3
-	call Functione37e3
-	ld de, SFX_WRONG
-	call WaitPlaySFX
-	call WaitSFX
-	ld c, 50
-	call DelayFrames
-	ret
-; e37d3 (38:77d3)
-
-String_e37d3: ; e37d3
-	db "There's no #MON.@"
-; e37e3
-
-Functione37e3: ; e37e3 (38:77e3)
-	push de
-	hlcoord 0, 14
-	ld bc, $212
-	call TextBox
-	pop de
-	hlcoord 1, 16
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
-	ret
-
-
 SECTION "bank39", ROMX, BANK[$39]
 
 CopyrightGFX:: ; e4000
@@ -72414,7 +47606,7 @@
 	ld a, [hl]
 	push af
 	ld [hl], $1
-	call WhiteBGMap
+	call ClearBGPalettes
 	hlcoord 0, 0
 	ld b, $10
 	ld c, $12
@@ -72456,7 +47648,7 @@
 
 .asm_e422a
 	call Functione455c
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	jr .asm_e4217
 
@@ -72824,7 +48016,7 @@
 
 .IsLight
 	ld c, $1
-	ld de, $0040 ;the 2 values next to this setting
+	ld de, $40 ;the 2 values next to this setting
 	ret
 
 .IsDark
@@ -72911,7 +48103,7 @@
 	hlcoord 16, 15 ;where on the screen the number is drawn
 	add "1"
 	ld [hl], a
-	call Functione5f
+	call LoadFontsExtra
 	and a
 	ret
 ; e4520
@@ -72985,7 +48177,7 @@
 	dec c
 	jr nz, .asm_e4564
 	hlcoord 1, 2
-	ld bc, $0028
+	ld bc, $28
 	ld a, [wJumptableIndex]
 	call AddNTimes
 	ld [hl], $ed
@@ -72996,7 +48188,7 @@
 Functione4579: ; e4579
 	ld de, MUSIC_NONE
 	call PlayMusic
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	ld a, VBGMap0 / $100
 	ld [hBGMapAddress + 1], a
@@ -73015,30 +48207,30 @@
 	call DelayFrames
 	callab Copyright
 	call WaitBGMap
-	ld c, $64
+	ld c, 100
 	call DelayFrames
 	call ClearTileMap
 	callba GBCOnlyScreen
 	call Functione45e8
-.asm_e45c0
+.joy_loop
 	call JoyTextDelay
 	ld a, [hJoyLast]
 	and BUTTONS
-	jr nz, .asm_e45de
+	jr nz, .pressed_button
 	ld a, [wJumptableIndex]
 	bit 7, a
-	jr nz, .asm_e45e3
-	call Functione4670
+	jr nz, .finish
+	call PlaceGameFreakPresents
 	callba Function8cf69
 	call DelayFrame
-	jr .asm_e45c0
+	jr .joy_loop
 
-.asm_e45de
+.pressed_button
 	call Functione465e
 	scf
 	ret
 
-.asm_e45e3
+.finish
 	call Functione465e
 	and a
 	ret
@@ -73059,11 +48251,11 @@
 	call FarDecompress
 	ld hl, VTiles0
 	ld de, w6_d000
-	ld bc, $0180
+	ld bc, $180
 	call Request2bpp
 	ld hl, VTiles1
 	ld de, w6_d000 + $800
-	ld bc, $0180
+	ld bc, $180
 	call Request2bpp
 	pop af
 	ld [rSVBK], a
@@ -73071,13 +48263,13 @@
 	ld de, $5458
 	ld a, $3
 	call Function3b2a
-	ld hl, $0007
+	ld hl, $7
 	add hl, bc
 	ld [hl], $a0
-	ld hl, $000c
+	ld hl, $c
 	add hl, bc
 	ld [hl], $60
-	ld hl, $000d
+	ld hl, $d
 	add hl, bc
 	ld [hl], $30
 	xor a
@@ -73099,16 +48291,16 @@
 	callba Function8cf53
 	call ClearTileMap
 	call ClearSprites
-	ld c, $10
+	ld c, 16
 	call DelayFrames
 	ret
 ; e4670
 
-Functione4670: ; e4670
+PlaceGameFreakPresents: ; e4670
 	ld a, [wJumptableIndex]
 	ld e, a
 	ld d, 0
-	ld hl, Jumptable_e467f
+	ld hl, .jumptable
 rept 2
 	add hl, de
 endr
@@ -73118,38 +48310,38 @@
 	jp [hl]
 ; e467f
 
-Jumptable_e467f: ; e467f
-	dw Functione468c
-	dw Functione468d
-	dw Functione46ba
-	dw Functione46dd
+.jumptable: ; e467f
+	dw PlaceGameFreakPresents_0
+	dw PlaceGameFreakPresents_1
+	dw PlaceGameFreakPresents_2
+	dw PlaceGameFreakPresents_3
 ; e4687
 
-Functione4687: ; e4687
+PlaceGameFreakPresents_AdvanceIndex: ; e4687
 	ld hl, wJumptableIndex
 	inc [hl]
 	ret
 ; e468c
 
-Functione468c: ; e468c
+PlaceGameFreakPresents_0: ; e468c
 	ret
 ; e468d
 
-Functione468d: ; e468d
+PlaceGameFreakPresents_1: ; e468d
 	ld hl, wcf65
 	ld a, [hl]
 	cp $20
-	jr nc, .asm_e4697
+	jr nc, .PlaceGameFreak
 	inc [hl]
 	ret
 
-.asm_e4697
+.PlaceGameFreak
 	ld [hl], 0
 	ld hl, .GAME_FREAK
 	decoord 5, 10
 	ld bc, .end - .GAME_FREAK
 	call CopyBytes
-	call Functione4687
+	call PlaceGameFreakPresents_AdvanceIndex
 	ld de, SFX_GAME_FREAK_PRESENTS
 	call PlaySFX
 	ret
@@ -73162,21 +48354,21 @@
 	db "@"
 ; e46ba
 
-Functione46ba: ; e46ba
+PlaceGameFreakPresents_2: ; e46ba
 	ld hl, wcf65
 	ld a, [hl]
 	cp $40
-	jr nc, .asm_e46c4
+	jr nc, .place_presents
 	inc [hl]
 	ret
 
-.asm_e46c4
+.place_presents
 	ld [hl], 0
 	ld hl, .presents
 	decoord 7,11
 	ld bc, .end - .presents
 	call CopyBytes
-	call Functione4687
+	call PlaceGameFreakPresents_AdvanceIndex
 	ret
 ; e46d6
 
@@ -73186,15 +48378,15 @@
 	db "@"
 ; e46dd
 
-Functione46dd: ; e46dd
+PlaceGameFreakPresents_3: ; e46dd
 	ld hl, wcf65
 	ld a, [hl]
 	cp $80
-	jr nc, .asm_e46e7
+	jr nc, .finish
 	inc [hl]
 	ret
 
-.asm_e46e7
+.finish
 	ld hl, wJumptableIndex
 	set 7, [hl]
 	ret
@@ -73309,24 +48501,24 @@
 rept 2
 	add hl, de
 endr
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, [hli]
 	ld [OBPals + 12], a
 	ld a, [hli]
 	ld [OBPals + 13], a
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 .asm_e47a3
 	ld hl, $b
 	add hl, bc
 	inc [hl]
-	call Functione4687
+	call PlaceGameFreakPresents_AdvanceIndex
 
 GameFreakLogoScene5: ; e47ab (39:47ab)
 	ret
@@ -73386,7 +48578,7 @@
 	call PlayMusic
 
 .done
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -73411,7 +48603,7 @@
 	ld a, $1
 	ld [hInMenu], a
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld [wJumptableIndex], a
 	ret
 ; e490f
@@ -73473,14 +48665,14 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap001
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroUnownsGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -73490,12 +48682,12 @@
 	ld hl, IntroTilemap002
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_365ad
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_365ad
@@ -73503,14 +48695,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
 	xor a
@@ -73549,14 +48741,14 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap003
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroBackgroundGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -73563,12 +48755,12 @@
 	ld hl, IntroTilemap004
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e5edd
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e5edd
@@ -73576,14 +48768,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	call Functione5516
 	call Functione549e
 	xor a
@@ -73610,15 +48802,15 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hBGMapMode], a
+	ld [hLCDStatCustom], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap005
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroUnownsGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -73628,12 +48820,12 @@
 	ld hl, IntroTilemap006
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_365ad
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_365ad
@@ -73641,14 +48833,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
 	xor a
@@ -73705,9 +48897,9 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap003
 	ld de, VBGMap0 tile $00
 	call Functione54fa
@@ -73715,7 +48907,7 @@
 	ld de, VTiles0 tile $00
 	call Functione54c2
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroSuicuneRunGFX
 	ld de, VTiles0 tile $00
 	call Functione54de
@@ -73725,12 +48917,12 @@
 	ld hl, IntroTilemap004
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e5edd
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e5edd
@@ -73738,14 +48930,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	call Functione5516
 	callba Function8cf53
 	ld de, $6cd8
@@ -73790,7 +48982,7 @@
 IntroScene9: ; e4c04 (39:4c04)
 ; Set up the next scene (same bg).
 	xor a
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	call ClearSprites
 	hlcoord 0, 0, AttrMap
 	ld bc, $f0
@@ -73803,18 +48995,18 @@
 	ld a, $3
 	call ByteFill
 	ld a, $2
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	call DelayFrame
 	call DelayFrame
 	call DelayFrame
 	ld a, $c
-	ld [hBGMapAddress], a ; $ff00+$d6
+	ld [hBGMapAddress], a
 	call DelayFrame
 	call DelayFrame
 	call DelayFrame
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld [hBGMapAddress], a ; $ff00+$d6
+	ld [hBGMapMode], a
+	ld [hBGMapAddress], a
 	ld [wc3c0], a
 	xor a
 	ld [wcf64], a
@@ -73860,15 +49052,15 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hBGMapMode], a
+	ld [hLCDStatCustom], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap007
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroUnownsGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -73875,12 +49067,12 @@
 	ld hl, IntroTilemap008
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_365ad
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_365ad
@@ -73888,14 +49080,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
 	xor a
@@ -73983,14 +49175,14 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap003
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroSuicuneRunGFX
 	ld de, VTiles0 tile $00
 	call Functione54de
@@ -74000,12 +49192,12 @@
 	ld hl, IntroTilemap004
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e5edd
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e5edd
@@ -74013,14 +49205,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	lb de, $6c, $58
 	ld a, $26
@@ -74038,9 +49230,9 @@
 
 IntroScene14: ; e4dfa (39:4dfa)
 ; Suicune runs then jumps.
-	ld a, [hSCX] ; $ff00+$cf
+	ld a, [hSCX]
 	sub 10
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld hl, wcf64
 	ld a, [hl]
 	inc [hl]
@@ -74087,14 +49279,14 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap009
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroSuicuneJumpGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -74109,12 +49301,12 @@
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	call Functione541b
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e77dd
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e77dd
@@ -74122,15 +49314,15 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, $90
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
 	lb de, $40, $28
@@ -74153,11 +49345,11 @@
 	cp $80
 	jr nc, .done
 	call Functione5441
-	ld a, [hSCY] ; $ff00+$d0
+	ld a, [hSCY]
 	and a
 	ret z
 	add 8
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	ret
 .done
 	call NextIntroScene
@@ -74169,14 +49361,14 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap011
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroSuicuneCloseGFX
 	ld de, VTiles1 tile $00
 	call Functione54de
@@ -74183,12 +49375,12 @@
 	ld hl, IntroTilemap012
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e6d6d
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e6d6d
@@ -74196,14 +49388,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
 	xor a
@@ -74219,11 +49411,11 @@
 	inc [hl]
 	cp $60
 	jr nc, .done
-	ld a, [hSCX] ; $ff00+$cf
+	ld a, [hSCX]
 	cp $60
 	ret z
 	add 8
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ret
 .done
 	call NextIntroScene
@@ -74235,14 +49427,14 @@
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap013
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroSuicuneBackGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -74257,12 +49449,12 @@
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	call Functione541b
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e77dd
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e77dd
@@ -74270,15 +49462,15 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	ld a, $d8
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	ld hl, wc300
 	xor a
@@ -74307,9 +49499,9 @@
 	jr nc, .asm_e5032
 	cp $28
 	ret nc
-	ld a, [hSCY] ; $ff00+$d0
+	ld a, [hSCY]
 	inc a
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCY], a
 	ret
 
 .asm_e5032
@@ -74344,10 +49536,10 @@
 IntroScene21: ; e505d (39:505d)
 ; Suicune gets more distant and turns black.
 	call Functione5451
-	ld c, $3
+	ld c, 3
 	call DelayFrames
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld [wcf64], a
 	ld [wcf65], a
 	call NextIntroScene
@@ -74407,18 +49599,18 @@
 
 IntroScene26: ; e50bb (39:50bb)
 ; Load the final scene.
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroTilemap015
 	ld de, VBGMap0 tile $00
 	call Functione54fa
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, IntroCrystalUnownsGFX
 	ld de, VTiles2 tile $00
 	call Functione54c2
@@ -74425,12 +49617,12 @@
 	ld hl, IntroTilemap017
 	ld de, VBGMap0 tile $00
 	call Functione54fa
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_e679d
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 	ld hl, Palette_e679d
@@ -74438,14 +49630,14 @@
 	ld bc, $80
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	xor a
-	ld [hSCX], a ; $ff00+$cf
-	ld [hSCY], a ; $ff00+$d0
+	ld [hSCX], a
+	ld [hSCY], a
 	ld a, $7
-	ld [hWX], a ; $ff00+$d1
+	ld [hWX], a
 	ld a, $90
-	ld [hWY], a ; $ff00+$d2
+	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
 	xor a
@@ -74496,7 +49688,7 @@
 	ret
 
 .clear
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 
 .done
@@ -74512,10 +49704,10 @@
 	ld a, $0
 	adc h
 	ld h, a
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld de, BGPals
 	ld b, $8
 .asm_e5187
@@ -74531,9 +49723,9 @@
 	dec b
 	jr nz, .asm_e5187
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 ; e519c (39:519c)
 
@@ -74642,10 +49834,10 @@
 .asm_e523e
 	ld c, a
 	ld b, $0
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	push hl
 	push bc
 	ld hl, BGPals
@@ -74694,9 +49886,9 @@
 	ld a, d
 	ld [hli], a
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 ; e5288 (39:5288)
 
@@ -74741,10 +49933,10 @@
 	add a
 endr
 	ld c, a
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	push bc
 	ld de, BGPals
 	ld a, c
@@ -74756,7 +49948,7 @@
 	ld bc, $8
 	call CopyBytes
 	pop bc
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, c
 	add e
 	ld e, a
@@ -74766,9 +49958,9 @@
 	ld bc, $8
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 ; e538d (39:538d)
 
@@ -74801,10 +49993,10 @@
 	add a
 	ld c, a
 	ld b, $0
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	push hl
 	ld hl, Palette_e53db
 	add hl, bc
@@ -74828,9 +50020,9 @@
 	ld a, d
 	ld [hli], a
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 ; e53db (39:53db)
 
@@ -74853,15 +50045,15 @@
 ; e541b
 
 Functione541b: ; e541b (39:541b)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $6
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Unkn1Pals
+	ld [rSVBK], a
+	ld hl, w6_d000
 	decoord 0, 0
-	ld b, $12
+	ld b, SCREEN_HEIGHT
 .asm_e542a
-	ld c, $14
+	ld c, SCREEN_WIDTH
 .asm_e542c
 	ld a, [hli]
 	ld [de], a
@@ -74877,7 +50069,7 @@
 	dec b
 	jr nz, .asm_e542a
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 Functione5441: ; e5441 (39:5441)
@@ -74889,7 +50081,7 @@
 	ret
 .asm_e544d
 	xor a
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Functione5451: ; e5451 (39:5451)
@@ -74910,7 +50102,7 @@
 	or b
 	jr nz, .asm_e5457
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	ret
 
 Functione546d: ; e546d (39:546d)
@@ -74927,9 +50119,9 @@
 	ld [Requested2bppSource], a
 	ld a, [hli]
 	ld [Requested2bppSource + 1], a
-	ld a, $9090 % $100
+	ld a, (VTiles2 tile $09) % $100
 	ld [Requested2bppDest], a
-	ld a, $9090 / $100
+	ld a, (VTiles2 tile $09) / $100
 	ld [Requested2bppDest + 1], a
 	ld a, $4
 	ld [Requested2bpp], a
@@ -74945,94 +50137,94 @@
 
 Functione549e: ; e549e (39:549e)
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	ret
 
 Functione54a3: ; e54a3 (39:54a3)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, BGPals
 	ld bc, $80
 	xor a
 	call ByteFill
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $1
-	ld [hCGBPalUpdate], a ; $ff00+$e5
+	ld [hCGBPalUpdate], a
 	call DelayFrame
 	call DelayFrame
 	ret
 
 Functione54c2: ; e54c2 (39:54c2)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $6
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	push de
-	ld de, Unkn1Pals
+	ld de, w6_d000
 	call Decompress
 	pop hl
-	ld de, Unkn1Pals
+	ld de, w6_d000
 	ld bc, $180
 	call Request2bpp
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 Functione54de: ; e54de (39:54de)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $6
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	push de
-	ld de, Unkn1Pals
+	ld de, w6_d000
 	call Decompress
 	pop hl
-	ld de, Unkn1Pals
+	ld de, w6_d000
 	ld bc, $1ff
 	call Request2bpp
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 Functione54fa: ; e54fa (39:54fa)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $6
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	push de
-	ld de, Unkn1Pals
+	ld de, w6_d000
 	call Decompress
 	pop hl
-	ld de, Unkn1Pals
+	ld de, w6_d000
 	ld bc, $140
 	call Request2bpp
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 Functione5516: ; e5516 (39:5516)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, LYOverrides
 	ld bc, $90
 	xor a
 	call ByteFill
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, $43
-	ld [hLCDStatCustom], a ; $ff00+$c6
+	ld [hLCDStatCustom], a
 	ret
 
 Functione552f: ; e552f (39:552f)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld a, [wcf64]
 	and $1
 	jr z, .asm_e5548
@@ -75050,9 +50242,9 @@
 	ld bc, $31
 	call ByteFill
 	ld a, [LYOverrides + 0]
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCX], a
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 IntroSuicuneRunGFX: ; e555d
@@ -75537,16 +50729,16 @@
 INCBIN "gfx/unknown/0f8aa0.2bpp"
 ; f8ac0
 
-GFX_f8ac0: ; f8ac0
-INCBIN "gfx/unknown/0f8ac0.2bpp"
+EnemyHPBarBorderGFX: ; f8ac0
+INCBIN "gfx/battle/enemy_hp_bar_border.1bpp"
 ; f8ae0
 
-GFX_f8ae0: ; f8ae0
-INCBIN "gfx/unknown/0f8ae0.2bpp"
+HPExpBarBorderGFX: ; f8ae0
+INCBIN "gfx/battle/hp_exp_bar_border.1bpp"
 ; f8b10
 
-GFX_f8b10: ; f8b10
-INCBIN "gfx/unknown/0f8b10.2bpp"
+ExpBarGFX: ; f8b10
+INCBIN "gfx/battle/expbar.2bpp"
 ; f8ba0
 
 TownMapGFX: ; f8ba0
@@ -75553,28 +50745,28 @@
 INCBIN "gfx/misc/town_map.2bpp.lz"
 ; f8ea4
 
-GFX_f8ea4: ; f8ea4
+GFX_f8ea4: ; unused
 INCBIN "gfx/unknown/0f8ea4.2bpp"
 ; f8f24
 
-GFX_f8f24: ; f8f24
-INCBIN "gfx/unknown/0f8f24.2bpp"
+OverworldPhoneIconGFX: ; f8f24
+INCBIN "gfx/mobile/overworld_phone_icon.2bpp"
 ; f8f34
 
-GFX_f8f34: ; f8f34
+GFX_f8f34: ; unused
 INCBIN "gfx/unknown/0f8f34.2bpp"
 ; f9204
 
-GFX_f9204: ; f9204
-INCBIN "gfx/unknown/0f9204.2bpp"
+TextBoxSpaceGFX: ; f9204
+INCBIN "gfx/frames/space.2bpp"
 ; f9214
 
-GFX_f9214: ; f9214
-INCBIN "gfx/unknown/0f9214.2bpp"
+MobilePhoneTilesGFX: ; f9214
+INCBIN "gfx/mobile/phone_tiles.2bpp"
 ; f9344
 
-GFX_f9344: ; f9344
-INCBIN "gfx/unknown/0f9344.2bpp"
+MapEntryFrameGFX: ; f9344
+INCBIN "gfx/frames/map_entry_sign.2bpp"
 ; f9424
 
 GFX_f9424: ; f9424
@@ -75585,6 +50777,7 @@
 INCBIN "gfx/misc/footprints.1bpp"
 ; fb434
 
+; This and the following two functions are unreferenced.
 Unknown_fb434:
 	db 0
 
@@ -75591,7 +50784,7 @@
 Functionfb435: ; 4b435
 	ld a, [Unknown_fb434]
 	and a
-	jp nz, Functionddc
+	jp nz, Get1bpp_2
 	jp Get1bpp
 ; fb43f
 
@@ -75598,14 +50791,15 @@
 Functionfb43f: ; fb43f
 	ld a, [Unknown_fb434]
 	and a
-	jp nz, Functiondc9
+	jp nz, Get2bpp_2
 	jp Get2bpp
+; End unreferenced block
 ; fb449
 
-Functionfb449:: ; fb449
+_LoadStandardFont:: ; fb449
 	ld de, Font
 	ld hl, VTiles1
-	lb bc, BANK(Font), $400 / 8
+	lb bc, BANK(Font), $80
 	ld a, [rLCDC]
 	bit 7, a
 	jp z, Copy1bpp
@@ -75612,47 +50806,45 @@
 
 	ld de, Font
 	ld hl, VTiles1
-	lb bc, BANK(Font), $100 / 8
-	call Functionddc
-	ld de, Font + $100
-	ld hl, VTiles1 + $200
-	lb bc, BANK(Font), $100 / 8
-	call Functionddc
-	ld de, Font + $200
-	ld hl, VTiles1 + $400
-	lb bc, BANK(Font), $100 / 8
-	call Functionddc
-	ld de, Font + $300
-	ld hl, VTiles1 + $600
-	lb bc, BANK(Font), $100 / 8
-	call Functionddc
+	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
 
-
-
-Functionfb48a:: ; fb48a
-	ld de, GFX_f9214
+_LoadFontsExtra1:: ; fb48a
+	ld de, MobilePhoneTilesGFX
 	ld hl, VTiles2 tile $60
-	lb bc, BANK(GFX_f9214), 1
-	call Functionddc
-	ld de, GFX_f8f24
+	lb bc, BANK(MobilePhoneTilesGFX), 1
+	call Get1bpp_2
+	ld de, OverworldPhoneIconGFX
 	ld hl, VTiles2 tile $62
-	lb bc, BANK(GFX_f8f24), 1
-	call Functiondc9
-	ld de, FontExtra + $30
+	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 Functiondc9
-	jr Functionfb4cc
+	call Get2bpp_2
+	jr LoadFrame
 ; fb4b0
 
-Functionfb4b0:: ; fb4b0
+_LoadFontsExtra2:: ; fb4b0
 	ld de, GFX_f9424
 	ld hl, VTiles2 tile $61
 	ld b, BANK(GFX_f9424)
 	ld c, 1
-	call Functiondc9
+	call Get2bpp_2
 	ret
 ; fb4be
 
@@ -75660,86 +50852,88 @@
 	ld de, FontBattleExtra
 	ld hl, VTiles2 tile $60
 	lb bc, BANK(FontBattleExtra), $19
-	call Functiondc9
-	jr Functionfb4cc
+	call Get2bpp_2
+	jr LoadFrame
 ; fb4cc
 
-Functionfb4cc: ; fb4cc
+LoadFrame: ; fb4cc
 	ld a, [TextBoxFrame]
 	and 7
-	ld bc, $0030
+	ld bc, TILES_PER_FRAME * LEN_1BPP_TILE
 	ld hl, Frames
 	call AddNTimes
 	ld d, h
 	ld e, l
 	ld hl, VTiles2 tile $79
-	lb bc, BANK(Frames), 6
-	call Functionddc
+	lb bc, BANK(Frames), TILES_PER_FRAME
+	call Get1bpp_2
 	ld hl, VTiles2 tile $7f
-	ld de, GFX_f9204
-	lb bc, BANK(GFX_f9204), 1
-	call Functionddc
+	ld de, TextBoxSpaceGFX
+	lb bc, BANK(TextBoxSpaceGFX), 1
+	call Get1bpp_2
 	ret
 ; fb4f2
 
-Functionfb4f2: ; fb4f2
+LoadBattleFontsHPBar: ; fb4f2
 	ld de, FontBattleExtra
 	ld hl, VTiles2 tile $60
 	lb bc, BANK(FontBattleExtra), $c
-	call Functiondc9
+	call Get2bpp_2
 	ld hl, VTiles2 tile $70
-	ld de, FontBattleExtra + $100
+	ld de, FontBattleExtra + $10 * LEN_2BPP_TILE
 	lb bc, BANK(FontBattleExtra), 3
-	call Functiondc9
-	call Functionfb4cc
+	call Get2bpp_2
+	call LoadFrame
 
-Functionfb50d: ; fb50d
-	ld de, GFX_f8ac0
+LoadHPBar: ; fb50d
+	ld de, EnemyHPBarBorderGFX
 	ld hl, VTiles2 tile $6c
-	lb bc, BANK(GFX_f8ac0), 4
-	call Functionddc
-	ld de, GFX_f8ae0
+	lb bc, BANK(EnemyHPBarBorderGFX), 4
+	call Get1bpp_2
+	ld de, HPExpBarBorderGFX
 	ld hl, VTiles2 tile $73
-	lb bc, BANK(GFX_f8ae0), 6
-	call Functionddc
-	ld de, GFX_f8b10
+	lb bc, BANK(HPExpBarBorderGFX), 6
+	call Get1bpp_2
+	ld de, ExpBarGFX
 	ld hl, VTiles2 tile $55
-	lb bc, BANK(GFX_f8b10), 9
-	call Functiondc9
-	ld de, GFX_f9214 + $90
+	lb bc, BANK(ExpBarGFX), 9
+	call Get2bpp_2
+	ld de, MobilePhoneTilesGFX + 9 * LEN_2BPP_TILE
 	ld hl, VTiles2 tile $5e
-	lb bc, BANK(GFX_f9214), 2
-	call Functiondc9
+	lb bc, BANK(MobilePhoneTilesGFX), 2
+	call Get2bpp_2
 	ret
 ; fb53e
 
 Functionfb53e: ; fb53e
 	call _LoadFontsBattleExtra
-	ld de, GFX_f8ac0
+	ld de, EnemyHPBarBorderGFX
 	ld hl, VTiles2 tile $6c
-	lb bc, BANK(GFX_f8ac0), 4
-	call Functionddc
-	ld de, GFX_f8ae0
+	lb bc, BANK(EnemyHPBarBorderGFX), 4
+	call Get1bpp_2
+	ld de, HPExpBarBorderGFX
 	ld hl, VTiles2 tile $78
-	lb bc, BANK(GFX_f8ae0), 1
-	call Functionddc
-	ld de, GFX_f8ae0 + $18
+	lb bc, BANK(HPExpBarBorderGFX), 1
+	call Get1bpp_2
+	ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE
 	ld hl, VTiles2 tile $76
-	lb bc, BANK(GFX_f8ae0), 2
-	call Functionddc
-	ld de, GFX_f8b10
+	lb bc, BANK(HPExpBarBorderGFX), 2
+	call Get1bpp_2
+	ld de, ExpBarGFX
 	ld hl, VTiles2 tile $55
-	lb bc, BANK(GFX_f8b10), 8
-	call Functiondc9
+	lb bc, BANK(ExpBarGFX), 8
+	call Get2bpp_2
 
 Functionfb571: ; fb571
 	ld de, GFX_f89b0
 	ld hl, VTiles2 tile $31
 	lb bc, BANK(GFX_f89b0), $11
-	call Functiondc9
+	call Get2bpp_2
 	ret
 ; fb57e
 
+; These functions seem to be related to backwards compatibility
+
 Functionfb57e: ; fb57e
 	ld a, [wd003]
 	ld hl, OTPartyMon1Species
@@ -75761,7 +50955,7 @@
 .asm_fb59c
 	ld b, h
 	ld c, l
-	ld hl, OTPartyMon1Level - OTPartyMon1
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	cp 101
@@ -75807,7 +51001,7 @@
 ; fb5dd
 
 Functionfb5dd: ; fb5dd
-	ld a, [DefaultFlypoint]
+	ld a, [wd002]
 	ld d, a
 	ld a, [PartyCount]
 	ld b, a
@@ -76079,12 +51273,12 @@
 ; fb877
 
 Functionfb877: ; fb877
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	call LowVolume
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call UpdateSprites
 	call ClearSprites
@@ -76096,11 +51290,11 @@
 	xor a
 	ld [wPokedexStatus], a
 	callba Function41a7f
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	ld a, $1
 	ld [wPokedexStatus], a
 	callba Function4424d
-	call Functiona80
+	call WaitPressAorB_BlinkCursor
 	pop af
 	ld [wPokedexStatus], a
 	call MaxVolume
@@ -76110,17 +51304,17 @@
 	ld [hSCX], a
 	call Functionfb8c8
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; fb8c8
 
 Functionfb8c8: ; fb8c8
 	call ClearTileMap
-	call Functione5f
-	call Functione51
+	call LoadFontsExtra
+	call LoadStandardFont
 	callba Function40ab2
 	call Function3200
-	callba Function3da97
+	callba GetEnemyMonDVs
 	ld a, [hli]
 	ld [TempMonDVs], a
 	ld a, [hl]
@@ -76713,7 +51907,7 @@
 	call Functionfcdf4
 
 	ld hl, PartyMonOT
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call Functionfcdd7
 	ld de, wc6f2
 	call Functionfcdf4
@@ -76723,19 +51917,19 @@
 	call Functionfcdf4
 
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdd7
 	ld de, wc6ff
 	call Functionfce0f
 
 	ld hl, PartyMon1DVs
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdd7
 	ld de, wc6fd
 	call Functionfce0f
 
 	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdd7
 	ld b, h
 	ld c, l
@@ -76751,10 +51945,10 @@
 	jr c, .asm_fcce6
 	ld a, 2
 .asm_fcce6
-	ld [wc733], a
+	ld [wEnemyCharging], a
 
 	ld hl, PartyMon1Level
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdd7
 	ld a, [hl]
 	ld [CurPartyLevel], a
@@ -76762,7 +51956,7 @@
 	ld [CurPartySpecies], a
 	xor a
 	ld [MonType], a
-	ld [wd10b], a
+	ld [wPokemonWithdrawDepositParameter], a
 	callab Functione039
 	predef TryAddMonToParty
 
@@ -76774,7 +51968,7 @@
 	jr c, .asm_fcd1c
 	ld b, 1
 .asm_fcd1c
-	callba SetPkmnCaughtData
+	callba SetPartymonCaughtData
 
 	ld e, TRADE_NICK
 	call GetTradeAttribute
@@ -76797,7 +51991,7 @@
 	call Functionfcdf4
 
 	ld hl, PartyMonOT
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call Functionfcdde
 	ld hl, wc724
 	call Functionfcdf4
@@ -76804,24 +51998,24 @@
 
 	ld e, TRADE_DVS
 	call GetTradeAttribute
-	ld de, wc72f
+	ld de, wEnemyTrappingMove
 	call Functionfce0f
 
 	ld hl, PartyMon1DVs
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdde
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	call Functionfce0f
 
 	ld e, TRADE_OT_ID
 	call GetTradeAttribute
-	ld de, wc732
+	ld de, wPlayerCharging
 	call Functionfce15
 
 	ld hl, PartyMon1ID
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdde
-	ld hl, wc731
+	ld hl, wEnemyWrapCount
 	call Functionfce0f
 
 	ld e, TRADE_ITEM
@@ -76828,7 +52022,7 @@
 	call GetTradeAttribute
 	push hl
 	ld hl, PartyMon1Item
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call Functionfcdde
 	pop hl
 	ld a, [hl]
@@ -76896,13 +52090,13 @@
 ; fcdf4
 
 Functionfcdf4: ; fcdf4
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ret
 ; fcdfb
 
 Functionfcdfb: ; fcdfb
-	ld bc, $0004
+	ld bc, 4
 	call CopyBytes
 	ld a, $50
 	ld [de], a
@@ -76910,7 +52104,7 @@
 ; fce05
 
 Functionfce05: ; fce05
-	ld bc, $0003
+	ld bc, 3
 	call CopyBytes
 	ld a, $50
 	ld [de], a
@@ -77240,7 +52434,7 @@
 	ld [hMoneyTemp + 1], a
 	ld a, [hli]
 	ld [hMoneyTemp + 2], a
-	ld de, wd851
+	ld de, wMomsMoney
 	ld bc, hMoneyTemp
 	callba CompareMoney
 	jr nc, .have_enough_money
@@ -77261,7 +52455,7 @@
 	ld [hl], (2300 % $100) ; $fc
 .loop
 	ld de, wdc19
-	ld bc, wd851
+	ld bc, wMomsMoney
 	callba CompareMoney
 	jr z, .exact
 	jr nc, .less_than
@@ -77297,10 +52491,10 @@
 	ld a, [hli]
 	ld [hMoneyTemp], a
 	ld a, [hli]
-	ld [$ffc4], a
+	ld [hMoneyTemp + 1], a
 	ld a, [hli]
-	ld [$ffc5], a
-	ld de, wd851
+	ld [hMoneyTemp + 2], a
+	ld de, wMomsMoney
 	ld bc, hMoneyTemp
 	callba TakeMoney
 	ret
@@ -77501,7 +52695,7 @@
 	ld hl, w6_d000
 	call Function10425f
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, w6_d000
 	call Function10419d
 	ret
@@ -77517,7 +52711,7 @@
 	ld hl, w6_d400
 	call Function104263
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, w6_d400
 	call Function10419d
 	ret
@@ -77537,18 +52731,18 @@
 	call Function10425f
 	call DelayFrame
 	di
-	ld a, [rVBK] ; $ff00+$4f
+	ld a, [rVBK]
 	push af
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, w6_d400
 	call Function1041ad
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, w6_d000
 	call Function1041ad
 	pop af
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ei
 	ret
 
@@ -77593,7 +52787,7 @@
 	ld [rVBK], a
 	ld a, $3
 	ld [rSVBK], a
-	ld de, $d800
+	ld de, w3_d800
 	ld a, [hBGMapAddress + 1]
 	ld [rHDMA1], a
 	ld a, [hBGMapAddress]
@@ -77618,7 +52812,7 @@
 	ld [rVBK], a
 	ld a, $3
 	ld [rSVBK], a
-	ld hl, $d800
+	ld hl, w3_d800
 	call Function10419d
 	ret
 ; 104110
@@ -77637,18 +52831,18 @@
 	call Function10425f
 	call DelayFrame
 	di
-	ld a, [rVBK] ; $ff00+$4f
+	ld a, [rVBK]
 	push af
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, w6_d400
 	call Function1041b7
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld hl, w6_d000
 	call Function1041b7
 	pop af
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ei
 	ret
 ; 104148
@@ -77680,11 +52874,11 @@
 Function104177: ; 104177
 	ld a, [hBGMapMode]
 	push af
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
 	ld [hBGMapMode], a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld a, [rSVBK]
 	push af
 	ld a, 6
@@ -77697,7 +52891,7 @@
 	pop af
 	ld [rSVBK], a
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	pop af
 	ld [hBGMapMode], a
 	ret
@@ -77711,12 +52905,12 @@
 Function10419d: ; 10419d (41:419d)
 	call Function10424e
 	ld a, $23
-	ld [hDMATransfer], a ; $ff00+$e8
+	ld [hDMATransfer], a
 
 Function1041a4: ; 104a14
 .asm_1041a4
 	call DelayFrame
-	ld a, [hDMATransfer] ; $ff00+$e8
+	ld a, [hDMATransfer]
 	and a
 	jr nz, .asm_1041a4
 	ret
@@ -77724,7 +52918,7 @@
 Function1041ad: ; 1041ad (41:41ad)
 	ld a, [hBGMapAddress + 1]
 	ld d, a
-	ld a, [hBGMapAddress] ; $ff00+$d6
+	ld a, [hBGMapAddress]
 	ld e, a
 	ld c, $24
 	jr Function104209
@@ -77732,7 +52926,7 @@
 Function1041b7: ; 1041b7 (41:41b7)
 	ld a, [hBGMapAddress + 1]
 	ld d, a
-	ld a, [hBGMapAddress] ; $ff00+$d6
+	ld a, [hBGMapAddress]
 	ld e, a
 	ld c, $24
 	jr asm_104205
@@ -77848,14 +53042,14 @@
 
 Function10424e: ; 10424e (41:424e)
 	ld a, h
-	ld [rHDMA1], a ; $ff00+$51
+	ld [rHDMA1], a
 	ld a, l
-	ld [rHDMA2], a ; $ff00+$52
+	ld [rHDMA2], a
 	ld a, [hBGMapAddress + 1]
 	and $1f
-	ld [rHDMA3], a ; $ff00+$53
-	ld a, [hBGMapAddress] ; $ff00+$d6
-	ld [rHDMA4], a ; $ff00+$54
+	ld [rHDMA3], a
+	ld a, [hBGMapAddress]
+	ld [rHDMA4], a
 	ret
 
 Function10425f: ; 10425f (41:425f)
@@ -77902,7 +53096,8 @@
 	ret
 
 
-Function104284:: ; 104284
+_Get2bpp:: ; 104284
+	; 2bpp when [rLCDC] & $80
 	; switch to WRAM bank 6
 	ld a, [rSVBK]
 	push af
@@ -77944,24 +53139,25 @@
 	ret
 ; 1042b2
 
-Function1042b2:: ; 1042b2
+_Get1bpp:: ; 1042b2
+	; 1bpp when [rLCDC] & $80
 .loop
 	ld a, c
 	cp $10
-	jp c, .asm_1042d6
-	jp z, .asm_1042d6
+	jp c, .bankswitch
+	jp z, .bankswitch
 	push bc
 	push hl
 	push de
 	ld c, $10
-	call .asm_1042d6
+	call .bankswitch
 	pop de
-	ld hl, $0080
+	ld hl, $80
 	add hl, de
 	ld d, h
 	ld e, l
 	pop hl
-	ld bc, $100
+	lb bc, 1, 0
 	add hl, bc
 	pop bc
 	ld a, c
@@ -77970,18 +53166,20 @@
 	jr .loop
 ; 1042d6
 
-.asm_1042d6: ; 1042d6
+.bankswitch: ; 1042d6
 	ld a, [rSVBK]
 	push af
 	ld a, $6
 	ld [rSVBK], a
+
 	push bc
 	push hl
+
 	ld a, b
 	ld l, c
 	ld h, $0
 rept 3
-	add hl, hl
+	add hl, hl ; multiply by 8
 endr
 	ld c, l
 	ld b, h
@@ -77988,16 +53186,20 @@
 	ld h, d
 	ld l, e
 	ld de, w6_d000
-	call Functiondef
+	call FarCopyBytesDouble_DoubleBankSwitch
+
 	pop hl
 	pop bc
+
 	push bc
 	call DelayFrame
 	pop bc
+
 	ld d, h
 	ld e, l
 	ld hl, w6_d000
 	call Function104209
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -78016,13 +53218,13 @@
 	decoord 0, 0, AttrMap
 	call Function10433a
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld c, $8
 	ld hl, w6_d000 + $80
 	ld de, VBGMap1 tile $00
 	call Function104209
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld c, $8
 	ld hl, w6_d000
 	ld de, VBGMap1 tile $00
@@ -78058,7 +53260,10 @@
 BoltEmote:     INCBIN "gfx/emotes/bolt.2bpp"
 SleepEmote:    INCBIN "gfx/emotes/sleep.2bpp"
 FishEmote:     INCBIN "gfx/emotes/fish.2bpp"
-FishingRodGFX: INCBIN "gfx/misc/fishing.2bpp"
+FishingRodGFX1: INCBIN "gfx/misc/fishing1.2bpp"
+FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
+FishingRodGFX3: INCBIN "gfx/misc/fishing3.2bpp"
+FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
 
 
 RunCallback_05_03: ; 1045b0
@@ -78111,22 +53316,22 @@
 	ld h, [hl]
 	ld l, a
 	srl c
-	jr z, .asm_10461e
+	jr z, .skip_to_load
 	ld a, [WestConnectedMapWidth]
 	add 6
 	ld e, a
 	ld d, 0
 
-.asm_10461a
+.loop
 	add hl, de
 	dec c
-	jr nz, .asm_10461a
+	jr nz, .loop
 
-.asm_10461e
+.skip_to_load
 	ld a, l
 	ld [wd194], a
 	ld a, h
-	ld [wd195], a
+	ld [wd194 + 1], a
 	jp EnteredConnection
 ; 104629
 
@@ -78148,22 +53353,22 @@
 	ld h, [hl]
 	ld l, a
 	srl c
-	jr z, .asm_10465a
+	jr z, .skip_to_load
 	ld a, [EastConnectedMapWidth]
 	add 6
 	ld e, a
 	ld d, 0
 
-.asm_104656
+.loop
 	add hl, de
 	dec c
-	jr nz, .asm_104656
+	jr nz, .loop
 
-.asm_10465a
+.skip_to_load
 	ld a, l
 	ld [wd194], a
 	ld a, h
-	ld [wd195], a
+	ld [wd194 + 1], a
 	jp EnteredConnection
 ; 104665
 
@@ -78190,7 +53395,7 @@
 	ld a, l
 	ld [wd194], a
 	ld a, h
-	ld [wd195], a
+	ld [wd194 + 1], a
 	jp EnteredConnection
 ; 104696
 
@@ -78217,7 +53422,7 @@
 	ld a, l
 	ld [wd194], a
 	ld a, h
-	ld [wd195], a
+	ld [wd194 + 1], a
 	; fallthrough
 ; 1046c4
 
@@ -78301,7 +53506,7 @@
 	ld [wc2ce], a
 	callba Function8c0e5
 	callba Function8c001
-	call Function2173
+	call OverworldTextModeSwitch
 	call Function104770
 	call Function1047a3
 	ret
@@ -78311,21 +53516,21 @@
 	ld [wd153], a
 	xor a
 	ld [wd152], a
-	ld [hSCY], a ; $ff00+$d0
-	ld [hSCX], a ; $ff00+$cf
+	ld [hSCY], a
+	ld [hSCX], a
 	callba Function5958
-	ld a, [rVBK] ; $ff00+$4f
+	ld a, [rVBK]
 	push af
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	xor a
-	ld bc, $400
+	lb bc, 4, 0
 	ld hl, VBGMap0 tile $00
 	call ByteFill
 	pop af
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ld a, $60
-	ld bc, $400
+	lb bc, 4, 0
 	ld hl, VBGMap0 tile $00
 	call ByteFill
 	ret
@@ -78333,12 +53538,12 @@
 Function1047a3: ; 1047a3 (41:47a3)
 	decoord 0, 0
 	call Function1047b4
-	ld a, [hCGB] ; $ff00+$e6
+	ld a, [hCGB]
 	and a
 	ret z
 	decoord 0, 0, AttrMap
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 
 Function1047b4: ; 1047b4 (41:47b4)
 	ld hl, VBGMap0 tile $00
@@ -78358,7 +53563,7 @@
 	dec b
 	jr nz, .asm_1047bb
 	ld a, $0
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 	ret
 
 LoadGraphics: ; 1047cf
@@ -78365,11 +53570,11 @@
 	call LoadTilesetHeader
 	call Function2821
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	xor a
-	ld [hTileAnimFrame], a ; $ff00+$df
-	callba Function14168
-	call Functione5f
+	ld [hTileAnimFrame], a
+	callba RefreshSprites
+	call LoadFontsExtra
 	callba Function106594
 	ret
 
@@ -78383,14 +53588,14 @@
 	callba ReturnFromMapSetupScript
 	call Function2914
 	callba Function579d
-	callba Function154f7
+	callba CheckReplaceKrisSprite
 	ld hl, wPlayerSpriteSetupFlags
 	bit 6, [hl]
-	jr nz, .asm_104817
+	jr nz, .skip
 	ld hl, VramState
 	set 0, [hl]
 	call Function2e31
-.asm_104817
+.skip
 	ld a, [wPlayerSpriteSetupFlags]
 	and $1c
 	ld [wPlayerSpriteSetupFlags], a
@@ -78410,6 +53615,7 @@
 	jr z, .right
 	and a
 	ret
+
 .down
 	ld a, [PlayerMapY]
 	sub 4
@@ -78420,6 +53626,7 @@
 	jr z, .ok
 	and a
 	ret
+
 .up
 	ld a, [PlayerMapY]
 	sub 4
@@ -78427,6 +53634,7 @@
 	jr z, .ok
 	and a
 	ret
+
 .left
 	ld a, [PlayerMapX]
 	sub $4
@@ -78434,6 +53642,7 @@
 	jr z, .ok
 	and a
 	ret
+
 .right
 	ld a, [PlayerMapX]
 	sub 4
@@ -78444,6 +53653,7 @@
 	jr z, .ok
 	and a
 	ret
+
 .ok
 	scf
 	ret
@@ -78453,16 +53663,16 @@
 	ld hl, OverworldMap
 	ld a, [XCoord]
 	bit 0, a
-	jr nz, .asm_10487d
+	jr nz, .increment_then_halve1
 	srl a
 	add $1
-	jr .asm_104881
+	jr .resume
 
-.asm_10487d
+.increment_then_halve1
 	add $1
 	srl a
 
-.asm_104881
+.resume
 	ld c, a
 	ld b, $0
 	add hl, bc
@@ -78472,21 +53682,21 @@
 	ld b, $0
 	ld a, [YCoord]
 	bit 0, a
-	jr nz, .asm_10489a
+	jr nz, .increment_then_halve2
 	srl a
 	add $1
-	jr .asm_10489e
+	jr .resume2
 
-.asm_10489a
+.increment_then_halve2
 	add $1
 	srl a
 
-.asm_10489e
+.resume2
 	call AddNTimes
 	ld a, l
 	ld [wd194], a
 	ld a, h
-	ld [wd195], a
+	ld [wd194 + 1], a
 	ld a, [YCoord]
 	and $1
 	ld [wd196], a
@@ -78512,14 +53722,14 @@
 	ld [wca01], a
 	ld a, $14
 	ld [wca02], a
-	ld a, [rIE] ; $ff00+$ff
+	ld a, [rIE]
 	push af
 	call Function104a95
 	ld d, a
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	pop af
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	push de
 	call ClearTileMap
 	call EnableLCD
@@ -78559,9 +53769,9 @@
 	cp $4
 	jr z, .asm_104963
 	call Function104a71
-	callba Function10619d
+	callba RestoreMobileEventIndex
 	callba MobileFn_1060a9
-	callba Function106187
+	callba BackupMobileEventIndex
 .asm_104963
 	ld a, [wc90f]
 	and a
@@ -78586,7 +53796,7 @@
 	call GetMysteryGiftBank
 	ld a, [wc910]
 	ld c, a
-	callba MysteryGiftGetItem
+	callba MysteryGiftGetItemHeldEffect
 	ld a, c
 	ld [s0_abe4], a
 	ld [wNamedObjectIndexBuffer], a
@@ -78614,7 +53824,7 @@
 Function1049c5: ; 1049c5 (41:49c5)
 	call PrintText
 	ld a, $e3
-	ld [rLCDC], a ; $ff00+$40
+	ld [rLCDC], a
 	ret
 ; 1049cd (41:49cd)
 
@@ -78740,12 +53950,12 @@
 .asm_104a9f
 	call Function104d96
 	call Function104ddd
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $10
 	jp z, Function104bd0
 	cp $6c
 	jr nz, .asm_104a9f
-	ld a, [$ffbb]
+	ld a, [hPrintNum9]
 	cp $2
 	jr z, Function104b22
 	ld hl, $ffb3
@@ -78756,10 +53966,10 @@
 	jp nz, Function104bd0
 	jr asm_104b0a
 .asm_104ac8
-	ld a, [rLY] ; $ff00+$44
+	ld a, [rLY]
 	cp $90
 	jr c, .asm_104ac8
-	ld c, $56
+	ld c, rRP % $100
 	ld a, $c0
 	ld [$ff00+c], a
 	ld b, $f0
@@ -78767,12 +53977,12 @@
 	push bc
 	call Function105038
 	ld b, $2
-	ld c, $56
+	ld c, rRP % $100
 .asm_104add
 	ld a, [$ff00+c]
 	and b
 	ld b, a
-	ld a, [rLY] ; $ff00+$44
+	ld a, [rLY]
 	cp $90
 	jr nc, .asm_104add
 .asm_104ae6
@@ -78779,7 +53989,7 @@
 	ld a, [$ff00+c]
 	and b
 	ld b, a
-	ld a, [rLY] ; $ff00+$44
+	ld a, [rLY]
 	cp $90
 	jr c, .asm_104ae6
 	ld a, b
@@ -78788,11 +53998,11 @@
 	jr z, .asm_104a9f
 	or a
 	jr nz, .asm_104a9f
-	ld a, [$ffc4]
+	ld a, [hMoneyTemp + 1]
 	bit 1, a
 	jr z, .asm_104ad5
 	ld a, $10
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	jp Function104bd0
 
 Function104b04: ; 104b04 (41:4b04)
@@ -78829,7 +54039,7 @@
 
 Function104b49: ; 104b49 (41:4b49)
 	call Function105033
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	ld a, [$ffb3]
@@ -78844,7 +54054,7 @@
 	call Function104d4e
 	ret nz
 	call Function10502e
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	call Function104d43
@@ -78855,7 +54065,7 @@
 	call Function104d56
 	ret nz
 	call Function105033
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
@@ -78867,7 +54077,7 @@
 	call Function104d4e
 	ret nz
 	call Function10502e
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	call Function104d43
@@ -78877,7 +54087,7 @@
 	call Function104d56
 	ret nz
 	call Function105033
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	ld a, [$ffb3]
@@ -78891,13 +54101,13 @@
 	call Function104d4e
 	ret nz
 	call Function10502e
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
 Function104bd0: ; 104bd0 (41:4bd0)
 	nop
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $10
 	jr z, .asm_104c18
 	cp $6c
@@ -78916,7 +54126,7 @@
 	call Function1050fb
 	ld a, $26
 	ld [wca02], a
-	ld a, [$ffbb]
+	ld a, [hPrintNum9]
 	cp $2
 	jr z, .asm_104c10
 	call Function104d43
@@ -78927,14 +54137,14 @@
 	jr nz, Function104bd0
 	jp Function104b22
 .asm_104c18
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	push af
 	call Function104da0
 	xor a
-	ld [rIF], a ; $ff00+$f
-	ld a, [rIE] ; $ff00+$ff
+	ld [rIF], a
+	ld a, [rIE]
 	or $1
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	ei
 	call DelayFrame
 	pop af
@@ -78947,12 +54157,12 @@
 .asm_104c37
 	call Function104d96
 	call Function104ddd
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $10
 	jp z, Function104d1c
 	cp $6c
 	jr nz, .asm_104c37
-	ld a, [$ffbb]
+	ld a, [hPrintNum9]
 	cp $2
 	jr z, .asm_104c6c
 	call Function104c8a
@@ -78983,7 +54193,7 @@
 	call Function104d56
 	ret nz
 	call Function105033
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	ld a, [$ffb3]
@@ -78998,7 +54208,7 @@
 	call Function104d4e
 	ret nz
 	call Function10502e
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	call Function104d43
@@ -79009,7 +54219,7 @@
 	call Function104d56
 	ret nz
 	call Function105033
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
@@ -79021,7 +54231,7 @@
 	call Function104d4e
 	ret nz
 	call Function10502e
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	call Function104d43
@@ -79031,7 +54241,7 @@
 	call Function104d56
 	ret nz
 	call Function105033
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret nz
 	ld a, [$ffb3]
@@ -79046,20 +54256,20 @@
 	call Function104d4e
 	ret nz
 	call Function10502e
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
 Function104d1c: ; 104d1c (41:4d1c)
 	nop
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	push af
 	call Function104da0
 	xor a
-	ld [rIF], a ; $ff00+$f
-	ld a, [rIE] ; $ff00+$ff
+	ld [rIF], a
+	ld a, [rIE]
 	or $1
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	ei
 	call DelayFrame
 	pop af
@@ -79067,7 +54277,7 @@
 
 Function104d32: ; 104d32 (41:4d32)
 	ld a, $80
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	and a
 	ret
 
@@ -79074,7 +54284,7 @@
 Function104d38: ; 104d38 (41:4d38)
 	call Function104d96
 	call Function104e46
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
@@ -79081,19 +54291,19 @@
 Function104d43: ; 104d43 (41:4d43)
 	call Function104d96
 	call Function104dfe
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
 Function104d4e: ; 104d4e (41:4d4e)
 	call Function104e93
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
 Function104d56: ; 104d56 (41:4d56)
 	call Function104f57
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	cp $6c
 	ret
 
@@ -79100,9 +54310,9 @@
 Function104d5e: ; 104d5e (41:4d5e)
 	call Function104d74
 	ld a, $4
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	call Function104d96
 	xor a
 	ld b, a
@@ -79115,25 +54325,25 @@
 
 Function104d74: ; 104d74 (41:4d74)
 	xor a
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	ld a, $fe
-	ld [rTMA], a ; $ff00+$6
-	ld [rTIMA], a ; $ff00+$5
+	ld [rTMA], a
+	ld [rTIMA], a
 	ld a, $2
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	or $4
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	ret
 
 Function104d86: ; 104d86 (41:4d86)
 	xor a
-	ld [rTAC], a ; $ff00+$7
-	ld [rTMA], a ; $ff00+$6
-	ld [rTIMA], a ; $ff00+$5
+	ld [rTAC], a
+	ld [rTMA], a
+	ld [rTIMA], a
 	ld a, $2
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	or $4
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	ret
 
 Function104d96: ; 104d96 (41:4d96)
@@ -79140,7 +54350,7 @@
 	ld a, $c0
 	call Function104e8c
 	ld a, $1
-	ld [$ffbb], a
+	ld [hPrintNum9], a
 	ret
 
 Function104da0: ; 104da0 (41:4da0)
@@ -79147,7 +54357,7 @@
 	xor a
 	call Function104e8c
 	ld a, $2
-	ld [rTAC], a ; $ff00+$7
+	ld [rTAC], a
 	ret
 
 Function104da9: ; 104da9 (41:4da9)
@@ -79154,7 +54364,7 @@
 	inc d
 	ret z
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 	ld a, [$ff00+c]
 	bit 1, a
@@ -79166,7 +54376,7 @@
 	inc d
 	ret z
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 	ld a, [$ff00+c]
 	bit 1, a
@@ -79181,7 +54391,7 @@
 	dec d
 	ret z
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 	jr .asm_104dc8
 
@@ -79192,7 +54402,7 @@
 	dec d
 	ret z
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 	jr .asm_104dd4
 
@@ -79200,16 +54410,16 @@
 	ld d, $0
 	ld e, d
 	ld a, $1
-	ld [$ffbb], a
+	ld [hPrintNum9], a
 .asm_104de4
 	call Function105038
 	ld b, $2
-	ld c, $56
-	ld a, [$ffc4]
+	ld c, rRP % $100
+	ld a, [hMoneyTemp + 1]
 	bit 1, a
 	jr z, .asm_104df6
 	ld a, $10
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ret
 .asm_104df6
 	bit 0, a
@@ -79219,7 +54429,7 @@
 	jr nz, .asm_104de4
 
 Function104dfe: ; 104dfe (41:4dfe)
-	ld c, $56
+	ld c, rRP % $100
 	ld d, $0
 	ld e, d
 	call Function104db7
@@ -79232,7 +54442,7 @@
 	call Function104da9
 	jp z, Function104f42
 	ld a, $6c
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ld d, $3d
 	call Function104dd1
 	ld d, $5
@@ -79258,7 +54468,7 @@
 
 Function104e46: ; 104e46 (41:4e46)
 	ld a, $2
-	ld [$ffbb], a
+	ld [hPrintNum9], a
 	ld c, $56
 	ld d, $0
 	ld e, d
@@ -79285,19 +54495,19 @@
 	ld d, $3d
 	call Function104dd1
 	ld a, $6c
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ret
 
 Function104e8c: ; 104e8c (41:4e8c)
-	ld [rRP], a ; $ff00+$56
+	ld [rRP], a
 	ld a, $ff
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ret
 
 Function104e93: ; 104e93 (41:4e93)
 	xor a
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
-	ld [hMathBuffer], a ; $ff00+$b8
+	ld [hDivisor], a
+	ld [hMathBuffer], a
 	push hl
 	push bc
 	ld c, $56
@@ -79313,21 +54523,21 @@
 	pop bc
 	pop hl
 	call Function104ed6
-	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
-	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
-	ld a, [hMathBuffer] ; $ff00+$b8
+	ld a, [hDivisor]
+	ld [hQuotient], a
+	ld a, [hMathBuffer]
 	ld [$ffb5], a
 	push hl
 	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
 	ld b, $2
 	call Function104ed6
-	ld hl, $ffbc
+	ld hl, hPrintNum10
 	ld b, $1
 	call Function104faf
-	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
+	ld a, [hQuotient]
+	ld [hDivisor], a
 	ld a, [$ffb5]
-	ld [hMathBuffer], a ; $ff00+$b8
+	ld [hMathBuffer], a
 	pop hl
 	ret
 
@@ -79343,7 +54553,7 @@
 	cpl
 	ld b, a
 	ld a, $f4
-	ld [rTMA], a ; $ff00+$6
+	ld [rTMA], a
 .asm_104eee
 	inc b
 	jr z, .asm_104f2e
@@ -79351,18 +54561,18 @@
 	ld [$ffb6], a
 	ld a, [hli]
 	ld e, a
-	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
+	ld a, [hDivisor]
 	add e
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
-	ld a, [hMathBuffer] ; $ff00+$b8
+	ld [hDivisor], a
+	ld a, [hMathBuffer]
 	adc $0
-	ld [hMathBuffer], a ; $ff00+$b8
+	ld [hMathBuffer], a
 .asm_104f02
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 	ld a, $c1
-	ld [rRP], a ; $ff00+$56
+	ld [rRP], a
 	ld d, $1
 	ld a, e
 	rlca
@@ -79370,15 +54580,15 @@
 	jr nc, .asm_104f13
 	inc d
 .asm_104f13
-	ld a, [rTIMA] ; $ff00+$5
+	ld a, [rTIMA]
 	cp $f8
 	jr c, .asm_104f13
 	ld a, $c0
-	ld [rRP], a ; $ff00+$56
+	ld [rRP], a
 	dec d
 	jr z, .asm_104f25
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 .asm_104f25
 	ld a, [$ffb6]
@@ -79388,9 +54598,9 @@
 	jr .asm_104f02
 .asm_104f2e
 	ld a, $fe
-	ld [rTMA], a ; $ff00+$6
+	ld [rTMA], a
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	halt
 	ld d, $5
 	call Function104dc5
@@ -79399,27 +54609,27 @@
 	ret
 
 Function104f42: ; 104f42 (41:4f42)
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	or $2
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ret
 
 Function104f49: ; 104f49 (41:4f49)
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	or $1
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ret
 
 Function104f50: ; 104f50 (41:4f50)
-	ld a, [$ffbc]
+	ld a, [hPrintNum10]
 	or $80
-	ld [$ffbc], a
+	ld [hPrintNum10], a
 	ret
 
 Function104f57: ; 104f57 (41:4f57)
 	xor a
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
-	ld [hMathBuffer], a ; $ff00+$b8
+	ld [hDivisor], a
+	ld [hMathBuffer], a
 	push bc
 	push hl
 	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
@@ -79432,13 +54642,13 @@
 	pop af
 	cp b
 	jp c, Function104f50
-	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
+	ld a, [hQuotient]
 	cp $5a
 	jp nz, Function104f50
 	call Function104faf
-	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
+	ld a, [hDivisor]
 	ld d, a
-	ld a, [hMathBuffer] ; $ff00+$b8
+	ld a, [hMathBuffer]
 	ld e, a
 	push hl
 	push de
@@ -79457,19 +54667,19 @@
 	push de
 	ld d, $3d
 	call Function104dd1
-	ld hl, $ffbc
+	ld hl, hPrintNum10
 	ld b, $1
 	call Function104ed6
 	pop de
 	pop hl
 	ld a, d
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
+	ld [hDivisor], a
 	ld a, e
-	ld [hMathBuffer], a ; $ff00+$b8
+	ld [hMathBuffer], a
 	ret
 
 Function104faf: ; 104faf (41:4faf)
-	ld c, $56
+	ld c, rRP % $100
 	ld d, $0
 	call Function104db7
 	jp z, Function104f42
@@ -79483,7 +54693,7 @@
 	cpl
 	ld b, a
 	xor a
-	ld [$ffc5], a
+	ld [hMoneyTemp + 2], a
 	call Function104d86
 .asm_104fd2
 	inc b
@@ -79506,10 +54716,10 @@
 	bit 1, a
 	jr nz, .asm_104fe5
 .asm_104fed
-	ld a, [$ffc5]
+	ld a, [hMoneyTemp + 2]
 	ld d, a
-	ld a, [rTIMA] ; $ff00+$5
-	ld [$ffc5], a
+	ld a, [rTIMA]
+	ld [hMoneyTemp + 2], a
 	sub d
 	cp $12
 	jr c, .asm_104ffd
@@ -79529,17 +54739,17 @@
 .asm_10500b
 	ld a, e
 	ld [hli], a
-	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
+	ld a, [hDivisor]
 	add e
-	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
-	ld a, [hMathBuffer] ; $ff00+$b8
+	ld [hDivisor], a
+	ld a, [hMathBuffer]
 	adc $0
-	ld [hMathBuffer], a ; $ff00+$b8
+	ld [hMathBuffer], a
 	jr .asm_104fd2
 .asm_10501a
 	call Function104d74
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	ld d, $0
 	call Function104da9
 	jp z, Function104f42
@@ -79557,9 +54767,9 @@
 
 Function105038: ; 105038 (41:5038)
 	ld a, $20
-	ld [rJOYP], a ; $ff00+$0
+	ld [rJOYP], a
 rept 2
-	ld a, [rJOYP] ; $ff00+$0
+	ld a, [rJOYP]
 endr
 	cpl
 	and $f
@@ -79566,9 +54776,9 @@
 	swap a
 	ld b, a
 	ld a, $10
-	ld [rJOYP], a ; $ff00+$0
+	ld [rJOYP], a
 rept 6
-	ld a, [rJOYP] ; $ff00+$0
+	ld a, [rJOYP]
 endr
 	cpl
 	and $f
@@ -79577,11 +54787,11 @@
 	ld a, [hMoneyTemp]
 	xor c
 	and c
-	ld [$ffc4], a
+	ld [hMoneyTemp + 1], a
 	ld a, c
 	ld [hMoneyTemp], a
 	ld a, $30
-	ld [rJOYP], a ; $ff00+$0
+	ld [rJOYP], a
 	ret
 
 Function105069: ; 105069 (41:5069)
@@ -79707,17 +54917,17 @@
 	cp EGG
 	jr z, .asm_10513e
 	push hl
-	ld hl, PartyMon1Level - PartyMon1
+	ld hl, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
 	inc de
-	ld hl, PartyMon1Species - PartyMon1
+	ld hl, MON_SPECIES
 	add hl, bc
 	ld a, [hl]
 	ld [de], a
 	inc de
-	ld hl, PartyMon1Moves - PartyMon1
+	ld hl, MON_MOVES
 	add hl, bc
 	push bc
 	ld bc, NUM_MOVES
@@ -79726,7 +54936,7 @@
 	pop hl
 .asm_10513e
 	push hl
-	ld hl, PartyMon2 - PartyMon1
+	ld hl, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
 	ld c, l
@@ -79740,7 +54950,7 @@
 	jp CloseSRAM
 
 Function105153: ; 105153 (41:5153)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	ld hl, MysteryGiftGFX
 	ld de, VTiles2 tile $00
@@ -79893,14 +55103,14 @@
 	call Function1050fb
 	ld a, $24
 	ld [wca02], a
-	ld a, [rIE] ; $ff00+$ff
+	ld a, [rIE]
 	push af
 	call Function104c2d
 	ld d, a
 	xor a
-	ld [rIF], a ; $ff00+$f
+	ld [rIF], a
 	pop af
-	ld [rIE], a ; $ff00+$ff
+	ld [rIE], a
 	ld a, d
 	cp $10
 	jp z, Function105712
@@ -79907,7 +55117,7 @@
 	cp $6c
 	jp nz, Function10571a
 	call Function1056eb
-	ld c, $3c
+	ld c, 60
 	call DelayFrames
 	call Function105777
 	ld hl, Text_10575e
@@ -79945,7 +55155,7 @@
 	dec c
 	ret z
 	push bc
-	ld c, $4
+	ld c, 4
 	call DelayFrames
 	pop bc
 	jr .asm_1056ed
@@ -79964,15 +55174,15 @@
 asm_105726: ; 105726 (41:5726)
 	call PrintText
 	ld a, $e3
-	ld [rLCDC], a ; $ff00+$40
+	ld [rLCDC], a
 	ret
 ; 10572e (41:572e)
 
 String_10572e: ; 10572e
-	db   "エーボタン", $1f, "おすと"
+	db   "エーボタン¯おすと"
 	next "つうしん",   $4a, "おこなわれるよ!"
-	next "ビーボタン", $1f, "おすと"
-	next "つうしん",   $1f, "ちゅうし します"
+	next "ビーボタン¯おすと"
+	next "つうしん¯ちゅうし します"
 	db   "@"
 
 ; 10575e
@@ -80039,12 +55249,12 @@
 	ret
 
 Function1057d7: ; 1057d7 (41:57d7)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	ld hl, MysteryGiftJP_GFX
 	ld de, VTiles2 tile $00
 	ld a, BANK(MysteryGiftJP_GFX)
-	ld bc, $400
+	lb bc, 4, 0
 	call FarCopyBytes
 	ld hl, MysteryGiftJP_GFX + $400
 	ld de, VTiles0 tile $00
@@ -80236,7 +55446,7 @@
 	ld [wd265], a
 
 	push hl
-	callba Function34548
+	callba CheckUserIsCharging
 	pop hl
 	jr nz, .grammar
 
@@ -80551,1095 +55761,8 @@
 	ret
 ; 105ef6
 
+INCLUDE "misc/mobile_41.asm"
 
-
-SECTION "bank41_2", ROMX, BANK[$41]
-
-Mobile_HallOfFame2:: mobile ; 0x105ef6
-	ld a, $5
-	call GetSRAMBank
-	ld hl, GameTimeHours
-	ld de, $a001
-	ld bc, $0004
-	call CopyBytes
-	ld hl, $a010
-	ld de, $a005
-	ld bc, $0004
-	call CopyBytes
-	ld hl, $a039
-	ld de, $a009
-	ld bc, $0004
-	call CopyBytes
-	ld hl, $a01b
-	ld de, $a00d
-	ld bc, $0003
-	call CopyBytes
-	call Function106162
-	call CloseSRAM
-	ret
-; 105f33
-
-MagikarpLength_Mobile: mobile ; 105f33
-	ld a, $5
-	call GetSRAMBank
-	ld de, Buffer1
-	ld hl, $a07b
-	ld a, [de]
-	cp [hl]
-	jr z, .asm_105f47
-	jr nc, .asm_105f4f
-	jr .asm_105f55
-
-.asm_105f47
-	inc hl
-	inc de
-	ld a, [de]
-	cp [hl]
-	dec hl
-	dec de
-	jr c, .asm_105f55
-
-.asm_105f4f
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	dec de
-	ld [hl], a
-
-.asm_105f55
-	ld hl, $a07d
-	ld a, [hli]
-	or [hl]
-	dec hl
-	jr z, .asm_105f6d
-	ld a, [de]
-	cp [hl]
-	jr z, .asm_105f65
-	jr c, .asm_105f6d
-	jr .asm_105f72
-
-.asm_105f65
-	inc hl
-	inc de
-	ld a, [de]
-	cp [hl]
-	jr nc, .asm_105f72
-	dec hl
-	dec de
-
-.asm_105f6d
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	ld [hl], a
-
-.asm_105f72
-	call Function106162
-	call CloseSRAM
-	ret
-; 105f79
-
-MobileFn_105f79: mobile ; 105f79
-	ld a, $5
-	call GetSRAMBank
-	ld a, [hProduct]
-	ld hl, $a07f
-	cp [hl]
-	jr z, .asm_105f8b
-	jr nc, .asm_105f92
-	jr .asm_105f98
-
-.asm_105f8b
-	inc hl
-	ld a, [hMultiplicand]
-	cp [hl]
-	jr c, .asm_105f98
-	dec hl
-
-.asm_105f92
-	ld a, [hProduct]
-	ld [hli], a
-	ld a, [hMultiplicand]
-	ld [hl], a
-
-.asm_105f98
-	call Function106162
-	call CloseSRAM
-	ret
-; 105f9f
-
-MobileFn_105f9f: mobile ; 105f9f
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a070
-	inc [hl]
-	jr nz, .asm_105fae
-	dec hl
-	inc [hl]
-	inc hl
-
-.asm_105fae
-	dec hl
-	ld a, [$a071]
-	cp [hl]
-	jr z, .asm_105fb9
-	jr c, .asm_105fc1
-	jr .asm_105fc9
-
-.asm_105fb9
-	inc hl
-	ld a, [$a072]
-	cp [hl]
-	jr nc, .asm_105fc9
-	dec hl
-
-.asm_105fc1
-	ld a, [hli]
-	ld [$a071], a
-	ld a, [hl]
-	ld [$a072], a
-
-.asm_105fc9
-	call Function106162
-	call CloseSRAM
-	ret
-; 105fd0
-
-MobileFn_105fd0: mobile ; 105fd0
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a06f
-	xor a
-	ld [hli], a
-	ld [hl], a
-	call Function106162
-	call CloseSRAM
-	ret
-; 105fe3
-
-MobileFn_105fe3: mobile ; 105fe3
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a076
-	ld a, e
-	add [hl]
-	ld [hld], a
-	ld a, d
-	adc [hl]
-	ld [hld], a
-	jr nc, .asm_106001
-	inc [hl]
-	jr nz, .asm_106001
-	dec hl
-	inc [hl]
-	jr nz, .asm_106001
-	ld a, $ff
-rept 3
-	ld [hli], a
-endr
-	ld [hl], a
-
-.asm_106001
-	call Function106162
-	call CloseSRAM
-	ret
-; 106008
-
-MobileFn_106008: mobile ; 106008
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a07a
-	ld a, [bc]
-	dec bc
-	add [hl]
-	ld [hld], a
-	ld a, [bc]
-	dec bc
-	adc [hl]
-	ld [hld], a
-	ld a, [bc]
-	adc [hl]
-	ld [hld], a
-	jr nc, .asm_106027
-	inc [hl]
-	jr nz, .asm_106027
-	ld a, $ff
-rept 3
-	ld [hli], a
-endr
-	ld [hl], a
-
-.asm_106027
-	call Function106162
-	call CloseSRAM
-	ret
-; 10602e
-
-MobileFn_10602e: mobile ; 10602e (41:602e)
-	ld hl, $a010
-	jp Function106117
-
-MobileFn_106035: mobile ; 106035
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa8d]
-	and a
-	call CloseSRAM
-	ret nz
-	ld hl, $a014
-	jp Function106123
-
-MobileFn_106049: mobile ; 106049
-	ld hl, $a018
-	jp Function10611d
-
-MobileFn_106050: mobile ; 106050
-	ld a, [BattleType]
-	cp BATTLETYPE_TUTORIAL
-	ret z
-	ld hl, $a01b
-	jp Function10611d
-
-MobileFn_10605d: mobile ; 10605d
-	ld a, [BattleType]
-	cp BATTLETYPE_TUTORIAL
-	ret z
-	ld hl, $a01e
-	jp Function10611d
-
-MobileFn_10606a: mobile ; 10606a
-	ld hl, $a021
-	jp Function10611d
-
-MobileFn_106071: mobile ; 106071
-	ld hl, $a024
-	jp Function10611d
-
-Mobile_HallOfFame:: mobile ; 0x106078
-	ld hl, $a027
-	jp Function10611d
-
-MobileFn_10607f: mobile ; 10607f (41:607f)
-	ld hl, $a02a
-	jp Function10611d
-
-MobileFn_106086: mobile ; 106086
-	ld hl, $a02d
-	jp Function10611d
-
-MobileFn_10608d: mobile ; 10608d (41:608d)
-	ld hl, $a030
-	jp Function10611d
-
-MobileFn_106094: mobile ; 106094
-	ld hl, $a033
-	jp Function10611d
-
-MobileFn_10609b: mobile ; 10609b
-	ld hl, $a036
-	jp Function10611d
-
-Mobile_HealParty: mobile ; 1060a2
-	ld hl, $a039
-	jp Function10611d
-
-MobileFn_1060a9: mobile ; 1060a9 (41:60a9)
-	ld hl, $a03c
-	jr Function10611d
-
-MobileFn_1060af: mobile ; 1060af
-	ld hl, $a03f
-	jr Function10611d
-
-MobileFn_1060b5: mobile ; 1060b5
-	ld hl, $a042
-	jr Function10611d
-
-MobileFn_1060bb: mobile ; 1060bb
-	ld hl, $a045
-	jr Function10611d
-
-MobileFn_1060c1: mobile ; 1060c1
-	ld hl, $a048
-	jr Function10611d
-
-MobileFn_1060c7: mobile ; 1060c7
-	ld hl, $a04b
-	jr Function10611d
-
-MobileFn_1060cd: mobile ; 1060cd
-	ld hl, $a04e
-	jr Function106123
-
-MobileFn_1060d3: mobile ; 1060d3
-	ld hl, $a051
-	jr Function10611d
-
-MobileFn_1060d9: mobile ; 1060df
-	ld hl, $a054
-	jr Function10611d
-
-MobileFn_1060df: mobile ; 1060df
-	ld hl, $a057
-	jr Function10611d
-
-MobileFn_1060e5: mobile ; 1060e5
-	ld a, [hBattleTurn]
-	and a
-	ret nz
-	ld hl, $a05a
-	jr Function10611d
-
-MobileFn_1060ef: mobile ; 1060ef
-	ld hl, $a05d
-	jr Function10611d
-
-MobileFn_1060f5: mobile ; 1060f5
-	ld hl, $a060
-	jr Function10611d
-
-MobileFn_1060fb: mobile ; 1060fb
-	ld hl, $a063
-	jr Function10611d
-
-MobileFn_106101: mobile ; 106101
-	ld hl, $a066
-	jr Function10611d
-; 106107
-
-MobileFn_106107: mobile ; 106107
-	ld hl, $a069
-	jr Function10611d
-; 10610d
-
-MobileFn_10610d: mobile ; 10610d
-	ld a, [hBattleTurn]
-	and a
-	ret nz
-	ld hl, $a06c
-	jr Function10611d
-; 106117
-
-Function106117: ; 106117
-	push bc
-	ld bc, 3
-	jr Function10612d
-; 10611d
-
-Function10611d: ; 10611d
-	push bc
-	ld bc, 2
-	jr Function10612d
-; 106123
-
-Function106123: ; 106123
-	push bc
-	ld bc, 1
-	jr Function10612d
-; 106129
-
-Function106129: ; 106129
-	push bc
-	ld bc, 0
-
-Function10612d: ; 10612d
-	ld a, $5
-	call GetSRAMBank
-	push hl
-	push de
-	ld e, c
-	inc e
-.asm_106136
-	ld a, [hli]
-	inc a
-	jr nz, .asm_10613d
-	dec e
-	jr nz, .asm_106136
-
-.asm_10613d
-	pop de
-	pop hl
-	jr z, .asm_10614d
-	add hl, bc
-.asm_106142
-	inc [hl]
-	jr nz, .asm_10614d
-	ld a, c
-	and a
-	jr z, .asm_10614d
-	dec hl
-	dec c
-	jr .asm_106142
-
-.asm_10614d
-	call Function106162
-	call CloseSRAM
-	pop bc
-	ret
-; 106155
-
-MobileFn_106155: mobile ; 106155
-	ld a, $5
-	call GetSRAMBank
-	call Function106162
-	call CloseSRAM
-	ret
-; 106162
-
-Function106162: ; 106162
-	push de
-	call Function10616e
-	ld hl, $a081
-	ld [hl], d
-	inc hl
-	ld [hl], e
-	pop de
-	ret
-; 10616e
-
-Function10616e: ; 10616e
-	push bc
-	ld hl, $a001
-	ld bc, $0080
-	xor a
-	ld de, 0
-.asm_106179
-	ld a, e
-	add [hl]
-	ld e, a
-	jr nc, .asm_10617f
-	inc d
-
-.asm_10617f
-	inc hl
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_106179
-	pop bc
-	ret
-; 106187
-
-
-Function106187: ; 106187
-	ld a, BANK(s1_be3c)
-	call GetSRAMBank
-	ld a, [s1_be3c]
-	push af
-	ld a, BANK(s1_be44)
-	call GetSRAMBank
-	pop af
-	ld [s1_be44], a
-	call CloseSRAM
-	ret
-; 10619d
-
-
-Function10619d: ; 10619d (41:619d)
-	ld a, BANK(s1_be44)
-	call GetSRAMBank
-	ld a, [s1_be44]
-	push af
-	ld a, BANK(s1_be3c)
-	call GetSRAMBank
-	pop af
-	ld [s1_be3c], a
-	call CloseSRAM
-	ret
-; 1061b3 (41:61b3)
-
-Function1061b3: ; 1061b3
-	call Function10616e
-	ld hl, $a081
-	ld a, d
-	cp [hl]
-	ret nz
-	inc hl
-	ld a, e
-	cp [hl]
-	ret
-; 1061c0
-
-Function1061c0: ; 1061c0 (41:61c0)
-	ld a, BANK(s1_be3c)
-	call GetSRAMBank
-	xor a
-	ld [s1_be3c], a
-	call CloseSRAM
-	ret
-; 1061cd (41:61cd)
-
-Function1061cd: ; 1061cd
-	ld hl, $a001
-	ld bc, $0082
-	xor a
-	call ByteFill
-	ld hl, $a07d
-	ld a, $3
-	ld [hli], a
-	ld [hl], $e8
-	call Function106162
-	ld hl, $a001
-	ld de, $a084
-	ld bc, $0082
-	call CopyBytes
-	ret
-; 1061ef
-
-
-Function1061ef:: ; 1061ef
-	push bc
-	xor a
-	ld [hProduct], a
-	ld [hMultiplicand], a
-	ld [$ffb5], a
-	ld a, b
-	and $f
-	cp $1
-	jr z, .asm_106212
-	cp $2
-	jr z, .asm_10620e
-	cp $3
-	jr z, .asm_10620a
-	ld a, [de]
-	ld [hProduct], a
-	inc de
-
-.asm_10620a
-	ld a, [de]
-	ld [hMultiplicand], a
-	inc de
-
-.asm_10620e
-	ld a, [de]
-	ld [$ffb5], a
-	inc de
-
-.asm_106212
-	ld a, [de]
-	ld [$ffb6], a
-	inc de
-	push de
-	xor a
-	ld [$ffbb], a
-	ld a, b
-	ld [$ffbc], a
-	ld a, c
-	cp 2
-	jr z, .asm_10626a
-	ld de, ._2
-	cp 3
-	jr z, .asm_106256
-	ld de, ._3
-	cp 4
-	jr z, .asm_106256
-	ld de, ._4
-	cp 5
-	jr z, .asm_106256
-	ld de, ._5
-	cp 6
-	jr z, .asm_106256
-	ld de, ._6
-	cp 7
-	jr z, .asm_106256
-	ld de, ._7
-	cp 8
-	jr z, .asm_106256
-	ld de, ._8
-	cp 9
-	jr z, .asm_106256
-	ld de, ._9
-
-.asm_106256
-rept 3
-	inc de
-endr
-rept 2
-	dec a
-endr
-.asm_10625b
-	push af
-	call Function1062b2
-	call Function1062ff
-rept 4
-	inc de
-endr
-	pop af
-	dec a
-	jr nz, .asm_10625b
-
-.asm_10626a
-	ld c, 0
-	ld a, [$ffb6]
-.asm_10626e
-	cp 10
-	jr c, .asm_106277
-	sub 10
-	inc c
-	jr .asm_10626e
-
-.asm_106277
-	ld b, a
-	ld a, [$ffbb]
-	or c
-	ld [$ffbb], a
-	jr nz, .asm_106284
-	call Function1062f7
-	jr .asm_106288
-
-.asm_106284
-	ld a, "0"
-	add c
-	ld [hl], a
-
-.asm_106288
-	call Function1062ff
-	ld a, "0"
-	add b
-	ld [hli], a
-	pop de
-	pop bc
-	ret
-; 106292
-
-._9	dd 1000000000
-._8	dd 100000000
-._7	dd 10000000
-._6	dd 1000000
-._5	dd 100000
-._4	dd 10000
-._3	dd 1000
-._2	dd 100
-; 1062b2
-
-Function1062b2: ; 1062b2
-	ld c, $0
-.asm_1062b4
-	ld a, [de]
-	dec de
-	ld b, a
-	ld a, [$ffb6]
-	sub b
-	ld [$ffba], a
-	ld a, [de]
-	dec de
-	ld b, a
-	ld a, [$ffb5]
-	sbc b
-	ld [$ffb9], a
-	ld a, [de]
-	dec de
-	ld b, a
-	ld a, [hMultiplicand]
-	sbc b
-	ld [hMathBuffer], a
-	ld a, [de]
-rept 3
-	inc de
-endr
-	ld b, a
-	ld a, [hProduct]
-	sbc b
-	ld [hMultiplier], a
-	jr c, .asm_1062eb
-	ld a, [hMultiplier]
-	ld [hProduct], a
-	ld a, [hMathBuffer]
-	ld [hMultiplicand], a
-	ld a, [$ffb9]
-	ld [$ffb5], a
-	ld a, [$ffba]
-	ld [$ffb6], a
-	inc c
-	jr .asm_1062b4
-
-.asm_1062eb
-	ld a, [$ffbb]
-	or c
-	jr z, Function1062f7
-	ld a, $f6
-	add c
-	ld [hl], a
-	ld [$ffbb], a
-	ret
-
-Function1062f7:
-	ld a, [$ffbc]
-	bit 7, a
-	ret z
-
-	ld [hl], $f6
-	ret
-; 1062ff
-
-Function1062ff: ; 1062ff
-	ld a, [$ffbc]
-	bit 7, a
-	jr nz, .asm_10630d
-	bit 6, a
-	jr z, .asm_10630d
-	ld a, [$ffbb]
-	and a
-	ret z
-
-.asm_10630d
-	inc hl
-	ret
-; 10630f
-
-Function10630f: ; 10630f
-	xor a
-	ld [ScriptVar], a
-	ret
-; 106314
-
-MobileFn_106314: mobile ; 106314
-	ld a, $4
-	call GetSRAMBank
-	ld a, c
-	cpl
-	ld [$b000], a
-	call CloseSRAM
-	ld a, $7
-	call GetSRAMBank
-	ld a, c
-	ld [$a800], a
-	call CloseSRAM
-	ret
-; 10632f
-
-Function10632f: ; 10632f
-	or a
-	mobile
-
-	ld a, $4
-	call GetSRAMBank
-	ld a, [$b000]
-	cpl
-	ld b, a
-	call CloseSRAM
-	ld a, $7
-	call GetSRAMBank
-	ld a, [$a800]
-	ld c, a
-	call CloseSRAM
-	ld a, c
-	cp b
-	jr nz, .asm_106359
-	and a
-	jr z, .asm_106359
-	and $8f
-	cp c
-	jr nz, .asm_106359
-	ld c, a
-	scf
-	ret
-
-.asm_106359
-	xor a
-	ld c, a
-	ret
-; 10635c
-
-Function10635c: ; 10635c
-	ld a, [wcd25]
-	bit 7, a
-	ret nz
-	ld a, [wcd25]
-	ld hl, Jumptable_10636a
-	rst JumpTable
-	ret
-; 10636a
-
-Jumptable_10636a: ; 10636a
-	dw Function10637c
-	dw Function106392
-	dw Function1063cc
-	dw Function1063d8
-	dw Function1063e5
-	dw Function1063f3
-	dw Function106403
-	dw Function106442
-	dw Function106453
-; 10637c
-
-Function10637c: ; 10637c
-	ld de, wcd30
-	ld hl, $0041
-	ld bc, $0041
-	ld a, $40
-	call Function3e32
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-; 106392
-
-Function106392: ; 106392
-	xor a
-	ld [wcf64], a
-	ld a, [wc821]
-	bit 1, a
-	jr nz, .asm_1063a2
-	bit 0, a
-	jr z, .asm_1063bf
-	ret
-
-.asm_1063a2
-	call Function10632f
-	ld a, c
-	and a
-	jr nz, .asm_1063b4
-	ld a, $b
-	ld [wcf64], a
-	ld a, $7
-	ld [wcd25], a
-	ret
-
-.asm_1063b4
-	ld a, $7
-	ld [wcf64], a
-	ld a, $7
-	ld [wcd25], a
-	ret
-
-.asm_1063bf
-	ld a, $1
-	ld [wcf64], a
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-; 1063cc
-
-Function1063cc: ; 1063cc
-	ld a, $78
-	ld [wcd42], a
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-
-Function1063d8: ; 1063d8
-	ld hl, wcd42
-	dec [hl]
-	ret nz
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-; 1063e5
-
-Function1063e5: ; 1063e5
-	ld a, [wcf64]
-	cp $3
-	ret nz
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-; 1063f3
-
-Function1063f3: ; 1063f3
-	ld de, wcd31
-	ld a, $32
-	call Function3e32
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-; 106403
-
-Function106403: ; 106403
-	ld a, [wc821]
-	bit 1, a
-	jr nz, .asm_106426
-	bit 0, a
-	jr z, .asm_10640f
-	ret
-
-.asm_10640f
-	ld a, [wcd31]
-	and $80
-	ld c, a
-	ld a, [wcd30]
-	or c
-	inc a
-	ld c, a
-	call MobileFn_106314
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-
-.asm_106426
-	call Function10632f
-	ld a, c
-	and a
-	jr z, .asm_106435
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-
-.asm_106435
-	ld c, $0
-	call MobileFn_106314
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-	ret
-; 106442
-
-Function106442: ; 106442
-	ld a, $36
-	call Function3e32
-	xor a
-	ld [hMobile], a
-	ld [$ffc9], a
-	ld a, [wcd25]
-	inc a
-	ld [wcd25], a
-
-Function106453: ; 106453
-	ld a, [wcd25]
-	set 7, a
-	ld [wcd25], a
-	nop
-	ld a, $4
-	ld [wcf64], a
-	ret
-; 106462
-
-Function106462: ; 106462
-	ret
-; 106463
-
-Function106463: ; 106463
-	ret
-; 106464
-
-Function106464:: ; 106464
-	ld de, GFX_f9214
-	ld hl, VTiles2 tile $60
-	lb bc, BANK(GFX_f9214), 1
-	call Get2bpp
-	ld de, GFX_f9424
-	ld hl, VTiles2 tile $61
-	lb bc, BANK(GFX_f9424), 1
-	call Get2bpp
-	ld de, GFX_106514
-	ld hl, VTiles2 tile $62
-	ld c, 9
-	ld b, BANK(GFX_106514)
-	call Get2bpp
-	ld de, $40b0
-	ld hl, VTiles2 tile $6b
-	ld b, $f ; XXX no graphics at 0f:40b0
-	call Get2bpp
-	callba Functionfb4cc
-	ret
-; 10649b
-
-Function10649b: ; 10649b
-	ld a, [TextBoxFrame]
-	and $7
-	ld bc, $0030
-	ld hl, Frames
-	call AddNTimes
-	ld d, h
-	ld e, l
-	ld hl, VTiles2 tile $79
-	ld c, $6
-	ld b, BANK(Frames)
-	call Function1064c3
-	ld hl, VTiles2 tile $7f
-	ld de, GFX_f9204
-	ld c, $1
-	ld b, BANK(GFX_f9204)
-	call Function1064c3
-	ret
-; 1064c3
-
-Function1064c3: ; 1064c3
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	push bc
-	push hl
-	ld hl, Function3f88
-	ld a, b
-	rst FarCall
-	pop hl
-	pop bc
-	pop af
-	ld [rSVBK], a
-	jr asm_1064ed
-
-Function1064d8: ; 1064d8
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	push bc
-	push hl
-	ld hl, Function3f9f
-	ld a, b
-	rst FarCall
-	pop hl
-	pop bc
-	pop af
-	ld [rSVBK], a
-	jr asm_1064ed
-
-asm_1064ed
-	ld de, w6_d000
-	ld b, $0
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	ld a, [rVBK]
-	push af
-	ld a, $1
-	ld [rVBK], a
-	call Get2bpp
-	pop af
-	ld [rVBK], a
-	pop af
-	ld [rSVBK], a
-	ret
-; 10650a
-
-Function10650a: ; 10650a
-	ld de, GFX_f9214 + $20
-	lb bc, BANK(GFX_f9214), $11
-	call Get2bpp
-	ret
-; 106514
-
-GFX_106514:
-INCBIN "gfx/unknown/106514.2bpp"
-
-
-Function106594:: ; 106594
-	ld de, GFX_1065ad
-	ld hl, VTiles1
-	lb bc, BANK(GFX_1065ad), $80
-	call Get2bpp
-	ld de, GFX_1065ad + $800
-	ld hl, VTiles2 tile $7f
-	lb bc, BANK(GFX_1065ad), 1
-	call Get2bpp
-	ret
-; 1065ad
-
-GFX_1065ad:
-INCBIN "gfx/unknown/1065ad.2bpp"
-
-
 INCLUDE "misc/mobile_42.asm"
 
 
@@ -81657,8 +55780,20 @@
 
 
 INCLUDE "misc/mobile_45.asm"
+INCLUDE "misc/mobile_46.asm"
 
+SECTION "bank47", ROMX, BANK[$47]
 
+INCLUDE "misc/battle_tower_47.asm"
+
+SECTION "bank5B", ROMX, BANK[$5B]
+
+INCLUDE "misc/mobile_5b.asm"
+
+SECTION "bank5C", ROMX, BANK[$5C]
+
+INCLUDE "misc/mobile_5c.asm"
+
 SECTION "bank5D", ROMX, BANK[$5D]
 
 INCLUDE "text/phone/extra3.asm"
@@ -81666,7 +55801,7 @@
 
 SECTION "bank5E", ROMX, BANK[$5E]
 
-Function178000:
+_UpdateBattleHUDs:
 	callba DrawPlayerHUD
 	ld hl, PlayerHPPal
 	call SetHPPal
@@ -81673,7 +55808,7 @@
 	callba DrawEnemyHUD
 	ld hl, EnemyHPPal
 	call SetHPPal
-	callba Function3ee27
+	callba FinishBattleAnim
 	ret
 ; 17801f (5e:401f)
 
@@ -81748,7 +55883,7 @@
 Function1dc1b0: ; 1dc1b0
 	hlcoord 0, 0
 	ld de, wca90
-	ld bc, $0154
+	ld bc, 17 * SCREEN_WIDTH
 	call CopyBytes
 	ld hl, wcab5
 	ld a, $62
@@ -81799,8 +55934,8 @@
 
 Function1dc213: ; 1dc213
 	ld hl, wca90
-	ld bc, $00a0
-	ld a, $7f
+	ld bc, $a0
+	ld a, " "
 	call ByteFill
 	ld hl, wca90
 	ld a, $36
@@ -81880,7 +56015,7 @@
 ; 1dc381
 
 Function1dc381: ; 1dc381
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	xor a
@@ -81906,14 +56041,14 @@
 	ld [MonType], a
 	callba CopyPkmnToTempMon
 	hlcoord 0, 7
-	ld b, $9
-	ld c, $12
+	ld b, 9
+	ld c, 18
 	call TextBox
 	hlcoord 8, 2
 	ld a, [TempMonLevel]
 	call Function383d
 	hlcoord 12, 2
-	ld [hl], $71
+	ld [hl], "◀" ; Filled left triangle
 	inc hl
 	ld de, TempMonMaxHP
 	lb bc, 2, 3
@@ -81926,14 +56061,14 @@
 	hlcoord 8, 4
 	call PlaceString
 	hlcoord 9, 6
-	ld [hl], $f3
+	ld [hl], "/"
 	call GetPokemonName
 	hlcoord 10, 6
 	call PlaceString
 	hlcoord 8, 0
-	ld [hl], $74
+	ld [hl], "№"
 	inc hl
-	ld [hl], $e8
+	ld [hl], "."
 	inc hl
 	ld de, wd265
 	lb bc, PRINTNUM_LEADINGZEROS | 1, 3
@@ -81971,7 +56106,7 @@
 
 .asm_1dc469
 	hlcoord 0, 0
-	call Function378b
+	call _PrepMonFrontpic
 	call WaitBGMap
 	ld b, $3
 	call GetSGBLayout
@@ -81980,7 +56115,7 @@
 ; 1dc47b
 
 Function1dc47b: ; 1dc47b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call ClearSprites
 	xor a
@@ -82038,7 +56173,7 @@
 ; 1dc50e
 
 Function1dc50e: ; 1dc50e
-	ld bc, $000b
+	ld bc, NAME_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld e, l
@@ -82064,13 +56199,13 @@
 
 Function1dc52c: ; 1dc52c
 	callba GetGender
-	ld a, $7f
-	jr c, .asm_1dc53c
-	ld a, $ef
-	jr nz, .asm_1dc53c
-	ld a, $f5
+	ld a, " "
+	jr c, .got_gender
+	ld a, "♂"
+	jr nz, .got_gender
+	ld a, "♀"
 
-.asm_1dc53c
+.got_gender
 	hlcoord 17, 2
 	ld [hl], a
 	ld bc, TempMonDVs
@@ -82077,7 +56212,7 @@
 	callba CheckShininess
 	ret nc
 	hlcoord 18, 2
-	ld [hl], $3f
+	ld [hl], "<SHINY>"
 	ret
 ; 1dc550
 
@@ -82088,7 +56223,7 @@
 	db "MOVE@"
 
 String1dc559: ; 1dc559
-	db $73, "№.@"
+	db "<ID>№.@"
 
 String1dc55d: ; 1dc55d
 	db   "ATTACK"
@@ -82134,20 +56269,22 @@
 	ret
 ; 1dd6bb
 
-Function1dd6bb: ; 1dd6bb (77:56bb)
+PrintHoursMins ; 1dd6bb (77:56bb)
+; Hours in b, minutes in c
 	ld a, b
 	cp 12
 	push af
-	jr c, .asm_1dd6c7
-	jr z, .asm_1dd6cc
-	sub $c
-	jr .asm_1dd6cc
-.asm_1dd6c7
+	jr c, .AM
+	jr z, .PM
+	sub 12
+	jr .PM
+.AM
 	or a
-	jr nz, .asm_1dd6cc
-	ld a, $c
-.asm_1dd6cc
+	jr nz, .PM
+	ld a, 12
+.PM
 	ld b, a
+; Crazy stuff happening with the stack
 	push bc
 	ld hl, [sp+$1]
 	push de
@@ -82154,10 +56291,10 @@
 	push hl
 	pop de
 	pop hl
-	ld [hl], $7f
+	ld [hl], " "
 	lb bc, 1, 2
 	call PrintNum
-	ld [hl], $9c
+	ld [hl], ":"
 	inc hl
 	ld d, h
 	ld e, l
@@ -82171,9 +56308,9 @@
 	pop bc
 	ld de, String_AM
 	pop af
-	jr c, .asm_1dd6f7
+	jr c, .place_am_pm
 	ld de, String_PM
-.asm_1dd6f7
+.place_am_pm
 	inc hl
 	call PlaceString
 	ret
@@ -82198,7 +56335,7 @@
 	ld hl, LZ_1ddf33
 	ld de, VTiles2 tile $31
 	lb bc, BANK(LZ_1ddf33), $3a
-	call Functione73
+	call DecompressRequest2bpp
 	ret
 ; 1ddf33 (77:5f33)
 
@@ -82220,7 +56357,7 @@
 Function1de171: ; 1de171 (77:6171)
 	ld a, $32
 	hlcoord 0, 17
-	lb bc, 0, 12
+	ld bc, 12
 	call ByteFill
 	hlcoord 0, 1
 	lb bc, 15, 11
@@ -82440,7 +56577,7 @@
 
 Function1de5c8: ; 1de5c8
 	ld c, $0
-	ld hl, $0029
+	ld hl, $29
 	add hl, de
 	ld a, [hli]
 	cp $84
@@ -82571,9 +56708,7 @@
 
 SECTION "bank7C", ROMX, BANK[$7C]
 
-BattleTowerTrainerData:: ; What exactly it is, I don't know
-; Size is 70 (Nr of Trainers in BattleTower) * 0x24 (Nr of Bytes that are copied)
-INCBIN "unknown/1f0000.bin"
+INCLUDE "data/battle_tower_2.asm"
 
 
 SECTION "bank7D", ROMX, BANK[$7D]
--- a/maps/AzaleaGym.asm
+++ b/maps/AzaleaGym.asm
@@ -34,7 +34,7 @@
 	setevent EVENT_BEAT_BUG_CATCHER_JOSH
 	writetext BugsyText_HiveBadgeSpeech
 	keeptextopen
-	verbosegiveitem TM_FURY_CUTTER, 1
+	verbosegiveitem TM_FURY_CUTTER
 	iffalse .NoRoomForFuryCutter
 	setevent EVENT_GOT_TM49_FURY_CUTTER
 	writetext BugsyText_FuryCutterSpeech
@@ -371,8 +371,8 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_BUGSY, 7, 5, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BugsyScript, -1
-	person_event SPRITE_BUG_CATCHER, 3, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBug_catcherbenny, -1
+	person_event SPRITE_BUGSY, 7, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BugsyScript, -1
+	person_event SPRITE_BUG_CATCHER, 3, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBug_catcherbenny, -1
 	person_event SPRITE_BUG_CATCHER, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBug_catcherAl, -1
 	person_event SPRITE_BUG_CATCHER, 2, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBug_catcherJosh, -1
 	person_event SPRITE_TWIN, 10, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsAmyandmay1, -1
--- a/maps/AzaleaPokeCenter1F.asm
+++ b/maps/AzaleaPokeCenter1F.asm
@@ -93,4 +93,4 @@
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x18db28, -1
 	person_event SPRITE_GENTLEMAN, 6, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, 0, 0, GentlemanScript_0x18db2b, -1
 	person_event SPRITE_FISHING_GURU, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, FishingGuruScript_0x18db2e, -1
-	person_event SPRITE_POKEFAN_F, 4, 1, SPRITEMOVEDATA_02, 2, 1, -1, -1, 0, 0, 0, PokefanFScript_0x18db31, -1
+	person_event SPRITE_POKEFAN_F, 4, 1, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, 0, 0, PokefanFScript_0x18db31, -1
--- a/maps/AzaleaTown.asm
+++ b/maps/AzaleaTown.asm
@@ -155,7 +155,7 @@
 	keeptextopen
 	writetext UnknownText_0x198628
 	closetext
-	verbosegiveitem GS_BALL, 1
+	verbosegiveitem GS_BALL
 	spriteface $d, LEFT
 	setflag ENGINE_HAVE_EXAMINED_GS_BALL
 	clearevent EVENT_ILEX_FOREST_LASS
@@ -482,14 +482,14 @@
 .PersonEvents:
 	db 12
 	person_event SPRITE_AZALEA_ROCKET, 9, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, AzaleaRocketScript_0x1980ab, EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
-	person_event SPRITE_GRAMPS, 9, 21, SPRITEMOVEDATA_02, 2, 1, -1, -1, 0, 0, 0, GrampsScript_0x1980b1, -1
+	person_event SPRITE_GRAMPS, 9, 21, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, 0, 0, GrampsScript_0x1980b1, -1
 	person_event SPRITE_TEACHER, 13, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, TeacherScript_0x1980c5, -1
 	person_event SPRITE_YOUNGSTER, 9, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1980c8, -1
-	person_event SPRITE_SLOWPOKE, 17, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 9, 18, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 9, 29, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 15, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
-	person_event SPRITE_FRUIT_TREE, 2, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, WhiteApricornTree, -1
+	person_event SPRITE_SLOWPOKE, 17, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 9, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 9, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 15, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, SlowpokeScript_0x1980cb, EVENT_AZALEA_TOWN_SLOWPOKES
+	person_event SPRITE_FRUIT_TREE, 2, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, WhiteApricornTree, -1
 	person_event SPRITE_AZALEA_ROCKET, 10, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_AZALEA_TOWN
 	person_event SPRITE_AZALEA_ROCKET, 16, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, AzaleaRocketScript_0x1980ae, EVENT_SLOWPOKE_WELL_ROCKETS
 	person_event SPRITE_KURT_OUTSIDE, 5, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, KurtOutsideScript_0x19810c, EVENT_AZALEA_TOWN_KURT
--- a/maps/BattleTower1F.asm
+++ b/maps/BattleTower1F.asm
@@ -3,22 +3,22 @@
 	db 2
 
 	; triggers
-	dw UnknownScript_0x9e39d, 0
-	dw UnknownScript_0x9e3d3, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x9e39d:
-	writebyte $9
-	special Function170687
-	iffalse UnknownScript_0x9e3d1
-	writebyte $2
-	special Function170687
-	if_equal $0, UnknownScript_0x9e3d1
-	if_equal $2, UnknownScript_0x9e3c4
-	if_equal $3, UnknownScript_0x9e3d1
-	if_equal $4, UnknownScript_0x9e3d1
+.Trigger0:
+	writebyte BATTLE_TOWER_ACTION_09
+	special BattleTowerAction
+	iffalse .SkipEverything
+	writebyte BATTLE_TOWER_ACTION_02
+	special BattleTowerAction
+	if_equal $0, .SkipEverything
+	if_equal $2, .priorityjump1
+	if_equal $3, .SkipEverything
+	if_equal $4, .SkipEverything
 	loadfont
 	writetext UnknownText_0x9f037
 	closetext
@@ -26,17 +26,15 @@
 	priorityjump UnknownScript_0x9e44e
 	end
 
-UnknownScript_0x9e3c4:
+.priorityjump1:
 	priorityjump UnknownScript_0x9e555
-
-UnknownScript_0x9e3c7:
-	writebyte $4
-	special Function170687
-	writebyte $6
-	special Function170687
-UnknownScript_0x9e3d1:
+	writebyte BATTLE_TOWER_ACTION_04
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_06
+	special BattleTowerAction
+.SkipEverything:
 	dotrigger $1
-UnknownScript_0x9e3d3:
+.Trigger1:
 	end
 
 MapBattleTower1FSignpost0Script:
@@ -51,14 +49,14 @@
 	end
 
 ReceptionistScript_0x9e3e2:
-	writebyte $2
-	special Function170687
-	if_equal $3, BattleTowerBattleRoomScript_0x9f4e4
+	writebyte BATTLE_TOWER_ACTION_02
+	special BattleTowerAction
+	if_equal $3, BattleTowerBattleRoomScript_0x9f4e4 ; maps/BattleTowerBattleRoom.asm
 	loadfont
 	writetext Text_BattleTowerWelcomesYou
 	keeptextopen
-	writebyte $0
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_00
+	special BattleTowerAction
 	if_not_equal $0, Script_Menu_ChallengeExplanationCancel
 	jump Script_BattleTowerIntroductionYesNo
 
@@ -71,8 +69,8 @@
 	jump UnknownScript_0x9e4b0
 
 Script_ChoseChallenge: ; 0x9e40f
-	writebyte $1a
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_1A ; ResetBattleTowerTrainerSRAM
+	special BattleTowerAction
 	special SpecialCheckForBattleTowerRules
 	if_not_equal $0, Script_CloseText
 	writetext Text_SaveBeforeEnteringBattleRoom
@@ -82,24 +80,24 @@
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
 	dotrigger $1
-	writebyte $1
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_01
+	special BattleTowerAction
 	special Function1700b0
 	if_equal $a, Script_Menu_ChallengeExplanationCancel
 	if_not_equal $0, UnknownScript_0x9e550
-	writebyte $11
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_11
+	special BattleTowerAction
 	writetext Text_RightThisWayToYourBattleRoom
 	closetext
 	loadmovesprites
-	writebyte $1e
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_1E
+	special BattleTowerAction
 	jump UnknownScript_0x9e454
 
 UnknownScript_0x9e44e:
 	loadmovesprites
-	writebyte $8
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_08
+	special BattleTowerAction
 UnknownScript_0x9e454:
 	musicfadeout MUSIC_NONE, $8
 	domaptrigger BATTLE_TOWER_BATTLE_ROOM, $0
@@ -107,8 +105,8 @@
 	domaptrigger BATTLE_TOWER_HALLWAY, $0
 	follow $2, PLAYER
 	applymovement $2, MovementData_0x9e571
-	writebyte $a
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_0A
+	special BattleTowerAction
 	warpsound
 	disappear $2
 	stopfollow
@@ -117,16 +115,16 @@
 	end
 
 Script_GivePlayerHisPrize: ; 0x9e47a
-	writebyte $1c
-	special Function170687
-	writebyte $1b
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_1C
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_1B
+	special BattleTowerAction
 	if_equal $12, Script_YourPackIsStuffedFull
 	itemtotext $0, $1
-	giveitem $ff, $5
+	giveitem ITEM_FROM_MEM, 5
 	writetext Text_PlayerGotFive
-	writebyte $1d
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_1D
+	special BattleTowerAction
 	loadmovesprites
 	end
 
@@ -143,8 +141,8 @@
 Script_BattleTowerExplanation: ; 0x9e4a5
 	writetext Text_BattleTowerIntroduction_2
 UnknownScript_0x9e4a8:
-	writebyte $1
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_01
+	special BattleTowerAction
 	jump Script_Menu_ChallengeExplanationCancel
 
 UnknownScript_0x9e4b0:
@@ -170,8 +168,8 @@
 	iffalse Script_Menu_ChallengeExplanationCancel
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
-	writebyte $1
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_01
+	special BattleTowerAction
 	special Function1700ba
 	if_equal $a, Script_Menu_ChallengeExplanationCancel
 	if_not_equal $0, UnknownScript_0x9e550
@@ -184,16 +182,16 @@
 	end
 
 UnknownScript_0x9e4ea:
-	writebyte $18
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_18
+	special BattleTowerAction
 	if_not_equal $0, Script_APkmnLevelExceeds
-	writebyte $19
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_19
+	special BattleTowerAction
 	if_not_equal $0, Script_MayNotEnterABattleRoomUnderL70
 	special SpecialCheckForBattleTowerRules
 	if_not_equal $0, Script_CloseText
-	writebyte $5
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_05
+	special BattleTowerAction
 	if_equal $0, UnknownScript_0x9e512
 	writetext UnknownText_0x9ecb0
 	jump UnknownScript_0x9e515
@@ -210,10 +208,10 @@
 	special Special_TryQuickSave
 	iffalse Script_Menu_ChallengeExplanationCancel
 	dotrigger $1
-	writebyte $6
-	special Function170687
-	writebyte $12
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_06
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_12
+	special BattleTowerAction
 	writetext Text_RightThisWayToYourBattleRoom
 	closetext
 	jump UnknownScript_0x9e44e
@@ -813,5 +811,5 @@
 	person_event SPRITE_RECEPTIONIST, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ReceptionistScript_0x9e3e2, -1
 	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, YoungsterScript_0x9e55d, -1
 	person_event SPRITE_COOLTRAINER_F, 9, 4, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerFScript_0x9e568, -1
-	person_event SPRITE_BUG_CATCHER, 3, 1, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, BugCatcherScript_0x9e56b, -1
+	person_event SPRITE_BUG_CATCHER, 3, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, BugCatcherScript_0x9e56b, -1
 	person_event SPRITE_GRANNY, 3, 14, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, 0, 0, GrannyScript_0x9e56e, -1
--- a/maps/BattleTowerBattleRoom.asm
+++ b/maps/BattleTowerBattleRoom.asm
@@ -27,13 +27,13 @@
 	waitbutton
 	applymovement $2, MovementData_0x9e592
 	loadfont
-	storetext 1
+	battletowertext 1
 	keeptextopen
 	loadmovesprites
-	special Function170215 ; calls predef startbattle
-	special FadeBlackBGMap
+	special BattleTowerBattle ; calls predef startbattle
+	special FadeOutPalettes
 	reloadmap
-	if_not_equal $0, UnknownScript_0x9f4c2
+	if_not_equal $0, Script_FailedBattleTowerChallenge
 	copybytetovar wNrOfBeatenBattleTowerTrainers ; wcf64
 	if_equal BATTLETOWER_NROFTRAINERS, Script_BeatenAllTrainers
 	applymovement $2, MovementData_0x9e597
@@ -46,10 +46,10 @@
 	closetext
 	loadmovesprites
 	playmusic MUSIC_HEAL
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special LoadMapPalettes
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext Text_NextUpOpponentNo
@@ -65,36 +65,36 @@
 	writetext Text_SaveAndEndTheSession
 	yesorno
 	iffalse Script_DontSaveAndEndTheSession
-	writebyte $7
-	special Function170687
-	writebyte $1f
-	special Function170687
-	writebyte $3
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_07
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_1F
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_03
+	special BattleTowerAction
 	playsound SFX_SAVE
 	waitbutton
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special Reset
 Script_DontSaveAndEndTheSession: ; 0x9f4a3
 	writetext Text_CancelYourBattleRoomChallenge
 	yesorno
 	iffalse Script_ContinueAndBattleNextOpponent
-	writebyte $4
-	special Function170687
-	writebyte $6
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_04
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_06
+	special BattleTowerAction
 	loadmovesprites
-	special FadeBlackBGMap
-	warpfacing $1, BATTLE_TOWER_1F, $7, $7
+	special FadeOutPalettes
+	warpfacing UP, BATTLE_TOWER_1F, $7, $7
 	loadfont
 	jump UnknownScript_0x9e4b0
 
-UnknownScript_0x9f4c2:
+Script_FailedBattleTowerChallenge:
 	pause 60
 	special Special_BattleTowerFade
-	warpfacing $1, BATTLE_TOWER_1F, $7, $7
-	writebyte $4
-	special Function170687
+	warpfacing UP, BATTLE_TOWER_1F, $7, $7
+	writebyte BATTLE_TOWER_ACTION_04
+	special BattleTowerAction
 	loadfont
 	writetext Text_ThanksForVisiting
 	closetext
@@ -104,7 +104,7 @@
 Script_BeatenAllTrainers: ; 0x9f4d9
 	pause 60
 	special Special_BattleTowerFade
-	warpfacing $1, BATTLE_TOWER_1F, $7, $7
+	warpfacing UP, BATTLE_TOWER_1F, $7, $7
 BattleTowerBattleRoomScript_0x9f4e4:
 	loadfont
 	writetext Text_CongratulationsYouveBeatenAllTheTrainers
@@ -111,8 +111,8 @@
 	jump Script_GivePlayerHisPrize
 
 UnknownScript_0x9f4eb:
-	writebyte $4
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_04
+	special BattleTowerAction
 	loadfont
 	writetext Text_TooMuchTimeElapsedNoRegister
 	closetext
@@ -120,10 +120,10 @@
 	end
 
 UnknownScript_0x9f4f7:
-	writebyte $4
-	special Function170687
-	writebyte $6
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_04
+	special BattleTowerAction
+	writebyte BATTLE_TOWER_ACTION_06
+	special BattleTowerAction
 	loadfont
 	writetext Text_ThanksForVisiting
 	writetext Text_WeHopeToServeYouAgain
--- a/maps/BattleTowerElevator.asm
+++ b/maps/BattleTowerElevator.asm
@@ -20,8 +20,8 @@
 	follow $2, PLAYER
 	applymovement $2, MovementData_0x9f58f
 	applymovement PLAYER, MovementData_0x9f592
-	writebyte $a
-	special Function170687
+	writebyte BATTLE_TOWER_ACTION_0A
+	special BattleTowerAction
 	playsound SFX_ELEVATOR
 	earthquake 60
 	waitbutton
--- a/maps/BattleTowerHallway.asm
+++ b/maps/BattleTowerHallway.asm
@@ -3,29 +3,29 @@
 	db 2
 
 	; triggers
-	dw UnknownScript_0x9f5bb, 0
-	dw UnknownScript_0x9f5c0, 0
+	dw .Trigger0, 0
+	dw .Trigger1, 0
 
 .MapCallbacks:
 	db 0
 
-UnknownScript_0x9f5bb:
-	priorityjump UnknownScript_0x9f5c1
+.Trigger0:
+	priorityjump .ChooseBattleRoom
 	dotrigger $1
-UnknownScript_0x9f5c0:
+.Trigger1:
 	end
 
-UnknownScript_0x9f5c1:
+.ChooseBattleRoom:
 	follow $2, PLAYER
-	callasm Function_0x9f5cb
-	jump Script_WalkToChosenBattleRoom
+	callasm .asm_load_battle_room
+	jump .WalkToChosenBattleRoom
 
 
-Function_0x9f5cb:
+.asm_load_battle_room:
 	ld a, [rSVBK]
 	push af
 
-	ld a, 3
+	ld a, BANK(wBTChoiceOfLvlGroup)
 	ld [rSVBK], a
 	ld a, [wBTChoiceOfLvlGroup]
 	ld [ScriptVar], a
@@ -38,35 +38,35 @@
 ; enter different rooms for different levels to battle against
 ; at least it should look like that
 ; because all warps lead to the same room
-Script_WalkToChosenBattleRoom: ; 0x9f5dc
-	if_equal 3, Script_WalkToBattleRoomL30L40
-	if_equal 4, Script_WalkToBattleRoomL30L40
-	if_equal 5, Script_WalkToBattleRoomL50L60
-	if_equal 6, Script_WalkToBattleRoomL50L60
-	if_equal 7, Script_WalkToBattleRoomL70L80
-	if_equal 8, Script_WalkToBattleRoomL70L80
-	if_equal 9, Script_WalkToBattleRoomL90L100
-	if_equal 10, Script_WalkToBattleRoomL90L100
+.WalkToChosenBattleRoom: ; 0x9f5dc
+	if_equal 3, .L30L40
+	if_equal 4, .L30L40
+	if_equal 5, .L50L60
+	if_equal 6, .L50L60
+	if_equal 7, .L70L80
+	if_equal 8, .L70L80
+	if_equal 9, .L90L100
+	if_equal 10, .L90L100
 	applymovement $2, MovementData_0x9e57a
-	jump Script_PlayerEntersBattleRoom
+	jump .EnterBattleRoom
 
-Script_WalkToBattleRoomL30L40: ; 0x9f603
+.L30L40: ; 0x9f603
 	applymovement $2, MovementData_0x9e57c
-	jump Script_PlayerEntersBattleRoom
+	jump .EnterBattleRoom
 
-Script_WalkToBattleRoomL50L60: ; 0x9f60a
+.L50L60: ; 0x9f60a
 	applymovement $2, MovementData_0x9e586
-	jump Script_PlayerEntersBattleRoom
+	jump .EnterBattleRoom
 
-Script_WalkToBattleRoomL70L80: ; 0x9f611
+.L70L80: ; 0x9f611
 	applymovement $2, MovementData_0x9e584
-	jump Script_PlayerEntersBattleRoom
+	jump .EnterBattleRoom
 
-Script_WalkToBattleRoomL90L100: ; 0x9f618
+.L90L100: ; 0x9f618
 	applymovement $2, MovementData_0x9e582
-	jump Script_PlayerEntersBattleRoom
+	jump .EnterBattleRoom
 
-Script_PlayerEntersBattleRoom: ; 0x9f61f
+.EnterBattleRoom: ; 0x9f61f
 	faceperson PLAYER, $2
 	loadfont
 	writetext Text_PleaseStepThisWay
--- a/maps/BattleTowerOutside.asm
+++ b/maps/BattleTowerOutside.asm
@@ -143,6 +143,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_STANDING_YOUNGSTER, 12, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, StandingYoungsterScript_0x9f85f, -1
-	person_event SPRITE_BUENA, 11, 13, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BuenaScript_0x9f862, -1
+	person_event SPRITE_BUENA, 11, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BuenaScript_0x9f862, -1
 	person_event SPRITE_SAILOR, 18, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, SailorScript_0x9f865, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
-	person_event SPRITE_LASS, 24, 12, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, ObjectEvent, -1
+	person_event SPRITE_LASS, 24, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, ObjectEvent, -1
--- a/maps/BillsHouse.asm
+++ b/maps/BillsHouse.asm
@@ -117,7 +117,7 @@
 	checkevent EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
 	iftrue UnknownScript_0x189592
 	scall UnknownScript_0x1896b5
-	verbosegiveitem EVERSTONE, 1
+	verbosegiveitem EVERSTONE
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_EVERSTONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
@@ -128,7 +128,7 @@
 	checkevent EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
 	iftrue UnknownScript_0x1895b3
 	scall UnknownScript_0x1896b5
-	verbosegiveitem LEAF_STONE, 1
+	verbosegiveitem LEAF_STONE
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_LEAF_STONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
@@ -139,7 +139,7 @@
 	checkevent EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
 	iftrue UnknownScript_0x1895d4
 	scall UnknownScript_0x1896b5
-	verbosegiveitem WATER_STONE, 1
+	verbosegiveitem WATER_STONE
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_WATER_STONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
@@ -150,7 +150,7 @@
 	checkevent EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
 	iftrue UnknownScript_0x18961a
 	scall UnknownScript_0x1896b5
-	verbosegiveitem FIRE_STONE, 1
+	verbosegiveitem FIRE_STONE
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_FIRE_STONE_FROM_BILLS_GRANDPA
 	setevent EVENT_GAVE_KURT_APRICORNS
@@ -159,7 +159,7 @@
 
 UnknownScript_0x189697:
 	scall UnknownScript_0x1896b5
-	verbosegiveitem THUNDERSTONE, 1
+	verbosegiveitem THUNDERSTONE
 	iffalse UnknownScript_0x1896cc
 	setevent EVENT_GOT_THUNDERSTONE_FROM_BILLS_GRANDPA
 	loadmovesprites
--- a/maps/BlackthornCity.asm
+++ b/maps/BlackthornCity.asm
@@ -93,7 +93,7 @@
 .MetSantos
 	writetext SantosGivesGiftText
 	keeptextopen
-	verbosegiveitem SPELL_TAG, 1
+	verbosegiveitem SPELL_TAG
 	iffalse SantosDoneScript
 	setevent EVENT_GOT_SPELL_TAG_FROM_SANTOS
 	writetext SantosGaveGiftText
--- a/maps/BlackthornDodrioTradeHouse.asm
+++ b/maps/BlackthornDodrioTradeHouse.asm
@@ -35,4 +35,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_LASS, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, Emy, -1
+	person_event SPRITE_LASS, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, Emy, -1
--- a/maps/BlackthornDragonSpeechHouse.asm
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -58,5 +58,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GRANNY, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, GrannyScript_0x195949, -1
-	person_event SPRITE_EKANS, 5, 5, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, EkansScript_0x19594c, -1
+	person_event SPRITE_GRANNY, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, GrannyScript_0x195949, -1
+	person_event SPRITE_EKANS, 5, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, EkansScript_0x19594c, -1
--- a/maps/BlackthornGym1F.asm
+++ b/maps/BlackthornGym1F.asm
@@ -62,7 +62,7 @@
 	iftrue UnknownScript_0x194e94
 	writetext UnknownText_0x195196
 	keeptextopen
-	giveitem TM_DRAGONBREATH, $1
+	giveitem TM_DRAGONBREATH
 	iffalse UnknownScript_0x194e8e
 	itemtotext TM_DRAGONBREATH, $0
 	writetext UnknownText_0x1951bf
--- a/maps/BlackthornGym2F.asm
+++ b/maps/BlackthornGym2F.asm
@@ -147,9 +147,9 @@
 	db 8
 	person_event SPRITE_COOLTRAINER_M, 1, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerCooltrainermCody, -1
 	person_event SPRITE_COOLTRAINER_F, 11, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerCooltrainerfFran, -1
-	person_event SPRITE_BOULDER, 2, 8, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
-	person_event SPRITE_BOULDER, 3, 2, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
-	person_event SPRITE_BOULDER, 16, 6, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
-	person_event SPRITE_BOULDER, 3, 3, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, -1
-	person_event SPRITE_BOULDER, 1, 6, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, -1
-	person_event SPRITE_BOULDER, 14, 8, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 2, 8, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
+	person_event SPRITE_BOULDER, 3, 2, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
+	person_event SPRITE_BOULDER, 16, 6, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
+	person_event SPRITE_BOULDER, 3, 3, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 1, 6, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, -1
+	person_event SPRITE_BOULDER, 14, 8, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BlackthornGymBoulder, -1
--- a/maps/BlackthornPokeCenter1F.asm
+++ b/maps/BlackthornPokeCenter1F.asm
@@ -63,5 +63,5 @@
 	db 4
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x195b79, -1
 	person_event SPRITE_GENTLEMAN, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x195b7c, -1
-	person_event SPRITE_TWIN, 4, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TwinScript_0x195b7f, -1
+	person_event SPRITE_TWIN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TwinScript_0x195b7f, -1
 	person_event SPRITE_COOLTRAINER_M, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x195b82, -1
--- a/maps/BluesHouse.asm
+++ b/maps/BluesHouse.asm
@@ -30,10 +30,10 @@
 	writetext UnknownText_0x19b266
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x19b296
@@ -158,4 +158,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_DAISY, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, DaisyScript_0x19b0d0, -1
+	person_event SPRITE_DAISY, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, DaisyScript_0x19b0d0, -1
--- a/maps/BurnedTower1F.asm
+++ b/maps/BurnedTower1F.asm
@@ -309,8 +309,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_ROCK, 4, 15, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, BurnedTower1FRock, -1
-	person_event SPRITE_SUPER_NERD, 12, 12, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x185cbc, EVENT_BURNED_TOWER_1F_EUSINE
+	person_event SPRITE_ROCK, 4, 15, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, BurnedTower1FRock, -1
+	person_event SPRITE_SUPER_NERD, 12, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x185cbc, EVENT_BURNED_TOWER_1F_EUSINE
 	person_event SPRITE_SILVER, 9, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 2, 3, ObjectEvent, EVENT_RIVAL_BURNED_TOWER
-	person_event SPRITE_MORTY, 14, 14, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MortyScript_0x185cbf, EVENT_BURNED_TOWER_MORTY
-	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185ccb, EVENT_BURNED_TOWER_1F_HP_UP
+	person_event SPRITE_MORTY, 14, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MortyScript_0x185cbf, EVENT_BURNED_TOWER_MORTY
+	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185ccb, EVENT_BURNED_TOWER_1F_HP_UP
--- a/maps/BurnedTowerB1F.asm
+++ b/maps/BurnedTowerB1F.asm
@@ -251,12 +251,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_BOULDER, 8, 17, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, BurnedTowerB1FBoulder, -1
-	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
-	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
-	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_BOULDER, 8, 17, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, BurnedTowerB1FBoulder, -1
+	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
+	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_1
 	person_event SPRITE_RAIKOU, 3, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
 	person_event SPRITE_ENTEI, 3, 12, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
 	person_event SPRITE_SUICUNE, 4, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_SILVER, 0, 0, ObjectEvent, EVENT_BURNED_TOWER_B1F_BEASTS_2
-	person_event SPRITE_POKE_BALL, 4, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x186231, EVENT_BURNED_TOWER_B1F_TM_ENDURE
+	person_event SPRITE_POKE_BALL, 4, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x186231, EVENT_BURNED_TOWER_B1F_TM_ENDURE
 	person_event SPRITE_SUPER_NERD, 12, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x186212, EVENT_EUSINE_IN_BURNED_TOWER
--- a/maps/CeladonCafe.asm
+++ b/maps/CeladonCafe.asm
@@ -86,7 +86,7 @@
 CeladonCafeTrashcan:
 	checkevent EVENT_FOUND_LEFTOVERS_IN_CELADON_CAFE
 	iftrue .TrashEmpty
-	giveitem LEFTOVERS, $1
+	giveitem LEFTOVERS
 	iffalse .PackFull
 	loadfont
 	itemtotext LEFTOVERS, $0
--- a/maps/CeladonCity.asm
+++ b/maps/CeladonCity.asm
@@ -258,11 +258,11 @@
 .PersonEvents:
 	db 9
 	person_event SPRITE_FISHER, 11, 26, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x1a9f43, -1
-	person_event SPRITE_POLIWAG, 11, 27, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CeladonCityPoliwrath, -1
+	person_event SPRITE_POLIWAG, 11, 27, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CeladonCityPoliwrath, -1
 	person_event SPRITE_TEACHER, 24, 20, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, TeacherScript_0x1a9f50, -1
 	person_event SPRITE_GRAMPS, 16, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrampsScript_0x1a9f53, -1
 	person_event SPRITE_GRAMPS, 31, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GrampsScript_0x1a9f56, -1
 	person_event SPRITE_YOUNGSTER, 13, 18, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, YoungsterScript_0x1a9f59, -1
 	person_event SPRITE_YOUNGSTER, 33, 24, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1a9f5c, -1
-	person_event SPRITE_TEACHER, 14, 6, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x1a9f5f, -1
+	person_event SPRITE_TEACHER, 14, 6, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x1a9f5f, -1
 	person_event SPRITE_LASS, 22, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, LassScript_0x1a9f62, -1
--- a/maps/CeladonDeptStore1F.asm
+++ b/maps/CeladonDeptStore1F.asm
@@ -90,5 +90,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_RECEPTIONIST, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ReceptionistScript_0x709e0, -1
-	person_event SPRITE_GENTLEMAN, 4, 11, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, GentlemanScript_0x709e3, -1
+	person_event SPRITE_GENTLEMAN, 4, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, GentlemanScript_0x709e3, -1
 	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x709e6, -1
--- a/maps/CeladonDeptStore3F.asm
+++ b/maps/CeladonDeptStore3F.asm
@@ -111,4 +111,4 @@
 	person_event SPRITE_YOUNGSTER, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x70d31, -1
 	person_event SPRITE_GAMEBOY_KID, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GameboyKidScript_0x70d34, -1
 	person_event SPRITE_GAMEBOY_KID, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GameboyKidScript_0x70d3f, -1
-	person_event SPRITE_SUPER_NERD, 4, 13, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x70d4a, -1
+	person_event SPRITE_SUPER_NERD, 4, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x70d4a, -1
--- a/maps/CeladonDeptStore5F.asm
+++ b/maps/CeladonDeptStore5F.asm
@@ -86,6 +86,6 @@
 	db 5
 	person_event SPRITE_CLERK, 5, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ClerkScript_0x71004, -1
 	person_event SPRITE_CLERK, 5, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ClerkScript_0x7100c, -1
-	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GentlemanScript_0x71014, -1
-	person_event SPRITE_SAILOR, 4, 3, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SailorScript_0x71017, -1
+	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GentlemanScript_0x71014, -1
+	person_event SPRITE_SAILOR, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SailorScript_0x71017, -1
 	person_event SPRITE_TEACHER, 7, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x7101a, -1
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -36,7 +36,7 @@
 .FreshWater
 	checkmoney $0, 200
 	if_equal $2, .NotEnoughMoney
-	giveitem FRESH_WATER, $1
+	giveitem FRESH_WATER
 	iffalse .NotEnoughSpace
 	takemoney $0, 200
 	itemtotext FRESH_WATER, $0
@@ -45,7 +45,7 @@
 .SodaPop
 	checkmoney $0, 300
 	if_equal $2, .NotEnoughMoney
-	giveitem SODA_POP, $1
+	giveitem SODA_POP
 	iffalse .NotEnoughSpace
 	takemoney $0, 300
 	itemtotext SODA_POP, $0
@@ -54,7 +54,7 @@
 .Lemonade
 	checkmoney $0, 350
 	if_equal $2, .NotEnoughMoney
-	giveitem LEMONADE, $1
+	giveitem LEMONADE
 	iffalse .NotEnoughSpace
 	takemoney $0, 350
 	itemtotext LEMONADE, $0
@@ -169,4 +169,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_SUPER_NERD, 2, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, SuperNerdScript_0x7117a, -1
-	person_event SPRITE_YOUNGSTER, 5, 12, SPRITEMOVEDATA_02, 1, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x7117d, -1
+	person_event SPRITE_YOUNGSTER, 5, 12, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x7117d, -1
--- a/maps/CeladonGameCornerPrizeRoom.asm
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -35,7 +35,7 @@
 	itemtotext TM_DOUBLE_TEAM, $0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
-	giveitem TM_DOUBLE_TEAM, 1
+	giveitem TM_DOUBLE_TEAM
 	iffalse CeladonPrizeRoom_notenoughroom
 	takecoins 1500
 	jump CeladonPrizeRoom_purchased
@@ -46,7 +46,7 @@
 	itemtotext TM_PSYCHIC, $0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
-	giveitem TM_PSYCHIC, 1
+	giveitem TM_PSYCHIC
 	iffalse CeladonPrizeRoom_notenoughroom
 	takecoins 3500
 	jump CeladonPrizeRoom_purchased
@@ -57,7 +57,7 @@
 	itemtotext TM_HYPER_BEAM, $0
 	scall CeladonPrizeRoom_askbuy
 	iffalse CeladonPrizeRoom_cancel
-	giveitem TM_HYPER_BEAM, 1
+	giveitem TM_HYPER_BEAM
 	iffalse CeladonPrizeRoom_notenoughroom
 	takecoins 7500
 	jump CeladonPrizeRoom_purchased
--- a/maps/CeladonGym.asm
+++ b/maps/CeladonGym.asm
@@ -32,7 +32,7 @@
 	iftrue UnknownScript_0x72aae
 	writetext UnknownText_0x72cb0
 	keeptextopen
-	verbosegiveitem TM_GIGA_DRAIN, 1
+	verbosegiveitem TM_GIGA_DRAIN
 	iffalse UnknownScript_0x72aae
 	setevent EVENT_GOT_TM19_GIGA_DRAIN
 UnknownScript_0x72aae:
--- a/maps/CeladonMansion1F.asm
+++ b/maps/CeladonMansion1F.asm
@@ -91,7 +91,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_GRANNY, 5, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, CeladonMansionManager, -1
-	person_event SPRITE_GROWLITHE, 6, 2, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, CeladonMansion1FMeowth, -1
-	person_event SPRITE_CLEFAIRY, 4, 3, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, CeladonMansion1FClefairy, -1
-	person_event SPRITE_GROWLITHE, 4, 4, SPRITEMOVEDATA_16, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CeladonMansion1FNidoranF, -1
+	person_event SPRITE_GRANNY, 5, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, CeladonMansionManager, -1
+	person_event SPRITE_GROWLITHE, 6, 2, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, CeladonMansion1FMeowth, -1
+	person_event SPRITE_CLEFAIRY, 4, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, CeladonMansion1FClefairy, -1
+	person_event SPRITE_GROWLITHE, 4, 4, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CeladonMansion1FNidoranF, -1
--- a/maps/CeladonMansion3F.asm
+++ b/maps/CeladonMansion3F.asm
@@ -206,7 +206,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_COOLTRAINER_M, 6, 3, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x71670, -1
+	person_event SPRITE_COOLTRAINER_M, 6, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x71670, -1
 	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GymGuyScript_0x71696, -1
 	person_event SPRITE_SUPER_NERD, 7, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x716bc, -1
 	person_event SPRITE_FISHER, 4, 0, SPRITEMOVEDATA_STANDING_UP, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, FisherScript_0x716bf, -1
--- a/maps/CeladonMansionRoofHouse.asm
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -22,7 +22,7 @@
 UnknownScript_0x71b14:
 	writetext UnknownText_0x71ba3
 	keeptextopen
-	verbosegiveitem TM_CURSE, 1
+	verbosegiveitem TM_CURSE
 	iffalse UnknownScript_0x71b25
 	setevent EVENT_GOT_TM03_CURSE
 UnknownScript_0x71b21:
--- a/maps/CeruleanCity.asm
+++ b/maps/CeruleanCity.asm
@@ -299,9 +299,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_COOLTRAINER_M, 23, 15, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CooltrainerMScript_0x184009, -1
-	person_event SPRITE_SUPER_NERD, 15, 23, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x18401d, -1
-	person_event SPRITE_SLOWPOKE, 24, 20, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, CeruleanCitySlowbro, -1
+	person_event SPRITE_COOLTRAINER_M, 23, 15, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CooltrainerMScript_0x184009, -1
+	person_event SPRITE_SUPER_NERD, 15, 23, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x18401d, -1
+	person_event SPRITE_SLOWPOKE, 24, 20, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, CeruleanCitySlowbro, -1
 	person_event SPRITE_COOLTRAINER_F, 24, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x18402a, -1
 	person_event SPRITE_FISHER, 26, 30, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, FisherScript_0x18404a, -1
-	person_event SPRITE_YOUNGSTER, 12, 6, SPRITEMOVEDATA_03, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x184064, -1
+	person_event SPRITE_YOUNGSTER, 12, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x184064, -1
--- a/maps/CeruleanGym.asm
+++ b/maps/CeruleanGym.asm
@@ -176,8 +176,8 @@
 	jump_step_up
 	db $38 ; movement
 	remove_fixed_facing
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	step_down
 	step_down
 	step_end
--- a/maps/CeruleanPokeCenter1F.asm
+++ b/maps/CeruleanPokeCenter1F.asm
@@ -77,4 +77,4 @@
 	db 3
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x18820f, -1
 	person_event SPRITE_SUPER_NERD, 4, 8, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, SuperNerdScript_0x188212, -1
-	person_event SPRITE_GYM_GUY, 5, 1, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GymGuyScript_0x18821e, -1
+	person_event SPRITE_GYM_GUY, 5, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GymGuyScript_0x18821e, -1
--- a/maps/CeruleanPoliceStation.asm
+++ b/maps/CeruleanPoliceStation.asm
@@ -57,4 +57,4 @@
 	db 3
 	person_event SPRITE_FISHING_GURU, 1, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FishingGuruScript_0x18804a, -1
 	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, PokefanFScript_0x18804d, -1
-	person_event SPRITE_DIGLETT, 5, 3, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, DiglettScript_0x188050, -1
+	person_event SPRITE_DIGLETT, 5, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, DiglettScript_0x188050, -1
--- a/maps/CeruleanTradeSpeechHouse.asm
+++ b/maps/CeruleanTradeSpeechHouse.asm
@@ -65,6 +65,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_GRANNY, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrannyScript_0x188133, -1
-	person_event SPRITE_GRAMPS, 2, 1, SPRITEMOVEDATA_02, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GrampsScript_0x188136, -1
-	person_event SPRITE_RHYDON, 2, 5, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, RhydonScript_0x188139, -1
-	person_event SPRITE_ZUBAT, 6, 5, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, ZubatScript_0x188143, -1
+	person_event SPRITE_GRAMPS, 2, 1, SPRITEMOVEDATA_WANDER, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GrampsScript_0x188136, -1
+	person_event SPRITE_RHYDON, 2, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, RhydonScript_0x188139, -1
+	person_event SPRITE_ZUBAT, 6, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, ZubatScript_0x188143, -1
--- a/maps/CharcoalKiln.asm
+++ b/maps/CharcoalKiln.asm
@@ -44,7 +44,7 @@
 .Thanks
 	writetext CharcoalKilnApprenticeText2
 	keeptextopen
-	verbosegiveitem CHARCOAL, 1
+	verbosegiveitem CHARCOAL
 	iffalse .Done
 	setevent EVENT_GOT_CHARCOAL_IN_CHARCOAL_KILN
 	loadmovesprites
@@ -163,6 +163,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_BLACK_BELT, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, CharcoalKilnBoss, EVENT_CHARCOAL_KILN_BOSS
-	person_event SPRITE_YOUNGSTER, 3, 5, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, CharcoalKilnApprentice, EVENT_CHARCOAL_KILN_APPRENTICE
-	person_event SPRITE_MOLTRES, 6, 5, SPRITEMOVEDATA_16, 2, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CharcoalKilnFarfetchd, EVENT_CHARCOAL_KILN_FARFETCH_D
+	person_event SPRITE_BLACK_BELT, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, CharcoalKilnBoss, EVENT_CHARCOAL_KILN_BOSS
+	person_event SPRITE_YOUNGSTER, 3, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, CharcoalKilnApprentice, EVENT_CHARCOAL_KILN_APPRENTICE
+	person_event SPRITE_MOLTRES, 6, 5, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CharcoalKilnFarfetchd, EVENT_CHARCOAL_KILN_FARFETCH_D
--- a/maps/CherrygroveCity.asm
+++ b/maps/CherrygroveCity.asm
@@ -213,7 +213,7 @@
 	iftrue UnknownScript_0x19c183
 	writetext UnknownText_0x19c766
 	keeptextopen
-	verbosegiveitem MYSTIC_WATER, 1
+	verbosegiveitem MYSTIC_WATER
 	iffalse UnknownScript_0x19c187
 	setevent EVENT_GOT_MYSTIC_WATER_IN_CHERRYGROVE
 UnknownScript_0x19c183:
@@ -571,7 +571,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_GRAMPS, 6, 32, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, CherrygroveCityGuideGent, EVENT_GUIDE_GENT_IN_HIS_HOUSE
-	person_event SPRITE_SILVER, 6, 39, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_CHERRYGROVE_CITY
+	person_event SPRITE_SILVER, 6, 39, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_CHERRYGROVE_CITY
 	person_event SPRITE_TEACHER, 12, 27, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, TeacherScript_0x19c146, -1
 	person_event SPRITE_YOUNGSTER, 7, 23, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x19c15a, -1
 	person_event SPRITE_FISHER, 12, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, MysticWaterGuy, -1
--- a/maps/CianwoodCity.asm
+++ b/maps/CianwoodCity.asm
@@ -89,7 +89,7 @@
 UnknownScript_0x1a009c:
 	writetext UnknownText_0x1a01e3
 	keeptextopen
-	verbosegiveitem HM_FLY, 1
+	verbosegiveitem HM_FLY
 	iffalse UnknownScript_0x1a00b1
 	setevent EVENT_GOT_HM02_FLY
 	writetext UnknownText_0x1a021d
@@ -401,15 +401,15 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_STANDING_YOUNGSTER, 37, 21, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, StandingYoungsterScript_0x1a00b3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 37, 21, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, StandingYoungsterScript_0x1a00b3, -1
 	person_event SPRITE_POKEFAN_M, 33, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, PokefanMScript_0x1a00b6, -1
 	person_event SPRITE_LASS, 42, 14, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, 0, 0, 0, LassScript_0x1a00b9, -1
-	person_event SPRITE_ROCK, 16, 8, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 17, 9, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 25, 4, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 29, 5, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 27, 10, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
-	person_event SPRITE_ROCK, 19, 4, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 16, 8, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 17, 9, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 25, 4, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 29, 5, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 27, 10, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
+	person_event SPRITE_ROCK, 19, 4, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, CianwoodCityRock, -1
 	person_event SPRITE_POKEFAN_F, 46, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, PokefanFScript_0x1a0084, -1
 	person_event SPRITE_SUPER_NERD, 21, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_CIANWOOD_CITY_EUSINE
-	person_event SPRITE_SUICUNE, 14, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
+	person_event SPRITE_SUICUNE, 14, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_SAW_SUICUNE_AT_CIANWOOD_CITY
--- a/maps/CianwoodCityPhotoStudio.asm
+++ b/maps/CianwoodCityPhotoStudio.asm
@@ -13,7 +13,7 @@
 	iffalse UnknownScript_0x9e0f3
 	writetext UnknownText_0x9e142
 	closetext
-	special Function16dc7
+	special PhotoStudio
 	closetext
 	loadmovesprites
 	end
--- a/maps/CianwoodGym.asm
+++ b/maps/CianwoodGym.asm
@@ -49,7 +49,7 @@
 	setevent EVENT_BEAT_BLACKBELT_LUNG
 	writetext UnknownText_0x9d84d
 	keeptextopen
-	verbosegiveitem TM_DYNAMICPUNCH, 1
+	verbosegiveitem TM_DYNAMICPUNCH
 	iffalse UnknownScript_0x9d67f
 	setevent EVENT_GOT_TM01_DYNAMICPUNCH
 	writetext UnknownText_0x9d8da
@@ -318,7 +318,7 @@
 	person_event SPRITE_BLACK_BELT, 12, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBlackbeltLao, -1
 	person_event SPRITE_BLACK_BELT, 9, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBlackbeltNob, -1
 	person_event SPRITE_BLACK_BELT, 5, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 1, TrainerBlackbeltLung, -1
-	person_event SPRITE_BOULDER, 1, 5, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 7, 3, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 7, 4, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
-	person_event SPRITE_BOULDER, 7, 5, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 1, 5, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 7, 3, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 7, 4, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
+	person_event SPRITE_BOULDER, 7, 5, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, CianwoodGymBoulder, -1
--- a/maps/CianwoodPharmacy.asm
+++ b/maps/CianwoodPharmacy.asm
@@ -20,7 +20,7 @@
 	iffalse .Mart
 	writetext PharmacistGiveSecretpotionText
 	keeptextopen
-	giveitem SECRETPOTION, 1
+	giveitem SECRETPOTION
 	writetext ReceivedSecretpotionText
 	playsound SFX_KEY_ITEM
 	waitbutton
--- a/maps/CinnabarIsland.asm
+++ b/maps/CinnabarIsland.asm
@@ -146,4 +146,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_BLUE, 6, 9, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, CinnabarIslandBlue, EVENT_BLUE_IN_CINNABAR
+	person_event SPRITE_BLUE, 6, 9, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, CinnabarIslandBlue, EVENT_BLUE_IN_CINNABAR
--- a/maps/Colosseum.asm
+++ b/maps/Colosseum.asm
@@ -49,7 +49,7 @@
 
 MapColosseumSignpost1Script:
 	special Special_Colosseum
-	newloadmap $f8
+	newloadmap MAPSETUP_LINKRETURN
 	end
 
 ChrisScript_0x193499:
--- a/maps/CopycatsHouse1F.asm
+++ b/maps/CopycatsHouse1F.asm
@@ -87,4 +87,4 @@
 	db 3
 	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x18ad13, -1
 	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, PokefanFScript_0x18ad16, -1
-	person_event SPRITE_CLEFAIRY, 6, 6, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, ClefairyScript_0x18ad2a, -1
+	person_event SPRITE_CLEFAIRY, 6, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, ClefairyScript_0x18ad2a, -1
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -106,7 +106,7 @@
 	loadfont
 	writetext UnknownText_0x18b17f
 	keeptextopen
-	takeitem LOST_ITEM, 1
+	takeitem LOST_ITEM
 	setevent EVENT_RETURNED_LOST_ITEM_TO_COPYCAT
 	clearevent EVENT_COPYCATS_HOUSE_2F_DOLL
 	jump .Part14
@@ -116,7 +116,7 @@
 .Part14
 	writetext UnknownText_0x18b1e2
 	keeptextopen
-	verbosegiveitem PASS, 1
+	verbosegiveitem PASS
 	iffalse .Part22
 	setevent EVENT_GOT_PASS_FROM_COPYCAT
 	writetext UnknownText_0x18b214
@@ -374,7 +374,7 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_COPYCAT, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, Copycat, EVENT_COPYCAT_1
-	person_event SPRITE_MOLTRES, 4, 6, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CopycatsDodrio, -1
+	person_event SPRITE_MOLTRES, 4, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CopycatsDodrio, -1
 	person_event SPRITE_FAIRY, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CopycatsHouse2FDoll, EVENT_COPYCATS_HOUSE_2F_DOLL
 	person_event SPRITE_MONSTER, 1, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CopycatsHouse2FDoll, -1
 	person_event SPRITE_BIRD, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CopycatsHouse2FDoll, -1
--- a/maps/DanceTheatre.asm
+++ b/maps/DanceTheatre.asm
@@ -96,7 +96,7 @@
 UnknownScript_0x99505:
 	writetext UnknownText_0x9991a
 	keeptextopen
-	verbosegiveitem HM_SURF, 1
+	verbosegiveitem HM_SURF
 	setevent EVENT_GOT_HM03_SURF
 	writetext UnknownText_0x9999b
 	closetext
@@ -345,12 +345,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_KIMONO_GIRL, 2, 0, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 0, TrainerKimono_girlNaoko2, -1
-	person_event SPRITE_KIMONO_GIRL, 1, 2, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 0, TrainerKimono_girlSayo, -1
-	person_event SPRITE_KIMONO_GIRL, 2, 6, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 0, TrainerKimono_girlZuki, -1
-	person_event SPRITE_KIMONO_GIRL, 1, 9, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 0, TrainerKimono_girlKuni, -1
-	person_event SPRITE_KIMONO_GIRL, 2, 11, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 0, TrainerKimono_girlMiki, -1
+	person_event SPRITE_KIMONO_GIRL, 2, 0, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 0, TrainerKimono_girlNaoko2, -1
+	person_event SPRITE_KIMONO_GIRL, 1, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 0, TrainerKimono_girlSayo, -1
+	person_event SPRITE_KIMONO_GIRL, 2, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 0, TrainerKimono_girlZuki, -1
+	person_event SPRITE_KIMONO_GIRL, 1, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 0, TrainerKimono_girlKuni, -1
+	person_event SPRITE_KIMONO_GIRL, 2, 11, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 0, TrainerKimono_girlMiki, -1
 	person_event SPRITE_GENTLEMAN, 10, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x994c6, -1
-	person_event SPRITE_RHYDON, 8, 6, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, RhydonScript_0x9951b, -1
+	person_event SPRITE_RHYDON, 8, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, RhydonScript_0x9951b, -1
 	person_event SPRITE_COOLTRAINER_M, 10, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x99525, -1
 	person_event SPRITE_GRANNY, 6, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, GrannyScript_0x99528, -1
--- a/maps/DarkCaveBlackthornEntrance.asm
+++ b/maps/DarkCaveBlackthornEntrance.asm
@@ -12,7 +12,7 @@
 	iftrue UnknownScript_0x18c735
 	writetext UnknownText_0x18c73f
 	keeptextopen
-	verbosegiveitem BLACKGLASSES, 1
+	verbosegiveitem BLACKGLASSES
 	iffalse UnknownScript_0x18c739
 	setevent EVENT_GOT_BLACKGLASSES_IN_DARK_CAVE
 UnknownScript_0x18c735:
@@ -73,6 +73,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_PHARMACIST, 3, 7, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, PharmacistScript_0x18c720, -1
-	person_event SPRITE_POKE_BALL, 24, 21, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c73b, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
-	person_event SPRITE_POKE_BALL, 22, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c73d, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
+	person_event SPRITE_PHARMACIST, 3, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, PharmacistScript_0x18c720, -1
+	person_event SPRITE_POKE_BALL, 24, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c73b, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
+	person_event SPRITE_POKE_BALL, 22, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c73d, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
--- a/maps/DarkCaveVioletEntrance.asm
+++ b/maps/DarkCaveVioletEntrance.asm
@@ -43,11 +43,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_POKE_BALL, 8, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c68e, EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
-	person_event SPRITE_ROCK, 14, 16, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 6, 27, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 14, 7, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_ROCK, 31, 36, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
-	person_event SPRITE_POKE_BALL, 22, 36, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c690, EVENT_DARK_CAVE_VIOLET_ENTRANCE_FULL_HEAL
-	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c692, EVENT_DARK_CAVE_VIOLET_ENTRANCE_HYPER_POTION
-	person_event SPRITE_POKE_BALL, 28, 30, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c694, EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
+	person_event SPRITE_POKE_BALL, 8, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c68e, EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
+	person_event SPRITE_ROCK, 14, 16, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 6, 27, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 14, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_ROCK, 31, 36, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, DarkCaveVioletEntranceRock, -1
+	person_event SPRITE_POKE_BALL, 22, 36, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c690, EVENT_DARK_CAVE_VIOLET_ENTRANCE_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c692, EVENT_DARK_CAVE_VIOLET_ENTRANCE_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 28, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c694, EVENT_DARK_CAVE_VIOLET_ENTRANCE_DIRE_HIT
--- a/maps/DragonsDenB1F.asm
+++ b/maps/DragonsDenB1F.asm
@@ -49,7 +49,7 @@
 	loadfont
 	writetext UnknownText_0x18c9bf
 	keeptextopen
-	giveitem TM_DRAGONBREATH, $1
+	giveitem TM_DRAGONBREATH
 	iffalse UnknownScript_0x18c8f4
 	itemtotext TM_DRAGONBREATH, $0
 	writetext UnknownText_0x18c9fb
@@ -122,7 +122,7 @@
 	end
 
 PokeBallScript_0x18c95a:
-	giveitem DRAGON_FANG, $1
+	giveitem DRAGON_FANG
 	iffalse UnknownScript_0x18c970
 	disappear $2
 	loadfont
@@ -419,12 +419,12 @@
 
 .PersonEvents:
 	db 9
-	person_event SPRITE_POKE_BALL, 16, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, PokeBallScript_0x18c95a, EVENT_DRAGONS_DEN_B1F_DRAGON_FANG
+	person_event SPRITE_POKE_BALL, 16, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, PokeBallScript_0x18c95a, EVENT_DRAGONS_DEN_B1F_DRAGON_FANG
 	person_event SPRITE_CLAIR, 30, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_DRAGONS_DEN_CLAIR
-	person_event SPRITE_SILVER, 23, 20, SPRITEMOVEDATA_02, 2, 2, -1, -1, 0, 0, 0, SilverScript_0x18c97e, EVENT_RIVAL_DRAGONS_DEN
+	person_event SPRITE_SILVER, 23, 20, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, 0, 0, SilverScript_0x18c97e, EVENT_RIVAL_DRAGONS_DEN
 	person_event SPRITE_COOLTRAINER_M, 8, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerCooltrainermDarin, -1
 	person_event SPRITE_COOLTRAINER_F, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfCara, -1
 	person_event SPRITE_TWIN, 17, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsLeaandpia1, -1
 	person_event SPRITE_TWIN, 18, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsLeaandpia2, -1
-	person_event SPRITE_POKE_BALL, 4, 30, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c9a1, EVENT_DRAGONS_DEN_B1F_CALCIUM
-	person_event SPRITE_POKE_BALL, 20, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c9a3, EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 4, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c9a1, EVENT_DRAGONS_DEN_B1F_CALCIUM
+	person_event SPRITE_POKE_BALL, 20, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c9a3, EVENT_DRAGONS_DEN_B1F_MAX_ELIXER
--- a/maps/EarlsPokemonAcademy.asm
+++ b/maps/EarlsPokemonAcademy.asm
@@ -105,7 +105,7 @@
 	db $80 ; flags
 	dn 3, 2 ; rows, columns
 	db 5 ; spacing
-	dbw BANK(.Text), .Text
+	dba .Text
 	dbw $1a, 0
 
 .Text
@@ -430,4 +430,4 @@
 	person_event SPRITE_GAMEBOY_KID, 11, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, GameboyKidScript_0x68a86, -1
 	person_event SPRITE_GAMEBOY_KID, 11, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GameboyKidScript_0x68a91, -1
 	person_event SPRITE_YOUNGSTER, 7, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, YoungsterScript_0x68a9c, -1
-	person_event SPRITE_POKEDEX, 4, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, AcademyNotebook, -1
+	person_event SPRITE_POKEDEX, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, AcademyNotebook, -1
--- a/maps/EcruteakCity.asm
+++ b/maps/EcruteakCity.asm
@@ -290,10 +290,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_GRAMPS, 15, 18, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, GrampsScript_0x1a4009, -1
-	person_event SPRITE_GRAMPS, 21, 20, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, GrampsScript_0x1a400c, -1
+	person_event SPRITE_GRAMPS, 15, 18, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, GrampsScript_0x1a4009, -1
+	person_event SPRITE_GRAMPS, 21, 20, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, GrampsScript_0x1a400c, -1
 	person_event SPRITE_LASS, 29, 21, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LassScript_0x1a4012, -1
 	person_event SPRITE_LASS, 9, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, LassScript_0x1a4015, -1
 	person_event SPRITE_FISHER, 22, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x1a4029, -1
-	person_event SPRITE_YOUNGSTER, 14, 10, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x1a403d, -1
-	person_event SPRITE_GRAMPS, 7, 3, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GrampsScript_0x1a400f, EVENT_ECRUTEAK_CITY_GRAMPS
+	person_event SPRITE_YOUNGSTER, 14, 10, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x1a403d, -1
+	person_event SPRITE_GRAMPS, 7, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GrampsScript_0x1a400f, EVENT_ECRUTEAK_CITY_GRAMPS
--- a/maps/EcruteakGym.asm
+++ b/maps/EcruteakGym.asm
@@ -48,7 +48,7 @@
 	setevent EVENT_BEAT_MEDIUM_GRACE
 	writetext UnknownText_0x9a059
 	keeptextopen
-	verbosegiveitem TM_SHADOW_BALL, 1
+	verbosegiveitem TM_SHADOW_BALL
 	iffalse UnknownScript_0x99db5
 	setevent EVENT_GOT_TM30_SHADOW_BALL
 	writetext UnknownText_0x9a0ec
@@ -84,7 +84,7 @@
 	follow PLAYER, $8
 	applymovement PLAYER, MovementData_0x99e5f
 	stopfollow
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playsound SFX_ENTER_DOOR
 	waitbutton
 	warp ECRUTEAK_CITY, $6, $1b
--- a/maps/EcruteakHouse.asm
+++ b/maps/EcruteakHouse.asm
@@ -300,5 +300,5 @@
 	db 4
 	person_event SPRITE_SAGE, 6, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL_1
 	person_event SPRITE_SAGE, 6, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, SageScript_0x98062, EVENT_RANG_CLEAR_BELL_2
-	person_event SPRITE_SAGE, 9, 6, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, SageScript_0x980b0, EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
-	person_event SPRITE_GRAMPS, 11, 3, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, GrampsScript_0x980c4, EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
+	person_event SPRITE_SAGE, 9, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, SageScript_0x980b0, EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
+	person_event SPRITE_GRAMPS, 11, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, GrampsScript_0x980c4, EVENT_ECRUTEAK_HOUSE_WANDERING_SAGE
--- a/maps/EcruteakItemfinderHouse.asm
+++ b/maps/EcruteakItemfinderHouse.asm
@@ -15,7 +15,7 @@
 	iffalse UnknownScript_0x9a61a
 	writetext UnknownText_0x9a6b5
 	keeptextopen
-	verbosegiveitem ITEMFINDER, 1
+	verbosegiveitem ITEMFINDER
 	setevent EVENT_GOT_ITEMFINDER
 UnknownScript_0x9a614:
 	writetext UnknownText_0x9a70e
@@ -177,4 +177,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_COOLTRAINER_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x9a5fb, -1
-	person_event SPRITE_POKEDEX, 3, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, PokedexScript_0x9a620, -1
+	person_event SPRITE_POKEDEX, 3, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, PokedexScript_0x9a620, -1
--- a/maps/EcruteakLugiaSpeechHouse.asm
+++ b/maps/EcruteakLugiaSpeechHouse.asm
@@ -58,5 +58,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, GrampsScript_0x99334, -1
+	person_event SPRITE_GRAMPS, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, GrampsScript_0x99334, -1
 	person_event SPRITE_YOUNGSTER, 4, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, YoungsterScript_0x99337, -1
--- a/maps/EcruteakPokeCenter1F.asm
+++ b/maps/EcruteakPokeCenter1F.asm
@@ -220,7 +220,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x98eb0, -1
-	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_0A, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x98eb3, -1
-	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, CooltrainerFScript_0x98ebf, -1
+	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x98eb3, -1
+	person_event SPRITE_COOLTRAINER_F, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, CooltrainerFScript_0x98ebf, -1
 	person_event SPRITE_GYM_GUY, 1, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GymGuyScript_0x98ec2, -1
 	person_event SPRITE_BILL, 7, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_ECRUTEAK_POKE_CENTER_BILL
--- a/maps/ElmsLab.asm
+++ b/maps/ElmsLab.asm
@@ -327,7 +327,7 @@
 	keeptextopen
 	writetext ElmAfterTheftText2
 	closetext
-	takeitem MYSTERY_EGG, 1
+	takeitem MYSTERY_EGG
 	scall ElmJumpBackScript1
 	writetext ElmAfterTheftText3
 	closetext
@@ -379,7 +379,7 @@
 ElmGiveEverstoneScript:
 	writetext ElmGiveEverstoneText1
 	keeptextopen
-	verbosegiveitem EVERSTONE, 1
+	verbosegiveitem EVERSTONE
 	iffalse ElmScript_NoRoomForEverstone
 	writetext ElmGiveEverstoneText2
 	closetext
@@ -397,7 +397,7 @@
 ElmGiveMasterBallScript:
 	writetext ElmGiveMasterBallText1
 	keeptextopen
-	verbosegiveitem MASTER_BALL, 1
+	verbosegiveitem MASTER_BALL
 	iffalse .notdone
 	setevent EVENT_GOT_MASTER_BALL_FROM_ELM
 	writetext ElmGiveMasterBallText2
@@ -409,7 +409,7 @@
 ElmGiveTicketScript:
 	writetext ElmGiveTicketText1
 	keeptextopen
-	verbosegiveitem S_S_TICKET, 1
+	verbosegiveitem S_S_TICKET
 	setevent EVENT_GOT_SS_TICKET_FROM_ELM
 	writetext ElmGiveTicketText2
 	closetext
@@ -472,7 +472,7 @@
 	loadfont
 	writetext AideText_GiveYouPotions
 	keeptextopen
-	verbosegiveitem POTION, 1
+	verbosegiveitem POTION
 	writetext AideText_AlwaysBusy
 	closetext
 	loadmovesprites
@@ -499,7 +499,7 @@
 	keeptextopen
 	itemtotext POKE_BALL, $1
 	scall AideScript_ReceiveTheBalls
-	giveitem POKE_BALL, $5
+	giveitem POKE_BALL, 5
 	writetext AideText_ExplainBalls
 	keeptextopen
 	itemnotify
@@ -1409,8 +1409,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_ELM, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ProfElmScript, -1
-	person_event SPRITE_SCIENTIST, 9, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
-	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, CyndaquilPokeBallScript, EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
-	person_event SPRITE_POKE_BALL, 3, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, TotodilePokeBallScript, EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
-	person_event SPRITE_POKE_BALL, 3, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, ChikoritaPokeBallScript, EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_SCIENTIST, 9, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ElmsAideScript, EVENT_ELMS_AIDE_IN_LAB
+	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, CyndaquilPokeBallScript, EVENT_CYNDAQUIL_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_POKE_BALL, 3, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, TotodilePokeBallScript, EVENT_TOTODILE_POKEBALL_IN_ELMS_LAB
+	person_event SPRITE_POKE_BALL, 3, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, ChikoritaPokeBallScript, EVENT_CHIKORITA_POKEBALL_IN_ELMS_LAB
 	person_event SPRITE_OFFICER, 3, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CopScript, EVENT_COP_IN_ELMS_LAB
--- a/maps/FastShip1F.asm
+++ b/maps/FastShip1F.asm
@@ -64,7 +64,7 @@
 	loadmovesprites
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
 	domaptrigger VERMILION_PORT, $1
@@ -77,7 +77,7 @@
 	loadmovesprites
 	scall .LetThePlayerOut
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	setevent EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
 	domaptrigger OLIVINE_PORT, $1
--- a/maps/FastShipB1F.asm
+++ b/maps/FastShipB1F.asm
@@ -463,8 +463,8 @@
 	person_event SPRITE_SUPER_NERD, 9, 26, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerJugglerFritz, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
 	person_event SPRITE_SAILOR, 4, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerSailorGarrett, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	person_event SPRITE_FISHER, 8, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerFisherJonah, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_BLACK_BELT, 11, 15, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBlackbeltWai, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_BLACK_BELT, 11, 15, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBlackbeltWai, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	person_event SPRITE_SAILOR, 4, 23, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerSailorKenneth, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
 	person_event SPRITE_TEACHER, 11, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerTeacherShirley, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerSchoolboyNate, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerSchoolboyRicky, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_YOUNGSTER, 9, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerSchoolboyNate, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerSchoolboyRicky, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FastShipCabins_NNW_NNE_NE.asm
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -278,10 +278,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_COOLTRAINER_M, 3, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainermSean, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_COOLTRAINER_M, 3, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainermSean, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	person_event SPRITE_COOLTRAINER_F, 5, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfCarol, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	person_event SPRITE_SUPER_NERD, 5, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacEthan, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
 	person_event SPRITE_POKEFAN_M, 17, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerNoland, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_SAILOR, 26, 4, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SailorScript_0x755f1, EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
-	person_event SPRITE_GENTLEMAN, 30, 7, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerGentlemanEdward, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_SAILOR, 26, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SailorScript_0x755f1, EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+	person_event SPRITE_GENTLEMAN, 30, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerGentlemanEdward, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	person_event SPRITE_PHARMACIST, 30, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 4, TrainerBurglarCorey, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -87,7 +87,7 @@
 UnknownScript_0x75f37:
 	writetext UnknownText_0x7619b
 	keeptextopen
-	verbosegiveitem METAL_COAT, 1
+	verbosegiveitem METAL_COAT
 	iffalse UnknownScript_0x75f44
 	setevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 UnknownScript_0x75f44:
@@ -106,7 +106,7 @@
 UnknownScript_0x75f58:
 	writetext UnknownText_0x7619b
 	keeptextopen
-	verbosegiveitem METAL_COAT, 1
+	verbosegiveitem METAL_COAT
 	iffalse UnknownScript_0x75f65
 	setevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
 UnknownScript_0x75f65:
@@ -473,8 +473,8 @@
 	db 11
 	person_event SPRITE_CAPTAIN, 25, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CaptainScript_0x75ea7, -1
 	person_event SPRITE_GENTLEMAN, 17, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GentlemanScript_0x75f1f, EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
-	person_event SPRITE_TWIN, 17, 3, SPRITEMOVEDATA_0A, 0, 0, -1, -1, 0, 0, 0, TwinScript_0x75f6d, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
-	person_event SPRITE_TWIN, 25, 2, SPRITEMOVEDATA_0A, 0, 0, -1, -1, 0, 0, 0, TwinScript_0x75ebb, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
+	person_event SPRITE_TWIN, 17, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, 0, 0, TwinScript_0x75f6d, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+	person_event SPRITE_TWIN, 25, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, 0, 0, TwinScript_0x75ebb, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
 	person_event SPRITE_POKEFAN_M, 6, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 5, TrainerPokefanmColin, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
 	person_event SPRITE_TWIN, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsMegandpeg1, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
 	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsMegandpeg2, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
@@ -481,4 +481,4 @@
 	person_event SPRITE_SUPER_NERD, 5, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 5, TrainerPsychicRodney, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmJeremy, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
 	person_event SPRITE_POKEFAN_F, 5, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerPokefanfGeorgia, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_SUPER_NERD, 15, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerSupernerdShawn, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_SUPER_NERD, 15, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerSupernerdShawn, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
--- a/maps/FastShipCabins_SW_SSW_NW.asm
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -239,7 +239,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_FISHER, 15, 1, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerFirebreatherLyle, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
-	person_event SPRITE_BUG_CATCHER, 15, 6, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBug_catcherKen, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
-	person_event SPRITE_BUENA, 26, 1, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBeautyCassie, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
-	person_event SPRITE_ROCKER, 28, 3, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerGuitaristClyde, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_FISHER, 15, 1, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerFirebreatherLyle, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+	person_event SPRITE_BUG_CATCHER, 15, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBug_catcherKen, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+	person_event SPRITE_BUENA, 26, 1, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBeautyCassie, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+	person_event SPRITE_ROCKER, 28, 3, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerGuitaristClyde, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/FightingDojo.asm
+++ b/maps/FightingDojo.asm
@@ -58,4 +58,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_BLACK_BELT, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, BlackBeltScript_0x189b61, -1
-	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
+	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x189b6a, EVENT_PICKED_UP_FOCUS_BAND
--- a/maps/FuchsiaCity.asm
+++ b/maps/FuchsiaCity.asm
@@ -154,7 +154,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_YOUNGSTER, 18, 23, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x194b22, -1
-	person_event SPRITE_POKEFAN_M, 8, 13, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, PokefanMScript_0x194b25, -1
-	person_event SPRITE_TEACHER, 14, 16, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, TeacherScript_0x194b28, -1
-	person_event SPRITE_FRUIT_TREE, 1, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x194b43, -1
+	person_event SPRITE_YOUNGSTER, 18, 23, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x194b22, -1
+	person_event SPRITE_POKEFAN_M, 8, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, PokefanMScript_0x194b25, -1
+	person_event SPRITE_TEACHER, 14, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, TeacherScript_0x194b28, -1
+	person_event SPRITE_FRUIT_TREE, 1, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x194b43, -1
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -42,7 +42,7 @@
 	iftrue UnknownScript_0x195e15
 	writetext UnknownText_0x196002
 	keeptextopen
-	verbosegiveitem TM_TOXIC, 1
+	verbosegiveitem TM_TOXIC
 	iffalse UnknownScript_0x195e15
 	setevent EVENT_GOT_TM06_TOXIC
 UnknownScript_0x195e15:
@@ -391,9 +391,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_JANINE, 10, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, JanineScript_0x195db9, -1
-	person_event SPRITE_FUCHSIA_GYM_1, 7, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym1Script_0x195e1b, -1
-	person_event SPRITE_FUCHSIA_GYM_2, 11, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym2Script_0x195e55, -1
-	person_event SPRITE_FUCHSIA_GYM_3, 4, 9, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym3Script_0x195e8f, -1
-	person_event SPRITE_FUCHSIA_GYM_4, 2, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym4Script_0x195ec9, -1
+	person_event SPRITE_JANINE, 10, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, JanineScript_0x195db9, -1
+	person_event SPRITE_FUCHSIA_GYM_1, 7, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym1Script_0x195e1b, -1
+	person_event SPRITE_FUCHSIA_GYM_2, 11, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym2Script_0x195e55, -1
+	person_event SPRITE_FUCHSIA_GYM_3, 4, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym3Script_0x195e8f, -1
+	person_event SPRITE_FUCHSIA_GYM_4, 2, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuschiaGym4Script_0x195ec9, -1
 	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FuchsiaGymGuyScript, -1
--- a/maps/GoldenrodBikeShop.asm
+++ b/maps/GoldenrodBikeShop.asm
@@ -19,7 +19,7 @@
 	writetext UnknownText_0x547f8
 	keeptextopen
 	waitbutton
-	giveitem BICYCLE, 1
+	giveitem BICYCLE
 	writetext UnknownText_0x54848
 	playsound SFX_KEY_ITEM
 	waitbutton
--- a/maps/GoldenrodBillsHouse.asm
+++ b/maps/GoldenrodBillsHouse.asm
@@ -259,4 +259,4 @@
 	db 3
 	person_event SPRITE_BILL, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, BillsHouseBill, EVENT_MET_BILL
 	person_event SPRITE_POKEFAN_F, 3, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, BillsMom, -1
-	person_event SPRITE_TWIN, 4, 5, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BillsSister, -1
+	person_event SPRITE_TWIN, 4, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BillsSister, -1
--- a/maps/GoldenrodCity.asm
+++ b/maps/GoldenrodCity.asm
@@ -582,10 +582,10 @@
 .PersonEvents:
 	db 15
 	person_event SPRITE_POKEFAN_M, 18, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x1989e3, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_YOUNGSTER, 17, 30, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, YoungsterScript_0x1989e6, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 17, 30, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, YoungsterScript_0x1989e6, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_COOLTRAINER_F, 16, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x1989e9, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_COOLTRAINER_F, 26, 20, SPRITEMOVEDATA_02, 2, 1, -1, -1, 0, 0, 0, CooltrainerFScript_0x1989fd, EVENT_GOLDENROD_CITY_CIVILIANS
-	person_event SPRITE_YOUNGSTER, 17, 19, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x198a11, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_COOLTRAINER_F, 26, 20, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, 0, 0, CooltrainerFScript_0x1989fd, EVENT_GOLDENROD_CITY_CIVILIANS
+	person_event SPRITE_YOUNGSTER, 17, 19, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x198a11, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_LASS, 10, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x198a14, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_GRAMPS, 27, 11, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, GrampsScript_0x198a17, EVENT_GOLDENROD_CITY_CIVILIANS
 	person_event SPRITE_ROCKET, 16, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x198a1a, EVENT_GOLDENROD_CITY_ROCKET_SCOUT
@@ -595,4 +595,4 @@
 	person_event SPRITE_ROCKET, 20, 29, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x198a32, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 7, 29, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x198a35, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 10, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x198a38, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_POKEFAN_M, 22, 12, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, MoveTutor, EVENT_GOLDENROD_CITY_MOVE_TUTOR
+	person_event SPRITE_POKEFAN_M, 22, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, MoveTutor, EVENT_GOLDENROD_CITY_MOVE_TUTOR
--- a/maps/GoldenrodDeptStore1F.asm
+++ b/maps/GoldenrodDeptStore1F.asm
@@ -96,4 +96,4 @@
 	person_event SPRITE_RECEPTIONIST, 1, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ReceptionistScript_0x55981, -1
 	person_event SPRITE_POKEFAN_F, 4, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, PokefanFScript_0x55987, -1
 	person_event SPRITE_BUG_CATCHER, 5, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BugCatcherScript_0x5598a, -1
-	person_event SPRITE_GENTLEMAN, 5, 11, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, GentlemanScript_0x55984, -1
+	person_event SPRITE_GENTLEMAN, 5, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, GentlemanScript_0x55984, -1
--- a/maps/GoldenrodDeptStore2F.asm
+++ b/maps/GoldenrodDeptStore2F.asm
@@ -117,4 +117,4 @@
 	person_event SPRITE_CLERK, 6, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x55b65, -1
 	person_event SPRITE_YOUNGSTER, 6, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, 0, 0, YoungsterScript_0x55b6d, -1
 	person_event SPRITE_COOLTRAINER_F, 2, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerFScript_0x55b70, -1
-	person_event SPRITE_GENTLEMAN, 6, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x55b73, -1
+	person_event SPRITE_GENTLEMAN, 6, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x55b73, -1
--- a/maps/GoldenrodDeptStore3F.asm
+++ b/maps/GoldenrodDeptStore3F.asm
@@ -72,5 +72,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 1, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x55db8, -1
-	person_event SPRITE_SUPER_NERD, 5, 12, SPRITEMOVEDATA_0A, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x55dc0, -1
+	person_event SPRITE_SUPER_NERD, 5, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x55dc0, -1
 	person_event SPRITE_ROCKER, 5, 2, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, 0, 0, RockerScript_0x55dc3, -1
--- a/maps/GoldenrodDeptStore5F.asm
+++ b/maps/GoldenrodDeptStore5F.asm
@@ -70,7 +70,7 @@
 .VeryHappy:
 	writetext UnknownText_0x5615a
 	keeptextopen
-	verbosegiveitem TM_RETURN, 1
+	verbosegiveitem TM_RETURN
 	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	loadmovesprites
@@ -85,7 +85,7 @@
 .NotVeryHappy:
 	writetext UnknownText_0x561d8
 	keeptextopen
-	verbosegiveitem TM_FRUSTRATION, 1
+	verbosegiveitem TM_FRUSTRATION
 	iffalse .Done
 	setflag ENGINE_GOLDENROD_MALL_5F_HAPPINESS_EVENT
 	loadmovesprites
@@ -233,8 +233,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_CLERK, 5, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x5609c, -1
-	person_event SPRITE_LASS, 6, 3, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, LassScript_0x56130, -1
-	person_event SPRITE_COOLTRAINER_M, 3, 6, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, CooltrainerMScript_0x56133, -1
-	person_event SPRITE_POKEFAN_M, 5, 13, SPRITEMOVEDATA_02, 2, 2, -1, -1, 0, 0, 0, PokefanMScript_0x5613a, -1
+	person_event SPRITE_LASS, 6, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, LassScript_0x56130, -1
+	person_event SPRITE_COOLTRAINER_M, 3, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, CooltrainerMScript_0x56133, -1
+	person_event SPRITE_POKEFAN_M, 5, 13, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, 0, 0, PokefanMScript_0x5613a, -1
 	person_event SPRITE_TWIN, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TwinScript_0x56118, -1
 	person_event SPRITE_RECEPTIONIST, 5, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ReceptionistScript_0x560ce, EVENT_GOLDENROD_DEPT_STORE_5F_HAPPINESS_EVENT_LADY
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -22,7 +22,7 @@
 .FreshWater
 	checkmoney $0, 200
 	if_equal $2, .NotEnoughMoney
-	giveitem FRESH_WATER, $1
+	giveitem FRESH_WATER
 	iffalse .NotEnoughSpace
 	takemoney $0, 200
 	itemtotext FRESH_WATER, $0
@@ -31,7 +31,7 @@
 .SodaPop
 	checkmoney $0, 300
 	if_equal $2, .NotEnoughMoney
-	giveitem SODA_POP, $1
+	giveitem SODA_POP
 	iffalse .NotEnoughSpace
 	takemoney $0, 300
 	itemtotext SODA_POP, $0
@@ -40,7 +40,7 @@
 .Lemonade
 	checkmoney $0, 350
 	if_equal $2, .NotEnoughMoney
-	giveitem LEMONADE, $1
+	giveitem LEMONADE
 	iffalse .NotEnoughSpace
 	takemoney $0, 350
 	itemtotext LEMONADE, $0
--- a/maps/GoldenrodDeptStoreB1F.asm
+++ b/maps/GoldenrodDeptStoreB1F.asm
@@ -121,11 +121,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c3, EVENT_GOLDENROD_DEPT_STORE_B1F_ETHER
-	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c5, EVENT_GOLDENROD_DEPT_STORE_B1F_AMULET_COIN
-	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c7, EVENT_GOLDENROD_DEPT_STORE_B1F_BURN_HEAL
-	person_event SPRITE_POKE_BALL, 15, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c9, EVENT_GOLDENROD_DEPT_STORE_B1F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c3, EVENT_GOLDENROD_DEPT_STORE_B1F_ETHER
+	person_event SPRITE_POKE_BALL, 2, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c5, EVENT_GOLDENROD_DEPT_STORE_B1F_AMULET_COIN
+	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c7, EVENT_GOLDENROD_DEPT_STORE_B1F_BURN_HEAL
+	person_event SPRITE_POKE_BALL, 15, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d7c9, EVENT_GOLDENROD_DEPT_STORE_B1F_ULTRA_BALL
 	person_event SPRITE_BLACK_BELT, 10, 9, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BlackBeltScript_0x7d7b0, -1
-	person_event SPRITE_BLACK_BELT, 8, 4, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, BlackBeltScript_0x7d7b3, -1
+	person_event SPRITE_BLACK_BELT, 8, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, BlackBeltScript_0x7d7b3, -1
 	person_event SPRITE_BLACK_BELT, 13, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, BlackBeltScript_0x7d7b6, -1
-	person_event SPRITE_MACHOP, 7, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, MachopScript_0x7d7b9, -1
+	person_event SPRITE_MACHOP, 7, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, MachopScript_0x7d7b9, -1
--- a/maps/GoldenrodDeptStoreRoof.asm
+++ b/maps/GoldenrodDeptStoreRoof.asm
@@ -228,8 +228,8 @@
 	person_event SPRITE_CLERK, 4, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x5673f, EVENT_GOLDENROD_SALE_OFF
 	person_event SPRITE_POKEFAN_F, 3, 10, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanFScript_0x56746, -1
 	person_event SPRITE_FISHER, 1, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FisherScript_0x56749, -1
-	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TwinScript_0x56754, EVENT_GOLDENROD_SALE_ON
+	person_event SPRITE_TWIN, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TwinScript_0x56754, EVENT_GOLDENROD_SALE_ON
 	person_event SPRITE_SUPER_NERD, 6, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, SuperNerdScript_0x56757, EVENT_GOLDENROD_SALE_ON
 	person_event SPRITE_POKEFAN_M, 0, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, PokefanMScript_0x5676a, EVENT_GOLDENROD_SALE_OFF
-	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x5676d, EVENT_GOLDENROD_SALE_OFF
+	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x5676d, EVENT_GOLDENROD_SALE_OFF
 	person_event SPRITE_BUG_CATCHER, 6, 1, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, BugCatcherScript_0x56770, EVENT_GOLDENROD_SALE_OFF
--- a/maps/GoldenrodFlowerShop.asm
+++ b/maps/GoldenrodFlowerShop.asm
@@ -20,7 +20,7 @@
 	loadfont
 	writetext UnknownText_0x554c2
 	keeptextopen
-	verbosegiveitem SQUIRTBOTTLE, 1
+	verbosegiveitem SQUIRTBOTTLE
 	setevent EVENT_GOT_SQUIRTBOTTLE
 	loadmovesprites
 	setevent EVENT_FLORIA_AT_SUDOWOODO
@@ -173,4 +173,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_TEACHER, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, FlowerShopTeacherScript, -1
-	person_event SPRITE_LASS, 6, 5, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FlowerShopFloriaScript, EVENT_FLORIA_AT_FLOWER_SHOP
+	person_event SPRITE_LASS, 6, 5, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FlowerShopFloriaScript, EVENT_FLORIA_AT_FLOWER_SHOP
--- a/maps/GoldenrodGameCorner.asm
+++ b/maps/GoldenrodGameCorner.asm
@@ -64,7 +64,7 @@
 	itemtotext TM_THUNDER, $0
 	scall UnknownScript_0x56ca1
 	iffalse UnknownScript_0x56cbd
-	giveitem TM_THUNDER, $1
+	giveitem TM_THUNDER
 	iffalse UnknownScript_0x56cb7
 	takecoins 5500
 	jump UnknownScript_0x56ca6
@@ -75,7 +75,7 @@
 	itemtotext TM_BLIZZARD, $0
 	scall UnknownScript_0x56ca1
 	iffalse UnknownScript_0x56cbd
-	giveitem TM_BLIZZARD, $1
+	giveitem TM_BLIZZARD
 	iffalse UnknownScript_0x56cb7
 	takecoins 5500
 	jump UnknownScript_0x56ca6
@@ -86,7 +86,7 @@
 	itemtotext TM_FIRE_BLAST, $0
 	scall UnknownScript_0x56ca1
 	iffalse UnknownScript_0x56cbd
-	giveitem TM_FIRE_BLAST, $1
+	giveitem TM_FIRE_BLAST
 	iffalse UnknownScript_0x56cb7
 	takecoins 5500
 	jump UnknownScript_0x56ca6
@@ -487,7 +487,7 @@
 	person_event SPRITE_POKEFAN_M, 10, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, PokefanMScript_0x56dfc, -1
 	person_event SPRITE_COOLTRAINER_M, 8, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CooltrainerMScript_0x56e07, -1
 	person_event SPRITE_POKEFAN_F, 6, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanFScript_0x56e12, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 10, SPRITEMOVEDATA_02, 1, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x56e1d, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 10, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x56e1d, -1
 	person_event SPRITE_GENTLEMAN, 10, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GentlemanScript_0x56e20, -1
-	person_event SPRITE_POKEFAN_M, 9, 2, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, PokefanMScript_0x56e2b, -1
+	person_event SPRITE_POKEFAN_M, 9, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, PokefanMScript_0x56e2b, -1
 	person_event SPRITE_POKEFAN_M, 10, 17, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanMScript_0x56c1a, EVENT_GOLDENROD_GAME_CORNER_MOVE_TUTOR
--- a/maps/GoldenrodGym.asm
+++ b/maps/GoldenrodGym.asm
@@ -60,7 +60,7 @@
 UnknownScript_0x54064:
 	writetext UnknownText_0x5428b
 	keeptextopen
-	verbosegiveitem TM_ATTRACT, 1
+	verbosegiveitem TM_ATTRACT
 	iffalse UnknownScript_0x5407b
 	setevent EVENT_GOT_TM45_ATTRACT
 	writetext UnknownText_0x54302
--- a/maps/GoldenrodMagnetTrainStation.asm
+++ b/maps/GoldenrodMagnetTrainStation.asm
@@ -35,7 +35,7 @@
 	writebyte $0
 	special Special_MagnetTrain
 	warpcheck
-	newloadmap $f9
+	newloadmap MAPSETUP_TRAIN
 	applymovement PLAYER, .MovementBoardTheTrain
 	wait $14
 	end
@@ -183,4 +183,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_OFFICER, 9, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, OfficerScript_0x550ec, -1
-	person_event SPRITE_GENTLEMAN, 14, 11, SPRITEMOVEDATA_02, 2, 2, -1, -1, 0, 0, 0, GentlemanScript_0x55143, EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
+	person_event SPRITE_GENTLEMAN, 14, 11, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, 0, 0, GentlemanScript_0x55143, EVENT_GOLDENROD_TRAIN_STATION_GENTLEMAN
--- a/maps/GoldenrodPokeCenter1F.asm
+++ b/maps/GoldenrodPokeCenter1F.asm
@@ -8,15 +8,15 @@
 NurseScript_0x60f91:
 	jumpstd pokecenternurse
 
-UnknownScript_0x60f94:
-	writebyte $b
-	special Function170687
-	if_equal $b, UnknownScript_0x60f9e
+GoldenrodPokeCenter1F_GSBallTriggerLeft:
+	writebyte BATTLE_TOWER_ACTION_0B
+	special BattleTowerAction
+	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
 	end
 
-UnknownScript_0x60f9e:
+.gsball:
 	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
-	iftrue UnknownScript_0x60fd8
+	iftrue .cancel
 	playsound SFX_EXIT_BUILDING
 	moveperson $3, $0, $7
 	disappear $3
@@ -27,7 +27,7 @@
 	loadfont
 	writetext UnknownText_0x622f0
 	closetext
-	verbosegiveitem GS_BALL, 1
+	verbosegiveitem GS_BALL
 	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
 	writetext UnknownText_0x62359
@@ -37,18 +37,18 @@
 	special RestartMapMusic
 	disappear $3
 	playsound SFX_EXIT_BUILDING
-UnknownScript_0x60fd8:
+.cancel:
 	end
 
-UnknownScript_0x60fd9:
-	writebyte $b
-	special Function170687
-	if_equal $b, UnknownScript_0x60fe3
+GoldenrodPokeCenter1F_GSBallTriggerRight:
+	writebyte BATTLE_TOWER_ACTION_0B
+	special BattleTowerAction
+	if_equal MOBILE_EVENT_OBJECT_GS_BALL, .gsball
 	end
 
-UnknownScript_0x60fe3:
+.gsball:
 	checkevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
-	iftrue UnknownScript_0x6101d
+	iftrue .cancel
 	playsound SFX_EXIT_BUILDING
 	moveperson $3, $0, $7
 	disappear $3
@@ -59,7 +59,7 @@
 	loadfont
 	writetext UnknownText_0x622f0
 	closetext
-	verbosegiveitem GS_BALL, 1
+	verbosegiveitem GS_BALL
 	setevent EVENT_GOT_GS_BALL_FROM_POKECOM_CENTER
 	setevent EVENT_CAN_GIVE_GS_BALL_TO_KURT
 	writetext UnknownText_0x62359
@@ -69,7 +69,7 @@
 	special RestartMapMusic
 	disappear $3
 	playsound SFX_EXIT_BUILDING
-UnknownScript_0x6101d:
+.cancel:
 	end
 
 GameboyKidScript_0x6101e:
@@ -86,13 +86,13 @@
 	writetext UnknownText_0x6248c
 	yesorno
 	iffalse UnknownScript_0x6104b
-	takeitem EON_MAIL, 1
+	takeitem EON_MAIL
 	iffalse UnknownScript_0x6104b
 	writetext UnknownText_0x62549
 	closetext
 	writetext UnknownText_0x624a4
 	closetext
-	verbosegiveitem REVIVE, 1
+	verbosegiveitem REVIVE
 	iffalse UnknownScript_0x61051
 	writetext UnknownText_0x624e9
 	closetext
@@ -106,7 +106,7 @@
 	end
 
 UnknownScript_0x61051:
-	giveitem EON_MAIL, $1
+	giveitem EON_MAIL
 	writetext UnknownText_0x6252a
 	closetext
 	loadmovesprites
@@ -810,8 +810,8 @@
 
 .XYTriggers:
 	db 2
-	xy_trigger 0, $7, $3, $0, UnknownScript_0x60f94, $0, $0
-	xy_trigger 0, $7, $4, $0, UnknownScript_0x60fd9, $0, $0
+	xy_trigger 0, $7, $3, $0, GoldenrodPokeCenter1F_GSBallTriggerLeft, $0, $0
+	xy_trigger 0, $7, $4, $0, GoldenrodPokeCenter1F_GSBallTriggerRight, $0, $0
 
 .Signposts:
 	db 0
--- a/maps/IcePath1F.asm
+++ b/maps/IcePath1F.asm
@@ -33,6 +33,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 7, 31, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e472, EVENT_GOT_HM07_WATERFALL
-	person_event SPRITE_POKE_BALL, 23, 32, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e474, EVENT_ICE_PATH_1F_PP_UP
-	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e476, EVENT_ICE_PATH_1F_PROTEIN
+	person_event SPRITE_POKE_BALL, 7, 31, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e472, EVENT_GOT_HM07_WATERFALL
+	person_event SPRITE_POKE_BALL, 23, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e474, EVENT_ICE_PATH_1F_PP_UP
+	person_event SPRITE_POKE_BALL, 9, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e476, EVENT_ICE_PATH_1F_PROTEIN
--- a/maps/IcePathB1F.asm
+++ b/maps/IcePathB1F.asm
@@ -107,8 +107,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_BOULDER, 7, 11, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_1
-	person_event SPRITE_BOULDER, 8, 7, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_2
-	person_event SPRITE_BOULDER, 9, 8, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_3
-	person_event SPRITE_BOULDER, 7, 17, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_4
-	person_event SPRITE_POKE_BALL, 35, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e50d, EVENT_ICE_PATH_B1F_IRON
+	person_event SPRITE_BOULDER, 7, 11, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_1
+	person_event SPRITE_BOULDER, 8, 7, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_2
+	person_event SPRITE_BOULDER, 9, 8, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_3
+	person_event SPRITE_BOULDER, 7, 17, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, IcePathB1FBoulder, EVENT_BOULDER_IN_ICE_PATH_4
+	person_event SPRITE_POKE_BALL, 35, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e50d, EVENT_ICE_PATH_B1F_IRON
--- a/maps/IcePathB2FBlackthornSide.asm
+++ b/maps/IcePathB2FBlackthornSide.asm
@@ -30,4 +30,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e646, EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_TM_REST
+	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e646, EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_TM_REST
--- a/maps/IcePathB2FMahoganySide.asm
+++ b/maps/IcePathB2FMahoganySide.asm
@@ -45,9 +45,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_BOULDER, 3, 11, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1A
-	person_event SPRITE_BOULDER, 7, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2A
-	person_event SPRITE_BOULDER, 12, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3A
-	person_event SPRITE_BOULDER, 13, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4A
-	person_event SPRITE_POKE_BALL, 9, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e5a6, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_FULL_HEAL
-	person_event SPRITE_POKE_BALL, 2, 0, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e5a8, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
+	person_event SPRITE_BOULDER, 3, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_1A
+	person_event SPRITE_BOULDER, 7, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_2A
+	person_event SPRITE_BOULDER, 12, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_3A
+	person_event SPRITE_BOULDER, 13, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, BoulderScript_0x7e5a3, EVENT_BOULDER_IN_ICE_PATH_4A
+	person_event SPRITE_POKE_BALL, 9, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e5a6, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 2, 0, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e5a8, EVENT_ICE_PATH_B2F_MAHOGANY_SIDE_MAX_POTION
--- a/maps/IcePathB3F.asm
+++ b/maps/IcePathB3F.asm
@@ -28,5 +28,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 7, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e66f, EVENT_ICE_PATH_B3F_NEVERMELTICE
-	person_event SPRITE_ROCK, 6, 6, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, IcePathB3FRock, -1
+	person_event SPRITE_POKE_BALL, 7, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e66f, EVENT_ICE_PATH_B3F_NEVERMELTICE
+	person_event SPRITE_ROCK, 6, 6, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, IcePathB3FRock, -1
--- a/maps/IlexForest.asm
+++ b/maps/IlexForest.asm
@@ -339,7 +339,7 @@
 	iftrue UnknownScript_0x6edd8
 	writetext UnknownText_0x6f099
 	keeptextopen
-	verbosegiveitem HM_CUT, 1
+	verbosegiveitem HM_CUT
 	setevent EVENT_GOT_HM01_CUT
 	writetext UnknownText_0x6f141
 	closetext
@@ -365,7 +365,7 @@
 	iftrue UnknownScript_0x6edf3
 	writetext UnknownText_0x6f21b
 	keeptextopen
-	verbosegiveitem TM_HEADBUTT, 1
+	verbosegiveitem TM_HEADBUTT
 	iffalse UnknownScript_0x6edf7
 	setevent EVENT_GOT_TM02_HEADBUTT
 UnknownScript_0x6edf3:
@@ -439,7 +439,7 @@
 	end
 
 UnknownScript_0x6ee42:
-	takeitem GS_BALL, 1
+	takeitem GS_BALL
 	clearevent EVENT_FOREST_IS_RESTLESS
 	setevent EVENT_AZALEA_TOWN_KURT
 	disappear $8
@@ -572,8 +572,8 @@
 	big_step_down
 	fix_facing
 	jump_step_up
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	remove_fixed_facing
 	big_step_up
 	big_step_up
@@ -664,8 +664,8 @@
 	big_step_left
 	fix_facing
 	jump_step_right
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	remove_fixed_facing
 	big_step_left
 	big_step_left
@@ -694,8 +694,8 @@
 	big_step_left
 	fix_facing
 	jump_step_right
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	remove_fixed_facing
 	big_step_right
 	big_step_right
@@ -950,14 +950,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_BIRD, 31, 14, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, BirdScript_0x6eb8f, EVENT_ILEX_FOREST_FARFETCHD
+	person_event SPRITE_BIRD, 31, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, BirdScript_0x6eb8f, EVENT_ILEX_FOREST_FARFETCHD
 	person_event SPRITE_YOUNGSTER, 28, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x6eb7b, EVENT_ILEX_FOREST_APPRENTICE
 	person_event SPRITE_BLACK_BELT, 28, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, BlackBeltScript_0x6edae, EVENT_ILEX_FOREST_CHARCOAL_MASTER
 	person_event SPRITE_ROCKER, 14, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, RockerScript_0x6edde, -1
-	person_event SPRITE_POKE_BALL, 32, 20, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee10, EVENT_ILEX_FOREST_REVIVE
+	person_event SPRITE_POKE_BALL, 32, 20, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee10, EVENT_ILEX_FOREST_REVIVE
 	person_event SPRITE_KURT, 29, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_ILEX_FOREST_KURT
 	person_event SPRITE_LASS, 24, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x6ee0d, EVENT_ILEX_FOREST_LASS
 	person_event SPRITE_YOUNGSTER, 1, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 0, TrainerBug_catcherWayne, -1
-	person_event SPRITE_POKE_BALL, 17, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee12, EVENT_ILEX_FOREST_X_ATTACK
-	person_event SPRITE_POKE_BALL, 7, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee14, EVENT_ILEX_FOREST_ANTIDOTE
-	person_event SPRITE_POKE_BALL, 1, 27, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee16, EVENT_ILEX_FOREST_ETHER
+	person_event SPRITE_POKE_BALL, 17, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee12, EVENT_ILEX_FOREST_X_ATTACK
+	person_event SPRITE_POKE_BALL, 7, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee14, EVENT_ILEX_FOREST_ANTIDOTE
+	person_event SPRITE_POKE_BALL, 1, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6ee16, EVENT_ILEX_FOREST_ETHER
--- a/maps/IndigoPlateauPokeCenter1F.asm
+++ b/maps/IndigoPlateauPokeCenter1F.asm
@@ -154,7 +154,7 @@
 	closetext
 	loadmovesprites
 	playsound SFX_WARP_TO
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	warp NEW_BARK_TOWN, $d, $6
 	end
@@ -321,7 +321,7 @@
 	db 6
 	person_event SPRITE_NURSE, 7, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x18012c, -1
 	person_event SPRITE_CLERK, 7, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x18012f, -1
-	person_event SPRITE_COOLTRAINER_M, 11, 11, SPRITEMOVEDATA_02, 2, 2, -1, -1, 0, 0, 0, CooltrainerMScript_0x180136, -1
+	person_event SPRITE_COOLTRAINER_M, 11, 11, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, 0, 0, CooltrainerMScript_0x180136, -1
 	person_event SPRITE_SILVER, 9, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
 	person_event SPRITE_GRAMPS, 9, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
-	person_event SPRITE_JYNX, 9, 0, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, AbraScript, EVENT_TELEPORT_GUY
+	person_event SPRITE_JYNX, 9, 0, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, AbraScript, EVENT_TELEPORT_GUY
--- a/maps/KrissHouse2F.asm
+++ b/maps/KrissHouse2F.asm
@@ -134,7 +134,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_CONSOLE, 2, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, GameConsole, EVENT_KRISS_HOUSE_2F_CONSOLE
-	person_event SPRITE_DOLL_1, 4, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, Doll1, EVENT_KRISS_HOUSE_2F_DOLL_1
-	person_event SPRITE_DOLL_2, 4, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, Doll2, EVENT_KRISS_HOUSE_2F_DOLL_2
-	person_event SPRITE_BIG_DOLL, 1, 0, SPRITEMOVEDATA_21, 0, 0, -1, -1, 0, 0, 0, BigDoll, EVENT_KRISS_HOUSE_2F_BIG_DOLL
+	person_event SPRITE_CONSOLE, 2, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, GameConsole, EVENT_KRISS_HOUSE_2F_CONSOLE
+	person_event SPRITE_DOLL_1, 4, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, Doll1, EVENT_KRISS_HOUSE_2F_DOLL_1
+	person_event SPRITE_DOLL_2, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, Doll2, EVENT_KRISS_HOUSE_2F_DOLL_2
+	person_event SPRITE_BIG_DOLL, 1, 0, SPRITEMOVEDATA_BIGDOLL, 0, 0, -1, -1, 0, 0, 0, BigDoll, EVENT_KRISS_HOUSE_2F_BIG_DOLL
--- a/maps/KurtsHouse.asm
+++ b/maps/KurtsHouse.asm
@@ -66,7 +66,7 @@
 .ClearedSlowpokeWell:
 	writetext UnknownText_0x18e615
 	keeptextopen
-	verbosegiveitem LURE_BALL, 1
+	verbosegiveitem LURE_BALL
 	iffalse .NoRoomForBall
 	setevent EVENT_KURT_GAVE_YOU_LURE_BALL
 .GotLureBall:
@@ -192,7 +192,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 LEVEL_BALL, $16
+	verbosegiveitem2 LEVEL_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_RED_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -202,7 +202,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 LURE_BALL, $16
+	verbosegiveitem2 LURE_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_BLU_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -212,7 +212,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 MOON_BALL, $16
+	verbosegiveitem2 MOON_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_YLW_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -222,7 +222,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 FRIEND_BALL, $16
+	verbosegiveitem2 FRIEND_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_GRN_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -232,7 +232,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 FAST_BALL, $16
+	verbosegiveitem2 FAST_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_WHT_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -242,7 +242,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 HEAVY_BALL, $16
+	verbosegiveitem2 HEAVY_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_BLK_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -252,7 +252,7 @@
 	iftrue KurtMakingBallsScript
 	writetext UnknownText_0x18e7fb
 	keeptextopen
-	verbosegiveitem2 LOVE_BALL, $16
+	verbosegiveitem2 LOVE_BALL, VAR_KURT_APRICORNS
 	iffalse .NoRoomForBall
 	clearevent EVENT_GAVE_KURT_PNK_APRICORN
 	jump ._ThatTurnedOutGreat
@@ -266,7 +266,7 @@
 	closetext
 	loadmovesprites
 	setevent EVENT_GAVE_GS_BALL_TO_KURT
-	takeitem GS_BALL, 1
+	takeitem GS_BALL
 	setflag ENGINE_KURT_MAKING_BALLS
 	end
 
@@ -697,7 +697,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_KURT, 2, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, KurtScript_0x18e178, EVENT_KURTS_HOUSE_KURT_1
-	person_event SPRITE_TWIN, 3, 5, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, KurtsGranddaughter1, EVENT_KURTS_HOUSE_GRANDDAUGHTER_1
-	person_event SPRITE_SLOWPOKE, 3, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, KurtsHouseSlowpoke, EVENT_KURTS_HOUSE_SLOWPOKE
+	person_event SPRITE_TWIN, 3, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, KurtsGranddaughter1, EVENT_KURTS_HOUSE_GRANDDAUGHTER_1
+	person_event SPRITE_SLOWPOKE, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, KurtsHouseSlowpoke, EVENT_KURTS_HOUSE_SLOWPOKE
 	person_event SPRITE_KURT, 3, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, KurtScript_0x18e3bd, EVENT_KURTS_HOUSE_KURT_2
 	person_event SPRITE_TWIN, 4, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, KurtsGranddaughter2, EVENT_KURTS_HOUSE_GRANDDAUGHTER_2
--- a/maps/LakeofRage.asm
+++ b/maps/LakeofRage.asm
@@ -85,7 +85,7 @@
 UnknownScript_0x7007a:
 	returnafterbattle
 	loadfont
-	giveitem RED_SCALE, $1
+	giveitem RED_SCALE
 	waitbutton
 	writetext UnknownText_0x703df
 	playsound SFX_ITEM
@@ -195,7 +195,7 @@
 .MetWesley
 	writetext WesleyGivesGiftText
 	keeptextopen
-	verbosegiveitem BLACKBELT, 1
+	verbosegiveitem BLACKBELT
 	iffalse WesleyDoneScript
 	setevent EVENT_GOT_BLACKBELT_FROM_WESLEY
 	writetext WesleyGaveGiftText
@@ -517,7 +517,7 @@
 	person_event SPRITE_FISHER, 26, 24, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerFisherRaymond, EVENT_LAKE_OF_RAGE_CIVILIANS
 	person_event SPRITE_COOLTRAINER_M, 15, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerCooltrainermAaron, EVENT_LAKE_OF_RAGE_CIVILIANS
 	person_event SPRITE_COOLTRAINER_F, 7, 36, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 0, TrainerCooltrainerfLois, EVENT_LAKE_OF_RAGE_CIVILIANS
-	person_event SPRITE_GYARADOS, 22, 18, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GyaradosScript_0x70063, EVENT_LAKE_OF_RAGE_RED_GYARADOS
+	person_event SPRITE_GYARADOS, 22, 18, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GyaradosScript_0x70063, EVENT_LAKE_OF_RAGE_RED_GYARADOS
 	person_event SPRITE_SUPER_NERD, 4, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, WesleyScript, EVENT_LAKE_OF_RAGE_WESLEY_OF_WEDNESDAY
-	person_event SPRITE_POKE_BALL, 10, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x70148, EVENT_LAKE_OF_RAGE_ELIXER
-	person_event SPRITE_POKE_BALL, 2, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7014a, EVENT_LAKE_OF_RAGE_TM_DETECT
+	person_event SPRITE_POKE_BALL, 10, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x70148, EVENT_LAKE_OF_RAGE_ELIXER
+	person_event SPRITE_POKE_BALL, 2, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7014a, EVENT_LAKE_OF_RAGE_TM_DETECT
--- a/maps/LakeofRageHiddenPowerHouse.asm
+++ b/maps/LakeofRageHiddenPowerHouse.asm
@@ -12,7 +12,7 @@
 	iftrue .AlreadyGotItem
 	writetext HiddenPowerGuyText1
 	keeptextopen
-	verbosegiveitem TM_HIDDEN_POWER, 1
+	verbosegiveitem TM_HIDDEN_POWER
 	iffalse .Done
 	setevent EVENT_GOT_TM10_HIDDEN_POWER
 	writetext HiddenPowerGuyText2
@@ -83,4 +83,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, HiddenPowerGuy, -1
+	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, HiddenPowerGuy, -1
--- a/maps/LakeofRageMagikarpHouse.asm
+++ b/maps/LakeofRageMagikarpHouse.asm
@@ -50,7 +50,7 @@
 UnknownScript_0x19a6fe:
 	writetext UnknownText_0x19a977
 	keeptextopen
-	verbosegiveitem ELIXER, 1
+	verbosegiveitem ELIXER
 	iffalse UnknownScript_0x19a711
 	writetext UnknownText_0x19a9c3
 	closetext
@@ -221,4 +221,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, FishingGuruScript_0x19a6ae, -1
+	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, FishingGuruScript_0x19a6ae, -1
--- a/maps/LancesRoom.asm
+++ b/maps/LancesRoom.asm
@@ -125,9 +125,9 @@
 	pause 30
 	loadmovesprites
 	applymovement $3, MovementData_0x180f5b
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	pause 15
-	warpfacing $1, HALL_OF_FAME, $4, $d
+	warpfacing UP, HALL_OF_FAME, $4, $d
 	end
 
 MovementData_0x180f33:
--- a/maps/LavRadioTower1F.asm
+++ b/maps/LavRadioTower1F.asm
@@ -235,6 +235,6 @@
 	db 5
 	person_event SPRITE_RECEPTIONIST, 6, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, ReceptionistScript_0x7ee63, -1
 	person_event SPRITE_OFFICER, 1, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OfficerScript_0x7ee66, -1
-	person_event SPRITE_SUPER_NERD, 3, 1, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x7ee69, -1
+	person_event SPRITE_SUPER_NERD, 3, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x7ee69, -1
 	person_event SPRITE_GENTLEMAN, 1, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x7ee6c, -1
 	person_event SPRITE_SUPER_NERD, 6, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, SuperNerdScript_0x7eea2, -1
--- a/maps/LavenderMart.asm
+++ b/maps/LavenderMart.asm
@@ -61,4 +61,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x7eb1c, -1
 	person_event SPRITE_POKEFAN_M, 6, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanMScript_0x7eb23, -1
-	person_event SPRITE_ROCKER, 2, 9, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, RockerScript_0x7eb26, -1
+	person_event SPRITE_ROCKER, 2, 9, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, RockerScript_0x7eb26, -1
--- a/maps/MahoganyGym.asm
+++ b/maps/MahoganyGym.asm
@@ -35,7 +35,7 @@
 	setevent EVENT_BEAT_BOARDER_DOUGLAS
 	writetext UnknownText_0x199d55
 	keeptextopen
-	verbosegiveitem TM_ICY_WIND, 1
+	verbosegiveitem TM_ICY_WIND
 	iffalse UnknownScript_0x199af4
 	setevent EVENT_GOT_TM16_ICY_WIND
 	writetext UnknownText_0x199def
@@ -387,5 +387,5 @@
 	person_event SPRITE_ROCKER, 17, 0, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBoarderRonald, -1
 	person_event SPRITE_BUENA, 17, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerSkierClarissa, -1
 	person_event SPRITE_ROCKER, 9, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBoarderBrad, -1
-	person_event SPRITE_ROCKER, 4, 2, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBoarderDouglas, -1
+	person_event SPRITE_ROCKER, 4, 2, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBoarderDouglas, -1
 	person_event SPRITE_GYM_GUY, 15, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, MahoganyGymGuyScript, -1
--- a/maps/MahoganyMart1F.asm
+++ b/maps/MahoganyMart1F.asm
@@ -237,7 +237,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_PHARMACIST, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, PharmacistScript_0x6c367, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_BLACK_BELT, 6, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, BlackBeltScript_0x6c37b, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_BLACK_BELT, 6, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, BlackBeltScript_0x6c37b, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_LANCE, 6, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
 	person_event SPRITE_DRAGON, 6, 3, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
 	person_event SPRITE_GRANNY, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, GrannyScript_0x6c3ee, EVENT_MAHOGANY_MART_OWNERS
--- a/maps/MahoganyPokeCenter1F.asm
+++ b/maps/MahoganyPokeCenter1F.asm
@@ -66,6 +66,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x19a356, -1
-	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanMScript_0x19a359, -1
+	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanMScript_0x19a359, -1
 	person_event SPRITE_YOUNGSTER, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x19a35c, -1
 	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, CooltrainerFScript_0x19a35f, -1
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -56,7 +56,7 @@
 	iffalse UnknownScript_0x190072
 	checkmoney $0, 300
 	if_equal $2, UnknownScript_0x19006c
-	giveitem RAGECANDYBAR, $1
+	giveitem RAGECANDYBAR
 	iffalse UnknownScript_0x190078
 	waitbutton
 	playsound SFX_TRANSACTION
--- a/maps/ManiasHouse.asm
+++ b/maps/ManiasHouse.asm
@@ -212,4 +212,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_ROCKER, 4, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, ManiaScript, -1
+	person_event SPRITE_ROCKER, 4, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, ManiaScript, -1
--- a/maps/MobileBattleRoom.asm
+++ b/maps/MobileBattleRoom.asm
@@ -35,11 +35,11 @@
 	writetext MobileBattleRoom_HealText
 	pause 20
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	special LoadMapPalettes
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	refreshscreen $0
 .two_:
--- a/maps/MountMoonSquare.asm
+++ b/maps/MountMoonSquare.asm
@@ -157,4 +157,4 @@
 	db 3
 	person_event SPRITE_FAIRY, 6, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_MT_MOON_SQUARE_CLEFAIRY
 	person_event SPRITE_FAIRY, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_MT_MOON_SQUARE_CLEFAIRY
-	person_event SPRITE_ROCK, 7, 7, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, MtMoonSquareRock, EVENT_MT_MOON_SQUARE_ROCK
+	person_event SPRITE_ROCK, 7, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, MtMoonSquareRock, EVENT_MT_MOON_SQUARE_ROCK
--- a/maps/MountMortar1FInside.asm
+++ b/maps/MountMortar1FInside.asm
@@ -127,13 +127,13 @@
 
 .PersonEvents:
 	db 10
-	person_event SPRITE_BOULDER, 43, 21, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, MountMortar1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 38, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de7c, EVENT_MOUNT_MORTAR_1F_INSIDE_ESCAPE_ROPE
-	person_event SPRITE_POKE_BALL, 10, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de7e, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 27, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de80, EVENT_MOUNT_MORTAR_1F_INSIDE_HYPER_POTION
-	person_event SPRITE_POKE_BALL, 20, 22, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de82, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_POTION
-	person_event SPRITE_POKE_BALL, 19, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de84, EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
+	person_event SPRITE_BOULDER, 43, 21, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, MountMortar1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 38, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de7c, EVENT_MOUNT_MORTAR_1F_INSIDE_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 10, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de7e, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 27, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de80, EVENT_MOUNT_MORTAR_1F_INSIDE_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 20, 22, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de82, EVENT_MOUNT_MORTAR_1F_INSIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 19, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de84, EVENT_MOUNT_MORTAR_1F_INSIDE_NUGGET
 	person_event SPRITE_SUPER_NERD, 43, 33, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacMiller, -1
-	person_event SPRITE_SUPER_NERD, 28, 24, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerSupernerdMarkus, -1
-	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de86, EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
-	person_event SPRITE_POKE_BALL, 17, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de88, EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
+	person_event SPRITE_SUPER_NERD, 28, 24, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerSupernerdMarkus, -1
+	person_event SPRITE_POKE_BALL, 16, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de86, EVENT_MOUNT_MORTAR_1F_INSIDE_IRON
+	person_event SPRITE_POKE_BALL, 17, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7de88, EVENT_MOUNT_MORTAR_1F_INSIDE_ULTRA_BALL
--- a/maps/MountMortar1FOutside.asm
+++ b/maps/MountMortar1FOutside.asm
@@ -40,5 +40,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 15, 13, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ddf6, EVENT_MOUNT_MORTAR_1F_OUTSIDE_ETHER
-	person_event SPRITE_POKE_BALL, 18, 31, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ddf8, EVENT_MOUNT_MORTAR_1F_OUTSIDE_REVIVE
+	person_event SPRITE_POKE_BALL, 15, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ddf6, EVENT_MOUNT_MORTAR_1F_OUTSIDE_ETHER
+	person_event SPRITE_POKE_BALL, 18, 31, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ddf8, EVENT_MOUNT_MORTAR_1F_OUTSIDE_REVIVE
--- a/maps/MountMortar2FInside.asm
+++ b/maps/MountMortar2FInside.asm
@@ -76,10 +76,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_POKE_BALL, 22, 28, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0de, EVENT_MOUNT_MORTAR_2F_INSIDE_MAX_POTION
-	person_event SPRITE_POKE_BALL, 33, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e0, EVENT_MOUNT_MORTAR_2F_INSIDE_RARE_CANDY
-	person_event SPRITE_POKE_BALL, 17, 19, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e2, EVENT_MOUNT_MORTAR_2F_INSIDE_TM_DEFENSE_CURL
-	person_event SPRITE_POKE_BALL, 5, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e4, EVENT_MOUNT_MORTAR_2F_INSIDE_DRAGON_SCALE
-	person_event SPRITE_POKE_BALL, 11, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e6, EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
-	person_event SPRITE_POKE_BALL, 5, 28, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e8, EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
-	person_event SPRITE_SUPER_NERD, 26, 13, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerSupernerdHugh, -1
+	person_event SPRITE_POKE_BALL, 22, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0de, EVENT_MOUNT_MORTAR_2F_INSIDE_MAX_POTION
+	person_event SPRITE_POKE_BALL, 33, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e0, EVENT_MOUNT_MORTAR_2F_INSIDE_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 17, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e2, EVENT_MOUNT_MORTAR_2F_INSIDE_TM_DEFENSE_CURL
+	person_event SPRITE_POKE_BALL, 5, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e4, EVENT_MOUNT_MORTAR_2F_INSIDE_DRAGON_SCALE
+	person_event SPRITE_POKE_BALL, 11, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e6, EVENT_MOUNT_MORTAR_2F_INSIDE_ELIXER
+	person_event SPRITE_POKE_BALL, 5, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e0e8, EVENT_MOUNT_MORTAR_2F_INSIDE_ESCAPE_ROPE
+	person_event SPRITE_SUPER_NERD, 26, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerSupernerdHugh, -1
--- a/maps/MountMortarB1F.asm
+++ b/maps/MountMortarB1F.asm
@@ -144,10 +144,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_POKE_BALL, 12, 29, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e240, EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
-	person_event SPRITE_POKE_BALL, 16, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e242, EVENT_MOUNT_MORTAR_B1F_CARBOS
-	person_event SPRITE_BOULDER, 10, 9, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, MountMortarB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 12, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e240, EVENT_MOUNT_MORTAR_B1F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 16, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e242, EVENT_MOUNT_MORTAR_B1F_CARBOS
+	person_event SPRITE_BOULDER, 10, 9, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, MountMortarB1FBoulder, -1
 	person_event SPRITE_BLACK_BELT, 4, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, BlackBeltScript_0x7e1f6, -1
-	person_event SPRITE_POKE_BALL, 24, 34, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e244, EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 3, 32, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e246, EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
-	person_event SPRITE_POKE_BALL, 26, 21, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e248, EVENT_MOUNT_MORTAR_B1F_PP_UP
+	person_event SPRITE_POKE_BALL, 24, 34, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e244, EVENT_MOUNT_MORTAR_B1F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 3, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e246, EVENT_MOUNT_MORTAR_B1F_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 26, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7e248, EVENT_MOUNT_MORTAR_B1F_PP_UP
--- a/maps/MrFujisHouse.asm
+++ b/maps/MrFujisHouse.asm
@@ -92,7 +92,7 @@
 .PersonEvents:
 	db 5
 	person_event SPRITE_SUPER_NERD, 1, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, SuperNerdScript_0x7e8ca, -1
-	person_event SPRITE_LASS, 4, 3, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, LassScript_0x7e8cd, -1
-	person_event SPRITE_RHYDON, 4, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, MrFujisPsyduck, -1
-	person_event SPRITE_GROWLITHE, 5, 5, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, MrFujisNidorino, -1
-	person_event SPRITE_MOLTRES, 3, 1, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MrFujisPidgey, -1
+	person_event SPRITE_LASS, 4, 3, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, LassScript_0x7e8cd, -1
+	person_event SPRITE_RHYDON, 4, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, MrFujisPsyduck, -1
+	person_event SPRITE_GROWLITHE, 5, 5, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, MrFujisNidorino, -1
+	person_event SPRITE_MOLTRES, 3, 1, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MrFujisPidgey, -1
--- a/maps/MrPokemonsHouse.asm
+++ b/maps/MrPokemonsHouse.asm
@@ -28,7 +28,7 @@
 	writetext UnknownText_0x196fa8
 	keeptextopen
 	waitbutton
-	giveitem MYSTERY_EGG, $1
+	giveitem MYSTERY_EGG
 	writetext UnknownText_0x196fd2
 	playsound SFX_KEY_ITEM
 	waitbutton
@@ -69,9 +69,9 @@
 	writetext UnknownText_0x197476
 	yesorno
 	iffalse UnknownScript_0x196ec3
-	verbosegiveitem EXP_SHARE, 1
+	verbosegiveitem EXP_SHARE
 	iffalse UnknownScript_0x196ec7
-	takeitem RED_SCALE, 1
+	takeitem RED_SCALE
 	jump UnknownScript_0x196eaa
 
 UnknownScript_0x196ec3:
--- a/maps/MrPsychicsHouse.asm
+++ b/maps/MrPsychicsHouse.asm
@@ -12,7 +12,7 @@
 	iftrue .AlreadyGotItem
 	writetext MrPsychicText1
 	keeptextopen
-	verbosegiveitem TM_PSYCHIC, 1
+	verbosegiveitem TM_PSYCHIC
 	iffalse .Done
 	setevent EVENT_GOT_TM29_PSYCHIC
 .AlreadyGotItem
--- a/maps/NationalPark.asm
+++ b/maps/NationalPark.asm
@@ -18,7 +18,7 @@
 	iftrue UnknownScript_0x5c01d
 	writetext UnknownText_0x5c265
 	keeptextopen
-	verbosegiveitem QUICK_CLAW, 1
+	verbosegiveitem QUICK_CLAW
 	iffalse UnknownScript_0x5c021
 	setevent EVENT_GOT_QUICK_CLAW
 UnknownScript_0x5c01d:
@@ -216,7 +216,7 @@
 
 UnknownScript_0x5c177:
 	scall UnknownScript_0x5c1a7
-	verbosegiveitem NUGGET, 1
+	verbosegiveitem NUGGET
 	iffalse UnknownScript_0x5c186
 	clearflag ENGINE_BEVERLY_HAS_NUGGET
 	jump UnknownScript_0x5c19b
@@ -526,12 +526,12 @@
 	person_event SPRITE_TEACHER, 40, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x5c008, -1
 	person_event SPRITE_YOUNGSTER, 41, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, YoungsterScript_0x5c023, -1
 	person_event SPRITE_YOUNGSTER, 41, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c026, -1
-	person_event SPRITE_TEACHER, 41, 17, SPRITEMOVEDATA_02, 2, 1, -1, -1, 0, 0, 0, TeacherScript_0x5c029, -1
-	person_event SPRITE_GROWLITHE, 40, 26, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, GrowlitheScript_0x5c02c, -1
-	person_event SPRITE_YOUNGSTER, 23, 27, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSchoolboyJack1, -1
-	person_event SPRITE_POKEFAN_F, 29, 18, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerPokefanfBeverly1, -1
-	person_event SPRITE_POKEFAN_M, 9, 16, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerPokefanmWilliam, -1
-	person_event SPRITE_LASS, 14, 8, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerLassKrise, -1
-	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c1cc, EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	person_event SPRITE_TEACHER, 41, 17, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, 0, 0, TeacherScript_0x5c029, -1
+	person_event SPRITE_GROWLITHE, 40, 26, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, GrowlitheScript_0x5c02c, -1
+	person_event SPRITE_YOUNGSTER, 23, 27, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSchoolboyJack1, -1
+	person_event SPRITE_POKEFAN_F, 29, 18, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerPokefanfBeverly1, -1
+	person_event SPRITE_POKEFAN_M, 9, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerPokefanmWilliam, -1
+	person_event SPRITE_LASS, 14, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerLassKrise, -1
+	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c1cc, EVENT_NATIONAL_PARK_PARLYZ_HEAL
 	person_event SPRITE_GAMEBOY_KID, 6, 26, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, GameboyKidScript_0x5c037, -1
-	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c1ce, EVENT_NATIONAL_PARK_TM_DIG
+	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c1ce, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NationalParkBugContest.asm
+++ b/maps/NationalParkBugContest.asm
@@ -230,15 +230,15 @@
 
 .PersonEvents:
 	db 12
-	person_event SPRITE_YOUNGSTER, 29, 19, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c8ec, EVENT_BUG_CATCHING_CONTESTANT_1A
-	person_event SPRITE_YOUNGSTER, 22, 28, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x5c8f4, EVENT_BUG_CATCHING_CONTESTANT_2A
+	person_event SPRITE_YOUNGSTER, 29, 19, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c8ec, EVENT_BUG_CATCHING_CONTESTANT_1A
+	person_event SPRITE_YOUNGSTER, 22, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x5c8f4, EVENT_BUG_CATCHING_CONTESTANT_2A
 	person_event SPRITE_ROCKER, 18, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, RockerScript_0x5c8fc, EVENT_BUG_CATCHING_CONTESTANT_3A
 	person_event SPRITE_POKEFAN_M, 13, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, PokefanMScript_0x5c904, EVENT_BUG_CATCHING_CONTESTANT_4A
-	person_event SPRITE_YOUNGSTER, 9, 23, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c90c, EVENT_BUG_CATCHING_CONTESTANT_5A
-	person_event SPRITE_YOUNGSTER, 13, 27, SPRITEMOVEDATA_02, 3, 3, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x5c914, EVENT_BUG_CATCHING_CONTESTANT_6A
+	person_event SPRITE_YOUNGSTER, 9, 23, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c90c, EVENT_BUG_CATCHING_CONTESTANT_5A
+	person_event SPRITE_YOUNGSTER, 13, 27, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x5c914, EVENT_BUG_CATCHING_CONTESTANT_6A
 	person_event SPRITE_LASS, 23, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LassScript_0x5c91c, EVENT_BUG_CATCHING_CONTESTANT_7A
-	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
-	person_event SPRITE_YOUNGSTER, 8, 16, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
-	person_event SPRITE_YOUNGSTER, 34, 17, SPRITEMOVEDATA_02, 3, 3, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
-	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c945, EVENT_NATIONAL_PARK_PARLYZ_HEAL
-	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c947, EVENT_NATIONAL_PARK_TM_DIG
+	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5c924, EVENT_BUG_CATCHING_CONTESTANT_8A
+	person_event SPRITE_YOUNGSTER, 8, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x5c92c, EVENT_BUG_CATCHING_CONTESTANT_9A
+	person_event SPRITE_YOUNGSTER, 34, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, YoungsterScript_0x5c934, EVENT_BUG_CATCHING_CONTESTANT_10A
+	person_event SPRITE_POKE_BALL, 12, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c945, EVENT_NATIONAL_PARK_PARLYZ_HEAL
+	person_event SPRITE_POKE_BALL, 43, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5c947, EVENT_NATIONAL_PARK_TM_DIG
--- a/maps/NewBarkTown.asm
+++ b/maps/NewBarkTown.asm
@@ -305,6 +305,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_TEACHER, 8, 6, SPRITEMOVEDATA_03, 0, 1, -1, -1, 0, 0, 0, TeacherScript_0x1a806f, -1
+	person_event SPRITE_TEACHER, 8, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 1, -1, -1, 0, 0, 0, TeacherScript_0x1a806f, -1
 	person_event SPRITE_FISHER, 9, 12, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x1a809b, -1
 	person_event SPRITE_SILVER, 2, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, SilverScript_0x1a809e, EVENT_RIVAL_NEW_BARK_TOWN
--- a/maps/OaksLab.asm
+++ b/maps/OaksLab.asm
@@ -286,4 +286,4 @@
 	person_event SPRITE_OAK, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, Oak, -1
 	person_event SPRITE_SCIENTIST, 8, 1, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x19b40f, -1
 	person_event SPRITE_SCIENTIST, 9, 8, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x19b412, -1
-	person_event SPRITE_SCIENTIST, 4, 1, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x19b415, -1
+	person_event SPRITE_SCIENTIST, 4, 1, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x19b415, -1
--- a/maps/OlivineCafe.asm
+++ b/maps/OlivineCafe.asm
@@ -12,7 +12,7 @@
 	iftrue UnknownScript_0x9c8d3
 	writetext UnknownText_0x9c8df
 	keeptextopen
-	verbosegiveitem HM_STRENGTH, 1
+	verbosegiveitem HM_STRENGTH
 	setevent EVENT_GOT_HM04_STRENGTH
 UnknownScript_0x9c8d3:
 	writetext UnknownText_0x9c965
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -321,6 +321,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_SAILOR, 27, 26, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, 0, 0, SailorScript_0x1a88a3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, StandingYoungsterScript_0x1a88a6, -1
-	person_event SPRITE_SAILOR, 21, 17, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, SailorScript_0x1a88ba, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 13, 20, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, StandingYoungsterScript_0x1a88a6, -1
+	person_event SPRITE_SAILOR, 21, 17, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, SailorScript_0x1a88ba, -1
 	person_event SPRITE_OLIVINE_RIVAL, 11, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_OLIVINE_CITY
--- a/maps/OlivineGoodRodHouse.asm
+++ b/maps/OlivineGoodRodHouse.asm
@@ -15,7 +15,7 @@
 	iffalse .DontWantIt
 	writetext GiveGoodRodText
 	keeptextopen
-	verbosegiveitem GOOD_ROD, 1
+	verbosegiveitem GOOD_ROD
 	writetext GaveGoodRodText
 	closetext
 	loadmovesprites
--- a/maps/OlivineGym.asm
+++ b/maps/OlivineGym.asm
@@ -30,7 +30,7 @@
 	iftrue UnknownScript_0x9c172
 	writetext UnknownText_0x9c354
 	keeptextopen
-	verbosegiveitem TM_IRON_TAIL, 1
+	verbosegiveitem TM_IRON_TAIL
 	iffalse UnknownScript_0x9c176
 	setevent EVENT_GOT_TM23_IRON_TAIL
 	writetext UnknownText_0x9c3a5
--- a/maps/OlivineHouseBeta.asm
+++ b/maps/OlivineHouseBeta.asm
@@ -54,5 +54,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, TeacherScript_0x9c58f, -1
+	person_event SPRITE_TEACHER, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, TeacherScript_0x9c58f, -1
 	person_event SPRITE_RHYDON, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, 0, 0, 0, RhydonScript_0x9c592, -1
--- a/maps/OlivineLighthouse2F.asm
+++ b/maps/OlivineLighthouse2F.asm
@@ -94,7 +94,7 @@
 	checkevent EVENT_GOT_PROTEIN_FROM_HUEY
 	iftrue UnknownScript_0x5b03e
 	scall UnknownScript_0x5b076
-	verbosegiveitem PROTEIN, 1
+	verbosegiveitem PROTEIN
 	iffalse UnknownScript_0x5b06f
 	setevent EVENT_GOT_PROTEIN_FROM_HUEY
 	jump UnknownScript_0x5b05f
@@ -106,7 +106,7 @@
 	loadfont
 	writetext UnknownText_0x5b1b6
 	closetext
-	verbosegiveitem PROTEIN, 1
+	verbosegiveitem PROTEIN
 	iffalse UnknownScript_0x5b06f
 	clearevent EVENT_HUEY_PROTEIN
 	setevent EVENT_GOT_PROTEIN_FROM_HUEY
--- a/maps/OlivineLighthouse3F.asm
+++ b/maps/OlivineLighthouse3F.asm
@@ -133,4 +133,4 @@
 	person_event SPRITE_SAILOR, 2, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerSailorTerrell, -1
 	person_event SPRITE_GENTLEMAN, 5, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerGentlemanPreston, -1
 	person_event SPRITE_YOUNGSTER, 9, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperTheo, -1
-	person_event SPRITE_POKE_BALL, 2, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5b279, EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
+	person_event SPRITE_POKE_BALL, 2, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5b279, EVENT_OLIVINE_LIGHTHOUSE_3F_ETHER
--- a/maps/OlivineLighthouse5F.asm
+++ b/maps/OlivineLighthouse5F.asm
@@ -107,8 +107,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_SAILOR, 11, 8, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSailorErnest, -1
+	person_event SPRITE_SAILOR, 11, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSailorErnest, -1
 	person_event SPRITE_YOUNGSTER, 3, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerBird_keeperDenis, -1
-	person_event SPRITE_POKE_BALL, 12, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x609aa, EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
-	person_event SPRITE_POKE_BALL, 15, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x609ac, EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
-	person_event SPRITE_POKE_BALL, 13, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x609ae, EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
+	person_event SPRITE_POKE_BALL, 12, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x609aa, EVENT_OLIVINE_LIGHTHOUSE_5F_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 15, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x609ac, EVENT_OLIVINE_LIGHTHOUSE_5F_SUPER_REPEL
+	person_event SPRITE_POKE_BALL, 13, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x609ae, EVENT_OLIVINE_LIGHTHOUSE_5F_TM_SWAGGER
--- a/maps/OlivineLighthouse6F.asm
+++ b/maps/OlivineLighthouse6F.asm
@@ -27,7 +27,7 @@
 	iffalse UnknownScript_0x60c25
 	writetext UnknownText_0x60dc3
 	keeptextopen
-	takeitem SECRETPOTION, 1
+	takeitem SECRETPOTION
 	writetext UnknownText_0x60dea
 	closetext
 	loadmovesprites
@@ -42,9 +42,9 @@
 	loadmovesprites
 	special RestartMapMusic
 	cry AMPHAROS
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	pause 10
-	special FadeInBGMap
+	special FadeInPalettes
 	loadfont
 	writetext UnknownText_0x60f3d
 	closetext
@@ -116,10 +116,10 @@
 	cry AMPHAROS
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
-	special FadeInBGMap
-	special FadeBlackBGMap
-	special FadeInBGMap
+	special FadeOutPalettes
+	special FadeInPalettes
+	special FadeOutPalettes
+	special FadeInPalettes
 	end
 
 ItemFragment_0x60c66:
@@ -131,8 +131,8 @@
 	slow_step_right
 	slow_step_up
 	slow_step_up
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	step_end
 
 MovementData_0x60c70:
@@ -153,7 +153,7 @@
 	slow_step_up
 	slow_step_up
 	slow_step_up
-	accelerate_last
+	step_sleep_8
 	step_end
 
 UnknownText_0x60c81:
@@ -272,4 +272,4 @@
 	db 3
 	person_event SPRITE_JASMINE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, JasmineScript_0x60b91, EVENT_OLIVINE_LIGHTHOUSE_JASMINE
 	person_event SPRITE_MONSTER, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MonsterScript_0x60c3a, -1
-	person_event SPRITE_POKE_BALL, 4, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x60c66, EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
+	person_event SPRITE_POKE_BALL, 4, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x60c66, EVENT_OLIVINE_LIGHTHOUSE_6F_SUPER_POTION
--- a/maps/OlivinePort.asm
+++ b/maps/OlivinePort.asm
@@ -39,7 +39,7 @@
 	waitbutton
 	applymovement PLAYER, MovementData_0x74a30
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	checkevent EVENT_FAST_SHIP_FIRST_TIME
 	iffalse UnknownScript_0x7490a
--- a/maps/OlivinePunishmentSpeechHouse.asm
+++ b/maps/OlivinePunishmentSpeechHouse.asm
@@ -54,5 +54,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 2, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, OlivinePunishmentSpeechHouseDad, -1
+	person_event SPRITE_POKEFAN_M, 2, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, OlivinePunishmentSpeechHouseDad, -1
 	person_event SPRITE_LASS, 5, 5, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, 0, 0, OlivinePunishmentSpeechHouseDaughter, -1
--- a/maps/OlivineVoltorbHouse.asm
+++ b/maps/OlivineVoltorbHouse.asm
@@ -35,4 +35,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, Tim, -1
+	person_event SPRITE_FISHING_GURU, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, Tim, -1
--- a/maps/PalletTown.asm
+++ b/maps/PalletTown.asm
@@ -89,5 +89,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_TEACHER, 8, 3, SPRITEMOVEDATA_02, 2, 2, -1, -1, 0, 0, 0, TeacherScript_0x1ac6d5, -1
+	person_event SPRITE_TEACHER, 8, 3, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, 0, 0, TeacherScript_0x1ac6d5, -1
 	person_event SPRITE_FISHER, 14, 12, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x1ac6d8, -1
--- a/maps/PewterCity.asm
+++ b/maps/PewterCity.asm
@@ -25,7 +25,7 @@
 	iftrue UnknownScript_0x18c023
 	writetext UnknownText_0x18c0c6
 	keeptextopen
-	verbosegiveitem SILVER_WING, 1
+	verbosegiveitem SILVER_WING
 	setevent EVENT_GOT_SILVER_WING
 	loadmovesprites
 	end
@@ -174,8 +174,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_COOLTRAINER_F, 11, 19, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x18c009, -1
-	person_event SPRITE_BUG_CATCHER, 29, 14, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, BugCatcherScript_0x18c00c, -1
+	person_event SPRITE_COOLTRAINER_F, 11, 19, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x18c009, -1
+	person_event SPRITE_BUG_CATCHER, 29, 14, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, BugCatcherScript_0x18c00c, -1
 	person_event SPRITE_GRAMPS, 17, 29, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrampsScript_0x18c00f, -1
-	person_event SPRITE_FRUIT_TREE, 3, 32, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x18c03e, -1
-	person_event SPRITE_FRUIT_TREE, 3, 30, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x18c040, -1
+	person_event SPRITE_FRUIT_TREE, 3, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x18c03e, -1
+	person_event SPRITE_FRUIT_TREE, 3, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x18c040, -1
--- a/maps/PewterMart.asm
+++ b/maps/PewterMart.asm
@@ -59,4 +59,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x1a2dcb, -1
 	person_event SPRITE_YOUNGSTER, 2, 9, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, 0, 0, YoungsterScript_0x1a2dd2, -1
-	person_event SPRITE_SUPER_NERD, 6, 6, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x1a2dd5, -1
+	person_event SPRITE_SUPER_NERD, 6, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x1a2dd5, -1
--- a/maps/PewterNidoranSpeechHouse.asm
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -42,4 +42,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_SUPER_NERD, 5, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, SuperNerdScript_0x1a2807, -1
-	person_event SPRITE_GROWLITHE, 5, 4, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrowlitheScript_0x1a280a, -1
+	person_event SPRITE_GROWLITHE, 5, 4, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrowlitheScript_0x1a280a, -1
--- a/maps/PewterPokeCenter1F.asm
+++ b/maps/PewterPokeCenter1F.asm
@@ -80,6 +80,6 @@
 	db 5
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x1a2ee7, -1
 	person_event SPRITE_TEACHER, 6, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x1a2eea, -1
-	person_event SPRITE_JIGGLYPUFF, 3, 1, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, JigglypuffScript_0x1a2eed, -1
+	person_event SPRITE_JIGGLYPUFF, 3, 1, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, JigglypuffScript_0x1a2eed, -1
 	person_event SPRITE_BUG_CATCHER, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, BugCatcherScript_0x1a2ef7, -1
 	person_event SPRITE_POKEFAN_M, 2, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanMScript_0x1a2efa, -1
--- a/maps/PokeCenter2F.asm
+++ b/maps/PokeCenter2F.asm
@@ -435,7 +435,7 @@
 	special Functionc225
 	applymovement PLAYER, MovementData_0x192d1c
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	loadfont
 	writetext Text_LikeTheLook
 	closetext
@@ -461,7 +461,7 @@
 	writebyte $90
 	special Functionc225
 	applymovement PLAYER, MovementData_0x192d1c
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	applymovement PLAYER, MovementData_0x192d2a
 	applymovement $2, MovementData_0x192cfe
 	end
@@ -483,7 +483,7 @@
 	writebyte $90
 	special Functionc225
 	applymovement PLAYER, MovementData_0x192d1c
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	applymovement PLAYER, MovementData_0x192d2a
 	applymovement $3, MovementData_0x192cfe
 	end
@@ -544,7 +544,7 @@
 	applymovement PLAYER, MovementData_0x192d22
 	faceperson PLAYER, $4
 	setflag ENGINE_KRIS_IN_CABLE_CLUB
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	loadfont
 	writetext Text_LikeTheLook
 	closetext
@@ -571,7 +571,7 @@
 	writebyte $90
 	special Functionc225
 	applymovement PLAYER, MovementData_0x192d1c
-	special Special_ReplaceKrisSprite
+	special ReplaceKrisSprite
 	applymovement PLAYER, MovementData_0x192cfc
 	applymovement $4, MovementData_0x192d01
 .Done:
--- a/maps/PokemonFanClub.asm
+++ b/maps/PokemonFanClub.asm
@@ -20,7 +20,7 @@
 UnknownScript_0x191802:
 	writetext UnknownText_0x191a3d
 	keeptextopen
-	verbosegiveitem RARE_CANDY, 1
+	verbosegiveitem RARE_CANDY
 	iffalse UnknownScript_0x19181f
 	setevent EVENT_LISTENED_TO_FAN_CLUB_PRESIDENT
 	writetext UnknownText_0x191a72
@@ -69,7 +69,7 @@
 	writetext UnknownText_0x191c5a
 	keeptextopen
 	waitbutton
-	giveitem LOST_ITEM, $1
+	giveitem LOST_ITEM
 	iffalse UnknownScript_0x191865
 	disappear $6
 	writetext UnknownText_0x191d0a
@@ -312,4 +312,4 @@
 	person_event SPRITE_FISHER, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, FisherScript_0x191824, -1
 	person_event SPRITE_TEACHER, 2, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, TeacherScript_0x19186b, -1
 	person_event SPRITE_FAIRY, 4, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, FairyScript_0x19186e, EVENT_VERMILION_FAN_CLUB_DOLL
-	person_event SPRITE_ODDISH, 3, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OddishScript_0x191871, -1
+	person_event SPRITE_ODDISH, 3, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OddishScript_0x191871, -1
--- a/maps/PowerPlant.asm
+++ b/maps/PowerPlant.asm
@@ -154,7 +154,7 @@
 UnknownScript_0x188e93:
 	writetext UnknownText_0x18936e
 	keeptextopen
-	takeitem MACHINE_PART, 1
+	takeitem MACHINE_PART
 	setevent EVENT_RETURNED_MACHINE_PART
 	clearevent EVENT_SAFFRON_TRAIN_STATION_POPULATION
 	setevent EVENT_ROUTE_5_6_POKEFAN_M_BLOCKS_UNDERGROUND_PATH
@@ -166,7 +166,7 @@
 	iftrue UnknownScript_0x188ec5
 	writetext UnknownText_0x1893c4
 	keeptextopen
-	verbosegiveitem TM_ZAP_CANNON, 1
+	verbosegiveitem TM_ZAP_CANNON
 	iffalse UnknownScript_0x188ec3
 	setevent EVENT_GOT_TM07_ZAP_CANNON
 	writetext UnknownText_0x1893f4
@@ -402,7 +402,7 @@
 .PersonEvents:
 	db 7
 	person_event SPRITE_OFFICER, 14, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OfficerScript_0x188df5, -1
-	person_event SPRITE_GYM_GUY, 9, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GymGuyScript_0x188e15, -1
+	person_event SPRITE_GYM_GUY, 9, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GymGuyScript_0x188e15, -1
 	person_event SPRITE_GYM_GUY, 11, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GymGuyScript_0x188e29, -1
 	person_event SPRITE_OFFICER, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OfficerScript_0x188e3d, -1
 	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GymGuyScript_0x188e51, -1
--- a/maps/RadioTower1F.asm
+++ b/maps/RadioTower1F.asm
@@ -65,7 +65,7 @@
 	playsound SFX_1ST_PLACE
 	waitbutton
 	keeptextopen
-	giveitem MASTER_BALL, 1
+	giveitem MASTER_BALL
 	iffalse .BagFull
 	itemnotify
 	setflag ENGINE_LUCKY_NUMBER_SHOW
@@ -76,7 +76,7 @@
 	playsound SFX_2ND_PLACE
 	waitbutton
 	keeptextopen
-	giveitem EXP_SHARE, 1
+	giveitem EXP_SHARE
 	iffalse .BagFull
 	itemnotify
 	setflag ENGINE_LUCKY_NUMBER_SHOW
@@ -87,7 +87,7 @@
 	playsound SFX_3RD_PLACE
 	waitbutton
 	keeptextopen
-	giveitem PP_UP, 1
+	giveitem PP_UP
 	iffalse .BagFull
 	itemnotify
 	setflag ENGINE_LUCKY_NUMBER_SHOW
--- a/maps/RadioTower2F.asm
+++ b/maps/RadioTower2F.asm
@@ -151,7 +151,7 @@
 	writetext UnknownText_0x5dcf4
 	keeptextopen
 	setevent EVENT_MET_BUENA
-	verbosegiveitem BLUE_CARD, 1
+	verbosegiveitem BLUE_CARD
 UnknownScript_0x5d80a:
 	writetext UnknownText_0x5de10
 	closetext
@@ -728,6 +728,6 @@
 	person_event SPRITE_ROCKET_GIRL, 5, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerGruntF2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_BLACK_BELT, 1, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, BlackBeltScript_0x5d71f, EVENT_RADIO_TOWER_BLACKBELT_BLOCKS_STAIRS
 	person_event SPRITE_BLACK_BELT, 1, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, BlackBeltScript_0x5d722, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_JIGGLYPUFF, 1, 12, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, JigglypuffScript_0x5d715, -1
+	person_event SPRITE_JIGGLYPUFF, 1, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, JigglypuffScript_0x5d715, -1
 	person_event SPRITE_BUENA, 5, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, Buena, -1
 	person_event SPRITE_RECEPTIONIST, 7, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, ReceptionistScript_0x5d8ff, EVENT_GOLDENROD_CITY_CIVILIANS
--- a/maps/RadioTower3F.asm
+++ b/maps/RadioTower3F.asm
@@ -61,7 +61,7 @@
 UnknownScript_0x5e58a:
 	writetext UnknownText_0x5e7e2
 	keeptextopen
-	verbosegiveitem TM_SUNNY_DAY, 1
+	verbosegiveitem TM_SUNNY_DAY
 	iffalse UnknownScript_0x5e5a1
 	writetext UnknownText_0x5e821
 	closetext
@@ -344,8 +344,8 @@
 .PersonEvents:
 	db 7
 	person_event SPRITE_SUPER_NERD, 4, 7, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x5e553, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GymGuyScript_0x5e556, -1
-	person_event SPRITE_COOLTRAINER_F, 3, 11, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x5e56a, -1
+	person_event SPRITE_GYM_GUY, 4, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GymGuyScript_0x5e556, -1
+	person_event SPRITE_COOLTRAINER_F, 3, 11, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x5e56a, -1
 	person_event SPRITE_ROCKET, 1, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 2, 2, TrainerGruntM7, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 2, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM8, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 6, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM9, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
--- a/maps/RadioTower4F.asm
+++ b/maps/RadioTower4F.asm
@@ -23,7 +23,7 @@
 UnknownScript_0x5eb99:
 	writetext UnknownText_0x5ecab
 	keeptextopen
-	verbosegiveitem PINK_BOW, 1
+	verbosegiveitem PINK_BOW
 	iffalse UnknownScript_0x5ebb0
 	writetext UnknownText_0x5ecef
 	closetext
@@ -258,9 +258,9 @@
 .PersonEvents:
 	db 7
 	person_event SPRITE_FISHER, 4, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, FisherScript_0x5eb82, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_TEACHER, 6, 14, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x5eb85, -1
-	person_event SPRITE_GROWLITHE, 7, 12, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GrowlitheScript_0x5ebb2, -1
-	person_event SPRITE_ROCKET, 6, 5, SPRITEMOVEDATA_1F, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM10, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_TEACHER, 6, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x5eb85, -1
+	person_event SPRITE_GROWLITHE, 7, 12, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GrowlitheScript_0x5ebb2, -1
+	person_event SPRITE_ROCKET, 6, 5, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM10, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 1, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 2, -1, -1, 0, 2, 2, TrainerExecutivem2, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET_GIRL, 4, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerGruntF4, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_SCIENTIST, 2, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerScientistRich, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
--- a/maps/RadioTower5F.asm
+++ b/maps/RadioTower5F.asm
@@ -40,7 +40,7 @@
 	loadfont
 	writetext UnknownText_0x60246
 	keeptextopen
-	verbosegiveitem BASEMENT_KEY, 1
+	verbosegiveitem BASEMENT_KEY
 	loadmovesprites
 	dotrigger $1
 	setevent EVENT_BEAT_ROCKET_EXECUTIVEM_3
@@ -117,7 +117,7 @@
 	loadfont
 	writetext UnknownText_0x605b2
 	keeptextopen
-	verbosegiveitem CLEAR_BELL, 1
+	verbosegiveitem CLEAR_BELL
 	writetext UnknownText_0x6062c
 	closetext
 	loadmovesprites
@@ -439,8 +439,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_GENTLEMAN, 6, 3, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, Director, -1
+	person_event SPRITE_GENTLEMAN, 6, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, Director, -1
 	person_event SPRITE_ROCKET, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET_GIRL, 2, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerExecutivef1, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKER, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, Ben, EVENT_RADIO_TOWER_CIVILIANS_AFTER
-	person_event SPRITE_POKE_BALL, 5, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x600fe, EVENT_RADIO_TOWER_5F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 5, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x600fe, EVENT_RADIO_TOWER_5F_ULTRA_BALL
--- a/maps/RockTunnel1F.asm
+++ b/maps/RockTunnel1F.asm
@@ -42,5 +42,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 18, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x743b5, EVENT_ROCK_TUNNEL_1F_ELIXER
-	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x743b7, EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
+	person_event SPRITE_POKE_BALL, 18, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x743b5, EVENT_ROCK_TUNNEL_1F_ELIXER
+	person_event SPRITE_POKE_BALL, 15, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x743b7, EVENT_ROCK_TUNNEL_1F_TM_STEEL_WING
--- a/maps/RockTunnelB1F.asm
+++ b/maps/RockTunnelB1F.asm
@@ -38,6 +38,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x74409, EVENT_ROCK_TUNNEL_B1F_IRON
-	person_event SPRITE_POKE_BALL, 17, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7440b, EVENT_ROCK_TUNNEL_B1F_PP_UP
-	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7440d, EVENT_ROCK_TUNNEL_B1F_REVIVE
+	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x74409, EVENT_ROCK_TUNNEL_B1F_IRON
+	person_event SPRITE_POKE_BALL, 17, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7440b, EVENT_ROCK_TUNNEL_B1F_PP_UP
+	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7440d, EVENT_ROCK_TUNNEL_B1F_REVIVE
--- a/maps/Route1.asm
+++ b/maps/Route1.asm
@@ -92,5 +92,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_YOUNGSTER, 12, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerSchoolboyDanny, -1
-	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainerfQuinn, -1
-	person_event SPRITE_FRUIT_TREE, 7, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1ac581, -1
+	person_event SPRITE_COOLTRAINER_F, 25, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainerfQuinn, -1
+	person_event SPRITE_FRUIT_TREE, 7, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1ac581, -1
--- a/maps/Route10PokeCenter1F.asm
+++ b/maps/Route10PokeCenter1F.asm
@@ -94,5 +94,5 @@
 	db 4
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x188bd4, -1
 	person_event SPRITE_GENTLEMAN, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, GentlemanScript_0x188bd7, -1
-	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GymGuyScript_0x188bda, -1
+	person_event SPRITE_GYM_GUY, 2, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GymGuyScript_0x188bda, -1
 	person_event SPRITE_COOLTRAINER_F, 3, 1, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, CooltrainerFScript_0x188bee, -1
--- a/maps/Route10South.asm
+++ b/maps/Route10South.asm
@@ -89,4 +89,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_POKEFAN_M, 3, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerJim, -1
-	person_event SPRITE_POKEFAN_M, 10, 8, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmRobert, -1
+	person_event SPRITE_POKEFAN_M, 10, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmRobert, -1
--- a/maps/Route11.asm
+++ b/maps/Route11.asm
@@ -156,8 +156,8 @@
 
 .PersonEvents:
 	db 5
-	person_event SPRITE_YOUNGSTER, 14, 22, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterOwen, -1
+	person_event SPRITE_YOUNGSTER, 14, 22, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterOwen, -1
 	person_event SPRITE_YOUNGSTER, 4, 20, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterJason, -1
 	person_event SPRITE_YOUNGSTER, 7, 28, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerPsychicHerman, -1
-	person_event SPRITE_YOUNGSTER, 6, 8, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicFidel, -1
-	person_event SPRITE_FRUIT_TREE, 2, 32, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x68055, -1
+	person_event SPRITE_YOUNGSTER, 6, 8, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicFidel, -1
+	person_event SPRITE_FRUIT_TREE, 2, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x68055, -1
--- a/maps/Route12.asm
+++ b/maps/Route12.asm
@@ -178,9 +178,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_FISHER, 13, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherMartin, -1
+	person_event SPRITE_FISHER, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherMartin, -1
 	person_event SPRITE_FISHER, 23, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherStephen, -1
 	person_event SPRITE_FISHER, 38, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 5, TrainerFisherBarney, -1
 	person_event SPRITE_FISHER, 7, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerFisherKyle, -1
-	person_event SPRITE_POKE_BALL, 43, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a700b, EVENT_ROUTE_12_CALCIUM
-	person_event SPRITE_POKE_BALL, 51, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a700d, EVENT_ROUTE_12_NUGGET
+	person_event SPRITE_POKE_BALL, 43, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a700b, EVENT_ROUTE_12_CALCIUM
+	person_event SPRITE_POKE_BALL, 51, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a700d, EVENT_ROUTE_12_NUGGET
--- a/maps/Route12SuperRodHouse.asm
+++ b/maps/Route12SuperRodHouse.asm
@@ -15,7 +15,7 @@
 	iffalse UnknownScript_0x7f4a6
 	writetext UnknownText_0x7f52f
 	keeptextopen
-	verbosegiveitem SUPER_ROD, 1
+	verbosegiveitem SUPER_ROD
 	iffalse UnknownScript_0x7f4aa
 	setevent EVENT_GOT_SUPER_ROD
 UnknownScript_0x7f4a0:
--- a/maps/Route14.asm
+++ b/maps/Route14.asm
@@ -125,6 +125,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_POKEFAN_M, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmCarter, -1
-	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperRoy, -1
-	person_event SPRITE_POKEFAN_M, 11, 6, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmTrevor, -1
+	person_event SPRITE_YOUNGSTER, 27, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperRoy, -1
+	person_event SPRITE_POKEFAN_M, 11, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmTrevor, -1
 	person_event SPRITE_TEACHER, 5, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 4, TeacherScript_0x1ad47f, -1
--- a/maps/Route15.asm
+++ b/maps/Route15.asm
@@ -215,5 +215,5 @@
 	person_event SPRITE_YOUNGSTER, 10, 33, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSchoolboyJohnny, -1
 	person_event SPRITE_YOUNGSTER, 10, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSchoolboyBilly, -1
 	person_event SPRITE_TEACHER, 12, 30, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerTeacherColette, -1
-	person_event SPRITE_TEACHER, 10, 20, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerTeacherHillary, -1
-	person_event SPRITE_POKE_BALL, 5, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1aa5e4, EVENT_ROUTE_15_PP_UP
+	person_event SPRITE_TEACHER, 10, 20, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerTeacherHillary, -1
+	person_event SPRITE_POKE_BALL, 5, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1aa5e4, EVENT_ROUTE_15_PP_UP
--- a/maps/Route17.asm
+++ b/maps/Route17.asm
@@ -150,7 +150,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_BIKER, 17, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 4, TrainerBikerRiley, -1
+	person_event SPRITE_BIKER, 17, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 4, TrainerBikerRiley, -1
 	person_event SPRITE_BIKER, 68, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 1, TrainerBikerJoel, -1
-	person_event SPRITE_BIKER, 53, 3, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBikerGlenn, -1
+	person_event SPRITE_BIKER, 53, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBikerGlenn, -1
 	person_event SPRITE_BIKER, 80, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 4, TrainerBikerCharles, -1
--- a/maps/Route18.asm
+++ b/maps/Route18.asm
@@ -91,5 +91,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_YOUNGSTER, 12, 9, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperBoris, -1
+	person_event SPRITE_YOUNGSTER, 12, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperBoris, -1
 	person_event SPRITE_YOUNGSTER, 6, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperBob, -1
--- a/maps/Route19.asm
+++ b/maps/Route19.asm
@@ -248,8 +248,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_SWIMMER_GIRL, 23, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 0, TrainerSwimmerfDawn, -1
-	person_event SPRITE_SWIMMER_GUY, 28, 13, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermHarold, -1
-	person_event SPRITE_SWIMMER_GUY, 17, 11, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermJerome, -1
+	person_event SPRITE_SWIMMER_GUY, 28, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermHarold, -1
+	person_event SPRITE_SWIMMER_GUY, 17, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermJerome, -1
 	person_event SPRITE_SWIMMER_GUY, 23, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 0, TrainerSwimmermTucker, -1
 	person_event SPRITE_FISHER, 5, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 1, FisherScript_0x19ea4d, -1
 	person_event SPRITE_FISHER, 5, 11, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 1, FisherScript_0x19ea61, -1
--- a/maps/Route2.asm
+++ b/maps/Route2.asm
@@ -163,10 +163,10 @@
 .PersonEvents:
 	db 8
 	person_event SPRITE_BUG_CATCHER, 45, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 5, TrainerBug_catcherRob, -1
-	person_event SPRITE_BUG_CATCHER, 4, 6, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBug_catcherEd, -1
+	person_event SPRITE_BUG_CATCHER, 4, 6, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBug_catcherEd, -1
 	person_event SPRITE_BUG_CATCHER, 40, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBug_catcherDoug, -1
-	person_event SPRITE_POKE_BALL, 29, 0, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac2fe, EVENT_ROUTE_2_DIRE_HIT
-	person_event SPRITE_POKE_BALL, 23, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac300, EVENT_ROUTE_2_MAX_POTION
-	person_event SPRITE_POKE_BALL, 2, 19, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac302, EVENT_ROUTE_2_CARBOS
-	person_event SPRITE_POKE_BALL, 50, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac304, EVENT_ROUTE_2_ELIXER
-	person_event SPRITE_FRUIT_TREE, 14, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1ac306, -1
+	person_event SPRITE_POKE_BALL, 29, 0, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac2fe, EVENT_ROUTE_2_DIRE_HIT
+	person_event SPRITE_POKE_BALL, 23, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac300, EVENT_ROUTE_2_MAX_POTION
+	person_event SPRITE_POKE_BALL, 2, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac302, EVENT_ROUTE_2_CARBOS
+	person_event SPRITE_POKE_BALL, 50, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ac304, EVENT_ROUTE_2_ELIXER
+	person_event SPRITE_FRUIT_TREE, 14, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1ac306, -1
--- a/maps/Route20.asm
+++ b/maps/Route20.asm
@@ -127,6 +127,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 8, 52, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfNicole, -1
-	person_event SPRITE_SWIMMER_GIRL, 13, 45, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfLori, -1
-	person_event SPRITE_SWIMMER_GUY, 13, 12, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermCameron, -1
+	person_event SPRITE_SWIMMER_GIRL, 8, 52, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfNicole, -1
+	person_event SPRITE_SWIMMER_GIRL, 13, 45, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfLori, -1
+	person_event SPRITE_SWIMMER_GUY, 13, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermCameron, -1
--- a/maps/Route21.asm
+++ b/maps/Route21.asm
@@ -99,6 +99,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SWIMMER_GIRL, 16, 11, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfNikki, -1
+	person_event SPRITE_SWIMMER_GIRL, 16, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfNikki, -1
 	person_event SPRITE_SWIMMER_GUY, 30, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerSwimmermSeth, -1
 	person_event SPRITE_FISHER, 22, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherArnold, -1
--- a/maps/Route24.asm
+++ b/maps/Route24.asm
@@ -130,4 +130,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_ROCKET, 7, 8, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x1adbfa, EVENT_ROUTE_24_ROCKET
+	person_event SPRITE_ROCKET, 7, 8, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x1adbfa, EVENT_ROUTE_24_ROCKET
--- a/maps/Route25.asm
+++ b/maps/Route25.asm
@@ -153,7 +153,7 @@
 	iftrue UnknownScript_0x19efc7
 	writetext UnknownText_0x19f43b
 	keeptextopen
-	verbosegiveitem NUGGET, 1
+	verbosegiveitem NUGGET
 	iffalse UnknownScript_0x19efde
 	setevent EVENT_CLEARED_NUGGET_BRIDGE
 UnknownScript_0x19efc7:
@@ -449,4 +449,4 @@
 	person_event SPRITE_LASS, 11, 28, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerLassShannon, -1
 	person_event SPRITE_SUPER_NERD, 7, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 1, TrainerSupernerdPat, -1
 	person_event SPRITE_COOLTRAINER_M, 8, 37, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x19efac, -1
-	person_event SPRITE_POKE_BALL, 4, 32, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19efe3, EVENT_ROUTE_25_PROTEIN
+	person_event SPRITE_POKE_BALL, 4, 32, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19efe3, EVENT_ROUTE_25_PROTEIN
--- a/maps/Route26.asm
+++ b/maps/Route26.asm
@@ -423,9 +423,9 @@
 	db 8
 	person_event SPRITE_COOLTRAINER_M, 24, 14, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainermJake, -1
 	person_event SPRITE_COOLTRAINER_M, 38, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainermGaven3, -1
-	person_event SPRITE_COOLTRAINER_F, 56, 10, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfJoyce, -1
+	person_event SPRITE_COOLTRAINER_F, 56, 10, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfJoyce, -1
 	person_event SPRITE_COOLTRAINER_F, 8, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerCooltrainerfBeth1, -1
 	person_event SPRITE_YOUNGSTER, 79, 13, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPsychicRichard, -1
 	person_event SPRITE_FISHER, 92, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerFisherScott, -1
-	person_event SPRITE_FRUIT_TREE, 54, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a4ec2, -1
-	person_event SPRITE_POKE_BALL, 15, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a4ec4, EVENT_ROUTE_26_MAX_ELIXER
+	person_event SPRITE_FRUIT_TREE, 54, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a4ec2, -1
+	person_event SPRITE_POKE_BALL, 15, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a4ec4, EVENT_ROUTE_26_MAX_ELIXER
--- a/maps/Route26DayofWeekSiblingsHouse.asm
+++ b/maps/Route26DayofWeekSiblingsHouse.asm
@@ -84,4 +84,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKEDEX, 3, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, PokedexScript_0x7b1e4, -1
+	person_event SPRITE_POKEDEX, 3, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, PokedexScript_0x7b1e4, -1
--- a/maps/Route27.asm
+++ b/maps/Route27.asm
@@ -119,7 +119,7 @@
 
 UnknownScript_0x1a0945:
 	scall UnknownScript_0x1a0973
-	verbosegiveitem STAR_PIECE, 1
+	verbosegiveitem STAR_PIECE
 	iffalse UnknownScript_0x1a0954
 	clearflag ENGINE_JOSE_HAS_STAR_PIECE
 	jump UnknownScript_0x1a0963
@@ -482,9 +482,9 @@
 	person_event SPRITE_COOLTRAINER_M, 7, 48, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainermBlake, -1
 	person_event SPRITE_COOLTRAINER_M, 6, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerCooltrainermBrian, -1
 	person_event SPRITE_COOLTRAINER_F, 10, 72, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerCooltrainerfReena, -1
-	person_event SPRITE_COOLTRAINER_F, 6, 37, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainerfMegan, -1
+	person_event SPRITE_COOLTRAINER_F, 6, 37, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainerfMegan, -1
 	person_event SPRITE_YOUNGSTER, 7, 65, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicGilbert, -1
 	person_event SPRITE_YOUNGSTER, 13, 58, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperJose2, -1
-	person_event SPRITE_POKE_BALL, 12, 60, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a0a62, EVENT_ROUTE_27_TM_SOLARBEAM
-	person_event SPRITE_POKE_BALL, 12, 53, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a0a64, EVENT_ROUTE_27_RARE_CANDY
-	person_event SPRITE_FISHER, 10, 21, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 3, FisherScript_0x1a089c, -1
+	person_event SPRITE_POKE_BALL, 12, 60, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a0a62, EVENT_ROUTE_27_TM_SOLARBEAM
+	person_event SPRITE_POKE_BALL, 12, 53, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a0a64, EVENT_ROUTE_27_RARE_CANDY
+	person_event SPRITE_FISHER, 10, 21, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 3, FisherScript_0x1a089c, -1
--- a/maps/Route27SandstormHouse.asm
+++ b/maps/Route27SandstormHouse.asm
@@ -19,7 +19,7 @@
 .Loyal
 	writetext SandstormHouseWomanLoyalText
 	keeptextopen
-	verbosegiveitem TM_SANDSTORM, 1
+	verbosegiveitem TM_SANDSTORM
 	iffalse .Done
 	setevent EVENT_GOT_TM37_SANDSTORM
 .AlreadyGotItem
--- a/maps/Route28FamousSpeechHouse.asm
+++ b/maps/Route28FamousSpeechHouse.asm
@@ -18,7 +18,7 @@
 	iftrue .AlreadyGotItem
 	writetext CelebrityText1
 	keeptextopen
-	verbosegiveitem TM_STEEL_WING, 1
+	verbosegiveitem TM_STEEL_WING
 	iffalse .Done
 	setevent EVENT_GOT_TM47_STEEL_WING
 .Done
@@ -88,4 +88,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_COOLTRAINER_F, 3, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, Celebrity, -1
-	person_event SPRITE_MOLTRES, 5, 6, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CelebritysFearow, -1
+	person_event SPRITE_MOLTRES, 5, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CelebritysFearow, -1
--- a/maps/Route29.asm
+++ b/maps/Route29.asm
@@ -176,7 +176,7 @@
 .MetTuscany
 	writetext TuscanyGivesGiftText
 	keeptextopen
-	verbosegiveitem PINK_BOW, 1
+	verbosegiveitem PINK_BOW
 	iffalse TuscanyDoneScript
 	setevent EVENT_GOT_PINK_BOW_FROM_TUSCANY
 	writetext TuscanyGaveGiftText
@@ -430,11 +430,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_COOLTRAINER_M, 12, 50, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x1a0ff1, -1
+	person_event SPRITE_COOLTRAINER_M, 12, 50, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x1a0ff1, -1
 	person_event SPRITE_YOUNGSTER, 16, 27, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1a1028, -1
 	person_event SPRITE_TEACHER, 11, 15, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x1a102b, -1
-	person_event SPRITE_FRUIT_TREE, 2, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a1089, -1
+	person_event SPRITE_FRUIT_TREE, 2, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a1089, -1
 	person_event SPRITE_FISHER, 3, 25, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, FisherScript_0x1a102e, -1
 	person_event SPRITE_COOLTRAINER_M, 4, 13, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x1a1031, -1
-	person_event SPRITE_TEACHER, 12, 29, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, TuscanyScript, EVENT_ROUTE_29_TUSCANY_OF_TUESDAY
-	person_event SPRITE_POKE_BALL, 2, 48, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a108b, EVENT_ROUTE_29_POTION
+	person_event SPRITE_TEACHER, 12, 29, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, TuscanyScript, EVENT_ROUTE_29_TUSCANY_OF_TUESDAY
+	person_event SPRITE_POKE_BALL, 2, 48, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a108b, EVENT_ROUTE_29_POTION
--- a/maps/Route2NuggetSpeechHouse.asm
+++ b/maps/Route2NuggetSpeechHouse.asm
@@ -12,7 +12,7 @@
 	iftrue .GotItem
 	writetext UnknownText_0x9b865
 	keeptextopen
-	verbosegiveitem NUGGET, 1
+	verbosegiveitem NUGGET
 	iffalse .Done
 	setevent EVENT_GOT_NUGGET_FROM_GUY
 .GotItem
--- a/maps/Route3.asm
+++ b/maps/Route3.asm
@@ -145,5 +145,5 @@
 	db 4
 	person_event SPRITE_FISHER, 12, 26, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerFirebreatherOtis, -1
 	person_event SPRITE_YOUNGSTER, 7, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterWarren, -1
-	person_event SPRITE_YOUNGSTER, 3, 16, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerYoungsterJimmy, -1
-	person_event SPRITE_FISHER, 5, 49, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerFirebreatherBurt, -1
+	person_event SPRITE_YOUNGSTER, 3, 16, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerYoungsterJimmy, -1
+	person_event SPRITE_FISHER, 5, 49, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerFirebreatherBurt, -1
--- a/maps/Route30.asm
+++ b/maps/Route30.asm
@@ -117,7 +117,7 @@
 	checkevent EVENT_GOT_HP_UP_FROM_JOEY
 	iftrue UnknownScript_0x1a176e
 	scall UnknownScript_0x1a17a6
-	verbosegiveitem HP_UP, 1
+	verbosegiveitem HP_UP
 	iffalse UnknownScript_0x1a179f
 	setevent EVENT_GOT_HP_UP_FROM_JOEY
 	jump UnknownScript_0x1a178f
@@ -129,7 +129,7 @@
 	loadfont
 	writetext UnknownText_0x1a1bc0
 	closetext
-	verbosegiveitem HP_UP, 1
+	verbosegiveitem HP_UP
 	iffalse UnknownScript_0x1a179f
 	clearevent EVENT_JOEY_HP_UP
 	setevent EVENT_GOT_HP_UP_FROM_JOEY
@@ -423,7 +423,7 @@
 	person_event SPRITE_YOUNGSTER, 30, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x1a17d2, -1
 	person_event SPRITE_MONSTER, 24, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
 	person_event SPRITE_MONSTER, 25, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_ROUTE_30_BATTLE
-	person_event SPRITE_FRUIT_TREE, 39, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a17f7, -1
-	person_event SPRITE_FRUIT_TREE, 5, 11, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a17f9, -1
+	person_event SPRITE_FRUIT_TREE, 39, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a17f7, -1
+	person_event SPRITE_FRUIT_TREE, 5, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a17f9, -1
 	person_event SPRITE_COOLTRAINER_F, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, CooltrainerFScript_0x1a17e6, -1
-	person_event SPRITE_POKE_BALL, 35, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a17f5, EVENT_ROUTE_30_ANTIDOTE
+	person_event SPRITE_POKE_BALL, 35, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a17f5, EVENT_ROUTE_30_ANTIDOTE
--- a/maps/Route30BerrySpeechHouse.asm
+++ b/maps/Route30BerrySpeechHouse.asm
@@ -12,7 +12,7 @@
 	iftrue UnknownScript_0x196d79
 	writetext UnknownText_0x196d82
 	keeptextopen
-	verbosegiveitem BERRY, 1
+	verbosegiveitem BERRY
 	iffalse UnknownScript_0x196d7d
 	setevent EVENT_GOT_BERRY_FROM_ROUTE_30_HOUSE
 UnknownScript_0x196d79:
--- a/maps/Route31.asm
+++ b/maps/Route31.asm
@@ -120,19 +120,19 @@
 	checkevent EVENT_WADE_HAS_BITTER_BERRY
 	iftrue .BitterBerry
 .Berry
-	verbosegiveitem BERRY, 1
+	verbosegiveitem BERRY
 	iffalse .PackFull
 	jump .Done
 .Psncureberry
-	verbosegiveitem PSNCUREBERRY, 1
+	verbosegiveitem PSNCUREBERRY
 	iffalse .PackFull
 	jump .Done
 .Przcureberry
-	verbosegiveitem PRZCUREBERRY, 1
+	verbosegiveitem PRZCUREBERRY
 	iffalse .PackFull
 	jump .Done
 .BitterBerry
-	verbosegiveitem BITTER_BERRY, 1
+	verbosegiveitem BITTER_BERRY
 	iffalse .PackFull
 .Done
 	clearflag ENGINE_WADE_HAS_ITEM
@@ -201,7 +201,7 @@
 	writetext UnknownText_0x1a57ba
 	keeptextopen
 	setevent EVENT_GAVE_KENYA
-	verbosegiveitem TM_NIGHTMARE, 1
+	verbosegiveitem TM_NIGHTMARE
 	iffalse UnknownScript_0x1a55b3
 	setevent EVENT_GOT_TM50_NIGHTMARE
 UnknownScript_0x1a55af:
@@ -431,9 +431,9 @@
 .PersonEvents:
 	db 7
 	person_event SPRITE_FISHER, 7, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, FisherScript_0x1a5570, -1
-	person_event SPRITE_YOUNGSTER, 5, 9, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, YoungsterScript_0x1a55ed, -1
+	person_event SPRITE_YOUNGSTER, 5, 9, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, YoungsterScript_0x1a55ed, -1
 	person_event SPRITE_BUG_CATCHER, 13, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 5, TrainerBug_catcherWade1, -1
-	person_event SPRITE_COOLTRAINER_M, 8, 33, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, CooltrainerMScript_0x1a55f6, -1
-	person_event SPRITE_FRUIT_TREE, 7, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a55f9, -1
-	person_event SPRITE_POKE_BALL, 5, 29, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a55fb, EVENT_ROUTE_31_POTION
-	person_event SPRITE_POKE_BALL, 15, 19, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a55fd, EVENT_ROUTE_31_POKE_BALL
+	person_event SPRITE_COOLTRAINER_M, 8, 33, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, CooltrainerMScript_0x1a55f6, -1
+	person_event SPRITE_FRUIT_TREE, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a55f9, -1
+	person_event SPRITE_POKE_BALL, 5, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a55fb, EVENT_ROUTE_31_POTION
+	person_event SPRITE_POKE_BALL, 15, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a55fd, EVENT_ROUTE_31_POKE_BALL
--- a/maps/Route31VioletGate.asm
+++ b/maps/Route31VioletGate.asm
@@ -43,4 +43,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_OFFICER, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, OfficerScript_0x197634, -1
-	person_event SPRITE_COOLTRAINER_F, 2, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CooltrainerFScript_0x197637, -1
+	person_event SPRITE_COOLTRAINER_F, 2, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, CooltrainerFScript_0x197637, -1
--- a/maps/Route32.asm
+++ b/maps/Route32.asm
@@ -57,7 +57,7 @@
 UnknownScript_0x19048f:
 	writetext UnknownText_0x190925
 	keeptextopen
-	verbosegiveitem MIRACLE_SEED, 1
+	verbosegiveitem MIRACLE_SEED
 	iffalse UnknownScript_0x1904a9
 	setevent EVENT_GOT_MIRACLE_SEED_IN_ROUTE_32
 	jump UnknownScript_0x1904a5
@@ -98,7 +98,7 @@
 	iftrue UnknownScript_0x1904e3
 	writetext UnknownText_0x191133
 	keeptextopen
-	verbosegiveitem TM_ROAR, 1
+	verbosegiveitem TM_ROAR
 	iffalse UnknownScript_0x1904e7
 	setevent EVENT_GOT_TM05_ROAR
 UnknownScript_0x1904e3:
@@ -455,7 +455,7 @@
 .MetFrieda
 	writetext FriedaGivesGiftText
 	keeptextopen
-	verbosegiveitem POISON_BARB, 1
+	verbosegiveitem POISON_BARB
 	iffalse FriedaDoneScript
 	setevent EVENT_GOT_POISON_BARB_FROM_FRIEDA
 	writetext FriedaGaveGiftText
@@ -950,13 +950,13 @@
 	person_event SPRITE_FISHER, 56, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerFisherRalph1, -1
 	person_event SPRITE_FISHER, 48, 6, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherHenry, -1
 	person_event SPRITE_YOUNGSTER, 22, 12, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterAlbert, -1
-	person_event SPRITE_YOUNGSTER, 63, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterGordon, -1
+	person_event SPRITE_YOUNGSTER, 63, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterGordon, -1
 	person_event SPRITE_YOUNGSTER, 45, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerCamperRoland, -1
 	person_event SPRITE_LASS, 30, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerPicnickerLiz1, -1
 	person_event SPRITE_COOLTRAINER_M, 8, 19, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, CooltrainerMScript_0x19046f, -1
 	person_event SPRITE_YOUNGSTER, 82, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperPeter, -1
 	person_event SPRITE_FISHER, 70, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, FisherScript_0x1904f2, EVENT_SLOWPOKE_WELL_ROCKETS
-	person_event SPRITE_POKE_BALL, 53, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x190773, EVENT_ROUTE_32_GREAT_BALL
+	person_event SPRITE_POKE_BALL, 53, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x190773, EVENT_ROUTE_32_GREAT_BALL
 	person_event SPRITE_FISHER, 13, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, FisherScript_0x1904ce, -1
 	person_event SPRITE_LASS, 67, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, FriedaScript, EVENT_ROUTE_32_FRIEDA_OF_FRIDAY
-	person_event SPRITE_POKE_BALL, 30, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x190775, EVENT_ROUTE_32_REPEL
+	person_event SPRITE_POKE_BALL, 30, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x190775, EVENT_ROUTE_32_REPEL
--- a/maps/Route32PokeCenter1F.asm
+++ b/maps/Route32PokeCenter1F.asm
@@ -18,7 +18,7 @@
 	iffalse UnknownScript_0x69b74
 	writetext UnknownText_0x69be8
 	keeptextopen
-	verbosegiveitem OLD_ROD, 1
+	verbosegiveitem OLD_ROD
 	writetext UnknownText_0x69c1b
 	closetext
 	loadmovesprites
--- a/maps/Route33.asm
+++ b/maps/Route33.asm
@@ -206,6 +206,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKEFAN_M, 13, 6, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerAnthony, -1
-	person_event SPRITE_LASS, 16, 13, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LassScript_0x1ac002, -1
-	person_event SPRITE_FRUIT_TREE, 16, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1ac0ea, -1
+	person_event SPRITE_POKEFAN_M, 13, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerAnthony, -1
+	person_event SPRITE_LASS, 16, 13, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LassScript_0x1ac002, -1
+	person_event SPRITE_FRUIT_TREE, 16, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1ac0ea, -1
--- a/maps/Route34.asm
+++ b/maps/Route34.asm
@@ -293,7 +293,7 @@
 
 UnknownScript_0x78213:
 	scall UnknownScript_0x78244
-	verbosegiveitem LEAF_STONE, 1
+	verbosegiveitem LEAF_STONE
 	iffalse UnknownScript_0x78225
 	clearflag ENGINE_GINA_HAS_LEAF_STONE
 	setevent EVENT_GINA_GAVE_LEAF_STONE
@@ -450,7 +450,7 @@
 	iftrue UnknownScript_0x78319
 	writetext UnknownText_0x788e2
 	keeptextopen
-	verbosegiveitem SOFT_SAND, 1
+	verbosegiveitem SOFT_SAND
 	iffalse UnknownScript_0x7831d
 	setevent EVENT_GOT_SOFT_SAND_FROM_KATE
 UnknownScript_0x78319:
@@ -780,11 +780,11 @@
 	person_event SPRITE_YOUNGSTER, 20, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerYoungsterIan, -1
 	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerPicnickerGina1, -1
 	person_event SPRITE_OFFICER, 11, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, OfficerScript_0x7824c, -1
-	person_event SPRITE_POKEFAN_M, 28, 18, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmBrandon, -1
+	person_event SPRITE_POKEFAN_M, 28, 18, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerPokefanmBrandon, -1
 	person_event SPRITE_GRAMPS, 16, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, GrampsScript_0x7803d, EVENT_DAYCARE_MAN_ON_ROUTE_34
-	person_event SPRITE_DAYCARE_MON_1, 18, 14, SPRITEMOVEDATA_16, 2, 2, -1, -1, 0, 0, 0, DaycareMon1Script_0x78065, EVENT_DAYCARE_MON_1
-	person_event SPRITE_DAYCARE_MON_2, 19, 17, SPRITEMOVEDATA_16, 2, 2, -1, -1, 0, 0, 0, DaycareMon2Script_0x7806b, EVENT_DAYCARE_MON_2
+	person_event SPRITE_DAYCARE_MON_1, 18, 14, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, 0, 0, DaycareMon1Script_0x78065, EVENT_DAYCARE_MON_1
+	person_event SPRITE_DAYCARE_MON_2, 19, 17, SPRITEMOVEDATA_POKEMON, 2, 2, -1, -1, 0, 0, 0, DaycareMon2Script_0x7806b, EVENT_DAYCARE_MON_2
 	person_event SPRITE_COOLTRAINER_F, 48, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 5, TrainerCooltrainerfIrene, -1
 	person_event SPRITE_COOLTRAINER_F, 48, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfJenn, -1
 	person_event SPRITE_COOLTRAINER_F, 51, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerCooltrainerfKate, -1
-	person_event SPRITE_POKE_BALL, 30, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7832b, EVENT_ROUTE_34_NUGGET
+	person_event SPRITE_POKE_BALL, 30, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7832b, EVENT_ROUTE_34_NUGGET
--- a/maps/Route34IlexForestGate.asm
+++ b/maps/Route34IlexForestGate.asm
@@ -48,7 +48,7 @@
 	iftrue UnknownScript_0x62d7e
 	writetext UnknownText_0x62d9d
 	keeptextopen
-	verbosegiveitem TM_SWEET_SCENT, 1
+	verbosegiveitem TM_SWEET_SCENT
 	iffalse UnknownScript_0x62d82
 	setevent EVENT_GOT_TM12_SWEET_SCENT
 UnknownScript_0x62d7e:
@@ -153,6 +153,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_TEACHER, 3, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
-	person_event SPRITE_BUTTERFREE, 4, 9, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ButterfreeScript_0x62d8a, -1
+	person_event SPRITE_BUTTERFREE, 4, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ButterfreeScript_0x62d8a, -1
 	person_event SPRITE_LASS, 4, 3, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x62d94, EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
 	person_event SPRITE_TEACHER, 7, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, TeacherScript_0x62d63, EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
--- a/maps/Route35.asm
+++ b/maps/Route35.asm
@@ -469,14 +469,14 @@
 
 .PersonEvents:
 	db 11
-	person_event SPRITE_YOUNGSTER, 19, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerCamperIvan, -1
+	person_event SPRITE_YOUNGSTER, 19, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerCamperIvan, -1
 	person_event SPRITE_YOUNGSTER, 20, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerCamperElliot, -1
 	person_event SPRITE_LASS, 20, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerPicnickerBrooke, -1
-	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerPicnickerKim, -1
+	person_event SPRITE_LASS, 26, 10, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerPicnickerKim, -1
 	person_event SPRITE_YOUNGSTER, 28, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 0, TrainerBird_keeperBryan, -1
-	person_event SPRITE_FISHER, 10, 2, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerFirebreatherWalt, -1
+	person_event SPRITE_FISHER, 10, 2, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 2, TrainerFirebreatherWalt, -1
 	person_event SPRITE_BUG_CATCHER, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerBug_catcherArnie1, -1
-	person_event SPRITE_SUPER_NERD, 10, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerJugglerIrwin, -1
+	person_event SPRITE_SUPER_NERD, 10, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerJugglerIrwin, -1
 	person_event SPRITE_OFFICER, 6, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, OfficerScript_0x19ca49, -1
-	person_event SPRITE_FRUIT_TREE, 25, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19ca7e, -1
-	person_event SPRITE_POKE_BALL, 16, 13, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19ca7c, EVENT_ROUTE_35_TM_ROLLOUT
+	person_event SPRITE_FRUIT_TREE, 25, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19ca7e, -1
+	person_event SPRITE_POKE_BALL, 16, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19ca7c, EVENT_ROUTE_35_TM_ROLLOUT
--- a/maps/Route35Goldenrodgate.asm
+++ b/maps/Route35Goldenrodgate.asm
@@ -49,7 +49,7 @@
 .questcomplete:
 	writetext UnknownText_0x69f8b
 	keeptextopen
-	verbosegiveitem HP_UP, 1
+	verbosegiveitem HP_UP
 	iffalse .bagfull
 	setevent EVENT_GOT_HP_UP_FROM_RANDY
 .gothpup:
@@ -211,4 +211,4 @@
 	db 3
 	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, OfficerScript_0x69d37, -1
 	person_event SPRITE_POKEFAN_F, 4, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, PokefanFScript_0x69dc6, -1
-	person_event SPRITE_FISHER, 2, 3, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x69dda, -1
+	person_event SPRITE_FISHER, 2, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x69dda, -1
--- a/maps/Route35NationalParkgate.asm
+++ b/maps/Route35NationalParkgate.asm
@@ -75,9 +75,9 @@
 	loadmovesprites
 	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
-	warpfacing $1, NATIONAL_PARK_BUG_CONTEST, $a, $2f
+	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
 
 OfficerScript_0x6a204:
@@ -96,7 +96,7 @@
 	iffalse Route35NationalParkgate_DeclinedToParticipate
 	checkcode VAR_PARTYCOUNT
 	if_greater_than $1, Route35NationalParkgate_LeaveTheRestBehind
-	special CheckFirstMonFainted
+	special ContestDropOffMons
 	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 Route35NationalParkgate_OkayToProceed:
 	setflag ENGINE_BUG_CONTEST_TIMER
@@ -112,10 +112,10 @@
 	special Special_GiveParkBalls
 	scall Route35NationalParkgate_EnterContest
 	playsound SFX_ENTER_DOOR
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	special Special_SelectRandomBugContestContestants
-	warpfacing $1, NATIONAL_PARK_BUG_CONTEST, $a, $2f
+	warpfacing UP, NATIONAL_PARK_BUG_CONTEST, $a, $2f
 	end
 
 Route35NationalParkgate_EnterContest:
@@ -140,7 +140,7 @@
 	writetext UnknownText_0x6a4c6
 	yesorno
 	iffalse Route35NationalParkgate_DeclinedToLeaveMonsBehind
-	special CheckFirstMonFainted
+	special ContestDropOffMons
 	iftrue Route35NationalParkgate_FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6a537
@@ -459,5 +459,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_OFFICER, 1, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OfficerScript_0x6a204, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
-	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x6a2d8, EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
+	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x6a2d8, EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
 	person_event SPRITE_OFFICER, 3, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, OfficerScript_0x6a2ca, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -90,7 +90,7 @@
 	disappear $4
 	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
 	special RunCallback_04
-	special Function14168
+	special RefreshSprites
 	end
 
 LassScript_0x19408c:
@@ -135,7 +135,7 @@
 UnknownScript_0x1940cd:
 	writetext UnknownText_0x1944d0
 	keeptextopen
-	verbosegiveitem TM_ROCK_SMASH, 1
+	verbosegiveitem TM_ROCK_SMASH
 	iffalse UnknownScript_0x1940de
 	setevent EVENT_GOT_TM08_ROCK_SMASH
 UnknownScript_0x1940da:
@@ -254,7 +254,7 @@
 
 UnknownScript_0x1941b4:
 	scall UnknownScript_0x1941e5
-	verbosegiveitem FIRE_STONE, 1
+	verbosegiveitem FIRE_STONE
 	iffalse UnknownScript_0x1941c6
 	clearflag ENGINE_ALAN_HAS_FIRE_STONE
 	setevent EVENT_ALAN_GAVE_FIRE_STONE
@@ -325,7 +325,7 @@
 .MetArthur
 	writetext ArthurGivesGiftText
 	keeptextopen
-	verbosegiveitem HARD_STONE, 1
+	verbosegiveitem HARD_STONE
 	iffalse ArthurDoneScript
 	setevent EVENT_GOT_HARD_STONE_FROM_ARTHUR
 	writetext ArthurGaveGiftText
@@ -681,10 +681,10 @@
 	db 9
 	person_event SPRITE_YOUNGSTER, 13, 20, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicMark, -1
 	person_event SPRITE_YOUNGSTER, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 5, TrainerSchoolboyAlan1, -1
-	person_event SPRITE_WEIRD_TREE, 9, 35, SPRITEMOVEDATA_17, 0, 0, -1, -1, 0, 0, 0, WeirdTreeScript_0x19403c, EVENT_ROUTE_36_SUDOWOODO
+	person_event SPRITE_WEIRD_TREE, 9, 35, SPRITEMOVEDATA_SUDOWOODO, 0, 0, -1, -1, 0, 0, 0, WeirdTreeScript_0x19403c, EVENT_ROUTE_36_SUDOWOODO
 	person_event SPRITE_LASS, 8, 51, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, 0, 0, 0, LassScript_0x1940e0, -1
 	person_event SPRITE_FISHER, 9, 44, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, FisherScript_0x1940b9, -1
-	person_event SPRITE_FRUIT_TREE, 4, 21, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x194247, -1
-	person_event SPRITE_YOUNGSTER, 6, 46, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, ArthurScript, EVENT_ROUTE_36_ARTHUR_OF_THURSDAY
+	person_event SPRITE_FRUIT_TREE, 4, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x194247, -1
+	person_event SPRITE_YOUNGSTER, 6, 46, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, ArthurScript, EVENT_ROUTE_36_ARTHUR_OF_THURSDAY
 	person_event SPRITE_LASS, 12, 33, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LassScript_0x19408c, EVENT_FLORIA_AT_SUDOWOODO
-	person_event SPRITE_SUICUNE, 6, 21, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
+	person_event SPRITE_SUICUNE, 6, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_36
--- a/maps/Route36NationalParkgate.asm
+++ b/maps/Route36NationalParkgate.asm
@@ -83,9 +83,9 @@
 	loadmovesprites
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
-	warpfacing $2, NATIONAL_PARK_BUG_CONTEST, $21, $12
+	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
 
 .CopyContestants:
@@ -148,7 +148,7 @@
 	iffalse .DecidedNotToJoinContest
 	checkcode VAR_PARTYCOUNT
 	if_greater_than $1, .LeaveMonsWithOfficer
-	special CheckFirstMonFainted
+	special ContestDropOffMons
 	clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 .ResumeStartingContest:
 	setflag ENGINE_BUG_CONTEST_TIMER
@@ -166,10 +166,10 @@
 	special Special_GiveParkBalls
 	spriteface PLAYER, LEFT
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	special Special_SelectRandomBugContestContestants
-	warpfacing $2, NATIONAL_PARK_BUG_CONTEST, $21, $12
+	warpfacing LEFT, NATIONAL_PARK_BUG_CONTEST, $21, $12
 	end
 
 .LeaveMonsWithOfficer:
@@ -183,7 +183,7 @@
 	writetext UnknownText_0x6afb0
 	yesorno
 	iffalse .RefusedToLeaveMons
-	special CheckFirstMonFainted
+	special ContestDropOffMons
 	iftrue .FirstMonIsFainted
 	setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
 	writetext UnknownText_0x6b021
@@ -241,7 +241,7 @@
 .Sunstone:
 	writetext UnknownText_0x6b97f
 	keeptextopen
-	verbosegiveitem SUN_STONE, 1
+	verbosegiveitem SUN_STONE
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
 	loadmovesprites
@@ -250,7 +250,7 @@
 .Everstone:
 	writetext UnknownText_0x6b97f
 	keeptextopen
-	verbosegiveitem EVERSTONE, 1
+	verbosegiveitem EVERSTONE
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
 	loadmovesprites
@@ -259,7 +259,7 @@
 .GoldBerry:
 	writetext UnknownText_0x6b97f
 	keeptextopen
-	verbosegiveitem GOLD_BERRY, 1
+	verbosegiveitem GOLD_BERRY
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
 	loadmovesprites
@@ -268,7 +268,7 @@
 .Berry:
 	writetext UnknownText_0x6b97f
 	keeptextopen
-	verbosegiveitem BERRY, 1
+	verbosegiveitem BERRY
 	iffalse .BagFull
 	clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
 	loadmovesprites
--- a/maps/Route36RuinsofAlphgate.asm
+++ b/maps/Route36RuinsofAlphgate.asm
@@ -50,4 +50,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_OFFICER, 4, 0, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, OfficerScript_0x6aa1a, -1
-	person_event SPRITE_GRAMPS, 5, 7, SPRITEMOVEDATA_02, 2, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrampsScript_0x6aa1d, -1
+	person_event SPRITE_GRAMPS, 5, 7, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrampsScript_0x6aa1d, -1
--- a/maps/Route37.asm
+++ b/maps/Route37.asm
@@ -74,7 +74,7 @@
 	writetext SunnyGivesGiftText2
 	keeptextopen
 .next
-	verbosegiveitem MAGNET, 1
+	verbosegiveitem MAGNET
 	iffalse SunnyDoneScript
 	setevent EVENT_GOT_MAGNET_FROM_SUNNY
 	writetext SunnyGaveGiftText
@@ -251,8 +251,8 @@
 	db 7
 	person_event SPRITE_WEIRD_TREE, 12, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsAnnandanne1, -1
 	person_event SPRITE_WEIRD_TREE, 12, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerTwinsAnnandanne2, -1
-	person_event SPRITE_YOUNGSTER, 6, 6, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerPsychicGreg, -1
-	person_event SPRITE_FRUIT_TREE, 5, 13, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8e09, -1
-	person_event SPRITE_BUG_CATCHER, 8, 16, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, SunnyScript, EVENT_ROUTE_37_SUNNY_OF_SUNDAY
-	person_event SPRITE_FRUIT_TREE, 5, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8e0b, -1
-	person_event SPRITE_FRUIT_TREE, 7, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8e0d, -1
+	person_event SPRITE_YOUNGSTER, 6, 6, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerPsychicGreg, -1
+	person_event SPRITE_FRUIT_TREE, 5, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8e09, -1
+	person_event SPRITE_BUG_CATCHER, 8, 16, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, SunnyScript, EVENT_ROUTE_37_SUNNY_OF_SUNDAY
+	person_event SPRITE_FRUIT_TREE, 5, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8e0b, -1
+	person_event SPRITE_FRUIT_TREE, 7, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8e0d, -1
--- a/maps/Route38.asm
+++ b/maps/Route38.asm
@@ -6,9 +6,9 @@
 	db 0
 
 TrainerBird_keeperToby:
-	trainer EVENT_BEAT_BIRD_KEEPER_TOBY, BIRD_KEEPER, TOBY, Bird_keeperTobySeenText, Bird_keeperTobyBeatenText, 0, Bird_keeperTobyScript
+	trainer EVENT_BEAT_BIRD_KEEPER_TOBY, BIRD_KEEPER, TOBY, Bird_keeperTobySeenText, Bird_keeperTobyBeatenText, 0, .script
 
-Bird_keeperTobyScript:
+.script:
 	talkaftercancel
 	loadfont
 	writetext UnknownText_0x1a1f86
@@ -17,9 +17,9 @@
 	end
 
 TrainerSailorHarry:
-	trainer EVENT_BEAT_SAILOR_HARRY, SAILOR, HARRY, SailorHarrySeenText, SailorHarryBeatenText, 0, SailorHarryScript
+	trainer EVENT_BEAT_SAILOR_HARRY, SAILOR, HARRY, SailorHarrySeenText, SailorHarryBeatenText, 0, .script
 
-SailorHarryScript:
+.script:
 	talkaftercancel
 	loadfont
 	writetext UnknownText_0x1a220c
@@ -28,38 +28,38 @@
 	end
 
 TrainerLassDana1:
-	trainer EVENT_BEAT_LASS_DANA, LASS, DANA1, LassDana1SeenText, LassDana1BeatenText, 0, LassDana1Script
+	trainer EVENT_BEAT_LASS_DANA, LASS, DANA1, LassDana1SeenText, LassDana1BeatenText, 0, .script
 
-LassDana1Script:
+.script:
 	writecode VAR_CALLERID, PHONE_LASS_DANA
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_DANA
-	iftrue UnknownScript_0x1a1d82
+	iftrue .DanaRematch
 	checkflag ENGINE_DANA_HAS_THUNDERSTONE
-	iftrue UnknownScript_0x1a1df6
+	iftrue .TryGiveThunderstone
 	checkcellnum PHONE_LASS_DANA
-	iftrue UnknownScript_0x1a1e17
+	iftrue .NumberAccepted
 	checkevent EVENT_DANA_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x1a1d6b
+	iftrue .SecondTimeAsking
 	writetext UnknownText_0x1a20ec
 	keeptextopen
 	setevent EVENT_DANA_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x1a1e0b
-	jump UnknownScript_0x1a1d6e
+	scall .AskNumber1F
+	jump .AskForPhoneNumber
 
-UnknownScript_0x1a1d6b:
-	scall UnknownScript_0x1a1e0f
-UnknownScript_0x1a1d6e:
+.SecondTimeAsking:
+	scall .AskNumber2F
+.AskForPhoneNumber:
 	askforphonenumber PHONE_LASS_DANA
-	if_equal $1, UnknownScript_0x1a1e1f
-	if_equal $2, UnknownScript_0x1a1e1b
+	if_equal $1, .PhoneFull
+	if_equal $2, .DeclinedPhoneNumber
 	trainertotext LASS, DANA1, $0
-	scall UnknownScript_0x1a1e13
-	jump UnknownScript_0x1a1e17
+	scall .RegisteredPhoneNumber
+	jump .NumberAccepted
 
-UnknownScript_0x1a1d82:
-	scall UnknownScript_0x1a1e23
+.DanaRematch:
+	scall .Rematch
 	winlosstext LassDana1BeatenText, 0
 	copybytetovar wDanaFightCount
 	if_equal 4, .Fight4
@@ -118,84 +118,84 @@
 	clearflag ENGINE_DANA
 	end
 
-UnknownScript_0x1a1df6:
-	scall UnknownScript_0x1a1e27
-	verbosegiveitem THUNDERSTONE, 1
-	iffalse UnknownScript_0x1a1e08
+.TryGiveThunderstone:
+	scall .Gift
+	verbosegiveitem THUNDERSTONE
+	iffalse .NoRoomForThunderstone
 	clearflag ENGINE_DANA_HAS_THUNDERSTONE
 	setevent EVENT_DANA_GAVE_THUNDERSTONE
-	jump UnknownScript_0x1a1e17
+	jump .NumberAccepted
 
-UnknownScript_0x1a1e08:
-	jump UnknownScript_0x1a1e2b
+.NoRoomForThunderstone:
+	jump .PackFull
 
-UnknownScript_0x1a1e0b:
+.AskNumber1F:
 	jumpstd asknumber1f
 	end
 
-UnknownScript_0x1a1e0f:
+.AskNumber2F:
 	jumpstd asknumber2f
 	end
 
-UnknownScript_0x1a1e13:
+.RegisteredPhoneNumber:
 	jumpstd registerednumberf
 	end
 
-UnknownScript_0x1a1e17:
+.NumberAccepted:
 	jumpstd numberacceptedf
 	end
 
-UnknownScript_0x1a1e1b:
+.DeclinedPhoneNumber:
 	jumpstd numberdeclinedf
 	end
 
-UnknownScript_0x1a1e1f:
+.PhoneFull:
 	jumpstd phonefullf
 	end
 
-UnknownScript_0x1a1e23:
+.Rematch:
 	jumpstd rematchf
 	end
 
-UnknownScript_0x1a1e27:
+.Gift:
 	jumpstd giftf
 	end
 
-UnknownScript_0x1a1e2b:
+.PackFull:
 	jumpstd packfullf
 	end
 
 TrainerSchoolboyChad1:
-	trainer EVENT_BEAT_SCHOOLBOY_CHAD, SCHOOLBOY, CHAD1, SchoolboyChad1SeenText, SchoolboyChad1BeatenText, 0, SchoolboyChad1Script
+	trainer EVENT_BEAT_SCHOOLBOY_CHAD, SCHOOLBOY, CHAD1, SchoolboyChad1SeenText, SchoolboyChad1BeatenText, 0, .script
 
-SchoolboyChad1Script:
+.script:
 	writecode VAR_CALLERID, PHONE_SCHOOLBOY_CHAD
 	talkaftercancel
 	loadfont
 	checkflag ENGINE_CHAD
-	iftrue UnknownScript_0x1a1e75
+	iftrue .ChadRematch
 	checkcellnum PHONE_SCHOOLBOY_CHAD
-	iftrue UnknownScript_0x1a1ef5
+	iftrue .HaveChadsNumber
 	checkevent EVENT_CHAD_ASKED_FOR_PHONE_NUMBER
-	iftrue UnknownScript_0x1a1e5e
+	iftrue .SecondTimeAsking
 	writetext UnknownText_0x1a200e
 	keeptextopen
 	setevent EVENT_CHAD_ASKED_FOR_PHONE_NUMBER
-	scall UnknownScript_0x1a1ee9
-	jump UnknownScript_0x1a1e61
+	scall .AskPhoneNumber1
+	jump .AskToRegisterNumber
 
-UnknownScript_0x1a1e5e:
-	scall UnknownScript_0x1a1eed
-UnknownScript_0x1a1e61:
+.SecondTimeAsking:
+	scall .AskPhoneNumber2
+.AskToRegisterNumber:
 	askforphonenumber PHONE_SCHOOLBOY_CHAD
-	if_equal $1, UnknownScript_0x1a1efd
-	if_equal $2, UnknownScript_0x1a1ef9
+	if_equal $1, .PhoneFull
+	if_equal $2, .SaidNo
 	trainertotext SCHOOLBOY, CHAD1, $0
-	scall UnknownScript_0x1a1ef1
-	jump UnknownScript_0x1a1ef5
+	scall .RegisteredChad
+	jump .HaveChadsNumber
 
-UnknownScript_0x1a1e75:
-	scall UnknownScript_0x1a1f01
+.ChadRematch:
+	scall .Rematch
 	winlosstext SchoolboyChad1BeatenText, 0
 	copybytetovar wChadFightCount
 	if_equal 4, .Fight4
@@ -254,38 +254,38 @@
 	clearflag ENGINE_CHAD
 	end
 
-UnknownScript_0x1a1ee9:
+.AskPhoneNumber1:
 	jumpstd asknumber1m
 	end
 
-UnknownScript_0x1a1eed:
+.AskPhoneNumber2:
 	jumpstd asknumber2m
 	end
 
-UnknownScript_0x1a1ef1:
+.RegisteredChad:
 	jumpstd registerednumberm
 	end
 
-UnknownScript_0x1a1ef5:
+.HaveChadsNumber:
 	jumpstd numberacceptedm
 	end
 
-UnknownScript_0x1a1ef9:
+.SaidNo:
 	jumpstd numberdeclinedm
 	end
 
-UnknownScript_0x1a1efd:
+.PhoneFull:
 	jumpstd phonefullm
 	end
 
-UnknownScript_0x1a1f01:
+.Rematch:
 	jumpstd rematchm
 	end
 
 TrainerBeautyValerie:
-	trainer EVENT_BEAT_BEAUTY_VALERIE, BEAUTY, VALERIE, BeautyValerieSeenText, BeautyValerieBeatenText, 0, BeautyValerieScript
+	trainer EVENT_BEAT_BEAUTY_VALERIE, BEAUTY, VALERIE, BeautyValerieSeenText, BeautyValerieBeatenText, 0, .script
 
-BeautyValerieScript:
+.script:
 	talkaftercancel
 	loadfont
 	writetext UnknownText_0x1a2185
@@ -294,9 +294,9 @@
 	end
 
 TrainerBeautyOlivia:
-	trainer EVENT_BEAT_BEAUTY_OLIVIA, BEAUTY, OLIVIA, BeautyOliviaSeenText, BeautyOliviaBeatenText, 0, BeautyOliviaScript
+	trainer EVENT_BEAT_BEAUTY_OLIVIA, BEAUTY, OLIVIA, BeautyOliviaSeenText, BeautyOliviaBeatenText, 0, .script
 
-BeautyOliviaScript:
+.script:
 	talkaftercancel
 	loadfont
 	writetext UnknownText_0x1a229a
@@ -483,9 +483,9 @@
 .PersonEvents:
 	db 7
 	person_event SPRITE_STANDING_YOUNGSTER, 1, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerSchoolboyChad1, -1
-	person_event SPRITE_LASS, 3, 15, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerLassDana1, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 15, 12, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBird_keeperToby, -1
+	person_event SPRITE_LASS, 3, 15, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerLassDana1, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 15, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBird_keeperToby, -1
 	person_event SPRITE_BUENA, 9, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBeautyValerie, -1
-	person_event SPRITE_SAILOR, 5, 24, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerSailorHarry, -1
-	person_event SPRITE_FRUIT_TREE, 10, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a1f33, -1
-	person_event SPRITE_BUENA, 8, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBeautyOlivia, -1
+	person_event SPRITE_SAILOR, 5, 24, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerSailorHarry, -1
+	person_event SPRITE_FRUIT_TREE, 10, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a1f33, -1
+	person_event SPRITE_BUENA, 8, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerBeautyOlivia, -1
--- a/maps/Route39.asm
+++ b/maps/Route39.asm
@@ -46,7 +46,7 @@
 
 UnknownScript_0x1a5b4a:
 	scall UnknownScript_0x1a5b7a
-	verbosegiveitem NUGGET, 1
+	verbosegiveitem NUGGET
 	iffalse UnknownScript_0x1a5b59
 	clearflag ENGINE_DEREK_HAS_NUGGET
 	jump UnknownScript_0x1a5b6e
@@ -356,10 +356,10 @@
 	person_event SPRITE_SAILOR, 29, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 5, TrainerSailorEugene, -1
 	person_event SPRITE_POKEFAN_M, 22, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerPokefanmDerek1, -1
 	person_event SPRITE_POKEFAN_F, 19, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerPokefanfRuth, -1
-	person_event SPRITE_TAUROS, 12, 3, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 11, 6, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 15, 4, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_TAUROS, 13, 8, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 7, 13, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerPsychicNorman, -1
-	person_event SPRITE_FRUIT_TREE, 3, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a5bf4, -1
+	person_event SPRITE_TAUROS, 12, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 11, 6, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 15, 4, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_TAUROS, 13, 8, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x1a5af5, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 7, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 1, TrainerPsychicNorman, -1
+	person_event SPRITE_FRUIT_TREE, 3, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a5bf4, -1
 	person_event SPRITE_POKEFAN_F, 22, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanFScript_0x1a5bbe, -1
--- a/maps/Route39Barn.asm
+++ b/maps/Route39Barn.asm
@@ -63,7 +63,7 @@
 	iffalse .Refused
 	checkitem BERRY
 	iffalse .NoBerriesInBag
-	takeitem BERRY, 1
+	takeitem BERRY
 	copybytetovar MooMooBerries
 	addvar 1
 	copyvartobyte MooMooBerries
@@ -202,4 +202,4 @@
 	db 3
 	person_event SPRITE_TWIN, 3, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, TwinScript_0x9cc76, -1
 	person_event SPRITE_TWIN, 3, 4, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TwinScript_0x9cc90, -1
-	person_event SPRITE_TAUROS, 3, 3, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x9ccaa, -1
+	person_event SPRITE_TAUROS, 3, 3, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, TaurosScript_0x9ccaa, -1
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -25,7 +25,7 @@
 	iffalse UnknownScript_0x9cf02
 	checkmoney $0, 500
 	if_equal $2, UnknownScript_0x9cef6
-	giveitem MOOMOO_MILK, $1
+	giveitem MOOMOO_MILK
 	iffalse UnknownScript_0x9cefc
 	takemoney $0, 500
 	special Function24ae8
@@ -76,7 +76,7 @@
 UnknownScript_0x9cf22:
 	writetext UnknownText_0x9d156
 	keeptextopen
-	verbosegiveitem TM_SNORE, 1
+	verbosegiveitem TM_SNORE
 	iffalse UnknownScript_0x9cf33
 	setevent EVENT_GOT_TM13_SNORE_FROM_MOOMOO_FARM
 UnknownScript_0x9cf2f:
--- a/maps/Route4.asm
+++ b/maps/Route4.asm
@@ -136,4 +136,4 @@
 	person_event SPRITE_YOUNGSTER, 9, 17, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerBird_keeperHank, -1
 	person_event SPRITE_LASS, 8, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 4, TrainerPicnickerHope, -1
 	person_event SPRITE_LASS, 6, 21, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 4, TrainerPicnickerSharon, -1
-	person_event SPRITE_POKE_BALL, 3, 26, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ae20f, EVENT_ROUTE_4_HP_UP
+	person_event SPRITE_POKE_BALL, 3, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1ae20f, EVENT_ROUTE_4_HP_UP
--- a/maps/Route40.asm
+++ b/maps/Route40.asm
@@ -96,7 +96,7 @@
 .MetMonica
 	writetext MonicaGivesGiftText
 	keeptextopen
-	verbosegiveitem SHARP_BEAK, 1
+	verbosegiveitem SHARP_BEAK
 	iffalse MonicaDoneScript
 	setevent EVENT_GOT_SHARP_BEAK_FROM_MONICA
 	writetext MonicaGaveGiftText
@@ -347,12 +347,12 @@
 	person_event SPRITE_OLIVINE_RIVAL, 15, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerSwimmermSimon, -1
 	person_event SPRITE_OLIVINE_RIVAL, 30, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 5, TrainerSwimmermRandall, -1
 	person_event SPRITE_SWIMMER_GIRL, 19, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 4, TrainerSwimmerfElaine, -1
-	person_event SPRITE_SWIMMER_GIRL, 25, 10, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfPaula, -1
-	person_event SPRITE_ROCK, 11, 7, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, Route40Rock, -1
-	person_event SPRITE_ROCK, 9, 6, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, Route40Rock, -1
-	person_event SPRITE_ROCK, 8, 7, SPRITEMOVEDATA_18, 0, 0, -1, -1, 0, 0, 0, Route40Rock, -1
+	person_event SPRITE_SWIMMER_GIRL, 25, 10, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfPaula, -1
+	person_event SPRITE_ROCK, 11, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, Route40Rock, -1
+	person_event SPRITE_ROCK, 9, 6, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, Route40Rock, -1
+	person_event SPRITE_ROCK, 8, 7, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, 0, 0, Route40Rock, -1
 	person_event SPRITE_LASS, 13, 11, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, LassScript_0x1a61c4, -1
-	person_event SPRITE_BUENA, 10, 8, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, MonicaScript, EVENT_ROUTE_40_MONICA_OF_MONDAY
+	person_event SPRITE_BUENA, 10, 8, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, MonicaScript, EVENT_ROUTE_40_MONICA_OF_MONDAY
 	person_event SPRITE_POKEFAN_M, 6, 7, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x1a61c7, -1
-	person_event SPRITE_LASS, 4, 13, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x1a61d3, -1
-	person_event SPRITE_STANDING_YOUNGSTER, 9, 16, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, StandingYoungsterScript_0x1a61d6, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_LASS, 4, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x1a61d3, -1
+	person_event SPRITE_STANDING_YOUNGSTER, 9, 16, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, StandingYoungsterScript_0x1a61d6, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
--- a/maps/Route40BattleTowerGate.asm
+++ b/maps/Route40BattleTowerGate.asm
@@ -88,5 +88,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_ROCKER, 3, 3, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, RockerScript_0x9f669, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
+	person_event SPRITE_ROCKER, 3, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, RockerScript_0x9f669, EVENT_BATTLE_TOWER_OUTSIDE_SAILOR
 	person_event SPRITE_TWIN, 5, 7, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, TwinScript_0x9f66c, -1
--- a/maps/Route41.asm
+++ b/maps/Route41.asm
@@ -349,13 +349,13 @@
 
 .PersonEvents:
 	db 10
-	person_event SPRITE_OLIVINE_RIVAL, 6, 32, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermCharlie, -1
-	person_event SPRITE_OLIVINE_RIVAL, 8, 46, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermGeorge, -1
-	person_event SPRITE_OLIVINE_RIVAL, 26, 20, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermBerke, -1
-	person_event SPRITE_OLIVINE_RIVAL, 30, 32, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermKirk, -1
-	person_event SPRITE_OLIVINE_RIVAL, 46, 19, SPRITEMOVEDATA_1E, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermMathew, -1
-	person_event SPRITE_SWIMMER_GIRL, 4, 17, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfKaylee, -1
+	person_event SPRITE_OLIVINE_RIVAL, 6, 32, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermCharlie, -1
+	person_event SPRITE_OLIVINE_RIVAL, 8, 46, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermGeorge, -1
+	person_event SPRITE_OLIVINE_RIVAL, 26, 20, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermBerke, -1
+	person_event SPRITE_OLIVINE_RIVAL, 30, 32, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermKirk, -1
+	person_event SPRITE_OLIVINE_RIVAL, 46, 19, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerSwimmermMathew, -1
+	person_event SPRITE_SWIMMER_GIRL, 4, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfKaylee, -1
 	person_event SPRITE_SWIMMER_GIRL, 19, 23, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfSusie, -1
 	person_event SPRITE_SWIMMER_GIRL, 34, 27, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerSwimmerfDenise, -1
 	person_event SPRITE_SWIMMER_GIRL, 28, 44, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 4, TrainerSwimmerfKara, -1
-	person_event SPRITE_SWIMMER_GIRL, 50, 9, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerSwimmerfWendy, -1
+	person_event SPRITE_SWIMMER_GIRL, 50, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerSwimmerfWendy, -1
--- a/maps/Route42.asm
+++ b/maps/Route42.asm
@@ -108,7 +108,7 @@
 
 UnknownScript_0x1a92dc:
 	scall UnknownScript_0x1a930d
-	verbosegiveitem WATER_STONE, 1
+	verbosegiveitem WATER_STONE
 	iffalse UnknownScript_0x1a92ee
 	clearflag ENGINE_TULLY_HAS_WATER_STONE
 	setevent EVENT_TULLY_GAVE_WATER_STONE
@@ -337,11 +337,11 @@
 .PersonEvents:
 	db 9
 	person_event SPRITE_FISHER, 10, 40, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherTully1, -1
-	person_event SPRITE_POKEFAN_M, 9, 51, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerBenjamin, -1
+	person_event SPRITE_POKEFAN_M, 9, 51, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerBenjamin, -1
 	person_event SPRITE_SUPER_NERD, 8, 47, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacShane, -1
-	person_event SPRITE_FRUIT_TREE, 16, 27, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a934d, -1
-	person_event SPRITE_FRUIT_TREE, 16, 28, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a934f, -1
-	person_event SPRITE_FRUIT_TREE, 16, 29, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a9351, -1
-	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a9349, EVENT_ROUTE_42_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 8, 33, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a934b, EVENT_ROUTE_42_SUPER_POTION
-	person_event SPRITE_SUICUNE, 16, 26, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
+	person_event SPRITE_FRUIT_TREE, 16, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a934d, -1
+	person_event SPRITE_FRUIT_TREE, 16, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a934f, -1
+	person_event SPRITE_FRUIT_TREE, 16, 29, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a9351, -1
+	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a9349, EVENT_ROUTE_42_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 8, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a934b, EVENT_ROUTE_42_SUPER_POTION
+	person_event SPRITE_SUICUNE, 16, 26, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_SAW_SUICUNE_ON_ROUTE_42
--- a/maps/Route43.asm
+++ b/maps/Route43.asm
@@ -251,7 +251,7 @@
 
 UnknownScript_0x19d21e:
 	scall UnknownScript_0x19d255
-	verbosegiveitem PINK_BOW, 1
+	verbosegiveitem PINK_BOW
 	iffalse UnknownScript_0x19d230
 	clearflag ENGINE_TIFFANY_HAS_PINK_BOW
 	setevent EVENT_TIFFANY_GAVE_PINK_BOW
@@ -517,10 +517,10 @@
 .PersonEvents:
 	db 8
 	person_event SPRITE_SUPER_NERD, 5, 13, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPokemaniacBen, -1
-	person_event SPRITE_SUPER_NERD, 20, 13, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacBrent1, -1
+	person_event SPRITE_SUPER_NERD, 20, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacBrent1, -1
 	person_event SPRITE_SUPER_NERD, 7, 14, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPokemaniacRon, -1
 	person_event SPRITE_FISHER, 16, 4, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 4, TrainerFisherMarvin, -1
 	person_event SPRITE_LASS, 25, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerPicnickerTiffany3, -1
-	person_event SPRITE_YOUNGSTER, 40, 13, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerCamperSpencer, -1
-	person_event SPRITE_FRUIT_TREE, 26, 1, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19d266, -1
-	person_event SPRITE_POKE_BALL, 32, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19d268, EVENT_ROUTE_43_MAX_ETHER
+	person_event SPRITE_YOUNGSTER, 40, 13, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerCamperSpencer, -1
+	person_event SPRITE_FRUIT_TREE, 26, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19d266, -1
+	person_event SPRITE_POKE_BALL, 32, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19d268, EVENT_ROUTE_43_MAX_ETHER
--- a/maps/Route43Gate.asm
+++ b/maps/Route43Gate.asm
@@ -113,7 +113,7 @@
 	iftrue UnknownScript_0x19ac9c
 	writetext UnknownText_0x19ad9b
 	keeptextopen
-	verbosegiveitem TM_SLUDGE_BOMB, 1
+	verbosegiveitem TM_SLUDGE_BOMB
 	iffalse UnknownScript_0x19aca0
 	setevent EVENT_GOT_TM36_SLUDGE_BOMB
 	loadmovesprites
--- a/maps/Route44.asm
+++ b/maps/Route44.asm
@@ -73,7 +73,7 @@
 	checkevent EVENT_GOT_CARBOS_FROM_VANCE
 	iftrue UnknownScript_0x19d8ca
 	scall UnknownScript_0x19d90a
-	verbosegiveitem CARBOS, 1
+	verbosegiveitem CARBOS
 	iffalse UnknownScript_0x19d903
 	setevent EVENT_GOT_CARBOS_FROM_VANCE
 	jump UnknownScript_0x19d8eb
@@ -85,7 +85,7 @@
 	loadfont
 	writetext UnknownText_0x19dc67
 	closetext
-	verbosegiveitem CARBOS, 1
+	verbosegiveitem CARBOS
 	iffalse UnknownScript_0x19d903
 	clearevent EVENT_VANCE_CARBOS
 	setevent EVENT_GOT_CARBOS_FROM_VANCE
@@ -223,17 +223,17 @@
 	checkevent EVENT_WILTON_HAS_POKE_BALL
 	iftrue UnknownScript_0x19d9db
 UnknownScript_0x19d9c9:
-	verbosegiveitem ULTRA_BALL, 1
+	verbosegiveitem ULTRA_BALL
 	iffalse UnknownScript_0x19d9e7
 	jump UnknownScript_0x19d9e1
 
 UnknownScript_0x19d9d2:
-	verbosegiveitem GREAT_BALL, 1
+	verbosegiveitem GREAT_BALL
 	iffalse UnknownScript_0x19d9e7
 	jump UnknownScript_0x19d9e1
 
 UnknownScript_0x19d9db:
-	verbosegiveitem POKE_BALL, 1
+	verbosegiveitem POKE_BALL
 	iffalse UnknownScript_0x19d9e7
 UnknownScript_0x19d9e1:
 	clearflag ENGINE_WILTON_HAS_ITEM
@@ -515,12 +515,12 @@
 	db 11
 	person_event SPRITE_FISHER, 3, 35, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherWilton1, -1
 	person_event SPRITE_FISHER, 13, 19, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerFisherEdgar, -1
-	person_event SPRITE_YOUNGSTER, 9, 10, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicPhil, -1
-	person_event SPRITE_SUPER_NERD, 2, 43, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerPokemaniacZach, -1
+	person_event SPRITE_YOUNGSTER, 9, 10, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicPhil, -1
+	person_event SPRITE_SUPER_NERD, 2, 43, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerPokemaniacZach, -1
 	person_event SPRITE_YOUNGSTER, 5, 51, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerBird_keeperVance1, -1
 	person_event SPRITE_COOLTRAINER_M, 15, 41, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 5, TrainerCooltrainermAllen, -1
 	person_event SPRITE_COOLTRAINER_F, 14, 31, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 5, TrainerCooltrainerfCybil, -1
-	person_event SPRITE_FRUIT_TREE, 5, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19da40, -1
-	person_event SPRITE_POKE_BALL, 8, 30, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19da42, EVENT_ROUTE_44_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 4, 45, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19da44, EVENT_ROUTE_44_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19da46, EVENT_ROUTE_44_MAX_REPEL
+	person_event SPRITE_FRUIT_TREE, 5, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19da40, -1
+	person_event SPRITE_POKE_BALL, 8, 30, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19da42, EVENT_ROUTE_44_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 4, 45, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19da44, EVENT_ROUTE_44_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19da46, EVENT_ROUTE_44_MAX_REPEL
--- a/maps/Route45.asm
+++ b/maps/Route45.asm
@@ -43,7 +43,7 @@
 	checkevent EVENT_KENJI_ON_BREAK
 	iffalse UnknownScript_0x19e127
 	scall UnknownScript_0x19e137
-	verbosegiveitem PP_UP, 1
+	verbosegiveitem PP_UP
 	iffalse UnknownScript_0x19e118
 	clearevent EVENT_KENJI_ON_BREAK
 	special Special_SampleKenjiBreakCountdown
@@ -199,7 +199,7 @@
 	checkevent EVENT_GOT_IRON_FROM_PARRY
 	iftrue UnknownScript_0x19e218
 	scall UnknownScript_0x19e146
-	verbosegiveitem IRON, 1
+	verbosegiveitem IRON
 	iffalse UnknownScript_0x19e13f
 	setevent EVENT_GOT_IRON_FROM_PARRY
 	jump UnknownScript_0x19e127
@@ -211,7 +211,7 @@
 	loadfont
 	writetext UnknownText_0x19e52c
 	closetext
-	verbosegiveitem IRON, 1
+	verbosegiveitem IRON
 	iffalse UnknownScript_0x19e13f
 	clearevent EVENT_PARRY_IRON
 	setevent EVENT_GOT_IRON_FROM_PARRY
@@ -539,12 +539,12 @@
 	person_event SPRITE_POKEFAN_M, 65, 15, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerMichael, -1
 	person_event SPRITE_POKEFAN_M, 28, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerParry, -1
 	person_event SPRITE_POKEFAN_M, 65, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 1, TrainerHikerTimothy, -1
-	person_event SPRITE_BLACK_BELT, 50, 11, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBlackbeltKenji, -1
+	person_event SPRITE_BLACK_BELT, 50, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerBlackbeltKenji, -1
 	person_event SPRITE_COOLTRAINER_M, 18, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerCooltrainermRyan, -1
-	person_event SPRITE_COOLTRAINER_F, 36, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfKelly, -1
-	person_event SPRITE_FRUIT_TREE, 82, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19e294, -1
-	person_event SPRITE_POKE_BALL, 51, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e296, EVENT_ROUTE_45_NUGGET
-	person_event SPRITE_POKE_BALL, 66, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e298, EVENT_ROUTE_45_REVIVE
-	person_event SPRITE_POKE_BALL, 20, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e29a, EVENT_ROUTE_45_ELIXER
-	person_event SPRITE_POKE_BALL, 33, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e29c, EVENT_ROUTE_45_MAX_POTION
-	person_event SPRITE_YOUNGSTER, 70, 4, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x19e269, -1
+	person_event SPRITE_COOLTRAINER_F, 36, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfKelly, -1
+	person_event SPRITE_FRUIT_TREE, 82, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x19e294, -1
+	person_event SPRITE_POKE_BALL, 51, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e296, EVENT_ROUTE_45_NUGGET
+	person_event SPRITE_POKE_BALL, 66, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e298, EVENT_ROUTE_45_REVIVE
+	person_event SPRITE_POKE_BALL, 20, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e29a, EVENT_ROUTE_45_ELIXER
+	person_event SPRITE_POKE_BALL, 33, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x19e29c, EVENT_ROUTE_45_MAX_POTION
+	person_event SPRITE_YOUNGSTER, 70, 4, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x19e269, -1
--- a/maps/Route46.asm
+++ b/maps/Route46.asm
@@ -84,7 +84,7 @@
 	checkevent EVENT_GOT_CALCIUM_FROM_ERIN
 	iftrue UnknownScript_0x1a973a
 	scall UnknownScript_0x1a9772
-	verbosegiveitem CALCIUM, 1
+	verbosegiveitem CALCIUM
 	iffalse UnknownScript_0x1a976b
 	setevent EVENT_GOT_CALCIUM_FROM_ERIN
 	jump UnknownScript_0x1a975b
@@ -96,7 +96,7 @@
 	loadfont
 	writetext UnknownText_0x1a9927
 	closetext
-	verbosegiveitem CALCIUM, 1
+	verbosegiveitem CALCIUM
 	iffalse UnknownScript_0x1a976b
 	clearevent EVENT_ERIN_CALCIUM
 	setevent EVENT_GOT_CALCIUM_FROM_ERIN
@@ -264,6 +264,6 @@
 	person_event SPRITE_POKEFAN_M, 19, 12, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerBailey, -1
 	person_event SPRITE_YOUNGSTER, 14, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerCamperTed, -1
 	person_event SPRITE_LASS, 13, 2, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 2, TrainerPicnickerErin1, -1
-	person_event SPRITE_FRUIT_TREE, 5, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a978f, -1
-	person_event SPRITE_FRUIT_TREE, 6, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a9791, -1
-	person_event SPRITE_POKE_BALL, 15, 1, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a978d, EVENT_ROUTE_46_X_SPEED
+	person_event SPRITE_FRUIT_TREE, 5, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a978f, -1
+	person_event SPRITE_FRUIT_TREE, 6, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a9791, -1
+	person_event SPRITE_POKE_BALL, 15, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a978d, EVENT_ROUTE_46_X_SPEED
--- a/maps/Route5CleanseTagSpeechHouse.asm
+++ b/maps/Route5CleanseTagSpeechHouse.asm
@@ -12,7 +12,7 @@
 	iftrue UnknownScript_0x18b649
 	writetext UnknownText_0x18b655
 	keeptextopen
-	verbosegiveitem CLEANSE_TAG, 1
+	verbosegiveitem CLEANSE_TAG
 	iffalse UnknownScript_0x18b64d
 	setevent EVENT_GOT_CLEANSE_TAG
 UnknownScript_0x18b649:
@@ -75,5 +75,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GRANNY, 5, 2, SPRITEMOVEDATA_1F, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrannyScript_0x18b634, -1
+	person_event SPRITE_GRANNY, 5, 2, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrannyScript_0x18b634, -1
 	person_event SPRITE_TEACHER, 3, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, TeacherScript_0x18b64f, -1
--- a/maps/Route5UndergroundEntrance.asm
+++ b/maps/Route5UndergroundEntrance.asm
@@ -34,4 +34,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_TEACHER, 2, 2, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x18b555, -1
+	person_event SPRITE_TEACHER, 2, 2, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x18b555, -1
--- a/maps/Route8.asm
+++ b/maps/Route8.asm
@@ -187,5 +187,5 @@
 	person_event SPRITE_BIKER, 9, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 5, TrainerBikerHarris, -1
 	person_event SPRITE_BIKER, 10, 10, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 5, TrainerBikerZeke, -1
 	person_event SPRITE_SUPER_NERD, 2, 23, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerSupernerdSam, -1
-	person_event SPRITE_SUPER_NERD, 12, 31, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 4, TrainerSupernerdTom, -1
-	person_event SPRITE_FRUIT_TREE, 5, 33, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x6c06c, -1
+	person_event SPRITE_SUPER_NERD, 12, 31, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 4, TrainerSupernerdTom, -1
+	person_event SPRITE_FRUIT_TREE, 5, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x6c06c, -1
--- a/maps/Route9.asm
+++ b/maps/Route9.asm
@@ -217,8 +217,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_YOUNGSTER, 11, 23, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerCamperDean, -1
-	person_event SPRITE_LASS, 8, 39, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerPicnickerHeidi, -1
-	person_event SPRITE_YOUNGSTER, 4, 11, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 5, TrainerCamperSid, -1
+	person_event SPRITE_LASS, 8, 39, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 3, TrainerPicnickerHeidi, -1
+	person_event SPRITE_YOUNGSTER, 4, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 5, TrainerCamperSid, -1
 	person_event SPRITE_LASS, 15, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 2, 1, TrainerPicnickerEdna, -1
 	person_event SPRITE_POKEFAN_M, 3, 28, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerTim, -1
 	person_event SPRITE_POKEFAN_M, 15, 36, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 4, TrainerHikerSidney, -1
--- a/maps/RuinsofAlphAerodactylItemRoom.asm
+++ b/maps/RuinsofAlphAerodactylItemRoom.asm
@@ -47,7 +47,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59ab6, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59ab8, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59aba, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59abc, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59ab6, EVENT_PICKED_UP_GOLD_BERRY_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59ab8, EVENT_PICKED_UP_MOON_STONE_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59aba, EVENT_PICKED_UP_HEAL_POWDER_FROM_AERODACTYL_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59abc, EVENT_PICKED_UP_ENERGY_ROOT_FROM_AERODACTYL_ITEM_ROOM
--- a/maps/RuinsofAlphHoOhItemRoom.asm
+++ b/maps/RuinsofAlphHoOhItemRoom.asm
@@ -47,7 +47,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59918, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5991a, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5991c, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5991e, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59918, EVENT_PICKED_UP_GOLD_BERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5991a, EVENT_PICKED_UP_MYSTERYBERRY_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5991c, EVENT_PICKED_UP_REVIVAL_HERB_FROM_HO_OH_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5991e, EVENT_PICKED_UP_CHARCOAL_FROM_HO_OH_ITEM_ROOM
--- a/maps/RuinsofAlphInnerChamber.asm
+++ b/maps/RuinsofAlphInnerChamber.asm
@@ -125,6 +125,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_FISHER, 7, 3, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x58f7d, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
-	person_event SPRITE_TEACHER, 13, 14, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, TeacherScript_0x58f80, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	person_event SPRITE_FISHER, 7, 3, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x58f7d, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
+	person_event SPRITE_TEACHER, 13, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, TeacherScript_0x58f80, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
 	person_event SPRITE_GRAMPS, 19, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrampsScript_0x58f83, EVENT_RUINS_OF_ALPH_INNER_CHAMBER_TOURISTS
--- a/maps/RuinsofAlphKabutoItemRoom.asm
+++ b/maps/RuinsofAlphKabutoItemRoom.asm
@@ -47,7 +47,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a2, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a4, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a6, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a8, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a2, EVENT_PICKED_UP_BERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a4, EVENT_PICKED_UP_PSNCUREBERRY_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a6, EVENT_PICKED_UP_HEAL_POWDER_FROM_KABUTO_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x599a8, EVENT_PICKED_UP_ENERGYPOWDER_FROM_KABUTO_ITEM_ROOM
--- a/maps/RuinsofAlphOmanyteItemRoom.asm
+++ b/maps/RuinsofAlphOmanyteItemRoom.asm
@@ -47,7 +47,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a2c, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a2e, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a30, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
-	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a32, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a2c, EVENT_PICKED_UP_MYSTERYBERRY_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 6, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a2e, EVENT_PICKED_UP_MYSTIC_WATER_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a30, EVENT_PICKED_UP_STARDUST_FROM_OMANYTE_ITEM_ROOM
+	person_event SPRITE_POKE_BALL, 4, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59a32, EVENT_PICKED_UP_STAR_PIECE_FROM_OMANYTE_ITEM_ROOM
--- a/maps/RuinsofAlphOutside.asm
+++ b/maps/RuinsofAlphOutside.asm
@@ -313,6 +313,6 @@
 	db 5
 	person_event SPRITE_YOUNGSTER, 20, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 2, 1, TrainerPsychicNathan, -1
 	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ScientistScript_0x58043, EVENT_RUINS_OF_ALPH_OUTSIDE_SCIENTIST
-	person_event SPRITE_FISHER, 17, 13, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x58061, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
-	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, YoungsterScript_0x58076, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
+	person_event SPRITE_FISHER, 17, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x58061, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_FISHER
+	person_event SPRITE_YOUNGSTER, 11, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, YoungsterScript_0x58076, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
 	person_event SPRITE_YOUNGSTER, 8, 12, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x5807e, EVENT_RUINS_OF_ALPH_OUTSIDE_TOURIST_YOUNGSTERS
--- a/maps/RuinsofAlphResearchCenter.asm
+++ b/maps/RuinsofAlphResearchCenter.asm
@@ -413,5 +413,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_SCIENTIST, 5, 4, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x591e5, -1
-	person_event SPRITE_SCIENTIST, 2, 5, SPRITEMOVEDATA_02, 1, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x59214, -1
+	person_event SPRITE_SCIENTIST, 2, 5, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x59214, -1
 	person_event SPRITE_SCIENTIST, 5, 2, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x591d1, EVENT_RUINS_OF_ALPH_RESEARCH_CENTER_SCIENTIST
--- a/maps/SaffronCity.asm
+++ b/maps/SaffronCity.asm
@@ -301,5 +301,5 @@
 	person_event SPRITE_COOLTRAINER_F, 24, 20, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 2, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerFScript_0x199355, -1
 	person_event SPRITE_FISHER, 12, 27, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x199358, -1
 	person_event SPRITE_YOUNGSTER, 19, 15, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, YoungsterScript_0x19936c, -1
-	person_event SPRITE_YOUNGSTER, 22, 35, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x19936f, -1
-	person_event SPRITE_LASS, 8, 19, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x199372, -1
+	person_event SPRITE_YOUNGSTER, 22, 35, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x19936f, -1
+	person_event SPRITE_LASS, 8, 19, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x199372, -1
--- a/maps/SaffronGym.asm
+++ b/maps/SaffronGym.asm
@@ -331,8 +331,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_SABRINA, 8, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SabrinaScript_0x189c2e, -1
-	person_event SPRITE_GRANNY, 16, 17, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerMediumRebecca, -1
-	person_event SPRITE_YOUNGSTER, 16, 3, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicFranklin, -1
-	person_event SPRITE_GRANNY, 4, 3, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerMediumDoris, -1
-	person_event SPRITE_YOUNGSTER, 4, 17, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPsychicJared, -1
+	person_event SPRITE_GRANNY, 16, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerMediumRebecca, -1
+	person_event SPRITE_YOUNGSTER, 16, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPsychicFranklin, -1
+	person_event SPRITE_GRANNY, 4, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerMediumDoris, -1
+	person_event SPRITE_YOUNGSTER, 4, 17, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPsychicJared, -1
 	person_event SPRITE_GYM_GUY, 14, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SaffronGymGuyScript, -1
--- a/maps/SaffronMart.asm
+++ b/maps/SaffronMart.asm
@@ -50,5 +50,5 @@
 .PersonEvents:
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x18a3bf, -1
-	person_event SPRITE_COOLTRAINER_M, 2, 7, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CooltrainerMScript_0x18a3c6, -1
+	person_event SPRITE_COOLTRAINER_M, 2, 7, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, CooltrainerMScript_0x18a3c6, -1
 	person_event SPRITE_COOLTRAINER_F, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, CooltrainerFScript_0x18a3c9, -1
--- a/maps/SaffronPokeCenter1F.asm
+++ b/maps/SaffronPokeCenter1F.asm
@@ -124,6 +124,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x18a47d, -1
-	person_event SPRITE_TEACHER, 2, 7, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x18a480, -1
+	person_event SPRITE_TEACHER, 2, 7, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, TeacherScript_0x18a480, -1
 	person_event SPRITE_FISHER, 6, 8, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, FisherScript_0x18a48c, -1
-	person_event SPRITE_YOUNGSTER, 4, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, YoungsterScript_0x18a4a0, -1
+	person_event SPRITE_YOUNGSTER, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, YoungsterScript_0x18a4a0, -1
--- a/maps/SaffronTrainStation.asm
+++ b/maps/SaffronTrainStation.asm
@@ -35,7 +35,7 @@
 	writebyte $1
 	special Special_MagnetTrain
 	warpcheck
-	newloadmap $f9
+	newloadmap MAPSETUP_TRAIN
 	applymovement PLAYER, .MovementBoardTheTrain
 	wait $14
 	end
@@ -232,6 +232,6 @@
 .PersonEvents:
 	db 4
 	person_event SPRITE_OFFICER, 9, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, OfficerScript_0x18a81e, -1
-	person_event SPRITE_GYM_GUY, 14, 10, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, GymGuyScript_0x18a875, -1
+	person_event SPRITE_GYM_GUY, 14, 10, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, GymGuyScript_0x18a875, -1
 	person_event SPRITE_TEACHER, 11, 6, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, TeacherScript_0x18a889, EVENT_SAFFRON_TRAIN_STATION_POPULATION
 	person_event SPRITE_LASS, 10, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x18a88c, EVENT_SAFFRON_TRAIN_STATION_POPULATION
--- a/maps/SilphCo1F.asm
+++ b/maps/SilphCo1F.asm
@@ -15,7 +15,7 @@
 	iftrue UnknownScript_0x18abfd
 	writetext UnknownText_0x18ac36
 	keeptextopen
-	verbosegiveitem UP_GRADE, 1
+	verbosegiveitem UP_GRADE
 	iffalse UnknownScript_0x18ac01
 	setevent EVENT_GOT_UP_GRADE
 UnknownScript_0x18abfd:
--- a/maps/SilverCaveItemRooms.asm
+++ b/maps/SilverCaveItemRooms.asm
@@ -28,5 +28,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c65e, EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 11, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c660, EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 3, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c65e, EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 11, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c660, EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
--- a/maps/SilverCaveRoom1.asm
+++ b/maps/SilverCaveRoom1.asm
@@ -44,7 +44,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_POKE_BALL, 9, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c554, EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
-	person_event SPRITE_POKE_BALL, 29, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c556, EVENT_SILVER_CAVE_ROOM_1_PROTEIN
-	person_event SPRITE_POKE_BALL, 30, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c558, EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
-	person_event SPRITE_POKE_BALL, 18, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c55a, EVENT_SILVER_CAVE_ROOM_1_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 9, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c554, EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 29, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c556, EVENT_SILVER_CAVE_ROOM_1_PROTEIN
+	person_event SPRITE_POKE_BALL, 30, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c558, EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 18, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c55a, EVENT_SILVER_CAVE_ROOM_1_ULTRA_BALL
--- a/maps/SilverCaveRoom2.asm
+++ b/maps/SilverCaveRoom2.asm
@@ -38,6 +38,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 10, 24, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c5b2, EVENT_SILVER_CAVE_ROOM_2_CALCIUM
-	person_event SPRITE_POKE_BALL, 24, 22, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c5b4, EVENT_SILVER_CAVE_ROOM_2_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 20, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c5b6, EVENT_SILVER_CAVE_ROOM_2_PP_UP
+	person_event SPRITE_POKE_BALL, 10, 24, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c5b2, EVENT_SILVER_CAVE_ROOM_2_CALCIUM
+	person_event SPRITE_POKE_BALL, 24, 22, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c5b4, EVENT_SILVER_CAVE_ROOM_2_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 20, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c5b6, EVENT_SILVER_CAVE_ROOM_2_PP_UP
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -56,7 +56,7 @@
 	clearevent EVENT_AZALEA_TOWN_SLOWPOKES
 	clearevent EVENT_KURTS_HOUSE_SLOWPOKE
 	clearevent EVENT_KURTS_HOUSE_KURT_1
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special HealParty
 	pause 15
 	warp KURTS_HOUSE, $3, $3
@@ -121,15 +121,15 @@
 	step_left
 	step_left
 	step_up
-	accelerate_last
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
+	step_sleep_8
 	step_left
 	step_up
 	step_up
-	accelerate_last
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
+	step_sleep_8
 	turn_head_left
 	step_end
 
@@ -330,8 +330,8 @@
 	person_event SPRITE_ROCKET, 2, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 2, 1, TrainerGruntM1, EVENT_SLOWPOKE_WELL_ROCKETS
 	person_event SPRITE_ROCKET, 6, 5, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 2, 2, TrainerGruntM2, EVENT_SLOWPOKE_WELL_ROCKETS
 	person_event SPRITE_ROCKET_GIRL, 4, 10, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerGruntF1, EVENT_SLOWPOKE_WELL_ROCKETS
-	person_event SPRITE_SLOWPOKE, 4, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SlowpokeScript_0x5a681, EVENT_SLOWPOKE_WELL_SLOWPOKES
-	person_event SPRITE_SLOWPOKE, 2, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SlowpokeScript_0x5a695, EVENT_SLOWPOKE_WELL_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 4, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SlowpokeScript_0x5a681, EVENT_SLOWPOKE_WELL_SLOWPOKES
+	person_event SPRITE_SLOWPOKE, 2, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SlowpokeScript_0x5a695, EVENT_SLOWPOKE_WELL_SLOWPOKES
 	person_event SPRITE_KURT, 14, 16, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, KurtScript_0x5a5d5, EVENT_SLOWPOKE_WELL_KURT
-	person_event SPRITE_BOULDER, 2, 3, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, SlowpokeWellB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 3, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a6a3, EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
+	person_event SPRITE_BOULDER, 2, 3, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, SlowpokeWellB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 3, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a6a3, EVENT_SLOWPOKE_WELL_B1F_SUPER_POTION
--- a/maps/SlowpokeWellB2F.asm
+++ b/maps/SlowpokeWellB2F.asm
@@ -12,7 +12,7 @@
 	iftrue UnknownScript_0x5ad22
 	writetext UnknownText_0x5ad2a
 	keeptextopen
-	verbosegiveitem KINGS_ROCK, 1
+	verbosegiveitem KINGS_ROCK
 	iffalse UnknownScript_0x5ad20
 	setevent EVENT_GOT_KINGS_ROCK_IN_SLOWPOKE_WELL
 UnknownScript_0x5ad20:
@@ -73,5 +73,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_GYM_GUY, 4, 5, SPRITEMOVEDATA_02, 2, 1, -1, -1, 0, 0, 1, GymGuyScript_0x5ad0b, -1
-	person_event SPRITE_POKE_BALL, 5, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5ad28, EVENT_SLOWPOKE_WELL_B2F_TM_RAIN_DANCE
+	person_event SPRITE_GYM_GUY, 4, 5, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, 0, 0, 1, GymGuyScript_0x5ad0b, -1
+	person_event SPRITE_POKE_BALL, 5, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5ad28, EVENT_SLOWPOKE_WELL_B2F_TM_RAIN_DANCE
--- a/maps/SproutTower1F.asm
+++ b/maps/SproutTower1F.asm
@@ -117,8 +117,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_SAGE, 4, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SageScript_0x1844fe, -1
-	person_event SPRITE_SAGE, 7, 6, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SageScript_0x184501, -1
+	person_event SPRITE_SAGE, 7, 6, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SageScript_0x184501, -1
 	person_event SPRITE_GRANNY, 12, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, GrannyScript_0x184504, -1
 	person_event SPRITE_TEACHER, 9, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, TeacherScript_0x184507, -1
 	person_event SPRITE_SAGE, 5, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerSageChow, -1
-	person_event SPRITE_POKE_BALL, 7, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18451e, EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
+	person_event SPRITE_POKE_BALL, 7, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18451e, EVENT_SPROUT_TOWER1F_PARLYZ_HEAL
--- a/maps/SproutTower2F.asm
+++ b/maps/SproutTower2F.asm
@@ -99,6 +99,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_SAGE, 3, 12, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerSageNico, -1
+	person_event SPRITE_SAGE, 3, 12, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 4, TrainerSageNico, -1
 	person_event SPRITE_SAGE, 14, 9, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 5, TrainerSageEdmond, -1
-	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1847a7, EVENT_SPROUT_TOWER2F_X_ACCURACY
+	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1847a7, EVENT_SPROUT_TOWER2F_X_ACCURACY
--- a/maps/SproutTower3F.asm
+++ b/maps/SproutTower3F.asm
@@ -71,7 +71,7 @@
 	loadfont
 	writetext UnknownText_0x184cc2
 	keeptextopen
-	verbosegiveitem HM_FLASH, 1
+	verbosegiveitem HM_FLASH
 	setevent EVENT_GOT_HM05_FLASH
 	setevent EVENT_BEAT_SAGE_LI
 	writetext UnknownText_0x184d13
@@ -349,6 +349,6 @@
 	person_event SPRITE_SAGE, 8, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerSageTroy, -1
 	person_event SPRITE_SAGE, 2, 10, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SageLiScript, -1
 	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerSageNeal, -1
-	person_event SPRITE_POKE_BALL, 14, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x184a19, EVENT_SPROUT_TOWER_3F_POTION
-	person_event SPRITE_POKE_BALL, 1, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x184a1b, EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 14, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x184a19, EVENT_SPROUT_TOWER_3F_POTION
+	person_event SPRITE_POKE_BALL, 1, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x184a1b, EVENT_SPROUT_TOWER_3F_ESCAPE_ROPE
 	person_event SPRITE_SILVER, 4, 10, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_SPROUT_TOWER
--- a/maps/TeamRocketBaseB1F.asm
+++ b/maps/TeamRocketBaseB1F.asm
@@ -445,9 +445,9 @@
 	end
 
 VoltorbExplodingTrap:
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	cry VOLTORB
-	special FadeInBGMap
+	special FadeInPalettes
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata VOLTORB, 23
@@ -455,9 +455,9 @@
 	end
 
 GeodudeExplodingTrap:
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	cry GEODUDE
-	special FadeInBGMap
+	special FadeInPalettes
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata GEODUDE, 21
@@ -465,9 +465,9 @@
 	end
 
 KoffingExplodingTrap:
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	cry KOFFING
-	special FadeInBGMap
+	special FadeInPalettes
 	setlasttalked $ff
 	writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
 	loadpokedata KOFFING, 21
@@ -789,6 +789,6 @@
 	person_event SPRITE_ROCKET, 0, 0, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_SECURITY_GRUNTS
 	person_event SPRITE_ROCKET, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM16, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SCIENTIST, 12, 18, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerScientistJed, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_POKE_BALL, 6, 27, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6cac4, EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
-	person_event SPRITE_POKE_BALL, 15, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6cac6, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
-	person_event SPRITE_POKE_BALL, 12, 21, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6cac8, EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
+	person_event SPRITE_POKE_BALL, 6, 27, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6cac4, EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
+	person_event SPRITE_POKE_BALL, 15, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6cac6, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
+	person_event SPRITE_POKE_BALL, 12, 21, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6cac8, EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
--- a/maps/TeamRocketBaseB2F.asm
+++ b/maps/TeamRocketBaseB2F.asm
@@ -155,11 +155,11 @@
 	writetext UnknownText_0x6da97
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	special Mobile_HealParty
 	playsound SFX_FULL_HEAL
 	special HealParty
-	special FadeInBGMap
+	special FadeInPalettes
 	loadfont
 	writetext UnknownText_0x6daf7
 	closetext
@@ -276,7 +276,7 @@
 	loadfont
 	writetext UnknownText_0x6d809
 	keeptextopen
-	verbosegiveitem HM_WHIRLPOOL, 1
+	verbosegiveitem HM_WHIRLPOOL
 	setevent EVENT_GOT_HM06_WHIRLPOOL
 	writetext UnknownText_0x6d8f8
 	closetext
@@ -449,17 +449,17 @@
 	step_end
 
 MovementData_0x6d258:
-	accelerate_last
+	step_sleep_8
 	step_left
 	step_left
 	turn_head_up
-	accelerate_last
+	step_sleep_8
 	step_right
 	step_right
 	step_right
 	step_right
 	turn_head_up
-	accelerate_last
+	step_sleep_8
 	step_left
 	step_left
 	turn_head_down
@@ -956,13 +956,13 @@
 	person_event SPRITE_ROCKET_GIRL, 16, 20, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
 	person_event SPRITE_LANCE, 13, 5, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_LANCE
 	person_event SPRITE_DRAGON, 13, 9, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
-	person_event SPRITE_VOLTORB, 5, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, VoltorbScript_0x6d101, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
-	person_event SPRITE_VOLTORB, 7, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, VoltorbScript_0x6d12c, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
-	person_event SPRITE_VOLTORB, 9, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, VoltorbScript_0x6d157, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
-	person_event SPRITE_VOLTORB, 5, 22, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
-	person_event SPRITE_VOLTORB, 7, 22, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
-	person_event SPRITE_VOLTORB, 9, 22, SPRITEMOVEDATA_16, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+	person_event SPRITE_VOLTORB, 5, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, VoltorbScript_0x6d101, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+	person_event SPRITE_VOLTORB, 7, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, VoltorbScript_0x6d12c, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+	person_event SPRITE_VOLTORB, 9, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, VoltorbScript_0x6d157, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+	person_event SPRITE_VOLTORB, 5, 22, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+	person_event SPRITE_VOLTORB, 7, 22, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+	person_event SPRITE_VOLTORB, 9, 22, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
 	person_event SPRITE_ROCKET, 13, 25, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM17, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_ROCKET, 1, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, 0, 2, 1, TrainerGruntM18, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET, 1, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, 2, 1, TrainerGruntM18, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 14, 21, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 2, 4, TrainerGruntM19, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_POKE_BALL, 10, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6d20d, EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
+	person_event SPRITE_POKE_BALL, 10, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6d20d, EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
--- a/maps/TeamRocketBaseB3F.asm
+++ b/maps/TeamRocketBaseB3F.asm
@@ -254,8 +254,8 @@
 	fix_facing
 	fast_jump_step_left
 	remove_fixed_facing
-	accelerate_last
-	accelerate_last
+	step_sleep_8
+	step_sleep_8
 	slow_step_right
 	big_step_down
 	big_step_down
@@ -589,15 +589,15 @@
 	db 14
 	person_event SPRITE_LANCE, 14, 25, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, LanceScript_0x6dffc, EVENT_TEAM_ROCKET_BASE_B3F_LANCE_PASSWORDS
 	person_event SPRITE_ROCKET, 3, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B3F_EXECUTIVE
-	person_event SPRITE_MOLTRES, 2, 7, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, MoltresScript_0x6e091, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_MOLTRES, 2, 7, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, MoltresScript_0x6e091, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET_GIRL, 7, 21, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 0, TrainerGruntF5, EVENT_TEAM_ROCKET_BASE_POPULATION
-	person_event SPRITE_ROCKET, 14, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM28, EVENT_TEAM_ROCKET_BASE_POPULATION
+	person_event SPRITE_ROCKET, 14, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM28, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SCIENTIST, 11, 23, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 0, TrainerScientistRoss, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SCIENTIST, 15, 11, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_ROCKET, 14, 24, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, RocketScript_0x6e048, EVENT_TEAM_ROCKET_BASE_POPULATION
 	person_event SPRITE_SILVER, 5, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_TEAM_ROCKET_BASE
-	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e120, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
-	person_event SPRITE_POKE_BALL, 12, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e122, EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL
-	person_event SPRITE_POKE_BALL, 9, 28, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e124, EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
-	person_event SPRITE_POKE_BALL, 2, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e126, EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL
-	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e128, EVENT_TEAM_ROCKET_BASE_B3F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e120, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
+	person_event SPRITE_POKE_BALL, 12, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e122, EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL
+	person_event SPRITE_POKE_BALL, 9, 28, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e124, EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 2, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e126, EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL
+	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x6e128, EVENT_TEAM_ROCKET_BASE_B3F_ULTRA_BALL
--- a/maps/TimeCapsule.asm
+++ b/maps/TimeCapsule.asm
@@ -39,7 +39,7 @@
 
 MapTimeCapsuleSignpost1Script:
 	special Special_TimeCapsule
-	newloadmap $f8
+	newloadmap MAPSETUP_LINKRETURN
 	end
 
 ChrisScript_0x19351a:
--- a/maps/TinTower1F.asm
+++ b/maps/TinTower1F.asm
@@ -189,7 +189,7 @@
 	iftrue UnknownScript_0x1851b0
 	writetext UnknownText_0x185629
 	keeptextopen
-	verbosegiveitem RAINBOW_WING, 1
+	verbosegiveitem RAINBOW_WING
 	loadmovesprites
 	refreshscreen $0
 	earthquake 72
@@ -534,13 +534,13 @@
 
 .PersonEvents:
 	db 10
-	person_event SPRITE_SUICUNE, 9, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_TIN_TOWER_1F_SUICUNE
-	person_event SPRITE_RAIKOU, 9, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, ObjectEvent, EVENT_TIN_TOWER_1F_RAIKOU
-	person_event SPRITE_ENTEI, 9, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ObjectEvent, EVENT_TIN_TOWER_1F_ENTEI
-	person_event SPRITE_SUPER_NERD, 3, 8, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x1851c8, EVENT_TIN_TOWER_1F_EUSINE
-	person_event SPRITE_SAGE, 9, 5, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185173, EVENT_TIN_TOWER_1F_WISE_TRIO_1
-	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185176, EVENT_TIN_TOWER_1F_WISE_TRIO_1
-	person_event SPRITE_SAGE, 6, 14, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185179, EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	person_event SPRITE_SUICUNE, 9, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ObjectEvent, EVENT_TIN_TOWER_1F_SUICUNE
+	person_event SPRITE_RAIKOU, 9, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, ObjectEvent, EVENT_TIN_TOWER_1F_RAIKOU
+	person_event SPRITE_ENTEI, 9, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, ObjectEvent, EVENT_TIN_TOWER_1F_ENTEI
+	person_event SPRITE_SUPER_NERD, 3, 8, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SuperNerdScript_0x1851c8, EVENT_TIN_TOWER_1F_EUSINE
+	person_event SPRITE_SAGE, 9, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185173, EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	person_event SPRITE_SAGE, 11, 11, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185176, EVENT_TIN_TOWER_1F_WISE_TRIO_1
+	person_event SPRITE_SAGE, 6, 14, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185179, EVENT_TIN_TOWER_1F_WISE_TRIO_1
 	person_event SPRITE_SAGE, 2, 4, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, 0, 0, 0, SageScript_0x18517c, EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	person_event SPRITE_SAGE, 1, 9, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, SageScript_0x185188, EVENT_TIN_TOWER_1F_WISE_TRIO_2
 	person_event SPRITE_SAGE, 2, 14, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, SageScript_0x1851bc, EVENT_TIN_TOWER_1F_WISE_TRIO_2
--- a/maps/TinTower3F.asm
+++ b/maps/TinTower3F.asm
@@ -25,4 +25,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 14, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a37, EVENT_TIN_TOWER_3F_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 14, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a37, EVENT_TIN_TOWER_3F_FULL_HEAL
--- a/maps/TinTower4F.asm
+++ b/maps/TinTower4F.asm
@@ -38,6 +38,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a58, EVENT_TIN_TOWER_4F_ULTRA_BALL
-	person_event SPRITE_POKE_BALL, 14, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a5a, EVENT_TIN_TOWER_4F_PP_UP
-	person_event SPRITE_POKE_BALL, 12, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a5c, EVENT_TIN_TOWER_4F_ESCAPE_ROPE
+	person_event SPRITE_POKE_BALL, 10, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a58, EVENT_TIN_TOWER_4F_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 14, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a5a, EVENT_TIN_TOWER_4F_PP_UP
+	person_event SPRITE_POKE_BALL, 12, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185a5c, EVENT_TIN_TOWER_4F_ESCAPE_ROPE
--- a/maps/TinTower5F.asm
+++ b/maps/TinTower5F.asm
@@ -37,4 +37,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 9, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185aa9, EVENT_TIN_TOWER_5F_RARE_CANDY
+	person_event SPRITE_POKE_BALL, 9, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185aa9, EVENT_TIN_TOWER_5F_RARE_CANDY
--- a/maps/TinTower6F.asm
+++ b/maps/TinTower6F.asm
@@ -25,4 +25,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 8, 8, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185ae4, EVENT_TIN_TOWER_6F_MAX_POTION
+	person_event SPRITE_POKE_BALL, 8, 8, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185ae4, EVENT_TIN_TOWER_6F_MAX_POTION
--- a/maps/TinTower7F.asm
+++ b/maps/TinTower7F.asm
@@ -28,4 +28,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 1, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b05, EVENT_TIN_TOWER_7F_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 1, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b05, EVENT_TIN_TOWER_7F_MAX_REVIVE
--- a/maps/TinTower8F.asm
+++ b/maps/TinTower8F.asm
@@ -35,6 +35,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b35, EVENT_TIN_TOWER_8F_NUGGET
-	person_event SPRITE_POKE_BALL, 6, 11, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b37, EVENT_TIN_TOWER_8F_MAX_ELIXER
-	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b39, EVENT_TIN_TOWER_8F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b35, EVENT_TIN_TOWER_8F_NUGGET
+	person_event SPRITE_POKE_BALL, 6, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b37, EVENT_TIN_TOWER_8F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 1, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b39, EVENT_TIN_TOWER_8F_FULL_RESTORE
--- a/maps/TinTower9F.asm
+++ b/maps/TinTower9F.asm
@@ -38,4 +38,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 1, 9, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b88, EVENT_TIN_TOWER_9F_HP_UP
+	person_event SPRITE_POKE_BALL, 1, 9, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x185b88, EVENT_TIN_TOWER_9F_HP_UP
--- a/maps/TinTowerRoof.asm
+++ b/maps/TinTowerRoof.asm
@@ -60,4 +60,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_HO_OH, 5, 9, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, HoOhScript_0x77244, EVENT_TIN_TOWER_ROOF_HO_OH
+	person_event SPRITE_HO_OH, 5, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, HoOhScript_0x77244, EVENT_TIN_TOWER_ROOF_HO_OH
--- a/maps/TohjoFalls.asm
+++ b/maps/TohjoFalls.asm
@@ -25,4 +25,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18db02, EVENT_TOHJO_FALLS_MOON_STONE
+	person_event SPRITE_POKE_BALL, 6, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18db02, EVENT_TOHJO_FALLS_MOON_STONE
--- a/maps/TradeCenter.asm
+++ b/maps/TradeCenter.asm
@@ -39,7 +39,7 @@
 
 MapTradeCenterSignpost1Script:
 	special Special_TradeCenter
-	newloadmap $f8
+	newloadmap MAPSETUP_LINKRETURN
 	end
 
 ChrisScript_0x19340b:
--- a/maps/UndergroundPathSwitchRoomEntrances.asm
+++ b/maps/UndergroundPathSwitchRoomEntrances.asm
@@ -931,6 +931,6 @@
 	person_event SPRITE_ROCKET_GIRL, 12, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerGruntF3, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_TEACHER, 27, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, TeacherScript_0x7ca7d, -1
 	person_event SPRITE_SUPER_NERD, 27, 19, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, SuperNerdScript_0x7ca7a, -1
-	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ce7d, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_SMOKE_BALL
-	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ce7f, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 12, 1, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ce7d, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_SMOKE_BALL
+	person_event SPRITE_POKE_BALL, 9, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7ce7f, EVENT_UNDERGROUND_PATH_SWITCH_ROOM_ENTRANCES_FULL_HEAL
 	person_event SPRITE_SILVER, 3, 23, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_UNDERGROUND_PATH
--- a/maps/UndergroundWarehouse.asm
+++ b/maps/UndergroundWarehouse.asm
@@ -69,7 +69,7 @@
 	iftrue UnknownScript_0x7d9de
 	writetext UnknownText_0x7dbc6
 	keeptextopen
-	verbosegiveitem CARD_KEY, 1
+	verbosegiveitem CARD_KEY
 	setevent EVENT_RECEIVED_CARD_KEY
 	setevent EVENT_WAREHOUSE_LAYOUT_1
 	clearevent EVENT_WAREHOUSE_LAYOUT_2
@@ -225,7 +225,7 @@
 	person_event SPRITE_ROCKET, 8, 9, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM24, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 15, 8, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 2, 3, TrainerGruntM14, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
 	person_event SPRITE_ROCKET, 3, 14, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 2, 4, TrainerGruntM15, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_GENTLEMAN, 8, 12, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x7d9bf, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
-	person_event SPRITE_POKE_BALL, 15, 18, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d9e4, EVENT_UNDERGROUND_WAREHOUSE_MAX_ETHER
-	person_event SPRITE_POKE_BALL, 9, 13, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d9e6, EVENT_UNDERGROUND_WAREHOUSE_TM_SLEEP_TALK
-	person_event SPRITE_POKE_BALL, 1, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d9e8, EVENT_UNDERGROUND_WAREHOUSE_ULTRA_BALL
+	person_event SPRITE_GENTLEMAN, 8, 12, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x7d9bf, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+	person_event SPRITE_POKE_BALL, 15, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d9e4, EVENT_UNDERGROUND_WAREHOUSE_MAX_ETHER
+	person_event SPRITE_POKE_BALL, 9, 13, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d9e6, EVENT_UNDERGROUND_WAREHOUSE_TM_SLEEP_TALK
+	person_event SPRITE_POKE_BALL, 1, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7d9e8, EVENT_UNDERGROUND_WAREHOUSE_ULTRA_BALL
--- a/maps/UnionCave1F.asm
+++ b/maps/UnionCave1F.asm
@@ -208,11 +208,11 @@
 .PersonEvents:
 	db 9
 	person_event SPRITE_POKEFAN_M, 6, 3, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerHikerDaniel, -1
-	person_event SPRITE_SUPER_NERD, 21, 4, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacLarry, -1
-	person_event SPRITE_POKEFAN_M, 8, 11, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 1, TrainerHikerRussell, -1
+	person_event SPRITE_SUPER_NERD, 21, 4, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacLarry, -1
+	person_event SPRITE_POKEFAN_M, 8, 11, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 1, TrainerHikerRussell, -1
 	person_event SPRITE_FISHER, 27, 15, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerFirebreatherRay, -1
 	person_event SPRITE_FISHER, 19, 14, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 4, TrainerFirebreatherBill, -1
-	person_event SPRITE_POKE_BALL, 21, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c00, EVENT_UNION_CAVE_1F_GREAT_BALL
-	person_event SPRITE_POKE_BALL, 2, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c02, EVENT_UNION_CAVE_1F_X_ATTACK
-	person_event SPRITE_POKE_BALL, 17, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c04, EVENT_UNION_CAVE_1F_POTION
-	person_event SPRITE_POKE_BALL, 33, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c06, EVENT_UNION_CAVE_1F_AWAKENING
+	person_event SPRITE_POKE_BALL, 21, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c00, EVENT_UNION_CAVE_1F_GREAT_BALL
+	person_event SPRITE_POKE_BALL, 2, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c02, EVENT_UNION_CAVE_1F_X_ATTACK
+	person_event SPRITE_POKE_BALL, 17, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c04, EVENT_UNION_CAVE_1F_POTION
+	person_event SPRITE_POKE_BALL, 33, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x59c06, EVENT_UNION_CAVE_1F_AWAKENING
--- a/maps/UnionCaveB1F.asm
+++ b/maps/UnionCaveB1F.asm
@@ -163,10 +163,10 @@
 
 .PersonEvents:
 	db 7
-	person_event SPRITE_POKEFAN_M, 4, 9, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerPhillip, -1
+	person_event SPRITE_POKEFAN_M, 4, 9, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerPhillip, -1
 	person_event SPRITE_POKEFAN_M, 7, 16, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerHikerLeonard, -1
 	person_event SPRITE_SUPER_NERD, 32, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacAndrew, -1
 	person_event SPRITE_SUPER_NERD, 30, 17, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacCalvin, -1
-	person_event SPRITE_POKE_BALL, 16, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a016, EVENT_UNION_CAVE_B1F_TM_SWIFT
-	person_event SPRITE_BOULDER, 10, 7, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, UnionCaveB1FBoulder, -1
-	person_event SPRITE_POKE_BALL, 23, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a018, EVENT_UNION_CAVE_B1F_X_DEFEND
+	person_event SPRITE_POKE_BALL, 16, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a016, EVENT_UNION_CAVE_B1F_TM_SWIFT
+	person_event SPRITE_BOULDER, 10, 7, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, UnionCaveB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 23, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a018, EVENT_UNION_CAVE_B1F_X_DEFEND
--- a/maps/UnionCaveB2F.asm
+++ b/maps/UnionCaveB2F.asm
@@ -153,8 +153,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_ROCKER, 19, 15, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainermNick, -1
-	person_event SPRITE_COOLTRAINER_F, 13, 5, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerCooltrainerfGwen, -1
+	person_event SPRITE_COOLTRAINER_F, 13, 5, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 1, TrainerCooltrainerfGwen, -1
 	person_event SPRITE_COOLTRAINER_F, 30, 3, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 2, 3, TrainerCooltrainerfEmma, -1
-	person_event SPRITE_POKE_BALL, 2, 16, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a36a, EVENT_UNION_CAVE_B2F_ELIXER
-	person_event SPRITE_POKE_BALL, 19, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a36c, EVENT_UNION_CAVE_B2F_HYPER_POTION
-	person_event SPRITE_SURF, 31, 11, SPRITEMOVEDATA_24, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SurfScript_0x5a31f, EVENT_UNION_CAVE_B2F_LAPRAS
+	person_event SPRITE_POKE_BALL, 2, 16, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a36a, EVENT_UNION_CAVE_B2F_ELIXER
+	person_event SPRITE_POKE_BALL, 19, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x5a36c, EVENT_UNION_CAVE_B2F_HYPER_POTION
+	person_event SPRITE_SURF, 31, 11, SPRITEMOVEDATA_LAPRAS, 1, 1, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SurfScript_0x5a31f, EVENT_UNION_CAVE_B2F_LAPRAS
--- a/maps/VermilionCity.asm
+++ b/maps/VermilionCity.asm
@@ -85,7 +85,7 @@
 .AllBadges
 	writetext UnknownText_0x1aacf3
 	keeptextopen
-	verbosegiveitem HP_UP, 1
+	verbosegiveitem HP_UP
 	iffalse .Done
 	setevent EVENT_GOT_HP_UP_FROM_VERMILION_GUY
 .AlreadyGotItem
@@ -294,9 +294,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_TEACHER, 9, 18, SPRITEMOVEDATA_02, 1, 1, -1, -1, 0, 0, 0, TeacherScript_0x1aa983, -1
+	person_event SPRITE_TEACHER, 9, 18, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, 0, 0, TeacherScript_0x1aa983, -1
 	person_event SPRITE_GRAMPS, 6, 23, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, GrampsScript_0x1aa986, -1
-	person_event SPRITE_MACHOP, 7, 26, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, VermilionMachop, -1
-	person_event SPRITE_SUPER_NERD, 16, 14, SPRITEMOVEDATA_02, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, SuperNerdScript_0x1aa99b, -1
-	person_event SPRITE_BIG_SNORLAX, 8, 34, SPRITEMOVEDATA_15, 0, 0, -1, -1, 0, 0, 0, VermilionSnorlax, EVENT_VERMILION_CITY_SNORLAX
+	person_event SPRITE_MACHOP, 7, 26, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, VermilionMachop, -1
+	person_event SPRITE_SUPER_NERD, 16, 14, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, SuperNerdScript_0x1aa99b, -1
+	person_event SPRITE_BIG_SNORLAX, 8, 34, SPRITEMOVEDATA_SNORLAX, 0, 0, -1, -1, 0, 0, 0, VermilionSnorlax, EVENT_VERMILION_CITY_SNORLAX
 	person_event SPRITE_POKEFAN_M, 12, 31, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, VermilionGymBadgeGuy, -1
--- a/maps/VermilionMagnetTrainSpeechHouse.asm
+++ b/maps/VermilionMagnetTrainSpeechHouse.asm
@@ -49,4 +49,4 @@
 .PersonEvents:
 	db 2
 	person_event SPRITE_POKEFAN_F, 3, 2, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, PokefanFScript_0x191eb7, -1
-	person_event SPRITE_YOUNGSTER, 3, 0, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x191eba, -1
+	person_event SPRITE_YOUNGSTER, 3, 0, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x191eba, -1
--- a/maps/VermilionPokeCenter1F.asm
+++ b/maps/VermilionPokeCenter1F.asm
@@ -91,4 +91,4 @@
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x191603, -1
 	person_event SPRITE_FISHING_GURU, 2, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, FishingGuruScript_0x191606, -1
 	person_event SPRITE_SAILOR, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 1, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, SailorScript_0x19161a, -1
-	person_event SPRITE_BUG_CATCHER, 5, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BugCatcherScript_0x19161d, -1
+	person_event SPRITE_BUG_CATCHER, 5, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, BugCatcherScript_0x19161d, -1
--- a/maps/VermilionPort.asm
+++ b/maps/VermilionPort.asm
@@ -51,7 +51,7 @@
 	waitbutton
 	applymovement PLAYER, MovementData_0x74ef1
 	playsound SFX_EXIT_BUILDING
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	waitbutton
 	setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
 	clearevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
--- a/maps/VictoryRoad.asm
+++ b/maps/VictoryRoad.asm
@@ -264,8 +264,8 @@
 .PersonEvents:
 	db 6
 	person_event SPRITE_SILVER, 13, 18, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, 0, 0, ObjectEvent, EVENT_RIVAL_VICTORY_ROAD
-	person_event SPRITE_POKE_BALL, 28, 3, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x74529, EVENT_VICTORY_ROAD_TM_EARTHQUAKE
-	person_event SPRITE_POKE_BALL, 48, 12, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7452b, EVENT_VICTORY_ROAD_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 29, 18, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7452d, EVENT_VICTORY_ROAD_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 48, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7452f, EVENT_VICTORY_ROAD_FULL_HEAL
-	person_event SPRITE_POKE_BALL, 38, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x74531, EVENT_VICTORY_ROAD_HP_UP
+	person_event SPRITE_POKE_BALL, 28, 3, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x74529, EVENT_VICTORY_ROAD_TM_EARTHQUAKE
+	person_event SPRITE_POKE_BALL, 48, 12, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7452b, EVENT_VICTORY_ROAD_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 29, 18, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7452d, EVENT_VICTORY_ROAD_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 48, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7452f, EVENT_VICTORY_ROAD_FULL_HEAL
+	person_event SPRITE_POKE_BALL, 38, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x74531, EVENT_VICTORY_ROAD_HP_UP
--- a/maps/VioletCity.asm
+++ b/maps/VioletCity.asm
@@ -301,11 +301,11 @@
 
 .PersonEvents:
 	db 8
-	person_event SPRITE_FISHER, 16, 13, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x1a83bb, EVENT_VIOLET_CITY_EARL
-	person_event SPRITE_LASS, 28, 28, SPRITEMOVEDATA_02, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x1a8403, -1
-	person_event SPRITE_SUPER_NERD, 14, 24, SPRITEMOVEDATA_02, 2, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x1a8406, -1
+	person_event SPRITE_FISHER, 16, 13, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, FisherScript_0x1a83bb, EVENT_VIOLET_CITY_EARL
+	person_event SPRITE_LASS, 28, 28, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x1a8403, -1
+	person_event SPRITE_SUPER_NERD, 14, 24, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, SuperNerdScript_0x1a8406, -1
 	person_event SPRITE_GRAMPS, 20, 17, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, GrampsScript_0x1a8409, -1
-	person_event SPRITE_YOUNGSTER, 18, 5, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1a840c, -1
-	person_event SPRITE_FRUIT_TREE, 29, 14, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8425, -1
-	person_event SPRITE_POKE_BALL, 1, 4, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a8421, EVENT_VIOLET_CITY_PP_UP
-	person_event SPRITE_POKE_BALL, 5, 35, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a8423, EVENT_VIOLET_CITY_RARE_CANDY
+	person_event SPRITE_YOUNGSTER, 18, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1a840c, -1
+	person_event SPRITE_FRUIT_TREE, 29, 14, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 0, 0, FruitTreeScript_0x1a8425, -1
+	person_event SPRITE_POKE_BALL, 1, 4, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a8421, EVENT_VIOLET_CITY_PP_UP
+	person_event SPRITE_POKE_BALL, 5, 35, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x1a8423, EVENT_VIOLET_CITY_RARE_CANDY
--- a/maps/VioletGym.asm
+++ b/maps/VioletGym.asm
@@ -34,7 +34,7 @@
 	specialphonecall SPECIALCALL_ASSISTANT
 	writetext UnknownText_0x685c8
 	keeptextopen
-	verbosegiveitem TM_MUD_SLAP, 1
+	verbosegiveitem TM_MUD_SLAP
 	iffalse .NoRoomForMudSlap
 	setevent EVENT_GOT_TM31_MUD_SLAP
 	writetext UnknownText_0x68648
--- a/maps/VioletMart.asm
+++ b/maps/VioletMart.asm
@@ -62,4 +62,4 @@
 	db 3
 	person_event SPRITE_CLERK, 3, 1, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, 0, 0, ClerkScript_0x68295, -1
 	person_event SPRITE_GRANNY, 6, 7, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, GrannyScript_0x6829c, -1
-	person_event SPRITE_COOLTRAINER_M, 2, 5, SPRITEMOVEDATA_03, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x6829f, -1
+	person_event SPRITE_COOLTRAINER_M, 2, 5, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, CooltrainerMScript_0x6829f, -1
--- a/maps/VioletOnixTradeHouse.asm
+++ b/maps/VioletOnixTradeHouse.asm
@@ -45,5 +45,5 @@
 
 .PersonEvents:
 	db 2
-	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x6998d, -1
+	person_event SPRITE_POKEFAN_M, 3, 2, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, PokefanMScript_0x6998d, -1
 	person_event SPRITE_YOUNGSTER, 5, 6, SPRITEMOVEDATA_WALK_UP_DOWN, 2, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x69990, -1
--- a/maps/VioletPokeCenter1F.asm
+++ b/maps/VioletPokeCenter1F.asm
@@ -228,6 +228,6 @@
 	db 5
 	person_event SPRITE_NURSE, 1, 3, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 0, 0, NurseScript_0x694c9, -1
 	person_event SPRITE_GAMEBOY_KID, 6, 7, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, GameboyKidScript_0x69540, -1
-	person_event SPRITE_GENTLEMAN, 4, 1, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x69543, -1
+	person_event SPRITE_GENTLEMAN, 4, 1, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, GentlemanScript_0x69543, -1
 	person_event SPRITE_YOUNGSTER, 1, 8, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, YoungsterScript_0x69546, -1
 	person_event SPRITE_SCIENTIST, 3, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, ScientistScript_0x694cc, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER
--- a/maps/ViridianCity.asm
+++ b/maps/ViridianCity.asm
@@ -52,7 +52,7 @@
 	iftrue UnknownScript_0x1a9a8a
 	writetext UnknownText_0x1a9cc4
 	keeptextopen
-	verbosegiveitem TM_DREAM_EATER, 1
+	verbosegiveitem TM_DREAM_EATER
 	iffalse UnknownScript_0x1a9a8e
 	setevent EVENT_GOT_TM42_DREAM_EATER
 UnknownScript_0x1a9a8a:
@@ -237,7 +237,7 @@
 
 .PersonEvents:
 	db 4
-	person_event SPRITE_GRAMPS, 5, 18, SPRITEMOVEDATA_02, 2, 2, -1, -1, 0, 0, 0, GrampsScript_0x1a9a4c, -1
+	person_event SPRITE_GRAMPS, 5, 18, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, 0, 0, GrampsScript_0x1a9a4c, -1
 	person_event SPRITE_GRAMPS, 8, 30, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrampsScript_0x1a9a61, -1
 	person_event SPRITE_FISHER, 23, 6, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, FisherScript_0x1a9a75, -1
-	person_event SPRITE_YOUNGSTER, 21, 17, SPRITEMOVEDATA_02, 3, 3, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1a9a90, -1
+	person_event SPRITE_YOUNGSTER, 21, 17, SPRITEMOVEDATA_WANDER, 3, 3, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungsterScript_0x1a9a90, -1
--- a/maps/ViridianNicknameSpeechHouse.asm
+++ b/maps/ViridianNicknameSpeechHouse.asm
@@ -74,5 +74,5 @@
 	db 4
 	person_event SPRITE_POKEFAN_M, 4, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_RED, 0, 0, PokefanMScript_0x9ae3a, -1
 	person_event SPRITE_LASS, 4, 5, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, LassScript_0x9ae3d, -1
-	person_event SPRITE_MOLTRES, 2, 5, SPRITEMOVEDATA_16, 0, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MoltresScript_0x9ae40, -1
-	person_event SPRITE_GROWLITHE, 3, 6, SPRITEMOVEDATA_16, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrowlitheScript_0x9ae4a, -1
+	person_event SPRITE_MOLTRES, 2, 5, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, MoltresScript_0x9ae40, -1
+	person_event SPRITE_GROWLITHE, 3, 6, SPRITEMOVEDATA_POKEMON, 0, 2, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, GrowlitheScript_0x9ae4a, -1
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -226,10 +226,10 @@
 	writetext UnknownText_0x7c6b8
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7c6d8
@@ -309,10 +309,10 @@
 	writetext UnknownText_0x7c80e
 	closetext
 	loadmovesprites
-	special FadeBlackBGMap
+	special FadeOutPalettes
 	playmusic MUSIC_HEAL
 	pause 60
-	special FadeInBGMap
+	special FadeInPalettes
 	special RestartMapMusic
 	loadfont
 	writetext UnknownText_0x7c82a
@@ -671,9 +671,9 @@
 	db 9
 	person_event SPRITE_SUPER_NERD, 31, 5, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 3, TrainerSupernerdEric, -1
 	person_event SPRITE_SUPER_NERD, 9, 6, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 2, 2, TrainerSupernerdTeru, -1
-	person_event SPRITE_SUPER_NERD, 27, 3, SPRITEMOVEDATA_0A, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPokemaniacIssac, -1
+	person_event SPRITE_SUPER_NERD, 27, 3, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 2, TrainerPokemaniacIssac, -1
 	person_event SPRITE_SUPER_NERD, 6, 2, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 2, 3, TrainerPokemaniacDonald, -1
-	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7c306, EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
+	person_event SPRITE_POKE_BALL, 25, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x7c306, EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
 	person_event SPRITE_GRAMPS, 11, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BROWN, 0, 0, GrampsScript_0x7c146, EVENT_WAREHOUSE_ENTRANCE_GRAMPS
 	person_event SPRITE_SUPER_NERD, 14, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, OlderHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_OLDER_HAIRCUT_BROTHER
 	person_event SPRITE_SUPER_NERD, 15, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, (1 << 3) | PAL_OW_GREEN, 0, 0, YoungerHaircutBrotherScript, EVENT_WAREHOUSE_ENTRANCE_YOUNGER_HAIRCUT_BROTHER
--- a/maps/WhirlIslandB1F.asm
+++ b/maps/WhirlIslandB1F.asm
@@ -62,9 +62,9 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c410, EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 18, 2, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c412, EVENT_WHIRL_ISLAND_B1F_CARBOS
-	person_event SPRITE_POKE_BALL, 23, 33, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c414, EVENT_WHIRL_ISLAND_B1F_CALCIUM
-	person_event SPRITE_POKE_BALL, 8, 17, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c416, EVENT_WHIRL_ISLAND_B1F_NUGGET
-	person_event SPRITE_POKE_BALL, 26, 19, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c418, EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
-	person_event SPRITE_BOULDER, 26, 23, SPRITEMOVEDATA_19, 0, 0, -1, -1, 0, 0, 0, WhirlIslandB1FBoulder, -1
+	person_event SPRITE_POKE_BALL, 13, 7, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c410, EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 18, 2, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c412, EVENT_WHIRL_ISLAND_B1F_CARBOS
+	person_event SPRITE_POKE_BALL, 23, 33, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c414, EVENT_WHIRL_ISLAND_B1F_CALCIUM
+	person_event SPRITE_POKE_BALL, 8, 17, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c416, EVENT_WHIRL_ISLAND_B1F_NUGGET
+	person_event SPRITE_POKE_BALL, 26, 19, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c418, EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
+	person_event SPRITE_BOULDER, 26, 23, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, 0, 0, WhirlIslandB1FBoulder, -1
--- a/maps/WhirlIslandB2F.asm
+++ b/maps/WhirlIslandB2F.asm
@@ -33,6 +33,6 @@
 
 .PersonEvents:
 	db 3
-	person_event SPRITE_POKE_BALL, 11, 10, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c4b8, EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
-	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c4ba, EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
-	person_event SPRITE_POKE_BALL, 12, 5, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c4bc, EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
+	person_event SPRITE_POKE_BALL, 11, 10, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c4b8, EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
+	person_event SPRITE_POKE_BALL, 4, 6, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c4ba, EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
+	person_event SPRITE_POKE_BALL, 12, 5, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c4bc, EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
--- a/maps/WhirlIslandLugiaChamber.asm
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -59,4 +59,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_LUGIA, 5, 9, SPRITEMOVEDATA_16, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LugiaScript_0x18c518, EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
+	person_event SPRITE_LUGIA, 5, 9, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, (1 << 3) | PAL_OW_BLUE, 0, 0, LugiaScript_0x18c518, EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
--- a/maps/WhirlIslandNE.asm
+++ b/maps/WhirlIslandNE.asm
@@ -26,4 +26,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 11, 11, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c396, EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 11, 11, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c396, EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
--- a/maps/WhirlIslandSW.asm
+++ b/maps/WhirlIslandSW.asm
@@ -28,4 +28,4 @@
 
 .PersonEvents:
 	db 1
-	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_01, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c3bc, EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
+	person_event SPRITE_POKE_BALL, 2, 15, SPRITEMOVEDATA_ITEM_TREE, 0, 0, -1, -1, 0, 1, 0, ItemFragment_0x18c3bc, EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
--- a/maps/WiseTriosRoom.asm
+++ b/maps/WiseTriosRoom.asm
@@ -360,7 +360,7 @@
 
 .PersonEvents:
 	db 6
-	person_event SPRITE_SAGE, 2, 6, SPRITEMOVEDATA_03, 0, 0, -1, -1, 0, 0, 0, SageScript_0x9859a, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
+	person_event SPRITE_SAGE, 2, 6, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, 0, 0, SageScript_0x9859a, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
 	person_event SPRITE_SAGE, 7, 6, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 0, 1, -1, -1, 0, 0, 0, SageScript_0x9859d, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
 	person_event SPRITE_SAGE, 5, 7, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, 0, 0, SageScript_0x985a0, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_1
 	person_event SPRITE_SAGE, 2, 4, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, 2, 2, TrainerSageGaku, EVENT_WISE_TRIOS_ROOM_WISE_TRIO_2
--- a/maps/map_headers.asm
+++ b/maps/map_headers.asm
@@ -30,466 +30,466 @@
 
 
 MapGroup1:
-	map_header OlivinePokeCenter1F, $7, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header OlivineGym, $12, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header OlivineVoltorbHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header OlivineHouseBeta, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header OlivinePunishmentSpeechHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header OlivineGoodRodHouse, $5, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header OlivineCafe, $e, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header OlivineMart, $c, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header Route38EcruteakGate, $8, GATE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_DAY, 1
-	map_header Route39Barn, $10, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header Route39Farmhouse, $5, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header Route38, $1, ROUTE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_AUTO, 1
-	map_header Route39, $1, ROUTE, ROUTE_39, MUSIC_ROUTE_37, 0, PALETTE_AUTO, 1
-	map_header OlivineCity, $1, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 1
+	map_header OlivinePokeCenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header OlivineGym, TILESET_OLIVINE_GYM, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header OlivineVoltorbHouse, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineHouseBeta, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivinePunishmentSpeechHouse, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineGoodRodHouse, TILESET_HOUSE_1, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineCafe, TILESET_GAME_CORNER, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header OlivineMart, TILESET_MART, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header Route38EcruteakGate, TILESET_GATE, GATE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_DAY, 1
+	map_header Route39Barn, TILESET_KURT_HOUSE, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header Route39Farmhouse, TILESET_HOUSE_1, INDOOR, ROUTE_39, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header Route38, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_38, MUSIC_ROUTE_37, 0, PALETTE_AUTO, 1
+	map_header Route39, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_39, MUSIC_ROUTE_37, 0, PALETTE_AUTO, 1
+	map_header OlivineCity, TILESET_JOHTO_OUTSIDE_1, TOWN, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 1
 
 
 MapGroup2:
-	map_header MahoganyRedGyaradosSpeechHouse, $5, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header MahoganyGym, $f, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header MahoganyPokeCenter1F, $7, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header Route42EcruteakGate, $8, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
-	map_header Route42, $1, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 3
-	map_header Route44, $1, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 4
-	map_header MahoganyTown, $1, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, 1
+	map_header MahoganyRedGyaradosSpeechHouse, TILESET_HOUSE_1, INDOOR, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header MahoganyGym, TILESET_GYM_1, INDOOR, MAHOGANY_TOWN, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header MahoganyPokeCenter1F, TILESET_POKECENTER, INDOOR, MAHOGANY_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route42EcruteakGate, TILESET_GATE, GATE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route42, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_42, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 3
+	map_header Route44, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_44, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 4
+	map_header MahoganyTown, TILESET_JOHTO_OUTSIDE_1, TOWN, MAHOGANY_TOWN, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, 1
 
 
 MapGroup3:
-	map_header SproutTower1F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
-	map_header SproutTower2F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
-	map_header SproutTower3F, $17, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower1F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower2F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower3F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower4F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower5F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower6F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower7F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower8F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header TinTower9F, $17, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
-	map_header BurnedTower1F, $17, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, 1
-	map_header BurnedTowerB1F, $18, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, 1
-	map_header NationalPark, $19, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, PALETTE_AUTO, 1
-	map_header NationalParkBugContest, $19, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, PALETTE_AUTO, 1
-	map_header RadioTower1F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
-	map_header RadioTower2F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
-	map_header RadioTower3F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
-	map_header RadioTower4F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
-	map_header RadioTower5F, $1b, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphOutside, $1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_AUTO, 4
-	map_header RuinsofAlphHoOhChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphKabutoChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphOmanyteChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphAerodactylChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphInnerChamber, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphResearchCenter, $b, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_DAY, 1
-	map_header RuinsofAlphHoOhItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphKabutoItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphOmanyteItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphAerodactylItemRoom, $1a, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphHoOhWordRoom, $21, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphKabutoWordRoom, $22, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphOmanyteWordRoom, $23, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header RuinsofAlphAerodactylWordRoom, $24, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header UnionCave1F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header UnionCaveB1F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header UnionCaveB2F, $18, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 1
-	map_header SlowpokeWellB1F, $18, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 3
-	map_header SlowpokeWellB2F, $18, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 3
-	map_header OlivineLighthouse1F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
-	map_header OlivineLighthouse2F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
-	map_header OlivineLighthouse3F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
-	map_header OlivineLighthouse4F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
-	map_header OlivineLighthouse5F, $13, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
-	map_header OlivineLighthouse6F, $13, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header MahoganyMart1F, $10, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 1, PALETTE_DAY, 1
-	map_header TeamRocketBaseB1F, $1c, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
-	map_header TeamRocketBaseB2F, $b, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
-	map_header TeamRocketBaseB3F, $b, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
-	map_header IlexForest, $1f, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, 0, PALETTE_NITE, 4
-	map_header WarehouseEntrance, $8, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header UndergroundPathSwitchRoomEntrances, $f, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header GoldenrodDeptStoreB1F, $1c, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
-	map_header UndergroundWarehouse, $1c, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
-	map_header MountMortar1FOutside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header MountMortar1FInside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header MountMortar2FInside, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header MountMortarB1F, $1e, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header IcePath1F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
-	map_header IcePathB1F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
-	map_header IcePathB2FMahoganySide, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
-	map_header IcePathB2FBlackthornSide, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
-	map_header IcePathB3F, $1d, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
-	map_header WhirlIslandNW, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandNE, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandSW, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandCave, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandSE, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandB1F, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandB2F, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header WhirlIslandLugiaChamber, $1e, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
-	map_header SilverCaveRoom1, $1e, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DARK, 3
-	map_header SilverCaveRoom2, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, 3
-	map_header SilverCaveRoom3, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DAY, 3
-	map_header SilverCaveItemRooms, $18, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, 3
-	map_header DarkCaveVioletEntrance, $1e, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, 3
-	map_header DarkCaveBlackthornEntrance, $1e, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, 3
-	map_header DragonsDen1F, $18, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 5
-	map_header DragonsDenB1F, $1, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 5
-	map_header DragonShrine, $a, INDOOR, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 1
-	map_header TohjoFalls, $18, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
-	map_header DiglettsCave, $18, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, 1, PALETTE_NITE, 1
-	map_header MountMoon, $18, CAVE, MT_MOON, MUSIC_MT_MOON, 1, PALETTE_NITE, 1
-	map_header Underground, $1c, GATE, UNDERGROUND, MUSIC_MT_MOON, 0, PALETTE_NITE, 1
-	map_header RockTunnel1F, $1e, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, 1
-	map_header RockTunnelB1F, $1e, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, 1
-	map_header SafariZoneFuchsiaGateBeta, $8, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header SafariZoneBeta, $19, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, 0, PALETTE_AUTO, 1
-	map_header VictoryRoad, $18, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 1, PALETTE_NITE, 1
+	map_header SproutTower1F, TILESET_SPROUT_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
+	map_header SproutTower2F, TILESET_SPROUT_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
+	map_header SproutTower3F, TILESET_SPROUT_TOWER, DUNGEON, SPROUT_TOWER, MUSIC_SPROUT_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower1F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower2F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower3F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower4F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower5F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower6F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower7F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower8F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header TinTower9F, TILESET_SPROUT_TOWER, DUNGEON, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_DAY, 1
+	map_header BurnedTower1F, TILESET_SPROUT_TOWER, DUNGEON, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, 1
+	map_header BurnedTowerB1F, TILESET_CAVE, CAVE, BURNED_TOWER, MUSIC_BURNED_TOWER, 1, PALETTE_NITE, 1
+	map_header NationalPark, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_NATIONAL_PARK, 0, PALETTE_AUTO, 1
+	map_header NationalParkBugContest, TILESET_PARK, ROUTE, NATIONAL_PARK, MUSIC_BUG_CATCHING_CONTEST, 0, PALETTE_AUTO, 1
+	map_header RadioTower1F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower2F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower3F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower4F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RadioTower5F, TILESET_RADIO_TOWER, INDOOR, RADIO_TOWER, 1<<7 | MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOutside, TILESET_JOHTO_OUTSIDE_1, ROUTE, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_AUTO, 4
+	map_header RuinsofAlphHoOhChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphKabutoChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOmanyteChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphAerodactylChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphInnerChamber, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_RUINS_OF_ALPH_INTERIOR, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphResearchCenter, TILESET_POWER_PLANT, INDOOR, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 0, PALETTE_DAY, 1
+	map_header RuinsofAlphHoOhItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphKabutoItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOmanyteItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphAerodactylItemRoom, TILESET_RUINS_OF_ALPH, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphHoOhWordRoom, TILESET_HO_OH_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphKabutoWordRoom, TILESET_KABUTO_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphOmanyteWordRoom, TILESET_OMANYTE_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header RuinsofAlphAerodactylWordRoom, TILESET_AERODACTYL_WORD_ROOM, DUNGEON, RUINS_OF_ALPH, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header UnionCave1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header UnionCaveB1F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header UnionCaveB2F, TILESET_CAVE, CAVE, UNION_CAVE, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 1
+	map_header SlowpokeWellB1F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 3
+	map_header SlowpokeWellB2F, TILESET_CAVE, CAVE, SLOWPOKE_WELL, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 3
+	map_header OlivineLighthouse1F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse2F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse3F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse4F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse5F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_LIGHTHOUSE, 0, PALETTE_DAY, 1
+	map_header OlivineLighthouse6F, TILESET_LIGHTHOUSE, DUNGEON, LIGHTHOUSE, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header MahoganyMart1F, TILESET_KURT_HOUSE, INDOOR, MAHOGANY_TOWN, MUSIC_MAHOGANY_MART, 1, PALETTE_DAY, 1
+	map_header TeamRocketBaseB1F, TILESET_UNDERGROUND, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
+	map_header TeamRocketBaseB2F, TILESET_POWER_PLANT, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
+	map_header TeamRocketBaseB3F, TILESET_POWER_PLANT, DUNGEON, MAHOGANY_TOWN, MUSIC_ROCKET_HIDEOUT, 1, PALETTE_DAY, 1
+	map_header IlexForest, TILESET_ILEX_FOREST, CAVE, ILEX_FOREST, MUSIC_UNION_CAVE, 0, PALETTE_NITE, 4
+	map_header WarehouseEntrance, TILESET_GATE, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header UndergroundPathSwitchRoomEntrances, TILESET_GYM_1, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header GoldenrodDeptStoreB1F, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 1, PALETTE_DAY, 1
+	map_header UndergroundWarehouse, TILESET_UNDERGROUND, DUNGEON, GOLDENROD_CITY, MUSIC_UNION_CAVE, 1, PALETTE_DAY, 1
+	map_header MountMortar1FOutside, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header MountMortar1FInside, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header MountMortar2FInside, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header MountMortarB1F, TILESET_WHIRL_ISLANDS, CAVE, MT_MORTAR, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header IcePath1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB1F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB2FMahoganySide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB2FBlackthornSide, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header IcePathB3F, TILESET_ICE_PATH, CAVE, ICE_PATH, MUSIC_DARK_CAVE, 1, PALETTE_NITE, 5
+	map_header WhirlIslandNW, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandNE, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandSW, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandCave, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandSE, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandB1F, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandB2F, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header WhirlIslandLugiaChamber, TILESET_WHIRL_ISLANDS, CAVE, WHIRL_ISLANDS, MUSIC_UNION_CAVE, 1, PALETTE_DARK, 10
+	map_header SilverCaveRoom1, TILESET_WHIRL_ISLANDS, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DARK, 3
+	map_header SilverCaveRoom2, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, 3
+	map_header SilverCaveRoom3, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_DAY, 3
+	map_header SilverCaveItemRooms, TILESET_CAVE, CAVE, SILVER_CAVE, MUSIC_LIGHTHOUSE, 1, PALETTE_NITE, 3
+	map_header DarkCaveVioletEntrance, TILESET_WHIRL_ISLANDS, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, 3
+	map_header DarkCaveBlackthornEntrance, TILESET_WHIRL_ISLANDS, CAVE, DARK_CAVE, MUSIC_DARK_CAVE, 1, PALETTE_DARK, 3
+	map_header DragonsDen1F, TILESET_CAVE, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 5
+	map_header DragonsDenB1F, TILESET_JOHTO_OUTSIDE_1, CAVE, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 5
+	map_header DragonShrine, TILESET_LAB, INDOOR, DRAGONS_DEN, MUSIC_DRAGONS_DEN, 1, PALETTE_NITE, 1
+	map_header TohjoFalls, TILESET_CAVE, CAVE, TOHJO_FALLS, MUSIC_UNION_CAVE, 1, PALETTE_NITE, 3
+	map_header DiglettsCave, TILESET_CAVE, CAVE, DIGLETTS_CAVE, MUSIC_MT_MOON, 1, PALETTE_NITE, 1
+	map_header MountMoon, TILESET_CAVE, CAVE, MT_MOON, MUSIC_MT_MOON, 1, PALETTE_NITE, 1
+	map_header Underground, TILESET_UNDERGROUND, GATE, UNDERGROUND, MUSIC_MT_MOON, 0, PALETTE_NITE, 1
+	map_header RockTunnel1F, TILESET_WHIRL_ISLANDS, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, 1
+	map_header RockTunnelB1F, TILESET_WHIRL_ISLANDS, CAVE, ROCK_TUNNEL, MUSIC_MT_MOON, 1, PALETTE_DARK, 1
+	map_header SafariZoneFuchsiaGateBeta, TILESET_GATE, INDOOR, FUCHSIA_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SafariZoneBeta, TILESET_PARK, CAVE, FUCHSIA_CITY, MUSIC_EVOLUTION, 0, PALETTE_AUTO, 1
+	map_header VictoryRoad, TILESET_CAVE, CAVE, VICTORY_ROAD, MUSIC_VICTORY_ROAD, 1, PALETTE_NITE, 1
 
 
 MapGroup4:
-	map_header EcruteakHouse, $17, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header WiseTriosRoom, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, PALETTE_DAY, 1
-	map_header EcruteakPokeCenter1F, $7, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header EcruteakLugiaSpeechHouse, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header DanceTheatre, $10, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 0, PALETTE_DAY, 1
-	map_header EcruteakMart, $c, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header EcruteakGym, $17, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header EcruteakItemfinderHouse, $10, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header EcruteakCity, $1, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, 4
+	map_header EcruteakHouse, TILESET_SPROUT_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header WiseTriosRoom, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 1, PALETTE_DAY, 1
+	map_header EcruteakPokeCenter1F, TILESET_POKECENTER, INDOOR, ECRUTEAK_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header EcruteakLugiaSpeechHouse, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header DanceTheatre, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_DANCING_HALL, 0, PALETTE_DAY, 1
+	map_header EcruteakMart, TILESET_MART, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header EcruteakGym, TILESET_SPROUT_TOWER, INDOOR, ECRUTEAK_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header EcruteakItemfinderHouse, TILESET_KURT_HOUSE, INDOOR, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header EcruteakCity, TILESET_JOHTO_OUTSIDE_1, TOWN, ECRUTEAK_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, 4
 
 
 MapGroup5:
-	map_header BlackthornGym1F, $f, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header BlackthornGym2F, $f, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header BlackthornDragonSpeechHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header BlackthornDodrioTradeHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header BlackthornMart, $c, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header BlackthornPokeCenter1F, $7, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header MoveDeletersHouse, $5, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header Route45, $1, ROUTE, ROUTE_45, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 9
-	map_header Route46, $1, ROUTE, ROUTE_46, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
-	map_header BlackthornCity, $1, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, 4
+	map_header BlackthornGym1F, TILESET_GYM_1, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header BlackthornGym2F, TILESET_GYM_1, INDOOR, BLACKTHORN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header BlackthornDragonSpeechHouse, TILESET_HOUSE_1, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header BlackthornDodrioTradeHouse, TILESET_HOUSE_1, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header BlackthornMart, TILESET_MART, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header BlackthornPokeCenter1F, TILESET_POKECENTER, INDOOR, BLACKTHORN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header MoveDeletersHouse, TILESET_HOUSE_1, INDOOR, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route45, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_45, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 9
+	map_header Route46, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_46, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header BlackthornCity, TILESET_JOHTO_OUTSIDE_1, TOWN, BLACKTHORN_CITY, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, 4
 
 
 MapGroup6:
-	map_header CinnabarPokeCenter1F, $7, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CinnabarPokeCenter2FBeta, $7, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header Route19FuchsiaGate, $8, GATE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
-	map_header SeafoamGym, $18, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header Route19, $3, ROUTE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header Route20, $3, ROUTE, ROUTE_20, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 2
-	map_header Route21, $3, ROUTE, ROUTE_21, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 2
-	map_header CinnabarIsland, $3, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 2
+	map_header CinnabarPokeCenter1F, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CinnabarPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, CINNABAR_ISLAND, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route19FuchsiaGate, TILESET_GATE, GATE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header SeafoamGym, TILESET_CAVE, INDOOR, SEAFOAM_ISLANDS, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header Route19, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_19, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route20, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_20, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 2
+	map_header Route21, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_21, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 2
+	map_header CinnabarIsland, TILESET_KANTO_OUTSIDE, TOWN, CINNABAR_ISLAND, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 2
 
 
 MapGroup7:
-	map_header CeruleanGymBadgeSpeechHouse, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header CeruleanPoliceStation, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header CeruleanTradeSpeechHouse, $5, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header CeruleanPokeCenter1F, $7, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CeruleanPokeCenter2FBeta, $7, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CeruleanGym, $9, INDOOR, CERULEAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 0
-	map_header CeruleanMart, $c, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header Route10PokeCenter1F, $7, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header Route10PokeCenter2FBeta, $7, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header PowerPlant, $b, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header BillsHouse, $5, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header Route4, $3, ROUTE, ROUTE_4, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 0
-	map_header Route9, $3, ROUTE, ROUTE_9, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
-	map_header Route10North, $3, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
-	map_header Route24, $3, ROUTE, ROUTE_24, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
-	map_header Route25, $3, ROUTE, ROUTE_25, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
-	map_header CeruleanCity, $3, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 0
+	map_header CeruleanGymBadgeSpeechHouse, TILESET_HOUSE_1, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CeruleanPoliceStation, TILESET_HOUSE_1, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CeruleanTradeSpeechHouse, TILESET_HOUSE_1, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CeruleanPokeCenter1F, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CeruleanPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, CERULEAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CeruleanGym, TILESET_PORT, INDOOR, CERULEAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 0
+	map_header CeruleanMart, TILESET_MART, INDOOR, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route10PokeCenter1F, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route10PokeCenter2FBeta, TILESET_POKECENTER, INDOOR, ROUTE_10, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header PowerPlant, TILESET_POWER_PLANT, INDOOR, POWER_PLANT, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header BillsHouse, TILESET_HOUSE_1, INDOOR, ROUTE_25, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route4, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_4, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 0
+	map_header Route9, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_9, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header Route10North, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header Route24, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_24, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header Route25, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_25, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header CeruleanCity, TILESET_KANTO_OUTSIDE, TOWN, CERULEAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 0
 
 
 MapGroup8:
-	map_header AzaleaPokeCenter1F, $7, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CharcoalKiln, $5, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header AzaleaMart, $c, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header KurtsHouse, $10, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header AzaleaGym, $f, INDOOR, AZALEA_TOWN, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header Route33, $2, ROUTE, ROUTE_33, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 1
-	map_header AzaleaTown, $2, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, 1
+	map_header AzaleaPokeCenter1F, TILESET_POKECENTER, INDOOR, AZALEA_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CharcoalKiln, TILESET_HOUSE_1, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header AzaleaMart, TILESET_MART, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header KurtsHouse, TILESET_KURT_HOUSE, INDOOR, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header AzaleaGym, TILESET_GYM_1, INDOOR, AZALEA_TOWN, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header Route33, TILESET_JOHTO_OUTSIDE_2, ROUTE, ROUTE_33, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 1
+	map_header AzaleaTown, TILESET_JOHTO_OUTSIDE_2, TOWN, AZALEA_TOWN, MUSIC_AZALEA_TOWN, 0, PALETTE_AUTO, 1
 
 
 MapGroup9:
-	map_header LakeofRageHiddenPowerHouse, $5, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
-	map_header LakeofRageMagikarpHouse, $5, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
-	map_header Route43MahoganyGate, $8, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
-	map_header Route43Gate, $8, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
-	map_header Route43, $1, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 4
-	map_header LakeofRage, $1, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 8
+	map_header LakeofRageHiddenPowerHouse, TILESET_HOUSE_1, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header LakeofRageMagikarpHouse, TILESET_HOUSE_1, INDOOR, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route43MahoganyGate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route43Gate, TILESET_GATE, GATE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_DAY, 1
+	map_header Route43, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_43, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 4
+	map_header LakeofRage, TILESET_JOHTO_OUTSIDE_1, TOWN, LAKE_OF_RAGE, MUSIC_LAKE_OF_RAGE, 0, PALETTE_AUTO, 8
 
 
 MapGroup10:
-	map_header Route32, $1, ROUTE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 11
-	map_header Route35, $1, ROUTE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 4
-	map_header Route36, $1, ROUTE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
-	map_header Route37, $1, ROUTE, ROUTE_37, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
-	map_header VioletCity, $1, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 4
-	map_header VioletMart, $c, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header VioletGym, $f, INDOOR, VIOLET_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header EarlsPokemonAcademy, $a, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header VioletNicknameSpeechHouse, $10, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header VioletPokeCenter1F, $7, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header VioletOnixTradeHouse, $10, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header Route32RuinsofAlphGate, $8, GATE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_DAY, 1
-	map_header Route32PokeCenter1F, $7, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header Route35Goldenrodgate, $8, GATE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
-	map_header Route35NationalParkgate, $8, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header Route36RuinsofAlphgate, $8, GATE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
-	map_header Route36NationalParkgate, $8, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header Route32, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 11
+	map_header Route35, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 4
+	map_header Route36, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header Route37, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_37, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header VioletCity, TILESET_JOHTO_OUTSIDE_1, TOWN, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 4
+	map_header VioletMart, TILESET_MART, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VioletGym, TILESET_GYM_1, INDOOR, VIOLET_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header EarlsPokemonAcademy, TILESET_LAB, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VioletNicknameSpeechHouse, TILESET_KURT_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VioletPokeCenter1F, TILESET_POKECENTER, INDOOR, VIOLET_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header VioletOnixTradeHouse, TILESET_KURT_HOUSE, INDOOR, VIOLET_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header Route32RuinsofAlphGate, TILESET_GATE, GATE, ROUTE_32, MUSIC_ROUTE_30, 0, PALETTE_DAY, 1
+	map_header Route32PokeCenter1F, TILESET_POKECENTER, INDOOR, ROUTE_32, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route35Goldenrodgate, TILESET_GATE, GATE, ROUTE_35, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header Route35NationalParkgate, TILESET_GATE, INDOOR, ROUTE_35, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header Route36RuinsofAlphgate, TILESET_GATE, GATE, ROUTE_36, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header Route36NationalParkgate, TILESET_GATE, INDOOR, ROUTE_36, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup11:
-	map_header Route34, $2, ROUTE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
-	map_header GoldenrodCity, $2, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_AUTO, 1
-	map_header GoldenrodGym, $f, INDOOR, GOLDENROD_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header GoldenrodBikeShop, $12, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodHappinessRater, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodBillsHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodMagnetTrainStation, $11, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodFlowerShop, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodPPSpeechHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodNameRatersHouse, $5, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStore1F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStore2F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStore3F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStore4F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStore5F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStore6F, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStoreElevator, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodDeptStoreRoof, $c, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
-	map_header GoldenrodGameCorner, $e, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, 1
-	map_header GoldenrodPokeCenter1F, $7, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header GoldenrodPokeComCenter2FMobile, $15, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header IlexForestAzaleaGate, $8, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
-	map_header Route34IlexForestGate, $8, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
-	map_header DayCare, $5, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route34, TILESET_JOHTO_OUTSIDE_2, ROUTE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header GoldenrodCity, TILESET_JOHTO_OUTSIDE_2, TOWN, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_AUTO, 1
+	map_header GoldenrodGym, TILESET_GYM_1, INDOOR, GOLDENROD_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header GoldenrodBikeShop, TILESET_OLIVINE_GYM, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodHappinessRater, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodBillsHouse, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodMagnetTrainStation, TILESET_TRAIN_STATION, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodFlowerShop, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodPPSpeechHouse, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodNameRatersHouse, TILESET_HOUSE_1, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore1F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore2F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore3F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore4F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore5F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStore6F, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStoreElevator, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodDeptStoreRoof, TILESET_MART, INDOOR, GOLDENROD_CITY, MUSIC_GOLDENROD_CITY, 0, PALETTE_DAY, 1
+	map_header GoldenrodGameCorner, TILESET_GAME_CORNER, INDOOR, GOLDENROD_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, 1
+	map_header GoldenrodPokeCenter1F, TILESET_POKECENTER, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header GoldenrodPokeComCenter2FMobile, TILESET_GOLDENROD_POKECOM_CENTER_2F_MOBILE, INDOOR, GOLDENROD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header IlexForestAzaleaGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header Route34IlexForestGate, TILESET_GATE, GATE, ROUTE_34, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header DayCare, TILESET_HOUSE_1, INDOOR, ROUTE_34, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
 
 
 MapGroup12:
-	map_header Route6, $3, ROUTE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 4
-	map_header Route11, $3, ROUTE, ROUTE_11, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
-	map_header VermilionCity, $3, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, 2
-	map_header VermilionHouseFishingSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header VermilionPokeCenter1F, $7, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header VermilionPokeCenter2FBeta, $7, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header PokemonFanClub, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header VermilionMagnetTrainSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header VermilionMart, $c, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header VermilionHouseDiglettsCaveSpeechHouse, $5, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header VermilionGym, $e, INDOOR, VERMILION_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header Route6SaffronGate, $8, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
-	map_header Route6UndergroundEntrance, $8, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route6, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 4
+	map_header Route11, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_11, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
+	map_header VermilionCity, TILESET_KANTO_OUTSIDE, TOWN, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, 2
+	map_header VermilionHouseFishingSpeechHouse, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionPokeCenter1F, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header VermilionPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header PokemonFanClub, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionMagnetTrainSpeechHouse, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionMart, TILESET_MART, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionHouseDiglettsCaveSpeechHouse, TILESET_HOUSE_1, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionGym, TILESET_GAME_CORNER, INDOOR, VERMILION_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header Route6SaffronGate, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route6UndergroundEntrance, TILESET_GATE, GATE, ROUTE_6, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
 
 
 MapGroup13:
-	map_header Route1, $3, ROUTE, ROUTE_1, MUSIC_ROUTE_1, 0, PALETTE_AUTO, 1
-	map_header PalletTown, $3, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_AUTO, 2
-	map_header RedsHouse1F, $6, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
-	map_header RedsHouse2F, $6, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
-	map_header BluesHouse, $5, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
-	map_header OaksLab, $a, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, 0, PALETTE_DAY, 1
+	map_header Route1, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_1, MUSIC_ROUTE_1, 0, PALETTE_AUTO, 1
+	map_header PalletTown, TILESET_KANTO_OUTSIDE, TOWN, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_AUTO, 2
+	map_header RedsHouse1F, TILESET_KRISS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
+	map_header RedsHouse2F, TILESET_KRISS_HOUSE, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
+	map_header BluesHouse, TILESET_HOUSE_1, INDOOR, PALLET_TOWN, MUSIC_PALLET_TOWN, 0, PALETTE_DAY, 1
+	map_header OaksLab, TILESET_LAB, INDOOR, PALLET_TOWN, MUSIC_POKEMON_TALK, 0, PALETTE_DAY, 1
 
 
 MapGroup14:
-	map_header Route3, $3, ROUTE, ROUTE_3, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header PewterCity, $3, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 1
-	map_header PewterNidoranSpeechHouse, $5, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header PewterGym, $17, INDOOR, PEWTER_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header PewterMart, $c, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header PewterPokeCenter1F, $7, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header PewterPokeCEnter2FBeta, $7, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header PewterSnoozeSpeechHouse, $5, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route3, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_3, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header PewterCity, TILESET_KANTO_OUTSIDE, TOWN, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 1
+	map_header PewterNidoranSpeechHouse, TILESET_HOUSE_1, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header PewterGym, TILESET_SPROUT_TOWER, INDOOR, PEWTER_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header PewterMart, TILESET_MART, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header PewterPokeCenter1F, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header PewterPokeCEnter2FBeta, TILESET_POKECENTER, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header PewterSnoozeSpeechHouse, TILESET_HOUSE_1, INDOOR, PEWTER_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup15:
-	map_header OlivinePort, $9, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 2
-	map_header VermilionPort, $9, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, 2
-	map_header FastShip1F, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
-	map_header FastShipCabins_NNW_NNE_NE, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
-	map_header FastShipCabins_SW_SSW_NW, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
-	map_header FastShipCabins_SE_SSE_CaptainsCabin, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
-	map_header FastShipB1F, $13, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
-	map_header OlivinePortPassage, $1c, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
-	map_header VermilionPortPassage, $1c, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
-	map_header MountMoonSquare, $3, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, 0, PALETTE_AUTO, 1
-	map_header MountMoonGiftShop, $10, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header TinTowerRoof, $17, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_AUTO, 1
+	map_header OlivinePort, TILESET_PORT, ROUTE, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_AUTO, 2
+	map_header VermilionPort, TILESET_PORT, ROUTE, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_AUTO, 2
+	map_header FastShip1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipCabins_NNW_NNE_NE, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipCabins_SW_SSW_NW, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipCabins_SE_SSE_CaptainsCabin, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header FastShipB1F, TILESET_LIGHTHOUSE, INDOOR, FAST_SHIP, MUSIC_SS_AQUA, 0, PALETTE_DAY, 1
+	map_header OlivinePortPassage, TILESET_UNDERGROUND, INDOOR, OLIVINE_CITY, MUSIC_VIOLET_CITY, 0, PALETTE_DAY, 1
+	map_header VermilionPortPassage, TILESET_UNDERGROUND, INDOOR, VERMILION_CITY, MUSIC_VERMILION_CITY, 0, PALETTE_DAY, 1
+	map_header MountMoonSquare, TILESET_KANTO_OUTSIDE, ROUTE, MT_MOON, MUSIC_MT_MOON_SQUARE, 0, PALETTE_AUTO, 1
+	map_header MountMoonGiftShop, TILESET_KURT_HOUSE, INDOOR, MT_MOON, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header TinTowerRoof, TILESET_SPROUT_TOWER, ROUTE, TIN_TOWER, MUSIC_TIN_TOWER, 0, PALETTE_AUTO, 1
 
 
 MapGroup16:
-	map_header Route23, $3, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 1
-	map_header IndigoPlateauPokeCenter1F, $7, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, 1
-	map_header WillsRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
-	map_header KogasRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
-	map_header BrunosRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
-	map_header KarensRoom, $f, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
-	map_header LancesRoom, $12, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
-	map_header HallOfFame, $1d, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 1, PALETTE_DAY, 1
+	map_header Route23, TILESET_KANTO_OUTSIDE, TOWN, ROUTE_23, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 1
+	map_header IndigoPlateauPokeCenter1F, TILESET_POKECENTER, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, 1
+	map_header WillsRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header KogasRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header BrunosRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header KarensRoom, TILESET_GYM_1, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header LancesRoom, TILESET_OLIVINE_GYM, INDOOR, INDIGO_PLATEAU, MUSIC_INDIGO_PLATEAU, 1, PALETTE_DAY, 1
+	map_header HallOfFame, TILESET_ICE_PATH, INDOOR, INDIGO_PLATEAU, MUSIC_NEW_BARK_TOWN, 1, PALETTE_DAY, 1
 
 
 MapGroup17:
-	map_header Route13, $3, ROUTE, ROUTE_13, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 13
-	map_header Route14, $3, ROUTE, ROUTE_14, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
-	map_header Route15, $3, ROUTE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
-	map_header Route18, $3, ROUTE, ROUTE_18, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header FuchsiaCity, $3, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, 8
-	map_header FuchsiaMart, $c, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header SafariZoneMainOffice, $e, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header FuchsiaGym, $a, INDOOR, FUCHSIA_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header FuchsiaBillSpeechHouse, $5, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header FuchsiaPokeCenter1F, $7, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header FuchsiaPokeCenter2FBeta, $7, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header SafariZoneWardensHome, $5, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header Route15FuchsiaGate, $8, GATE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_DAY, 1
+	map_header Route13, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_13, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 13
+	map_header Route14, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_14, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
+	map_header Route15, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 1
+	map_header Route18, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_18, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header FuchsiaCity, TILESET_KANTO_OUTSIDE, TOWN, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, 8
+	map_header FuchsiaMart, TILESET_MART, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header SafariZoneMainOffice, TILESET_GAME_CORNER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header FuchsiaGym, TILESET_LAB, INDOOR, FUCHSIA_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header FuchsiaBillSpeechHouse, TILESET_HOUSE_1, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header FuchsiaPokeCenter1F, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header FuchsiaPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header SafariZoneWardensHome, TILESET_HOUSE_1, INDOOR, FUCHSIA_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header Route15FuchsiaGate, TILESET_GATE, GATE, ROUTE_15, MUSIC_ROUTE_12, 0, PALETTE_DAY, 1
 
 
 MapGroup18:
-	map_header Route8, $3, ROUTE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header Route12, $3, ROUTE, ROUTE_12, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 13
-	map_header Route10South, $3, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
-	map_header LavenderTown, $3, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_AUTO, 1
-	map_header LavenderPokeCenter1F, $7, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header LavenderPokeCenter2FBeta, $7, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header MrFujisHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
-	map_header LavenderTownSpeechHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
-	map_header LavenderNameRater, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
-	map_header LavenderMart, $c, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
-	map_header SoulHouse, $5, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
-	map_header LavRadioTower1F, $1b, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
-	map_header Route8SaffronGate, $8, GATE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
-	map_header Route12SuperRodHouse, $5, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route8, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route12, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_12, MUSIC_ROUTE_12, 0, PALETTE_AUTO, 13
+	map_header Route10South, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_10, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 3
+	map_header LavenderTown, TILESET_KANTO_OUTSIDE, TOWN, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_AUTO, 1
+	map_header LavenderPokeCenter1F, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header LavenderPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, LAVENDER_TOWN, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header MrFujisHouse, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavenderTownSpeechHouse, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavenderNameRater, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavenderMart, TILESET_MART, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header SoulHouse, TILESET_HOUSE_1, INDOOR, LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header LavRadioTower1F, TILESET_RADIO_TOWER, INDOOR, LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, 0, PALETTE_DAY, 1
+	map_header Route8SaffronGate, TILESET_GATE, GATE, ROUTE_8, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route12SuperRodHouse, TILESET_HOUSE_1, INDOOR, ROUTE_12, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup19:
-	map_header Route28, $3, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 4
-	map_header SilverCaveOutside, $3, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 4
-	map_header SilverCavePokeCenter1F, $7, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header Route28FamousSpeechHouse, $5, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route28, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_28, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 4
+	map_header SilverCaveOutside, TILESET_KANTO_OUTSIDE, TOWN, SILVER_CAVE, MUSIC_INDIGO_PLATEAU, 0, PALETTE_AUTO, 4
+	map_header SilverCavePokeCenter1F, TILESET_POKECENTER, INDOOR, SILVER_CAVE, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header Route28FamousSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_28, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
 
 
 MapGroup20:
-	map_header PokeCenter2F, $7, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 1, PALETTE_DAY, 1
-	map_header TradeCenter, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
-	map_header Colosseum, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
-	map_header TimeCapsule, $8, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
-	map_header MobileTradeRoomMobile, $d, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
-	map_header MobileBattleRoom, $d, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header PokeCenter2F, TILESET_POKECENTER, INDOOR, SPECIAL_MAP, MUSIC_POKEMON_CENTER, 1, PALETTE_DAY, 1
+	map_header TradeCenter, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header Colosseum, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header TimeCapsule, TILESET_GATE, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header MobileTradeRoomMobile, TILESET_CELADON_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
+	map_header MobileBattleRoom, TILESET_CELADON_MANSION, INDOOR, SPECIAL_MAP, MUSIC_CHERRYGROVE_CITY, 1, PALETTE_DAY, 1
 
 
 MapGroup21:
-	map_header Route7, $3, ROUTE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header Route16, $3, ROUTE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header Route17, $3, ROUTE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 0
-	map_header CeladonCity, $3, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, 0
-	map_header CeladonDeptStore1F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonDeptStore2F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonDeptStore3F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonDeptStore4F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonDeptStore5F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonDeptStore6F, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonDeptStoreElevator, $c, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonMansion1F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonMansion2F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonMansion3F, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonMansionRoof, $d, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonMansionRoofHouse, $5, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonPokeCenter1F, $7, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CeladonPokeCenter2FBeta, $7, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonGameCorner, $e, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, 1
-	map_header CeladonGameCornerPrizeRoom, $e, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header CeladonGym, $11, INDOOR, CELADON_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header CeladonCafe, $e, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header Route16FuchsiaSpeechHouse, $5, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
-	map_header Route16Gate, $8, GATE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
-	map_header Route7SaffronGate, $8, GATE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
-	map_header Route1718Gate, $8, GATE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route7, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route16, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header Route17, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 0
+	map_header CeladonCity, TILESET_KANTO_OUTSIDE, TOWN, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_AUTO, 0
+	map_header CeladonDeptStore1F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore2F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore3F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore4F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore5F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStore6F, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonDeptStoreElevator, TILESET_MART, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansion1F, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansion2F, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansion3F, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansionRoof, TILESET_CELADON_MANSION, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonMansionRoofHouse, TILESET_HOUSE_1, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonPokeCenter1F, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CeladonPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonGameCorner, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_GAME_CORNER, 0, PALETTE_DAY, 1
+	map_header CeladonGameCornerPrizeRoom, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header CeladonGym, TILESET_TRAIN_STATION, INDOOR, CELADON_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header CeladonCafe, TILESET_GAME_CORNER, INDOOR, CELADON_CITY, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header Route16FuchsiaSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_16, MUSIC_CELADON_CITY, 0, PALETTE_DAY, 1
+	map_header Route16Gate, TILESET_GATE, GATE, ROUTE_16, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route7SaffronGate, TILESET_GATE, GATE, ROUTE_7, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route1718Gate, TILESET_GATE, GATE, ROUTE_17, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
 
 
 MapGroup22:
-	map_header Route40, $1, ROUTE, ROUTE_40, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
-	map_header Route41, $1, ROUTE, ROUTE_41, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 2
-	map_header CianwoodCity, $1, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, 1
-	map_header ManiasHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header CianwoodGym, $17, INDOOR, CIANWOOD_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header CianwoodPokeCenter1F, $7, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CianwoodPharmacy, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header CianwoodCityPhotoStudio, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header CianwoodLugiaSpeechHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header PokeSeersHouse, $5, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
-	map_header BattleTower1F, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 1, PALETTE_DAY, 1
-	map_header BattleTowerBattleRoom, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, 1
-	map_header BattleTowerElevator, $16, INDOOR, BATTLE_TOWER, MUSIC_NONE, 1, PALETTE_DAY, 1
-	map_header BattleTowerHallway, $16, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, 1
-	map_header Route40BattleTowerGate, $8, GATE, BATTLE_TOWER, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
-	map_header BattleTowerOutside, $4, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, PALETTE_AUTO, 1
+	map_header Route40, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_40, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 1
+	map_header Route41, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_41, MUSIC_ROUTE_36, 0, PALETTE_AUTO, 2
+	map_header CianwoodCity, TILESET_JOHTO_OUTSIDE_1, TOWN, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_AUTO, 1
+	map_header ManiasHouse, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header CianwoodGym, TILESET_SPROUT_TOWER, INDOOR, CIANWOOD_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header CianwoodPokeCenter1F, TILESET_POKECENTER, INDOOR, CIANWOOD_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CianwoodPharmacy, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header CianwoodCityPhotoStudio, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header CianwoodLugiaSpeechHouse, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header PokeSeersHouse, TILESET_HOUSE_1, INDOOR, CIANWOOD_CITY, MUSIC_ECRUTEAK_CITY, 0, PALETTE_DAY, 1
+	map_header BattleTower1F, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_LOBBY, 1, PALETTE_DAY, 1
+	map_header BattleTowerBattleRoom, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, 1
+	map_header BattleTowerElevator, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_NONE, 1, PALETTE_DAY, 1
+	map_header BattleTowerHallway, TILESET_BATTLE_TOWER, INDOOR, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 1, PALETTE_DAY, 1
+	map_header Route40BattleTowerGate, TILESET_GATE, GATE, BATTLE_TOWER, MUSIC_ROUTE_36, 0, PALETTE_DAY, 1
+	map_header BattleTowerOutside, TILESET_BATTLE_TOWER_OUTSIDE, ROUTE, BATTLE_TOWER, MUSIC_BATTLE_TOWER_THEME, 0, PALETTE_AUTO, 1
 
 
 MapGroup23:
-	map_header Route2, $3, ROUTE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_AUTO, 1
-	map_header Route22, $3, ROUTE, ROUTE_22, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 4
-	map_header ViridianCity, $3, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 4
-	map_header ViridianGym, $11, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header ViridianNicknameSpeechHouse, $5, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header TrainerHouse1F, $5, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header TrainerHouseB1F, $b, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header ViridianMart, $c, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header ViridianPokeCenter1F, $7, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header ViridianPokeCenter2FBeta, $7, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header Route2NuggetSpeechHouse, $5, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header Route2Gate, $8, GATE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_DAY, 1
-	map_header VictoryRoadGate, $8, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, 1
+	map_header Route2, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_AUTO, 1
+	map_header Route22, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_22, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 4
+	map_header ViridianCity, TILESET_KANTO_OUTSIDE, TOWN, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 4
+	map_header ViridianGym, TILESET_TRAIN_STATION, INDOOR, VIRIDIAN_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header ViridianNicknameSpeechHouse, TILESET_HOUSE_1, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header TrainerHouse1F, TILESET_HOUSE_1, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header TrainerHouseB1F, TILESET_POWER_PLANT, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header ViridianMart, TILESET_MART, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header ViridianPokeCenter1F, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header ViridianPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, VIRIDIAN_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route2NuggetSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_2, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route2Gate, TILESET_GATE, GATE, ROUTE_2, MUSIC_ROUTE_2, 0, PALETTE_DAY, 1
+	map_header VictoryRoadGate, TILESET_GATE, GATE, ROUTE_26, MUSIC_INDIGO_PLATEAU, 0, PALETTE_DAY, 1
 
 
 MapGroup24:
-	map_header Route26, $1, ROUTE, ROUTE_26, MUSIC_ROUTE_26, 0, PALETTE_AUTO, 2
-	map_header Route27, $1, ROUTE, ROUTE_27, MUSIC_ROUTE_26, 0, PALETTE_AUTO, 2
-	map_header Route29, $1, ROUTE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_AUTO, 1
-	map_header NewBarkTown, $1, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_AUTO, 2
-	map_header ElmsLab, $a, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, 0, PALETTE_DAY, 1
-	map_header KrissHouse1F, $6, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
-	map_header KrissHouse2F, $14, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
-	map_header KrissNeighborsHouse, $5, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
-	map_header ElmsHouse, $6, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
-	map_header Route26HealSpeechHouse, $5, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header Route26DayofWeekSiblingsHouse, $5, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header Route27SandstormHouse, $5, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
-	map_header Route2946Gate, $8, GATE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_DAY, 1
+	map_header Route26, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_26, MUSIC_ROUTE_26, 0, PALETTE_AUTO, 2
+	map_header Route27, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_27, MUSIC_ROUTE_26, 0, PALETTE_AUTO, 2
+	map_header Route29, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_AUTO, 1
+	map_header NewBarkTown, TILESET_JOHTO_OUTSIDE_1, TOWN, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_AUTO, 2
+	map_header ElmsLab, TILESET_LAB, INDOOR, NEW_BARK_TOWN, MUSIC_PROF_ELM, 0, PALETTE_DAY, 1
+	map_header KrissHouse1F, TILESET_KRISS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header KrissHouse2F, TILESET_KRISS_HOUSE_2F, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header KrissNeighborsHouse, TILESET_HOUSE_1, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header ElmsHouse, TILESET_KRISS_HOUSE, INDOOR, NEW_BARK_TOWN, MUSIC_NEW_BARK_TOWN, 0, PALETTE_DAY, 1
+	map_header Route26HealSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route26DayofWeekSiblingsHouse, TILESET_HOUSE_1, INDOOR, ROUTE_26, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route27SandstormHouse, TILESET_HOUSE_1, INDOOR, ROUTE_27, MUSIC_AZALEA_TOWN, 0, PALETTE_DAY, 1
+	map_header Route2946Gate, TILESET_GATE, GATE, ROUTE_29, MUSIC_ROUTE_29, 0, PALETTE_DAY, 1
 
 
 MapGroup25:
-	map_header Route5, $3, ROUTE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
-	map_header SaffronCity, $3, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 1
-	map_header FightingDojo, $11, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header SaffronGym, $1c, INDOOR, SAFFRON_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
-	map_header SaffronMart, $c, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header SaffronPokeCenter1F, $7, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header SaffronPokeCenter2FBeta, $7, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header MrPsychicsHouse, $5, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header SaffronTrainStation, $11, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header SilphCo1F, $b, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header CopycatsHouse1F, $6, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header CopycatsHouse2F, $6, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header Route5UndergroundEntrance, $8, GATE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
-	map_header Route5SaffronCityGate, $8, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
-	map_header Route5CleanseTagSpeechHouse, $5, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route5, TILESET_KANTO_OUTSIDE, ROUTE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_AUTO, 1
+	map_header SaffronCity, TILESET_KANTO_OUTSIDE, TOWN, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_AUTO, 1
+	map_header FightingDojo, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SaffronGym, TILESET_UNDERGROUND, INDOOR, SAFFRON_CITY, MUSIC_GYM, 1, PALETTE_DAY, 1
+	map_header SaffronMart, TILESET_MART, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SaffronPokeCenter1F, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header SaffronPokeCenter2FBeta, TILESET_POKECENTER, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header MrPsychicsHouse, TILESET_HOUSE_1, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SaffronTrainStation, TILESET_TRAIN_STATION, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header SilphCo1F, TILESET_POWER_PLANT, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CopycatsHouse1F, TILESET_KRISS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header CopycatsHouse2F, TILESET_KRISS_HOUSE, INDOOR, SAFFRON_CITY, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route5UndergroundEntrance, TILESET_GATE, GATE, ROUTE_5, MUSIC_ROUTE_3, 0, PALETTE_DAY, 1
+	map_header Route5SaffronCityGate, TILESET_GATE, GATE, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
+	map_header Route5CleanseTagSpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_5, MUSIC_VIRIDIAN_CITY, 0, PALETTE_DAY, 1
 
 
 MapGroup26:
-	map_header Route30, $1, ROUTE, ROUTE_30, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 4
-	map_header Route31, $1, ROUTE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 4
-	map_header CherrygroveCity, $1, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, 1
-	map_header CherrygroveMart, $c, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header CherrygrovePokeCenter1F, $7, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
-	map_header CherrygroveGymSpeechHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header GuideGentsHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header CherrygroveEvolutionSpeechHouse, $5, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header Route30BerrySpeechHouse, $5, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header MrPokemonsHouse, $b, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
-	map_header Route31VioletGate, $8, GATE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_DAY, 1
+	map_header Route30, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_30, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 4
+	map_header Route31, TILESET_JOHTO_OUTSIDE_1, ROUTE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_AUTO, 4
+	map_header CherrygroveCity, TILESET_JOHTO_OUTSIDE_1, TOWN, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_AUTO, 1
+	map_header CherrygroveMart, TILESET_MART, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header CherrygrovePokeCenter1F, TILESET_POKECENTER, INDOOR, CHERRYGROVE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, 1
+	map_header CherrygroveGymSpeechHouse, TILESET_HOUSE_1, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header GuideGentsHouse, TILESET_HOUSE_1, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header CherrygroveEvolutionSpeechHouse, TILESET_HOUSE_1, INDOOR, CHERRYGROVE_CITY, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header Route30BerrySpeechHouse, TILESET_HOUSE_1, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header MrPokemonsHouse, TILESET_POWER_PLANT, INDOOR, ROUTE_30, MUSIC_CHERRYGROVE_CITY, 0, PALETTE_DAY, 1
+	map_header Route31VioletGate, TILESET_GATE, GATE, ROUTE_31, MUSIC_ROUTE_30, 0, PALETTE_DAY, 1
--- /dev/null
+++ b/misc/battle_tower_47.asm
@@ -1,0 +1,4871 @@
+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, 3 ; BANK(BT_OTTrainerClass)
+	ld [rSVBK], a
+IF DEF(CRYSTAL11)
+	ld hl, BT_OTTrainerClass
+ELSE
+	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
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld h, a
+	ld l, c
+	pop af
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld l, c
+	ld h, a
+	bccoord 1, 14
+	pop af
+	ld [rSVBK], a
+	call PlaceWholeStringInBoxAtOnce
+	ret
+; 11c05d
+
+Function11c05d: ; 11c05d
+	ld a, e
+	or d
+	jr z, .asm_11c071
+	ld a, e
+	and d
+	cp $ff
+	jr z, .asm_11c071
+	push hl
+	call Function11c156
+	pop hl
+	call PlaceString
+	and a
+	ret
+
+.asm_11c071
+	ld c, l
+	ld b, h
+	scf
+	ret
+; 11c075
+
+Function11c075: ; 11c075
+	push de
+	ld a, c
+	call Function11c254
+	pop de
+	ld bc, wcd36
+	call Function11c08f
+	ret
+; 11c082
+
+Function11c082: ; 11c082
+	push de
+	ld a, c
+	call Function11c254
+	pop de
+	ld bc, wcd36
+	call Function11c0c6
+	ret
+; 11c08f
+
+Function11c08f: ; 11c08f
+	ld l, e
+	ld h, d
+	push hl
+	ld a, $3
+.asm_11c094
+	push af
+	ld a, [bc]
+	ld e, a
+	inc bc
+	ld a, [bc]
+	ld d, a
+	inc bc
+	push bc
+	call Function11c05d
+	jr c, .asm_11c0a2
+	inc bc
+
+.asm_11c0a2
+	ld l, c
+	ld h, b
+	pop bc
+	pop af
+	dec a
+	jr nz, .asm_11c094
+	pop hl
+	ld de, $0028
+	add hl, de
+	ld a, $3
+.asm_11c0b0
+	push af
+	ld a, [bc]
+	ld e, a
+	inc bc
+	ld a, [bc]
+	ld d, a
+	inc bc
+	push bc
+	call Function11c05d
+	jr c, .asm_11c0be
+	inc bc
+
+.asm_11c0be
+	ld l, c
+	ld h, b
+	pop bc
+	pop af
+	dec a
+	jr nz, .asm_11c0b0
+	ret
+; 11c0c6
+
+
+Function11c0c6: ; 11c0c6
+	ld a, [wJumptableIndex]
+	ld l, a
+	ld a, [wcf64]
+	ld h, a
+	push hl
+	ld hl, $c608 + 16
+	ld a, $0
+	ld [hli], a
+	push de
+	xor a
+	ld [wJumptableIndex], a
+	ld a, $12
+	ld [wcf64], a
+	ld a, $6
+.asm_11c0e1
+	push af
+	ld a, [bc]
+	ld e, a
+	inc bc
+	ld a, [bc]
+	ld d, a
+	inc bc
+	or e
+	jr z, .asm_11c133
+	push hl
+	push bc
+	call Function11c156
+	call Function11c14a
+	ld e, c
+	pop bc
+	pop hl
+	ld a, e
+	or a
+	jr z, .asm_11c133
+.asm_11c0fa
+	ld a, [wcf64]
+	cp $12
+	jr z, .asm_11c102
+	inc e
+
+.asm_11c102
+	cp e
+	jr nc, .asm_11c11c
+	ld a, [wJumptableIndex]
+	inc a
+	ld [wJumptableIndex], a
+	ld [hl], $4e
+	rra
+	jr c, .asm_11c113
+	ld [hl], $55
+
+.asm_11c113
+	inc hl
+	ld a, $12
+	ld [wcf64], a
+	dec e
+	jr .asm_11c0fa
+
+.asm_11c11c
+	cp $12
+	jr z, .asm_11c123
+	ld [hl], $7f
+	inc hl
+
+.asm_11c123
+	sub e
+	ld [wcf64], a
+	ld de, $c608
+.asm_11c12a
+	ld a, [de]
+	cp $50
+	jr z, .asm_11c133
+	inc de
+	ld [hli], a
+	jr .asm_11c12a
+
+.asm_11c133
+	pop af
+	dec a
+	jr nz, .asm_11c0e1
+	ld [hl], $57
+	pop bc
+	ld hl, $c608 + 16
+	call PlaceWholeStringInBoxAtOnce
+	pop hl
+	ld a, l
+	ld [wJumptableIndex], a
+	ld a, h
+	ld [wcf64], a
+	ret
+; 11c14a
+
+Function11c14a: ; 11c14a
+	ld c, $0
+	ld hl, $c608
+.asm_11c14f
+	ld a, [hli]
+	cp $50
+	ret z
+	inc c
+	jr .asm_11c14f
+; 11c156
+
+Function11c156: ; 11c156
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, $50
+	ld hl, $c608
+	ld bc, $000b
+	call ByteFill
+	ld a, d
+	and a
+	jr z, .asm_11c19c
+	ld hl, Unknown_11daac
+	dec d
+	sla d
+	ld c, d
+	ld b, $0
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld b, a
+	push bc
+	pop hl
+	ld c, e
+	ld b, $0
+	sla c
+	rl b
+	sla c
+	rl b
+	sla c
+	rl b
+	add hl, bc
+	ld bc, $0005
+.asm_11c18f
+	ld de, $c608
+	call CopyBytes
+	ld de, $c608
+	pop af
+	ld [rSVBK], a
+	ret
+
+.asm_11c19c
+	ld a, e
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld bc, $000a
+	jr .asm_11c18f
+; 11c1ab
+
+Function11c1ab: ; 11c1ab
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call Function11c1b9
+	pop af
+	ld [hInMenu], a
+	ret
+; 11c1b9
+
+Function11c1b9: ; 11c1b9
+	call Function11c1ca
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call Function11c283
+	pop af
+	ld [rSVBK], a
+	ret
+; 11c1ca
+
+Function11c1ca: ; 11c1ca
+	xor a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ld [wcd23], a
+	ld [BGMapBuffer], a
+	ld [wcd21], a
+	ld [CreditsTimer], a
+	ld [wcd35], a
+	ld [wcd2b], a
+	ld a, $ff
+	ld [wcd24], a
+	ld a, [MenuSelection2]
+	dec a
+	call Function11c254
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearScreen
+	call Function11d323
+	call SetPalettes
+	call DisableLCD
+	ld hl, GFX_11d67e
+	ld de, VTiles2
+	ld bc, $60
+	call CopyBytes
+	ld hl, LZ_11d6de
+	ld de, VTiles0
+	call Decompress
+	call EnableLCD
+	callba Function104061
+	callba Function8cf53
+	callba LoadPokemonData
+	callba Function40c30
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, $c6d0
+	ld de, LYOverrides
+	ld bc, $100
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	call Function11d4aa
+	call Function11d3ba
+	ret
+; 11c254
+
+Function11c254: ; 11c254
+	push af
+	ld a, $4
+	call GetSRAMBank
+	ld hl, $a007
+	pop af
+	sla a
+	sla a
+	ld c, a
+	sla a
+	add c
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld de, wcd36
+	ld bc, $000c
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 11c277
+
+
+Function11c277: ; 11c277 (47:4277)
+	ld a, $7f
+	hlcoord 0, 6
+	ld bc, $f0
+	call ByteFill
+	ret
+
+Function11c283: ; 11c283
+.asm_11c283
+	call JoyTextDelay
+	ld a, [hJoyPressed]
+	ld [hJoypadPressed], a
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_11c2a2
+	call Function11c2ac
+	callba Function8cf69
+	callba Function104061
+	jr .asm_11c283
+
+.asm_11c2a2
+	callba Function8cf53
+	call ClearSprites
+	ret
+; 11c2ac
+
+Function11c2ac: ; 11c2ac
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11c2bb
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11c2bb
+
+
+Jumptable_11c2bb: ; 11c2bb (47:42bb)
+	dw Function11c2e9
+	dw Function11c346
+	dw Function11c35f
+	dw Function11c373
+	dw Function11c3c2
+	dw Function11c3ed
+	dw Function11c52c
+	dw Function11c53d
+	dw Function11c658
+	dw Function11c675
+	dw Function11c9bd
+	dw Function11c9c3
+	dw Function11caad
+	dw Function11cab3
+	dw Function11cb52
+	dw Function11cb66
+	dw Function11cbf5
+	dw Function11ccef
+	dw Function11cd04
+	dw Function11cd20
+	dw Function11cd54
+	dw Function11ce0b
+	dw Function11ce2b
+
+
+Function11c2e9: ; 11c2e9 (47:42e9)
+	lb de, $1a, $0d
+	ld a, $1d
+	call Function3b2a
+	lb de, $42, $0d
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $1
+	ld [hl], a
+	lb de, $4a, $10
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $3
+	ld [hl], a
+	lb de, $50, $80
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $4
+	ld [hl], a
+	lb de, $50, $20
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $5
+	ld [hl], a
+	lb de, $50, $10
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $2
+	ld [hl], a
+	ld hl, wcd23
+	set 1, [hl]
+	set 2, [hl]
+	jp Function11cfb5
+
+Function11c346: ; 11c346 (47:4346)
+	ld a, $9
+	ld [wcd2d], a
+	ld a, $2
+	ld [wcd2e], a
+	ld [wcd2f], a
+	ld [wcd30], a
+	ld de, wcd2d
+	call Function11cfce
+	jp Function11cfb5
+
+Function11c35f: ; 11c35f (47:435f)
+	ld hl, wcd2f
+rept 2
+	inc [hl]
+endr
+rept 2
+	dec hl
+endr
+	dec [hl]
+	push af
+	ld de, wcd2d
+	call Function11cfce
+	pop af
+	ret nz
+	jp Function11cfb5
+
+Function11c373: ; 11c373 (47:4373)
+	ld hl, wcd30
+rept 2
+	inc [hl]
+endr
+rept 2
+	dec hl
+endr
+	dec [hl]
+	push af
+	ld de, wcd2d
+	call Function11cfce
+	pop af
+	ret nz
+	call Function11c38a
+	jp Function11cfb5
+
+Function11c38a: ; 11c38a (47:438a)
+	ld hl, Unknown_11c986
+	ld bc, wcd36
+	ld a, $6
+.asm_11c392
+	push af
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push hl
+	push de
+	pop hl
+	ld a, [bc]
+	inc bc
+	ld e, a
+	ld a, [bc]
+	inc bc
+	ld d, a
+	push bc
+	or e
+	jr z, .asm_11c3af
+	ld a, e
+	and d
+	cp $ff
+	jr z, .asm_11c3af
+	call Function11c05d
+	jr .asm_11c3b5
+.asm_11c3af
+	ld de, String_11c3bc
+	call PlaceString
+.asm_11c3b5
+	pop bc
+	pop hl
+	pop af
+	dec a
+	jr nz, .asm_11c392
+	ret
+; 11c3bc (47:43bc)
+
+String_11c3bc: ; 11c3bc
+	db "ーーーーー@"
+; 11c3c2
+
+Function11c3c2: ; 11c3c2 (47:43c2)
+	call Function11c277
+	ld de, Unknown_11cfbe
+	call Function11d035
+	hlcoord 1, 7
+	ld de, String_11c4db
+	call PlaceString
+	hlcoord 1, 16
+	ld de, String_11c51b
+	call PlaceString
+	call Function11c4be
+	ld hl, wcd23
+	set 0, [hl]
+	ld hl, wcd24
+	res 0, [hl]
+	call Function11cfb5
+
+Function11c3ed: ; 11c3ed (47:43ed)
+	ld hl, BGMapBuffer ; wcd20 (aliases: CreditsPos)
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and $8
+	jr nz, .asm_11c426
+	ld a, [de]
+	and $2
+	jr nz, .asm_11c41a
+	ld a, [de]
+	and $1
+	jr nz, .asm_11c42c
+	ld de, hJoyLast
+	ld a, [de]
+	and $40
+	jr nz, .asm_11c47c
+	ld a, [de]
+	and $80
+	jr nz, .asm_11c484
+	ld a, [de]
+	and $20
+	jr nz, .asm_11c48c
+	ld a, [de]
+	and $10
+	jr nz, .asm_11c498
+	ret
+.asm_11c41a
+	call PlayClickSFX
+.asm_11c41d
+	ld hl, wcd24
+	set 0, [hl]
+	ld a, $c
+	jr .asm_11c475
+.asm_11c426
+	ld a, $8
+	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+	ret
+.asm_11c42c
+	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	cp $6
+	jr c, .asm_11c472
+	sub $6
+	jr z, .asm_11c469
+	dec a
+	jr z, .asm_11c41d
+	ld hl, wcd36
+	ld c, $c
+	xor a
+.asm_11c440
+	or [hl]
+	inc hl
+	dec c
+	jr nz, .asm_11c440
+	and a
+	jr z, .asm_11c460
+	ld de, Unknown_11cfba
+	call Function11cfce
+	decoord 1, 2
+	ld bc, wcd36
+	call Function11c08f
+	ld hl, wcd24
+	set 0, [hl]
+	ld a, $e
+	jr .asm_11c475
+.asm_11c460
+	ld hl, wcd24
+	set 0, [hl]
+	ld a, $11
+	jr .asm_11c475
+.asm_11c469
+	ld hl, wcd24
+	set 0, [hl]
+	ld a, $a
+	jr .asm_11c475
+.asm_11c472
+	call Function11c4a5
+.asm_11c475
+	ld [wJumptableIndex], a
+	call PlayClickSFX
+	ret
+.asm_11c47c
+	ld a, [hl]
+	cp $3
+	ret c
+	sub $3
+	jr .asm_11c4a3
+.asm_11c484
+	ld a, [hl]
+	cp $6
+	ret nc
+	add $3
+	jr .asm_11c4a3
+.asm_11c48c
+	ld a, [hl]
+	and a
+	ret z
+	cp $3
+	ret z
+	cp $6
+	ret z
+	dec a
+	jr .asm_11c4a3
+.asm_11c498
+	ld a, [hl]
+	cp $2
+	ret z
+	cp $5
+	ret z
+	cp $8
+	ret z
+	inc a
+.asm_11c4a3
+	ld [hl], a
+	ret
+
+Function11c4a5: ; 11c4a5 (47:44a5)
+	ld hl, wcd23
+	res 0, [hl]
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_11c4b7
+	xor a
+	ld [wcd21], a
+	ld a, $6
+	ret
+.asm_11c4b7
+	xor a
+	ld [CreditsTimer], a
+	ld a, $15
+	ret
+
+Function11c4be: ; 11c4be (47:44be)
+	ld a, $1
+	hlcoord 0, 6, AttrMap
+	ld bc, $a0
+	call ByteFill
+	ld a, $7
+	hlcoord 0, 14, AttrMap
+	ld bc, $28
+	call ByteFill
+	callba Function104061
+	ret
+; 11c4db (47:44db)
+
+String_11c4db: ; 11c4db
+	db   "6つのことば", $1f, "くみあわせます"
+	next "かえたいところ", $1f, "えらぶと でてくる"
+	next "ことばのグループから いれかえたい"
+	next "たんご", $1f, "えらんでください"
+	db   "@"
+; 11c51b
+
+String_11c51b: ; 11c51b
+	db "ぜんぶけす やめる   けってい@"
+; 11c52c
+
+Function11c52c: ; 11c52c (47:452c)
+	call Function11c277
+	call Function11c5f0
+	call Function11c618
+	ld hl, wcd24
+	res 1, [hl]
+	call Function11cfb5
+
+Function11c53d: ; 11c53d (47:453d)
+	ld hl, wcd21
+	ld de, hJoypadPressed ; $ffa3
+
+	ld a, [de]
+	and START
+	jr nz, .start
+
+	ld a, [de]
+	and SELECT
+	jr nz, .select
+
+	ld a, [de]
+	and B_BUTTON
+	jr nz, .b
+
+	ld a, [de]
+	and A_BUTTON
+	jr nz, .a
+
+	ld de, hJoyLast
+
+	ld a, [de]
+	and D_UP
+	jr nz, .up
+
+	ld a, [de]
+	and D_DOWN
+	jr nz, .down
+
+	ld a, [de]
+	and D_LEFT
+	jr nz, .left
+
+	ld a, [de]
+	and D_RIGHT
+	jr nz, .right
+
+	ret
+
+.a
+	ld a, [wcd21]
+	cp $f
+	jr c, .asm_11c59d
+	sub $f
+	jr z, .asm_11c5ab
+	dec a
+	jr z, .asm_11c599
+	jr .b
+
+.start
+	ld hl, wcd24
+	set 0, [hl]
+	ld a, $8
+	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+
+.b
+	ld a, $4
+	jr .asm_11c59f
+
+.select
+	ld a, [wcd2b]
+	xor $1
+	ld [wcd2b], a
+	ld a, $15
+	jr .asm_11c59f
+
+.asm_11c599
+	ld a, $13
+	jr .asm_11c59f
+
+.asm_11c59d
+	ld a, $8
+
+.asm_11c59f
+	ld hl, wcd24
+	set 1, [hl]
+	ld [wJumptableIndex], a
+	call PlayClickSFX
+	ret
+
+.asm_11c5ab
+	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	call Function11ca6a
+	call PlayClickSFX
+	ret
+
+.up
+	ld a, [hl]
+	cp $3
+	ret c
+	sub $3
+	jr .asm_11c5ee
+
+.down
+	ld a, [hl]
+	cp $f
+	ret nc
+	add $3
+	jr .asm_11c5ee
+
+.left
+	ld a, [hl]
+	and a
+	ret z
+	cp $3
+	ret z
+	cp $6
+	ret z
+	cp $9
+	ret z
+	cp $c
+	ret z
+	cp $f
+	ret z
+	dec a
+	jr .asm_11c5ee
+
+.right
+	ld a, [hl]
+	cp $2
+	ret z
+	cp $5
+	ret z
+	cp $8
+	ret z
+	cp $b
+	ret z
+	cp $e
+	ret z
+	cp $11
+	ret z
+	inc a
+
+.asm_11c5ee
+	ld [hl], a
+	ret
+; 11c5f0
+
+Function11c5f0: ; 11c5f0 (47:45f0)
+	ld de, Strings_11da52
+	ld bc, Unknown_11c63a
+	ld a, $f
+.asm_11c5f8
+	push af
+	ld a, [bc]
+	inc bc
+	ld l, a
+	ld a, [bc]
+	inc bc
+	ld h, a
+	push bc
+	call PlaceString
+.asm_11c603
+	inc de
+	ld a, [de]
+	cp $50
+	jr z, .asm_11c603
+	pop bc
+	pop af
+	dec a
+	jr nz, .asm_11c5f8
+	hlcoord 1, 17
+	ld de, String_11c62a
+	call PlaceString
+	ret
+
+Function11c618: ; 11c618 (47:4618)
+	ld a, $2
+	hlcoord 0, 6, AttrMap
+	ld bc, $c8
+	call ByteFill
+	callba Function104061
+	ret
+; 11c62a (47:462a)
+
+String_11c62a: ; 11c62a
+	db "けす    モード   やめる@"
+; 11c63a
+
+Unknown_11c63a: ; 11c63a
+	dwcoord  1,  7
+	dwcoord  7,  7
+	dwcoord 13,  7
+	dwcoord  1,  9
+	dwcoord  7,  9
+	dwcoord 13,  9
+	dwcoord  1, 11
+	dwcoord  7, 11
+	dwcoord 13, 11
+	dwcoord  1, 13
+	dwcoord  7, 13
+	dwcoord 13, 13
+	dwcoord  1, 15
+	dwcoord  7, 15
+	dwcoord 13, 15
+; 11c658
+
+Function11c658: ; 11c658 (47:4658)
+	call Function11c277
+	call Function11c770
+	ld de, Unknown_11cfc2
+	call Function11d035
+	call Function11c9ab
+	call Function11c7bc
+	call Function11c86e
+	ld hl, wcd24
+	res 3, [hl]
+	call Function11cfb5
+
+Function11c675: ; 11c675 (47:4675)
+	ld hl, wcd25
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [de]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [de]
+	and START
+	jr nz, .start
+	ld a, [de]
+	and SELECT
+	jr z, .select
+
+	ld a, [wcd26]
+	and a
+	ret z
+	sub $c
+	jr nc, .asm_11c699
+	xor a
+.asm_11c699
+	ld [wcd26], a
+	jr .asm_11c6c4
+
+.start
+	ld hl, wcd28
+	ld a, [wcd26]
+	add $c
+	cp [hl]
+	ret nc
+	ld [wcd26], a
+	ld a, [hl]
+	ld b, a
+	ld hl, wcd25
+	ld a, [wcd26]
+	add [hl]
+	jr c, .asm_11c6b9
+	cp b
+	jr c, .asm_11c6c4
+.asm_11c6b9
+	ld a, [wcd28]
+	ld hl, wcd26
+	sub [hl]
+	dec a
+	ld [wcd25], a
+.asm_11c6c4
+	call Function11c992
+	call Function11c7bc
+	call Function11c86e
+	ret
+
+.select
+	ld de, hJoyLast
+	ld a, [de]
+	and D_UP
+	jr nz, .asm_11c708
+	ld a, [de]
+	and D_DOWN
+	jr nz, .asm_11c731
+	ld a, [de]
+	and D_LEFT
+	jr nz, .asm_11c746
+	ld a, [de]
+	and D_RIGHT
+	jr nz, .asm_11c755
+	ret
+
+.a
+	call Function11c8f6
+	ld a, $4
+	ld [wcd35], a
+	jr .asm_11c6fc
+.b
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_11c6fa
+	ld a, $6
+	jr .asm_11c6fc
+.asm_11c6fa
+	ld a, $15
+.asm_11c6fc
+	ld [wJumptableIndex], a
+	ld hl, wcd24
+	set 3, [hl]
+	call PlayClickSFX
+	ret
+.asm_11c708
+	ld a, [hl]
+	cp $3
+	jr c, .asm_11c711
+	sub $3
+	jr .asm_11c76e
+.asm_11c711
+	ld a, [wcd26]
+	sub $3
+	ret c
+	ld [wcd26], a
+	jr .asm_11c6c4
+.asm_11c71c
+	ld hl, wcd28
+	ld a, [wcd26]
+	add $c
+	ret c
+	cp [hl]
+	ret nc
+	ld a, [wcd26]
+	add $3
+	ld [wcd26], a
+	jr .asm_11c6c4
+.asm_11c731
+	ld a, [wcd28]
+	ld b, a
+	ld a, [wcd26]
+	add [hl]
+	add $3
+	cp b
+	ret nc
+	ld a, [hl]
+	cp $9
+	jr nc, .asm_11c71c
+	add $3
+	jr .asm_11c76e
+.asm_11c746
+	ld a, [hl]
+	and a
+	ret z
+	cp $3
+	ret z
+	cp $6
+	ret z
+	cp $9
+	ret z
+	dec a
+	jr .asm_11c76e
+.asm_11c755
+	ld a, [wcd28]
+	ld b, a
+	ld a, [wcd26]
+	add [hl]
+	inc a
+	cp b
+	ret nc
+	ld a, [hl]
+	cp $2
+	ret z
+	cp $5
+	ret z
+	cp $8
+	ret z
+	cp $b
+	ret z
+	inc a
+.asm_11c76e
+	ld [hl], a
+	ret
+
+Function11c770: ; 11c770 (47:4770)
+	xor a
+	ld [wcd25], a
+	ld [wcd26], a
+	ld [wcd27], a
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_11c7ab
+	ld a, [wcd21]
+	and a
+	jr z, .asm_11c799
+	dec a
+	sla a
+	ld hl, Unknown_11f220
+	ld c, a
+	ld b, 0
+	add hl, bc
+	ld a, [hli]
+	ld [wcd28], a
+	ld a, [hl]
+.asm_11c795
+	ld [wcd29], a
+	ret
+.asm_11c799
+	ld a, [wc7d2]
+	ld [wcd28], a
+.asm_11c79f
+	ld c, $c
+	call SimpleDivide
+	and a
+	jr nz, .asm_11c7a8
+	dec b
+.asm_11c7a8
+	ld a, b
+	jr .asm_11c795
+.asm_11c7ab
+	ld hl, $c68a + 30
+	ld a, [CreditsTimer]
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld a, [hl]
+	ld [wcd28], a
+	jr .asm_11c79f
+
+Function11c7bc: ; 11c7bc (47:47bc)
+	ld bc, Unknown_11c854
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_11c814
+	ld a, [wcd21]
+	ld d, a
+	and a
+	jr z, .asm_11c7e9
+	ld a, [wcd26]
+	ld e, a
+.asm_11c7d0
+	ld a, [bc]
+	ld l, a
+	inc bc
+	ld a, [bc]
+	ld h, a
+	inc bc
+	and l
+	cp $ff
+	ret z
+	push bc
+	push de
+	call Function11c05d
+	pop de
+	pop bc
+	inc e
+	ld a, [wcd28]
+	cp e
+	jr nz, .asm_11c7d0
+	ret
+.asm_11c7e9
+	ld hl, wd100
+	ld a, [wcd26]
+	ld e, a
+	add hl, de
+.asm_11c7f1
+	push de
+	ld a, [hli]
+	ld e, a
+	ld d, $0
+	push hl
+	ld a, [bc]
+	ld l, a
+	inc bc
+	ld a, [bc]
+	ld h, a
+	inc bc
+	and l
+	cp $ff
+	jr z, .asm_11c811
+	push bc
+	call Function11c05d
+	pop bc
+	pop hl
+	pop de
+	inc e
+	ld a, [wcd28]
+	cp e
+	jr nz, .asm_11c7f1
+	ret
+.asm_11c811
+	pop hl
+	pop de
+	ret
+.asm_11c814
+	ld hl, $c648
+	ld a, [wcd22]
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	push de
+	pop hl
+	ld a, [wcd26]
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [wcd26]
+	ld e, a
+.asm_11c831
+	push de
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push hl
+	ld a, [bc]
+	ld l, a
+	inc bc
+	ld a, [bc]
+	ld h, a
+	inc bc
+	and l
+	cp $ff
+	jr z, .asm_11c851
+	push bc
+	call Function11c05d
+	pop bc
+	pop hl
+	pop de
+	inc e
+	ld a, [wcd28]
+	cp e
+	jr nz, .asm_11c831
+	ret
+.asm_11c851
+	pop hl
+	pop de
+	ret
+; 11c854 (47:4854)
+
+Unknown_11c854: ; 11c854
+	dwcoord  2,  8
+	dwcoord  8,  8
+	dwcoord 14,  8
+	dwcoord  2, 10
+	dwcoord  8, 10
+	dwcoord 14, 10
+	dwcoord  2, 12
+	dwcoord  8, 12
+	dwcoord 14, 12
+	dwcoord  2, 14
+	dwcoord  8, 14
+	dwcoord 14, 14
+	dw -1
+; 11c86e
+
+Function11c86e: ; 11c86e (47:486e)
+	ld a, [wcd26]
+	and a
+	jr z, .asm_11c88a
+	hlcoord 2, 17
+	ld de, String_11c8f0
+	call PlaceString
+	hlcoord 6, 17
+	ld c, $3
+	xor a
+.asm_11c883
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_11c883
+	jr .asm_11c895
+.asm_11c88a
+	hlcoord 2, 17
+	ld c, $7
+	ld a, $7f
+.asm_11c891
+	ld [hli], a
+	dec c
+	jr nz, .asm_11c891
+.asm_11c895
+	ld hl, wcd28
+	ld a, [wcd26]
+	add $c
+	jr c, .asm_11c8b7
+	cp [hl]
+	jr nc, .asm_11c8b7
+	hlcoord 16, 17
+	ld de, String_11c8f3
+	call PlaceString
+	hlcoord 11, 17
+	ld a, $3
+	ld c, a
+.asm_11c8b1
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_11c8b1
+	ret
+.asm_11c8b7
+	hlcoord 17, 16
+	ld a, $7f
+	ld [hl], a
+	hlcoord 11, 17
+	ld c, $7
+.asm_11c8c2
+	ld [hli], a
+	dec c
+	jr nz, .asm_11c8c2
+	ret
+; 11c8c7 (47:48c7)
+
+Function11c8c7: ; 11c8c7
+	inc a
+	push af
+	and $f
+	ld [hDividend], a
+	pop af
+	and $f0
+	swap a
+	ld [hQuotient], a
+	xor a
+	ld [$ffb5], a
+	push hl
+	callba Function11a80c
+	pop hl
+	ld a, [wcd63]
+	add $f6
+	ld [hli], a
+	ld a, [wcd62]
+	add $f6
+	ld [hli], a
+	ret
+; 11c8ec
+
+String_11c8ec: ; 11c8ec
+	db "ぺージ@"
+; 11c8f0
+
+String_11c8f0: ; 11c8f0
+	db "まえ@"
+; 11c8f3
+
+String_11c8f3: ; 11c8f3
+	db "つぎ@"
+; 11c8f6
+
+Function11c8f6: ; 11c8f6 (47:48f6)
+	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	call Function11c95d
+	push hl
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_11c938
+	ld a, [wcd21]
+	ld d, a
+	and a
+	jr z, .asm_11c927
+	ld hl, wcd26
+	ld a, [wcd25]
+	add [hl]
+.asm_11c911
+	ld e, a
+.asm_11c912
+	pop hl
+	push de
+	call Function11c05d
+	pop de
+	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	ld c, a
+	ld b, $0
+	ld hl, wcd36
+rept 2
+	add hl, bc
+endr
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ret
+.asm_11c927
+	ld hl, wcd26
+	ld a, [wcd25]
+	add [hl]
+	ld c, a
+	ld b, $0
+	ld hl, wd100
+	add hl, bc
+	ld a, [hl]
+	jr .asm_11c911
+.asm_11c938
+	ld hl, $c648
+	ld a, [wcd22]
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	push de
+	pop hl
+	ld a, [wcd26]
+	ld e, a
+	ld d, $0
+rept 2
+	add hl, de
+endr
+	ld a, [wcd25]
+	ld e, a
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	jr .asm_11c912
+
+Function11c95d: ; 11c95d (47:495d)
+	sla a
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_11c986
+	add hl, bc
+	ld a, [hli]
+	ld c, a
+	ld a, [hl]
+	ld b, a
+	push bc
+	push bc
+	pop hl
+	ld a, $5
+	ld c, a
+	ld a, $7f
+.asm_11c972
+	ld [hli], a
+	dec c
+	jr nz, .asm_11c972
+	dec hl
+	ld bc, -20
+	add hl, bc
+	ld a, $5
+	ld c, a
+	ld a, $7f
+.asm_11c980
+	ld [hld], a
+	dec c
+	jr nz, .asm_11c980
+	pop hl
+	ret
+; 11c986 (47:4986)
+
+Unknown_11c986:
+	dwcoord  1,  2
+	dwcoord  7,  2
+	dwcoord 13,  2
+	dwcoord  1,  4
+	dwcoord  7,  4
+	dwcoord 13,  4
+; 11c992
+
+Function11c992: ; 11c992 (47:4992)
+	ld a, $8
+	hlcoord 2, 7
+.asm_11c997
+	push af
+	ld a, $7f
+	push hl
+	ld bc, $11
+	call ByteFill
+	pop hl
+	ld bc, $14
+	add hl, bc
+	pop af
+	dec a
+	jr nz, .asm_11c997
+	ret
+
+Function11c9ab: ; 11c9ab (47:49ab)
+	ld a, $7
+	hlcoord 0, 6, AttrMap
+	ld bc, $c8
+	call ByteFill
+	callba Function104061
+	ret
+
+Function11c9bd: ; 11c9bd (47:49bd)
+	ld de, String_11ca38
+	call Function11ca7f
+
+Function11c9c3: ; 11c9c3 (47:49c3)
+	ld hl, wcd2a
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and $1
+	jr nz, .asm_11c9de
+	ld a, [de]
+	and $2
+	jr nz, .asm_11c9e9
+	ld a, [de]
+	and $40
+	jr nz, .asm_11c9f7
+	ld a, [de]
+	and $80
+	jr nz, .asm_11c9fc
+	ret
+.asm_11c9de
+	ld a, [hl]
+	and a
+	jr nz, .asm_11c9e9
+	call Function11ca5e
+	xor a
+	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+.asm_11c9e9
+	ld hl, wcd24
+	set 4, [hl]
+	ld a, $4
+	ld [wJumptableIndex], a
+	call PlayClickSFX
+	ret
+.asm_11c9f7
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+.asm_11c9fc
+	ld a, [hl]
+	and a
+	ret nz
+	inc [hl]
+	ret
+
+Function11ca01: ; 11ca01 (47:4a01)
+	hlcoord 14, 7, AttrMap
+	ld de, $14
+	ld a, $5
+	ld c, a
+.asm_11ca0a
+	push hl
+	ld a, $6
+	ld b, a
+	ld a, $7
+.asm_11ca10
+	ld [hli], a
+	dec b
+	jr nz, .asm_11ca10
+	pop hl
+	add hl, de
+	dec c
+	jr nz, .asm_11ca0a
+
+Function11ca19: ; 11ca19 (47:4a19)
+	hlcoord 0, 12, AttrMap
+	ld de, $14
+	ld a, $6
+	ld c, a
+.asm_11ca22
+	push hl
+	ld a, $14
+	ld b, a
+	ld a, $7
+.asm_11ca28
+	ld [hli], a
+	dec b
+	jr nz, .asm_11ca28
+	pop hl
+	add hl, de
+	dec c
+	jr nz, .asm_11ca22
+	callba Function104061
+	ret
+; 11ca38 (47:4a38)
+
+String_11ca38: ; 11ca38
+	db   "とうろくちゅう", $25, "あいさつ", $1f, "ぜんぶ"
+	next "けしても よろしいですか?@"
+; 11ca57
+
+String_11ca57: ; 11ca57
+	db   "はい"
+	next "いいえ@"
+; 11ca5e
+
+Function11ca5e: ; 11ca5e (47:4a5e)
+	xor a
+.asm_11ca5f
+	push af
+	call Function11ca6a
+	pop af
+	inc a
+	cp $6
+	jr nz, .asm_11ca5f
+	ret
+
+Function11ca6a: ; 11ca6a (47:4a6a)
+	ld hl, wcd36
+	ld c, a
+	ld b, $0
+rept 2
+	add hl, bc
+endr
+	ld [hl], b
+	inc hl
+	ld [hl], b
+	call Function11c95d
+	ld de, String_11c3bc
+	call PlaceString
+	ret
+
+Function11ca7f: ; 11ca7f (47:4a7f)
+	push de
+	ld de, Unknown_11cfc6
+	call Function11cfce
+	ld de, Unknown_11cfca
+	call Function11cfce
+	hlcoord 1, 14
+	pop de
+	call PlaceString
+	hlcoord 16, 8
+	ld de, String_11ca57
+	call PlaceString
+	call Function11ca01
+	ld a, $1
+	ld [wcd2a], a
+	ld hl, wcd24
+	res 4, [hl]
+	call Function11cfb5
+	ret
+
+Function11caad: ; 11caad (47:4aad)
+	ld de, String_11cb1c
+	call Function11ca7f
+
+Function11cab3: ; 11cab3 (47:4ab3)
+	ld hl, wcd2a
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and $1
+	jr nz, .asm_11cace
+	ld a, [de]
+	and $2
+	jr nz, .asm_11caf9
+	ld a, [de]
+	and $40
+	jr nz, .asm_11cb12
+	ld a, [de]
+	and $80
+	jr nz, .asm_11cb17
+	ret
+.asm_11cace
+	call PlayClickSFX
+	ld a, [hl]
+	and a
+	jr nz, .asm_11cafc
+	ld a, [wcd35]
+	and a
+	jr z, .asm_11caf3
+	cp $ff
+	jr z, .asm_11caf3
+	ld a, $ff
+	ld [wcd35], a
+	hlcoord 1, 14
+	ld de, String_11cb31
+	call PlaceString
+	ld a, $1
+	ld [wcd2a], a
+	ret
+.asm_11caf3
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+.asm_11caf9
+	call PlayClickSFX
+.asm_11cafc
+	ld hl, wcd24
+	set 4, [hl]
+	ld a, $4
+	ld [wJumptableIndex], a
+	ld a, [wcd35]
+	cp $ff
+	ret nz
+	ld a, $1
+	ld [wcd35], a
+	ret
+.asm_11cb12
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+.asm_11cb17
+	ld a, [hl]
+	and a
+	ret nz
+	inc [hl]
+	ret
+; 11cb1c (47:4b1c)
+
+String_11cb1c: ; 11cb1c
+	db   "あいさつ", $25, "とうろく", $1f, "ちゅうし"
+	next "しますか?@"
+; 11cb31
+
+String_11cb31: ; 11cb31
+	db   "とうろくちゅう", $25, "あいさつ", $24, "ほぞん"
+	next "されません", $4a, "よろしい ですか?@"
+; 11cb52
+
+Function11cb52: ; 11cb52 (47:4b52)
+	ld hl, Unknown_11cc01
+	ld a, [MenuSelection2]
+.asm_11cb58
+	dec a
+	jr z, .asm_11cb5f
+rept 2
+	inc hl
+endr
+	jr .asm_11cb58
+.asm_11cb5f
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	call Function11ca7f
+
+Function11cb66: ; 11cb66 (47:4b66)
+	ld hl, wcd2a
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and $1
+	jr nz, .asm_11cb81
+	ld a, [de]
+	and $2
+	jr nz, .asm_11cbd7
+	ld a, [de]
+	and $40
+	jr nz, .asm_11cbeb
+	ld a, [de]
+	and $80
+	jr nz, .asm_11cbf0
+	ret
+.asm_11cb81
+	ld a, [hl]
+	and a
+	jr nz, .asm_11cbd4
+	ld a, $4
+	call GetSRAMBank
+	ld hl, $a007
+	ld a, [MenuSelection2]
+	dec a
+	sla a
+	sla a
+	ld c, a
+	sla a
+	add c
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld de, wcd36
+	ld c, $c
+.asm_11cba2
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .asm_11cba2
+	call CloseSRAM
+	call PlayClickSFX
+	ld de, Unknown_11cfc6
+	call Function11cfce
+	ld hl, Unknown_11cc7e
+	ld a, [MenuSelection2]
+.asm_11cbba
+	dec a
+	jr z, .asm_11cbc1
+rept 2
+	inc hl
+endr
+	jr .asm_11cbba
+.asm_11cbc1
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	hlcoord 1, 14
+	call PlaceString
+	ld hl, wJumptableIndex
+	inc [hl]
+	inc hl
+	ld a, $10
+	ld [hl], a
+	ret
+.asm_11cbd4
+	call PlayClickSFX
+.asm_11cbd7
+	ld de, Unknown_11cfba
+	call Function11cfce
+	call Function11c38a
+	ld hl, wcd24
+	set 4, [hl]
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+.asm_11cbeb
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ret
+.asm_11cbf0
+	ld a, [hl]
+	and a
+	ret nz
+	inc [hl]
+	ret
+
+Function11cbf5: ; 11cbf5 (47:4bf5)
+	call WaitSFX
+	ld hl, wcf64
+	dec [hl]
+	ret nz
+	dec hl
+	set 7, [hl]
+	ret
+; 11cc01 (47:4c01)
+
+Unknown_11cc01: ; 11cc01
+	dw String_11cc09
+	dw String_11cc23
+	dw String_11cc42
+	dw String_11cc60
+
+String_11cc09: ; 11cc09
+	db   "じこしょうかい は"
+	next "この あいさつで いいですか?@"
+
+String_11cc23: ; 11cc23
+	db   "たいせん ", $4a, "はじまるとき は"
+	next "この あいさつで いいですか?@"
+
+String_11cc42: ; 11cc42
+	db   "たいせん ", $1d, "かったとき は"
+	next "この あいさつで いいですか?@"
+
+String_11cc60: ; 11cc60
+	db   "たいせん ", $1d, "まけたとき は"
+	next "この あいさつで いいですか?@"
+; 11cc7e
+
+Unknown_11cc7e: ; 11cc7e
+	dw String_11cc86
+	dw String_11cc9d
+	dw String_11ccb9
+	dw String_11ccd4
+
+String_11cc86: ; 11cc86
+	db   "じこしょうかい の"
+	next "あいさつ", $1f, "とうろくした!@"
+
+String_11cc9d: ; 11cc9d
+	db   "たいせん ", $4a, "はじまるとき の"
+	next "あいさつ", $1f, "とうろくした!@"
+
+String_11ccb9: ; 11ccb9
+	db   "たいせん ", $1d, "かったとき の"
+	next "あいさつ", $1f, "とうろくした!@"
+
+String_11ccd4: ; 11ccd4
+	db   "たいせん ", $1d, "まけたとき の"
+	next "あいさつ", $1f, "とうろくした!@"
+; 11ccef
+
+Function11ccef: ; 11ccef (47:4cef)
+	ld de, Unknown_11cfc6
+	call Function11cfce
+	hlcoord 1, 14
+	ld de, String_11cd10
+	call PlaceString
+	call Function11ca19
+	call Function11cfb5
+
+Function11cd04: ; 11cd04 (47:4d04)
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and a
+	ret z
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; 11cd10 (47:4d10)
+
+String_11cd10: ; 11cd10
+	db "なにか ことば", $1f, "いれてください@"
+; 11cd20
+
+Function11cd20: ; 11cd20 (47:4d20)
+	call Function11c277
+	ld de, Unknown_11cfc6
+	call Function11cfce
+	hlcoord 1, 14
+	ld a, [wcd2b]
+	ld [wcd2c], a
+	and a
+	jr nz, .asm_11cd3a
+	ld de, String_11cdc7
+	jr .asm_11cd3d
+.asm_11cd3a
+	ld de, String_11cdd9
+.asm_11cd3d
+	call PlaceString
+	hlcoord 4, 8
+	ld de, String_11cdf5
+	call PlaceString
+	call Function11cdaa
+	ld hl, wcd24
+	res 5, [hl]
+	call Function11cfb5
+
+Function11cd54: ; 11cd54 (47:4d54)
+	ld hl, wcd2c
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and A_BUTTON
+	jr nz, .asm_11cd6f
+	ld a, [de]
+	and B_BUTTON
+	jr nz, .asm_11cd73
+	ld a, [de]
+	and D_UP
+	jr nz, .asm_11cd8b
+	ld a, [de]
+	and D_DOWN
+	jr nz, .asm_11cd94
+	ret
+
+.asm_11cd6f
+	ld a, [hl]
+	ld [wcd2b], a
+.asm_11cd73
+	ld a, [wcd2b]
+	and a
+	jr nz, .asm_11cd7d
+	ld a, $6
+	jr .asm_11cd7f
+
+.asm_11cd7d
+	ld a, $15
+.asm_11cd7f
+	ld [wJumptableIndex], a
+	ld hl, wcd24
+	set 5, [hl]
+	call PlayClickSFX
+	ret
+
+.asm_11cd8b
+	ld a, [hl]
+	and a
+	ret z
+	dec [hl]
+	ld de, String_11cdc7
+	jr .asm_11cd9b
+
+.asm_11cd94
+	ld a, [hl]
+	and a
+	ret nz
+	inc [hl]
+	ld de, String_11cdd9
+.asm_11cd9b
+	push de
+	ld de, Unknown_11cfc6
+	call Function11cfce
+	pop de
+	hlcoord 1, 14
+	call PlaceString
+	ret
+
+Function11cdaa: ; 11cdaa (47:4daa)
+	ld a, $2
+	hlcoord 0, 6, AttrMap
+	ld bc, $78
+	call ByteFill
+	ld a, $7
+	hlcoord 0, 12, AttrMap
+	ld bc, $50
+	call ByteFill
+	callba Function104061
+	ret
+; 11cdc7 (47:4dc7)
+
+String_11cdc7: ; 11cdc7
+	db   "ことば", $1f, "しゅるいべつに"
+	next "えらべます@"
+; 11cdd9
+
+String_11cdd9: ; 11cdd9
+	db   "ことば", $1f, "アイウエォ の"
+	next "じゅんばんで ひょうじ します@"
+; 11cdf5
+
+String_11cdf5: ; 11cdf5
+	db "しゅるいべつ モード"
+	next "アイウエォ  モード@"
+; 11ce0b
+
+Function11ce0b: ; 11ce0b (47:4e0b)
+	call Function11c277
+	hlcoord 1, 7
+	ld de, String_11cf79
+	call PlaceString
+	hlcoord 1, 17
+	ld de, String_11c62a
+	call PlaceString
+	call Function11c618
+	ld hl, wcd24
+	res 2, [hl]
+	call Function11cfb5
+
+Function11ce2b: ; 11ce2b (47:4e2b)
+	ld a, [CreditsTimer]
+	sla a
+	sla a
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_11ceb9
+	add hl, bc
+
+	ld de, hJoypadPressed ; $ffa3
+	ld a, [de]
+	and START
+	jr nz, .start
+	ld a, [de]
+	and SELECT
+	jr nz, .select
+	ld a, [de]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [de]
+	and B_BUTTON
+	jr nz, .b
+
+	ld de, hJoyLast
+	ld a, [de]
+	and D_UP
+	jr nz, .up
+	ld a, [de]
+	and D_DOWN
+	jr nz, .down
+	ld a, [de]
+	and D_LEFT
+	jr nz, .left
+	ld a, [de]
+	and D_RIGHT
+	jr nz, .right
+
+	ret
+
+.a
+	ld a, [CreditsTimer]
+	cp $2d
+	jr c, .asm_11ce92
+	sub $2d
+	jr z, .asm_11cea4
+	dec a
+	jr z, .asm_11ce96
+	jr .b
+
+.start
+	ld hl, wcd24
+	set 0, [hl]
+	ld a, $8
+	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
+.b
+	ld a, $4
+	jr .asm_11ce98
+.select
+	ld a, [wcd2b]
+	xor $1
+	ld [wcd2b], a
+	ld a, $6
+	jr .asm_11ce98
+
+.asm_11ce92
+	ld a, $8
+	jr .asm_11ce98
+
+.asm_11ce96
+	ld a, $13
+.asm_11ce98
+	ld [wJumptableIndex], a
+	ld hl, wcd24
+	set 2, [hl]
+	call PlayClickSFX
+	ret
+.asm_11cea4
+	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	call Function11ca6a
+	call PlayClickSFX
+	ret
+
+.left
+	inc hl
+.down
+	inc hl
+.right
+	inc hl
+.up
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld [CreditsTimer], a
+	ret
+; 11ceb9 (47:4eb9)
+
+Unknown_11ceb9: ; 11ceb9
+	; up left down right
+	db $ff, $01, $05, $ff
+	db $ff, $02, $06, $00
+	db $ff, $03, $07, $01
+	db $ff, $04, $08, $02
+	db $ff, $14, $09, $03
+	db $00, $06, $0a, $ff
+	db $01, $07, $0b, $05
+	db $02, $08, $0c, $06
+	db $03, $09, $0d, $07
+	db $04, $19, $0e, $08
+	db $05, $0b, $0f, $ff
+	db $06, $0c, $10, $0a
+	db $07, $0d, $11, $0b
+	db $08, $0e, $12, $0c
+	db $09, $1e, $13, $0d
+	db $0a, $10, $2d, $ff
+	db $0b, $11, $2d, $0f
+	db $0c, $12, $2d, $10
+	db $0d, $13, $2d, $11
+	db $0e, $26, $2d, $12
+	db $ff, $15, $19, $04
+	db $ff, $16, $1a, $14
+	db $ff, $17, $1b, $15
+	db $ff, $18, $1c, $16
+	db $ff, $23, $1d, $17
+	db $14, $1a, $1e, $09
+	db $15, $1b, $1f, $19
+	db $16, $1c, $20, $1a
+	db $17, $1d, $21, $1b
+	db $18, $2b, $22, $1c
+	db $19, $1f, $26, $0e
+	db $1a, $20, $27, $1e
+	db $1b, $21, $28, $1f
+	db $1c, $22, $29, $20
+	db $1d, $2c, $2a, $21
+	db $ff, $24, $2b, $18
+	db $ff, $25, $2b, $23
+	db $ff, $ff, $2b, $24
+	db $1e, $27, $2e, $13
+	db $1f, $28, $2e, $26
+	db $20, $29, $2e, $27
+	db $21, $2a, $2e, $28
+	db $22, $ff, $2e, $29
+	db $23, $ff, $2c, $1d
+	db $2b, $ff, $2f, $22
+	db $0f, $2e, $ff, $ff
+	db $26, $2f, $ff, $2d
+	db $2c, $ff, $ff, $2e
+; 11cf79
+
+String_11cf79: ; 11cf79
+	db   "あいうえお なにぬねの や ゆ よ"
+	next "かきくけこ はひふへほ わ"
+	next "さしすせそ まみむめも そのた"
+	next "たちつてと らりるれろ"
+	db   "@"
+; 11cfb5
+
+Function11cfb5: ; 11cfb5 (47:4fb5)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; 11cfba (47:4fba)
+
+Unknown_11cfba:
+	db  0,  0 ; start coords
+	db 20,  6 ; end coords
+
+Unknown_11cfbe:
+	db  0, 14 ; start coords
+	db 20,  4 ; end coords
+
+Unknown_11cfc2:
+	db  0,  6 ; start coords
+	db 20, 10 ; end coords
+
+Unknown_11cfc6:
+	db  0, 12 ; start coords
+	db 20,  6 ; end coords
+
+Unknown_11cfca:
+	db 14,  7 ; start coords
+	db  6,  5 ; end coords
+; 11cfce
+
+Function11cfce: ; 11cfce (47:4fce)
+	hlcoord 0, 0
+	ld bc, $14
+	ld a, [de]
+	inc de
+	push af
+	ld a, [de]
+	inc de
+	and a
+.asm_11cfda
+	jr z, .asm_11cfe0
+	add hl, bc
+	dec a
+	jr .asm_11cfda
+.asm_11cfe0
+	pop af
+	ld c, a
+	ld b, 0
+	add hl, bc
+	push hl
+	ld a, $79
+	ld [hli], a
+	ld a, [de]
+	inc de
+rept 2
+	dec a
+endr
+	jr z, .asm_11cff6
+	ld c, a
+	ld a, $7a
+.asm_11cff2
+	ld [hli], a
+	dec c
+	jr nz, .asm_11cff2
+.asm_11cff6
+	ld a, $7b
+	ld [hl], a
+	pop hl
+	ld bc, $14
+	add hl, bc
+	ld a, [de]
+	dec de
+rept 2
+	dec a
+endr
+	jr z, .asm_11d022
+	ld b, a
+.asm_11d005
+	push hl
+	ld a, $7c
+	ld [hli], a
+	ld a, [de]
+rept 2
+	dec a
+endr
+	jr z, .asm_11d015
+	ld c, a
+	ld a, $7f
+.asm_11d011
+	ld [hli], a
+	dec c
+	jr nz, .asm_11d011
+.asm_11d015
+	ld a, $7c
+	ld [hl], a
+	pop hl
+	push bc
+	ld bc, $14
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_11d005
+.asm_11d022
+	ld a, $7d
+	ld [hli], a
+	ld a, [de]
+rept 2
+	dec a
+endr
+	jr z, .asm_11d031
+	ld c, a
+	ld a, $7a
+.asm_11d02d
+	ld [hli], a
+	dec c
+	jr nz, .asm_11d02d
+.asm_11d031
+	ld a, $7e
+	ld [hl], a
+	ret
+
+Function11d035: ; 11d035 (47:5035)
+	hlcoord 0, 0
+	ld bc, $14
+	ld a, [de]
+	inc de
+	push af
+	ld a, [de]
+	inc de
+	and a
+.asm_11d041
+	jr z, .asm_11d047
+	add hl, bc
+	dec a
+	jr .asm_11d041
+.asm_11d047
+	pop af
+	ld c, a
+	ld b, $0
+	add hl, bc
+	push hl
+	ld a, $79
+	ld [hl], a
+	pop hl
+	push hl
+	ld a, [de]
+	dec a
+	inc de
+	ld c, a
+	add hl, bc
+	ld a, $7b
+	ld [hl], a
+	call Function11d0ac
+	ld a, $7e
+	ld [hl], a
+	pop hl
+	push hl
+	call Function11d0ac
+	ld a, $7d
+	ld [hl], a
+	pop hl
+	push hl
+	inc hl
+	push hl
+	call Function11d0ac
+	pop bc
+	dec de
+	ld a, [de]
+	cp $2
+	jr z, .asm_11d082
+rept 2
+	dec a
+endr
+.asm_11d078
+	push af
+	ld a, $7a
+	ld [hli], a
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	jr nz, .asm_11d078
+.asm_11d082
+	pop hl
+	ld bc, $14
+	add hl, bc
+	push hl
+	ld a, [de]
+	dec a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop bc
+	inc de
+	ld a, [de]
+	cp $2
+	ret z
+	push bc
+rept 2
+	dec a
+endr
+	ld c, a
+	ld b, a
+	ld de, $14
+.asm_11d09c
+	ld a, $7c
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_11d09c
+	pop hl
+.asm_11d0a4
+	ld a, $7c
+	ld [hl], a
+	add hl, de
+	dec b
+	jr nz, .asm_11d0a4
+	ret
+
+Function11d0ac: ; 11d0ac (47:50ac)
+	ld a, [de]
+	dec a
+	ld bc, $14
+.asm_11d0b1
+	add hl, bc
+	dec a
+	jr nz, .asm_11d0b1
+	ret
+
+Function11d0b6: ; 11d0b6 (47:50b6)
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11d0c7
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_11d0c7: ; 11d0c7 (47:50c7)
+	dw Function11d0dd
+	dw Function11d0e9
+	dw Function11d0f5
+	dw Function11d10f
+	dw Function11d134
+	dw Function11d145
+	dw Function11d156
+	dw Function11d175
+	dw Function11d1d7
+	dw Function11d1d1
+	dw Function11d1fc
+
+
+Function11d0dd: ; 11d0dd (47:50dd)
+	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
+	sla a
+	ld hl, Unknown_11d208
+	ld e, $1
+	jr asm_11d11e
+
+Function11d0e9: ; 11d0e9 (47:50e9)
+	ld a, [wcd21]
+	sla a
+	ld hl, Unknown_11d21a
+	ld e, $2
+	jr asm_11d11e
+
+Function11d0f5: ; 11d0f5 (47:50f5)
+	ld hl, Unknown_11d2be
+	ld a, [CreditsTimer]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	call Function3b3c
+	ld a, [CreditsTimer]
+	sla a
+	ld hl, Unknown_11d23e
+	ld e, $4
+	jr asm_11d11e
+
+Function11d10f: ; 11d10f (47:510f)
+	ld a, $27
+	call Function3b3c
+	ld a, [wcd25]
+	sla a
+	ld hl, Unknown_11d29e
+	ld e, $8
+
+asm_11d11e: ; 11d11e (47:511e)
+	push de
+	ld e, a
+	ld d, $0
+	add hl, de
+	push hl
+	pop de
+	ld hl, $4
+	add hl, bc
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hl], a
+	pop de
+	ld a, e
+	call Function11d2ee
+	ret
+
+Function11d134: ; 11d134 (47:5134)
+	ld a, $27
+	call Function3b3c
+	ld a, [wcd2a]
+	sla a
+	ld hl, Unknown_11d2b6
+	ld e, $10
+	jr asm_11d11e
+
+Function11d145: ; 11d145 (47:5145)
+	ld a, $27
+	call Function3b3c
+	ld a, [wcd2c]
+	sla a
+	ld hl, Unknown_11d2ba
+	ld e, $20
+	jr asm_11d11e
+
+Function11d156: ; 11d156 (47:5156)
+	ld a, $2a
+	call Function3b3c
+	ld a, [wcd4a]
+	sla a
+	sla a
+	sla a
+	add $18
+	ld hl, $4
+	add hl, bc
+	ld [hli], a
+	ld a, $30
+	ld [hl], a
+	ld a, $1
+	ld e, a
+	call Function11d2ee
+	ret
+
+Function11d175: ; 11d175 (47:5175)
+	ld a, [wcd4d]
+	cp $4
+	jr z, .asm_11d180
+	ld a, $28
+	jr .asm_11d182
+.asm_11d180
+	ld a, $26
+.asm_11d182
+	call Function3b3c
+	ld a, [wcd4d]
+	cp $4
+	jr z, .asm_11d1b1
+	ld a, [wcd4c]
+	sla a
+	sla a
+	sla a
+	add $20
+	ld hl, $4
+	add hl, bc
+	ld [hli], a
+	ld a, [wcd4d]
+	sla a
+	sla a
+	sla a
+	sla a
+	add $48
+	ld [hl], a
+	ld a, $2
+	ld e, a
+	call Function11d2ee
+	ret
+.asm_11d1b1
+	ld a, [wcd4c]
+	sla a
+	sla a
+	sla a
+	ld e, a
+	sla a
+	sla a
+	add e
+	add $18
+	ld hl, $4
+	add hl, bc
+	ld [hli], a
+	ld a, $8a
+	ld [hl], a
+	ld a, $2
+	ld e, a
+	call Function11d2ee
+	ret
+
+Function11d1d1: ; 11d1d1 (47:51d1)
+	ld d, $98
+	ld a, $2c
+	jr asm_11d1db
+
+Function11d1d7: ; 11d1d7 (47:51d7)
+	ld d, $10
+	ld a, $2b
+
+asm_11d1db: ; 11d1db (47:51db)
+	push de
+	call Function3b3c
+	ld a, [wcd4a]
+	sla a
+	sla a
+	sla a
+	ld e, a
+	sla a
+	add e
+	add $40
+	ld hl, $5
+	add hl, bc
+	ld [hld], a
+	pop af
+	ld [hl], a
+	ld a, $4
+	ld e, a
+	call Function11d2ee
+	ret
+
+Function11d1fc: ; 11d1fc (47:51fc)
+	ld a, $26
+	call Function3b3c
+	ld a, $8
+	ld e, a
+	call Function11d2ee
+	ret
+; 11d208 (47:5208)
+
+Unknown_11d208: ; 11d208
+	db $0d, $1a
+	db $3d, $1a
+	db $6d, $1a
+	db $0d, $2a
+	db $3d, $2a
+	db $6d, $2a
+	db $0d, $8a
+	db $3d, $8a
+	db $6d, $8a
+
+Unknown_11d21a: ; 11d21a
+	db $0d, $42
+	db $3d, $42
+	db $6d, $42
+	db $0d, $52
+	db $3d, $52
+	db $6d, $52
+	db $0d, $62
+	db $3d, $62
+	db $6d, $62
+	db $0d, $72
+	db $3d, $72
+	db $6d, $72
+	db $0d, $82
+	db $3d, $82
+	db $6d, $82
+	db $0d, $92
+	db $3d, $92
+	db $6d, $92
+
+Unknown_11d23e: ; 11d23e
+	db $10, $48
+	db $18, $48
+	db $20, $48
+	db $28, $48
+	db $30, $48
+	db $10, $58
+	db $18, $58
+	db $20, $58
+	db $28, $58
+	db $30, $58
+	db $10, $68
+	db $18, $68
+	db $20, $68
+	db $28, $68
+	db $30, $68
+	db $10, $78
+	db $18, $78
+	db $20, $78
+	db $28, $78
+	db $30, $78
+	db $40, $48
+	db $48, $48
+	db $50, $48
+	db $58, $48
+	db $60, $48
+	db $40, $58
+	db $48, $58
+	db $50, $58
+	db $58, $58
+	db $60, $58
+	db $40, $68
+	db $48, $68
+	db $50, $68
+	db $58, $68
+	db $60, $68
+	db $70, $48
+	db $80, $48
+	db $90, $48
+	db $40, $78
+	db $48, $78
+	db $50, $78
+	db $58, $78
+	db $60, $78
+	db $70, $58
+	db $70, $68
+	db $0d, $92
+	db $3d, $92
+	db $6d, $92
+
+Unknown_11d29e: ; 11d29e
+	db $10, $50
+	db $40, $50
+	db $70, $50
+	db $10, $60
+	db $40, $60
+	db $70, $60
+	db $10, $70
+	db $40, $70
+	db $70, $70
+	db $10, $80
+	db $40, $80
+	db $70, $80
+
+Unknown_11d2b6: ; 11d2b6
+	db $80, $50
+	db $80, $60
+
+Unknown_11d2ba: ; 11d2ba
+	db $20, $50
+	db $20, $60
+
+Unknown_11d2be: ; 11d2be
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $28, $28
+	db $29, $26
+	db $26, $26
+
+Function11d2ee: ; 11d2ee (47:52ee)
+	ld hl, wcd24
+	and [hl]
+	jr nz, .asm_11d316
+	ld a, e
+	ld hl, wcd23
+	and [hl]
+	jr z, .asm_11d30f
+	ld hl, $e
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_11d305
+	dec [hl]
+	ret
+.asm_11d305
+	ld a, $0
+	ld [hld], a
+	ld a, $1
+	xor [hl]
+	ld [hl], a
+	and a
+	jr nz, .asm_11d316
+.asm_11d30f
+	ld hl, $7
+	add hl, bc
+	xor a
+	ld [hl], a
+	ret
+.asm_11d316
+	ld hl, $5
+	add hl, bc
+	ld a, $b0
+	sub [hl]
+	ld hl, $7
+	add hl, bc
+	ld [hl], a
+	ret
+
+Function11d323: ; 11d323
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_11d33a
+	ld de, wMapPals
+	ld bc, 16 * 8
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	ret
+; 11d33a
+
+Palette_11d33a:
+	RGB 31, 31, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 31, 16, 31
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 23, 17, 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 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+	RGB 00, 00, 00
+
+; 11d3ba
+
+Function11d3ba: ; 11d3ba
+	ld a, [rSVBK]
+	push af
+	ld hl, BattleMonSpclDef
+	ld a, $0
+	ld [wcd2d], a
+	ld [hli], a
+	ld a, $d8
+	ld [wcd2e], a
+	ld [hl], a
+	ld a, $fe
+	ld [wcd2f], a
+	ld a, $54
+	ld [wcd30], a
+	ld a, $a8
+	ld [wcd31], a
+	ld a, $c6
+	ld [wcd32], a
+	ld a, $4a
+	ld [wcd33], a
+	ld a, $c6
+	ld [wcd34], a
+	ld hl, Unknown_11f23c
+	ld a, $2d
+
+Function11d3ef: ; 11d3ef
+	push af
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	push hl
+	ld hl, wMapPals
+	add hl, de
+	ld a, [wcd2d]
+	ld e, a
+	ld a, [wcd2e]
+	ld d, a
+	push bc
+.asm_11d406
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [hli]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	pop af
+	ld [de], a
+	inc de
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [hli]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	pop af
+	ld [de], a
+	inc de
+	dec bc
+	ld a, c
+	or b
+	jr nz, .asm_11d406
+	ld a, [wcd2f]
+	ld l, a
+	ld a, [wcd30]
+	ld h, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, l
+	ld [wcd2f], a
+	ld a, h
+	ld [wcd30], a
+	push bc
+	pop hl
+	ld c, $0
+.asm_11d43d
+	ld a, [hl]
+	cp $ff
+	jr z, .asm_11d453
+	call Function11d493
+	jr nz, .asm_11d44a
+	inc hl
+	jr .asm_11d43d
+
+.asm_11d44a
+	ld a, [hli]
+	ld [de], a
+	inc de
+	xor a
+	ld [de], a
+	inc de
+	inc c
+	jr .asm_11d43d
+
+.asm_11d453
+	pop hl
+	ld b, $0
+	add hl, bc
+	push hl
+	pop bc
+	ld a, [wcd31]
+	ld l, a
+	ld a, [wcd32]
+	ld h, a
+	ld a, c
+	ld [hli], a
+	ld a, b
+	ld [hli], a
+	ld a, l
+	ld [wcd31], a
+	ld a, h
+	ld [wcd32], a
+	ld a, [wcd33]
+	ld l, a
+	ld a, [wcd34]
+	ld h, a
+	ld a, e
+	ld [wcd2d], a
+	ld [hli], a
+	ld a, d
+	ld [wcd2e], a
+	ld [hli], a
+	ld a, l
+	ld [wcd33], a
+	ld a, h
+	ld [wcd34], a
+	pop hl
+	pop af
+	dec a
+	jr z, .asm_11d48f
+	jp Function11d3ef
+
+.asm_11d48f
+	pop af
+	ld [rSVBK], a
+	ret
+; 11d493
+
+Function11d493: ; 11d493
+	push hl
+	push bc
+	push de
+	dec a
+	ld hl, rSVBK
+	ld e, $1
+	ld [hl], e
+	call CheckSeenMon
+	ld hl, rSVBK
+	ld e, $5
+	ld [hl], e
+	pop de
+	pop bc
+	pop hl
+	ret
+; 11d4aa
+
+Function11d4aa: ; 11d4aa
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, Unknown_11daac
+	ld bc, Unknown_11f220
+	xor a
+	ld [wcd2d], a
+	inc a
+	ld [wcd2e], a
+	ld a, $e
+.asm_11d4c1
+	push af
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	push hl
+	ld hl, $0005
+	add hl, de
+	ld a, [bc]
+rept 2
+	inc bc
+endr
+	push bc
+.asm_11d4cf
+	push af
+	push hl
+	ld a, [hli]
+	ld e, a
+	ld a, [hl]
+	ld d, a
+	ld hl, wd000
+	add hl, de
+	ld a, [wcd2d]
+	ld [hli], a
+	inc a
+	ld [wcd2d], a
+	ld a, [wcd2e]
+	ld [hl], a
+	pop hl
+	ld de, $0008
+	add hl, de
+	pop af
+	dec a
+	jr nz, .asm_11d4cf
+	ld hl, wcd2d
+	xor a
+	ld [hli], a
+	inc [hl]
+	pop bc
+	pop hl
+	pop af
+	dec a
+	jr nz, .asm_11d4c1
+	pop af
+	ld [rSVBK], a
+	ret
+; 11d4fe
+
+
+Unknown_11d4fe:
+; Pokemon sorted by kana.
+; Notably, Rhydon is missing.
+
+	dw Unknown_11d558
+	dw Unknown_11d55f
+	dw Unknown_11d565
+	dw Unknown_11d56c
+	dw Unknown_11d574
+	dw Unknown_11d57f
+	dw Unknown_11d58e
+	dw Unknown_11d598
+	dw Unknown_11d59f
+	dw Unknown_11d5a3
+	dw Unknown_11d5b2
+	dw Unknown_11d5bb
+	dw Unknown_11d5c0
+	dw Unknown_11d5c8
+	dw Unknown_11d5cb
+	dw Unknown_11d5cd
+	dw Unknown_11d5d1
+	dw Unknown_11d5d4
+	dw Unknown_11d5d6
+	dw Unknown_11d5dc
+	dw Unknown_11d5e7
+	dw Unknown_11d5ea
+	dw Unknown_11d5f7
+	dw Unknown_11d5f9
+	dw Unknown_11d5fc
+	dw Unknown_11d5fe
+	dw Unknown_11d60e
+	dw Unknown_11d61d
+	dw Unknown_11d62e
+	dw Unknown_11d636
+	dw Unknown_11d63e
+	dw Unknown_11d649
+	dw Unknown_11d64e
+	dw Unknown_11d651
+	dw Unknown_11d656
+	dw Unknown_11d65a
+	dw Unknown_11d660
+	dw Unknown_11d662
+	dw Unknown_11d665
+	dw Unknown_11d66d
+	dw Unknown_11d671
+	dw Unknown_11d674
+	dw Unknown_11d678
+	dw Unknown_11d67a
+	dw Unknown_11d67d
+
+Unknown_11d558:	db EKANS, ARBOK, SEAKING, ARIADOS, CROCONAW, UNOWN, $ff
+Unknown_11d55f:	db EEVEE, GEODUDE, SPINARAK, PILOSWINE, ONIX, $ff
+Unknown_11d565:	db ARCANINE, SUDOWOODO, WEEPINBELL, VICTREEBEL, WOOPER, SWINUB, $ff
+Unknown_11d56c:	db SKARMORY, AIPOM, ESPEON, HITMONCHAN, ELEKID, ELECTABUZZ, ENTEI, $ff
+Unknown_11d574:	db FERALIGATR, FURRET, OCTILLERY, PRIMEAPE, SENTRET, STANTLER, SPEAROW, FEAROW, OMASTAR, OMANYTE, $ff
+Unknown_11d57f:	db GROWLITHE, MACHAMP, DRAGONITE, PINSIR, SNORLAX, KABUTO, KABUTOPS, HITMONTOP, WARTORTLE, BLASTOISE, FARFETCH_D, CUBONE, MAROWAK, KANGASKHAN, $ff
+Unknown_11d58e:	db SUNFLORA, CATERPIE, GYARADOS, RAPIDASH, NINETALES, GIRAFARIG, BELLOSSOM, KINGDRA, KINGLER, $ff
+Unknown_11d598:	db GLOOM, PINECO, GLIGAR, KRABBY, GRANBULL, CROBAT, $ff
+Unknown_11d59f:	db ABRA, GENGAR, TAUROS, $ff
+Unknown_11d5a3:	db MAGIKARP, MAGNEMITE, GASTLY, HAUNTER, MACHOKE, KAKUNA, PSYDUCK, PHANPY, RATTATA, GOLDUCK, GOLBAT, GOLEM, GRAVELER, VENONAT, $ff
+Unknown_11d5b2:	db RHYHORN, PUPITAR, CORSOLA, HITMONLEE, ZAPDOS, JOLTEON, SANDSHREW, SANDSLASH, $ff
+Unknown_11d5bb:	db SEADRA, SHELLDER, VAPOREON, DEWGONG, $ff
+Unknown_11d5c0:	db SUICUNE, STARMIE, SCYTHER, ZUBAT, BEEDRILL, HYPNO, DROWZEE, $ff
+Unknown_11d5c8:	db SQUIRTLE, CELEBI, $ff
+Unknown_11d5cb:	db WOBBUFFET, $ff
+Unknown_11d5cd:	db DUGTRIO, HORSEA, EXEGGCUTE, $ff
+Unknown_11d5d1:	db CHIKORITA, CHINCHOU, $ff
+Unknown_11d5d4:	db SHUCKLE, $ff
+Unknown_11d5d6:	db DIGLETT, REMORAID, DELIBIRD, HOUNDOUR, AMPHAROS, $ff
+Unknown_11d5dc:	db DODUO, DODRIO, SMEARGLE, KOFFING, TENTACRUEL, TOGETIC, TOGEPI, GOLDEEN, METAPOD, DONPHAN, $ff
+Unknown_11d5e7:	db ODDISH, EXEGGUTOR, $ff
+Unknown_11d5ea:	db NIDOKING, NIDOQUEEN, NIDORAN_M, NIDORAN_F, NIDORINA, NIDORINO, MEOWTH, SNEASEL, POLIWHIRL, POLITOED, POLIWRATH, POLIWAG, $ff
+Unknown_11d5f7:	db QUAGSIRE, $ff
+Unknown_11d5f9:	db NATU, XATU, $ff
+Unknown_11d5fc:	db DUNSPARCE, $ff
+Unknown_11d5fe:	db SEEL, STEELIX, TYPHLOSION, DRAGONAIR, BUTTERFREE, SCIZOR, HOPPIP, BLISSEY, PARAS, PARASECT, QWILFISH, MR__MIME, TYROGUE, CLOYSTER, TYRANITAR, $ff
+Unknown_11d60e:	db CLEFFA, WEEDLE, PIKACHU, CLEFABLE, PIDGEOT, PIDGEOTTO, PICHU, CLEFAIRY, CHARMANDER, STARYU, CYNDAQUIL, SUNKERN, TEDDIURSA, VOLTORB, $ff
+Unknown_11d61d:	db MOLTRES, FLAREON, ALAKAZAM, MAGMAR, FORRETRESS, WIGGLYTUFF, IVYSAUR, BULBASAUR, VENUSAUR, AERODACTYL, MAGBY, IGGLYBUFF, UMBREON, ARTICUNO, JIGGLYPUFF, SNUBBULL, $ff
+Unknown_11d62e:	db BAYLEEF, GRIMER, MUK, HERACROSS, HOUNDOOM, PERSIAN, LICKITUNG, $ff
+Unknown_11d636:	db HO_OH, HOOTHOOT, PIDGEY, PONYTA, SKIPLOOM, PORYGON, PORYGON2, $ff
+Unknown_11d63e:	db MAGCARGO, SLUGMA, QUILAVA, BELLSPROUT, WEEZING, MARILL, AZUMARILL, ELECTRODE, MANKEY, MANTINE, $ff
+Unknown_11d649:	db DRATINI, MEW, MEWTWO, MILTANK, $ff
+Unknown_11d64e:	db MISDREAVUS, SMOOCHUM, $ff
+Unknown_11d651:	db MEGANIUM, DITTO, TENTACOOL, MAREEP, $ff
+Unknown_11d656:	db FLAAFFY, VENOMOTH, TANGELA, $ff
+Unknown_11d65a:	db SLOWKING, SLOWBRO, SLOWPOKE, MURKROW, YANMA, $ff
+Unknown_11d660:	db KADABRA, $ff
+Unknown_11d662:	db LARVITAR, NOCTOWL, $ff
+Unknown_11d665:	db RAIKOU, RAICHU, CHANSEY, RATICATE, LAPRAS, VILEPLUME, LANTURN, $ff
+Unknown_11d66d:	db CHARMELEON, CHARIZARD, URSARING, $ff
+Unknown_11d671:	db JYNX, LUGIA, $ff
+Unknown_11d674:	db MAGNETON, LEDIAN, LEDYBA, $ff
+Unknown_11d678:	db VULPIX, $ff
+Unknown_11d67a:	db JUMPLUFF, TOTODILE, MACHOP
+Unknown_11d67d:	db $ff
+; 11d67e
+
+GFX_11d67e:
+INCBIN "gfx/pokedex/select_start.2bpp"
+; 11d6de
+
+LZ_11d6de:
+INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
+; 11da52
+
+Strings_11da52: ; 11da52
+	db "ポケモン@@"
+	db "タイプ@@@"
+	db "あいさつ@@"
+	db "ひと@@@@"
+	db "バトル@@@"
+	db "こえ@@@@"
+	db "かいわ@@@"
+	db "きもち@@@"
+	db "じょうたい@"
+	db "せいかつ@@"
+	db "しゅみ@@@"
+	db "こうどう@@"
+	db "じかん@@@"
+	db "むすび@@@"
+	db "あれこれ@@"
+; 11daac
+
+Unknown_11daac: ; 11daac
+	dw Unknown_11dac8
+	dw Unknown_11db58
+	dw Unknown_11dc78
+	dw Unknown_11dea0
+	dw Unknown_11e0c8
+	dw Unknown_11e2d8
+	dw Unknown_11e4e8
+	dw Unknown_11e710
+	dw Unknown_11e920
+	dw Unknown_11ea58
+	dw Unknown_11eb90
+	dw Unknown_11edb8
+	dw Unknown_11eef0
+	dw Unknown_11f100
+
+Unknown_11dac8: ; 11dac8
+	db "あく@@@", $26, $0, $0
+	db "いわ@@@", $aa, $0, $0
+	db "エスパー@", $da, $0, $0
+	db "かくとう@", $4e, $1, $0
+	db "くさ@@@", $ba, $1, $0
+	db "ゴースト@", $e4, $1, $0
+	db "こおり@@", $e6, $1, $0
+	db "じめん@@", $68, $2, $0
+	db "タイプ@@", $e8, $2, $0
+	db "でんき@@", $8e, $3, $0
+	db "どく@@@", $ae, $3, $0
+	db "ドラゴン@", $bc, $3, $0
+	db "ノーマル@", $22, $4, $0
+	db "はがね@@", $36, $4, $0
+	db "ひこう@@", $5e, $4, $0
+	db "ほのお@@", $b2, $4, $0
+	db "みず@@@", $f4, $4, $0
+	db "むし@@@", $12, $5, $0
+
+Unknown_11db58: ; 11db58
+	db "ありがと@", $58, $0, $0
+	db "ありがとう", $5a, $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
+	db "おめでとう", $2a, $1, $0
+	db "ごめん@@", $f8, $1, $0
+	db "ごめんよ@", $fa, $1, $0
+	db "こらっ@@", $fc, $1, $0
+	db "こんちは!", $a, $2, $0
+	db "こんにちは", $10, $2, $0
+	db "さようなら", $28, $2, $0
+	db "サンキュー", $2e, $2, $0
+	db "さんじょう", $30, $2, $0
+	db "しっけい@", $48, $2, $0
+	db "しつれい@", $4c, $2, $0
+	db "じゃーね@", $6c, $2, $0
+	db "すいません", $8c, $2, $0
+	db "それじゃ@", $ca, $2, $0
+	db "どうも@@", $a6, $3, $0
+	db "なんじゃ@", $ee, $3, $0
+	db "ハーイ@@", $2c, $4, $0
+	db "はいはい@", $32, $4, $0
+	db "バイバイ@", $34, $4, $0
+	db "へイ@@@", $8a, $4, $0
+	db "またね@@", $de, $4, $0
+	db "もしもし@", $32, $5, $0
+	db "やあ@@@", $3e, $5, $0
+	db "やっほー@", $4e, $5, $0
+	db "よう@@@", $62, $5, $0
+	db "ようこそ@", $64, $5, $0
+	db "よろしく@", $80, $5, $0
+	db "らっしゃい", $94, $5, $0
+
+Unknown_11dc78: ; 11dc78
+	db "あいて@@", $1c, $0, $0
+	db "あたし@@", $36, $0, $0
+	db "あなた@@", $40, $0, $0
+	db "あなたが@", $42, $0, $0
+	db "あなたに@", $44, $0, $0
+	db "あなたの@", $46, $0, $0
+	db "あなたは@", $48, $0, $0
+	db "あなたを@", $4a, $0, $0
+	db "おかあさん", $e8, $0, $0
+	db "おじいさん", $fc, $0, $0
+	db "おじさん@", $2, $1, $0
+	db "おとうさん", $e, $1, $0
+	db "おとこのこ", $10, $1, $0
+	db "おとな@@", $14, $1, $0
+	db "おにいさん", $16, $1, $0
+	db "おねえさん", $18, $1, $0
+	db "おばあさん", $1c, $1, $0
+	db "おばさん@", $20, $1, $0
+	db "おれさま@", $34, $1, $0
+	db "おんなのこ", $3a, $1, $0
+	db "ガール@@", $40, $1, $0
+	db "かぞく@@", $52, $1, $0
+	db "かのじょ@", $72, $1, $0
+	db "かれ@@@", $7c, $1, $0
+	db "きみ@@@", $9a, $1, $0
+	db "きみが@@", $9c, $1, $0
+	db "きみに@@", $9e, $1, $0
+	db "きみの@@", $a0, $1, $0
+	db "きみは@@", $a2, $1, $0
+	db "きみを@@", $a4, $1, $0
+	db "ギャル@@", $ae, $1, $0
+	db "きょうだい", $b2, $1, $0
+	db "こども@@", $f0, $1, $0
+	db "じぶん@@", $54, $2, $0
+	db "じぶんが@", $56, $2, $0
+	db "じぶんに@", $58, $2, $0
+	db "じぶんの@", $5a, $2, $0
+	db "じぶんは@", $5c, $2, $0
+	db "じぶんを@", $5e, $2, $0
+	db "だれ@@@", $18, $3, $0
+	db "だれか@@", $1a, $3, $0
+	db "だれが@@", $1c, $3, $0
+	db "だれに@@", $1e, $3, $0
+	db "だれの@@", $20, $3, $0
+	db "だれも@@", $22, $3, $0
+	db "だれを@@", $24, $3, $0
+	db "ちゃん@@", $38, $3, $0
+	db "ともだち@", $b8, $3, $0
+	db "なかま@@", $d4, $3, $0
+	db "ひと@@@", $62, $4, $0
+	db "ボーイ@@", $98, $4, $0
+	db "ボク@@@", $a0, $4, $0
+	db "ボクが@@", $a2, $4, $0
+	db "ボクに@@", $a4, $4, $0
+	db "ボクの@@", $a6, $4, $0
+	db "ボクは@@", $a8, $4, $0
+	db "ボクを@@", $aa, $4, $0
+	db "みんな@@", $4, $5, $0
+	db "みんなが@", $6, $5, $0
+	db "みんなに@", $8, $5, $0
+	db "みんなの@", $a, $5, $0
+	db "みんなは@", $c, $5, $0
+	db "ライバル@", $8a, $5, $0
+	db "わたし@@", $c2, $5, $0
+	db "わたしが@", $c4, $5, $0
+	db "わたしに@", $c6, $5, $0
+	db "わたしの@", $c8, $5, $0
+	db "わたしは@", $ca, $5, $0
+	db "わたしを@", $cc, $5, $0
+
+Unknown_11dea0: ; 11dea0
+	db "あいしょう", $18, $0, $0
+	db "いけ!@@", $88, $0, $0
+	db "いちばん@", $96, $0, $0
+	db "かくご@@", $4c, $1, $0
+	db "かたせて@", $54, $1, $0
+	db "かち@@@", $56, $1, $0
+	db "かつ@@@", $58, $1, $0
+	db "かった@@", $60, $1, $0
+	db "かったら@", $62, $1, $0
+	db "かって@@", $64, $1, $0
+	db "かてない@", $66, $1, $0
+	db "かてる@@", $68, $1, $0
+	db "かなわない", $70, $1, $0
+	db "きあい@@", $84, $1, $0
+	db "きめた@@", $a8, $1, $0
+	db "きりふだ@", $b6, $1, $0
+	db "くらえ@@", $c2, $1, $0
+	db "こい!@@", $da, $1, $0
+	db "こうげき@", $e0, $1, $0
+	db "こうさん@", $e2, $1, $0
+	db "こんじょう", $8, $2, $0
+	db "さいのう@", $16, $2, $0
+	db "さくせん@", $1a, $2, $0
+	db "さばき@@", $22, $2, $0
+	db "しょうぶ@", $7e, $2, $0
+	db "しょうり@", $80, $2, $0
+	db "せめ@@@", $b4, $2, $0
+	db "センス@@", $b6, $2, $0
+	db "たいせん@", $e6, $2, $0
+	db "たたかい@", $f6, $2, $0
+	db "ちから@@", $32, $3, $0
+	db "チャレンジ", $36, $3, $0
+	db "つよい@@", $58, $3, $0
+	db "つよすぎ@", $5a, $3, $0
+	db "つらい@@", $5c, $3, $0
+	db "つらかった", $5e, $3, $0
+	db "てかげん@", $6c, $3, $0
+	db "てき@@@", $6e, $3, $0
+	db "てんさい@", $90, $3, $0
+	db "でんせつ@", $94, $3, $0
+	db "トレーナー", $c6, $3, $0
+	db "にげ@@@", $4, $4, $0
+	db "ぬるい@@", $10, $4, $0
+	db "ねらう@@", $16, $4, $0
+	db "バトル@@", $4a, $4, $0
+	db "ファイト@", $72, $4, $0
+	db "ふっかつ@", $78, $4, $0
+	db "ポイント@", $94, $4, $0
+	db "ポケモン@", $ac, $4, $0
+	db "ほんき@@", $bc, $4, $0
+	db "まいった!", $c4, $4, $0
+	db "まけ@@@", $c8, $4, $0
+	db "まけたら@", $ca, $4, $0
+	db "まけて@@", $cc, $4, $0
+	db "まける@@", $ce, $4, $0
+	db "まもり@@", $ea, $4, $0
+	db "みかた@@", $f2, $4, $0
+	db "みとめない", $fe, $4, $0
+	db "みとめる@", $0, $5, $0
+	db "むてき@@", $16, $5, $0
+	db "もらった!", $3c, $5, $0
+	db "よゆう@@", $7a, $5, $0
+	db "よわい@@", $82, $5, $0
+	db "よわすぎ@", $84, $5, $0
+	db "らくしょう", $8e, $5, $0
+	db "りーダー@", $9e, $5, $0
+	db "ルール@@", $a0, $5, $0
+	db "レべル@@", $a6, $5, $0
+	db "わざ@@@", $be, $5, $0
+
+Unknown_11e0c8: ; 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 "ー@@@@", $e, $0, $0
+	db "ーーー@@", $10, $0, $0
+	db "あーあ@@", $14, $0, $0
+	db "あーん@@", $16, $0, $0
+	db "あははー@", $52, $0, $0
+	db "あら@@@", $54, $0, $0
+	db "いえ@@@", $72, $0, $0
+	db "イエス@@", $74, $0, $0
+	db "うう@@@", $ac, $0, $0
+	db "うーん@@", $ae, $0, $0
+	db "うおー!@", $b0, $0, $0
+	db "うおりゃー", $b2, $0, $0
+	db "うひょー@", $bc, $0, $0
+	db "うふふ@@", $be, $0, $0
+	db "うわー@@", $ca, $0, $0
+	db "うわーん@", $cc, $0, $0
+	db "ええ@@@", $d2, $0, $0
+	db "えー@@@", $d4, $0, $0
+	db "えーん@@", $d6, $0, $0
+	db "えへへ@@", $dc, $0, $0
+	db "おいおい@", $e0, $0, $0
+	db "おお@@@", $e2, $0, $0
+	db "おっと@@", $c, $1, $0
+	db "がーん@@", $42, $1, $0
+	db "キャー@@", $aa, $1, $0
+	db "ギャー@@", $ac, $1, $0
+	db "ぐふふふふ", $bc, $1, $0
+	db "げっ@@@", $ce, $1, $0
+	db "しくしく@", $3e, $2, $0
+	db "ちえっ@@", $2e, $3, $0
+	db "てへ@@@", $86, $3, $0
+	db "ノー@@@", $20, $4, $0
+	db "はあー@@", $2a, $4, $0
+	db "はい@@@", $30, $4, $0
+	db "はっはっは", $48, $4, $0
+	db "ひいー@@", $56, $4, $0
+	db "ひゃあ@@", $6a, $4, $0
+	db "ふっふっふ", $7c, $4, $0
+	db "ふにゃ@@", $7e, $4, $0
+	db "ププ@@@", $80, $4, $0
+	db "ふふん@@", $82, $4, $0
+	db "ふん@@@", $88, $4, $0
+	db "へっへっへ", $8e, $4, $0
+	db "へへー@@", $90, $4, $0
+	db "ほーほほほ", $9c, $4, $0
+	db "ほら@@@", $b6, $4, $0
+	db "まあ@@@", $c0, $4, $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 "ラララ@@", $98, $5, $0
+	db "わーい@@", $ac, $5, $0
+	db "わーん!!", $b0, $5, $0
+	db "ワォ@@@", $b2, $5, $0
+	db "わっ!!@", $ce, $5, $0
+	db "わははは!", $d0, $5, $0
+
+Unknown_11e2d8: ; 11e2d8
+	db "あのね@@", $50, $0, $0
+	db "あんまり@", $6e, $0, $0
+	db "いじわる@", $8e, $0, $0
+	db "うそ@@@", $b6, $0, $0
+	db "うむ@@@", $c4, $0, $0
+	db "おーい@@", $e4, $0, $0
+	db "おすすめ@", $6, $1, $0
+	db "おばかさん", $1e, $1, $0
+	db "かなり@@", $6e, $1, $0
+	db "から@@@", $7a, $1, $0
+	db "きぶん@@", $98, $1, $0
+	db "けど@@@", $d6, $1, $0
+	db "こそ@@@", $ea, $1, $0
+	db "こと@@@", $ee, $1, $0
+	db "さあ@@@", $12, $2, $0
+	db "さっぱり@", $1e, $2, $0
+	db "さて@@@", $20, $2, $0
+	db "じゅうぶん", $72, $2, $0
+	db "すぐ@@@", $94, $2, $0
+	db "すごく@@", $98, $2, $0
+	db "すこしは@", $9a, $2, $0
+	db "すっっごい", $a0, $2, $0
+	db "ぜーんぜん", $b0, $2, $0
+	db "ぜったい@", $b2, $2, $0
+	db "それで@@", $ce, $2, $0
+	db "だけ@@@", $f2, $2, $0
+	db "だって@@", $fc, $2, $0
+	db "たぶん@@", $6, $3, $0
+	db "たら@@@", $14, $3, $0
+	db "ちょー@@", $3a, $3, $0
+	db "ちょっと@", $3c, $3, $0
+	db "ったら@@", $4e, $3, $0
+	db "って@@@", $50, $3, $0
+	db "ていうか@", $62, $3, $0
+	db "でも@@@", $88, $3, $0
+	db "どうしても", $9c, $3, $0
+	db "とうぜん@", $a0, $3, $0
+	db "どうぞ@@", $a2, $3, $0
+	db "とりあえず", $be, $3, $0
+	db "なあ@@@", $cc, $3, $0
+	db "なんて@@", $f4, $3, $0
+	db "なんでも@", $fc, $3, $0
+	db "なんとか@", $fe, $3, $0
+	db "には@@@", $8, $4, $0
+	db "バッチり@", $46, $4, $0
+	db "ばりばり@", $52, $4, $0
+	db "ほど@@@", $b0, $4, $0
+	db "ほんと@@", $be, $4, $0
+	db "まさに@@", $d0, $4, $0
+	db "マジ@@@", $d2, $4, $0
+	db "マジで@@", $d4, $4, $0
+	db "まったく@", $e4, $4, $0
+	db "まで@@@", $e6, $4, $0
+	db "まるで@@", $ec, $4, $0
+	db "ムード@@", $e, $5, $0
+	db "むしろ@@", $14, $5, $0
+	db "めちゃ@@", $24, $5, $0
+	db "めっぽう@", $28, $5, $0
+	db "もう@@@", $2c, $5, $0
+	db "モード@@", $2e, $5, $0
+	db "もっと@@", $36, $5, $0
+	db "もはや@@", $38, $5, $0
+	db "やっと@@", $4a, $5, $0
+	db "やっぱり@", $4c, $5, $0
+	db "より@@@", $7c, $5, $0
+	db "れば@@@", $a4, $5, $0
+
+Unknown_11e4e8: ; 11e4e8
+	db "あいたい@", $1a, $0, $0
+	db "あそびたい", $32, $0, $0
+	db "いきたい@", $7c, $0, $0
+	db "うかれて@", $b4, $0, $0
+	db "うれしい@", $c6, $0, $0
+	db "うれしさ@", $c8, $0, $0
+	db "エキサイト", $d8, $0, $0
+	db "えらい@@", $de, $0, $0
+	db "おかしい@", $ec, $0, $0
+	db "ォッケー@", $8, $1, $0
+	db "かえりたい", $48, $1, $0
+	db "がっくし@", $5a, $1, $0
+	db "かなしい@", $6c, $1, $0
+	db "がんばって", $80, $1, $0
+	db "きがしない", $86, $1, $0
+	db "きがする@", $88, $1, $0
+	db "ききたい@", $8a, $1, $0
+	db "きになる@", $90, $1, $0
+	db "きのせい@", $96, $1, $0
+	db "きらい@@", $b4, $1, $0
+	db "くやしい@", $be, $1, $0
+	db "くやしさ@", $c0, $1, $0
+	db "さみしい@", $24, $2, $0
+	db "ざんねん@", $32, $2, $0
+	db "しあわせ@", $36, $2, $0
+	db "したい@@", $44, $2, $0
+	db "したくない", $46, $2, $0
+	db "しまった@", $64, $2, $0
+	db "しょんぼり", $82, $2, $0
+	db "すき@@@", $92, $2, $0
+	db "だいきらい", $da, $2, $0
+	db "たいくつ@", $dc, $2, $0
+	db "だいじ@@", $de, $2, $0
+	db "だいすき@", $e4, $2, $0
+	db "たいへん@", $ea, $2, $0
+	db "たのしい@", $0, $3, $0
+	db "たのしすぎ", $2, $3, $0
+	db "たべたい@", $8, $3, $0
+	db "ダメダメ@", $e, $3, $0
+	db "たりない@", $16, $3, $0
+	db "ちくしょー", $34, $3, $0
+	db "どうしよう", $9e, $3, $0
+	db "ドキドキ@", $ac, $3, $0
+	db "ナイス@@", $d0, $3, $0
+	db "のみたい@", $26, $4, $0
+	db "びっくり@", $60, $4, $0
+	db "ふあん@@", $74, $4, $0
+	db "ふらふら@", $86, $4, $0
+	db "ほしい@@", $ae, $4, $0
+	db "ボロボロ@", $b8, $4, $0
+	db "まだまだ@", $e0, $4, $0
+	db "まてない@", $e8, $4, $0
+	db "まんぞく@", $f0, $4, $0
+	db "みたい@@", $f8, $4, $0
+	db "めずらしい", $22, $5, $0
+	db "メラメラ@", $2a, $5, $0
+	db "やだ@@@", $46, $5, $0
+	db "やったー@", $48, $5, $0
+	db "やばい@@", $50, $5, $0
+	db "やばすぎる", $52, $5, $0
+	db "やられた@", $54, $5, $0
+	db "やられて@", $56, $5, $0
+	db "よかった@", $6e, $5, $0
+	db "ラブラブ@", $96, $5, $0
+	db "ロマン@@", $a8, $5, $0
+	db "ろんがい@", $aa, $5, $0
+	db "わから@@", $b4, $5, $0
+	db "わかり@@", $b6, $5, $0
+	db "わくわく@", $ba, $5, $0
+
+Unknown_11e710: ; 11e710
+	db "あつい@@", $38, $0, $0
+	db "あった@@", $3a, $0, $0
+	db "あり@@@", $56, $0, $0
+	db "ある@@@", $5e, $0, $0
+	db "あわてて@", $6a, $0, $0
+	db "いい@@@", $70, $0, $0
+	db "いか@@@", $76, $0, $0
+	db "イカス@@", $78, $0, $0
+	db "いきおい@", $7a, $0, $0
+	db "いける@@", $8a, $0, $0
+	db "いじょう@", $8c, $0, $0
+	db "いそがしい", $90, $0, $0
+	db "いっしょに", $9a, $0, $0
+	db "いっぱい@", $9c, $0, $0
+	db "いない@@", $a0, $0, $0
+	db "いや@@@", $a4, $0, $0
+	db "いる@@@", $a8, $0, $0
+	db "うまい@@", $c0, $0, $0
+	db "うまく@@", $c2, $0, $0
+	db "おおきい@", $e6, $0, $0
+	db "おくれ@@", $f2, $0, $0
+	db "おしい@@", $fa, $0, $0
+	db "おもしろい", $2c, $1, $0
+	db "おもしろく", $2e, $1, $0
+	db "かっこいい", $5c, $1, $0
+	db "かわいい@", $7e, $1, $0
+	db "かんぺき@", $82, $1, $0
+	db "けっこう@", $d0, $1, $0
+	db "げんき@@", $d8, $1, $0
+	db "こわい@@", $6, $2, $0
+	db "さいこう@", $14, $2, $0
+	db "さむい@@", $26, $2, $0
+	db "さわやか@", $2c, $2, $0
+	db "しかたない", $38, $2, $0
+	db "すごい@@", $96, $2, $0
+	db "すごすぎ@", $9c, $2, $0
+	db "すてき@@", $a4, $2, $0
+	db "たいした@", $e0, $2, $0
+	db "だいじょぶ", $e2, $2, $0
+	db "たかい@@", $ec, $2, $0
+	db "ただしい@", $f8, $2, $0
+	db "だめ@@@", $c, $3, $0
+	db "ちいさい@", $2c, $3, $0
+	db "ちがう@@", $30, $3, $0
+	db "つかれ@@", $48, $3, $0
+	db "とくい@@", $b0, $3, $0
+	db "とまらない", $b6, $3, $0
+	db "ない@@@", $ce, $3, $0
+	db "なかった@", $d2, $3, $0
+	db "なし@@@", $d8, $3, $0
+	db "なって@@", $dc, $3, $0
+	db "はやい@@", $50, $4, $0
+	db "ひかる@@", $5a, $4, $0
+	db "ひくい@@", $5c, $4, $0
+	db "ひどい@@", $64, $4, $0
+	db "ひとりで@", $66, $4, $0
+	db "ひま@@@", $68, $4, $0
+	db "ふそく@@", $76, $4, $0
+	db "へた@@@", $8c, $4, $0
+	db "まちがって", $e2, $4, $0
+	db "やさしい@", $42, $5, $0
+	db "よく@@@", $70, $5, $0
+	db "よわって@", $86, $5, $0
+	db "らく@@@", $8c, $5, $0
+	db "らしい@@", $90, $5, $0
+	db "わるい@@", $d4, $5, $0
+
+Unknown_11e920: ; 11e920
+	db "アルバイト", $64, $0, $0
+	db "うち@@@", $ba, $0, $0
+	db "おかね@@", $ee, $0, $0
+	db "おこづかい", $f4, $0, $0
+	db "おふろ@@", $24, $1, $0
+	db "がっこう@", $5e, $1, $0
+	db "きねん@@", $92, $1, $0
+	db "グループ@", $c6, $1, $0
+	db "ゲット@@", $d2, $1, $0
+	db "こうかん@", $de, $1, $0
+	db "しごと@@", $40, $2, $0
+	db "しゅぎょう", $74, $2, $0
+	db "じゅぎょう", $76, $2, $0
+	db "じゅく@@", $78, $2, $0
+	db "しんか@@", $88, $2, $0
+	db "ずかん@@", $90, $2, $0
+	db "せいかつ@", $ae, $2, $0
+	db "せんせい@", $b8, $2, $0
+	db "センター@", $ba, $2, $0
+	db "タワー@@", $28, $3, $0
+	db "つうしん@", $40, $3, $0
+	db "テスト@@", $7e, $3, $0
+	db "テレビ@@", $8c, $3, $0
+	db "でんわ@@", $96, $3, $0
+	db "どうぐ@@", $9a, $3, $0
+	db "トレード@", $c4, $3, $0
+	db "なまえ@@", $e8, $3, $0
+	db "ニュース@", $a, $4, $0
+	db "にんき@@", $c, $4, $0
+	db "パーティー", $2e, $4, $0
+	db "べんきょう", $92, $4, $0
+	db "マシン@@", $d6, $4, $0
+	db "めいし@@", $1e, $5, $0
+	db "メッセージ", $26, $5, $0
+	db "もようがえ", $3a, $5, $0
+	db "ゆめ@@@", $5a, $5, $0
+	db "ようちえん", $66, $5, $0
+	db "ラジォ@@", $92, $5, $0
+	db "ワールド@", $ae, $5, $0
+
+Unknown_11ea58: ; 11ea58
+	db "アイドル@", $1e, $0, $0
+	db "アニメ@@", $4c, $0, $0
+	db "うた@@@", $b8, $0, $0
+	db "えいが@@", $d0, $0, $0
+	db "おかし@@", $ea, $0, $0
+	db "おしゃべり", $4, $1, $0
+	db "おままごと", $28, $1, $0
+	db "おもちゃ@", $30, $1, $0
+	db "おんがく@", $38, $1, $0
+	db "カード@@", $3e, $1, $0
+	db "かいもの@", $46, $1, $0
+	db "グルメ@@", $c8, $1, $0
+	db "ゲーム@@", $cc, $1, $0
+	db "ざっし@@", $1c, $2, $0
+	db "さんぽ@@", $34, $2, $0
+	db "じてんしゃ", $50, $2, $0
+	db "しゅみ@@", $7a, $2, $0
+	db "スポーツ@", $a8, $2, $0
+	db "ダイエット", $d8, $2, $0
+	db "たからもの", $f0, $2, $0
+	db "たび@@@", $4, $3, $0
+	db "ダンス@@", $2a, $3, $0
+	db "つり@@@", $60, $3, $0
+	db "デート@@", $6a, $3, $0
+	db "でんしゃ@", $92, $3, $0
+	db "ぬいぐるみ", $e, $4, $0
+	db "パソコン@", $3e, $4, $0
+	db "はな@@@", $4c, $4, $0
+	db "ヒーロー@", $58, $4, $0
+	db "ひるね@@", $6e, $4, $0
+	db "ヒロイン@", $70, $4, $0
+	db "ぼうけん@", $96, $4, $0
+	db "ボード@@", $9a, $4, $0
+	db "ボール@@", $9e, $4, $0
+	db "ほん@@@", $ba, $4, $0
+	db "マンガ@@", $ee, $4, $0
+	db "やくそく@", $40, $5, $0
+	db "やすみ@@", $44, $5, $0
+	db "よてい@@", $74, $5, $0
+
+Unknown_11eb90: ; 11eb90
+	db "あう@@@", $20, $0, $0
+	db "あきらめ@", $24, $0, $0
+	db "あげる@@", $28, $0, $0
+	db "あせる@@", $2e, $0, $0
+	db "あそび@@", $30, $0, $0
+	db "あそぶ@@", $34, $0, $0
+	db "あつめ@@", $3e, $0, $0
+	db "あるき@@", $60, $0, $0
+	db "あるく@@", $62, $0, $0
+	db "いく@@@", $7e, $0, $0
+	db "いけ@@@", $86, $0, $0
+	db "おき@@@", $f0, $0, $0
+	db "おこり@@", $f6, $0, $0
+	db "おこる@@", $f8, $0, $0
+	db "おしえ@@", $fe, $0, $0
+	db "おしえて@", $0, $1, $0
+	db "おねがい@", $1a, $1, $0
+	db "おぼえ@@", $26, $1, $0
+	db "かえる@@", $4a, $1, $0
+	db "がまん@@", $74, $1, $0
+	db "きく@@@", $8c, $1, $0
+	db "きたえ@@", $8e, $1, $0
+	db "きめ@@@", $a6, $1, $0
+	db "くる@@@", $c4, $1, $0
+	db "さがし@@", $18, $2, $0
+	db "さわぎ@@", $2a, $2, $0
+	db "した@@@", $42, $2, $0
+	db "しって@@", $4a, $2, $0
+	db "して@@@", $4e, $2, $0
+	db "しない@@", $52, $2, $0
+	db "しまう@@", $60, $2, $0
+	db "じまん@@", $66, $2, $0
+	db "しらない@", $84, $2, $0
+	db "しる@@@", $86, $2, $0
+	db "しんじて@", $8a, $2, $0
+	db "する@@@", $aa, $2, $0
+	db "たべる@@", $a, $3, $0
+	db "つかう@@", $42, $3, $0
+	db "つかえ@@", $44, $3, $0
+	db "つかって@", $46, $3, $0
+	db "できない@", $70, $3, $0
+	db "できる@@", $72, $3, $0
+	db "でない@@", $84, $3, $0
+	db "でる@@@", $8a, $3, $0
+	db "なげる@@", $d6, $3, $0
+	db "なやみ@@", $ea, $3, $0
+	db "ねられ@@", $18, $4, $0
+	db "ねる@@@", $1a, $4, $0
+	db "のがし@@", $24, $4, $0
+	db "のむ@@@", $28, $4, $0
+	db "はしり@@", $3a, $4, $0
+	db "はしる@@", $3c, $4, $0
+	db "はたらき@", $40, $4, $0
+	db "はたらく@", $42, $4, $0
+	db "はまって@", $4e, $4, $0
+	db "ぶつけ@@", $7a, $4, $0
+	db "ほめ@@@", $b4, $4, $0
+	db "みせて@@", $f6, $4, $0
+	db "みて@@@", $fc, $4, $0
+	db "みる@@@", $2, $5, $0
+	db "めざす@@", $20, $5, $0
+	db "もって@@", $34, $5, $0
+	db "ゆずる@@", $58, $5, $0
+	db "ゆるす@@", $5c, $5, $0
+	db "ゆるせ@@", $5e, $5, $0
+	db "られない@", $9a, $5, $0
+	db "られる@@", $9c, $5, $0
+	db "わかる@@", $b8, $5, $0
+	db "わすれ@@", $c0, $5, $0
+
+Unknown_11edb8: ; 11edb8
+	db "あき@@@", $22, $0, $0
+	db "あさ@@@", $2a, $0, $0
+	db "あした@@", $2c, $0, $0
+	db "いちにち@", $94, $0, $0
+	db "いつか@@", $98, $0, $0
+	db "いつも@@", $9e, $0, $0
+	db "いま@@@", $a2, $0, $0
+	db "えいえん@", $ce, $0, $0
+	db "おととい@", $12, $1, $0
+	db "おわり@@", $36, $1, $0
+	db "かようび@", $78, $1, $0
+	db "きのう@@", $94, $1, $0
+	db "きょう@@", $b0, $1, $0
+	db "きんようび", $b8, $1, $0
+	db "げつようび", $d4, $1, $0
+	db "このあと@", $f4, $1, $0
+	db "このまえ@", $f6, $1, $0
+	db "こんど@@", $c, $2, $0
+	db "じかん@@", $3c, $2, $0
+	db "じゅうねん", $70, $2, $0
+	db "すいようび", $8e, $2, $0
+	db "スタート@", $9e, $2, $0
+	db "ずっと@@", $a2, $2, $0
+	db "ストップ@", $a6, $2, $0
+	db "そのうち@", $c4, $2, $0
+	db "ついに@@", $3e, $3, $0
+	db "つぎ@@@", $4a, $3, $0
+	db "どようび@", $ba, $3, $0
+	db "なつ@@@", $da, $3, $0
+	db "にちようび", $6, $4, $0
+	db "はじめ@@", $38, $4, $0
+	db "はる@@@", $54, $4, $0
+	db "ひる@@@", $6c, $4, $0
+	db "ふゆ@@@", $84, $4, $0
+	db "まいにち@", $c6, $4, $0
+	db "もくようび", $30, $5, $0
+	db "よなか@@", $76, $5, $0
+	db "よる@@@", $7e, $5, $0
+	db "らいしゅう", $88, $5, $0
+
+Unknown_11eef0: ; 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 "かも@@@", $76, $1, $0
+	db "くれ@@@", $ca, $1, $0
+	db "ございます", $e8, $1, $0
+	db "しがち@@", $3a, $2, $0
+	db "します@@", $62, $2, $0
+	db "じゃ@@@", $6a, $2, $0
+	db "じゃん@@", $6e, $2, $0
+	db "しよう@@", $7c, $2, $0
+	db "ぜ!@@@", $ac, $2, $0
+	db "ぞ!@@@", $bc, $2, $0
+	db "た@@@@", $d4, $2, $0
+	db "だ@@@@", $d6, $2, $0
+	db "だからね@", $ee, $2, $0
+	db "だぜ@@@", $f4, $2, $0
+	db "だった@@", $fa, $2, $0
+	db "だね@@@", $fe, $2, $0
+	db "だよ@@@", $10, $3, $0
+	db "だよねー!", $12, $3, $0
+	db "だわ@@@", $26, $3, $0
+	db "ッス@@@", $4c, $3, $0
+	db "ってかんじ", $52, $3, $0
+	db "っぱなし@", $54, $3, $0
+	db "つもり@@", $56, $3, $0
+	db "ていない@", $64, $3, $0
+	db "ている@@", $66, $3, $0
+	db "でーす!@", $68, $3, $0
+	db "でした@@", $74, $3, $0
+	db "でしょ?@", $76, $3, $0
+	db "でしょー!", $78, $3, $0
+	db "です@@@", $7a, $3, $0
+	db "ですか?@", $7c, $3, $0
+	db "ですよ@@", $80, $3, $0
+	db "ですわ@@", $82, $3, $0
+	db "どうなの?", $a4, $3, $0
+	db "どうよ?@", $a8, $3, $0
+	db "とかいって", $aa, $3, $0
+	db "なの@@@", $e0, $3, $0
+	db "なのか@@", $e2, $3, $0
+	db "なのだ@@", $e4, $3, $0
+	db "なのよ@@", $e6, $3, $0
+	db "なんだね@", $f2, $3, $0
+	db "なんです@", $f8, $3, $0
+	db "なんてね@", $fa, $3, $0
+	db "ね@@@@", $12, $4, $0
+	db "ねー@@@", $14, $4, $0
+	db "の@@@@", $1c, $4, $0
+	db "の?@@@", $1e, $4, $0
+	db "ばっかり@", $44, $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 "よー@@@", $68, $5, $0
+	db "よーん@@", $6c, $5, $0
+	db "よね@@@", $78, $5, $0
+	db "るよ@@@", $a2, $5, $0
+	db "わけ@@@", $bc, $5, $0
+	db "わよ!@@", $d2, $5, $0
+
+Unknown_11f100: ; 11f100
+	db "ああ@@@", $12, $0, $0
+	db "あっち@@", $3c, $0, $0
+	db "あの@@@", $4e, $0, $0
+	db "ありゃ@@", $5c, $0, $0
+	db "あれ@@@", $66, $0, $0
+	db "あれは@@", $68, $0, $0
+	db "あんな@@", $6c, $0, $0
+	db "こう@@@", $dc, $1, $0
+	db "こっち@@", $ec, $1, $0
+	db "この@@@", $f2, $1, $0
+	db "こりゃ@@", $fe, $1, $0
+	db "これ@@@", $0, $2, $0
+	db "これだ!@", $2, $2, $0
+	db "これは@@", $4, $2, $0
+	db "こんな@@", $e, $2, $0
+	db "そう@@@", $be, $2, $0
+	db "そっち@@", $c0, $2, $0
+	db "その@@@", $c2, $2, $0
+	db "そりゃ@@", $c6, $2, $0
+	db "それ@@@", $c8, $2, $0
+	db "それだ!@", $cc, $2, $0
+	db "それは@@", $d0, $2, $0
+	db "そんな@@", $d2, $2, $0
+	db "どう@@@", $98, $3, $0
+	db "どっち@@", $b2, $3, $0
+	db "どの@@@", $b4, $3, $0
+	db "どりゃ@@", $c0, $3, $0
+	db "どれ@@@", $c2, $3, $0
+	db "どれを@@", $c8, $3, $0
+	db "どんな@@", $ca, $3, $0
+	db "なに@@@", $de, $3, $0
+	db "なんか@@", $ec, $3, $0
+	db "なんだ@@", $f0, $3, $0
+	db "なんで@@", $f6, $3, $0
+	db "なんなんだ", $0, $4, $0
+	db "なんの@@", $2, $4, $0
+; 11f220
+
+Unknown_11f220:
+	db $12, $01, $24, $02
+	db $45, $05, $45, $05
+	db $42, $05, $42, $05
+	db $45, $05, $42, $05
+	db $27, $03, $27, $03
+	db $45, $05, $27, $03
+	db $42, $05, $24, $02
+
+Unknown_11f23c:
+	db $12, $00, $2f, $00
+	db $70, $00, $1e, $00
+	db $ac, $00, $11, $00
+	db $ce, $00, $09, $00
+	db $e0, $00, $2e, $00
+	db $3c, $01, $24, $00
+	db $84, $01, $1b, $00
+	db $ba, $01, $09, $00
+	db $cc, $01, $07, $00
+	db $da, $01, $1c, $00
+	db $12, $02, $12, $00
+	db $36, $02, $2b, $00
+	db $8c, $02, $10, $00
+	db $ac, $02, $08, $00
+	db $bc, $02, $0c, $00
+	db $d4, $02, $2c, $00
+	db $2c, $03, $09, $00
+	db $3e, $03, $12, $00
+	db $62, $03, $1b, $00
+	db $98, $03, $1a, $00
+	db $cc, $03, $1c, $00
+	db $04, $04, $05, $00
+	db $0e, $04, $02, $00
+	db $12, $04, $05, $00
+	db $1c, $04, $07, $00
+	db $2a, $04, $16, $00
+	db $56, $04, $0e, $00
+	db $72, $04, $0c, $00
+	db $8a, $04, $05, $00
+	db $94, $04, $16, $00
+	db $c0, $04, $19, $00
+	db $f2, $04, $0e, $00
+	db $0e, $05, $08, $00
+	db $1e, $05, $07, $00
+	db $2c, $05, $09, $00
+	db $3e, $05, $0d, $00
+	db $58, $05, $04, $00
+	db $60, $05, $14, $00
+	db $88, $05, $0b, $00
+	db $9e, $05, $01, $00
+	db $a0, $05, $02, $00
+	db $a4, $05, $02, $00
+	db $a8, $05, $02, $00
+	db $ac, $05, $15, $00
+	db $00, $00, $09, $00
+
+BTTrainerClassGenders:
+	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 "@"
--- /dev/null
+++ b/misc/battle_tower_5c.asm
@@ -1,0 +1,421 @@
+BattleTowerBattle: ; 170215
+	xor a
+	ld [wcf63], a
+	call _BattleTowerBattle
+	ret
+; 17021d
+
+EmptySpecial_17021d: ; 17021d
+	ret
+; 17021e
+
+Function17021e: ; 17021e
+	xor a
+	ld [wcf63], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ret
+; 17022c
+
+_BattleTowerBattle: ; 17022c
+.loop
+	call .do_jumptable
+	call DelayFrame
+	ld a, [wcf63]
+	cp $1
+	jr nz, .loop
+	ret
+; 17023a
+
+.do_jumptable: ; 17023a
+	ld a, [wcf63]
+	ld e, a
+	ld d, 0
+	ld hl, .jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 170249
+
+.jumptable: ; 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
+	callba Mobile_HealParty
+	callba HealParty
+	call ReadBTTrainerParty
+	call Clears5_a89a
+	predef StartBattle
+	callba LoadPokemonData
+	callba HealParty
+	ld a, [wBattleResult]
+	ld [ScriptVar], a
+	and a
+	jr nz, .lost
+	ld a, BANK(sNrOfBeatenBattleTowerTrainers)
+	call GetSRAMBank
+	ld a, [sNrOfBeatenBattleTowerTrainers]
+	ld [wNrOfBeatenBattleTowerTrainers], a ; wcf64
+	call CloseSRAM
+	ld hl, StringBuffer3
+	ld a, [wNrOfBeatenBattleTowerTrainers] ; wcf64
+	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 [wcf63], 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
+	callba 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
+	callba 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
+	callba 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
+	callba 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, OTPartyMonNicknames % $100
+	ld [BGMapBuffer], a
+	ld a, OTPartyMonNicknames / $100
+	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
+rept 2
+	ld [hli], a
+endr
+	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_EXP + 2
+	add hl, bc
+	ld b, $1
+	predef CalcPkmnStats
+	pop de
+	pop hl
+rept 2
+	dec de
+endr
+	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, BT_TrainerTextIndex + $be
+	ld a, 7
+.loop
+	push af
+	push hl
+	ld c, 18
+.loop2
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	and a
+	jr z, .skip
+	cp $f
+	jr nc, .exit_inner_loop
+	push hl
+	ld hl, Unknown_170470
+	dec a
+	ld e, a
+	ld d, 0
+	add hl, de
+	ld a, [hl]
+	pop hl
+	cp b
+	jr c, .exit_inner_loop
+	jr z, .exit_inner_loop
+	jr .asm_170456
+
+.skip
+	ld a, b
+	cp $fc
+	jr nc, .exit_inner_loop
+
+.asm_170456
+	dec c
+	jr nz, .loop2
+	jr .dont_copy
+
+.exit_inner_loop
+	pop de
+	push de
+	ld hl, Unknown_17047e
+	ld bc, BATTLETOWER_TRAINERDATALENGTH
+	call CopyBytes
+
+.dont_copy
+	pop hl
+	ld de, $00e0
+	add hl, de
+	pop af
+	dec a
+	jr nz, .loop
+	ret
+; 170470
+
+Unknown_170470:
+	db $12, $24, $45, $45, $42, $42, $45, $42, $27, $27, $45, $27, $42, $24
+
+Unknown_17047e:
+	db $03, $04, $05, $08
+	db $03, $05, $0e, $06
+	db $03, $02, $00, $00
+	db $39, $07, $07, $04
+	db $00, $05, $04, $07
+	db $01, $05, $00, $00
+	db $0f, $05, $14, $07
+	db $05, $05, $11, $0c
+	db $0c, $06, $06, $04
+
+
+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, $3 ; BANK(BT_OTTrainer)
+	ld [rSVBK], a
+
+	ld hl, BT_OTTrainer ; $d100
+	ld de, wBT_OTTemp ; $c608
+	ld bc, BATTLE_TOWER_STRUCT_LENGTH
+	call CopyBytes
+
+	pop af
+	ld [rSVBK], a
+
+	ld a, BANK(s1_be45)
+	call GetSRAMBank
+	ld a, $2
+	ld [s1_be45], a
+	ld hl, sNrOfBeatenBattleTowerTrainers
+	inc [hl]
+	call CloseSRAM
+SkipBattleTowerTrainer: ; 1704c9
+	ret
+; 1704ca
--- a/misc/crystal_misc.asm
+++ b/misc/crystal_misc.asm
@@ -144,14 +144,14 @@
 	ret
 
 Function17a770: ; 17a770 (5e:6770)
-	ld a, [hOAMUpdate] ; $ff00+$d8
+	ld a, [hOAMUpdate]
 	push af
 	ld a, $1
-	ld [hOAMUpdate], a ; $ff00+$d8
+	ld [hOAMUpdate], a
 	call HideSprites
 	call Function17a9cb
 	pop af
-	ld [hOAMUpdate], a ; $ff00+$d8
+	ld [hOAMUpdate], a
 	ret
 
 Function17a781: ; 17a781 (5e:6781)
@@ -251,7 +251,7 @@
 Function17a81a: ; 17a81a (5e:681a)
 	call IsSFXPlaying
 	ret nc
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and $3
 	ret z
 	call ExitMenu
@@ -269,7 +269,7 @@
 	ld a, [hJoyLast]
 	and $f0
 	ld c, a
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	and $b
 	or c
 	ld c, a
@@ -430,7 +430,7 @@
 	ret
 
 .asm_17a92c
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function17a99e
 	ld hl, $d088
 	set 7, [hl]
@@ -741,10 +741,10 @@
 ; 17aba0
 
 Function17aba0: ; 17aba0 (5e:6ba0)
-	ld a, [rVBK] ; $ff00+$4f
+	ld a, [rVBK]
 	push af
 	ld a, $1
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 
 	ld hl, VTiles5 tile $00
 	ld de, GFX_17afa5
@@ -752,7 +752,7 @@
 	call Get2bpp
 
 	pop af
-	ld [rVBK], a ; $ff00+$4f
+	ld [rVBK], a
 
 	ld hl, VTiles0 tile $00
 	ld de, GFX_17afa5 + $4c0
@@ -766,13 +766,13 @@
 	ret
 
 Function17abcf: ; 17abcf (5e:6bcf)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
-	ld a, BANK(Unkn1Pals)
-	ld [rSVBK], a ; $ff00+$70
+	ld a, BANK(wMapPals)
+	ld [rSVBK], a
 
 	ld hl, Palette_17ac55
-	ld de, Unkn1Pals ; $d000
+	ld de, wMapPals ; $d000
 	ld bc, $30
 	call CopyBytes
 
@@ -793,7 +793,7 @@
 	call FarCopyBytes
 
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 Function17ac0c: ; 17ac0c (5e:6c0c)
--- a/misc/mobile_22.asm
+++ b/misc/mobile_22.asm
@@ -38,7 +38,7 @@
 	ret
 
 Function8917a: ; 8917a (22:517a)
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld bc, $32
 	xor a
 	call ByteFill
@@ -259,7 +259,7 @@
 	call Function8920f
 	pop af
 	jr c, .done
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $2
 	jr z, .done
 	and a
@@ -484,7 +484,7 @@
 	push bc
 	ld hl, 0
 	add hl, bc
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld c, 6
 	call Function89193
 	pop bc
@@ -499,8 +499,8 @@
 Function893b3: ; 893b3 (22:53b3)
 	call DisableLCD
 	call ClearSprites
-	call Functione51
-	call Functione5f
+	call LoadStandardFont
+	call LoadFontsExtra
 	call Function893ef
 	call Function8942b
 	call Function89455
@@ -510,8 +510,8 @@
 Function893cc: ; 893cc
 	call DisableLCD
 	call ClearSprites
-	call Functione51
-	call Functione5f
+	call LoadStandardFont
+	call LoadFontsExtra
 	call Function893ef
 	call Function89464
 	call EnableLCD
@@ -623,7 +623,7 @@
 	ld a, 5
 	ld [rSVBK], a
 	ld hl, Palette_894b3
-	ld de, Unkn1Pals + 8 * 7
+	ld de, wMapPals + 8 * 7
 	ld bc, 8
 	call CopyBytes
 	pop af
@@ -674,7 +674,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, 24
 	call CopyBytes
 	ld hl, Palette_89557
@@ -816,16 +816,16 @@
 
 
 Function895c7: ; 895c7 (22:55c7)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, 5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_895de
 	ld de, wd030
 	ld bc, 8
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 ; 895de (22:55de)
 
@@ -1253,7 +1253,7 @@
 
 .asm_897f3
 	ld a, $37
-	ld [$ffad], a
+	ld [hFillBox], a
 	hlcoord 12, 3
 	lb bc, 7, 7
 	predef FillBox
@@ -1365,8 +1365,8 @@
 
 Function898be: ; 898be
 	push bc
-	ld de, DefaultFlypoint
-	ld hl, DefaultFlypoint
+	ld de, wd002
+	ld hl, wd002
 	call Function89331
 	jr nc, .asm_898cd
 	ld de, String_89116
@@ -1801,7 +1801,7 @@
 ; 89b14
 
 Function89b14: ; 89b14
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function89b07
 	call Function89b00
 	ret
@@ -1814,7 +1814,7 @@
 
 Function89b28: ; 89b28 (22:5b28)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893e2
 	call Call_ExitMenu
 	call Function891ab
@@ -2147,12 +2147,12 @@
 
 Function89d0d: ; 89d0d (22:5d0d)
 	call Function8923c
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld c, $8
-	ld de, Unkn1Pals
+	ld de, wMapPals
 .asm_89d1c
 	push bc
 	ld hl, Palette_89d4e
@@ -2166,7 +2166,7 @@
 	ld bc, $8
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	call SetPalettes
 	callba Function845db
 	call Function89240
@@ -2222,7 +2222,7 @@
 	push hl
 	call _hl_
 	call Function89dab
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	push af
 	call Function891ab
 	pop af
@@ -2253,7 +2253,7 @@
 	call PlayClickSFX
 	ld a, [wcfa3]
 	ld c, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp c
 	jr z, .asm_89dd9
 	call Function1bee
@@ -2273,7 +2273,7 @@
 .asm_89dea
 	call Function8a31c
 	jr z, .asm_89dfd
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld c, a
 	push bc
 	ld hl, Jumptable_89e04
@@ -2377,16 +2377,16 @@
 	jp Function89e36
 
 Function89e9a: ; 89e9a (22:5e9a)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_89eb1
 	ld de, wd028
 	ld bc, $8
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 ; 89eb1 (22:5eb1)
 
@@ -2414,7 +2414,7 @@
 	jp Function89e36
 
 Function89ee1: ; 89ee1 (22:5ee1)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893e2
 	call Function8923c
 	callba Function4a3a7
@@ -2602,7 +2602,7 @@
 
 Function89ff6: ; 89ff6 (22:5ff6)
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -2782,7 +2782,7 @@
 	call Function8923c
 	call Function8a17b
 	jr c, .asm_8a16b
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd030], a
 	dec d
 	jr z, .asm_8a140
@@ -2865,7 +2865,7 @@
 	ld c, $12
 	call TextBox
 	hlcoord 1, 14
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld de, Strings_8a1cc
 	dec a
 	ld c, a
@@ -2927,7 +2927,7 @@
 ; 0x8a241
 
 Function8a241: ; 8a241 (22:6241)
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function891fe
 	call Function8a262
 	jr nc, .asm_8a254
@@ -2937,7 +2937,7 @@
 	ret
 .asm_8a254
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function891de
 	and a
@@ -2944,7 +2944,7 @@
 	ret
 
 Function8a262: ; 8a262 (22:6262)
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893e2
 	call Function8923c
 	callba Function4a3a7
@@ -3104,9 +3104,9 @@
 	ret
 
 Function8a3a2: ; 8a3a2 (22:63a2)
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld e, a
 	ld d, $0
 	add hl, de
@@ -3141,7 +3141,7 @@
 	ld hl, $a603
 	call Function89b45
 	call CloseSRAM
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	jr c, .asm_8a3f8
 	ld de, Unknown_8a408
 	call Function8a400
@@ -3383,10 +3383,10 @@
 	ret
 
 Function8a5b6: ; 8a5b6 (22:65b6)
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ld hl, Palette_8a5e5
 	ld de, wd020
 	ld bc, $18
@@ -3400,7 +3400,7 @@
 	ld bc, $8
 	call CopyBytes
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 ; 8a5e5 (22:65e5)
 
@@ -3455,7 +3455,7 @@
 ; 8a62c
 
 Function8a62c: ; 8a62c (22:662c)
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	call Function891fe
 	xor a
 	call Function8b94a
@@ -3501,7 +3501,7 @@
 
 Function8a679: ; 8a679 (22:6679)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3546,7 +3546,7 @@
 
 Function8a6cd: ; 8a6cd (22:66cd)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3594,7 +3594,7 @@
 .asm_8a73f
 	call CloseSRAM
 .asm_8a742
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function89448
 	call Function891d3
 	call Function8b677
@@ -3620,7 +3620,7 @@
 	push bc
 	ld hl, $0
 	add hl, bc
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld c, $6
 	call Function89185
 	pop bc
@@ -3641,9 +3641,9 @@
 
 Function8a78c: ; 8a78c (22:678c)
 	call Function891fe
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld b, $5
-	callba Function116c1
+	callba NamingScreen
 	call OpenSRAMBank4
 	call Function8931b
 	push bc
@@ -3651,13 +3651,13 @@
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	call InitName
 	call CloseSRAM
 	call DelayFrame
 	call JoyTextDelay
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	pop bc
@@ -3687,7 +3687,7 @@
 	pop af
 	ld [MenuSelection], a
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3701,7 +3701,7 @@
 
 Function8a818: ; 8a818 (22:6818)
 	call Function89a23
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	call Function89331
 	jr c, .asm_8a875
 	ld hl, wd008
@@ -3716,7 +3716,7 @@
 	add hl, bc
 	ld d, h
 	ld e, l
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld c, $6
 	call Function89193
 	pop bc
@@ -3781,7 +3781,7 @@
 
 Function8a8c3: ; 8a8c3 (22:68c3)
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -3851,7 +3851,7 @@
 	push bc
 	ld h, b
 	ld l, c
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld bc, $25
 	call CopyBytes
 	pop de
@@ -3865,7 +3865,7 @@
 	ld bc, $25
 	call CopyBytes
 	pop de
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld bc, $25
 	call CopyBytes
 	ld de, SFX_SWITCH_POKEMON
@@ -3885,7 +3885,7 @@
 	jr c, .asm_8a9bb
 	push bc
 	push de
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	pop de
 	dec e
 	ld a, e
@@ -3969,7 +3969,7 @@
 	call Function89381
 	call CloseSRAM
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -4027,7 +4027,7 @@
 	call Function89193
 .asm_8aa9d
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -4101,7 +4101,7 @@
 
 Function8ab3b: ; 8ab3b (22:6b3b)
 	call Function891fe
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call Function89807
 	call Function89492
@@ -4140,8 +4140,8 @@
 	ret
 
 Function8ab93: ; 8ab93 (22:6b93)
-	call WhiteBGMap
-	call LoadMenuDataHeader_0x1d75
+	call ClearBGPalettes
+	call LoadStandardMenuDataHeader
 	callba Function105688
 	call ClearSprites
 	call Function891fe
@@ -4183,7 +4183,7 @@
 	call PlayClickSFX
 .asm_8abe5
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
@@ -4228,7 +4228,7 @@
 	ld [MenuSelection], a
 	push de
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	pop bc
 	call Function89844
@@ -4307,7 +4307,7 @@
 
 .asm_8ace4
 	call CloseSRAM
-	call Functione51
+	call LoadStandardFont
 	ld a, [wd02f]
 	ld c, a
 	and a
@@ -4319,7 +4319,7 @@
 	ld a, $2
 	call Function89259
 	jp c, Function8ac7c
-	call Functione51
+	call LoadStandardFont
 	pop de
 	ld c, $0
 	scf
@@ -4337,7 +4337,7 @@
 	ld a, [MenuSelection]
 	ld [wd02f], a
 	call Function891de
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Function893cc
 	call OpenSRAMBank4
 	call Function8931b
--- a/misc/mobile_22_2.asm
+++ b/misc/mobile_22_2.asm
@@ -252,7 +252,7 @@
 	call Function8b4fd
 	call Function89c44
 	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
+	ld [hBGMapMode], a
 	pop bc
 	call Function8b3dd
 	jr nc, .asm_8b46e
@@ -574,7 +574,7 @@
 	ret
 
 Function8b677: ; 8b677
-	call WhiteBGMap
+	call ClearBGPalettes
 	call DisableLCD
 	call Function8b690
 	call Function8b6bb
@@ -610,7 +610,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_8b6d5
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0018
 	call CopyBytes
 	pop af
@@ -809,9 +809,9 @@
 	ld a, [wd032]
 	and a
 	jr z, .asm_8b7e0
-	ld a, [wcf81]
+	ld a, [wMenuFlags]
 	set 3, a
-	ld [wcf81], a
+	ld [wMenuFlags], a
 
 .asm_8b7e0
 	ld a, [wd0e3]
@@ -828,7 +828,7 @@
 	call Function8b75d
 	call UpdateSprites
 	call Function89209
-	call Function350c
+	call HandleScrollingMenu
 	call Function8920f
 	ld a, [wcf73]
 	cp $2
@@ -854,7 +854,7 @@
 
 .asm_8b824
 	ld c, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wd030], a
 	ld a, [wd0e4]
 	ld [wd031], a
@@ -863,7 +863,7 @@
 
 Function8b832: ; 8b832
 	ld a, [wd0e4]
-	ld hl, wcf92
+	ld hl, wMenuData2Items
 	sub [hl]
 	jr nc, Function8b84b
 	xor a
@@ -872,7 +872,7 @@
 
 Function8b83e: ; 8b83e
 	ld a, [wd0e4]
-	ld hl, wcf92
+	ld hl, wMenuData2Items
 	add [hl]
 	cp $24
 	jr c, Function8b84b
@@ -880,7 +880,7 @@
 
 Function8b84b: ; 8b84b
 	ld [wd0e4], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wMenuCursorBuffer], a
 	ret
 ; 8b855
@@ -887,7 +887,7 @@
 
 Function8b855: ; 8b855
 	ld a, $28
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld [hli], a
 	ld c, $28
 	xor a
@@ -916,9 +916,9 @@
 	db 5 ; items
 	db 3, 1
 	dbw 0, wd002
-	dbw BANK(Function8b880), Function8b880
-	dbw BANK(Function8b88c), Function8b88c
-	dbw BANK(Function8b8c8), Function8b8c8
+	dba Function8b880
+	dba Function8b88c
+	dba Function8b8c8
 ; 8b880
 
 Function8b880: ; 8b880
@@ -1061,7 +1061,7 @@
 	ret
 
 Function8b99f: ; 8b99f (22:799f)
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	dec a
 	ld c, a
 	ld b, $0
@@ -1135,7 +1135,7 @@
 	scf
 .asm_8ba0c
 	push af
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 .asm_8ba10
 	ld a, [de]
 	inc de
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -6,6 +6,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
+
 	call Function100022
 	call Function1000ba
 	call Function100675
@@ -12,9 +13,11 @@
 	call Function100057
 	call Function10016f
 	call Function100276
+
 	push bc
 	call Function100301
 	pop bc
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -45,7 +48,7 @@
 
 Function100057: ; 100057
 	call Function1000a4
-	call Function222a
+	call ReturnToMapFromSubmenu
 	ld hl, VramState
 	res 1, [hl]
 	ret
@@ -63,7 +66,7 @@
 	ld a, [rIE]
 	ld [BGMapBuffer], a
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld [hLCDStatCustom], a
 	ret
 ; 100082
@@ -71,7 +74,7 @@
 Function100082: ; 100082
 	xor a
 	ld hl, OverworldMap
-	ld bc, 1300
+	ld bc, OverworldMapEnd - OverworldMap
 	call ByteFill
 	di
 	call DoubleSpeed
@@ -80,10 +83,10 @@
 	ld a, 1 << VBLANK + 1 << LCD_STAT + 1 << TIMER + 1 << SERIAL
 	ld [rIE], a
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld [hLCDStatCustom], a
 	ld a, $1
-	ld [$ffc9], a
+	ld [hFFC9], a
 	ld [hMobile], a
 	ei
 	ret
@@ -92,7 +95,7 @@
 Function1000a4: ; 1000a4
 	di
 	xor a
-	ld [$ffc9], a
+	ld [hFFC9], a
 	ld [hMobile], a
 	xor a
 	ld [hVBlank], a
@@ -165,7 +168,7 @@
 	and $13
 	ld [rIE], a
 	xor a
-	ld [$ffc9], a
+	ld [hFFC9], a
 	ld [hMobile], a
 	ei
 	ld a, [wLinkMode]
@@ -173,7 +176,7 @@
 	xor a
 	ld [wLinkMode], a
 	ld a, $4
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	callba Function11619d
 	ld hl, wcd29
 	set 6, [hl]
@@ -242,7 +245,7 @@
 	jr z, .asm_1001af
 	cp $f8
 	ret z
-	ret
+	ret   ; ????????????????????????????
 
 .asm_1001af
 	ld a, $d7
@@ -309,15 +312,18 @@
 Function10020b: ; 10020b
 	xor a
 	ld [wc303], a
-	callba FadeBlackBGMap
+	callba FadeOutPalettes
 	callba Function106464
 	call HideSprites
 	call DelayFrame
+
 	ld a, [rSVBK]
 	push af
 	ld a, $1
 	ld [rSVBK], a
+
 	callba Function17f555
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -400,18 +406,18 @@
 	ld hl, wcd2a
 	bit 0, [hl]
 	ret z
-	callba Function3f6d0
+	callba CleanUpBattleRAM
 	callba LoadPokemonData
 	ret
 ; 1002dc
 
 Function1002dc: ; 1002dc
-	ld a, $f8
+	ld a, MAPSETUP_LINKRETURN
 	ld [hMapEntryMethod], a
 	callba RunMapSetupScript
 	xor a
 	ld [hMapEntryMethod], a
-	call Functione51
+	call LoadStandardFont
 	ret
 ; 1002ed
 
@@ -537,7 +543,7 @@
 
 Function10039c: ; 10039c
 	ld hl, wcc60
-	ld de, wd000
+	ld de, w3_d000
 	ld bc, $0054
 	ld a, $3
 	call FarCopyWRAM
@@ -545,7 +551,7 @@
 ; 1003ab
 
 Function1003ab: ; 1003ab
-	ld hl, wd000
+	ld hl, w3_d000
 	ld de, wcc60
 	ld bc, $0054
 	ld a, $3
@@ -555,7 +561,7 @@
 
 Function1003ba: ; 1003ba
 	ld hl, wccb4
-	ld de, $d080
+	ld de, w3_d080
 	ld bc, $0054
 	ld a, $3
 	call FarCopyWRAM
@@ -563,7 +569,7 @@
 ; 1003c9
 
 Function1003c9: ; 1003c9
-	ld hl, $d080
+	ld hl, w3_d080
 	ld de, wccb4
 	ld bc, $0054
 	ld a, $3
@@ -901,7 +907,7 @@
 	ret z
 	jr nc, .asm_1005a6
 	xor a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 
 .asm_1005a6
 	call ExitMenu
@@ -953,7 +959,7 @@
 	ret z
 	jr nc, .asm_1005f0
 	xor a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 .asm_1005f0
 	call ExitMenu
 	ld a, [wcd26]
@@ -1501,7 +1507,7 @@
 	ld de, SFX_4_NOTE_DITTY
 	call PlaySFX
 	callba Function104061
-	ld c, $78
+	ld c, 120
 	call DelayFrames
 	ret
 ; 10095a
@@ -1515,10 +1521,10 @@
 
 Function100970: ; 100970
 	hlcoord 0, 0
-	ld de, wdc00
+	ld de, w3_dc00
 	call Function1009a5
 	hlcoord 0, 0, AttrMap
-	ld de, $dd68
+	ld de, w3_dd68
 	call Function1009a5
 	call Function1009d2
 	call Function1009ae
@@ -1526,12 +1532,12 @@
 ; 100989
 
 Function100989: ; 100989
-	ld hl, wdc00
+	ld hl, w3_dc00
 	decoord 0, 0
 	call Function1009a5
 	call Function1009ae
 	callba Function104061
-	ld hl, $dd68
+	ld hl, w3_dd68
 	decoord 0, 0, AttrMap
 	call Function1009a5
 	ret
@@ -1549,23 +1555,25 @@
 	push af
 	ld a, $3
 	ld [rSVBK], a
-	ld hl, $d800
+
+	ld hl, w3_d800
 	decoord 0, 0, AttrMap
-	ld c, $14
-	ld b, $12
-.asm_1009bf
+	ld c, SCREEN_WIDTH
+	ld b, SCREEN_HEIGHT
+.loop_row
 	push bc
-.asm_1009c0
+.loop_col
 	ld a, [hli]
 	ld [de], a
 	inc de
 	dec c
-	jr nz, .asm_1009c0
-	ld bc, $000c
+	jr nz, .loop_col
+	ld bc, 12
 	add hl, bc
 	pop bc
 	dec b
-	jr nz, .asm_1009bf
+	jr nz, .loop_row
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -1576,16 +1584,20 @@
 	push af
 	ld a, $3
 	ld [rSVBK], a
+
 	ld a, [rVBK]
 	push af
 	ld a, $1
 	ld [rVBK], a
-	ld hl, $d800
+
+	ld hl, w3_d800
 	ld de, VBGMap0
 	lb bc, $3, $24
 	call Get2bpp
+
 	pop af
 	ld [rVBK], a
+
 	pop af
 	ld [rSVBK], a
 	ret
@@ -1613,12 +1625,12 @@
 	ld [wd431], a
 	callba Function4000
 	ld a, [wLinkMode]
-	cp $4
+	cp LINK_MOBILE
 	jr nz, .asm_100a2a
 
 	call Function100a87
 	call Function100da5
-	callba Function3ee27
+	callba FinishBattleAnim
 	jr .asm_100a2d
 
 .asm_100a2a
@@ -1825,7 +1837,7 @@
 ; 100b7a
 
 Function100b7a: ; 100b7a
-	ld hl, Function1c66
+	ld hl, CopyMenuData2
 	ld a, [wcf94]
 	rst FarCall
 	callba Function24085
@@ -1882,16 +1894,16 @@
 	jr .asm_100bd1
 
 .asm_100bff
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	and a
 	jp nz, .asm_100bcb
 	ld a, [wd0eb]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jp .asm_100bcb
 
 .asm_100c10
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 	ld a, [wd0eb]
 rept 2
@@ -1900,11 +1912,11 @@
 	cp b
 	jp nz, .asm_100bcb
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	jp .asm_100bcb
 
 .asm_100c25
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurMoveNum], a
 	ld a, $1
@@ -1912,10 +1924,10 @@
 	ret
 
 .asm_100c30
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurMoveNum], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld c, a
 	ld b, 0
@@ -1930,7 +1942,7 @@
 	dec a
 	cp c
 	jr z, .asm_100c63
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld c, a
 	ld b, 0
@@ -1978,7 +1990,7 @@
 	ld [wcfa3], a
 	ld a, [CurMoveNum]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ret
 ; 100cad
 
@@ -2007,7 +2019,7 @@
 	ld a, [PartyCount]
 	inc a
 	ld b, a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp b
 	jr z, .asm_100d17
 	ld [wd0d8], a
@@ -2015,7 +2027,7 @@
 	ld b, a
 	bit 1, b
 	jr nz, .asm_100d17
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurPartyMon], a
 	ld c, a
@@ -2084,11 +2096,11 @@
 	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
-	call Function1cbb
+	call MenuBox
 	call UpdateSprites
 	call Function1c89
 	call WaitBGMap
-	call Function1c66
+	call CopyMenuData2
 	call Function1c10
 	ld hl, wcfa5
 	set 6, [hl]
@@ -2357,38 +2369,45 @@
 asm_100f02:
 	ld a, c
 	ld [StringBuffer2], a
+	; someting that was previously stored in de gets backed up to here
 	ld a, e
 	ld [StringBuffer2 + 1], a
 	ld a, d
 	ld [StringBuffer2 + 2], a
+	; empty this
 	xor a
 	ld [StringBuffer2 + 4], a
 	ld [StringBuffer2 + 5], a
-.asm_100f15
+.loop
 	ld a, [hl]
 	cp $ff
-	jr z, .asm_100f34
-	ld [StringBuffer2 + 3], a
+	jr z, .done
+	ld [StringBuffer2 + 3], a ; bank
 	push hl
 	inc hl
+	; addr 1
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
+	; size
 	ld a, [hli]
 	ld c, a
 	ld a, [hli]
 	ld b, a
+	; addr 2
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
 	call Function100f3d
+	; next line
 	pop hl
 	ld de, $0007
 	add hl, de
-	jr .asm_100f15
+	jr .loop
 
-.asm_100f34
+.done
+	; recover the values into bc
 	ld a, [StringBuffer2 + 4]
 	ld c, a
 	ld a, [StringBuffer2 + 5]
@@ -2397,16 +2416,20 @@
 ; 100f3d
 
 Function100f3d: ; 100f3d
+	; parameter
 	ld a, [StringBuffer2]
 	cp $2
-	jr z, .asm_100f61
+	jr z, .two
 	cp $1
-	jr z, .asm_100f77
+	jr z, .one
 	cp $3
-	jr z, .asm_100f4d
+	jr z, .three
 	ret
 
-.asm_100f4d
+.three
+	; what was once in de gets copied to hl,
+	; modified by Function100f8d, and put back
+	; into this backup
 	ld a, [StringBuffer2 + 1]
 	ld l, a
 	ld a, [StringBuffer2 + 2]
@@ -2418,7 +2441,9 @@
 	ld [StringBuffer2 + 2], a
 	ret
 
-.asm_100f61
+.two
+	; hl gets backed up to de, then
+	; do the same as in .three
 	ld d, h
 	ld e, l
 	ld a, [StringBuffer2 + 1]
@@ -2432,7 +2457,11 @@
 	ld [StringBuffer2 + 2], a
 	ret
 
-.asm_100f77
+.one
+	; de gets copied to hl, then
+	; load the backup into de,
+	; finally run Function100f8d
+	; and store the de result
 	ld h, d
 	ld l, e
 	ld a, [StringBuffer2 + 1]
@@ -2462,18 +2491,18 @@
 	ld a, [StringBuffer2 + 3]
 	bit 7, a
 	res 7, a
-	jr z, .asm_100fb6
+	jr z, .sram
 	and a
-	jr nz, .asm_100fb0
+	jr nz, .wram
 	call CopyBytes
 	ret
 
-.asm_100fb0
+.wram
 	and $7f
 	call FarCopyWRAM
 	ret
 
-.asm_100fb6
+.sram
 	call GetSRAMBank
 	call CopyBytes
 	call CloseSRAM
@@ -2481,16 +2510,20 @@
 ; 100fc0
 
 Unknown_100fc0: ; 100fc0
-	dbwww $80, PlayerName, NAME_LENGTH, wd26b
+	; first byte:
+	;     Bit 7 set: Not SRAM
+	;     Lower 7 bits: Bank
+	; Address, size (dw), address
+	dbwww $80, PlayerName, NAME_LENGTH, OTPlayerName
 	dbwww $80, PartyCount, 1 + PARTY_LENGTH + 1, OTPartyCount
-	dbwww $80, PlayerID, 2, wd276
-	dbwww $80, PartyMons, $30 * PARTY_LENGTH, OTPartyMons
+	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
 	db -1
 
 Unknown_100feb: ; 100feb
-	dbwww $00, $a600, $2f * PARTY_LENGTH, NULL
+	dbwww $00, sPartyScratch1, SCRATCHMON_STRUCT_LENGTH * PARTY_LENGTH, NULL
 	db -1
 
 Unknown_100ff3: ; 100ff3
@@ -2501,15 +2534,15 @@
 	dbwww $80, wSecretID, 2, NULL
 	dbwww $80, PlayerGender, 1, NULL
 	dbwww $04, $a603, 8, NULL
-	dbwww $04, $a007, $30, NULL
+	dbwww $04, $a007, PARTYMON_STRUCT_LENGTH, NULL
 	db -1
 
 Unknown_10102c: ; 10102c
-	dbwww $80, wd26b, 11, NULL
-	dbwww $80, wd276, 2, NULL
+	dbwww $80, OTPlayerName, 11, NULL
+	dbwww $80, OTPlayerID, 2, NULL
 	dbwww $80, OTPartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, NULL
 	dbwww $80, OTPartyMonOT, NAME_LENGTH * PARTY_LENGTH, NULL
-	dbwww $80, OTPartyMons, $30 * PARTY_LENGTH, NULL
+	dbwww $80, OTPartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, NULL
 	db -1
 ; 10104f
 
@@ -2517,7 +2550,7 @@
 	call Function10107d
 	ld a, [OTPartyCount]
 rept 2
-	ld hl, $c608
+	ld hl, wc608
 endr
 	ld bc, $01b3
 	call Function1010de
@@ -2527,7 +2560,7 @@
 	ld [hl], d
 	ld a, $7
 	call GetSRAMBank
-	ld hl, $c608
+	ld hl, wc608
 	ld de, $a001
 	ld bc, $01b5
 	call CopyBytes
@@ -2537,28 +2570,28 @@
 
 Function10107d: ; 10107d
 	xor a
-	ld hl, $c608
+	ld hl, wc608
 	ld bc, $01b5
 	call ByteFill
 	ld hl, wd26b
-	ld de, $c608
+	ld de, wc608
 	ld bc, $000b
 	call CopyBytes
 	ld hl, wd271
 	ld a, [hli]
-	ld [$c608 + 11], a
+	ld [wc608 + 11], a
 	ld a, [hl]
-	ld [$c608 + 12], a
+	ld [wc608 + 12], a
 	ld hl, OTPartyMonNicknames
-	ld de, $c608 + 13
+	ld de, wc608 + 13
 	ld bc, $000b
 	call Function1010cd
 	ld hl, OTPartyMonOT
-	ld de, $c656 + 1
+	ld de, wc656 + 1
 	ld bc, $000b
 	call Function1010cd
 	ld hl, OTPartyMon1Species
-	ld de, $c68a + 15
+	ld de, wc68a + 15
 	ld bc, $0030
 	call Function1010cd
 	ld a, $50
@@ -2686,9 +2719,9 @@
 	ld bc, $000b
 
 asm_101184:
-	ld a, $c608 % $100
+	ld a, wc608 % $100
 	ld [StringBuffer2], a
-	ld a, $c608 / $100
+	ld a, wc608 / $100
 	ld [StringBuffer2 + 1], a
 	ld a, c
 	ld [StringBuffer2 + 2], a
@@ -2730,7 +2763,7 @@
 	call Function1011df
 	ld d, h
 	ld e, l
-	ld hl, $c608
+	ld hl, wc608
 	call CopyBytes
 	ret
 ; 1011df
@@ -3015,7 +3048,7 @@
 ; 1013aa
 
 Function1013aa: ; 1013aa
-	call WhiteBGMap
+	call ClearBGPalettes
 	call Call_ExitMenu
 	call Function2bae
 	callba Function106464
@@ -3347,11 +3380,11 @@
 ; 10159d
 
 Function10159d: ; 10159d
-	ld de, $c608
+	ld de, wc608
 	callba Function100edf
-	ld de, $c608
+	ld de, wc608
 	ld a, $5
-	ld hl, $d800
+	ld hl, w5_d800
 	call Function10174c
 	ld a, $0
 	ld [wcd26], a
@@ -3362,11 +3395,11 @@
 ; 1015be
 
 Function1015be: ; 1015be
-	ld de, $c608
+	ld de, wc608
 	callba Function100eed
-	ld de, $c608
+	ld de, wc608
 	ld a, $5
-	ld hl, $d800
+	ld hl, w5_d800
 	call Function10174c
 	ld a, $0
 	ld [wcd26], a
@@ -3377,11 +3410,11 @@
 ; 1015df
 
 Function1015df: ; 1015df
-	ld de, $c608
+	ld de, wc608
 	callba Function100ef4
-	ld de, $c608
+	ld de, wc608
 	ld a, $5
-	ld hl, $d800
+	ld hl, w5_d800
 	call Function10174c
 	ld a, $0
 	ld [wcd26], a
@@ -3392,12 +3425,12 @@
 ; 101600
 
 Function101600: ; 101600
-	ld hl, $d800
-	ld de, $c608
+	ld hl, w5_d800
+	ld de, wc608
 	ld bc, $01e0
 	ld a, $5
 	call FarCopyWRAM
-	ld de, $c608
+	ld de, wc608
 	callba Function100ee6
 	ld a, [wcd25]
 	inc a
@@ -3422,7 +3455,7 @@
 ; 101635
 
 Function101635: ; 101635
-	ld de, $c608
+	ld de, wc608
 	ld bc, $01e0
 	call FarCopyWRAM
 	ret
@@ -3429,7 +3462,7 @@
 ; 10163f
 
 Function10163f: ; 10163f
-	ld hl, $c608
+	ld hl, wc608
 	ld bc, $01e0
 	call FarCopyWRAM
 	ret
@@ -3437,10 +3470,10 @@
 
 Function101649: ; 101649
 	ld a, $5
-	ld hl, $d800
+	ld hl, w5_d800
 	call Function101635
 	ld a, $5
-	ld de, wda00
+	ld de, w5_da00
 	call Function10163f
 	ret
 ; 10165a
@@ -3447,7 +3480,7 @@
 
 Function10165a: ; 10165a
 	ld a, $5
-	ld hl, wda00
+	ld hl, w5_da00
 	call Function101635
 	ret
 ; 101663
@@ -3454,10 +3487,10 @@
 
 Function101663: ; 101663
 	ld a, $5
-	ld hl, $d800
+	ld hl, w5_d800
 	call Function101635
 	ld a, $5
-	ld de, wdc00
+	ld de, w5_dc00
 	call Function10163f
 	ret
 ; 101674
@@ -3464,7 +3497,7 @@
 
 Function101674: ; 101674 ; unreferenced
 	ld a, $5
-	ld hl, wdc00
+	ld hl, w5_dc00
 	call Function101635
 	ret
 ; 10167d
@@ -3987,16 +4020,19 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld bc, wdc0d
-	ld de, wdc11
+
+	ld bc, w5_dc0d
+	ld de, w5_dc11
 	callba Function4e929
+
 	pop af
 	ld [rSVBK], a
+
 	ld a, c
 	ld [OtherTrainerClass], a
 	ld hl, wd26b
-	ld de, $c656
-	ld bc, $000b
+	ld de, wc656
+	ld bc, NAME_LENGTH
 	call CopyBytes
 	ld a, [wcd2f]
 	and a
@@ -4005,7 +4041,7 @@
 	ld a, $1
 
 .asm_101a1e
-	ld [$ffcb], a
+	ld [hLinkPlayerNumber], a
 	ret
 ; 101a21
 
@@ -4018,13 +4054,13 @@
 	ld [hl], a
 	ld a, $1
 	ld [wc2d7], a
-	callba Function3f4dd
-	callba Function3c000
-	callba Function3f759
+	callba BattleIntro
+	callba SendOutFirstMons
+	callba ShowLinkBattleParticipantsAfterEnd
 	xor a
 	ld [wc2d7], a
 	ld a, $ff
-	ld [$ffcb], a
+	ld [hLinkPlayerNumber], a
 	pop af
 	ld [Options], a
 	ret
@@ -4036,7 +4072,7 @@
 	callba Function3f77c
 	xor a
 	ld [wc2d7], a
-	callba Function3f6d0
+	callba CleanUpBattleRAM
 	callba LoadPokemonData
 	call Function1013c0
 	ld a, [wcd25]
@@ -4141,7 +4177,7 @@
 	call Function1013dd
 	ld a, $0
 	ld [wcd26], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, .asm_101b51
 	ld a, $2
@@ -4194,7 +4230,7 @@
 	call Function1013dd
 	ld a, $0
 	ld [wcd26], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, .asm_101bbc
 	ld a, $1
@@ -4238,7 +4274,7 @@
 	call Function1013dd
 	ld a, $0
 	ld [wcd26], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr nz, .asm_101c0b
 	ld a, $2a
@@ -4357,7 +4393,7 @@
 
 Function101cc8: ; 101cc8
 	ld a, $1
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	ld a, $1
 	ld [wc30d], a
 	ld hl, wcd29
@@ -4370,7 +4406,7 @@
 
 Function101cdf: ; 101cdf
 	ld a, $6
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	ld a, $1
 	ld [wc30d], a
 	ld hl, wcd29
@@ -4383,7 +4419,7 @@
 
 Function101cf6: ; 101cf6
 	ld a, $b
-	ld [wPartyMonMenuIconAnims + 1], a
+	ld [wc314 + 1], a
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
@@ -4392,7 +4428,7 @@
 
 Function101d03: ; 101d03
 	ld a, $e
-	ld [wPartyMonMenuIconAnims + 1], a
+	ld [wc314 + 1], a
 	ld a, [wcd25]
 	inc a
 	ld [wcd25], a
@@ -4483,7 +4519,7 @@
 
 Function101d95: ; 101d95
 	call Function101ee2
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	ld e, $e
 	call Function101ee4
 	ld hl, wcd29
@@ -4919,10 +4955,10 @@
 	bit 2, [hl]
 	jr nz, .asm_102110
 	call Function10218d
-	ld hl, $c608
+	ld hl, wc608
 	bit 4, [hl]
 	jr z, .asm_102110
-	ld hl, $c608
+	ld hl, wc608
 	bit 2, [hl]
 	jr nz, .asm_102110
 	call Function102112
@@ -4942,7 +4978,7 @@
 	ld c, $28
 .asm_10211c
 	push hl
-	ld de, $c60f
+	ld de, wc60f
 	ld b, $1f
 .asm_102122
 	ld a, [de]
@@ -5001,7 +5037,7 @@
 ; 102180
 
 Function102180: ; 102180
-	ld hl, $c608 + 1
+	ld hl, wc608 + 1
 	ld de, StringBuffer2
 	ld bc, $000b
 	call CopyBytes
@@ -5010,11 +5046,11 @@
 
 Function10218d: ; 10218d
 	ld hl, wdc00
-	ld de, $c608
+	ld de, wc608
 	ld bc, $0026
 	ld a, $5
 	call FarCopyWRAM
-	ld de, $c608 + 1
+	ld de, wc608 + 1
 	ret
 ; 10219f
 
@@ -5021,7 +5057,7 @@
 Function10219f: ; 10219f
 	call FadeToMenu
 	call Function10218d
-	ld de, $c608 + 1
+	ld de, wc608 + 1
 	callba Function8ac4e
 	call JoyWaitAorB
 	call PlayClickSFX
@@ -5032,7 +5068,7 @@
 Function1021b8: ; 1021b8
 	call FadeToMenu
 	call Function10218d
-	ld de, $c60f
+	ld de, wc60f
 	callba Function8ac70
 	ld a, c
 	ld [StringBuffer1], a
@@ -5330,7 +5366,7 @@
 	call Function102d9a
 	call Function102dd3
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 
 Function1023a1: ; 1023a1
 	call Function102283
@@ -5403,7 +5439,7 @@
 	ret nc
 	callba Function14a58
 	callba MobileFn_1060af
-	callba Function106187
+	callba BackupMobileEventIndex
 	ld hl, wcd4b
 	set 1, [hl]
 	ld a, $0
@@ -5552,7 +5588,7 @@
 	ld [wd003], a
 	ld a, [wcd4c]
 	dec a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	call Function102b9c
 	call Function102bdc
 	jr c, .asm_10256d
@@ -5696,7 +5732,7 @@
 	ret
 
 .asm_10262e
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 	ld a, [OTPartyCount]
 	cp b
@@ -5703,13 +5739,13 @@
 	ret nz
 	call Function1bf7
 	ld a, [PartyCount]
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1d
 	ld [wcd49], a
 	ret
 
 .asm_102646
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	ret nz
 	ld a, $23
@@ -5758,7 +5794,7 @@
 	ret
 
 .asm_10269a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ret nz
 	call Function1bf7
@@ -5767,7 +5803,7 @@
 	ret
 
 .asm_1026a8
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld b, a
 	ld a, [PartyCount]
 	cp b
@@ -5827,7 +5863,7 @@
 	hlcoord 9, 17
 	ld [hl], $7f
 	ld a, $1
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1d
 	ld [wcd49], a
 	ret
@@ -5836,7 +5872,7 @@
 	hlcoord 9, 17
 	ld [hl], $7f
 	ld a, [OTPartyCount]
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, $1f
 	ld [wcd49], a
 	ret
@@ -5947,7 +5983,7 @@
 asm_1027d1:
 	ld hl, wcd4b
 	set 3, [hl]
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wcd4c], a
 	ld a, $7
 	ld [wcd49], a
@@ -5978,11 +6014,11 @@
 ; 102814
 
 Function102814: ; 102814
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [wcd52], a
 	ld a, [wcd4c]
 	dec a
-	ld [DefaultFlypoint], a
+	ld [wd002], a
 	ld a, [wcd4d]
 	dec a
 	ld [wd003], a
@@ -6030,7 +6066,7 @@
 	call Function1028fc
 	ret nc
 	ld a, [wcd52]
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, [wcd51]
 	cp $8
 	jr nz, .asm_102886
@@ -6062,7 +6098,7 @@
 
 Function1028ab: ; 1028ab
 	ld a, [wcd52]
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	call Function102f15
 	ld hl, wcd4b
 	set 1, [hl]
@@ -6256,7 +6292,7 @@
 ; 1029cf
 
 Function1029cf: ; 1029cf
-	call LoadMenuDataHeader_0x1d75
+	call LoadStandardMenuDataHeader
 	hlcoord 10, 7
 	ld b, $3
 	ld c, $8
@@ -6288,7 +6324,7 @@
 	push af
 	call ExitMenu
 	pop af
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr nz, .asm_102a21
 	ld a, $1
@@ -6315,7 +6351,7 @@
 	ld a, [wcd30]
 	ld [wc74e], a
 	ld hl, PlayerName
-	ld de, $c6e7
+	ld de, wc6e7
 	ld bc, $000b
 	call CopyBytes
 	ld a, [wcd4c]
@@ -6325,12 +6361,12 @@
 	ld hl, PartySpecies
 	add hl, bc
 	ld a, [hl]
-	ld [$c6d0], a
+	ld [wc6d0], a
 	ld a, [wcd4c]
 	dec a
 	ld hl, PartyMonOT
 	call SkipNames
-	ld de, $c6f2
+	ld de, wc6f2
 	ld bc, $000b
 	call CopyBytes
 	ld a, [wcd4c]
@@ -6338,7 +6374,7 @@
 	ld hl, PartyMon1ID
 	call GetPartyLocation
 	ld a, [hli]
-	ld [$c6ff], a
+	ld [wc6ff], a
 	ld a, [hl]
 	ld [wc700], a
 	ld a, [wcd4c]
@@ -6346,9 +6382,9 @@
 	ld hl, PartyMon1DVs
 	call GetPartyLocation
 	ld a, [hli]
-	ld [$c6fd], a
+	ld [wc6fd], a
 	ld a, [hl]
-	ld [$c6fe], a
+	ld [wc6fe], a
 	ld a, [wcd4c]
 	dec a
 	ld hl, PartyMon1Species
@@ -6382,17 +6418,17 @@
 	ld hl, OTPartyMon1ID
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [hl]
-	ld [wc732], a
+	ld [wPlayerCharging], a
 	ld a, [wcd4d]
 	dec a
 	ld hl, OTPartyMon1DVs
 	call GetPartyLocation
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld a, [wcd4d]
 	dec a
 	ld hl, OTPartyMon1Species
@@ -6401,7 +6437,7 @@
 	ld c, l
 	callba GetCaughtGender
 	ld a, c
-	ld [wc733], a
+	ld [wEnemyCharging], a
 	ret
 ; 102b12
 
@@ -6439,12 +6475,12 @@
 Function102b4e: ; 102b4e
 	ld a, $1
 	ld [MonType], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	push af
 	ld de, Unknown_102b73
 	call Function1bb1
 	pop af
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, [OTPartyCount]
 	ld [wcfa3], a
 	ret
@@ -6464,12 +6500,12 @@
 Function102b7b: ; 102b7b
 	xor a
 	ld [MonType], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	push af
 	ld de, Unknown_102b94
 	call Function1bb1
 	pop af
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	ld a, [PartyCount]
 	ld [wcfa3], a
 	ret
@@ -6489,7 +6525,7 @@
 ; 102bac
 
 Function102bac: ; 102bac
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	dec a
 	ld [CurPartyMon], a
 	call LowVolume
@@ -6497,7 +6533,7 @@
 	callba Function4dc8f
 	ld a, [CurPartyMon]
 	inc a
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 	call Function102d9a
 	call ClearPalettes
 	call DelayFrame
@@ -6527,7 +6563,7 @@
 	jr nz, .asm_102c05
 
 .asm_102bfa
-	ld bc, OTPartyMon1Level - OTPartyMon1
+	ld bc, MON_LEVEL
 	add hl, bc
 	ld a, [hl]
 	cp MAX_LEVEL + 1
@@ -6585,11 +6621,11 @@
 	ld a, $0
 	call GetSRAMBank
 	ld hl, $a600
-	ld de, $c608
+	ld de, wc608
 	ld bc, $002f
 	call Function102c71
 	call CloseSRAM
-	ld hl, $c608
+	ld hl, wc608
 	ld de, wda00
 	ld bc, $01e0
 	ld a, $5
@@ -6623,12 +6659,12 @@
 	ld [wcf64], a
 	ld a, $0
 	ld hl, $a600
-	ld de, $c608
+	ld de, wc608
 	ld bc, $011a
 	call Function102d3e
 	call Function102cee
 	ld a, $0
-	ld hl, $c608
+	ld hl, wc608
 	ld de, $a600
 	ld bc, $011a
 	call Function102d3e
@@ -6638,12 +6674,12 @@
 	ld [wcf64], a
 	ld a, $5
 	ld hl, wda00
-	ld de, $c608
+	ld de, wc608
 	ld bc, $011a
 	call FarCopyWRAM
 	call Function102cee
 	ld a, $5
-	ld hl, $c608
+	ld hl, wc608
 	ld de, wda00
 	ld bc, $011a
 	call FarCopyWRAM
@@ -6658,7 +6694,7 @@
 	ld a, [wJumptableIndex]
 	dec a
 	call Function102d34
-	ld de, DefaultFlypoint
+	ld de, wd002
 	ld bc, $002f
 	call CopyBytes
 	ld a, [wJumptableIndex]
@@ -6684,7 +6720,7 @@
 	call Function102d34
 	ld d, h
 	ld e, l
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld bc, $002f
 	call CopyBytes
 	ret
@@ -6691,7 +6727,7 @@
 ; 102d34
 
 Function102d34: ; 102d34
-	ld hl, $c608
+	ld hl, wc608
 	ld bc, $002f
 	call AddNTimes
 	ret
@@ -6718,7 +6754,7 @@
 	call SetSeenAndCaughtMon
 	ld a, [wcd4c]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1Happiness
 	call AddNTimes
 	ld [hl], BASE_HAPPINESS
@@ -6729,7 +6765,7 @@
 	jr nz, .asm_102d98
 	ld a, [wcd4c]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld hl, PartyMon1DVs
 	call AddNTimes
 	predef GetUnownLetter
@@ -7695,7 +7731,7 @@
 	call InterpretMenu2
 	call WriteBackup
 	jr c, .asm_10363b
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	ld [ScriptVar], a
 	ld c, a
 	ld a, [wdc40]
@@ -7783,7 +7819,7 @@
 	call InterpretMenu2
 	call ExitMenu
 	jr c, .asm_1036f4
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr z, .asm_1036d9
 	cp $2
@@ -8047,7 +8083,7 @@
 	callba Script_reloadmappart
 	callba Function4a94e
 	jr c, .asm_103870
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld de, wdc5c
 	ld bc, $0003
 	call CopyBytes
--- /dev/null
+++ b/misc/mobile_41.asm
@@ -1,0 +1,1094 @@
+SECTION "bank41_2", ROMX, BANK[$41]
+
+Mobile_HallOfFame2:: mobile ; 0x105ef6
+	ld a, $5
+	call GetSRAMBank
+	ld hl, GameTimeHours
+	ld de, $a001
+	ld bc, 4
+	call CopyBytes
+	ld hl, $a010
+	ld de, $a005
+	ld bc, 4
+	call CopyBytes
+	ld hl, $a039
+	ld de, $a009
+	ld bc, 4
+	call CopyBytes
+	ld hl, $a01b
+	ld de, $a00d
+	ld bc, 3
+	call CopyBytes
+	call Function106162
+	call CloseSRAM
+	ret
+; 105f33
+
+MagikarpLength_Mobile: mobile ; 105f33
+	ld a, $5
+	call GetSRAMBank
+	ld de, Buffer1
+	ld hl, $a07b
+	ld a, [de]
+	cp [hl]
+	jr z, .asm_105f47
+	jr nc, .asm_105f4f
+	jr .asm_105f55
+
+.asm_105f47
+	inc hl
+	inc de
+	ld a, [de]
+	cp [hl]
+	dec hl
+	dec de
+	jr c, .asm_105f55
+
+.asm_105f4f
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	dec de
+	ld [hl], a
+
+.asm_105f55
+	ld hl, $a07d
+	ld a, [hli]
+	or [hl]
+	dec hl
+	jr z, .asm_105f6d
+	ld a, [de]
+	cp [hl]
+	jr z, .asm_105f65
+	jr c, .asm_105f6d
+	jr .asm_105f72
+
+.asm_105f65
+	inc hl
+	inc de
+	ld a, [de]
+	cp [hl]
+	jr nc, .asm_105f72
+	dec hl
+	dec de
+
+.asm_105f6d
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, [de]
+	ld [hl], a
+
+.asm_105f72
+	call Function106162
+	call CloseSRAM
+	ret
+; 105f79
+
+MobileFn_105f79: mobile ; 105f79
+	ld a, $5
+	call GetSRAMBank
+	ld a, [hProduct]
+	ld hl, $a07f
+	cp [hl]
+	jr z, .asm_105f8b
+	jr nc, .asm_105f92
+	jr .asm_105f98
+
+.asm_105f8b
+	inc hl
+	ld a, [hMultiplicand]
+	cp [hl]
+	jr c, .asm_105f98
+	dec hl
+
+.asm_105f92
+	ld a, [hProduct]
+	ld [hli], a
+	ld a, [hMultiplicand]
+	ld [hl], a
+
+.asm_105f98
+	call Function106162
+	call CloseSRAM
+	ret
+; 105f9f
+
+MobileFn_105f9f: mobile ; 105f9f
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a070
+	inc [hl]
+	jr nz, .asm_105fae
+	dec hl
+	inc [hl]
+	inc hl
+
+.asm_105fae
+	dec hl
+	ld a, [$a071]
+	cp [hl]
+	jr z, .asm_105fb9
+	jr c, .asm_105fc1
+	jr .asm_105fc9
+
+.asm_105fb9
+	inc hl
+	ld a, [$a072]
+	cp [hl]
+	jr nc, .asm_105fc9
+	dec hl
+
+.asm_105fc1
+	ld a, [hli]
+	ld [$a071], a
+	ld a, [hl]
+	ld [$a072], a
+
+.asm_105fc9
+	call Function106162
+	call CloseSRAM
+	ret
+; 105fd0
+
+MobileFn_105fd0: mobile ; 105fd0
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a06f
+	xor a
+	ld [hli], a
+	ld [hl], a
+	call Function106162
+	call CloseSRAM
+	ret
+; 105fe3
+
+MobileFn_105fe3: mobile ; 105fe3
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a076
+	ld a, e
+	add [hl]
+	ld [hld], a
+	ld a, d
+	adc [hl]
+	ld [hld], a
+	jr nc, .asm_106001
+	inc [hl]
+	jr nz, .asm_106001
+	dec hl
+	inc [hl]
+	jr nz, .asm_106001
+	ld a, $ff
+rept 3
+	ld [hli], a
+endr
+	ld [hl], a
+
+.asm_106001
+	call Function106162
+	call CloseSRAM
+	ret
+; 106008
+
+MobileFn_106008: mobile ; 106008
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a07a
+	ld a, [bc]
+	dec bc
+	add [hl]
+	ld [hld], a
+	ld a, [bc]
+	dec bc
+	adc [hl]
+	ld [hld], a
+	ld a, [bc]
+	adc [hl]
+	ld [hld], a
+	jr nc, .asm_106027
+	inc [hl]
+	jr nz, .asm_106027
+	ld a, $ff
+rept 3
+	ld [hli], a
+endr
+	ld [hl], a
+
+.asm_106027
+	call Function106162
+	call CloseSRAM
+	ret
+; 10602e
+
+MobileFn_10602e: mobile ; 10602e (41:602e)
+	ld hl, $a010
+	jp MobileFn_106117
+
+MobileFn_106035: mobile ; 106035
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8d]
+	and a
+	call CloseSRAM
+	ret nz
+	ld hl, $a014
+	jp Function106123
+
+MobileFn_106049: mobile ; 106049
+	ld hl, $a018
+	jp Function10611d
+
+MobileFn_106050: mobile ; 106050
+	ld a, [BattleType]
+	cp BATTLETYPE_TUTORIAL
+	ret z
+	ld hl, $a01b
+	jp Function10611d
+
+MobileFn_10605d: mobile ; 10605d
+	ld a, [BattleType]
+	cp BATTLETYPE_TUTORIAL
+	ret z
+	ld hl, $a01e
+	jp Function10611d
+
+MobileFn_10606a: mobile ; 10606a
+	ld hl, $a021
+	jp Function10611d
+
+MobileFn_106071: mobile ; 106071
+	ld hl, $a024
+	jp Function10611d
+
+Mobile_HallOfFame:: mobile ; 0x106078
+	ld hl, $a027
+	jp Function10611d
+
+MobileFn_10607f: mobile ; 10607f (41:607f)
+	ld hl, $a02a
+	jp Function10611d
+
+MobileFn_106086: mobile ; 106086
+	ld hl, $a02d
+	jp Function10611d
+
+MobileFn_10608d: mobile ; 10608d (41:608d)
+	ld hl, $a030
+	jp Function10611d
+
+MobileFn_106094: mobile ; 106094
+	ld hl, $a033
+	jp Function10611d
+
+MobileFn_10609b: mobile ; 10609b
+	ld hl, $a036
+	jp Function10611d
+
+Mobile_HealParty: mobile ; 1060a2
+	ld hl, $a039
+	jp Function10611d
+
+MobileFn_1060a9: mobile ; 1060a9 (41:60a9)
+	ld hl, $a03c
+	jr Function10611d
+
+MobileFn_1060af: mobile ; 1060af
+	ld hl, $a03f
+	jr Function10611d
+
+MobileFn_1060b5: mobile ; 1060b5
+	ld hl, $a042
+	jr Function10611d
+
+MobileFn_1060bb: mobile ; 1060bb
+	ld hl, $a045
+	jr Function10611d
+
+MobileFn_1060c1: mobile ; 1060c1
+	ld hl, $a048
+	jr Function10611d
+
+MobileFn_1060c7: mobile ; 1060c7
+	ld hl, $a04b
+	jr Function10611d
+
+MobileFn_1060cd: mobile ; 1060cd
+	ld hl, $a04e
+	jr Function106123
+
+MobileFn_1060d3: mobile ; 1060d3
+	ld hl, $a051
+	jr Function10611d
+
+MobileFn_1060d9: mobile ; 1060df
+	ld hl, $a054
+	jr Function10611d
+
+MobileFn_1060df: mobile ; 1060df
+	ld hl, $a057
+	jr Function10611d
+
+MobileFn_1060e5: mobile ; 1060e5
+	ld a, [hBattleTurn]
+	and a
+	ret nz
+	ld hl, $a05a
+	jr Function10611d
+
+MobileFn_1060ef: mobile ; 1060ef
+	ld hl, $a05d
+	jr Function10611d
+
+MobileFn_1060f5: mobile ; 1060f5
+	ld hl, $a060
+	jr Function10611d
+
+MobileFn_SaveBattleResult_Win: mobile ; win
+	ld hl, $a063
+	jr Function10611d
+
+MobileFn_SaveBattleResult_Lose: mobile ; lose
+	ld hl, $a066
+	jr Function10611d
+; 106107
+
+MobileFn_SaveBattleResult_Draw: mobile ; draw
+	ld hl, $a069
+	jr Function10611d
+; 10610d
+
+MobileFn_10610d: mobile ; 10610d
+	ld a, [hBattleTurn]
+	and a
+	ret nz
+	ld hl, $a06c
+	jr Function10611d
+; 106117
+
+MobileFn_106117: ; 106117
+	push bc
+	ld bc, 3
+	jr Function10612d
+; 10611d
+
+Function10611d: ; 10611d
+	push bc
+	ld bc, 2
+	jr Function10612d
+; 106123
+
+Function106123: ; 106123
+	push bc
+	ld bc, 1
+	jr Function10612d
+; 106129
+
+Function106129: ; 106129
+	push bc
+	ld bc, 0
+
+Function10612d: ; 10612d
+	ld a, $5
+	call GetSRAMBank
+	push hl
+	push de
+	ld e, c
+	inc e
+.asm_106136
+	ld a, [hli]
+	inc a
+	jr nz, .asm_10613d
+	dec e
+	jr nz, .asm_106136
+
+.asm_10613d
+	pop de
+	pop hl
+	jr z, .asm_10614d
+	add hl, bc
+.asm_106142
+	inc [hl]
+	jr nz, .asm_10614d
+	ld a, c
+	and a
+	jr z, .asm_10614d
+	dec hl
+	dec c
+	jr .asm_106142
+
+.asm_10614d
+	call Function106162
+	call CloseSRAM
+	pop bc
+	ret
+; 106155
+
+MobileFn_106155: mobile ; 106155
+	ld a, $5
+	call GetSRAMBank
+	call Function106162
+	call CloseSRAM
+	ret
+; 106162
+
+Function106162: ; 106162
+	push de
+	call Function10616e
+	ld hl, $a081 ; s5_a081
+	ld [hl], d
+	inc hl
+	ld [hl], e
+	pop de
+	ret
+; 10616e
+
+Function10616e: ; 10616e
+	push bc
+	ld hl, $a001 ; s5_a001
+	ld bc, $80
+	xor a
+	ld de, 0
+.asm_106179
+	ld a, e
+	add [hl]
+	ld e, a
+	jr nc, .asm_10617f
+	inc d
+
+.asm_10617f
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_106179
+	pop bc
+	ret
+; 106187
+
+
+BackupMobileEventIndex: ; 106187
+	ld a, BANK(sMobileEventIndex)
+	call GetSRAMBank
+	ld a, [sMobileEventIndex]
+	push af
+	ld a, BANK(sMobileEventIndexBackup)
+	call GetSRAMBank
+	pop af
+	ld [sMobileEventIndexBackup], a
+	call CloseSRAM
+	ret
+; 10619d
+
+
+RestoreMobileEventIndex: ; 10619d (41:619d)
+	ld a, BANK(sMobileEventIndexBackup)
+	call GetSRAMBank
+	ld a, [sMobileEventIndexBackup]
+	push af
+	ld a, BANK(sMobileEventIndex)
+	call GetSRAMBank
+	pop af
+	ld [sMobileEventIndex], a
+	call CloseSRAM
+	ret
+; 1061b3 (41:61b3)
+
+Function1061b3: ; 1061b3
+	call Function10616e
+	ld hl, $a081 ; s5_a081
+	ld a, d
+	cp [hl]
+	ret nz
+	inc hl
+	ld a, e
+	cp [hl]
+	ret
+; 1061c0
+
+DeleteMobileEventIndex: ; 1061c0 (41:61c0)
+	ld a, BANK(sMobileEventIndex)
+	call GetSRAMBank
+	xor a
+	ld [sMobileEventIndex], a
+	call CloseSRAM
+	ret
+; 1061cd (41:61cd)
+
+Function1061cd: ; unreferenced
+	ld hl, $a001
+	ld bc, $82
+	xor a
+	call ByteFill
+	ld hl, $a07d
+	ld a, $3
+	ld [hli], a
+	ld [hl], $e8
+	call Function106162
+	ld hl, $a001
+	ld de, $a084
+	ld bc, $82
+	call CopyBytes
+	ret
+; 1061ef
+
+
+_MobilePrintNum:: ; 1061ef
+; Supports signed 31-bit integers (up to 10 digits)
+; b: Bits 0-4 = # bytes
+;    Bit 7 = set if negative
+; c: Number of digits
+; de: highest byte of number to convert
+; hl: where to print the converted string
+	push bc
+	xor a
+	ld [hPrintNum1], a
+	ld [hPrintNum2], a
+	ld [hPrintNum3], a
+	ld a, b
+	and $f
+	cp $1
+	jr z, .one_byte
+	cp $2
+	jr z, .two_bytes
+	cp $3
+	jr z, .three_bytes
+; four bytes
+	ld a, [de]
+	ld [hPrintNum1], a
+	inc de
+
+.three_bytes
+	ld a, [de]
+	ld [hPrintNum2], a
+	inc de
+
+.two_bytes
+	ld a, [de]
+	ld [hPrintNum3], a
+	inc de
+
+.one_byte
+	ld a, [de]
+	ld [hPrintNum4], a
+	inc de
+
+	push de
+	xor a
+	ld [hPrintNum9], a
+	ld a, b
+	ld [hPrintNum10], a
+	ld a, c
+	cp 2
+	jr z, .two_digits
+	ld de, ._2
+	cp 3
+	jr z, .three_to_nine_digits
+	ld de, ._3
+	cp 4
+	jr z, .three_to_nine_digits
+	ld de, ._4
+	cp 5
+	jr z, .three_to_nine_digits
+	ld de, ._5
+	cp 6
+	jr z, .three_to_nine_digits
+	ld de, ._6
+	cp 7
+	jr z, .three_to_nine_digits
+	ld de, ._7
+	cp 8
+	jr z, .three_to_nine_digits
+	ld de, ._8
+	cp 9
+	jr z, .three_to_nine_digits
+	ld de, ._9
+
+.three_to_nine_digits
+rept 3
+	inc de
+endr
+rept 2
+	dec a
+endr
+
+.digit_loop
+	push af
+	call .Function1062b2
+	call .Function1062ff
+rept 4
+	inc de
+endr
+	pop af
+	dec a
+	jr nz, .digit_loop
+
+.two_digits
+	ld c, 0
+	ld a, [hPrintNum4]
+.mod_ten_loop
+	cp 10
+	jr c, .simple_divide_done
+	sub 10
+	inc c
+	jr .mod_ten_loop
+
+.simple_divide_done
+	ld b, a
+	ld a, [hPrintNum9]
+	or c
+	ld [hPrintNum9], a
+	jr nz, .create_digit
+	call .LoadMinusTenIfNegative
+	jr .done
+
+.create_digit
+	ld a, "0"
+	add c
+	ld [hl], a
+
+.done
+	call .Function1062ff
+	ld a, "0"
+	add b
+	ld [hli], a
+	pop de
+	pop bc
+	ret
+; 106292
+
+._9	dd 1000000000
+._8	dd 100000000
+._7	dd 10000000
+._6	dd 1000000
+._5	dd 100000
+._4	dd 10000
+._3	dd 1000
+._2	dd 100
+; 1062b2
+
+.Function1062b2: ; 1062b2
+	ld c, $0
+.asm_1062b4
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [hPrintNum4]
+	sub b
+	ld [hPrintNum8], a
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [hPrintNum3]
+	sbc b
+	ld [hPrintNum7], a
+	ld a, [de]
+	dec de
+	ld b, a
+	ld a, [hPrintNum2]
+	sbc b
+	ld [hPrintNum6], a
+	ld a, [de]
+rept 3
+	inc de
+endr
+	ld b, a
+	ld a, [hPrintNum1]
+	sbc b
+	ld [hPrintNum5], a
+	jr c, .asm_1062eb
+	ld a, [hPrintNum5]
+	ld [hPrintNum1], a
+	ld a, [hPrintNum6]
+	ld [hPrintNum2], a
+	ld a, [hPrintNum7]
+	ld [hPrintNum3], a
+	ld a, [hPrintNum8]
+	ld [hPrintNum4], a
+	inc c
+	jr .asm_1062b4
+
+.asm_1062eb
+	ld a, [hPrintNum9]
+	or c
+	jr z, .LoadMinusTenIfNegative
+	ld a, -10
+	add c
+	ld [hl], a
+	ld [hPrintNum9], a
+	ret
+
+.LoadMinusTenIfNegative:
+	ld a, [hPrintNum10]
+	bit 7, a
+	ret z
+
+	ld [hl], -10
+	ret
+; 1062ff
+
+.Function1062ff: ; 1062ff
+	ld a, [hPrintNum10]
+	bit 7, a
+	jr nz, .asm_10630d
+	bit 6, a
+	jr z, .asm_10630d
+	ld a, [hPrintNum9]
+	and a
+	ret z
+
+.asm_10630d
+	inc hl
+	ret
+; 10630f
+
+Function10630f: ; 10630f
+	xor a
+	ld [ScriptVar], a
+	ret
+; 106314
+
+MobileFn_106314: mobile ; 106314
+	ld a, $4
+	call GetSRAMBank
+	ld a, c
+	cpl
+	ld [$b000], a
+	call CloseSRAM
+	ld a, $7
+	call GetSRAMBank
+	ld a, c
+	ld [$a800], a
+	call CloseSRAM
+	ret
+; 10632f
+
+Function10632f: ; 10632f
+	or a
+	mobile
+
+	ld a, $4
+	call GetSRAMBank
+	ld a, [$b000]
+	cpl
+	ld b, a
+	call CloseSRAM
+	ld a, $7
+	call GetSRAMBank
+	ld a, [$a800]
+	ld c, a
+	call CloseSRAM
+	ld a, c
+	cp b
+	jr nz, .asm_106359
+	and a
+	jr z, .asm_106359
+	and $8f
+	cp c
+	jr nz, .asm_106359
+	ld c, a
+	scf
+	ret
+
+.asm_106359
+	xor a
+	ld c, a
+	ret
+; 10635c
+
+Function10635c: ; 10635c
+	ld a, [wcd25]
+	bit 7, a
+	ret nz
+	ld a, [wcd25]
+	ld hl, Jumptable_10636a
+	rst JumpTable
+	ret
+; 10636a
+
+Jumptable_10636a: ; 10636a
+	dw Function10637c
+	dw Function106392
+	dw Function1063cc
+	dw Function1063d8
+	dw Function1063e5
+	dw Function1063f3
+	dw Function106403
+	dw Function106442
+	dw Function106453
+; 10637c
+
+Function10637c: ; 10637c
+	ld de, wcd30
+	ld hl, $41
+	ld bc, $41
+	ld a, $40
+	call Function3e32
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+; 106392
+
+Function106392: ; 106392
+	xor a
+	ld [wcf64], a
+	ld a, [wc821]
+	bit 1, a
+	jr nz, .asm_1063a2
+	bit 0, a
+	jr z, .asm_1063bf
+	ret
+
+.asm_1063a2
+	call Function10632f
+	ld a, c
+	and a
+	jr nz, .asm_1063b4
+	ld a, $b
+	ld [wcf64], a
+	ld a, $7
+	ld [wcd25], a
+	ret
+
+.asm_1063b4
+	ld a, $7
+	ld [wcf64], a
+	ld a, $7
+	ld [wcd25], a
+	ret
+
+.asm_1063bf
+	ld a, $1
+	ld [wcf64], a
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+; 1063cc
+
+Function1063cc: ; 1063cc
+	ld a, $78
+	ld [wcd42], a
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+
+Function1063d8: ; 1063d8
+	ld hl, wcd42
+	dec [hl]
+	ret nz
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+; 1063e5
+
+Function1063e5: ; 1063e5
+	ld a, [wcf64]
+	cp $3
+	ret nz
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+; 1063f3
+
+Function1063f3: ; 1063f3
+	ld de, wcd31
+	ld a, $32
+	call Function3e32
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+; 106403
+
+Function106403: ; 106403
+	ld a, [wc821]
+	bit 1, a
+	jr nz, .asm_106426
+	bit 0, a
+	jr z, .asm_10640f
+	ret
+
+.asm_10640f
+	ld a, [wcd31]
+	and $80
+	ld c, a
+	ld a, [wcd30]
+	or c
+	inc a
+	ld c, a
+	call MobileFn_106314
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+
+.asm_106426
+	call Function10632f
+	ld a, c
+	and a
+	jr z, .asm_106435
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+
+.asm_106435
+	ld c, $0
+	call MobileFn_106314
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+	ret
+; 106442
+
+Function106442: ; 106442
+	ld a, $36
+	call Function3e32
+	xor a
+	ld [hMobile], a
+	ld [hFFC9], a
+	ld a, [wcd25]
+	inc a
+	ld [wcd25], a
+
+Function106453: ; 106453
+	ld a, [wcd25]
+	set 7, a
+	ld [wcd25], a
+	nop
+	ld a, $4
+	ld [wcf64], a
+	ret
+; 106462
+
+Function106462: ; 106462
+	ret
+; 106463
+
+Function106463: ; 106463
+	ret
+; 106464
+
+Function106464:: ; 106464
+	ld de, MobilePhoneTilesGFX
+	ld hl, VTiles2 tile $60
+	lb bc, BANK(MobilePhoneTilesGFX), 1
+	call Get2bpp
+	ld de, GFX_f9424
+	ld hl, VTiles2 tile $61
+	lb bc, BANK(GFX_f9424), 1
+	call Get2bpp
+	ld de, GFX_106514
+	ld hl, VTiles2 tile $62
+	ld c, 9
+	ld b, BANK(GFX_106514)
+	call Get2bpp
+	ld de, $40b0
+	ld hl, VTiles2 tile $6b
+	ld b, $f ; XXX no graphics at 0f:40b0
+	call Get2bpp
+	callba LoadFrame
+	ret
+; 10649b
+
+Function10649b: ; 10649b
+	ld a, [TextBoxFrame]
+	and $7
+	ld bc, $30
+	ld hl, Frames
+	call AddNTimes
+	ld d, h
+	ld e, l
+	ld hl, VTiles2 tile $79
+	ld c, 6
+	ld b, BANK(Frames)
+	call Function1064c3
+	ld hl, VTiles2 tile $7f
+	ld de, TextBoxSpaceGFX
+	ld c, 1
+	ld b, BANK(TextBoxSpaceGFX)
+	call Function1064c3
+	ret
+; 1064c3
+
+Function1064c3: ; 1064c3
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push bc
+	push hl
+	ld hl, Function3f88
+	ld a, b
+	rst FarCall
+	pop hl
+	pop bc
+	pop af
+	ld [rSVBK], a
+	jr asm_1064ed
+
+Function1064d8: ; 1064d8
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push bc
+	push hl
+	ld hl, Function3f9f
+	ld a, b
+	rst FarCall
+	pop hl
+	pop bc
+	pop af
+	ld [rSVBK], a
+	jr asm_1064ed
+
+asm_1064ed
+	ld de, w6_d000
+	ld b, $0
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld a, [rVBK]
+	push af
+	ld a, $1
+	ld [rVBK], a
+	call Get2bpp
+	pop af
+	ld [rVBK], a
+	pop af
+	ld [rSVBK], a
+	ret
+; 10650a
+
+Function10650a: ; 10650a
+	ld de, MobilePhoneTilesGFX + $20
+	lb bc, BANK(MobilePhoneTilesGFX), $11
+	call Get2bpp
+	ret
+; 106514
+
+GFX_106514:
+INCBIN "gfx/unknown/106514.2bpp"
+
+
+Function106594:: ; 106594
+	ld de, GFX_1065ad
+	ld hl, VTiles1
+	lb bc, BANK(GFX_1065ad), $80
+	call Get2bpp
+	ld de, GFX_1065ad + $800
+	ld hl, VTiles2 tile $7f
+	lb bc, BANK(GFX_1065ad), 1
+	call Get2bpp
+	ret
+; 1065ad
+
+GFX_1065ad:
+INCBIN "gfx/unknown/1065ad.2bpp"
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -67,10 +67,10 @@
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld hl, VramState
 	ld a, [hl]
 	push af
@@ -88,7 +88,7 @@
 	pop af
 	ld [VramState], a
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 108089
 
@@ -97,10 +97,10 @@
 	ld [hl], e
 	inc hl
 	ld [hl], d
-	ld a, [$ffde]
+	ld a, [hMapAnims]
 	push af
 	xor a
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ld hl, VramState
 	ld a, [hl]
 	push af
@@ -118,7 +118,7 @@
 	pop af
 	ld [VramState], a
 	pop af
-	ld [$ffde], a
+	ld [hMapAnims], a
 	ret
 ; 1080b7
 
@@ -125,13 +125,13 @@
 Function1080b7: ; 1080b7
 	xor a
 	ld [wJumptableIndex], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
 	call Function1081ad
 	call Function1081ca
-	call Functione51
+	call LoadStandardFont
 	call LoadFontsBattleExtra
 	ld a, $1
 	ld [rVBK], a
@@ -170,7 +170,7 @@
 	ld de, VTiles0 tile $30
 	call Function1081e9
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2 tile $31
 	call Function1081e9
 	ld a, [$c6d0]
@@ -188,13 +188,13 @@
 Function108157: ; 108157
 	xor a
 	ld [wJumptableIndex], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
 	call Function1081ad
 	call Function1081ca
-	call Functione51
+	call LoadStandardFont
 	call LoadFontsBattleExtra
 	call EnableLCD
 	xor a
@@ -284,8 +284,8 @@
 	ld [CurPartySpecies], a
 	hlcoord 7, 2
 	ld d, $0
-	ld e, $3
-	predef Functiond008e
+	ld e, ANIM_MON_TRADE
+	predef AnimateFrontpic
 	ret
 ; 108229
 
@@ -293,8 +293,8 @@
 	ld [CurPartySpecies], a
 	hlcoord 7, 2
 	ld d, $0
-	ld e, $3
-	predef Functiond00a3
+	ld e, ANIM_MON_TRADE
+	predef LoadMonAnimation
 	ret
 ; 108239
 
@@ -304,7 +304,7 @@
 	call GetPokemonName
 	ld hl, StringBuffer1
 	pop de
-	ld bc, $000b
+	ld bc, PKMN_NAME_LENGTH
 	call CopyBytes
 	ret
 ; 10824b
@@ -326,7 +326,7 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	call Functione51
+	call LoadStandardFont
 	call LoadFontsBattleExtra
 	callba Function106462
 	callba Function106464
@@ -508,7 +508,7 @@
 ; 10839b
 
 Function10839b: ; 10839b
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -515,7 +515,7 @@
 	call Function1081ca
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
@@ -548,9 +548,9 @@
 	ld [hWY], a
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -643,7 +643,7 @@
 ; 1084d7
 
 Function1084d7: ; 1084d7
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -650,7 +650,7 @@
 	call Function1081ca
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
@@ -692,9 +692,9 @@
 	ld [hWY], a
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -701,7 +701,7 @@
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	call Function10898a
 	ld a, [wc702]
 	call Function108229
@@ -712,7 +712,7 @@
 ; 108589
 
 Function108589: ; 108589
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -719,7 +719,7 @@
 	call Function1081ca
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	ld de, VTiles2
 	call Function108201
 	call EnableLCD
@@ -761,9 +761,9 @@
 	ld [hWY], a
 	ld a, [wc702]
 	ld [CurPartySpecies], a
-	ld a, [wc72f]
+	ld a, [wEnemyTrappingMove]
 	ld [TempMonDVs], a
-	ld a, [wc730]
+	ld a, [wPlayerWrapCount]
 	ld [TempMonDVs + 1], a
 	ld b, $1a
 	call GetSGBLayout
@@ -770,7 +770,7 @@
 	ld a, $e4
 	call DmgToCgbBGPals
 	ld a, [wc702]
-	ld hl, wc72f
+	ld hl, wEnemyTrappingMove
 	call Function10898a
 	ld a, [wc702]
 	call Function108229
@@ -781,7 +781,7 @@
 
 Function108638: ; 108638
 	callba Function8d03d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -804,7 +804,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_109107
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	call CopyBytes
 	pop af
@@ -817,7 +817,7 @@
 
 Function108689: ; 108689
 	callba Function8d03d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -850,7 +850,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_109107
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	call CopyBytes
 	pop af
@@ -862,7 +862,7 @@
 ; 1086f4
 
 Function1086f4: ; 1086f4
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	xor a
@@ -894,7 +894,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_109107
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	call CopyBytes
 	pop af
@@ -1162,7 +1162,7 @@
 	ld c, $28
 	call Function1082cc
 	callba Function8d03d
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearTileMap
 	call DisableLCD
@@ -1210,7 +1210,7 @@
 	call Function108ac8
 	hlcoord 7, 2
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	ld bc, $0707
 	predef FillBox
 	call WaitBGMap
@@ -1224,7 +1224,7 @@
 	call Function108ac8
 	hlcoord 7, 2
 	xor a
-	ld [$ffad], a
+	ld [hFillBox], a
 	ld bc, $0707
 	predef FillBox
 	call WaitBGMap
@@ -1259,10 +1259,10 @@
 	call Function108a92
 	ld de, wc703
 	call Function108a9c
-	ld a, [wc733]
+	ld a, [wEnemyCharging]
 	ld de, wc724
 	call Function108aa3
-	ld de, wc731
+	ld de, wEnemyWrapCount
 	call Function108abe
 	call Function108a87
 	ret
@@ -1407,7 +1407,7 @@
 	ld [rVBK], a
 	ld hl, VTiles2 tile $4a
 	lb bc, $42, $10
-	call Functiondc9
+	call Get2bpp_2
 	call DelayFrame
 	ld a, $0
 	ld [rVBK], a
@@ -1459,7 +1459,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld de, $7fff
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld a, e
 	ld [hli], a
 	ld d, a
@@ -1537,7 +1537,7 @@
 	ld hl, Palette_108b98
 
 .asm_108bb0
-	ld de, Unkn1Pals + 8 * 7
+	ld de, wMapPals + 8 * 7
 	ld bc, $0040
 	call CopyBytes
 	pop af
@@ -1737,7 +1737,7 @@
 	dec c
 	jr nz, .asm_108ccc
 
-	ld de, wc731
+	ld de, wEnemyWrapCount
 	ld c, $2
 .asm_108cd7
 	ld a, [hli]
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -5588,14 +5588,14 @@
 Function11615a: ; 11615a
 	xor a
 	ld [wc30d], a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ld [wc310], a
 	ld [wc311], a
 	ld [wc312], a
 	ld [wc313], a
-	ld [wPartyMonMenuIconAnims], a
-	ld [wPartyMonMenuIconAnims + 1], a
-	ld [wPartyMonMenuIconAnims + 4], a
+	ld [wc314], a
+	ld [wc314 + 1], a
+	ld [wc314 + 4], a
 	ld [wc3f6], a
 	ld [wc3f8], a
 	ld [wc3f2], a
@@ -5617,7 +5617,7 @@
 	ld a, [wc30d]
 	and a
 	ret z
-	ld a, [wPartyMonMenuIconAnims + 5]
+	ld a, [wc314 + 5]
 	cp $2
 	jr c, .asm_1161b4
 	ld a, $a0
@@ -5631,7 +5631,7 @@
 ; 1161b8
 
 Function1161b8: ; 1161b8
-	ld a, [wPartyMonMenuIconAnims + 5]
+	ld a, [wc314 + 5]
 	ld e, a
 	ld d, 0
 	ld hl, Jumptable_1161c7
@@ -5758,9 +5758,9 @@
 	ld [wc2a9], a
 	ld a, d
 	ld [wc2aa], a
-	ld a, [wPartyMonMenuIconAnims + 5]
+	ld a, [wc314 + 5]
 	inc a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ret
 ; 11628c
 
@@ -5774,19 +5774,19 @@
 
 Function116294: ; 116294
 	callba Function170d02
-	ld a, [wPartyMonMenuIconAnims + 5]
+	ld a, [wc314 + 5]
 	inc a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ld a, [rSVBK]
 	push af
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, wd030
-	ld de, wPartyMonMenuIconAnims + 12
+	ld de, wc314 + 12
 	ld bc, $0010
 	call CopyBytes
 	ld hl, Palette_11734e
-	ld de, Unkn1Pals + 8 * 7
+	ld de, wMapPals + 8 * 7
 	ld bc, $0008
 	call CopyBytes
 	call SetPalettes
@@ -5799,9 +5799,9 @@
 
 Function1162cb: ; 1162cb
 	callba Function170cc6
-	ld a, [wPartyMonMenuIconAnims + 5]
+	ld a, [wc314 + 5]
 	inc a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ld a, [rSVBK]
 	push af
 	ld a, $5
@@ -5838,7 +5838,7 @@
 	ld c, a
 	ld a, [wc30f]
 	ld b, a
-	ld a, [wPartyMonMenuIconAnims + 4]
+	ld a, [wc314 + 4]
 	ld e, a
 	ld a, [hli]
 	sub e
@@ -5912,7 +5912,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, BGPals
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	call CopyBytes
 	pop af
@@ -5939,7 +5939,7 @@
 	xor a
 	ld [wc2aa], a
 	xor a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ld [wc30d], a
 	ret
 ; 1163c0
@@ -5961,7 +5961,7 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, wPartyMonMenuIconAnims + 12
+	ld hl, wc314 + 12
 	ld de, wd030
 	ld bc, $0010
 	call CopyBytes
@@ -5997,7 +5997,7 @@
 
 .asm_116439
 	xor a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ld [wc30d], a
 	ret
 ; 116441
@@ -6014,7 +6014,7 @@
 	xor a
 	ld [wc2aa], a
 	xor a
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	ld [wc30d], a
 	ret
 ; 116468
@@ -6021,7 +6021,7 @@
 
 Function116468: ; 116468
 	call Function116567
-	ld a, [wPartyMonMenuIconAnims]
+	ld a, [wc314]
 	cp $d
 	jr nz, .asm_1164a8
 	ld hl, wc30e
@@ -6213,7 +6213,7 @@
 ; 11659d
 
 Function11659d: ; 11659d
-	ld a, [wPartyMonMenuIconAnims]
+	ld a, [wc314]
 	cp $12
 	ret nc
 	ld e, a
@@ -6289,7 +6289,7 @@
 	call Function116780
 	ret c
 	ld a, $2
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	ret
 ; 116615
 
@@ -6332,17 +6332,17 @@
 	call Function116780
 	ret c
 	ld a, $7
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	ret
 ; 116655
 
 Function116655: ; 116655
 	xor a
-	ld [wPartyMonMenuIconAnims + 3], a
+	ld [wc314 + 3], a
 	call Function11678e
 
 Function11665c:
-	ld hl, wPartyMonMenuIconAnims + 3
+	ld hl, wc314 + 3
 	ld a, $1
 	xor [hl]
 	ld [hl], a
@@ -6349,7 +6349,7 @@
 	add $4
 	ld c, a
 	call Function11679c
-	ld a, [wPartyMonMenuIconAnims + 3]
+	ld a, [wc314 + 3]
 	and a
 	jr nz, .asm_116673
 	ld a, $48
@@ -6378,7 +6378,7 @@
 	call Function116780
 	ret c
 	ld a, $c
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	ret
 ; 11669f
 
@@ -6393,9 +6393,9 @@
 	ld [wc30f], a
 	ld [wc3f3], a
 	ld a, $ff
-	ld [wPartyMonMenuIconAnims + 2], a
+	ld [wc314 + 2], a
 	xor a
-	ld [wPartyMonMenuIconAnims + 3], a
+	ld [wc314 + 3], a
 	ld a, $0
 	ld c, a
 	call Function11679c
@@ -6417,7 +6417,7 @@
 	cp $48
 	jr nz, .asm_1166e4
 	xor a
-	ld [wPartyMonMenuIconAnims + 2], a
+	ld [wc314 + 2], a
 
 .asm_1166e4
 	ld a, [wc311]
@@ -6424,9 +6424,9 @@
 	cp $ff
 	ret nz
 	ld a, $4
-	ld [wPartyMonMenuIconAnims + 5], a
+	ld [wc314 + 5], a
 	xor a
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	ret
 ; 1166f4
 
@@ -6433,9 +6433,9 @@
 Function1166f4: ; 1166f4
 	ld [wc30e], a
 	ld a, b
-	ld [wPartyMonMenuIconAnims + 2], a
+	ld [wc314 + 2], a
 	xor a
-	ld [wPartyMonMenuIconAnims + 3], a
+	ld [wc314 + 3], a
 	ld hl, wc30f
 .asm_116702
 	call Random
@@ -6460,9 +6460,9 @@
 Function11671f: ; 11671f
 	ld [wc30f], a
 	ld a, b
-	ld [wPartyMonMenuIconAnims + 3], a
+	ld [wc314 + 3], a
 	xor a
-	ld [wPartyMonMenuIconAnims + 2], a
+	ld [wc314 + 2], a
 	ld hl, wc30e
 .asm_11672d
 	call Random
@@ -6482,11 +6482,11 @@
 
 Function116747: ; 116747
 	ld hl, wc30e
-	ld a, [wPartyMonMenuIconAnims + 2]
+	ld a, [wc314 + 2]
 	add [hl]
 	ld [hl], a
 	ld hl, wc30f
-	ld a, [wPartyMonMenuIconAnims + 3]
+	ld a, [wc314 + 3]
 	add [hl]
 	ld [hl], a
 	ret
@@ -6518,7 +6518,7 @@
 	ld a, $4
 
 .asm_11677a
-	ld [wPartyMonMenuIconAnims + 4], a
+	ld [wc314 + 4], a
 	ret
 ; 11677e
 
@@ -6526,11 +6526,11 @@
 	ld a, $0
 
 Function116780:
-	ld hl, wPartyMonMenuIconAnims + 1
+	ld hl, wc314 + 1
 	cp [hl]
 	jr z, .asm_11678c
 	ld a, [hl]
-	ld [wPartyMonMenuIconAnims], a
+	ld [wc314], a
 	scf
 	ret
 
@@ -6540,15 +6540,15 @@
 ; 11678e
 
 Function11678e: ; 11678e
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	ld a, [hl]
-	ld [wPartyMonMenuIconAnims + 1], a
+	ld [wc314 + 1], a
 	inc [hl]
 	ret
 ; 116797
 
 Function116797: ; 116797
-	ld hl, wPartyMonMenuIconAnims
+	ld hl, wc314
 	inc [hl]
 	ret
 ; 11679c
@@ -7667,10 +7667,10 @@
 
 Function11766b: ; 11766b (45:766b)
 	call Function117699
-	ld a, [rSVBK] ; $ff00+$70
+	ld a, [rSVBK]
 	push af
 	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	call Function1176ee
 	ld a, $5
 	call GetSRAMBank
@@ -7683,7 +7683,7 @@
 	call CopyBytes
 	call CloseSRAM
 	pop af
-	ld [rSVBK], a ; $ff00+$70
+	ld [rSVBK], a
 	ret
 
 Function117699: ; 117699 (45:7699)
@@ -7708,7 +7708,7 @@
 	ld hl, wc708
 	ld bc, $11
 	call ByteFill
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function171c87
 	callba Function104061
@@ -7726,7 +7726,7 @@
 	jr Function1176ee
 .asm_117709
 	callba Function8cf53
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearScreen
 	call ClearSprites
 	ret
@@ -7972,12 +7972,12 @@
 Function1178aa: ; 1178aa (45:78aa)
 	ld hl, MenuDataHeader_1179b5
 	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
+	call MenuBox
+	call MenuBoxCoord2Tile
 	ld hl, MenuDataHeader_1179bd
 	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
+	call MenuBox
+	call MenuBoxCoord2Tile
 	callba Function104061
 	hlcoord 16, 8
 	ld de, String_1179c5
@@ -7993,7 +7993,7 @@
 	jp Function117a0a
 
 Function1178e8: ; 1178e8 (45:78e8)
-	ld a, [hJoyPressed] ; $ff00+$a7
+	ld a, [hJoyPressed]
 	cp $2
 	jr z, .asm_117939
 	cp $1
@@ -8075,8 +8075,8 @@
 Function117984: ; 117984 (45:7984)
 	ld hl, MenuDataHeader_1179b5
 	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
+	call MenuBox
+	call MenuBoxCoord2Tile
 	callba Function104061
 	hlcoord 1, 14
 	ld de, String_1179e1
@@ -8172,7 +8172,7 @@
 	ld [wcf64], a
 	ld [wcf65], a
 	ld [wcf66], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function172e78
 	callba Function104000
@@ -8180,7 +8180,7 @@
 ; 0x117ab4
 
 Function117ab4: ; 0x117ab4
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	callba Function172e78
 	callba Function172eb9
@@ -8197,7 +8197,7 @@
 	callba Function104000
 	jr Function117acd
 .asm_117ae2
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	ret
 
@@ -8235,8 +8235,8 @@
 	ret nz
 	ld hl, Data117cbc
 	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
+	call MenuBox
+	call MenuBoxCoord2Tile
 	jp Function117cdd
 
 Function117b28:
@@ -8247,8 +8247,8 @@
 Function117b31:
 	ld hl, Data117cc4
 	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
+	call MenuBox
+	call MenuBoxCoord2Tile
 	hlcoord 16, 8
 	ld de, YesNo117ccc
 	call PlaceString
@@ -8373,7 +8373,7 @@
 	ld [rSVBK], a
 	ld a, $7
 	call GetSRAMBank
-	ld hl, DefaultFlypoint
+	ld hl, wd002
 	ld de, $b000
 	ld bc, $1000
 	call CopyBytes
@@ -8385,8 +8385,8 @@
 Function117c4a:
 	ld hl, Data117cbc
 	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
+	call MenuBox
+	call MenuBoxCoord2Tile
 	callba Function104061
 	ld hl, MobileStadiumSuccessText
 	call PrintText
@@ -8469,16654 +8469,3 @@
 	ret
 
 
-SECTION "bank46", ROMX, BANK[$46]
-
-Function118000: ; 118000
-	ld a, $1
-	ld [wcd38], a
-	jr asm_11800b
-
-Function118007: ; 118007
-	xor a
-	ld [wcd38], a
-
-asm_11800b
-	call Function1183cb
-	ld a, $18
-	ld [wcd33], a
-	ld a, $19
-	ld [wcd34], a
-	ld a, $4
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_118024
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $1b
-	jr c, .asm_118037
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_118037
-	call Function1184a5
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_118024
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	call Function222a
-Function11805e: ; 11805e (46:405e)
-	ret
-; 11805f
-
-Function11805f: ; 11805f
-	ld a, $1
-	ld [wcd38], a
-	call Function1183cb
-	ld a, $18
-	ld [wcd33], a
-	ld a, $19
-	ld [wcd34], a
-	ld a, $4
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_11807d
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $1b
-	jr c, .asm_118090
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_118090
-	call Function11857c
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_11807d
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	call Function222a
-	ret
-; 1180b8
-
-Function1180b8: ; 1180b8
-	call Function1183cb
-	ld a, $22
-	ld [wcd33], a
-	ld a, $23
-	ld [wcd34], a
-	ld a, $4
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_1180d1
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $28
-	jr c, .asm_1180e4
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_1180e4
-	ld a, [wcf66]
-	cp $10
-	jr c, .asm_1180f2
-	cp $16
-	jr nc, .asm_1180f2
-	call Function11884c
-
-.asm_1180f2
-	call Function1184ec
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_1180d1
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	call Function222a
-	ret
-; 11811a
-
-Function11811a: ; 11811a
-	ld a, 1
-	ld [wcd38], a
-	jr Function118125
-
-Function118121: ; 118121
-	xor a
-	ld [wcd38], a
-
-Function118125: ; 118125
-	call Function1183cb
-	ld a, $3
-	ld [wcd33], a
-	ld a, $d
-	ld [wcd34], a
-	ld a, $4
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_11813e
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $f
-	jr c, .asm_118151
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_118151
-	call Function11854d
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_11813e
-	xor a
-	ld [Unkn1Pals], a
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	call Function118180
-	call Function222a
-	ret
-; 118180
-
-Function118180: ; 118180
-	ld a, [ScriptVar]
-	and a
-	ret nz
-	ld a, [wcd38]
-	and a
-	ret z
-	ld a, $5
-	call GetSRAMBank
-	ld hl, wcd69
-	ld de, $a89c
-	ld bc, $0016
-	call CopyBytes
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld de, $d202
-	ld c, $96
-	callba Function17d0b3
-	jr c, .asm_1181d0
-	ld de, $d202
-	ld bc, $0196
-	callba Function17d1e1
-	jr c, .asm_1181d0
-	ld hl, $d202
-	ld de, $a8b2
-	ld bc, $0096
-	call CopyBytes
-.asm_1181c9
-	pop af
-	ld [rSVBK], a
-	call CloseSRAM
-	ret
-
-.asm_1181d0
-	ld a, $d3
-	ld [wc300], a
-	ld [ScriptVar], a
-	jr .asm_1181c9
-; 1181da
-
-Function1181da: ; 1181da
-	call Function1183cb
-	ld a, $2
-	ld [wcd38], a
-	ld a, $21
-	ld [wcd33], a
-	ld a, $22
-	ld [wcd34], a
-	ld a, $4
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_1181f8
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $28
-	jr c, .asm_11820b
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_11820b
-	call Function1185c3
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_1181f8
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	call Function222a
-	ret
-; 118233
-
-Function118233: ; 118233
-	call Function1183cb
-	ld a, $1b
-	ld [wcd33], a
-	ld a, $1c
-	ld [wcd34], a
-	ld a, $6
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_11824c
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $1e
-	jr c, .asm_11825f
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_11825f
-	call Function118624
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_11824c
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	ret
-; 118284
-
-Function118284: ; 118284
-	call Function1183cb
-	ld a, $19
-	ld [wcd33], a
-	ld a, $1e
-	ld [wcd34], a
-	ld a, $5
-	ld [wc3f0], a
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $3
-	ld [rSVBK], a ; $ff00+$70
-.asm_11829d
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $20
-	jr c, .asm_1182b0
-	ld a, [wcd34]
-	ld [wcf66], a
-.asm_1182b0
-	call Function1186f5
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_11829d
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	call Function118452
-	ret
-; 1182d5 (46:42d5)
-
-
-Function1182d5: ; 1182d5
-	call Function1183cb
-	ld a, $18
-	ld [wcd33], a
-	ld a, $19
-	ld [wcd34], a
-	ld a, $4
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_1182ee
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $1b
-	jr c, .asm_118301
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_118301
-	call Function118746
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_1182ee
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	call Function222a
-	ret
-; 118329
-
-Function118329: ; 118329
-	call Function1183cb
-	ld a, $15
-	ld [wcd33], a
-	ld a, $16
-	ld [wcd34], a
-	ld a, $6
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_118342
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $18
-	jr c, .asm_118355
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_118355
-	call Function118671
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_118342
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	ret
-; 11837a
-
-Function11837a: ; 11837a
-	call Function1183cb
-	ld a, $16
-	ld [wcd33], a
-	ld a, $17
-	ld [wcd34], a
-	ld a, $6
-	ld [wc3f0], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-.asm_118393
-	call JoyTextDelay
-	call Function118473
-	ld a, [wcf66]
-	cp $19
-	jr c, .asm_1183a6
-	ld a, [wcd34]
-	ld [wcf66], a
-
-.asm_1183a6
-	call Function1186b2
-	call Function11a8fa
-	callba Function115dd3
-	callba Function11619d
-	call DelayFrame
-	ld a, [wcf66]
-	ld hl, wcd33
-	cp [hl]
-	jr nz, .asm_118393
-	pop af
-	ld [rSVBK], a
-	call Function118452
-	ret
-; 1183cb
-
-Function1183cb: ; 1183cb
-	di
-	ld a, [rIE]
-	ld [wcd32], a
-	call DoubleSpeed
-	xor a
-	ld [rIF], a
-	ld [wc300], a
-	ld [wc301], a
-	ld [wc302], a
-	ld [wcd80], a
-	ld [wcd65], a
-	ld [wcd66], a
-	ld [wcd67], a
-	ld [wcd68], a
-	ld [wPartyMonMenuIconAnims + 6], a
-	ld [wcd89], a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	ld [wc3ec], a
-	ld [wc3ed], a
-	ld [wc3ee], a
-	ld [wc3ef], a
-	ld hl, VramState
-	ld a, [hl]
-	ld [wcd7f], a
-	set 1, [hl]
-	ld a, $f
-	ld [rIE], a
-	ld a, $1
-	ld [$ffc9], a
-	ld [hMobile], a
-	ei
-	callba Function106462
-	callba Function106464
-	callba Function115d99
-	callba Function11615a
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$bfff], a
-	call CloseSRAM
-	ret
-; 118440
-
-Function118440: ; 118440
-	push af
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$bfff]
-	inc a
-	ld [$bfff], a
-	call CloseSRAM
-	pop af
-	ret
-; 118452
-
-Function118452: ; 118452
-	di
-	xor a
-	ld [$ffc9], a
-	ld [hMobile], a
-	ld [hVBlank], a
-	call NormalSpeed
-	xor a
-	ld [rIF], a
-	ld a, [wcd32]
-	ld [rIE], a
-	ei
-	ld a, [wcd7f]
-	ld [VramState], a
-	ld a, [wc300]
-	ld [ScriptVar], a
-	ret
-; 118473
-
-Function118473: ; 118473
-	ld a, [wcd65]
-	and a
-	ret z
-	ld a, [wcd66]
-	inc a
-	ld [wcd66], a
-	cp $3c
-	ret nz
-	xor a
-	ld [wcd66], a
-	ld a, [wcd67]
-	inc a
-	ld [wcd67], a
-	cp $3c
-	ret nz
-	ld a, [wcd68]
-	inc a
-	ld [wcd68], a
-	cp $63
-	jr z, .asm_1184a0
-	xor a
-	ld [wcd67], a
-	ret
-
-.asm_1184a0
-	xor a
-	ld [wcd65], a
-	ret
-; 1184a5
-
-Function1184a5: ; 1184a5
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1184b4
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 1184b4
-
-Jumptable_1184b4: ; 1184b4
-	dw Function11886e
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function118a8f
-	dw Function11878d
-	dw Function118d80
-	dw Function118d9b
-	dw Function11878d
-	dw Function118ded
-	dw Function118e6d
-	dw Function11878d
-	dw Function11984e
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 1184ec
-
-Function1184ec: ; 1184ec
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1184fb
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 1184fb
-
-Jumptable_1184fb: ; 1184fb
-	dw Function11886e
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function119954
-	dw Function11878d
-	dw Function119973
-	dw Function11878d
-	dw Function119987
-	dw Function11878d
-	dw Function1199b4
-	dw Function1199ca
-	dw Function11878d
-	dw Function1199e2
-	dw Function119b0d
-	dw Function11878d
-	dw Function119b6b
-	dw Function119b3b
-	dw Function11878d
-	dw Function119b52
-	dw Function11878d
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function119b45
-	dw Function11878d
-	dw Function119ac9
-	dw Function118e76
-; 11854d
-
-Function11854d: ; 11854d
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11855c
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11855c
-
-Jumptable_11855c: ; 11855c
-	dw Function118922
-	dw Function118936
-	dw Function118982
-	dw Function11805e
-	dw Function119ca2
-	dw Function119cab
-	dw Function119cb8
-	dw Function119cc3
-	dw Function119cdf
-	dw Function119cec
-	dw Function119c97
-	dw Function119cab
-	dw Function119cb8
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 11857c
-
-Function11857c: ; 11857c
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11858b
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11858b
-
-Jumptable_11858b: ; 11858b
-	dw Function11886e
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function118a7a
-	dw Function11878d
-	dw Function11891c
-	dw Function1198ee
-	dw Function1198f7
-	dw Function11878d
-	dw Function119937
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 1185c3
-
-Function1185c3: ; 1185c3
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1185d2
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 1185d2
-
-Jumptable_1185d2: ; 1185d2
-	dw Function11886e
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function118aa4
-	dw Function11878d
-	dw Function118e92
-	dw Function11878d
-	dw Function118eb0
-	dw Function118ec6
-	dw Function118f0d
-	dw Function118f14
-	dw Function118f5e
-	dw Function11878d
-	dw Function118fc0
-	dw Function11878d
-	dw Function119054
-	dw Function1190d0
-	dw Function11878d
-	dw Function1190ec
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function119cc3
-	dw Function119cdf
-	dw Function119cec
-	dw Function11914e
-	dw Function118e76
-; 118624
-
-Function118624: ; 118624
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_118633
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 118633
-
-Jumptable_118633: ; 118633
-	dw Function118866
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function118aa4
-	dw Function11878d
-	dw Function118e92
-	dw Function11878d
-	dw Function11915d
-	dw Function118f68
-	dw Function11878d
-	dw Function119009
-	dw Function11878d
-	dw Function119054
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 118671
-
-Function118671: ; 118671
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_118680
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 118680
-
-Jumptable_118680: ; 118680
-	dw Function118866
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function119380
-	dw Function119388
-	dw Function1193a0
-	dw Function11878d
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 1186b2
-
-Function1186b2: ; 1186b2
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1186c1
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 1186c1
-
-Jumptable_1186c1: ; 1186c1
-	dw Function118866
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function119380
-	dw Function1193e3
-	dw Function1193fb
-	dw Function11878d
-	dw Function119413
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 1186f5
-
-Function1186f5: ; 1186f5 (46:46f5)
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_118704
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 118704 (46:4704)
-
-Jumptable_118704: ; 118704 (46:4704)
-	dw Function11886a
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function118abc
-	dw Function11878d
-	dw Function119451
-	dw Function1195f8
-	dw Function119612
-	dw Function119629
-	dw Function119648
-	dw Function11878d
-	dw Function118e6d
-	dw Function11878d
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function11967d
-	dw Function119685
-	dw Function119665
-	dw Function11966d
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 118746 (46:4746)
-
-Function118746: ; 118746
-	ld a, [wcf66]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_118755
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 118755
-
-Jumptable_118755: ; 118755
-	dw Function11886e
-	dw Function118880
-	dw Function11878d
-	dw Function1188b0
-	dw Function11878d
-	dw Function1188b8
-	dw Function11878d
-	dw Function1188c0
-	dw Function11878d
-	dw Function1188c8
-	dw Function11878d
-	dw Function118903
-	dw Function118ad0
-	dw Function11878d
-	dw Function1196f2
-	dw Function1197c9
-	dw Function1197dc
-	dw Function11878d
-	dw Function118e6d
-	dw Function11878d
-	dw Function119800
-	dw Function118e76
-	dw Function118e7e
-	dw Function11878d
-	dw Function11805e
-	dw Function118e76
-	dw Function118e87
-	dw Function118e76
-; 11878d
-
-Function11878d: ; 11878d (46:478d)
-	ld a, [wc821]
-	bit 1, a
-	jr nz, .asm_1187af
-	bit 2, a
-	jr nz, .asm_1187d1
-	bit 0, a
-	jr nz, .asm_1187aa
-	ld a, [wcd89]
-	and $1
-	jr z, .asm_1187a7
-	ld a, $3
-	ld [rSVBK], a ; $ff00+$70
-.asm_1187a7
-	jp Function119e2e
-.asm_1187aa
-	call Function118821
-	ret c
-	ret
-.asm_1187af
-	ld a, $0
-	call Function3e32
-	ld [wc300], a
-	ld a, l
-	ld [wc301], a
-	ld a, h
-	ld [wc302], a
-	ld a, $a
-	call Function3e32
-	ld a, [wc3f0]
-	ld [wPartyMonMenuIconAnims + 5], a
-	ld a, [wcd34]
-	ld [wcf66], a
-	ret
-.asm_1187d1
-	ld hl, wcd89
-	bit 0, [hl]
-	jr nz, .asm_118803
-	set 0, [hl]
-	ld a, $6
-	ld [rSVBK], a ; $ff00+$70
-	ld de, Unkn1Pals
-	ld bc, $1000
-	ld a, [hl]
-	sla a
-	jr c, .asm_1187f9
-	sla a
-	jr c, .asm_1187fd
-	sla a
-	jr c, .asm_1187f5
-	ld a, $24
-	jr .asm_1187ff
-.asm_1187f5
-	ld a, $28
-	jr .asm_1187ff
-.asm_1187f9
-	ld a, $2a
-	jr .asm_1187ff
-.asm_1187fd
-	ld a, $2c
-.asm_1187ff
-	call Function3e32
-	ret
-.asm_118803
-	ld a, $d3
-
-Function118805: ; 118805 (46:4805)
-	ld [wc300], a
-	xor a
-	ld [wc301], a
-	ld [wc302], a
-	ld a, $a
-	call Function3e32
-	ld a, [wc3f0]
-	ld [wPartyMonMenuIconAnims + 5], a
-	ld a, [wcd34]
-	ld [wcf66], a
-	ret
-
-Function118821: ; 118821 (46:4821)
-	ld a, [wPartyMonMenuIconAnims + 5]
-	cp $3
-	jr c, .asm_11884a
-	cp $4
-	jr z, .asm_11884a
-	ld a, [hJoyDown] ; $ff00+$a8
-	cp $5
-	jr nz, .asm_11884a
-	ld a, $a
-	call Function3e32
-	ld a, $a
-	ld [wc300], a
-	ld a, [wc3f0]
-	ld [wPartyMonMenuIconAnims + 5], a
-	ld a, [wcd34]
-	ld [wcf66], a
-	scf
-	ret
-.asm_11884a
-	and a
-	ret
-; 11884c (46:484c)
-
-Function11884c: ; 11884c
-	ld a, [hJoyDown]
-	cp $5
-	jr nz, .asm_118864
-	ld a, $a
-	call Function3e32
-	ld a, $a
-	ld [wc300], a
-	ld a, [wcd34]
-	ld [wcf66], a
-	scf
-	ret
-
-.asm_118864
-	and a
-	ret
-; 118866
-
-Function118866:
-	ld a, 2
-	jr asm_11886f
-
-Function11886a: ; 11886a (46:486a)
-	ld a, 1
-	jr asm_11886f
-; 11886e (46:486e)
-
-Function11886e:
-	xor a
-
-asm_11886f
-	ld [BGMapPalBuffer], a
-	ld a, $0
-	ld [wcd3c], a
-	call Function119e2e
-	ld a, [wcd33]
-	ld [wcd45], a
-
-Function118880: ; 118880 (46:4880)
-	call Function119ed8
-	ret c
-	xor a
-	ld [wcf64], a
-	ld [wc807], a
-	ld de, wcd81
-	ld hl, $46
-	ld a, $2
-	jp Function119e2b
-; 118896 (46:4896)
-
-Function118896: ; 118896
-	ld a, [wc821]
-	bit 1, a
-	jr nz, .asm_1188a5
-	bit 2, a
-	jr nz, .asm_1188a5
-	bit 0, a
-	jr z, .asm_1188aa
-
-.asm_1188a5
-	ld a, $34
-	jp Function119e2b
-
-.asm_1188aa
-	call Function119e2e
-	jp Function119e2e
-; 1188b0
-
-Function1188b0: ; 1188b0 (46:48b0)
-	ld de, wPartyMonMenuIconAnims + 48 + 2
-	ld a, $c
-	jp Function119e2b
-
-Function1188b8: ; 1188b8 (46:48b8)
-	ld de, wc3ac
-	ld a, $e
-	jp Function119e2b
-
-Function1188c0: ; 1188c0 (46:48c0)
-	ld de, wc3cd
-	ld a, $10
-	jp Function119e2b
-
-Function1188c8: ; 1188c8 (46:48c8)
-	ld a, $1
-	ld [wcd65], a
-	call Function1188e7
-	ld hl, wc708
-.asm_1188d3
-	ld a, [de]
-	inc de
-	ld [hli], a
-	and a
-	jr nz, .asm_1188d3
-	call Function119eb4
-	call Function119ec2
-	ld hl, wc708
-	ld a, $6
-	jp Function119e2b
-
-Function1188e7: ; 1188e7 (46:48e7)
-	ld de, wPartyMonMenuIconAnims + 48 + 2
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa4a]
-	call CloseSRAM
-	and a
-	ret z
-	sla a
-	ld c, a
-.asm_1188fa
-	ld a, [de]
-	inc de
-	and a
-	jr nz, .asm_1188fa
-	dec c
-	jr nz, .asm_1188fa
-	ret
-
-Function118903: ; 118903 (46:4903)
-	ld a, [wc3f0]
-	ld [wPartyMonMenuIconAnims + 5], a
-	ld c, $1
-	callba Function115e18
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	jp Function119e2e
-
-
-Function11891c: ; 11891c
-	call Function118b42
-	jp Function119e2e
-
-
-Function118922: ; 118922
-	ld a, [wcd38]
-	and a
-	jr nz, .asm_11892d
-	ld hl, Text_WhatLevelDoYouWantToChallenge
-	jr .asm_118930
-
-.asm_11892d
-	ld hl, Text_CheckBattleRoomListByMaxLevel
-
-.asm_118930
-	call Function11a9c0
-	call Function119e2e
-
-Function118936:
-	ld a, [wPartyMonMenuIconAnims + 6]
-	and a
-	ret nz
-	ld hl, MenuDataHeader_119cf7
-	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
-	call Function321c
-	hlcoord 16, 8, AttrMap
-	ld a, $40
-	or [hl]
-	ld [hl], a
-	call Function3200
-	ld a, $1
-	ld [wcd4f], a
-	ld a, $1
-	ld [rSVBK], a
-	ld a, [StatusFlags]
-	bit 6, a
-	jr nz, .asm_11896b
-	ld hl, Strings_Ll0ToL40		; Address to list of strings with the choosable levels
-	ld a, 5						; 4 levels to choose from, including 'Cancel'-option
-	jr .asm_118970
-
-.asm_11896b
-	ld hl, Strings_L10ToL100	; Address to list of strings with the choosable levels
-	ld a, 11					; 10 levels to choose from, including 'Cancel'-option
-
-.asm_118970
-	ld [wcd4a], a
-	ld a, l
-	ld [wcd4b], a
-	ld a, h
-	ld [wcd4c], a
-	ld a, $3
-	ld [rSVBK], a
-	call Function119e2e
-
-Function118982:
-	hlcoord 13, 8
-	ld de, String_119d07
-	call PlaceString
-	hlcoord 13, 10
-	ld de, String_119d07
-	call PlaceString
-	ld a, [wcd4b]
-	ld l, a
-	ld a, [wcd4c]
-	ld h, a
-	ld d, $0
-	ld a, [wcd4f]
-	dec a
-	rlca
-	rlca
-	rlca
-	ld e, a
-	add hl, de
-	ld a, l
-	ld e, a
-	ld a, h
-	ld d, a
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld bc, StringBuffer3
-.asm_1189b5
-	ld a, [hli]
-	cp $50
-	jr z, .asm_1189c4
-	cp $7f
-	jr z, .asm_1189c2
-	ld [bc], a
-	inc bc
-	jr .asm_1189b5
-
-.asm_1189c2
-	ld a, $50
-
-.asm_1189c4
-	ld [bc], a
-	pop af
-	ld [rSVBK], a
-	hlcoord 13, 9
-	call PlaceString
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and $2
-	jr nz, .asm_118a39
-	ld a, [hl]
-	and $1
-	jr nz, .asm_118a01
-	ld a, [hl]
-	and $80
-	jr nz, .asm_1189e6
-	ld a, [hl]
-	and $40
-	jr nz, .asm_1189f2
-.asm_1189e5
-	ret
-
-.asm_1189e6
-	ld hl, wcd4f
-	dec [hl]
-	jr nz, .asm_1189e5
-	ld a, [wcd4a]
-	ld [hl], a
-	jr .asm_1189e5
-
-.asm_1189f2
-	ld a, [wcd4a]
-	ld hl, wcd4f
-	inc [hl]
-	cp [hl]
-	jr nc, .asm_1189e5
-	ld a, $1
-	ld [hl], a
-	jr .asm_1189e5
-
-.asm_118a01
-	call PlayClickSFX
-	ld a, [wcd4f]
-	ld hl, wcd4a
-	cp [hl]
-	jr z, .asm_118a3c
-	dec a
-	and $fe
-	srl a
-	ld [wcf65], a
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	call WriteBackup
-	pop af
-	ld [rSVBK], a
-	ld a, [wcd38]
-	and a
-	jr nz, .asm_118a30
-	call Function119d93
-	ret c
-	call Function119dd1
-	ret c
-
-.asm_118a30
-	ld a, [wcd4f]
-	ld [wd000 + $800], a
-	jp Function119e2e
-
-.asm_118a39
-	call PlayClickSFX
-
-.asm_118a3c
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	call WriteBackup
-	pop af
-	ld [rSVBK], a
-	ld a, $7
-	ld [wcf66], a
-	ld a, $0
-	ld [wcd46], a
-	ret
-
-
-
-Function118a54: ; 118a54
-	ld a, [wcd55]
-	ld l, a
-	ld a, [wcd56]
-	ld h, a
-	ld de, wc3ec
-	ld bc, $0004
-	jp Function118ae4
-; 118a65
-
-Function118a65: ; 118a65
-	ld hl, BattleDownloadURL
-	ld de, wcc60
-	ld bc, $80
-	call CopyBytes
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jp Function118b10
-; 118a7a
-
-Function118a7a: ; 118a7a
-	ld hl, BattleDownloadURL
-	ld de, wcc60
-	ld bc, $80
-	call CopyBytes
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jp Function118b10
-; 118a8f
-
-Function118a8f: ; 118a8f
-	ld hl, ExchangeDownloadURL
-	ld de, wcc60
-	ld bc, $80
-	call CopyBytes
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jp Function118b10
-; 118aa4
-
-Function118aa4: ; 118aa4
-	ld hl, NewsDownloadURL
-	ld de, wcc60
-	ld bc, $80
-	call CopyBytes
-	ld a, $5
-	ld [rSVBK], a
-	ld de, LYOverrides
-	ld bc, $e00
-	jr Function118b10
-; 118abc
-
-Function118abc: ; 118abc (46:4abc)
-	ld hl, MenuDownloadURL
-	ld de, wcc60
-	ld bc, $80
-	call CopyBytes
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jr Function118b10
-; 118ad0 (46:4ad0)
-
-Function118ad0:
-	ld hl, IndexDownloadURL
-	ld de, wcc60
-	ld bc, $80
-	call CopyBytes
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jr Function118b10
-
-Function118ae4:
-	push bc
-	push de
-	push hl
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	pop hl
-	ld c, $0
-	ld de, wcc60
-.asm_118af5
-	ld a, [hli]
-	ld [de], a
-	inc de
-	and a
-	jr z, .asm_118b06
-	inc c
-	ld a, c
-	cp $a6
-	jr c, .asm_118af5
-	ld a, $da
-	jp Function118805
-
-.asm_118b06
-	call Function118b24
-	pop de
-	pop bc
-	ld a, $2a
-	jp Function119e2b
-; 118b10
-
-Function118b10:
-	push de
-	push bc
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	call Function118b24
-	pop bc
-	pop de
-	ld a, $2a
-	jp Function119e2b
-
-Function118b24: ; 118b24 (46:4b24)
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld a, $8
-	ld [hli], a
-	ld a, $c7
-	ld [hli], a
-	ld a, $60
-	ld [hli], a
-	ld a, $cc
-	ld [hli], a
-	call Function119eb4
-	call Function119ec2
-	ld a, $80
-	ld [wcd89], a
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ret
-; 118b42 (46:4b42)
-
-Function118b42: ; 118b42
-	ld hl, DefaultFlypoint
-	ld a, l
-	ld [wcd51], a
-	ld a, h
-	ld [wcd52], a
-	call Function118b8c
-	ld a, l
-	ld [wcd55], a
-	ld [wcd59], a
-	ld a, h
-	ld [wcd56], a
-	ld [wcd5a], a
-	call Function118b8c
-	ld a, l
-	ld [wcd53], a
-	ld [wcd5d], a
-	ld a, h
-	ld [wcd54], a
-	ld [wcd5e], a
-	call Function118b8c
-	ld a, l
-	ld [wcd57], a
-	ld [wcd5b], a
-	ld a, h
-	ld [wcd58], a
-	ld [wcd5c], a
-	call Function118b8c
-	ld a, l
-	ld [wcd5f], a
-	ld a, h
-	ld [wcd60], a
-	ret
-; 118b8c
-
-Function118b8c: ; 118b8c
-.asm_118b8c
-	call Function118b9a
-	ret nc
-	ld a, [hli]
-	cp $d
-	jr nz, .asm_118b8c
-	dec hl
-	xor a
-rept 2
-	ld [hli], a
-endr
-	ret
-; 118b9a
-
-Function118b9a: ; 118b9a
-	ld a, h
-	cp $e0
-	ret c
-	ld a, $d3
-	call Function118805
-	and a
-	ret
-; 118ba5
-
-
-	charmap " ", $20 ; revert to ascii
-
-ExchangeDownloadURL: ; 0x118ba5
-	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/exchange/index.txt", 0
-
-BattleDownloadURL: ; 0x118bf7
-	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/battle/index.txt", 0
-
-NewsDownloadURL: ; 0x118c47
-	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/news/index.txt", 0
-
-MenuDownloadURL: ; 0x118c95
-	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/POKESTA/menu.cgb", 0
-
-IndexDownloadURL: ; 0x118ce5
-	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/tamago/index.txt", 0
-
-
-Function118d35: ; 118d35
-	ld hl, LYOverridesBackup
-	ld a, [wcd38]
-	and a
-	jr nz, .asm_118d6e
-	ld a, [hli]
-	cp $94
-	jr nz, .asm_118d7b
-	ld a, [hl]
-	cp $5
-	jr nz, .asm_118d7b
-	ld a, [wcd4f]
-	sla a
-	ld b, a
-	sla a
-	sla a
-	add b
-	ld b, a
-	ld a, $5
-	call GetSRAMBank
-	ld a, b
-	ld [$b2fb], a
-	call CloseSRAM
-	callba Function170be4
-	callba Function1700c4
-	jr .asm_118d78
-
-.asm_118d6e
-	ld a, [hli]
-	cp $96
-	jr nz, .asm_118d7b
-	ld a, [hl]
-	cp $0
-	jr nz, .asm_118d7b
-
-.asm_118d78
-	jp Function119e2e
-
-.asm_118d7b
-	ld a, $d3
-	jp Function118805
-; 118d80
-
-Function118d80: ; 118d80
-	call Function118e06
-	ld a, [wcd38]
-	and a
-	jr z, .asm_118d8e
-	call Function119e2e
-	jr asm_118d9f
-
-.asm_118d8e
-	ld a, $9
-	ld [wcd3c], a
-	ld a, $12
-	ld [wcd45], a
-	call Function119e2e
-
-Function118d9b:
-	call Function119ed8
-	ret c
-
-asm_118d9f
-	ld hl, $c608
-	call Function119940
-	ld a, [wcd38]
-	and a
-	jr nz, .asm_118db2
-	ld a, $8f
-	ld [wcd3b], a
-	jr .asm_118db7
-
-.asm_118db2
-	ld a, $26
-	ld [wcd3b], a
-
-.asm_118db7
-	ld hl, $d800
-	ld a, $8
-	ld [hli], a
-	ld a, $c6
-	ld [hli], a
-	ld a, [wcd3b]
-	ld [hli], a
-	xor a
-	ld [hli], a
-	ld a, $8
-	ld [hli], a
-	ld a, $c7
-	ld [hli], a
-	ld a, [wcd39]
-	ld [hli], a
-	ld a, [wcd3a]
-	ld [hli], a
-	call Function119eb4
-	call Function119ec2
-	ld a, $40
-	ld [wcd89], a
-	ld hl, $d800
-	ld de, $de00
-	ld bc, $0200
-	ld a, $2c
-	jp Function119e2b
-; 118ded
-
-Function118ded: ; 118ded
-	ld a, [wcd38]
-	and a
-	jr z, .asm_118e03
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	callba Function11b93b
-	pop af
-	ld [rSVBK], a
-
-.asm_118e03
-	jp Function119e2e
-; 118e06
-
-Function118e06: ; 118e06
-	ld hl, DefaultFlypoint
-	ld a, [wcd38]
-	and a
-	jr z, .asm_118e1d
-.asm_118e0f
-	call Function118b9a
-	ret nc
-	ld a, [hli]
-	cp $d
-	jr nz, .asm_118e0f
-	ld a, [hli]
-	cp $a
-	jr nz, .asm_118e0f
-
-.asm_118e1d
-	ld a, l
-	ld [wcd39], a
-	ld a, h
-	ld [wcd3a], a
-.asm_118e25
-	call Function118b9a
-	ret nc
-	ld a, [hli]
-	cp $d
-	jr nz, .asm_118e25
-	ld a, [hli]
-	cp $a
-	jr nz, .asm_118e25
-	dec hl
-	xor a
-	ld [hld], a
-	ld [hl], a
-	jr asm_118e3e
-
-Function118e39: ; 118e39 (46:4e39)
-.asm_118e39
-	ld a, [hli]
-	and a
-	jr nz, .asm_118e39
-	dec hl
-asm_118e3e
-.asm_118e3e
-	ld a, [hld]
-	cp $2f
-	jr nz, .asm_118e3e
-rept 2
-	inc hl
-endr
-	ld de, wcd85
-	ld c, $4
-.asm_118e4a
-	ld a, [hli]
-	cp $2e
-	jr z, .asm_118e63
-	cp $30
-	jr c, .asm_118e67
-	cp $3a
-	jr nc, .asm_118e67
-	sub $30
-	add $f6
-	ld [de], a
-	inc de
-	dec c
-	jr nz, .asm_118e4a
-	ld de, wcd85
-.asm_118e63
-	ld a, $50
-	ld [de], a
-	ret
-.asm_118e67
-	ld a, $f3
-	ld [de], a
-	inc de
-	jr .asm_118e63
-
-Function118e6d: ; 118e6d (46:4e6d)
-	xor a
-	ld [wcd65], a
-	ld a, $a
-	jp Function119e2b
-
-Function118e76: ; 118e76 (46:4e76)
-	ld a, $c
-	ld [wcd3c], a
-	jp Function119e2e
-
-Function118e7e: ; 118e7e (46:4e7e)
-	call Function119ed8
-	ret c
-	ld a, $36
-	jp Function119e2b
-
-Function118e87: ; 118e87 (46:4e87)
-	call Function119ed8
-	ret c
-	ld a, [wcd33]
-	ld [wcf66], a
-	ret
-; 118e92 (46:4e92)
-
-Function118e92: ; 118e92
-	call Function118440
-	call Function1191d3
-	ld a, [wcd53]
-	ld l, a
-	ld a, [wcd54]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld de, $d800
-	ld bc, $0800
-	jp Function118b10
-; 118eb0
-
-Function118eb0: ; 118eb0
-	call Function118440
-	ld hl, $d802
-	ld de, BGMapBuffer
-	ld bc, $000c
-	call CopyBytes
-	call Function1192cc
-	ret c
-	jp Function119e2e
-; 118ec6
-
-Function118ec6: ; 118ec6
-	call Function118440
-	call SpeechTextBox
-	ld hl, $d80e
-	ld de, wPartyMonMenuIconAnims + 12
-	ld bc, $0026
-	call CopyBytes
-	xor a
-	ld [wPartyMonMenuIconAnims + 11], a
-	ld a, $20
-	ld [wPartyMonMenuIconAnims + 7], a
-	ld a, $c3
-	ld [wPartyMonMenuIconAnims + 8], a
-	hlcoord 1, 14
-	ld a, l
-	ld [wPartyMonMenuIconAnims + 9], a
-	ld a, h
-	ld [wPartyMonMenuIconAnims + 10], a
-	ld a, $2
-	ld [wPartyMonMenuIconAnims + 6], a
-	ld a, $1d
-	ld [wcd3c], a
-	ld a, $24
-	ld [wcd45], a
-	ld a, $11
-	ld [wcd46], a
-	ld a, $1c
-	ld [wcd47], a
-	jp Function119e2e
-; 118f0d
-
-Function118f0d: ; 118f0d
-	call Function119ed8
-	ret c
-	call Function118440
-
-Function118f14:
-	call Function118440
-	ld a, [wcd51]
-	ld l, a
-	ld a, [wcd52]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld a, [wcc60]
-	and a
-	jr z, .asm_118f32
-	ld hl, UnknownText_0x11aa13
-	call Function11a9c0
-
-.asm_118f32
-	ld a, [wcd57]
-	ld l, a
-	ld a, [wcd58]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld hl, wcc60
-	call Function118e39
-	ld a, $9
-	ld [wcd3c], a
-	ld a, $24
-	ld [wcd45], a
-	ld a, $13
-	ld [wcd46], a
-	ld a, $1c
-	ld [wcd47], a
-	jp Function119e2e
-; 118f5e
-
-Function118f5e: ; 118f5e
-	call Function119ed8
-	ret c
-	call Function118440
-	call DelayFrame
-
-Function118f68:
-	call Function119223
-	ret c
-	call Function118440
-	ld a, [wcd51]
-	ld l, a
-	ld a, [wcd52]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld a, [wcc60]
-	and a
-	jr z, .asm_118fba
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld a, $c608 % $100
-	ld [hli], a
-	ld a, $c608 / $100
-	ld [hli], a
-	ld a, [wcd4b]
-	ld [hli], a
-	ld a, [wcd4c]
-	ld [hli], a
-	ld a, wc708 % $100
-	ld [hli], a
-	ld a, wc708 / $100
-	ld [hli], a
-	ld a, $60
-	ld [hli], a
-	ld a, $cc
-	ld [hli], a
-	call Function119eb4
-	call Function119ec2
-	ld a, $40
-	ld [wcd89], a
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld de, $de00
-	ld bc, $0200
-	ld a, $2c
-	jp Function119e2b
-
-.asm_118fba
-	call Function119e2e
-	jp Function119e2e
-; 118fc0
-
-Function118fc0: ; 118fc0
-	call Function118440
-	ld a, [wcd55]
-	ld l, a
-	ld a, [wcd56]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld a, [wcc60]
-	and a
-	jr z, .asm_118ffa
-	ld a, [wcd51]
-	ld l, a
-	ld a, [wcd52]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld a, [wcc60]
-	and a
-	jr z, .asm_118ff2
-	ld hl, UnknownText_0x11aa2c
-	jr .asm_118ff5
-
-.asm_118ff2
-	ld hl, UnknownText_0x11aa4b
-
-.asm_118ff5
-	call Function11a9c0
-	jr Function119009
-
-.asm_118ffa
-	ld hl, UnknownText_0x11aa4b
-	call Function11a9c0
-	call Function119e2e
-	call Function119e2e
-	jp Function119e2e
-
-Function119009:
-	call Function118440
-	call Function119300
-	ld a, [wcd55]
-	ld l, a
-	ld a, [wcd56]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld a, $8
-	ld [hli], a
-	ld a, $c6
-	ld [hli], a
-	ld a, [wcd4b]
-	ld [hli], a
-	ld a, [wcd4c]
-	ld [hli], a
-	ld a, $8
-	ld [hli], a
-	ld a, $c7
-	ld [hli], a
-	ld a, $60
-	ld [hli], a
-	ld a, $cc
-	ld [hli], a
-	call Function119eb4
-	call Function119ec2
-	ld a, $40
-	ld [wcd89], a
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld de, Unkn1Pals
-	ld bc, $1000
-	ld a, $2c
-	jp Function119e2b
-; 119054
-
-Function119054: ; 119054
-	ld a, $6
-	call GetSRAMBank
-	ld hl, DefaultFlypoint
-	ld a, [wcd4f]
-	ld e, a
-	ld a, [wcd50]
-	ld d, a
-	ld a, [Unkn1Pals]
-	ld c, a
-	ld a, [wd001]
-	ld b, a
-	call Function119192
-	ret c
-	ld a, [wcd89]
-	and $1
-	jr z, .asm_11908a
-	ld a, $6
-	ld [rSVBK], a
-	ld hl, DefaultFlypoint
-	ld a, [Unkn1Pals]
-	ld c, a
-	ld a, [wd001]
-	ld b, a
-	call Function119192
-	ret c
-
-.asm_11908a
-	call CloseSRAM
-	ld a, $3
-	ld [rSVBK], a
-	ld a, $5
-	call GetSRAMBank
-	ld a, [wcd4f]
-	ld [$b1b3], a
-	ld a, [wcd50]
-	ld [$b1b4], a
-	ld hl, BGMapBuffer
-	ld de, $aa7f
-	ld bc, $000c
-	call CopyBytes
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, [wd474]
-	ld [$b2f3], a
-	ld hl, wd475
-	ld de, $b2f4
-	ld bc, $0004
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	call CloseSRAM
-	jp Function119e2e
-; 1190d0
-
-Function1190d0: ; 1190d0
-	ld a, $3
-	ld [rSVBK], a
-	ld a, [wcd57]
-	ld l, a
-	ld a, [wcd58]
-	ld h, a
-	ld de, wcc60
-	call Function1191ad
-	ret c
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jp Function118b10
-; 1190ec
-
-Function1190ec: ; 1190ec
-	ld a, $5
-	call GetSRAMBank
-	ld hl, BGMapBuffer
-	ld de, $aa73
-	ld bc, $000c
-	call CopyBytes
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	ld a, $1
-	ld [$aa72], a
-	call CloseSRAM
-	ld a, $6
-	call GetSRAMBank
-	ld a, [Unkn1Pals]
-	ld c, a
-	ld a, [wd001]
-	ld b, a
-	ld hl, DefaultFlypoint
-	ld de, $a000
-	call Function119192
-	ret c
-	ld a, [wcd89]
-	and $1
-	jr z, .asm_11913e
-	ld a, $6
-	ld [rSVBK], a
-	ld a, [Unkn1Pals]
-	ld c, a
-	ld a, [wd001]
-	ld b, a
-	ld hl, DefaultFlypoint
-	call Function119192
-	ret c
-
-.asm_11913e
-	ld a, $3
-	ld [rSVBK], a
-	call CloseSRAM
-	ld hl, UnknownText_0x11aa5a
-	call Function11a9c0
-	jp Function119e2e
-; 11914e
-
-Function11914e: ; 11914e
-	call Function119ed8
-	ret c
-	ld a, $1c
-	ld [wcf66], a
-	ld a, $a
-	ld [wc300], a
-	ret
-; 11915d
-
-Function11915d: ; 11915d
-	ld hl, $d802
-	ld de, BGMapBuffer
-	ld bc, $000c
-	call CopyBytes
-	ld a, $5
-	call GetSRAMBank
-	ld hl, BGMapBuffer
-	ld de, $aa7f
-	ld c, $c
-.asm_119176
-	ld a, [de]
-	inc de
-	cp [hl]
-	jr nz, .asm_119184
-	inc hl
-	dec c
-	jr nz, .asm_119176
-	call Function119e2e
-	jr .asm_11918e
-
-.asm_119184
-	ld a, $16
-	ld [wcf66], a
-	ld a, $b
-	ld [wc300], a
-
-.asm_11918e
-	call CloseSRAM
-	ret
-; 119192
-
-Function119192: ; 119192
-	inc b
-	inc c
-	jr .asm_11919e
-
-.asm_119196
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, $bf
-	cp d
-	jr c, .asm_1191a6
-
-.asm_11919e
-	dec c
-	jr nz, .asm_119196
-	dec b
-	jr nz, .asm_119196
-	and a
-	ret
-
-.asm_1191a6
-	ld a, $d3
-	call Function118805
-	scf
-	ret
-; 1191ad
-
-Function1191ad: ; 1191ad
-	push bc
-	ld c, $0
-	ld a, $5
-	ld [rSVBK], a
-.asm_1191b4
-	ld a, [hli]
-	ld [de], a
-	inc de
-	and a
-	jr z, .asm_1191cc
-	inc c
-	ld a, c
-	cp $a6
-	jr c, .asm_1191b4
-	ld a, $da
-	call Function118805
-	ld a, $3
-	ld [rSVBK], a
-	pop bc
-	scf
-	ret
-
-.asm_1191cc
-	ld a, $3
-	ld [rSVBK], a
-	pop bc
-	and a
-	ret
-; 1191d3
-
-Function1191d3: ; 1191d3
-	ld hl, wd102
-	ld a, l
-	ld [wcd53], a
-	ld a, h
-	ld [wcd54], a
-	call Function11920f
-	ld a, l
-	ld [wcd51], a
-	ld a, [wcd4a]
-	ld a, h
-	ld [wcd52], a
-	call Function11920f
-	ld a, l
-	ld [wcd55], a
-	ld a, [wcd4a]
-	ld a, h
-	ld [wcd56], a
-	call Function11920f
-	ld a, [wcd49]
-	ld a, l
-	ld [wcd57], a
-	ld a, [wcd4a]
-	ld a, h
-	ld [wcd58], a
-	call Function11920f
-	ret
-; 11920f
-
-Function11920f: ; 11920f
-.asm_11920f
-	call Function118b9a
-	ret nc
-	ld a, [hli]
-	cp $d
-	jr nz, .asm_11920f
-	ld a, [hli]
-	cp $a
-	jr nz, .asm_11920f
-	dec hl
-	xor a
-	ld [hld], a
-	ld [hli], a
-	inc hl
-	ret
-; 119223
-
-Function119223: ; 119223
-	xor a
-	ld [wcd4b], a
-	ld [wcd4c], a
-	ld a, $5
-	call GetSRAMBank
-	ld hl, wc3cd
-	ld de, $b092
-	ld bc, $001f
-	call CopyBytes
-	dec de
-	xor a
-	ld [de], a
-	ld hl, $d810
-.asm_119241
-	ld a, [hli]
-	cp $50
-	jr nz, .asm_119241
-	ld a, [hli]
-	ld [wcd4f], a
-	ld a, [hli]
-	ld [wcd50], a
-	ld a, [hli]
-	ld [$b1b1], a
-	ld c, a
-	ld a, [hli]
-	ld [$b1b2], a
-	ld b, a
-	ld de, $b1d3
-	call CopyBytes
-	call CloseSRAM
-	ld e, l
-	ld d, h
-	ld hl, $c608
-.asm_119266
-	ld a, [de]
-	inc de
-	cp $ff
-	jr z, .asm_1192c2
-	cp $fe
-	jr z, .asm_1192a5
-	call GetSRAMBank
-	ld a, [de]
-	inc de
-	ld c, a
-	ld a, [de]
-	inc de
-	ld b, a
-	ld a, [de]
-	inc de
-	push de
-	push af
-	ld a, [wcd4b]
-	ld e, a
-	ld a, [wcd4c]
-	ld d, a
-	pop af
-.asm_119286
-	push af
-	ld a, [bc]
-	inc bc
-	ld [hli], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_119286
-	call CloseSRAM
-	ld a, e
-	ld [wcd4b], a
-	ld a, d
-	ld [wcd4c], a
-	pop de
-.asm_11929b
-	and a
-	jr z, .asm_119266
-	ld a, $d3
-	call Function118805
-	scf
-	ret
-
-.asm_1192a5
-	ld a, [wcd4b]
-	ld c, a
-	ld a, [wcd4c]
-	ld b, a
-	ld a, [de]
-	inc de
-.asm_1192af
-	push af
-	ld a, [de]
-	inc de
-	ld [hli], a
-	inc bc
-	pop af
-	dec a
-	jr nz, .asm_1192af
-	ld a, c
-	ld [wcd4b], a
-	ld a, b
-	ld [wcd4c], a
-	jr .asm_11929b
-
-.asm_1192c2
-	ld a, e
-	ld [wcd4d], a
-	ld a, d
-	ld [wcd4e], a
-	and a
-	ret
-; 1192cc
-
-Function1192cc: ; 1192cc
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $aa73
-	ld de, $c608
-	ld bc, $000c
-	call CopyBytes
-	call CloseSRAM
-	ld hl, $c608
-	ld de, BGMapBuffer
-	ld c, $c
-.asm_1192e8
-	ld a, [de]
-	inc de
-	ld b, a
-	ld a, [hli]
-	cp b
-	jr nz, .asm_1192fe
-	dec c
-	jr nz, .asm_1192e8
-	ld a, $1f
-	ld [wcd3c], a
-	ld a, $27
-	ld [wcf66], a
-	scf
-	ret
-
-.asm_1192fe
-	and a
-	ret
-; 119300
-
-Function119300: ; 119300
-	xor a
-	ld [wcd4b], a
-	ld [wcd4c], a
-	ld a, [wcd4d]
-	ld e, a
-	ld a, [wcd4e]
-	ld d, a
-	ld hl, $c608
-	ld a, [wcd4b]
-	ld c, a
-	ld a, [wcd4c]
-	ld b, a
-.asm_11931a
-	ld a, [de]
-	inc de
-	cp $50
-	jr z, .asm_119324
-	ld [hli], a
-	inc bc
-	jr .asm_11931a
-
-.asm_119324
-	ld a, $3d
-	ld [hli], a
-	inc bc
-	ld a, c
-	ld [wcd4b], a
-	ld a, b
-	ld [wcd4c], a
-	ld a, [de]
-	inc de
-	call GetSRAMBank
-	ld a, [de]
-	inc de
-	ld c, a
-	ld a, [de]
-	inc de
-	ld b, a
-	ld a, [de]
-	inc de
-	push de
-	push af
-	ld a, [wcd4b]
-	ld e, a
-	ld a, [wcd4c]
-	ld d, a
-	pop af
-.asm_119348
-	push af
-	ld a, [bc]
-	and $f0
-	swap a
-	call Function1197bf
-	ld [hli], a
-	inc de
-	ld a, [bc]
-	inc bc
-	and $f
-	call Function1197bf
-	ld [hli], a
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_119348
-	call CloseSRAM
-	ld a, e
-	ld [wcd4b], a
-	ld a, d
-	ld [wcd4c], a
-	pop de
-	ld a, [de]
-	cp $50
-	jr z, .asm_11937f
-	ld a, [wcd4b]
-	ld c, a
-	ld a, [wcd4c]
-	ld b, a
-	ld a, $26
-	ld [hli], a
-	inc bc
-	jr .asm_11931a
-
-.asm_11937f
-	ret
-; 119380
-
-Function119380: ; 119380
-	ld a, $80
-	ld [wcd49], a
-	jp Function119e2e
-; 119388
-
-Function119388: ; 119388
-	ld hl, wcd49
-	dec [hl]
-	ret nz
-	ld hl, wcc60
-	call Function118e39
-	ld a, $9
-	ld [wcd3c], a
-	ld a, $10
-	ld [wcd45], a
-	call Function119e2e
-
-Function1193a0:
-	call Function119ed8
-	ret c
-	call DelayFrame
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld a, wd000 % $100
-	ld [hli], a
-	ld a, wd000 / $100
-	ld [hli], a
-	ld a, [wcd3b]
-	ld [hli], a
-	xor a
-	ld [hli], a
-	ld a, wc708 % $100
-	ld [hli], a
-	ld a, wc708 / $100
-	ld [hli], a
-	ld a, $60
-	ld [hli], a
-	ld a, $cc
-	ld [hli], a
-	call Function119eb4
-	call Function119ec2
-	ld a, $40
-	ld [wcd89], a
-	ld hl, wPartyMonMenuIconAnims + 48 + 2
-	ld de, $de00
-	ld bc, $0200
-	ld a, $2c
-	jp Function119e2b
-; 1193e3
-
-Function1193e3: ; 1193e3
-	ld hl, wcd49
-	dec [hl]
-	ret nz
-	ld hl, wcc60
-	call Function118e39
-	ld a, $9
-	ld [wcd3c], a
-	ld a, $11
-	ld [wcd45], a
-	call Function119e2e
-
-Function1193fb:
-	call Function119ed8
-	ret c
-	call DelayFrame
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	ld de, Unkn1Pals
-	ld bc, $1000
-	jp Function118b10
-; 119413
-
-Function119413: ; 119413
-	ld a, $6
-	call GetSRAMBank
-	ld a, [Unkn1Pals]
-	ld c, a
-	ld a, [wd001]
-	ld b, a
-rept 2
-	dec bc
-endr
-	ld hl, wd002
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	call Function119192
-	ret c
-	ld a, [wcd89]
-	and $1
-	jr z, .asm_119447
-	ld a, $6
-	ld [rSVBK], a
-	ld a, [wd000]
-	ld c, a
-	ld a, [wd001]
-	ld b, a
-	ld hl, wd002
-	call Function119192
-	ret c
-
-.asm_119447
-	ld a, $3
-	ld [rSVBK], a
-	call CloseSRAM
-	jp Function119e2e
-; 119451
-
-Function119451: ; 119451 (46:5451)
-	ld a, [wcd89]
-	and $1
-	jr z, .asm_11945d
-	ld a, $d3
-	jp Function118805
-.asm_11945d
-	xor a
-	ld [wcd50], a
-	call Function119694
-	ld a, b
-	ld [wcd49], a
-	call Function1196cd
-	ld a, [DefaultFlypoint]
-	ld hl, wd003
-
-Function119471: ; 119471 (46:5471)
-	push af
-	ld a, [hli]
-	ld [$c608], a
-	ld a, [hli]
-	ld [$c608 + 3], a
-	ld a, [hli]
-	ld [$c608 + 1], a
-	ld a, [hli]
-	ld [$c608 + 2], a
-	ld a, [hli]
-	ld [$c608 + 4], a
-	ld a, [hli]
-	ld [$c608 + 5], a ; $c608 + 5
-	push hl
-	ld a, [$c608]
-	cp $ff
-	jr z, .asm_1194a7
-	ld a, [$c608 + 2]
-	cp $ff
-	jr z, .asm_1194a7
-	ld a, [$c608 + 1]
-	cp $ff
-	jr nz, .asm_1194a7
-	call Function119584
-	jr c, .asm_11950c
-	jr .asm_1194f0
-.asm_1194a7
-	ld hl, $c608
-	ld de, $c608 + 3
-	ld c, $3
-.asm_1194af
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr c, .asm_1194f3
-	jr z, .asm_1194b9
-	jr nc, .asm_1194bc
-.asm_1194b9
-	dec c
-	jr nz, .asm_1194af
-.asm_1194bc
-	ld c, $3
-	ld hl, wcd49
-	ld de, $c608
-.asm_1194c4
-	ld a, [de]
-	inc de
-	cp $ff
-	jr z, .asm_1194d1
-	cp [hl]
-	jr z, .asm_1194d1
-	jr c, .asm_1194d5
-	jr nc, .asm_1194f0
-.asm_1194d1
-	inc hl
-	dec c
-	jr nz, .asm_1194c4
-.asm_1194d5
-	ld c, $3
-	ld hl, wcd49
-	ld de, $c608 + 3
-.asm_1194dd
-	ld a, [de]
-	inc de
-	cp $ff
-	jr z, .asm_1194ea
-	cp [hl]
-	jr c, .asm_1194f0
-	jr z, .asm_1194ea
-	jr nc, .asm_11950c
-.asm_1194ea
-	inc hl
-	dec c
-	jr nz, .asm_1194dd
-	jr .asm_11950c
-.asm_1194f0
-	pop hl
-	jr .asm_119557
-.asm_1194f3
-	ld c, $3
-	ld hl, wcd49
-	ld de, $c608
-.asm_1194fb
-	ld a, [de]
-	inc de
-	cp $ff
-	jr z, .asm_119508
-	cp [hl]
-	jr c, .asm_11950c
-	jr z, .asm_119508
-	jr nc, .asm_1194d5
-.asm_119508
-	inc hl
-	dec c
-	jr nz, .asm_1194fb
-.asm_11950c
-	pop hl
-	ld a, $1
-	ld [wcd50], a
-	ld a, l
-	ld [$c608], a
-	ld a, h
-	ld [$c608 + 1], a
-	ld de, wcd69
-	ld c, $10
-	ld b, $0
-.asm_119521
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr nz, .asm_119528
-	inc b
-.asm_119528
-	dec c
-	jr nz, .asm_119521
-	ld a, $10
-	cp b
-	jr z, .asm_119536
-rept 4
-	inc hl
-endr
-	jr .asm_11957a
-.asm_119536
-	ld a, [hli]
-	cp $50
-	jr nz, .asm_119552
-	ld a, [hli]
-	cp $33
-	jr nz, .asm_119553
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld a, [wcd83]
-	cp c
-	jr nz, .asm_119576
-	ld a, [wcd84]
-	cp b
-	jr nz, .asm_119576
-	jr .asm_11955b
-.asm_119552
-	inc hl
-.asm_119553
-rept 2
-	inc hl
-endr
-	jr .asm_11955b
-.asm_119557
-	ld de, $14
-	add hl, de
-.asm_11955b
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	add hl, de
-	pop af
-	dec a
-	jp nz, Function119471
-	ld a, [wcd50]
-	and a
-	jr z, .asm_119571
-	ld a, $1a
-	ld [wcf66], a
-	ret
-.asm_119571
-	ld a, $d8
-	jp Function118805
-.asm_119576
-	ld a, $10
-	jr .asm_11957c
-.asm_11957a
-	ld a, $f
-.asm_11957c
-	ld [wcf66], a
-	pop af
-	call Function1195c4
-	ret
-
-Function119584: ; 119584 (46:5584)
-	ld a, [$c608]
-	ld b, a
-	ld a, [$c608 + 3]
-	ld c, a
-	cp b
-	jr c, .asm_11959c
-	ld a, [wcd49]
-	cp b
-	jr c, .asm_1195c2
-.asm_119595
-	cp c
-	jr c, .asm_1195a2
-	jr z, .asm_1195a2
-	jr .asm_1195c2
-.asm_11959c
-	ld a, [wcd49]
-	cp b
-	jr c, .asm_119595
-.asm_1195a2
-	ld a, [$c608 + 2]
-	ld b, a
-	ld a, [$c608 + 5] ; $c608 + 5
-	ld c, a
-	cp b
-	jr c, .asm_1195ba
-	ld a, [wcd4b]
-	cp b
-	jr c, .asm_1195c2
-.asm_1195b3
-	cp c
-	jr c, .asm_1195c0
-	jr z, .asm_1195c0
-	jr .asm_1195c2
-.asm_1195ba
-	ld a, [wcd4b]
-	cp b
-	jr c, .asm_1195b3
-.asm_1195c0
-	scf
-	ret
-.asm_1195c2
-	and a
-	ret
-
-Function1195c4: ; 1195c4 (46:55c4)
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld de, $a5
-	ld a, b
-	cp d
-	jr c, .asm_1195d9
-	jr z, .asm_1195d3
-	jr nc, .asm_1195f3
-.asm_1195d3
-	ld a, c
-	cp e
-	jr z, .asm_1195d9
-	jr nc, .asm_1195f3
-.asm_1195d9
-	ld de, wcc60
-	call CopyBytes
-	xor a
-	ld [de], a
-	ld a, [$c608]
-	ld l, a
-	ld a, [$c608 + 1]
-	ld h, a
-	ld de, wcd69
-	ld bc, $10
-	call CopyBytes
-	ret
-.asm_1195f3
-	ld a, $d8
-	jp Function118805
-
-Function1195f8: ; 1195f8 (46:55f8)
-	ld a, $11
-	ld [wcd3c], a
-	ld a, $1c
-	ld [wcd45], a
-	ld a, $f
-	ld [wcd46], a
-	ld a, $14
-	ld [wcd47], a
-	call Function119e2e
-	jp Function119e2e
-
-Function119612: ; 119612 (46:5612)
-	ld a, $14
-	ld [wcd3c], a
-	ld a, $1c
-	ld [wcd45], a
-	ld a, $10
-	ld [wcd46], a
-	ld a, $14
-	ld [wcd47], a
-	jp Function119e2e
-
-Function119629: ; 119629 (46:5629)
-	call Function119ed8
-	ret c
-	ld a, $60
-	ld l, a
-	ld a, $cc
-	ld h, a
-	call Function118e39
-	ld a, $9
-	ld [wcd3c], a
-	ld a, $1c
-	ld [wcd45], a
-	ld a, $14
-	ld [wcd47], a
-	call Function119e2e
-
-Function119648: ; 119648 (46:5648)
-	call Function119ed8
-	ret c
-	call DelayFrame
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	call Function118b24
-	ld de, Unkn1Pals
-	ld bc, $1000
-	ld a, $2a
-	jp Function119e2b
-
-Function119665: ; 119665 (46:5665)
-	ld a, $1a
-	ld [wcd3c], a
-	call Function119e2e
-
-Function11966d: ; 11966d (46:566d)
-	call Function119ed8
-	ret c
-	ld a, [wcd47]
-	ld [wcf66], a
-	ld a, $a
-	ld [wc300], a
-	ret
-
-Function11967d: ; 11967d (46:567d)
-	ld a, $18
-	ld [wcd3c], a
-	call Function119e2e
-
-Function119685: ; 119685 (46:5685)
-	call Function119ed8
-	ret c
-	ld a, $14
-	ld [wcf66], a
-	ld a, $a
-	ld [wc300], a
-	ret
-
-Function119694: ; 119694 (46:5694)
-	ld b, 0
-	ld hl, Unknown_1196b8
-.asm_119699
-	ld de, wc708
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr nz, .asm_1196af
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr nz, .asm_1196b0
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr nz, .asm_1196b1
-	ret
-.asm_1196af
-	inc hl
-.asm_1196b0
-	inc hl
-.asm_1196b1
-	inc b
-	ld a, b
-	cp $7
-	jr nz, .asm_119699
-	ret
-; 1196b8 (46:56b8)
-
-Unknown_1196b8: ; 1196b8
-	db "Mon"
-	db "Tue"
-	db "Wed"
-	db "Thu"
-	db "Fri"
-	db "Sat"
-	db "Sun"
-; 1196cd
-
-SECTION "bank46_2", ROMX, BANK[$46]
-; A hack to use ascii above.
-
-Function1196cd: ; 1196cd (46:56cd)
-	ld de, wc719
-	call Function1196de
-	ld [wcd4a], a
-	inc de
-	call Function1196de
-	ld [wcd4b], a
-	ret
-
-Function1196de: ; 1196de (46:56de)
-	ld a, [de]
-	inc de
-	sub $30
-	sla a
-	ld b, a
-	sla a
-	sla a
-	add b
-	ld c, a
-	add hl, bc
-	ld a, [de]
-	inc de
-	sub $30
-	add c
-	ret
-; 1196f2 (46:56f2)
-
-Function1196f2: ; 1196f2
-	ld hl, DefaultFlypoint
-.asm_1196f5
-	call Function118b9a
-	ret nc
-	ld a, [hli]
-	cp $d
-	jr nz, .asm_1196f5
-	ld a, [hl]
-	cp $a
-	jr nz, .asm_1196f5
-	xor a
-	ld [hld], a
-	ld [hli], a
-	ld a, l
-	ld [wcd5b], a
-	ld a, h
-	ld [wcd5c], a
-	inc hl
-	ld e, l
-	ld d, h
-	ld a, [de]
-	inc de
-	cp $d
-	jr nz, .asm_119722
-	ld a, [de]
-	inc de
-	cp $a
-	jr nz, .asm_119722
-	ld a, $b
-	jp Function118805
-
-.asm_119722
-	call Random
-	ld c, $0
-	ld b, c
-.asm_119728
-	call Function119798
-	ld a, d
-	cp $ff
-	jr nz, .asm_119735
-	ld a, e
-	cp $ff
-	jr z, .asm_11974c
-
-.asm_119735
-	ld a, [hRandomSub]
-	cp d
-	jr c, .asm_11974c
-	jr z, .asm_11973e
-	jr .asm_119745
-
-.asm_11973e
-	ld a, [hRandomAdd]
-	cp e
-	jr c, .asm_11974c
-	jr z, .asm_11974c
-
-.asm_119745
-	inc bc
-	ld a, c
-	or b
-	jr z, .asm_119770
-	jr .asm_119728
-
-.asm_11974c
-	ld a, [wcd5b]
-	ld l, a
-	ld a, [wcd5c]
-	ld h, a
-.asm_119754
-	ld a, [hld]
-	cp $58
-	jr nz, .asm_119754
-	ld d, $0
-.asm_11975b
-	inc d
-	ld a, [hld]
-	cp $58
-	jr z, .asm_11975b
-rept 2
-	inc hl
-endr
-	ld a, d
-	dec a
-	jr z, .asm_11978e
-	dec a
-	jr z, .asm_119785
-	dec a
-	jr z, .asm_11977e
-	dec a
-	jr z, .asm_119775
-
-.asm_119770
-	ld a, $d3
-	jp Function118805
-
-.asm_119775
-	ld a, b
-	and $f0
-	swap a
-	call Function1197bf
-	ld [hli], a
-
-.asm_11977e
-	ld a, b
-	and $f
-	call Function1197bf
-	ld [hli], a
-
-.asm_119785
-	ld a, c
-	and $f0
-	swap a
-	call Function1197bf
-	ld [hli], a
-
-.asm_11978e
-	ld a, c
-	and $f
-	call Function1197bf
-	ld [hli], a
-	jp Function119e2e
-; 119798
-
-Function119798: ; 119798
-	ld d, $0
-	ld e, d
-	call Function1197b4
-	swap a
-	or d
-	ld d, a
-	call Function1197b4
-	or d
-	ld d, a
-	call Function1197b4
-	swap a
-	or e
-	ld e, a
-	call Function1197b4
-	or e
-	ld e, a
-	ret
-; 1197b4
-
-Function1197b4: ; 1197b4
-	ld a, [hli]
-	cp $61
-	jr nc, .asm_1197bc
-	sub $30
-	ret
-
-.asm_1197bc
-	sub $57
-	ret
-; 1197bf
-
-Function1197bf: ; 1197bf
-	cp $a
-	jr nc, .asm_1197c6
-	add $30
-	ret
-
-.asm_1197c6
-	add $57
-	ret
-; 1197c9
-
-Function1197c9: ; 1197c9
-	ld hl, DefaultFlypoint
-	call Function118e39
-	ld a, $9
-	ld [wcd3c], a
-	ld a, $12
-	ld [wcd45], a
-	call Function119e2e
-
-Function1197dc:
-	call Function119ed8
-	ret c
-	call DelayFrame
-	ld hl, DefaultFlypoint
-	ld de, wcc60
-	ld bc, $0080
-	call CopyBytes
-	dec de
-	xor a
-	ld [de], a
-	call Function118b24
-	ld de, Unkn1Pals
-	ld bc, $1000
-	ld a, $2a
-	jp Function119e2b
-; 119800
-
-Function119800: ; 119800
-	ld a, $fd
-	ld [$c6d0], a
-	ld [wc702], a
-	ld a, [wcd81]
-	ld [wc74e], a
-	ld a, [wJumptableIndex]
-	push af
-	ld a, [wcf64]
-	push af
-	ld a, [wcf65]
-	push af
-	ld a, [wcf66]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	call FadeToMenu
-	callba Function10803d
-	call Function11a9ce
-	call RestartMapMusic
-	ld a, $3
-	ld [rSVBK], a
-	pop af
-	ld [wcf66], a
-	pop af
-	ld [wcf65], a
-	pop af
-	ld [wcf64], a
-	pop af
-	ld [wJumptableIndex], a
-	callba Function115dc3
-	jp Function119e2e
-; 11984e
-
-Function11984e: ; 11984e
-	ld a, [wcd80]
-	and a
-	jr nz, .asm_1198a0
-	ld a, [wcd38]
-	and a
-	jr nz, .asm_1198a8
-	callba Function170000
-	ld a, [wJumptableIndex]
-	push af
-	ld a, [wcf64]
-	push af
-	ld a, [wcf65]
-	push af
-	ld a, [wcf66]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	call FadeToMenu
-	callba Function108000
-	call Function11a9ce
-	call RestartMapMusic
-	ld a, $3
-	ld [rSVBK], a
-	pop af
-	ld [wcf66], a
-	pop af
-	ld [wcf65], a
-	pop af
-	ld [wcf64], a
-	pop af
-	ld [wJumptableIndex], a
-	callba Function115dc3
-	jp Function119e2e
-
-.asm_1198a0
-	ld a, $a
-	ld [wc300], a
-	jp Function119e2e
-
-.asm_1198a8
-	callba Function17005a
-	ld a, [wJumptableIndex]
-	push af
-	ld a, [wcf64]
-	push af
-	ld a, [wcf65]
-	push af
-	ld a, [wcf66]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	call FadeToMenu
-	callba Function108012
-	call Function11a9ce
-	call RestartMapMusic
-	ld a, $3
-	ld [rSVBK], a
-	pop af
-	ld [wcf66], a
-	pop af
-	ld [wcf65], a
-	pop af
-	ld [wcf64], a
-	pop af
-	ld [wJumptableIndex], a
-	callba Function115dc3
-	jp Function119e2e
-; 1198ee
-
-Function1198ee: ; 1198ee
-	ld hl, UnknownText_0x11aab2
-	call Function11a9c0
-	call Function119e2e
-
-Function1198f7:
-	ld a, [wPartyMonMenuIconAnims + 6]
-	and a
-	ret nz
-	ld hl, $c608 + 2
-	call Function119940
-	ld hl, $d800
-	ld a, $c608 % $100
-	ld [hli], a
-	ld a, $c608 / $100
-	ld [hli], a
-	ld a, $f6
-	ld [hli], a
-	xor a
-	ld [hli], a
-	ld a, wc708 % $100
-	ld [hli], a
-	ld a, wc708 / $100
-	ld [hli], a
-	ld a, [wcd51]
-	ld [hli], a
-	ld a, [wcd52]
-	ld [hli], a
-	call Function119eb4
-	call Function119ec2
-	ld a, $40
-	ld [wcd89], a
-	ld hl, $d800
-	ld de, $de00
-	ld bc, $0200
-	ld a, $2c
-	jp Function119e2b
-; 119937
-
-Function119937: ; 119937
-	callba Function1707f4
-	jp Function119e2e
-; 119940
-
-Function119940: ; 119940
-	ld de, wc3cd
-	ld c, $1e
-.asm_119945
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr z, .asm_119953
-	and a
-	jr nz, .asm_119945
-	xor a
-.asm_11994f
-	ld [hli], a
-	dec c
-	jr nz, .asm_11994f
-
-.asm_119953
-	ret
-; 119954
-
-Function119954: ; 119954
-	ld a, $1c
-	ld [wcd3c], a
-	call Function119ed8
-	ld hl, $c608
-	ld de, wc3cd
-.asm_119962
-	ld a, [de]
-	inc de
-	ld [hli], a
-	and a
-	jr nz, .asm_119962
-	call Function119ec2
-	ld hl, $c608
-	ld a, $1e
-	jp Function119e2b
-; 119973
-
-Function119973: ; 119973
-	ld a, $1
-	ld [wcf64], a
-	xor a
-	ld [wcf65], a
-	ld [StringBuffer2 + 10], a
-	ld de, Unkn1Pals
-	ld a, $20
-	jp Function119e2b
-; 119987
-
-Function119987: ; 119987
-	ld hl, wd001
-	ld a, [Unkn1Pals]
-	or [hl]
-	jr z, .asm_1199a0
-	ld a, [wcf64]
-	ld l, a
-	ld a, [wcf65]
-	ld h, a
-	ld de, BGPals
-	ld a, $22
-	jp Function119e2b
-
-.asm_1199a0
-	ld a, [StringBuffer2 + 10]
-	and a
-	jr z, .asm_1199ae
-	ld a, $16
-	ld [wcf66], a
-	jp Function119b0d
-
-.asm_1199ae
-	ld a, $1b
-	ld [wcf66], a
-	ret
-; 1199b4
-
-Function1199b4: ; 1199b4
-	ld a, [wd000 + 130]
-	and a
-	jr nz, .asm_1199c7
-	ld a, [wd000 + 129]
-	cp $7
-	jr nc, .asm_1199c7
-	call Function119e2e
-	jp Function1199ca
-
-.asm_1199c7
-	jp Function119ac9
-; 1199ca
-
-Function1199ca: ; 1199ca
-	ld a, $20
-	ld [wcd89], a
-	ld a, [wcf64]
-	ld l, a
-	ld a, [wcf65]
-	ld h, a
-	ld de, LYOverrides
-	ld bc, $0700
-	ld a, $28
-	jp Function119e2b
-; 1199e2
-
-Function1199e2: ; 1199e2
-	ld c, $c
-	ld de, Unknown_119e33
-	call Function119e4f
-	jp c, Function119ac9
-	ld a, c
-	cp $1
-	jp nz, Function119ac9
-	ld hl, $d880
-	ld bc, Unknown_119af1
-.asm_1199f9
-	ld a, [bc]
-	and a
-	jr z, .asm_119a05
-	cp [hl]
-	jp nz, Function119ac9
-	inc bc
-	inc hl
-	jr .asm_1199f9
-
-.asm_119a05
-	ld c, $17
-	ld de, Unknown_119e40
-	call Function119e4f
-	jp c, .asm_119aa7
-	ld a, c
-	cp $1
-	jp nz, .asm_119aa7
-	ld a, [wd000 + $880]
-	cp $31
-	jp nz, .asm_119aa7
-	ld a, [wd000 + $881]
-	cp $20
-	jp nz, .asm_119aa7
-	ld a, [wd000 + $88a]
-	cp $20
-	jp nz, .asm_119aa7
-	ld a, [wd000 + $894]
-	cp $20
-	jp nz, .asm_119aa7
-	xor a
-	ld [wd000 + $8a0], a
-	ld [wd000 + $8a1], a
-	ld [wd000 + $8a2], a
-	ld [wd000 + $8a3], a
-	ld hl, $d8a0
-	ld bc, $d889
-	call Function119e98
-	call Function119e98
-	ld hl, $d8a0
-	ld a, [wcd2d]
-	cp [hl]
-	jr nz, Function119ac9
-	inc hl
-	ld a, [wcd2c]
-	cp [hl]
-	jr nz, Function119ac9
-	inc hl
-	ld a, [wcd2b]
-	cp [hl]
-	jr nz, Function119ac9
-	inc hl
-	ld a, [wcd2a]
-	cp [hl]
-	jr nz, Function119ac9
-	xor a
-	ld [wd000 + $8a0], a
-	ld [wd000 + $8a1], a
-	ld [wd000 + $8a2], a
-	ld [wd000 + $8a3], a
-	ld hl, $d8a0
-	ld bc, $d88e
-	call Function119e98
-	ld bc, $d893
-	call Function119e98
-	ld hl, $d8a0
-	ld a, [wcd2f]
-	cp [hl]
-	jr nz, .asm_119aa7
-	inc hl
-	ld a, [wcd2e]
-	cp [hl]
-	jr nz, .asm_119aa7
-	inc hl
-	ld a, [wcd31]
-	cp [hl]
-	jr nz, .asm_119aa7
-	inc hl
-	ld a, [wcd30]
-	cp [hl]
-	jr z, .asm_119aaf
-
-.asm_119aa7
-	ld a, $25
-	ld [wcf66], a
-	jp Function119b45
-
-.asm_119aaf
-	ld a, [StringBuffer2 + 10]
-	and a
-	jr nz, .asm_119aa7
-	ld a, [wd000 + $895]
-	sub $30
-	ld [StringBuffer2 + 10], a
-	ld a, [wcf64]
-	ld [StringBuffer2 + 11], a
-	ld a, [wcf65]
-	ld [StringBuffer2 + 12], a
-
-Function119ac9:
-	ld a, [Unkn1Pals]
-	ld l, a
-	ld a, [wd001]
-	ld h, a
-	dec hl
-	ld a, l
-	ld [Unkn1Pals], a
-	ld a, h
-	ld [wd001], a
-	ld a, [wcf64]
-	ld l, a
-	ld a, [wcf65]
-	ld h, a
-	inc hl
-	ld a, l
-	ld [wcf64], a
-	ld a, h
-	ld [wcf65], a
-	ld a, $10
-	ld [wcf66], a
-	ret
-; 119af1
-
-Unknown_119af1:
-	INCBIN "data/mobile/x-game-code.txt"
-	INCBIN "data/mobile/x-game-result.txt"
-; 119b0d
-
-Function119b0d: ; 119b0d
-	ld a, $8
-	ld [wcd3c], a
-	call Function119ed8
-	ld a, [StringBuffer2 + 10]
-	cp $1
-	jr z, .asm_119b23
-	ld a, $19
-	ld [wcf66], a
-	jr Function119b3b
-
-.asm_119b23
-	ld a, $10
-	ld [wcd89], a
-	ld a, [StringBuffer2 + 11]
-	ld l, a
-	ld a, [StringBuffer2 + 12]
-	ld h, a
-	ld de, LYOverrides
-	ld bc, $0700
-	ld a, $24
-	jp Function119e2b
-
-Function119b3b:
-	ld a, [StringBuffer2 + 11]
-	ld l, a
-	ld a, [StringBuffer2 + 12]
-	ld h, a
-	jr asm_119b4d
-
-Function119b45:
-	ld a, [wcf64]
-	ld l, a
-	ld a, [wcf65]
-	ld h, a
-
-asm_119b4d
-	ld a, $26
-	jp Function119e2b
-; 119b52
-
-Function119b52: ; 119b52
-	ld a, [StringBuffer2 + 10]
-	cp $1
-	jr nz, .asm_119b66
-	ld a, $5
-	call GetSRAMBank
-	ld a, $4
-	ld [$a800], a
-	call CloseSRAM
-
-.asm_119b66
-	ld a, $1c
-	jp Function119e2b
-; 119b6b
-
-Function119b6b: ; 119b6b
-	ld a, [StringBuffer2 + 10]
-	cp $1
-	jr z, .asm_119b75
-	jp Function119e2e
-
-.asm_119b75
-	ld a, [LYOverrides]
-	ld b, a
-	ld a, [wd101]
-	or b
-	jr z, .asm_119be3
-	ld hl, $d800
-	ld de, wd102
-.asm_119b85
-	ld a, [de]
-	inc de
-	cp $d
-	jr nz, .asm_119b85
-	inc de
-	ld a, [de]
-	cp $d
-	jr nz, .asm_119b85
-rept 2
-	inc de
-endr
-.asm_119b93
-	ld a, [de]
-	inc de
-	cp $d
-	jr z, .asm_119bfa
-	call Function119c3e
-	ret c
-	ld [hli], a
-	ld a, [de]
-	inc de
-	call Function119c3e
-	ret c
-	ld [hli], a
-	ld a, [de]
-	inc de
-	call Function119c3e
-	ret c
-	ld [hli], a
-	ld a, [de]
-	inc de
-	call Function119c3e
-	ret c
-	ld [hl], a
-	push de
-	ld d, [hl]
-	dec hl
-	ld c, [hl]
-	dec hl
-	ld b, [hl]
-	dec hl
-	ld a, [hl]
-	sla b
-	sla b
-	sla b
-	rla
-	sla b
-	rla
-	ld [hli], a
-	ld [hl], b
-	inc hl
-	rrc c
-	rrc c
-	ld [hl], c
-	dec hl
-	ld a, $f
-	and c
-	or [hl]
-	ld [hli], a
-	ld a, [hli]
-	and $c0
-	or [hl]
-	dec hl
-	ld [hld], a
-	dec hl
-	pop de
-rept 3
-	inc hl
-endr
-	ld a, h
-	cp $e0
-	jr c, .asm_119b93
-
-.asm_119be3
-	ld a, $19
-	ld [wcf66], a
-	ld a, $5
-	call GetSRAMBank
-	ld a, $1
-	ld [$a800], a
-	call CloseSRAM
-	xor a
-	ld [StringBuffer2 + 10], a
-	ret
-
-.asm_119bfa
-	inc de
-	ld a, [de]
-	cp $d
-	jr nz, .asm_119b93
-	ld a, l
-	cp (wd000 + $800 + $69) % $100
-	jr nz, .asm_119be3
-	ld a, h
-	cp (wd000 + $800 + $69) / $100
-	jr nz, .asm_119be3
-	ld a, $5
-	call GetSRAMBank
-	ld a, [wcf64]
-	ld [$b090], a
-	ld a, [wcf65]
-	ld [$b091], a
-	ld hl, $d800
-	ld de, $b023
-	ld bc, $0069
-	call CopyBytes
-	ld a, $3
-	ld [$a800], a
-	call CloseSRAM
-	ld hl, $d800
-	ld de, $c608
-	ld bc, $0069
-	call CopyBytes
-	jp Function119e2e
-; 119c3e
-
-Function119c3e: ; 119c3e
-	cp $2b
-	jr c, .asm_119c68
-	jr z, .asm_119c80
-	cp $2f
-	jr c, .asm_119c68
-	jr z, .asm_119c84
-	cp $30
-	jr c, .asm_119c68
-	cp $3a
-	jr c, .asm_119c88
-	cp $3d
-	jr c, .asm_119c68
-	jr z, .asm_119c8c
-	cp $41
-	jr c, .asm_119c68
-	cp $5b
-	jr c, .asm_119c8f
-	cp $61
-	jr c, .asm_119c68
-	cp $7b
-	jr c, .asm_119c93
-
-.asm_119c68
-	ld a, $19
-	ld [wcf66], a
-	ld a, $5
-	call GetSRAMBank
-	ld a, $1
-	ld [$a800], a
-	call CloseSRAM
-	xor a
-	ld [StringBuffer2 + 10], a
-	scf
-	ret
-
-.asm_119c80
-	ld a, $3e
-	and a
-	ret
-
-.asm_119c84
-	ld a, $3f
-	and a
-	ret
-
-.asm_119c88
-	add $4
-	and a
-	ret
-
-.asm_119c8c
-	xor a
-	and a
-	ret
-
-.asm_119c8f
-	sub $41
-	and a
-	ret
-
-.asm_119c93
-	sub $47
-	and a
-	ret
-; 119c97
-
-Function119c97: ; 119c97
-	ld hl, UnknownText_0x11ab0f
-	call Function11a9c0
-	call Function119e2e
-	jr Function119cab
-
-Function119ca2:
-	ld hl, UnknownText_0x11aaf0
-	call Function11a9c0
-	call Function119e2e
-
-Function119cab:
-	ld a, [wPartyMonMenuIconAnims + 6]
-	and a
-	ret nz
-	ld a, $80
-	ld [wcd50], a
-	call Function119e2e
-
-Function119cb8:
-	ld hl, wcd50
-	dec [hl]
-	ret nz
-	ld a, $0
-	ld [wcf66], a
-	ret
-; 119cc3
-
-Function119cc3: ; 119cc3
-	ld a, [wcd38]
-	and a
-	jr z, .asm_119cd1
-	dec a
-	jr z, .asm_119cd6
-	ld hl, UnknownText_0x11aa6a
-	jr .asm_119cd9
-
-.asm_119cd1
-	ld hl, UnknownText_0x11ab4a
-	jr .asm_119cd9
-
-.asm_119cd6
-	ld hl, UnknownText_0x11ab6e
-
-.asm_119cd9
-	call Function11a9c0
-	call Function119e2e
-
-Function119cdf:
-	ld a, [wPartyMonMenuIconAnims + 6]
-	and a
-	ret nz
-	ld a, $f
-	ld [wcd3c], a
-	call Function119e2e
-
-Function119cec:
-	call Function119ed8
-	ret c
-	ld a, [wcd46]
-	ld [wcf66], a
-	ret
-; 119cf7
-
-MenuDataHeader_119cf7: ; 119cf7
-	db $40 ; flags
-	db  7, 12 ; start coords
-	db 11, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 119cff
-
-MenuData_119cff: ; 119cff
-	db $40 ; flags
-	db  7, 15 ; start coords
-	db 11, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 119d07
-
-String_119d07:
-	db "   ▼@"
-
-Strings_L10ToL100: ; 119d0c
-	db " L:10 @@"
-	db " L:20 @@"
-	db " L:30 @@"
-	db " L:40 @@"
-	db " L:50 @@"
-	db " L:60 @@"
-	db " L:70 @@"
-	db " L:80 @@"
-	db " L:90 @@"
-	db " L:100@@"
-	db "CANCEL@@"
-
-Strings_Ll0ToL40: ; 119d64
-	db " L:10 @@"
-	db " L:20 @@"
-	db " L:30 @@"
-	db " L:40 @@"
-	db "CANCEL@@"
-
-String_119d8c:
-	db "CANCEL@"
-; 119d93
-
-Function119d93: ; 119d93 (46:5d93)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
-	ld a, [wcd4f]
-	ld c, 10
-	call SimpleMultiply
-	ld hl, wcd50
-	ld [hl], a
-	ld bc, PartyMon2 - PartyMon1
-	ld de, PartyMon1Level
-	ld a, [PartyCount]
-.asm_119daf
-	push af
-	ld a, [de]
-	push hl
-	push de
-	pop hl
-	add hl, bc
-	push hl
-	pop de
-	pop hl
-	cp [hl]
-	jr z, .asm_119dbd
-	jr nc, .asm_119dc6
-.asm_119dbd
-	pop af
-	dec a
-	jr nz, .asm_119daf
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	and a
-	ret
-.asm_119dc6
-	pop af
-	ld a, $4
-	ld [wcf66], a
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	scf
-	ret
-
-Function119dd1: ; 119dd1 (46:5dd1)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, [wcd4f]
-	cp 70 / 10
-	jr nc, .asm_119e08
-	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, PartyMon1Level
-	ld bc, PartyMon2 - PartyMon1
-	ld de, PartySpecies
-	ld a, [PartyCount]
-.asm_119deb
-	push af
-	ld a, [de]
-	cp MEWTWO
-	jr z, .asm_119dfd
-	cp MEW
-	jr z, .asm_119dfd
-	cp LUGIA
-	jr c, .asm_119e02
-	cp NUM_POKEMON + 1
-	jr nc, .asm_119e02
-.asm_119dfd
-	ld a, [hl]
-	cp 70
-	jr c, .asm_119e0d
-.asm_119e02
-	add hl, bc
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_119deb
-.asm_119e08
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	and a
-	ret
-.asm_119e0d
-	pop af
-	ld a, [de]
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-	ld de, wcd49
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-	ld a, $a
-	ld [wcf66], a
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	scf
-	ret
-; 119e2b (46:5e2b)
-
-Function119e2b: ; 119e2b (46:5e2b)
-	call Function3e32
-
-Function119e2e: ; 119e2e (46:5e2e)
-	ld hl, wcf66
-	inc [hl]
-	ret
-; 119e33 (46:5e33)
-
-Unknown_119e33: ; 119e33
-	INCBIN "data/mobile/x-game-code-prefix.txt"
-Unknown_119e40:
-	INCBIN "data/mobile/x-game-result-prefix.txt"
-; 119e4f
-
-Function119e4f: ; 119e4f
-	push bc
-	ld hl, LYOverrides
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-.asm_119e57
-	ld a, [de]
-	cp [hl]
-	jr z, .asm_119e64
-.asm_119e5b
-	inc hl
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_119e57
-.asm_119e61
-	pop bc
-	scf
-	ret
-
-.asm_119e64
-	push de
-.asm_119e65
-	ld a, [de]
-	inc de
-	cp "\n"
-	jr z, .asm_119e7a
-	cp [hl]
-	jr nz, .asm_119e77
-	inc hl
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_119e65
-	pop de
-	jr .asm_119e61
-
-.asm_119e77
-	pop de
-	jr .asm_119e5b
-
-.asm_119e7a
-	pop de
-	pop bc
-	inc hl
-	ld de, $d880
-.asm_119e80
-	ld a, [hli]
-	ld [de], a
-	inc de
-	cp $d
-	jr z, .asm_119e8c
-	dec c
-	jr nz, .asm_119e80
-	scf
-	ret
-
-.asm_119e8c
-	and a
-	ret
-; 119e8e
-
-Function119e8e: ; 119e8e
-	cp $60
-	jr c, .asm_119e95
-	sub $57
-	ret
-
-.asm_119e95
-	sub $30
-	ret
-; 119e98
-
-Function119e98: ; 119e98
-	ld a, $2
-.asm_119e9a
-	push af
-	ld a, [bc]
-	dec bc
-	call Function119e8e
-	or [hl]
-	ld [hl], a
-	ld a, [bc]
-	dec bc
-	call Function119e8e
-	rlca
-	rlca
-	rlca
-	rlca
-	or [hl]
-	ld [hl], a
-	inc hl
-	pop af
-	dec a
-	and a
-	jr nz, .asm_119e9a
-	ret
-; 119eb4
-
-Function119eb4: ; 119eb4 (46:5eb4)
-	xor a
-	ld [wc3cc], a
-	ld de, wc3ac
-.asm_119ebb
-	ld a, [de]
-	inc de
-	ld [hli], a
-	and a
-	jr nz, .asm_119ebb
-	ret
-
-Function119ec2: ; 119ec2 (46:5ec2)
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$aa5c], a
-	ld de, $aa4c
-.asm_119ece
-	ld a, [de]
-	inc de
-	ld [hli], a
-	and a
-	jr nz, .asm_119ece
-	call CloseSRAM
-	ret
-
-Function119ed8: ; 119ed8 (46:5ed8)
-	ld a, [rSVBK] ; $ff00+$70
-	ld [wcd8c], a
-	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
-	call Function119eee
-	ld a, [wcd8c]
-	ld [rSVBK], a ; $ff00+$70
-	ld a, $1
-	ld [hBGMapMode], a ; $ff00+$d4
-	ret
-
-Function119eee: ; 119eee (46:5eee)
-	ld a, [wcd3c]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_119efd
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 119efd (46:5efd)
-
-Jumptable_119efd: ; 119efd
-	dw Function119f3f
-	dw Function119f45
-	dw Function119f56
-	dw Function119f76
-	dw Function119f98
-	dw Function11a113
-	dw Function11a129
-	dw Function11a131
-	dw Function11a13d
-	dw Function11a14b
-	dw Function11a16d
-	dw Function11a192
-	dw Function11a2e6
-	dw Function11a302
-	dw Function11a33a
-	dw Function11a207
-	dw Function11a235
-	dw Function11a357
-	dw Function11a36b
-	dw Function11a38d
-	dw Function11a3c5
-	dw Function11a3d9
-	dw Function11a3f9
-	dw Function11a41b
-	dw Function11a452
-	dw Function11a47a
-	dw Function11a488
-	dw Function11a49e
-	dw Function11a4db
-	dw Function11a4e8
-	dw Function11a4fe
-	dw Function11a466
-	dw Function11a47a
-; 119f3f
-
-Function119f3f: ; 119f3f
-	call Function11a5b9
-	jp Function11a5b0
-; 119f45
-
-Function119f45: ; 119f45
-	hlcoord 4, 2
-	ld de, String_11a661
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 119f56
-
-Function119f56: ; 119f56
-	ld a, [wcd44]
-	and a
-	jr z, .asm_119f62
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_119f62
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6aa
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 119f76
-
-Function119f76: ; 119f76
-	ld a, [wcd44]
-	and a
-	jr z, .asm_119f82
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_119f82
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a679
-	call PlaceString
-	call Function11a5f5
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 119f98
-
-Function119f98: ; 119f98
-	call Function11a536
-	ret c
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_119fef
-	call ExitMenu
-	call Function11a63c
-	xor a
-	ld [ScriptVar], a
-	call Function11a00e
-	ld a, [ScriptVar]
-	and a
-	jr z, .asm_119fd4
-	call ExitMenu
-	callba Function104061
-	callba Function115dc3
-	ld a, [wcd33]
-	ld [wcf66], a
-	ld a, $a
-	ld [wc300], a
-	scf
-	ret
-
-.asm_119fd4
-	hlcoord 4, 2
-	ld de, String_11a692
-	call PlaceString
-	ld a, $1
-	ld [wc30d], a
-	ld a, $1
-	ld [wPartyMonMenuIconAnims], a
-	callba Function104061
-	and a
-	ret
-
-.asm_119fef
-	call ExitMenu
-	call ExitMenu
-	callba Function104061
-	ld a, [wcd45]
-	ld [wcf66], a
-	callba Function115dc3
-	ld a, $a
-	ld [wc300], a
-	scf
-	ret
-; 11a00e
-
-Function11a00e: ; 11a00e
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa4b]
-	and a
-	jr z, .asm_11a02a
-	ld a, [$aa4c]
-	call CloseSRAM
-	and a
-	ret nz
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$aa4b], a
-
-.asm_11a02a
-	call CloseSRAM
-	ld a, [BGMapPalBuffer]
-	and a
-	jr z, .asm_11a039
-	dec a
-	jr z, .asm_11a081
-	jp Function11a0ca
-
-.asm_11a039
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, $c608
-	ld de, $d800
-	ld bc, $00f6
-	call CopyBytes
-	ld a, $1
-	ld [rSVBK], a
-	call FadeToMenu
-	callba Function11765d
-	call Function11a9ce
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, $d800
-	ld de, $c608
-	ld bc, $00f6
-	call CopyBytes
-	ld a, $1
-	ld [rSVBK], a
-	callba Function115d99
-	ld c, $0
-	callba Function115e18
-	ld a, $1
-	ld [wc305], a
-	ret
-
-.asm_11a081
-	xor a
-	ld [wMenuBorderLeftCoord], a
-	ld [wMenuBorderTopCoord], a
-	ld a, $13
-	ld [wMenuBorderRightCoord], a
-	ld a, $5
-	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
-	callba Function11765d
-	callba Function117ab4
-	callba Function106462
-	callba Function106464
-	call ExitMenu
-	callba Function104061
-	callba Function115d99
-	ld c, $0
-	callba Function115e18
-	ld a, $1
-	ld [wc305], a
-	ret
-; 11a0ca
-
-Function11a0ca: ; 11a0ca
-	xor a
-	ld [wMenuBorderLeftCoord], a
-	ld [wMenuBorderTopCoord], a
-	ld a, $13
-	ld [wMenuBorderRightCoord], a
-	ld a, $11
-	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
-	callba Function11765d
-	callba Function17d3f6
-	callba Function106462
-	callba Function106464
-	call ExitMenu
-	callba Function104061
-	callba Function115d99
-	ld c, $0
-	callba Function115e18
-	ld a, $1
-	ld [wc305], a
-	ret
-; 11a113
-
-Function11a113: ; 11a113
-	call Function11a63c
-	ld c, $1
-	callba Function115e18
-	hlcoord 4, 2
-	ld de, String_11a6c8
-	call PlaceString
-	and a
-	ret
-; 11a129
-
-Function11a129: ; 11a129
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a131
-
-Function11a131: ; 11a131
-	ld hl, wcd44
-	dec [hl]
-	ret nz
-	ld a, [wcd3c]
-	inc a
-	ld [wcd3c], a
-
-Function11a13d:
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	and a
-	ret
-; 11a14b
-
-Function11a14b: ; 11a14b
-	ld hl, wcd85
-	ld a, [hl]
-	cp $f3
-	jr nz, .asm_11a155
-	and a
-	ret
-
-.asm_11a155
-	call Function11a1d6
-	ret c
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6f1
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a16d
-
-Function11a16d: ; 11a16d
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a179
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a179
-	call Function11a63c
-	call Function11a1e6
-	hlcoord 4, 2
-	ld de, wPartyMonMenuIconAnims + 48 + 2
-	call PlaceString
-	call Function11a5f5
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a192
-
-Function11a192: ; 11a192
-	call Function11a536
-	ret c
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a1b6
-	call ExitMenu
-	callba Function104061
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	and a
-	ret
-
-.asm_11a1b6
-	call ExitMenu
-	callba Function104061
-	ld a, [wcd45]
-	ld [wcf66], a
-	ld [wcd80], a
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	scf
-	ret
-; 11a1d6
-
-Function11a1d6: ; 11a1d6
-	ld a, [wcd85]
-	cp $50
-	jr nz, .asm_11a1e4
-	ld a, $d3
-	call Function118805
-	scf
-	ret
-
-.asm_11a1e4
-	and a
-	ret
-; 11a1e6
-
-Function11a1e6: ; 11a1e6
-	ld hl, String_11a706
-	ld de, wPartyMonMenuIconAnims + 48 + 2
-	call Function11a1ff
-	ld hl, wcd85
-	call Function11a1ff
-	ld hl, String_11a70b
-	call Function11a1ff
-	ld a, $50
-	ld [de], a
-	ret
-; 11a1ff
-
-Function11a1ff: ; 11a1ff
-.asm_11a1ff
-	ld a, [hli]
-	cp $50
-	ret z
-	ld [de], a
-	inc de
-	jr .asm_11a1ff
-; 11a207
-
-Function11a207: ; 11a207
-	ld hl, MenuDataHeader_11a2de
-	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
-	call Function321c
-	hlcoord 16, 8
-	ld de, String_11a2cf
-	call PlaceString
-	hlcoord 16, 10
-	ld de, String_11a2d3
-	call PlaceString
-	hlcoord 15, 8
-	ld a, $ed
-	ld [hl], a
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a235
-
-Function11a235: ; 11a235
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_11a28f
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .asm_11a2c1
-	ld a, [hl]
-	and D_UP
-	jr nz, .asm_11a251
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .asm_11a270
-.asm_11a24c
-	call Function11a9f0
-	scf
-	ret
-
-.asm_11a251
-	xor a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a24c
-	xor a
-	ld [wcd44], a
-	hlcoord 15, 8
-	ld a, $ed
-	ld [hl], a
-	hlcoord 15, 10
-	ld a, $7f
-	ld [hl], a
-	jr .asm_11a24c
-
-.asm_11a270
-	xor a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a24c
-	inc a
-	ld [wcd44], a
-	hlcoord 15, 8
-	ld a, $7f
-	ld [hl], a
-	hlcoord 15, 10
-	ld a, $ed
-	ld [hl], a
-	jr .asm_11a24c
-
-.asm_11a28f
-	xor a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a2c4
-	call ExitMenu
-	callba Function104061
-	ld a, [wcd46]
-	cp $0
-	jr z, .asm_11a2b4
-	ld a, [wcd47]
-	jr .asm_11a2b7
-
-.asm_11a2b4
-	ld a, [wcd33]
-
-.asm_11a2b7
-	ld [wcf66], a
-	ld a, $a
-	ld [wc300], a
-	scf
-	ret
-
-.asm_11a2c1
-	call PlayClickSFX
-
-.asm_11a2c4
-	call ExitMenu
-	callba Function104061
-	and a
-	ret
-; 11a2cf
-
-String_11a2cf: ; 11a2cf
-	db "YES@"
-; 11a2d3
-
-String_11a2d3: ; 11a2d3
-	db "NO@"
-; 11a2d6
-
-MenuDataHeader_11a2d6: ; 11a2d6
-	db $40 ; flags
-	db  6, 14 ; start coords
-	db 10, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 11a2de
-
-MenuDataHeader_11a2de: ; 11a2de
-	db $40 ; flags
-	db  7, 14 ; start coords
-	db 11, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 11a2e6
-
-Function11a2e6: ; 11a2e6
-	call Function11a63c
-	ld c, $2
-	callba Function115e18
-	hlcoord 4, 2
-	ld de, String_11a71e
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a302
-
-Function11a302: ; 11a302
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a30e
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a30e
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a72a
-	call PlaceString
-	hlcoord 9, 4
-	ld de, wcd68
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	hlcoord 14, 4
-	ld de, wcd67
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a33a
-
-Function11a33a: ; 11a33a
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a346
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a346
-	call ExitMenu
-	callba Function104061
-	callba Function115dc3
-	and a
-	ret
-; 11a357
-
-Function11a357: ; 11a357
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a743
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a36b
-
-Function11a36b: ; 11a36b
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a377
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a377
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a755
-	call PlaceString
-	call Function11a5f5
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a38d
-
-Function11a38d: ; 11a38d
-	call Function11a536
-	ret c
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a3b1
-	call ExitMenu
-	callba Function104061
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	and a
-	ret
-
-.asm_11a3b1
-	call ExitMenu
-	callba Function104061
-	ld a, [wcd45]
-	ld [wcf66], a
-	ld [wcd80], a
-	scf
-	ret
-; 11a3c5
-
-Function11a3c5: ; 11a3c5
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a762
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a3d9
-
-Function11a3d9: ; 11a3d9
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a3e5
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a3e5
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a779
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a3f9
-
-Function11a3f9: ; 11a3f9
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a405
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a405
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a755
-	call PlaceString
-	call Function11a5f5
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a41b
-
-Function11a41b: ; 11a41b
-	call Function11a536
-	ret c
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a43f
-	call ExitMenu
-	callba Function104061
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	and a
-	ret
-
-.asm_11a43f
-	call ExitMenu
-	callba Function104061
-	ld a, $1c
-	ld [wcf66], a
-	ld [wcd80], a
-	scf
-	ret
-; 11a452
-
-Function11a452: ; 11a452
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a791
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a466
-
-Function11a466: ; 11a466
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a7c1
-	call PlaceString
-	ld a, $80
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a47a
-
-Function11a47a: ; 11a47a
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a486
-	dec a
-	ld [wcd44], a
-	scf
-	ret
-
-.asm_11a486
-	and a
-	ret
-; 11a488
-
-Function11a488: ; 11a488
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a7ac
-	call PlaceString
-	call Function11a5f5
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a49e
-
-Function11a49e: ; 11a49e
-	call Function11a536
-	ret c
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a4c7
-	call ExitMenu
-	callba Function104061
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	ld a, $14
-	ld [wcf66], a
-	and a
-	ret
-
-.asm_11a4c7
-	call ExitMenu
-	callba Function104061
-	ld a, [wcd46]
-	ld [wcf66], a
-	ld [wcd80], a
-	scf
-	ret
-; 11a4db
-
-Function11a4db: ; 11a4db
-	call Function11a63c
-	ld de, String_11a6db
-	hlcoord 4, 2
-	call PlaceString
-	ret
-; 11a4e8
-
-Function11a4e8: ; 11a4e8
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a7d7
-	call PlaceString
-	call Function11a5f5
-	xor a
-	ld [wcd44], a
-	jp Function11a5b0
-; 11a4fe
-
-Function11a4fe: ; 11a4fe
-	call Function11a536
-	ret c
-	call PlayClickSFX
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a522
-	call ExitMenu
-	callba Function104061
-	call Function11a63c
-	hlcoord 4, 2
-	ld de, String_11a6d2
-	call PlaceString
-	and a
-	ret
-
-.asm_11a522
-	call ExitMenu
-	callba Function104061
-	ld a, [wcd45]
-	ld [wcf66], a
-	ld [wcd80], a
-	scf
-	ret
-; 11a536
-
-Function11a536: ; 11a536
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and $1
-	jr nz, .asm_11a5a7
-	ld a, [hl]
-	and $2
-	jr nz, .asm_11a5a2
-	ld a, [hl]
-	and $40
-	jr nz, .asm_11a564
-	ld a, [hl]
-	and $80
-	jr nz, .asm_11a583
-.asm_11a54d
-	ld a, [wcd3c]
-	cp $4
-	jr z, .asm_11a562
-	call Function11a9f0
-	jr nz, .asm_11a562
-	call ExitMenu
-	callba Function104061
-
-.asm_11a562
-	scf
-	ret
-
-.asm_11a564
-	xor a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	ld a, [wcd44]
-	and a
-	jr z, .asm_11a54d
-	xor a
-	ld [wcd44], a
-	hlcoord 15, 7
-	ld a, $ed
-	ld [hl], a
-	hlcoord 15, 9
-	ld a, $7f
-	ld [hl], a
-	jr .asm_11a54d
-
-.asm_11a583
-	xor a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	ld a, [wcd44]
-	and a
-	jr nz, .asm_11a54d
-	inc a
-	ld [wcd44], a
-	hlcoord 15, 7
-	ld a, $7f
-	ld [hl], a
-	hlcoord 15, 9
-	ld a, $ed
-	ld [hl], a
-	jr .asm_11a54d
-
-.asm_11a5a2
-	ld a, $1
-	ld [wcd44], a
-
-.asm_11a5a7
-	xor a
-	ld [wcd8a], a
-	ld [wcd8b], a
-	and a
-	ret
-; 11a5b0
-
-Function11a5b0: ; 11a5b0
-	ld a, [wcd3c]
-	inc a
-	ld [wcd3c], a
-	scf
-	ret
-; 11a5b9
-
-Function11a5b9: ; 11a5b9
-	xor a
-	ld [wMenuBorderLeftCoord], a
-	ld [wMenuBorderTopCoord], a
-	ld a, $13
-	ld [wMenuBorderRightCoord], a
-	ld a, $5
-	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
-	hlcoord 0, 0, AttrMap
-	ld b, $6
-	ld c, $14
-	hlcoord 0, 0
-	ld b, $4
-	ld c, $12
-	call Function3eea
-	callba Function104061
-	call UpdateSprites
-	ld c, $0
-	callba Function115e18
-	ld a, $1
-	ld [wc305], a
-	ret
-; 11a5f5
-
-Function11a5f5: ; 11a5f5
-	ld a, $e
-	ld [wMenuBorderLeftCoord], a
-	ld a, $13
-	ld [wMenuBorderRightCoord], a
-	ld a, $6
-	ld [wMenuBorderTopCoord], a
-	ld a, $a
-	ld [wMenuBorderBottomCoord], a
-	call BackUpTiles
-	hlcoord 14, 6, AttrMap
-	ld b, $5
-	ld c, $6
-	hlcoord 14, 6
-	ld b, $3
-	ld c, $4
-	call Function3eea
-	hlcoord 16, 7
-	ld de, String_11a2cf
-	call PlaceString
-	hlcoord 16, 9
-	ld de, String_11a2d3
-	call PlaceString
-	hlcoord 15, 7
-	ld a, $ed
-	ld [hl], a
-	callba Function104061
-	ret
-; 11a63c
-
-Function11a63c: ; 11a63c
-	hlcoord 4, 1
-	ld de, String_11a7f4
-	call PlaceString
-	hlcoord 4, 2
-	ld de, String_11a7f4
-	call PlaceString
-	hlcoord 4, 3
-	ld de, String_11a7f4
-	call PlaceString
-	hlcoord 4, 4
-	ld de, String_11a7f4
-	call PlaceString
-	ret
-; 11a661
-
-String_11a661: ; 11a661
-	db   "これから モバイルセンターに"
-	next "でんわ", $1f, "かけます@"
-; 11a679
-
-String_11a679: ; 11a679
-	db   "モバイルアダプタ", $25, "じゅんびは"
-	next "できて いますか?@"
-; 11a692
-
-String_11a692: ; 11a692
-	db   "でんわ", $1f, "かけています"
-	next "しばらく おまちください@"
-; 11a6aa
-
-String_11a6aa: ; 11a6aa
-	db   "でんわをかけると つうわりょう"
-	next "せつぞくりょう", $4a, "かかります@"
-; 11a6c8
-
-String_11a6c8: ; 11a6c8
-	db   "せつぞく しました@"
-; 11a6d2
-
-String_11a6d2: ; 11a6d2
-	db   "つうしん ちゅう@"
-; 11a6db
-
-String_11a6db: ; 11a6db
-	db   "つうしん ちゅう"
-	next "セレクト エーでちゅうし@"
-; 11a6f1
-
-String_11a6f1: ; 11a6f1
-	db   "この サービスには"
-	next "つうわりょう", $25, "ほかに@"
-; 11a706
-
-String_11a706: ; 11a706
-	db   "おかね", $4a, "@"
-; 11a70b
-
-String_11a70b: ; 11a70b
-	db   "えん"
-	next "かかります よろしい ですか?@"
-; 11a71e
-
-String_11a71e: ; 11a71e
-	db   "つうしん しゅうりょう@"
-; 11a72a
-
-String_11a72a: ; 11a72a
-	db   "つないだ じかん"
-	next "  やく   ふん   びょう@"
-; 11a743
-
-String_11a743: ; 11a743
-	db   "もっていない データが"
-	next "あります!@"
-; 11a755
-
-String_11a755: ; 11a755
-	db   "データ", $1f, "よみこみますか?@"
-; 11a762
-
-String_11a762: ; 11a762
-	db   "おなじ データ", $1f, "よみこんだ"
-	next "こと", $4a, "ありますが@"
-; 11a779
-
-String_11a779: ; 11a779
-	db   "そのデータ", $24, "なくなっているか"
-	next "こわれて います@"
-; 11a791
-
-String_11a791: ; 11a791
-	db   "もっている データと"
-	next "おなじデータしか ありません!@"
-; 11a7ac
-
-String_11a7ac: ; 11a7ac
-	db   "データ", $25, "よみこみを"
-	next "ちゅうし しますか?@"
-; 11a7c1
-
-String_11a7c1: ; 11a7c1
-	db   "あたらしい ニュースは"
-	next "ありません でした@"
-; 11a7d7
-
-String_11a7d7: ; 11a7d7
-	db   "あたらしいニュース", $4a, "あります"
-	next "ニュース", $1f, "よみこみますか?@"
-; 11a7f4
-
-String_11a7f4: ; 11a7f4
-	db   "               @"
-; 11a804
-
-MenuDataHeader_11a804: ; 11a804
-	db $40 ; flags
-	db  0,  0 ; start coords
-	db  5, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 11a80c
-
-Function11a80c: ; 11a80c
-	ld de, hDivisor
-	ld bc, hDividend
-	ld hl, Unknown_11a89a
-	call Function11a88c
-	ld bc, hQuotient
-	ld hl, Unknown_11a8ba
-	call Function11a88c
-	ld bc, $ffb5
-	ld hl, Unknown_11a8da
-	call Function11a88c
-	xor a
-	ld b, a
-	ld a, [hDivisor]
-	and $f
-	ld e, a
-	ld a, [$ffb9]
-	and $f
-	call Function11a884
-	ld e, a
-	ld a, [$ffbb]
-	and $f
-	call Function11a884
-	ld [wcd62], a
-	ld e, b
-	xor a
-	ld b, a
-	ld a, [hDivisor]
-	and $f0
-	swap a
-	call Function11a884
-	ld e, a
-	ld a, [$ffb9]
-	and $f0
-	swap a
-	call Function11a884
-	ld e, a
-	ld a, [$ffbb]
-	and $f0
-	swap a
-	call Function11a884
-	ld [wcd63], a
-	ld e, b
-	xor a
-	ld b, a
-	ld a, [hMathBuffer]
-	and $f
-	call Function11a884
-	ld e, a
-	ld a, [$ffba]
-	and $f
-	call Function11a884
-	ld e, a
-	ld a, [$ffbc]
-	and $f
-	call Function11a884
-	ld [wcd64], a
-	ret
-; 11a884
-
-Function11a884: ; 11a884
-	add e
-	cp $a
-	ret c
-	sub $a
-	inc b
-	ret
-; 11a88c
-
-Function11a88c: ; 11a88c
-	ld a, [bc]
-	sla a
-	ld c, a
-	xor a
-	ld b, a
-	add hl, bc
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	inc de
-	ret
-; 11a89a
-
-Unknown_11a89a: ; 11a89a
-x = 0
-rept 16
-	bcd x % 100, x / 100
-x = x + 1
-endr
-
-Unknown_11a8ba: ; 11a8ba
-x = 0
-rept 16
-	bcd x % 100, x / 100
-x = x + 16
-endr
-
-Unknown_11a8da: ; 11a8da
-x = 0
-rept 16
-	bcd x % 100, x / 100
-x = x + 256
-endr
-; 11a8fa
-
-Function11a8fa: ; 11a8fa
-	ld a, [wPartyMonMenuIconAnims + 6]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11a909
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11a909
-
-Jumptable_11a909: ; 11a909
-	dw Function11a970
-	dw Function11a90f
-	dw Function11a971
-; 11a90f
-
-Function11a90f: ; 11a90f
-	ld a, $1
-	ld [rSVBK], a
-	call SpeechTextBox
-	ld a, $50
-	ld hl, wPartyMonMenuIconAnims + 12
-	ld bc, $008c
-	call ByteFill
-	ld a, [wPartyMonMenuIconAnims + 7]
-	ld l, a
-	ld a, [wPartyMonMenuIconAnims + 8]
-	ld h, a
-	ld de, wPartyMonMenuIconAnims + 12
-.asm_11a92c
-	ld a, [hli]
-	cp $57
-	jr z, .asm_11a94f
-	cp $0
-	jr z, .asm_11a92c
-	cp $50
-	jr z, .asm_11a92c
-	cp $1
-	jr z, .asm_11a941
-	ld [de], a
-	inc de
-	jr .asm_11a92c
-
-.asm_11a941
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-.asm_11a945
-	ld a, [bc]
-	inc bc
-	cp $50
-	jr z, .asm_11a92c
-	ld [de], a
-	inc de
-	jr .asm_11a945
-
-.asm_11a94f
-	xor a
-	ld [wPartyMonMenuIconAnims + 11], a
-	ld a, $20
-	ld [wPartyMonMenuIconAnims + 7], a
-	ld a, $c3
-	ld [wPartyMonMenuIconAnims + 8], a
-	hlcoord 1, 14
-	ld a, l
-	ld [wPartyMonMenuIconAnims + 9], a
-	ld a, h
-	ld [wPartyMonMenuIconAnims + 10], a
-	ld hl, wPartyMonMenuIconAnims + 6
-	inc [hl]
-	ld a, $3
-	ld [rSVBK], a
-
-Function11a970:
-	ret
-; 11a971
-
-Function11a971: ; 11a971
-	ld hl, wPartyMonMenuIconAnims + 11
-	ld a, [hJoyDown]
-	and a
-	jr nz, .asm_11a97f
-	ld a, [hl]
-	and a
-	jr z, .asm_11a97f
-	dec [hl]
-	ret
-
-.asm_11a97f
-	ld a, [Options]
-	and $7
-	ld [hl], a
-	ld hl, wcd8d
-	ld a, [wPartyMonMenuIconAnims + 7]
-	ld e, a
-	ld a, [wPartyMonMenuIconAnims + 8]
-	ld d, a
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, e
-	ld [wPartyMonMenuIconAnims + 7], a
-	ld a, d
-	ld [wPartyMonMenuIconAnims + 8], a
-	ld a, $50
-	ld [hl], a
-	ld a, [wPartyMonMenuIconAnims + 9]
-	ld l, a
-	ld a, [wPartyMonMenuIconAnims + 10]
-	ld h, a
-	ld de, wcd8d
-	call PlaceString
-	ld a, c
-	ld [wPartyMonMenuIconAnims + 9], a
-	ld a, b
-	ld [wPartyMonMenuIconAnims + 10], a
-	ld a, [wcd8d]
-	cp $50
-	jr nz, .asm_11a9bf
-	xor a
-	ld [wPartyMonMenuIconAnims + 6], a
-
-.asm_11a9bf
-	ret
-; 11a9c0
-
-Function11a9c0: ; 11a9c0
-	ld a, l
-	ld [wPartyMonMenuIconAnims + 7], a
-	ld a, h
-	ld [wPartyMonMenuIconAnims + 8], a
-	ld a, $1
-	ld [wPartyMonMenuIconAnims + 6], a
-	ret
-; 11a9ce
-
-Function11a9ce: ; 11a9ce
-	call WhiteBGMap
-	call Function2bae
-	call Call_ExitMenu
-	callba Function106462
-	callba Function106464
-	call Functiond90
-	callba Function2b5c
-	call UpdateSprites
-	ret
-; 11a9f0
-
-Function11a9f0: ; 11a9f0
-	ld a, $1
-	and a
-	ret
-; 11a9f4
-
-Function11a9f4: ; 11a9f4
-	ld a, [wcd8a]
-	ld l, a
-	ld a, [wcd8b]
-	ld h, a
-	inc hl
-	ld a, l
-	ld [wcd8a], a
-	ld a, h
-	ld [wcd8b], a
-	ld de, $d5d0
-	add hl, de
-	bit 7, h
-	ret nz
-	ld a, $d6
-	call Function118805
-	and a
-	ret
-; 11aa13
-
-UnknownText_0x11aa13: ; 0x11aa13
-	text "SAVE FILE will be"
-	line "sent."
-	done
-; 0x11aa2c
-
-UnknownText_0x11aa2c: ; 0x11aa2c
-	text "Sent SAVE FILE."
-	line "Reading NEWS…"
-	done
-; 0x11aa4b
-
-UnknownText_0x11aa4b: ; 0x11aa4b
-	text "Reading NEWS…"
-	done
-; 0x11aa5a
-
-UnknownText_0x11aa5a: ; 0x11aa5a
-	text "Received NEWS!"
-	done
-; 0x11aa6a
-
-UnknownText_0x11aa6a: ; 0x11aa6a
-	text "Quit reading NEWS?"
-	done
-; 0x11aa7e
-
-UnknownText_0x11aa7e: ; 0x11aa7e
-	text "Canceled sending"
-	line "SAVE FILE."
-	done
-; 0x11aa9b
-
-UnknownText_0x11aa9b: ; 0x11aa9b
-	text "ODD EGG"
-	line "was received!"
-	done
-; 0x11aab2
-
-UnknownText_0x11aab2: ; 0x11aab2
-	text "Registering your"
-	line "record…"
-	done
-; 0x11aacc
-
-UnknownText_0x11aacc: ; 0x11aacc
-	text "One visit per day"
-	line "per BATTLE ROOM!"
-	done
-; 0x11aaf0
-
-UnknownText_0x11aaf0: ; 0x11aaf0
-	text "A party #MON"
-	line "tops this level."
-	done
-; 0x11ab0f
-
-UnknownText_0x11ab0f: ; 0x11ab0f
-	text_from_ram wcd49
-	text " may go"
-	line "only to BATTLE"
-
-	para "ROOMS that are"
-	line "Lv.70 or higher."
-	done
-; 0x11ab4a
-
-UnknownText_0x11ab4a: ; 0x11ab4a
-	text "Cancel your BATTLE"
-	line "ROOM challenge?"
-	done
-; 0x11ab6e
-
-UnknownText_0x11ab6e: ; 0x11ab6e
-	text "Exit GYM LEADER"
-	line "HONOR ROLL?"
-	done
-; 0x11ab8b
-
-UnknownText_0x11ab8b: ; 0x11ab8b
-	text "Linking with the"
-	line "CENTER…"
-	done
-; 0x11aba5
-
-Text_WhatLevelDoYouWantToChallenge: ; 0x11aba5
-	text "What level do you"
-	line "want to challenge?"
-	done
-; 0x11abcb
-
-Text_CheckBattleRoomListByMaxLevel: ; 0x11abcb
-	text "Check BATTLE ROOM"
-	line "list by max level?"
-	done
-; 0x11abf1
-
-UnknownText_0x11abf1: ; 0x11abf1
-	text "Enter which"
-	line "BATTLE ROOM?"
-	done
-; 0x11ac0b
-
-UnknownText_0x11ac0b: ; 0x11ac0b
-	text "Which BATTLE ROOM?"
-	done
-; 0x11ac1f
-
-UnknownText_0x11ac1f: ; 0x11ac1f
-	text_from_ram StringBuffer3
-	text "'s ROOM"
-	line "@"
-	text_from_ram StringBuffer4
-	text "?"
-	cont "Please wait…"
-	done
-; 0x11ac3e
-
-Function11ac3e: ; 11ac3e
-	call SpeechTextBox
-	call FadeToMenu
-	callab InefficientlyClear121BytesAtwc300
-	call Function11ac51
-	call Function2b3c
-	ret
-; 11ac51
-
-Function11ac51: ; 11ac51
-	xor a
-	ld [hBGMapMode], a
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [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 [$ffde], a
-	ld [wcd49], a
-	ld [wcd4a], a
-	ld [wcd4c], a
-	ld [wcd4d], a
-	ld [wcd4e], a
-	call Function11ad1b
-	call DelayFrame
-.asm_11ac82
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_11aca8
-	call Function11b314
-	call Function11acb7
-	call Function11ad6e
-	ld a, $78
-	ld [wc3b5], a
-	callba Function8cf7a
-	callba Function104061
-	jr .asm_11ac82
-
-.asm_11aca8
-	call ClearSprites
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [VramState], a
-	pop af
-	ld [Options], a
-	ret
-; 11acb7
-
-Function11acb7: ; 11acb7
-	ld hl, Unknown_11ba44
-	ld a, [wcd49]
-	ld c, a
-	ld b, $0
-	sla c
-	rl b
-	sla c
-	rl b
-	sla c
-	rl b
-	add hl, bc
-	decoord 6, 6
-	ld a, [hli]
-	ld [de], a
-	decoord 0, 7
-	ld bc, $0007
-	call CopyBytes
-	ld a, [wcd49]
-	inc a
-	ld [wcd49], a
-	ld a, [hl]
-	cp $ff
-	jr nz, .asm_11aceb
-	xor a
-	ld [wcd49], a
-
-.asm_11aceb
-	ld hl, Unknown_11bb7d
-	ld a, [wcd4a]
-	ld c, a
-	ld b, $0
-	sla c
-	rl b
-	sla c
-	rl b
-	sla c
-	rl b
-	add hl, bc
-	decoord 3, 9
-	ld bc, $0007
-	call CopyBytes
-	ld a, [wcd4a]
-	inc a
-	ld [wcd4a], a
-	inc hl
-	ld a, [hl]
-	cp $ff
-	ret nz
-	xor a
-	ld [wcd4a], a
-	ret
-; 11ad1b
-
-Function11ad1b: ; 11ad1b
-	call WhiteBGMap
-	call ClearSprites
-	call ClearTileMap
-	callba Function17c000
-	ld a, [wcfa9]
-	ld [wcd82], a
-	dec a
-	ld [hObjectStructIndexBuffer], a
-	ld a, $10
-	ld [wc3b7], a
-	ld hl, Function8e83f
-	ld a, BANK(Function8e83f)
-	ld e, $4
-	rst FarCall
-	ld hl, Function8e83f
-	ld a, BANK(Function8e83f)
-	ld e, $5
-	rst FarCall
-	ld hl, $c6d0
-	ld bc, $0115
-	xor a
-	call ByteFill
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ld [wcd30], a
-	ld a, $2
-	ld [wc7d4], a
-	callba Function40bdc
-	ret
-; 11ad6e
-
-Function11ad6e: ; 11ad6e
-	ld a, [wJumptableIndex]
-	ld hl, Jumptable_11ad78
-	call Function11b239
-	jp [hl]
-; 11ad78
-
-Jumptable_11ad78: ; 11ad78
-	dw Function11b082
-	dw Function11b0ff
-	dw Function11ad95
-	dw Function11adc4
-	dw Function11ae4e
-	dw Function11ae98
-	dw Function11ad8f
-	dw Function11af04
-	dw Function11af4e
-; 11ad8a
-
-Function11ad8a: ; 11ad8a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; 11ad8f
-
-Function11ad8f: ; 11ad8f
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-; 11ad95
-
-Function11ad95: ; 11ad95
-	ld hl, MenuDataHeader_11ae38
-	call LoadMenuDataHeader
-	call Function1cbb
-	hlcoord 12, 12
-	ld de, String_11ae40
-	call PlaceString
-	hlcoord 10, 10, AttrMap
-	ld bc, $0808
-	call Function11afd6
-	callba Function104061
-	call Function11ad8a
-	ld a, $1
-	ld [wcfa9], a
-	ld hl, Unknown_11afcc
-	call Function11afb7
-
-Function11adc4:
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and a
-	ret z
-	ld a, [hl]
-	and $40
-	jr nz, .asm_11ade6
-	ld a, [hl]
-	and $80
-	jr nz, .asm_11aded
-	ld a, [hl]
-	and $1
-	jr nz, .asm_11ae06
-	ld a, [hl]
-	and $2
-	ret z
-	call PlayClickSFX
-	xor a
-	ld [wJumptableIndex], a
-	jr .asm_11ae2e
-
-.asm_11ade6
-	ld a, [wcfa9]
-	dec a
-	ret z
-	jr .asm_11adf4
-
-.asm_11aded
-	ld a, [wcfa9]
-	inc a
-	cp $4
-	ret z
-
-.asm_11adf4
-	push af
-	ld hl, Unknown_11afcc
-	call Function11afbb
-	pop af
-	ld [wcfa9], a
-	ld hl, Unknown_11afcc
-	call Function11afb7
-	ret
-
-.asm_11ae06
-	call PlayClickSFX
-	ld a, [wcfa9]
-	dec a
-	ld hl, wcd30
-	ld [hl], a
-	and a
-	jr z, .asm_11ae28
-	hlcoord 2, 14
-	ld a, [wcfa9]
-	cp $2
-	jr z, .asm_11ae23
-	call Function11b272
-	jr .asm_11ae2b
-
-.asm_11ae23
-	call Function11b267
-	jr .asm_11ae2b
-
-.asm_11ae28
-	ld a, $3
-	ld [hl], a
-
-.asm_11ae2b
-	call Function11ad8a
-
-.asm_11ae2e
-	call ExitMenu
-	callba Function104061
-	ret
-; 11ae38
-
-MenuDataHeader_11ae38: ; 11ae38
-	db $40 ; flags
-	db 10, 10 ; start coords
-	db 17, 17 ; end coords
-	dw NULL
-	db 0 ; default option
-; 11ae40
-
-String_11ae40: ; 11ae40
-	db   "どちらでも"
-	next "♂ォス"
-	next "♀メス"
-	db   "@"
-; 11ae4e
-
-Function11ae4e: ; 11ae4e
-	ld hl, MenuDataHeader_11afe8
-	call LoadMenuDataHeader
-	call Function1cbb
-	hlcoord 10, 14
-	ld de, String_11aff0
-	call PlaceString
-	ld hl, MenuDataHeader_11b013
-	call LoadMenuDataHeader
-	call Function1cbb
-	hlcoord 16, 8
-	ld de, String_11b01b
-	call PlaceString
-	hlcoord 14, 7, AttrMap
-	lb bc, 5, 6
-	call Function11afd6
-	hlcoord 9, 12, AttrMap
-	lb bc, 6, 11
-	call Function11afd6
-	callba Function104061
-	call Function11ad8a
-	ld a, $1
-	ld [wcfa9], a
-	ld hl, Unknown_11afd2
-	call Function11afb7
-
-Function11ae98:
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and a
-	ret z
-	ld a, [hl]
-	and D_UP
-	jr nz, .asm_11aec1
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .asm_11aec8
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_11aee1
-	ld a, [hl]
-	and B_BUTTON
-	ret z
-	call PlayClickSFX
-.asm_11aeb4
-	hlcoord 2, 14
-	ld a, $7f
-	ld [hl], a
-	ld a, $1
-	ld [wJumptableIndex], a
-	jr .asm_11aef7
-
-.asm_11aec1
-	ld a, [wcfa9]
-	dec a
-	ret z
-	jr .asm_11aecf
-
-.asm_11aec8
-	ld a, [wcfa9]
-	inc a
-	cp $3
-	ret z
-
-.asm_11aecf
-	push af
-	ld hl, Unknown_11afd2
-	call Function11afbb
-	pop af
-	ld [wcfa9], a
-	ld hl, Unknown_11afd2
-	call Function11afb7
-	ret
-
-.asm_11aee1
-	call PlayClickSFX
-	ld a, [wcfa9]
-	cp $2
-	jr z, .asm_11aeb4
-	ld a, [wcd4b]
-	ld [ScriptVar], a
-	call Function11b022
-	call Function11ad8a
-
-.asm_11aef7
-	call ExitMenu
-	call ExitMenu
-	callba Function104061
-	ret
-; 11af04
-
-Function11af04: ; 11af04
-	ld hl, MenuDataHeader_11afe8
-	call LoadMenuDataHeader
-	call Function1cbb
-	hlcoord 10, 14
-	ld de, String_11b003
-	call PlaceString
-	ld hl, MenuDataHeader_11b013
-	call LoadMenuDataHeader
-	call Function1cbb
-	hlcoord 16, 8
-	ld de, String_11b01b
-	call PlaceString
-	hlcoord 14, 7, AttrMap
-	lb bc, 5, 6
-	call Function11afd6
-	hlcoord 9, 12, AttrMap
-	lb bc, 6, 11
-	call Function11afd6
-	callba Function104061
-	call Function11ad8a
-	ld a, $2
-	ld [wcfa9], a
-	ld hl, Unknown_11afd2
-	call Function11afb7
-
-Function11af4e:
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and a
-	ret z
-	ld a, [hl]
-	and D_UP
-	jr nz, .asm_11af77
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .asm_11af7e
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .asm_11af97
-	ld a, [hl]
-	and B_BUTTON
-	ret z
-	call PlayClickSFX
-.asm_11af6a
-	hlcoord 2, 14
-	ld a, $7f
-	ld [hl], a
-	ld a, $1
-	ld [wJumptableIndex], a
-	jr .asm_11afaa
-
-.asm_11af77
-	ld a, [wcfa9]
-	dec a
-	ret z
-	jr .asm_11af85
-
-.asm_11af7e
-	ld a, [wcfa9]
-	inc a
-	cp $3
-	ret z
-
-.asm_11af85
-	push af
-	ld hl, Unknown_11afd2
-	call Function11afbb
-	pop af
-	ld [wcfa9], a
-	ld hl, Unknown_11afd2
-	call Function11afb7
-	ret
-
-.asm_11af97
-	call PlayClickSFX
-	ld a, [wcfa9]
-	cp $2
-	jr z, .asm_11af6a
-	ld a, $6
-	ld [wJumptableIndex], a
-	xor a
-	ld [ScriptVar], a
-
-.asm_11afaa
-	call ExitMenu
-	call ExitMenu
-	callba Function104061
-	ret
-; 11afb7
-
-Function11afb7: ; 11afb7
-	ld e, $ed
-	jr asm_11afbd
-
-Function11afbb:
-	ld e, $7f
-
-asm_11afbd:
-	ld a, [wcfa9]
-	dec a
-	ld c, a
-	ld b, 0
-rept 2
-	add hl, bc
-endr
-	ld a, e
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld [de], a
-	ret
-; 11afcc
-
-Unknown_11afcc:
-	dwcoord 11, 12
-	dwcoord 11, 14
-	dwcoord 11, 16
-
-Unknown_11afd2:
-	dwcoord 15,  8
-	dwcoord 15, 10
-; 11afd6
-
-Function11afd6: ; 11afd6
-	ld de, $0014
-	ld a, $3
-.asm_11afdb
-	push bc
-	push hl
-.asm_11afdd
-	ld [hli], a
-	dec c
-	jr nz, .asm_11afdd
-	pop hl
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_11afdb
-	ret
-; 11afe8
-
-MenuDataHeader_11afe8: ; 11afe8
-	db $40 ; flags
-	db 12,  9 ; start coords
-	db 17, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 11aff0
-
-String_11aff0: ; 11aff0
-	db   "この じょうけんで"
-	next "よろしいですか?@"
-; 11b003
-
-String_11b003: ; 11b003
-	db   "こうかんを"
-	next "ちゅうししますか?@"
-; 11b013
-
-MenuDataHeader_11b013: ; 11b013
-	db $40 ; flags
-	db  7, 14 ; start coords
-	db 11, 19 ; end coords
-	dw NULL
-	db 1 ; default option
-; 11b01b
-
-String_11b01b:
-	db   "はい"
-	next "いいえ@"
-; 11b022
-
-Function11b022: ; 11b022
-	ld a, [wcd2e]
-	and a
-	jr z, .asm_11b02e
-	ld hl, StringBuffer3
-	call Function11b03d
-
-.asm_11b02e
-	ld a, [wcd30]
-	and a
-	ret z
-	cp $3
-	ret z
-	ld hl, StringBuffer4
-	call Function11b03d
-	ret
-; 11b03d
-
-Function11b03d: ; 11b03d
-	push hl
-	push af
-	ld c, $1
-.asm_11b041
-	ld a, [hli]
-	cp $ef
-	jr z, .asm_11b051
-	cp $f5
-	jr z, .asm_11b051
-	cp $50
-	jr z, .asm_11b055
-	inc c
-	jr .asm_11b041
-
-.asm_11b051
-	dec hl
-	ld a, $50
-	ld [hli], a
-
-.asm_11b055
-	dec hl
-	push hl
-	ld e, $4
-	ld d, $0
-	add hl, de
-	ld e, l
-	ld d, h
-	pop hl
-.asm_11b05f
-	ld a, [hld]
-	ld [de], a
-	dec de
-	dec c
-	jr nz, .asm_11b05f
-	pop af
-	pop de
-	cp $1
-	jr nz, .asm_11b070
-	ld hl, String_11b07a
-	jr .asm_11b073
-
-.asm_11b070
-	ld hl, String_11b07e
-
-.asm_11b073
-	ld bc, 4
-	call CopyBytes
-	ret
-; 11b07a
-
-String_11b07a: db "ォスの "
-String_11b07e: db "メスの "
-
-Function11b082: ; 11b082
-	call Function11b242
-	ld a, $7
-	ld [wc7d3], a
-	call Function11b099
-	call Function11b295
-	call Function11b275
-	call SetPalettes
-	jp Function11ad8a
-; 11b099
-
-Function11b099: ; 11b099
-	ld c, $6
-	hlcoord 11, 1
-	ld a, [wc7d3]
-	add a
-	ld b, a
-	xor a
-	call Function11b236
-	ld a, [wc7d0]
-	ld e, a
-	ld d, $0
-	ld hl, $c6d0
-	add hl, de
-	ld e, l
-	ld d, h
-	hlcoord 11, 2
-	ld a, [wc7d3]
-.asm_11b0b9
-	push af
-	ld a, [de]
-	ld [wd265], a
-	push de
-	push hl
-	call Function11b0cf
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop de
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_11b0b9
-	ret
-; 11b0cf
-
-Function11b0cf: ; 11b0cf
-	and a
-	ret z
-	call Function11b0ec
-	ret c
-	call Function11b0e1
-	push hl
-	call GetPokemonName
-	pop hl
-	call PlaceString
-	ret
-; 11b0e1
-
-Function11b0e1: ; 11b0e1
-	call Function11b21e
-	jr nz, .asm_11b0e8
-	inc hl
-	ret
-
-.asm_11b0e8
-	ld a, $1
-	ld [hli], a
-	ret
-; 11b0ec
-
-Function11b0ec: ; 11b0ec
-	call Function11b22a
-	ret nz
-	inc hl
-	ld de, String_11b0f9
-	call PlaceString
-	scf
-	ret
-; 11b0f9
-
-String_11b0f9: ; 11b0f9
-	db "ーーーーー@"
-; 11b0ff
-
-Function11b0ff: ; 11b0ff
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and $2
-	jr nz, .asm_11b141
-	ld a, [hl]
-	and $1
-	jr nz, .asm_11b131
-	call Function11b175
-	jr nc, .asm_11b125
-	ld a, [wcd4c]
-	inc a
-	and $3
-	ld [wcd4c], a
-	xor a
-	ld [hBGMapMode], a
-	call Function11b099
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-.asm_11b125
-	ld a, [wcd4c]
-	and a
-	ret z
-	inc a
-	and $3
-	ld [wcd4c], a
-	ret
-
-.asm_11b131
-	call Function11b20b
-	call Function11b22a
-	jr z, .asm_11b13d
-	ld a, $1
-	jr .asm_11b148
-
-.asm_11b13d
-	ld a, $2
-	jr .asm_11b148
-
-.asm_11b141
-	ld hl, wJumptableIndex
-	ld a, $7
-	ld [hl], a
-	ret
-
-.asm_11b148
-	call PlayClickSFX
-	ld [wcd4b], a
-	and a
-	jr z, .asm_11b16c
-	ld a, [wcf65]
-	cp $0
-	jr z, .asm_11b163
-	cp $fe
-	jr z, .asm_11b167
-	cp $ff
-	jr z, .asm_11b16b
-	jp Function11ad8a
-
-.asm_11b163
-	ld a, $1
-	jr .asm_11b16c
-
-.asm_11b167
-	ld a, $2
-	jr .asm_11b16c
-
-.asm_11b16b
-	xor a
-
-.asm_11b16c
-	ld [wcd30], a
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; 11b175
-
-Function11b175: ; 11b175
-	ld a, [wc7d3]
-	ld d, a
-	ld a, [wc7d2]
-	ld e, a
-	ld hl, hJoyLast
-	ld a, [hl]
-	and $40
-	jr nz, .asm_11b19a
-	ld a, [hl]
-	and $80
-	jr nz, .asm_11b1ae
-	ld a, d
-	cp e
-	jr nc, .asm_11b1ed
-	ld a, [hl]
-	and $20
-	jr nz, .asm_11b1c6
-	ld a, [hl]
-	and $10
-	jr nz, .asm_11b1d8
-	jr .asm_11b1ed
-
-.asm_11b19a
-	ld hl, wc7d1
-	ld a, [hl]
-	and a
-	jr z, .asm_11b1a4
-	dec [hl]
-	jr .asm_11b1ef
-
-.asm_11b1a4
-	ld hl, wc7d0
-	ld a, [hl]
-	and a
-	jr z, .asm_11b1ed
-	dec [hl]
-	jr .asm_11b1ef
-
-.asm_11b1ae
-	ld hl, wc7d1
-	ld a, [hl]
-	inc a
-	cp e
-	jr nc, .asm_11b1ed
-	cp d
-	jr nc, .asm_11b1bc
-	inc [hl]
-	jr .asm_11b1ef
-
-.asm_11b1bc
-	ld hl, wc7d0
-	add [hl]
-	cp e
-	jr nc, .asm_11b1ed
-	inc [hl]
-	jr .asm_11b1ef
-
-.asm_11b1c6
-	ld hl, wc7d0
-	ld a, [hl]
-	and a
-	jr z, .asm_11b1ed
-	cp d
-	jr nc, .asm_11b1d4
-	xor a
-	ld [hl], a
-	jr .asm_11b1ef
-
-.asm_11b1d4
-	sub d
-	ld [hl], a
-	jr .asm_11b1ef
-
-.asm_11b1d8
-	ld hl, wc7d0
-	ld a, d
-	add a
-	add [hl]
-	jr c, .asm_11b1e3
-	cp e
-	jr c, .asm_11b1e8
-
-.asm_11b1e3
-	ld a, e
-	sub d
-	ld [hl], a
-	jr .asm_11b1ef
-
-.asm_11b1e8
-	ld a, [hl]
-	add d
-	ld [hl], a
-	jr .asm_11b1ef
-
-.asm_11b1ed
-	and a
-	ret
-
-.asm_11b1ef
-	call Function11b295
-	call Function11b275
-	scf
-	ret
-; 11b1f7
-
-Function11b1f7: ; 11b1f7
-	hlcoord 0, 0
-	ld a, $32
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call ByteFill
-	ret
-; 11b203
-
-Function11b203: ; 11b203
-.asm_11b203
-	ld a, [de]
-	cp $ff
-	ret z
-	inc de
-	ld [hli], a
-	jr .asm_11b203
-; 11b20b
-
-Function11b20b: ; 11b20b
-	ld a, [wc7d1]
-	ld hl, wc7d0
-	add [hl]
-	ld e, a
-	ld d, $0
-	ld hl, $c6d0
-	add hl, de
-	ld a, [hl]
-	ld [wd265], a
-	ret
-; 11b21e
-
-Function11b21e: ; 11b21e
-	push de
-	push hl
-	ld a, [wd265]
-	dec a
-	call CheckCaughtMon
-	pop hl
-	pop de
-	ret
-; 11b22a
-
-Function11b22a: ; 11b22a
-	push de
-	push hl
-	ld a, [wd265]
-	dec a
-	call CheckSeenMon
-	pop hl
-	pop de
-	ret
-; 11b236
-
-Function11b236: ; 11b236
-	jp FillBoxWithByte
-; 11b239
-
-Function11b239: ; 11b239
-	ld e, a
-	ld d, 0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ret
-; 11b242
-
-Function11b242: ; 11b242
-	hlcoord 3, 4
-	ld de, StringBuffer3
-	call PlaceString
-	xor a
-	ld [MonType], a
-	callba GetGender
-	hlcoord 1, 4
-	ld a, [CurPartySpecies]
-	ld bc, wcd2f
-	ld [bc], a
-	dec bc
-	jr c, asm_11b26a
-	jr z, asm_11b26f
-	ld a, $1
-	ld [bc], a
-
-Function11b267:
-	ld [hl], $ef
-	ret
-
-asm_11b26a
-	xor a
-	ld [bc], a
-	ld [hl], $7f
-	ret
-
-asm_11b26f
-	ld a, $2
-	ld [bc], a
-
-Function11b272:
-	ld [hl], $f5
-	ret
-; 11b275
-
-Function11b275: ; 11b275
-	call Function11b279
-	ret
-; 11b279
-
-Function11b279: ; 11b279
-	ld a, [wd265]
-	ld [CurSpecies], a
-	call Function11b22a
-	jr z, .asm_11b28f
-	call GetBaseData
-	ld a, [BaseGender]
-	ld [wcf65], a
-	jr .asm_11b294
-
-.asm_11b28f
-	ld a, $ff
-	ld [wcf65], a
-
-.asm_11b294
-	ret
-; 11b295
-
-Function11b295: ; 11b295
-	hlcoord 4, 13
-	ld de, String_11b308
-	call PlaceString
-	hlcoord 4, 14
-	ld de, String_11b308
-	call PlaceString
-	call Function11b20b
-	call Function11b22a
-	jr z, .asm_11b2d1
-	ld a, [$c608]
-	ld c, a
-	ld a, [$c608 + 1]
-	ld b, a
-	ld hl, $0007
-	add hl, bc
-	xor a
-	ld [hl], a
-	ld hl, $0003
-	add hl, bc
-	ld e, [hl]
-	callba Function8e9bc
-	hlcoord 4, 14
-	push hl
-	call GetPokemonName
-	jr .asm_11b2e7
-
-.asm_11b2d1
-	ld a, [$c608]
-	ld c, a
-	ld a, [$c608 + 1]
-	ld b, a
-	ld hl, $0007
-	add hl, bc
-	ld a, $50
-	ld [hl], a
-	hlcoord 4, 13
-	push hl
-	ld de, String_11b30e
-
-.asm_11b2e7
-	ld a, $6
-	ld bc, StringBuffer4
-.asm_11b2ec
-	push af
-	ld a, [de]
-	ld [bc], a
-	inc de
-	inc bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_11b2ec
-	pop hl
-	ld de, StringBuffer4
-	call PlaceString
-	ret
-; 11b2fe
-
-String_11b2fe: ; 11b2fe
-	db "あげる#@"
-; 11b303
-
-String_11b303: ; 11b303
-	db "ほしい#@"
-; 11b308
-
-String_11b308: ; 11b308
-	db "     @"
-; 11b30e
-
-String_11b30e: ; 11b30e
-	db "みはっけん@"
-; 11b314
-
-Function11b314: ; 11b314
-	call Function11b31b
-	call Function11b3d9
-	ret
-; 11b31b
-
-Function11b31b: ; 11b31b
-	ld hl, Unknown_11b350
-	ld a, [wJumptableIndex]
-	cp $2
-	jr c, .asm_11b349
-	ld a, [wc7d1]
-	cp $4
-	jr nc, .asm_11b344
-	cp $3
-	jr c, .asm_11b349
-	ld a, [wJumptableIndex]
-	cp $2
-	jr z, .asm_11b349
-	cp $3
-	jr z, .asm_11b349
-	cp $6
-	jr z, .asm_11b349
-
-	ld bc, Unknown_11b37b
-	jr .asm_11b34c
-
-.asm_11b344
-	ld bc, Unknown_11b389
-	jr .asm_11b34c
-
-.asm_11b349
-	ld bc, Unknown_11b36d
-
-.asm_11b34c
-	call Function11b397
-	ret
-; 11b350
-
-Unknown_11b350:
-	db $1a, $5e, $1a, $66, $1a, $6e, $1a, $76, $1a, $7e, $1a, $86, $1a, $8e
-	db $22, $5e, $22, $66, $22, $6e, $22, $76, $22, $7e, $22, $86, $22, $8e
-	db $ff
-
-Unknown_11b36d:
-	db $30, $31, $31, $31, $31, $31, $32, $40, $41, $41, $41, $41, $41, $42
-Unknown_11b37b:
-	db $30, $31, $31, $39, $39, $39, $39, $40, $41, $41, $39, $39, $39, $39
-Unknown_11b389:
-	db $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39
-
-Function11b397: ; 11b397
-	ld de, Sprites
-.asm_11b39a
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wc7d1]
-	and $7
-	swap a
-	add [hl]
-	inc hl
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [bc]
-	inc bc
-	ld [de], a
-	inc de
-	ld a, $5
-	ld [de], a
-	inc de
-	jr .asm_11b39a
-; 11b3b6
-
-Function11b3b6: ; 11b3b6
-.asm_11b3b6
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld a, [wcd4d]
-	and $7
-	swap a
-	add [hl]
-	inc hl
-	ld [de], a
-	inc de
-	ld a, [hli]
-	ld [de], a
-	inc de
-	push hl
-	ld l, c
-	ld h, b
-	ld a, [wcd4e]
-	add [hl]
-	inc bc
-	ld [de], a
-	inc de
-	pop hl
-	ld a, $5
-	ld [de], a
-	inc de
-	jr .asm_11b3b6
-; 11b3d9
-
-Function11b3d9: ; 11b3d9
-	ld de, Sprites + $70
-	push de
-	ld a, [wc7d2]
-	dec a
-	ld e, a
-	ld a, [wc7d1]
-	ld hl, wc7d0
-	add [hl]
-	cp e
-	jr z, .asm_11b40d
-	ld hl, 0
-	ld bc, $0070
-	call AddNTimes
-	ld e, l
-	ld d, h
-	ld b, $0
-	ld a, d
-	or e
-	jr z, .asm_11b40f
-	ld a, [wc7d2]
-	ld c, a
-.asm_11b401
-	ld a, e
-	sub c
-	ld e, a
-	ld a, d
-	sbc $0
-	ld d, a
-	jr c, .asm_11b40f
-	inc b
-	jr .asm_11b401
-
-.asm_11b40d
-	ld b, $70
-
-.asm_11b40f
-	ld a, $15
-	add b
-	pop hl
-	ld [hli], a
-	cp $41
-	jr c, .asm_11b42b
-	ld a, [wJumptableIndex]
-	cp $4
-	jr z, .asm_11b43b
-	cp $5
-	jr z, .asm_11b43b
-	cp $7
-	jr z, .asm_11b43b
-	cp $8
-	jr z, .asm_11b43b
-
-.asm_11b42b
-	ld a, $9b
-	ld [hli], a
-	ld a, [wcd4c]
-	add $3c
-	ld [hli], a
-	ld a, [wcd4c]
-	add $1
-	ld [hl], a
-	ret
-
-.asm_11b43b
-	ld a, $9b
-	ld [hli], a
-	ld a, $39
-	ld [hli], a
-	xor a
-	ld [hl], a
-	ret
-; 11b444
-
-Function11b444: ; 11b444
-	call Function11b44b
-	call Function11b45c
-	ret
-; 11b44b
-
-Function11b44b: ; 11b44b
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	call UpdateTime
-	ret
-; 11b45c
-
-Function11b45c: ; 11b45c
-.asm_11b45c
-	call Function11b46a
-	call DelayFrame
-	ld a, [wJumptableIndex]
-	cp $4
-	jr nz, .asm_11b45c
-	ret
-; 11b46a
-
-Function11b46a: ; 11b46a
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11b479
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11b479
-
-Jumptable_11b479: ; 11b479
-	dw Function11b483
-	dw Function11b570
-	dw Function11b5c0
-	dw Function11b5e0
-	dw Function11b5e7
-; 11b483
-
-Function11b483: ; 11b483
-	call Function11b538
-	ld hl, PlayerName
-	ld a, $5
-.asm_11b48b
-	push af
-	ld a, [hli]
-	ld [bc], a
-	inc bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_11b48b
-	ld de, $0030
-	ld hl, PartyMon1Species
-	ld a, [wcd82]
-	dec a
-	push af
-.asm_11b49f
-	and a
-	jr z, .asm_11b4a6
-	add hl, de
-	dec a
-	jr .asm_11b49f
-
-.asm_11b4a6
-	push bc
-	ld a, $30
-.asm_11b4a9
-	push af
-	ld a, [hli]
-	ld [bc], a
-	inc bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_11b4a9
-	pop de
-	push bc
-	ld a, [de]
-	ld [CurSpecies], a
-	call GetBaseData
-	ld hl, $001f
-	add hl, de
-	ld a, [hl]
-	ld [CurPartyLevel], a
-	ld hl, $0024
-	add hl, de
-	push hl
-	ld hl, $000a
-	add hl, de
-	pop de
-	push de
-	ld b, $1
-	predef CalcPkmnStats
-	pop de
-	ld h, d
-	ld l, e
-rept 2
-	dec hl
-endr
-	ld a, [de]
-	ld [hli], a
-	inc de
-	ld a, [de]
-	ld [hl], a
-	pop bc
-	ld de, $000b
-	ld hl, PartyMonOT
-	pop af
-	push af
-.asm_11b4e8
-	and a
-	jr z, .asm_11b4ef
-	add hl, de
-	dec a
-	jr .asm_11b4e8
-
-.asm_11b4ef
-	ld a, $a
-.asm_11b4f1
-	push af
-	ld a, [hli]
-	ld [bc], a
-	inc bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_11b4f1
-	ld de, $000b
-	ld hl, PartyMonNicknames
-	pop af
-	push af
-.asm_11b502
-	and a
-	jr z, .asm_11b509
-	add hl, de
-	dec a
-	jr .asm_11b502
-
-.asm_11b509
-	ld a, $a
-.asm_11b50b
-	push af
-	ld a, [hli]
-	ld [bc], a
-	inc bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_11b50b
-	ld de, $002f
-	ld hl, $a600
-	pop af
-.asm_11b51b
-	and a
-	jr z, .asm_11b522
-	add hl, de
-	dec a
-	jr .asm_11b51b
-
-.asm_11b522
-	ld a, $0
-	call GetSRAMBank
-	ld a, $2f
-.asm_11b529
-	push af
-	ld a, [hli]
-	ld [bc], a
-	inc bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_11b529
-	call CloseSRAM
-	jp Function11ad8a
-; 11b538
-
-Function11b538: ; 11b538
-	ld bc, BattleMonNick + 5
-	ld a, [PlayerID]
-	ld [wcd2a], a
-	ld [bc], a
-	inc bc
-	ld a, [PlayerID + 1]
-	ld [wcd2b], a
-	ld [bc], a
-	inc bc
-	ld a, [wSecretID]
-	ld [wcd2c], a
-	ld [bc], a
-	inc bc
-	ld a, [wSecretID + 1]
-	ld [wcd2d], a
-	ld [bc], a
-	inc bc
-	ld a, [wcd2e]
-	ld [bc], a
-	inc bc
-	ld a, [wcd2f]
-	ld [bc], a
-	inc bc
-	ld a, [wcd30]
-	ld [bc], a
-	inc bc
-	ld a, [wd265]
-	ld [bc], a
-	inc bc
-	ret
-; 11b570
-
-Function11b570: ; 11b570
-	call Function118007
-	ld a, [ScriptVar]
-	and a
-	jr nz, .asm_11b57f
-	call Function11b585
-	jp Function11ad8a
-
-.asm_11b57f
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; 11b585
-
-Function11b585: ; 11b585
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, $d800
-	ld de, $c608
-	ld bc, $008f
-	call CopyBytes
-	ld a, $1
-	ld [rSVBK], a
-	ld a, $5
-	call GetSRAMBank
-	ld de, $a800
-	ld a, $1
-	ld [de], a
-	inc de
-	ld hl, $c608
-	ld bc, $008f
-	call CopyBytes
-	push de
-	pop hl
-	ld a, [hRTCMinutes]
-	ld [hli], a
-	ld a, [hRTCHours]
-	ld [hli], a
-	ld a, [hRTCDayLo]
-	ld [hli], a
-	ld a, [hRTCDayHi]
-	ld [hl], a
-	call CloseSRAM
-	ret
-; 11b5c0
-
-Function11b5c0: ; 11b5c0
-	ld a, [wcd82]
-	dec a
-	ld [CurPartyMon], a
-	xor a
-	ld [wd10b], a
-	callba Functione039
-	callba Function170807
-	callba Function14a58
-	jp Function11ad8a
-; 11b5e0
-
-Function11b5e0: ; 11b5e0
-	xor a
-	ld [ScriptVar], a
-	jp Function11ad8a
-; 11b5e7
-
-Function11b5e7: ; 11b5e7
-	ret
-; 11b5e8
-
-Function11b5e8: ; 11b5e8
-	ld a, $0
-	call GetSRAMBank
-	ld hl, wRTC
-	ld de, $c608
-	ld bc, $0004
-	call CopyBytes
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $c608
-	ld de, $b08c
-	ld bc, $0004
-	call CopyBytes
-	ld a, $2
-	ld [$a800], a
-	ld a, [$a81f]
-	ld [wcd2a], a
-	ld a, [$a820]
-	ld [wcd2b], a
-	ld a, [$a821]
-	ld [wcd2c], a
-	ld a, [$a822]
-	ld [wcd2d], a
-	ld a, [$a823]
-	ld [wcd2e], a
-	ld a, [$a824]
-	ld [wcd2f], a
-	ld a, [$a825]
-	ld [wcd30], a
-	ld a, [$a826]
-	ld [wcd31], a
-	call CloseSRAM
-	call Function11b44b
-	call Function11b64c
-	ret
-; 11b64c
-
-Function11b64c: ; 11b64c
-.asm_11b64c
-	call Function11b65a
-	call DelayFrame
-	ld a, [wJumptableIndex]
-	cp $1
-	jr nz, .asm_11b64c
-	ret
-; 11b65a
-
-Function11b65a: ; 11b65a
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11b669
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11b669
-
-Jumptable_11b669: ; 11b669
-	dw Function11b66d
-	dw Function11b6b3
-; 11b66d
-
-Function11b66d: ; 11b66d
-	call Function1180b8
-	ld a, [ScriptVar]
-	and a
-	jr nz, .asm_11b6b0
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld a, [StringBuffer2 + 10]
-	ld b, a
-	pop af
-	ld [rSVBK], a
-	ld a, b
-	and a
-	jr z, .asm_11b691
-	cp $1
-	jr nz, .asm_11b6b0
-	call Function11b6b4
-	jr .asm_11b6b0
-
-.asm_11b691
-	callba Function17081d
-	ld a, [ScriptVar]
-	and a
-	jr z, .asm_11b6b0
-	xor a
-	ld [ScriptVar], a
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld a, $2
-	ld [StringBuffer2 + 10], a
-	pop af
-	ld [rSVBK], a
-
-.asm_11b6b0
-	jp Function11ad8a
-; 11b6b3
-
-Function11b6b3: ; 11b6b3
-	ret
-; 11b6b4
-
-Function11b6b4: ; 11b6b4
-	ld a, $5
-	call GetSRAMBank
-	ld a, [wcd30]
-	ld [wc708], a
-	ld a, [wcd31]
-	ld [wc709], a
-	ld a, $8
-	ld [BGMapBuffer], a
-	ld a, $c7
-	ld [wcd21], a
-	ld a, $d
-	ld [CreditsTimer], a
-	ld a, $c6
-	ld [wcd23], a
-	ld a, $3d
-	ld [wcd24], a
-	ld a, $c6
-	ld [wcd25], a
-	ld a, $42
-	ld [wcd26], a
-	ld a, $c6
-	ld [wcd27], a
-	ld a, $47
-	ld [wcd28], a
-	ld a, $c6
-	ld [wcd29], a
-	ld a, $46
-	ld [$c628], a
-	ld de, $c63d
-	ld c, $5
-	callba Function17d073
-	jr nc, .asm_11b70f
-	callba Function17d187
-
-.asm_11b70f
-	ld de, $c63d
-	ld bc, $0105
-	callba Function17d1e1
-	jr nc, .asm_11b723
-	callba Function17d187
-
-.asm_11b723
-	ld de, $c642
-	ld c, $5
-	callba Function17d073
-	jr nc, .asm_11b736
-	callba Function17d199
-
-.asm_11b736
-	ld de, $c642
-	ld bc, $0105
-	callba Function17d1e1
-	jr nc, .asm_11b74a
-	callba Function17d199
-
-.asm_11b74a
-	ld de, $c647
-	ld c, $21
-	callba Function17d073
-	jr nc, .asm_11b75d
-	callba Function17d1ab
-
-.asm_11b75d
-	ld de, $c647
-	ld bc, $0221
-	callba Function17d1e1
-	jr c, .asm_11b770
-	ld a, b
-	cp $2
-	jr nz, .asm_11b776
-
-.asm_11b770
-	callba Function17d1ab
-
-.asm_11b776
-	ld de, $c668
-	ld c, $5
-	callba Function17d073
-	jr nc, .asm_11b789
-	callba Function17d1c9
-
-.asm_11b789
-	ld de, $c668
-	ld bc, $0105
-	callba Function17d1e1
-	jr nc, .asm_11b79d
-	callba Function17d1c9
-
-.asm_11b79d
-	ld a, [$c608 + 6]
-	cp $ff
-	jr nz, .asm_11b7a8
-	xor a
-	ld [$c608 + 6], a
-
-.asm_11b7a8
-	ld a, [wcd31]
-	ld [$c608 + 5], a
-	ld [CurSpecies], a
-	call GetBaseData
-
-	ld hl, $c62c
-	ld a, [hl]
-	cp MIN_LEVEL
-	ld a, MIN_LEVEL
-	jr c, .asm_11b7c5
-	ld a, [hl]
-	cp MAX_LEVEL
-	jr c, .asm_11b7c6
-	ld a, MAX_LEVEL
-.asm_11b7c5
-	ld [hl], a
-.asm_11b7c6
-	ld [CurPartyLevel], a
-
-	ld hl, $c616 + 1
-	ld de, $c62c + 5
-	ld b, $1
-	predef CalcPkmnStats
-	ld de, $c62c + 5
-	ld hl, $c62c + 3
-	ld a, [de]
-	ld [hli], a
-	inc de
-	ld a, [de]
-	ld [hl], a
-	call Function11b98f
-	ret
-; 11b7e5
-
-Function11b7e5: ; 11b7e5
-	ld a, [$c608 + 5]
-	ld [wc702], a
-	ld [CurPartySpecies], a
-	ld a, [wcd81]
-	ld [wc74e], a
-	ld hl, $c63d
-	ld de, wc724
-	ld bc, $0005
-	call CopyBytes
-	ld a, $50
-	ld [de], a
-	ld a, [$c608 + 11]
-	ld [wc731], a
-	ld a, [$c608 + 12]
-	ld [wc732], a
-	ld hl, $c608 + 26
-	ld a, [hli]
-	ld [wc72f], a
-	ld a, [hl]
-	ld [wc730], a
-	ld bc, $c608 + 5
-	callba GetCaughtGender
-	ld a, c
-	ld [wc733], a
-	call SpeechTextBox
-	call FadeToMenu
-	callba Function108016
-	callba Function17d1f1
-	ld a, $1
-	ld [wd1e9], a
-	ld a, $2
-	ld [wLinkMode], a
-	callba Function421d8
-	xor a
-	ld [wLinkMode], a
-	callba Function14a58
-	ld a, $5
-	call GetSRAMBank
-	ld a, $5
-	ld [$a800], a
-	call CloseSRAM
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetMapTrigger
-	ld a, d
-	or e
-	jr z, .asm_11b872
-	ld a, $1
-	ld [de], a
-
-.asm_11b872
-	call Function2b3c
-	call RestartMapMusic
-	ret
-; 11b879
-
-Function11b879: ; 11b879
-	callba Function17089a
-	ld a, [ScriptVar]
-	and a
-	ret z
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$a800]
-	ld [ScriptVar], a
-	ld a, [$a890]
-	ld [wcd49], a
-	ld a, [$a891]
-	ld [wcd4a], a
-	ld a, [$a892]
-	ld [wcd4b], a
-	ld a, [$a893]
-	ld [wcd4c], a
-	call CloseSRAM
-	ld a, [ScriptVar]
-	and a
-	ret z
-	ld hl, wcd4c
-	ld a, [hRTCDayHi]
-	cp [hl]
-	ret nz
-	dec hl
-	ld a, [hRTCDayLo]
-	cp [hl]
-	ret nz
-	ld hl, wcd4a
-	ld a, [hRTCHours]
-	cp [hl]
-	jr nc, .asm_11b8d8
-	ld a, $18
-	sub [hl]
-	ld hl, hRTCHours
-	add [hl]
-	ld [wcd4c], a
-	ld a, [hRTCMinutes]
-	ld [wcd4b], a
-	xor a
-	ld [wcd4a], a
-	jr .asm_11b8e2
-
-.asm_11b8d8
-	ld a, [hRTCMinutes]
-	ld [wcd4b], a
-	ld a, [hRTCHours]
-	ld [wcd4c], a
-
-.asm_11b8e2
-	xor a
-	ld l, a
-	ld h, a
-	ld b, a
-	ld d, a
-	ld a, [wcd4b]
-	ld e, a
-	ld a, [wcd4c]
-	ld c, $3c
-	call AddNTimes
-	add hl, de
-	push hl
-	xor a
-	ld l, a
-	ld h, a
-	ld b, a
-	ld d, a
-	ld a, [wcd49]
-	ld e, a
-	ld a, [wcd4a]
-	ld c, $3c
-	call AddNTimes
-	add hl, de
-	ld a, l
-	cpl
-	add $1
-	ld e, a
-	ld a, h
-	cpl
-	adc $0
-	ld d, a
-	pop hl
-	add hl, de
-	ld de, $ff88
-	add hl, de
-	bit 7, h
-	ret z
-	ld a, $2
-	ld [ScriptVar], a
-	ret
-; 11b920
-
-Function11b920: ; 11b920
-	call Function11b44b
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a81f
-	ld de, BattleMonNick + 5
-	ld bc, $0008
-	call CopyBytes
-	call CloseSRAM
-	call Function118000
-	ret
-; 11b93b
-
-Function11b93b: ; 11b93b
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$a800], a
-	ld hl, $a823
-	ld de, wEnemyMoveStruct
-	ld bc, $008f
-	call CopyBytes
-	call CloseSRAM
-	ld a, wEnemyMoveStruct % $100
-	ld [wcd20], a
-	ld a, wEnemyMoveStruct / $100
-	ld [wcd21], a
-	ld a, $c611 % $100
-	ld [wcd22], a
-	ld a, $c611 / $100
-	ld [wcd23], a
-	ld a, $c641 % $100
-	ld [wcd24], a
-	ld a, $c641 / $100
-	ld [wcd25], a
-	ld a, $c646 % $100
-	ld [wcd26], a
-	ld a, $c646 / $100
-	ld [wcd27], a
-	ld a, $c64b % $100
-	ld [wcd28], a
-	ld a, $c64b / $100
-	ld [wcd29], a
-	call Function11b98f
-	callba Function14a58
-	ret
-; 11b98f
-
-Function11b98f: ; 11b98f
-	ld hl, PartyCount
-	ld a, [hl]
-	ld e, a
-	inc [hl]
-	ld a, [wcd20]
-	ld l, a
-	ld a, [wcd21]
-	ld h, a
-	inc hl
-	ld bc, PartySpecies
-	ld d, e
-.loop1
-	inc bc
-	dec d
-	jr nz, .loop1
-	ld a, e
-	ld [CurPartyMon], a
-	ld a, [hl]
-	ld [bc], a
-	inc bc
-	ld a, $ff
-	ld [bc], a
-	ld hl, PartyMon1Species
-	ld bc, PartyMon2 - PartyMon1
-	ld a, e
-	ld [wcd2a], a
-.loop2
-	add hl, bc
-	dec a
-	and a
-	jr nz, .loop2
-	ld e, l
-	ld d, h
-	ld a, [CreditsTimer]
-	ld l, a
-	ld a, [wcd23]
-	ld h, a
-	ld bc, PartyMon2 - PartyMon1
-	call CopyBytes
-	ld hl, PartyMonOT
-	ld bc, NAME_LENGTH
-	ld a, [wcd2a]
-.loop3
-	add hl, bc
-	dec a
-	and a
-	jr nz, .loop3
-	ld e, l
-	ld d, h
-	ld a, [wcd24]
-	ld l, a
-	ld a, [wcd25]
-	ld h, a
-	ld bc, PKMN_NAME_LENGTH - 1
-	call CopyBytes
-	ld a, "@"
-	ld [de], a
-	ld hl, PartyMonNicknames
-	ld bc, PKMN_NAME_LENGTH
-	ld a, [wcd2a]
-.loop4
-	add hl, bc
-	dec a
-	and a
-	jr nz, .loop4
-	ld e, l
-	ld d, h
-	ld a, [wcd26]
-	ld l, a
-	ld a, [wcd27]
-	ld h, a
-	ld bc, PKMN_NAME_LENGTH - 1
-	call CopyBytes
-	ld a, "@"
-	ld [de], a
-	ld hl, s0_a600
-	ld bc, party_struct_length - 1
-	ld a, [wcd2a]
-.loop5
-	add hl, bc
-	dec a
-	and a
-	jr nz, .loop5
-	ld a, $0
-	call GetSRAMBank
-	ld e, l
-	ld d, h
-	ld a, [wcd28]
-	ld l, a
-	ld a, [wcd29]
-	ld h, a
-	ld bc, party_struct_length - 1
-	call CopyBytes
-	call CloseSRAM
-	ret
-; 11ba38
-
-Function11ba38: ; 11ba38
-	callba CheckCurPartyMonFainted
-	ret c
-	xor a
-	ld [ScriptVar], a
-	ret
-; 11ba44
-
-Unknown_11ba44:
-	db $47, $30, $0a, $0a, $0a, $0a, $0a, $56
-	db $46, $2f, $0a, $0a, $0a, $0a, $0a, $55
-	db $45, $3d, $0a, $0a, $0a, $0a, $0a, $54
-	db $44, $30, $0a, $0a, $0a, $0a, $0a, $53
-	db $43, $2f, $0a, $0a, $0a, $0a, $0a, $52
-	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $51
-	db $4a, $30, $0a, $0a, $0a, $0a, $0a, $50
-	db $4a, $2f, $0a, $0a, $0a, $0a, $0a, $4f
-	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $4e
-	db $4a, $30, $0a, $0a, $0a, $0a, $4d, $42
-	db $4a, $2f, $0a, $0a, $0a, $0a, $6b, $58
-	db $4a, $3d, $0a, $0a, $0a, $0a, $6a, $58
-	db $4a, $30, $0a, $0a, $0a, $0a, $69, $58
-	db $4a, $2f, $0a, $0a, $0a, $0a, $68, $58
-	db $4a, $3d, $0a, $0a, $0a, $66, $67, $58
-	db $4a, $30, $0a, $0a, $0a, $65, $0a, $58
-	db $4a, $2f, $0a, $0a, $0a, $64, $0a, $58
-	db $4a, $3d, $0a, $0a, $0a, $63, $0a, $58
-	db $4a, $30, $0a, $0a, $61, $62, $0a, $58
-	db $4a, $2f, $0a, $0a, $5f, $60, $0a, $58
-	db $4a, $3d, $0a, $61, $62, $0a, $0a, $58
-	db $4a, $30, $0a, $63, $0a, $0a, $0a, $58
-	db $4a, $2f, $69, $0a, $0a, $0a, $0a, $58
-	db $4a, $3d, $81, $0a, $0a, $0a, $0a, $58
-	db $4a, $30, $80, $0a, $0a, $0a, $0a, $58
-	db $4a, $2f, $7f, $0a, $0a, $0a, $0a, $58
-	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $58
-	db $4a, $30, $0a, $0a, $0a, $0a, $0a, $58
-	db $4a, $2f, $68, $87, $88, $89, $0a, $58
-	db $4a, $3d, $6e, $6f, $70, $75, $76, $58
-	db $4a, $30, $75, $76, $5c, $5d, $5e, $58
-	db $4a, $2f, $71, $72, $73, $74, $6d, $58
-	db $4a, $3d, $75, $76, $77, $8a, $8b, $58
-	db $4a, $30, $66, $67, $65, $0a, $6a, $58
-	db $4a, $2f, $83, $84, $0a, $83, $84, $58
-	db $4a, $3d, $0a, $85, $82, $84, $0a, $58
-	db $4a, $30, $41, $80, $40, $0a, $0a, $58
-	db $4a, $2f, $83, $0a, $0a, $0a, $0a, $58
-	db $4a, $3d, $40, $0a, $0a, $0a, $0a, $58
-	db $ff
-
-Unknown_11bb7d:
-	db $0a, $0a, $0a, $0a, $0a, $0a, $16, $00
-	db $78, $0a, $0a, $0a, $0a, $0a, $8c, $00
-	db $79, $0a, $0a, $0a, $0a, $0a, $8d, $00
-	db $7a, $0a, $0a, $0a, $0a, $0a, $8e, $00
-	db $7b, $0a, $0a, $0a, $0a, $0a, $8c, $00
-	db $7c, $0a, $0a, $0a, $0a, $0a, $8d, $00
-	db $7d, $0a, $0a, $0a, $0a, $0a, $8e, $00
-	db $2e, $7e, $0a, $0a, $0a, $0a, $8c, $00
-	db $2e, $80, $0a, $0a, $0a, $0a, $8d, $00
-	db $2e, $81, $0a, $0a, $0a, $0a, $8e, $00
-	db $2e, $82, $0a, $0a, $0a, $0a, $8c, $00
-	db $2e, $69, $0a, $0a, $0a, $0a, $8d, $00
-	db $2e, $6a, $0a, $0a, $0a, $0a, $8e, $00
-	db $2e, $6b, $0a, $0a, $0a, $0a, $8c, $00
-	db $2e, $0a, $68, $0a, $0a, $0a, $8d, $00
-	db $2e, $0a, $69, $0a, $0a, $0a, $8e, $00
-	db $2e, $0a, $0a, $6a, $0a, $0a, $8c, $00
-	db $2e, $0a, $0a, $6b, $0a, $0a, $8d, $00
-	db $2e, $0a, $0a, $0a, $80, $0a, $8e, $00
-	db $2e, $0a, $0a, $0a, $82, $0a, $8c, $00
-	db $2e, $0a, $0a, $0a, $6c, $0a, $8d, $00
-	db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00
-	db $2e, $0a, $6b, $0a, $0a, $0a, $8c, $00
-	db $2e, $0a, $0a, $69, $0a, $0a, $8d, $00
-	db $2e, $0a, $0a, $6a, $0a, $0a, $8e, $00
-	db $2e, $0a, $0a, $0a, $68, $0a, $8c, $00
-	db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00
-	db $2e, $0a, $0a, $61, $62, $0a, $8e, $00
-	db $2e, $0a, $0a, $0a, $5f, $60, $8c, $00
-	db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00
-	db $2e, $0a, $0a, $0a, $0a, $69, $8c, $00
-	db $2e, $0a, $0a, $0a, $0a, $6b, $8d, $00
-	db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00
-	db $2e, $0a, $0a, $0a, $0a, $86, $8c, $00
-	db $2e, $0a, $85, $0a, $0a, $0a, $8d, $00
-	db $2e, $0a, $0a, $84, $0a, $0a, $8e, $00
-	db $ff
-
-
-SECTION "bank47", ROMX, BANK[$47]
-
-StoreText:: ; 11c000
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-IF DEF(CRYSTAL11)
-	ld hl, wd10a
-ELSE
-	ld hl, wd105
-ENDC
-	ld a, [hl]
-	dec a
-	ld e, a
-	ld d, 0
-	ld hl, Unknown_11f2f0
-	add hl, de
-	ld a, [hl]
-	and a
-	jr nz, .asm_11c026
-	ld a, [hRandomAdd]
-	and $1f
-	cp $19
-	jr c, .asm_11c021
-	sub $19
-
-.asm_11c021
-	ld hl, BTTrainerTexts
-	jr .asm_11c033
-
-.asm_11c026
-	ld a, [hRandomAdd]
-	and $f
-	cp $f
-	jr c, .asm_11c030
-	sub $f
-
-.asm_11c030
-	ld hl, Unknown_11f3ce
-
-.asm_11c033
-	ld b, 0
-	dec c
-	jr nz, .asm_11c03d
-	ld [wd000 + $200], a
-	jr .asm_11c040
-
-.asm_11c03d
-	ld a, [wd000 + $200]
-
-.asm_11c040
-	push af
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld c, a
-	ld a, [hl]
-	ld h, a
-	ld l, c
-	pop af
-	ld c, a
-	ld b, 0
-rept 2
-	add hl, bc
-endr
-	ld a, [hli]
-	ld c, a
-	ld a, [hl]
-	ld l, c
-	ld h, a
-	bccoord 1, 14
-	pop af
-	ld [rSVBK], a
-	call PlaceWholeStringInBoxAtOnce
-	ret
-; 11c05d
-
-Function11c05d: ; 11c05d
-	ld a, e
-	or d
-	jr z, .asm_11c071
-	ld a, e
-	and d
-	cp $ff
-	jr z, .asm_11c071
-	push hl
-	call Function11c156
-	pop hl
-	call PlaceString
-	and a
-	ret
-
-.asm_11c071
-	ld c, l
-	ld b, h
-	scf
-	ret
-; 11c075
-
-Function11c075: ; 11c075
-	push de
-	ld a, c
-	call Function11c254
-	pop de
-	ld bc, wcd36
-	call Function11c08f
-	ret
-; 11c082
-
-Function11c082: ; 11c082
-	push de
-	ld a, c
-	call Function11c254
-	pop de
-	ld bc, wcd36
-	call Function11c0c6
-	ret
-; 11c08f
-
-Function11c08f: ; 11c08f
-	ld l, e
-	ld h, d
-	push hl
-	ld a, $3
-.asm_11c094
-	push af
-	ld a, [bc]
-	ld e, a
-	inc bc
-	ld a, [bc]
-	ld d, a
-	inc bc
-	push bc
-	call Function11c05d
-	jr c, .asm_11c0a2
-	inc bc
-
-.asm_11c0a2
-	ld l, c
-	ld h, b
-	pop bc
-	pop af
-	dec a
-	jr nz, .asm_11c094
-	pop hl
-	ld de, $0028
-	add hl, de
-	ld a, $3
-.asm_11c0b0
-	push af
-	ld a, [bc]
-	ld e, a
-	inc bc
-	ld a, [bc]
-	ld d, a
-	inc bc
-	push bc
-	call Function11c05d
-	jr c, .asm_11c0be
-	inc bc
-
-.asm_11c0be
-	ld l, c
-	ld h, b
-	pop bc
-	pop af
-	dec a
-	jr nz, .asm_11c0b0
-	ret
-; 11c0c6
-
-
-Function11c0c6: ; 11c0c6
-	ld a, [wJumptableIndex]
-	ld l, a
-	ld a, [wcf64]
-	ld h, a
-	push hl
-	ld hl, $c608 + 16
-	ld a, $0
-	ld [hli], a
-	push de
-	xor a
-	ld [wJumptableIndex], a
-	ld a, $12
-	ld [wcf64], a
-	ld a, $6
-.asm_11c0e1
-	push af
-	ld a, [bc]
-	ld e, a
-	inc bc
-	ld a, [bc]
-	ld d, a
-	inc bc
-	or e
-	jr z, .asm_11c133
-	push hl
-	push bc
-	call Function11c156
-	call Function11c14a
-	ld e, c
-	pop bc
-	pop hl
-	ld a, e
-	or a
-	jr z, .asm_11c133
-.asm_11c0fa
-	ld a, [wcf64]
-	cp $12
-	jr z, .asm_11c102
-	inc e
-
-.asm_11c102
-	cp e
-	jr nc, .asm_11c11c
-	ld a, [wJumptableIndex]
-	inc a
-	ld [wJumptableIndex], a
-	ld [hl], $4e
-	rra
-	jr c, .asm_11c113
-	ld [hl], $55
-
-.asm_11c113
-	inc hl
-	ld a, $12
-	ld [wcf64], a
-	dec e
-	jr .asm_11c0fa
-
-.asm_11c11c
-	cp $12
-	jr z, .asm_11c123
-	ld [hl], $7f
-	inc hl
-
-.asm_11c123
-	sub e
-	ld [wcf64], a
-	ld de, $c608
-.asm_11c12a
-	ld a, [de]
-	cp $50
-	jr z, .asm_11c133
-	inc de
-	ld [hli], a
-	jr .asm_11c12a
-
-.asm_11c133
-	pop af
-	dec a
-	jr nz, .asm_11c0e1
-	ld [hl], $57
-	pop bc
-	ld hl, $c608 + 16
-	call PlaceWholeStringInBoxAtOnce
-	pop hl
-	ld a, l
-	ld [wJumptableIndex], a
-	ld a, h
-	ld [wcf64], a
-	ret
-; 11c14a
-
-Function11c14a: ; 11c14a
-	ld c, $0
-	ld hl, $c608
-.asm_11c14f
-	ld a, [hli]
-	cp $50
-	ret z
-	inc c
-	jr .asm_11c14f
-; 11c156
-
-Function11c156: ; 11c156
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, $50
-	ld hl, $c608
-	ld bc, $000b
-	call ByteFill
-	ld a, d
-	and a
-	jr z, .asm_11c19c
-	ld hl, Unknown_11daac
-	dec d
-	sla d
-	ld c, d
-	ld b, $0
-	add hl, bc
-	ld a, [hli]
-	ld c, a
-	ld a, [hl]
-	ld b, a
-	push bc
-	pop hl
-	ld c, e
-	ld b, $0
-	sla c
-	rl b
-	sla c
-	rl b
-	sla c
-	rl b
-	add hl, bc
-	ld bc, $0005
-.asm_11c18f
-	ld de, $c608
-	call CopyBytes
-	ld de, $c608
-	pop af
-	ld [rSVBK], a
-	ret
-
-.asm_11c19c
-	ld a, e
-	ld [wd265], a
-	call GetPokemonName
-	ld hl, StringBuffer1
-	ld bc, $000a
-	jr .asm_11c18f
-; 11c1ab
-
-Function11c1ab: ; 11c1ab
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call Function11c1b9
-	pop af
-	ld [hInMenu], a
-	ret
-; 11c1b9
-
-Function11c1b9: ; 11c1b9
-	call Function11c1ca
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	call Function11c283
-	pop af
-	ld [rSVBK], a
-	ret
-; 11c1ca
-
-Function11c1ca: ; 11c1ca
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ld [wcd23], a
-	ld [BGMapBuffer], a
-	ld [wcd21], a
-	ld [CreditsTimer], a
-	ld [wcd35], a
-	ld [wcd2b], a
-	ld a, $ff
-	ld [wcd24], a
-	ld a, [wcfa9]
-	dec a
-	call Function11c254
-	call WhiteBGMap
-	call ClearSprites
-	call ClearScreen
-	call Function11d323
-	call SetPalettes
-	call DisableLCD
-	ld hl, GFX_11d67e
-	ld de, VTiles2
-	ld bc, $60
-	call CopyBytes
-	ld hl, LZ_11d6de
-	ld de, VTiles0
-	call Decompress
-	call EnableLCD
-	callba Function104061
-	callba Function8cf53
-	callba LoadPokemonData
-	callba Function40c30
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, $c6d0
-	ld de, LYOverrides
-	ld bc, $100
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	call Function11d4aa
-	call Function11d3ba
-	ret
-; 11c254
-
-Function11c254: ; 11c254
-	push af
-	ld a, $4
-	call GetSRAMBank
-	ld hl, $a007
-	pop af
-	sla a
-	sla a
-	ld c, a
-	sla a
-	add c
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld de, wcd36
-	ld bc, $000c
-	call CopyBytes
-	call CloseSRAM
-	ret
-; 11c277
-
-
-Function11c277: ; 11c277 (47:4277)
-	ld a, $7f
-	hlcoord 0, 6
-	ld bc, $f0
-	call ByteFill
-	ret
-
-Function11c283: ; 11c283
-.asm_11c283
-	call JoyTextDelay
-	ld a, [hJoyPressed]
-	ld [hJoypadPressed], a
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_11c2a2
-	call Function11c2ac
-	callba Function8cf69
-	callba Function104061
-	jr .asm_11c283
-
-.asm_11c2a2
-	callba Function8cf53
-	call ClearSprites
-	ret
-; 11c2ac
-
-Function11c2ac: ; 11c2ac
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11c2bb
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 11c2bb
-
-
-Jumptable_11c2bb: ; 11c2bb (47:42bb)
-	dw Function11c2e9
-	dw Function11c346
-	dw Function11c35f
-	dw Function11c373
-	dw Function11c3c2
-	dw Function11c3ed
-	dw Function11c52c
-	dw Function11c53d
-	dw Function11c658
-	dw Function11c675
-	dw Function11c9bd
-	dw Function11c9c3
-	dw Function11caad
-	dw Function11cab3
-	dw Function11cb52
-	dw Function11cb66
-	dw Function11cbf5
-	dw Function11ccef
-	dw Function11cd04
-	dw Function11cd20
-	dw Function11cd54
-	dw Function11ce0b
-	dw Function11ce2b
-
-
-Function11c2e9: ; 11c2e9 (47:42e9)
-	lb de, $1a, $0d
-	ld a, $1d
-	call Function3b2a
-	lb de, $42, $0d
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $1
-	ld [hl], a
-	lb de, $4a, $10
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $3
-	ld [hl], a
-	lb de, $50, $80
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $4
-	ld [hl], a
-	lb de, $50, $20
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $5
-	ld [hl], a
-	lb de, $50, $10
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $2
-	ld [hl], a
-	ld hl, wcd23
-	set 1, [hl]
-	set 2, [hl]
-	jp Function11cfb5
-
-Function11c346: ; 11c346 (47:4346)
-	ld a, $9
-	ld [wcd2d], a
-	ld a, $2
-	ld [wcd2e], a
-	ld [wcd2f], a
-	ld [wcd30], a
-	ld de, wcd2d
-	call Function11cfce
-	jp Function11cfb5
-
-Function11c35f: ; 11c35f (47:435f)
-	ld hl, wcd2f
-rept 2
-	inc [hl]
-endr
-rept 2
-	dec hl
-endr
-	dec [hl]
-	push af
-	ld de, wcd2d
-	call Function11cfce
-	pop af
-	ret nz
-	jp Function11cfb5
-
-Function11c373: ; 11c373 (47:4373)
-	ld hl, wcd30
-rept 2
-	inc [hl]
-endr
-rept 2
-	dec hl
-endr
-	dec [hl]
-	push af
-	ld de, wcd2d
-	call Function11cfce
-	pop af
-	ret nz
-	call Function11c38a
-	jp Function11cfb5
-
-Function11c38a: ; 11c38a (47:438a)
-	ld hl, Unknown_11c986
-	ld bc, wcd36
-	ld a, $6
-.asm_11c392
-	push af
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	push hl
-	push de
-	pop hl
-	ld a, [bc]
-	inc bc
-	ld e, a
-	ld a, [bc]
-	inc bc
-	ld d, a
-	push bc
-	or e
-	jr z, .asm_11c3af
-	ld a, e
-	and d
-	cp $ff
-	jr z, .asm_11c3af
-	call Function11c05d
-	jr .asm_11c3b5
-.asm_11c3af
-	ld de, String_11c3bc
-	call PlaceString
-.asm_11c3b5
-	pop bc
-	pop hl
-	pop af
-	dec a
-	jr nz, .asm_11c392
-	ret
-; 11c3bc (47:43bc)
-
-String_11c3bc: ; 11c3bc
-	db "ーーーーー@"
-; 11c3c2
-
-Function11c3c2: ; 11c3c2 (47:43c2)
-	call Function11c277
-	ld de, Unknown_11cfbe
-	call Function11d035
-	hlcoord 1, 7
-	ld de, String_11c4db
-	call PlaceString
-	hlcoord 1, 16
-	ld de, String_11c51b
-	call PlaceString
-	call Function11c4be
-	ld hl, wcd23
-	set 0, [hl]
-	ld hl, wcd24
-	res 0, [hl]
-	call Function11cfb5
-
-Function11c3ed: ; 11c3ed (47:43ed)
-	ld hl, BGMapBuffer ; wcd20 (aliases: CreditsPos)
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and $8
-	jr nz, .asm_11c426
-	ld a, [de]
-	and $2
-	jr nz, .asm_11c41a
-	ld a, [de]
-	and $1
-	jr nz, .asm_11c42c
-	ld de, hJoyLast
-	ld a, [de]
-	and $40
-	jr nz, .asm_11c47c
-	ld a, [de]
-	and $80
-	jr nz, .asm_11c484
-	ld a, [de]
-	and $20
-	jr nz, .asm_11c48c
-	ld a, [de]
-	and $10
-	jr nz, .asm_11c498
-	ret
-.asm_11c41a
-	call PlayClickSFX
-.asm_11c41d
-	ld hl, wcd24
-	set 0, [hl]
-	ld a, $c
-	jr .asm_11c475
-.asm_11c426
-	ld a, $8
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
-	ret
-.asm_11c42c
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
-	cp $6
-	jr c, .asm_11c472
-	sub $6
-	jr z, .asm_11c469
-	dec a
-	jr z, .asm_11c41d
-	ld hl, wcd36
-	ld c, $c
-	xor a
-.asm_11c440
-	or [hl]
-	inc hl
-	dec c
-	jr nz, .asm_11c440
-	and a
-	jr z, .asm_11c460
-	ld de, Unknown_11cfba
-	call Function11cfce
-	decoord 1, 2
-	ld bc, wcd36
-	call Function11c08f
-	ld hl, wcd24
-	set 0, [hl]
-	ld a, $e
-	jr .asm_11c475
-.asm_11c460
-	ld hl, wcd24
-	set 0, [hl]
-	ld a, $11
-	jr .asm_11c475
-.asm_11c469
-	ld hl, wcd24
-	set 0, [hl]
-	ld a, $a
-	jr .asm_11c475
-.asm_11c472
-	call Function11c4a5
-.asm_11c475
-	ld [wJumptableIndex], a
-	call PlayClickSFX
-	ret
-.asm_11c47c
-	ld a, [hl]
-	cp $3
-	ret c
-	sub $3
-	jr .asm_11c4a3
-.asm_11c484
-	ld a, [hl]
-	cp $6
-	ret nc
-	add $3
-	jr .asm_11c4a3
-.asm_11c48c
-	ld a, [hl]
-	and a
-	ret z
-	cp $3
-	ret z
-	cp $6
-	ret z
-	dec a
-	jr .asm_11c4a3
-.asm_11c498
-	ld a, [hl]
-	cp $2
-	ret z
-	cp $5
-	ret z
-	cp $8
-	ret z
-	inc a
-.asm_11c4a3
-	ld [hl], a
-	ret
-
-Function11c4a5: ; 11c4a5 (47:44a5)
-	ld hl, wcd23
-	res 0, [hl]
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_11c4b7
-	xor a
-	ld [wcd21], a
-	ld a, $6
-	ret
-.asm_11c4b7
-	xor a
-	ld [CreditsTimer], a
-	ld a, $15
-	ret
-
-Function11c4be: ; 11c4be (47:44be)
-	ld a, $1
-	hlcoord 0, 6, AttrMap
-	ld bc, $a0
-	call ByteFill
-	ld a, $7
-	hlcoord 0, 14, AttrMap
-	ld bc, $28
-	call ByteFill
-	callba Function104061
-	ret
-; 11c4db (47:44db)
-
-String_11c4db: ; 11c4db
-	db   "6つのことば", $1f, "くみあわせます"
-	next "かえたいところ", $1f, "えらぶと でてくる"
-	next "ことばのグループから いれかえたい"
-	next "たんご", $1f, "えらんでください"
-	db   "@"
-; 11c51b
-
-String_11c51b: ; 11c51b
-	db "ぜんぶけす やめる   けってい@"
-; 11c52c
-
-Function11c52c: ; 11c52c (47:452c)
-	call Function11c277
-	call Function11c5f0
-	call Function11c618
-	ld hl, wcd24
-	res 1, [hl]
-	call Function11cfb5
-
-Function11c53d: ; 11c53d (47:453d)
-	ld hl, wcd21
-	ld de, hJoypadPressed ; $ffa3
-
-	ld a, [de]
-	and START
-	jr nz, .start
-
-	ld a, [de]
-	and SELECT
-	jr nz, .select
-
-	ld a, [de]
-	and B_BUTTON
-	jr nz, .b
-
-	ld a, [de]
-	and A_BUTTON
-	jr nz, .a
-
-	ld de, hJoyLast
-
-	ld a, [de]
-	and D_UP
-	jr nz, .up
-
-	ld a, [de]
-	and D_DOWN
-	jr nz, .down
-
-	ld a, [de]
-	and D_LEFT
-	jr nz, .left
-
-	ld a, [de]
-	and D_RIGHT
-	jr nz, .right
-
-	ret
-
-.a
-	ld a, [wcd21]
-	cp $f
-	jr c, .asm_11c59d
-	sub $f
-	jr z, .asm_11c5ab
-	dec a
-	jr z, .asm_11c599
-	jr .b
-
-.start
-	ld hl, wcd24
-	set 0, [hl]
-	ld a, $8
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
-
-.b
-	ld a, $4
-	jr .asm_11c59f
-
-.select
-	ld a, [wcd2b]
-	xor $1
-	ld [wcd2b], a
-	ld a, $15
-	jr .asm_11c59f
-
-.asm_11c599
-	ld a, $13
-	jr .asm_11c59f
-
-.asm_11c59d
-	ld a, $8
-
-.asm_11c59f
-	ld hl, wcd24
-	set 1, [hl]
-	ld [wJumptableIndex], a
-	call PlayClickSFX
-	ret
-
-.asm_11c5ab
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
-	call Function11ca6a
-	call PlayClickSFX
-	ret
-
-.up
-	ld a, [hl]
-	cp $3
-	ret c
-	sub $3
-	jr .asm_11c5ee
-
-.down
-	ld a, [hl]
-	cp $f
-	ret nc
-	add $3
-	jr .asm_11c5ee
-
-.left
-	ld a, [hl]
-	and a
-	ret z
-	cp $3
-	ret z
-	cp $6
-	ret z
-	cp $9
-	ret z
-	cp $c
-	ret z
-	cp $f
-	ret z
-	dec a
-	jr .asm_11c5ee
-
-.right
-	ld a, [hl]
-	cp $2
-	ret z
-	cp $5
-	ret z
-	cp $8
-	ret z
-	cp $b
-	ret z
-	cp $e
-	ret z
-	cp $11
-	ret z
-	inc a
-
-.asm_11c5ee
-	ld [hl], a
-	ret
-; 11c5f0
-
-Function11c5f0: ; 11c5f0 (47:45f0)
-	ld de, Strings_11da52
-	ld bc, Unknown_11c63a
-	ld a, $f
-.asm_11c5f8
-	push af
-	ld a, [bc]
-	inc bc
-	ld l, a
-	ld a, [bc]
-	inc bc
-	ld h, a
-	push bc
-	call PlaceString
-.asm_11c603
-	inc de
-	ld a, [de]
-	cp $50
-	jr z, .asm_11c603
-	pop bc
-	pop af
-	dec a
-	jr nz, .asm_11c5f8
-	hlcoord 1, 17
-	ld de, String_11c62a
-	call PlaceString
-	ret
-
-Function11c618: ; 11c618 (47:4618)
-	ld a, $2
-	hlcoord 0, 6, AttrMap
-	ld bc, $c8
-	call ByteFill
-	callba Function104061
-	ret
-; 11c62a (47:462a)
-
-String_11c62a: ; 11c62a
-	db "けす    モード   やめる@"
-; 11c63a
-
-Unknown_11c63a: ; 11c63a
-	dwcoord  1,  7
-	dwcoord  7,  7
-	dwcoord 13,  7
-	dwcoord  1,  9
-	dwcoord  7,  9
-	dwcoord 13,  9
-	dwcoord  1, 11
-	dwcoord  7, 11
-	dwcoord 13, 11
-	dwcoord  1, 13
-	dwcoord  7, 13
-	dwcoord 13, 13
-	dwcoord  1, 15
-	dwcoord  7, 15
-	dwcoord 13, 15
-; 11c658
-
-Function11c658: ; 11c658 (47:4658)
-	call Function11c277
-	call Function11c770
-	ld de, Unknown_11cfc2
-	call Function11d035
-	call Function11c9ab
-	call Function11c7bc
-	call Function11c86e
-	ld hl, wcd24
-	res 3, [hl]
-	call Function11cfb5
-
-Function11c675: ; 11c675 (47:4675)
-	ld hl, wcd25
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [de]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [de]
-	and START
-	jr nz, .start
-	ld a, [de]
-	and SELECT
-	jr z, .select
-
-	ld a, [wcd26]
-	and a
-	ret z
-	sub $c
-	jr nc, .asm_11c699
-	xor a
-.asm_11c699
-	ld [wcd26], a
-	jr .asm_11c6c4
-
-.start
-	ld hl, wcd28
-	ld a, [wcd26]
-	add $c
-	cp [hl]
-	ret nc
-	ld [wcd26], a
-	ld a, [hl]
-	ld b, a
-	ld hl, wcd25
-	ld a, [wcd26]
-	add [hl]
-	jr c, .asm_11c6b9
-	cp b
-	jr c, .asm_11c6c4
-.asm_11c6b9
-	ld a, [wcd28]
-	ld hl, wcd26
-	sub [hl]
-	dec a
-	ld [wcd25], a
-.asm_11c6c4
-	call Function11c992
-	call Function11c7bc
-	call Function11c86e
-	ret
-
-.select
-	ld de, hJoyLast
-	ld a, [de]
-	and D_UP
-	jr nz, .asm_11c708
-	ld a, [de]
-	and D_DOWN
-	jr nz, .asm_11c731
-	ld a, [de]
-	and D_LEFT
-	jr nz, .asm_11c746
-	ld a, [de]
-	and D_RIGHT
-	jr nz, .asm_11c755
-	ret
-
-.a
-	call Function11c8f6
-	ld a, $4
-	ld [wcd35], a
-	jr .asm_11c6fc
-.b
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_11c6fa
-	ld a, $6
-	jr .asm_11c6fc
-.asm_11c6fa
-	ld a, $15
-.asm_11c6fc
-	ld [wJumptableIndex], a
-	ld hl, wcd24
-	set 3, [hl]
-	call PlayClickSFX
-	ret
-.asm_11c708
-	ld a, [hl]
-	cp $3
-	jr c, .asm_11c711
-	sub $3
-	jr .asm_11c76e
-.asm_11c711
-	ld a, [wcd26]
-	sub $3
-	ret c
-	ld [wcd26], a
-	jr .asm_11c6c4
-.asm_11c71c
-	ld hl, wcd28
-	ld a, [wcd26]
-	add $c
-	ret c
-	cp [hl]
-	ret nc
-	ld a, [wcd26]
-	add $3
-	ld [wcd26], a
-	jr .asm_11c6c4
-.asm_11c731
-	ld a, [wcd28]
-	ld b, a
-	ld a, [wcd26]
-	add [hl]
-	add $3
-	cp b
-	ret nc
-	ld a, [hl]
-	cp $9
-	jr nc, .asm_11c71c
-	add $3
-	jr .asm_11c76e
-.asm_11c746
-	ld a, [hl]
-	and a
-	ret z
-	cp $3
-	ret z
-	cp $6
-	ret z
-	cp $9
-	ret z
-	dec a
-	jr .asm_11c76e
-.asm_11c755
-	ld a, [wcd28]
-	ld b, a
-	ld a, [wcd26]
-	add [hl]
-	inc a
-	cp b
-	ret nc
-	ld a, [hl]
-	cp $2
-	ret z
-	cp $5
-	ret z
-	cp $8
-	ret z
-	cp $b
-	ret z
-	inc a
-.asm_11c76e
-	ld [hl], a
-	ret
-
-Function11c770: ; 11c770 (47:4770)
-	xor a
-	ld [wcd25], a
-	ld [wcd26], a
-	ld [wcd27], a
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_11c7ab
-	ld a, [wcd21]
-	and a
-	jr z, .asm_11c799
-	dec a
-	sla a
-	ld hl, Unknown_11f220
-	ld c, a
-	ld b, 0
-	add hl, bc
-	ld a, [hli]
-	ld [wcd28], a
-	ld a, [hl]
-.asm_11c795
-	ld [wcd29], a
-	ret
-.asm_11c799
-	ld a, [wc7d2]
-	ld [wcd28], a
-.asm_11c79f
-	ld c, $c
-	call SimpleDivide
-	and a
-	jr nz, .asm_11c7a8
-	dec b
-.asm_11c7a8
-	ld a, b
-	jr .asm_11c795
-.asm_11c7ab
-	ld hl, $c68a + 30
-	ld a, [CreditsTimer]
-	ld c, a
-	ld b, 0
-rept 2
-	add hl, bc
-endr
-	ld a, [hl]
-	ld [wcd28], a
-	jr .asm_11c79f
-
-Function11c7bc: ; 11c7bc (47:47bc)
-	ld bc, Unknown_11c854
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_11c814
-	ld a, [wcd21]
-	ld d, a
-	and a
-	jr z, .asm_11c7e9
-	ld a, [wcd26]
-	ld e, a
-.asm_11c7d0
-	ld a, [bc]
-	ld l, a
-	inc bc
-	ld a, [bc]
-	ld h, a
-	inc bc
-	and l
-	cp $ff
-	ret z
-	push bc
-	push de
-	call Function11c05d
-	pop de
-	pop bc
-	inc e
-	ld a, [wcd28]
-	cp e
-	jr nz, .asm_11c7d0
-	ret
-.asm_11c7e9
-	ld hl, wd100
-	ld a, [wcd26]
-	ld e, a
-	add hl, de
-.asm_11c7f1
-	push de
-	ld a, [hli]
-	ld e, a
-	ld d, $0
-	push hl
-	ld a, [bc]
-	ld l, a
-	inc bc
-	ld a, [bc]
-	ld h, a
-	inc bc
-	and l
-	cp $ff
-	jr z, .asm_11c811
-	push bc
-	call Function11c05d
-	pop bc
-	pop hl
-	pop de
-	inc e
-	ld a, [wcd28]
-	cp e
-	jr nz, .asm_11c7f1
-	ret
-.asm_11c811
-	pop hl
-	pop de
-	ret
-.asm_11c814
-	ld hl, $c648
-	ld a, [wcd22]
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	push de
-	pop hl
-	ld a, [wcd26]
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [wcd26]
-	ld e, a
-.asm_11c831
-	push de
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	push hl
-	ld a, [bc]
-	ld l, a
-	inc bc
-	ld a, [bc]
-	ld h, a
-	inc bc
-	and l
-	cp $ff
-	jr z, .asm_11c851
-	push bc
-	call Function11c05d
-	pop bc
-	pop hl
-	pop de
-	inc e
-	ld a, [wcd28]
-	cp e
-	jr nz, .asm_11c831
-	ret
-.asm_11c851
-	pop hl
-	pop de
-	ret
-; 11c854 (47:4854)
-
-Unknown_11c854: ; 11c854
-	dwcoord  2,  8
-	dwcoord  8,  8
-	dwcoord 14,  8
-	dwcoord  2, 10
-	dwcoord  8, 10
-	dwcoord 14, 10
-	dwcoord  2, 12
-	dwcoord  8, 12
-	dwcoord 14, 12
-	dwcoord  2, 14
-	dwcoord  8, 14
-	dwcoord 14, 14
-	dw -1
-; 11c86e
-
-Function11c86e: ; 11c86e (47:486e)
-	ld a, [wcd26]
-	and a
-	jr z, .asm_11c88a
-	hlcoord 2, 17
-	ld de, String_11c8f0
-	call PlaceString
-	hlcoord 6, 17
-	ld c, $3
-	xor a
-.asm_11c883
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_11c883
-	jr .asm_11c895
-.asm_11c88a
-	hlcoord 2, 17
-	ld c, $7
-	ld a, $7f
-.asm_11c891
-	ld [hli], a
-	dec c
-	jr nz, .asm_11c891
-.asm_11c895
-	ld hl, wcd28
-	ld a, [wcd26]
-	add $c
-	jr c, .asm_11c8b7
-	cp [hl]
-	jr nc, .asm_11c8b7
-	hlcoord 16, 17
-	ld de, String_11c8f3
-	call PlaceString
-	hlcoord 11, 17
-	ld a, $3
-	ld c, a
-.asm_11c8b1
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_11c8b1
-	ret
-.asm_11c8b7
-	hlcoord 17, 16
-	ld a, $7f
-	ld [hl], a
-	hlcoord 11, 17
-	ld c, $7
-.asm_11c8c2
-	ld [hli], a
-	dec c
-	jr nz, .asm_11c8c2
-	ret
-; 11c8c7 (47:48c7)
-
-Function11c8c7: ; 11c8c7
-	inc a
-	push af
-	and $f
-	ld [hDividend], a
-	pop af
-	and $f0
-	swap a
-	ld [hQuotient], a
-	xor a
-	ld [$ffb5], a
-	push hl
-	callba Function11a80c
-	pop hl
-	ld a, [wcd63]
-	add $f6
-	ld [hli], a
-	ld a, [wcd62]
-	add $f6
-	ld [hli], a
-	ret
-; 11c8ec
-
-String_11c8ec: ; 11c8ec
-	db "ぺージ@"
-; 11c8f0
-
-String_11c8f0: ; 11c8f0
-	db "まえ@"
-; 11c8f3
-
-String_11c8f3: ; 11c8f3
-	db "つぎ@"
-; 11c8f6
-
-Function11c8f6: ; 11c8f6 (47:48f6)
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
-	call Function11c95d
-	push hl
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_11c938
-	ld a, [wcd21]
-	ld d, a
-	and a
-	jr z, .asm_11c927
-	ld hl, wcd26
-	ld a, [wcd25]
-	add [hl]
-.asm_11c911
-	ld e, a
-.asm_11c912
-	pop hl
-	push de
-	call Function11c05d
-	pop de
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
-	ld c, a
-	ld b, $0
-	ld hl, wcd36
-rept 2
-	add hl, bc
-endr
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ret
-.asm_11c927
-	ld hl, wcd26
-	ld a, [wcd25]
-	add [hl]
-	ld c, a
-	ld b, $0
-	ld hl, wd100
-	add hl, bc
-	ld a, [hl]
-	jr .asm_11c911
-.asm_11c938
-	ld hl, $c648
-	ld a, [wcd22]
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	push de
-	pop hl
-	ld a, [wcd26]
-	ld e, a
-	ld d, $0
-rept 2
-	add hl, de
-endr
-	ld a, [wcd25]
-	ld e, a
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	jr .asm_11c912
-
-Function11c95d: ; 11c95d (47:495d)
-	sla a
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_11c986
-	add hl, bc
-	ld a, [hli]
-	ld c, a
-	ld a, [hl]
-	ld b, a
-	push bc
-	push bc
-	pop hl
-	ld a, $5
-	ld c, a
-	ld a, $7f
-.asm_11c972
-	ld [hli], a
-	dec c
-	jr nz, .asm_11c972
-	dec hl
-	ld bc, -20
-	add hl, bc
-	ld a, $5
-	ld c, a
-	ld a, $7f
-.asm_11c980
-	ld [hld], a
-	dec c
-	jr nz, .asm_11c980
-	pop hl
-	ret
-; 11c986 (47:4986)
-
-Unknown_11c986:
-	dwcoord  1,  2
-	dwcoord  7,  2
-	dwcoord 13,  2
-	dwcoord  1,  4
-	dwcoord  7,  4
-	dwcoord 13,  4
-; 11c992
-
-Function11c992: ; 11c992 (47:4992)
-	ld a, $8
-	hlcoord 2, 7
-.asm_11c997
-	push af
-	ld a, $7f
-	push hl
-	ld bc, $11
-	call ByteFill
-	pop hl
-	ld bc, $14
-	add hl, bc
-	pop af
-	dec a
-	jr nz, .asm_11c997
-	ret
-
-Function11c9ab: ; 11c9ab (47:49ab)
-	ld a, $7
-	hlcoord 0, 6, AttrMap
-	ld bc, $c8
-	call ByteFill
-	callba Function104061
-	ret
-
-Function11c9bd: ; 11c9bd (47:49bd)
-	ld de, String_11ca38
-	call Function11ca7f
-
-Function11c9c3: ; 11c9c3 (47:49c3)
-	ld hl, wcd2a
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and $1
-	jr nz, .asm_11c9de
-	ld a, [de]
-	and $2
-	jr nz, .asm_11c9e9
-	ld a, [de]
-	and $40
-	jr nz, .asm_11c9f7
-	ld a, [de]
-	and $80
-	jr nz, .asm_11c9fc
-	ret
-.asm_11c9de
-	ld a, [hl]
-	and a
-	jr nz, .asm_11c9e9
-	call Function11ca5e
-	xor a
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
-.asm_11c9e9
-	ld hl, wcd24
-	set 4, [hl]
-	ld a, $4
-	ld [wJumptableIndex], a
-	call PlayClickSFX
-	ret
-.asm_11c9f7
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-.asm_11c9fc
-	ld a, [hl]
-	and a
-	ret nz
-	inc [hl]
-	ret
-
-Function11ca01: ; 11ca01 (47:4a01)
-	hlcoord 14, 7, AttrMap
-	ld de, $14
-	ld a, $5
-	ld c, a
-.asm_11ca0a
-	push hl
-	ld a, $6
-	ld b, a
-	ld a, $7
-.asm_11ca10
-	ld [hli], a
-	dec b
-	jr nz, .asm_11ca10
-	pop hl
-	add hl, de
-	dec c
-	jr nz, .asm_11ca0a
-
-Function11ca19: ; 11ca19 (47:4a19)
-	hlcoord 0, 12, AttrMap
-	ld de, $14
-	ld a, $6
-	ld c, a
-.asm_11ca22
-	push hl
-	ld a, $14
-	ld b, a
-	ld a, $7
-.asm_11ca28
-	ld [hli], a
-	dec b
-	jr nz, .asm_11ca28
-	pop hl
-	add hl, de
-	dec c
-	jr nz, .asm_11ca22
-	callba Function104061
-	ret
-; 11ca38 (47:4a38)
-
-String_11ca38: ; 11ca38
-	db   "とうろくちゅう", $25, "あいさつ", $1f, "ぜんぶ"
-	next "けしても よろしいですか?@"
-; 11ca57
-
-String_11ca57: ; 11ca57
-	db   "はい"
-	next "いいえ@"
-; 11ca5e
-
-Function11ca5e: ; 11ca5e (47:4a5e)
-	xor a
-.asm_11ca5f
-	push af
-	call Function11ca6a
-	pop af
-	inc a
-	cp $6
-	jr nz, .asm_11ca5f
-	ret
-
-Function11ca6a: ; 11ca6a (47:4a6a)
-	ld hl, wcd36
-	ld c, a
-	ld b, $0
-rept 2
-	add hl, bc
-endr
-	ld [hl], b
-	inc hl
-	ld [hl], b
-	call Function11c95d
-	ld de, String_11c3bc
-	call PlaceString
-	ret
-
-Function11ca7f: ; 11ca7f (47:4a7f)
-	push de
-	ld de, Unknown_11cfc6
-	call Function11cfce
-	ld de, Unknown_11cfca
-	call Function11cfce
-	hlcoord 1, 14
-	pop de
-	call PlaceString
-	hlcoord 16, 8
-	ld de, String_11ca57
-	call PlaceString
-	call Function11ca01
-	ld a, $1
-	ld [wcd2a], a
-	ld hl, wcd24
-	res 4, [hl]
-	call Function11cfb5
-	ret
-
-Function11caad: ; 11caad (47:4aad)
-	ld de, String_11cb1c
-	call Function11ca7f
-
-Function11cab3: ; 11cab3 (47:4ab3)
-	ld hl, wcd2a
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and $1
-	jr nz, .asm_11cace
-	ld a, [de]
-	and $2
-	jr nz, .asm_11caf9
-	ld a, [de]
-	and $40
-	jr nz, .asm_11cb12
-	ld a, [de]
-	and $80
-	jr nz, .asm_11cb17
-	ret
-.asm_11cace
-	call PlayClickSFX
-	ld a, [hl]
-	and a
-	jr nz, .asm_11cafc
-	ld a, [wcd35]
-	and a
-	jr z, .asm_11caf3
-	cp $ff
-	jr z, .asm_11caf3
-	ld a, $ff
-	ld [wcd35], a
-	hlcoord 1, 14
-	ld de, String_11cb31
-	call PlaceString
-	ld a, $1
-	ld [wcd2a], a
-	ret
-.asm_11caf3
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-.asm_11caf9
-	call PlayClickSFX
-.asm_11cafc
-	ld hl, wcd24
-	set 4, [hl]
-	ld a, $4
-	ld [wJumptableIndex], a
-	ld a, [wcd35]
-	cp $ff
-	ret nz
-	ld a, $1
-	ld [wcd35], a
-	ret
-.asm_11cb12
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-.asm_11cb17
-	ld a, [hl]
-	and a
-	ret nz
-	inc [hl]
-	ret
-; 11cb1c (47:4b1c)
-
-String_11cb1c: ; 11cb1c
-	db   "あいさつ", $25, "とうろく", $1f, "ちゅうし"
-	next "しますか?@"
-; 11cb31
-
-String_11cb31: ; 11cb31
-	db   "とうろくちゅう", $25, "あいさつ", $24, "ほぞん"
-	next "されません", $4a, "よろしい ですか?@"
-; 11cb52
-
-Function11cb52: ; 11cb52 (47:4b52)
-	ld hl, Unknown_11cc01
-	ld a, [wcfa9]
-.asm_11cb58
-	dec a
-	jr z, .asm_11cb5f
-rept 2
-	inc hl
-endr
-	jr .asm_11cb58
-.asm_11cb5f
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	call Function11ca7f
-
-Function11cb66: ; 11cb66 (47:4b66)
-	ld hl, wcd2a
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and $1
-	jr nz, .asm_11cb81
-	ld a, [de]
-	and $2
-	jr nz, .asm_11cbd7
-	ld a, [de]
-	and $40
-	jr nz, .asm_11cbeb
-	ld a, [de]
-	and $80
-	jr nz, .asm_11cbf0
-	ret
-.asm_11cb81
-	ld a, [hl]
-	and a
-	jr nz, .asm_11cbd4
-	ld a, $4
-	call GetSRAMBank
-	ld hl, $a007
-	ld a, [wcfa9]
-	dec a
-	sla a
-	sla a
-	ld c, a
-	sla a
-	add c
-	ld c, a
-	ld b, $0
-	add hl, bc
-	ld de, wcd36
-	ld c, $c
-.asm_11cba2
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .asm_11cba2
-	call CloseSRAM
-	call PlayClickSFX
-	ld de, Unknown_11cfc6
-	call Function11cfce
-	ld hl, Unknown_11cc7e
-	ld a, [wcfa9]
-.asm_11cbba
-	dec a
-	jr z, .asm_11cbc1
-rept 2
-	inc hl
-endr
-	jr .asm_11cbba
-.asm_11cbc1
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	hlcoord 1, 14
-	call PlaceString
-	ld hl, wJumptableIndex
-	inc [hl]
-	inc hl
-	ld a, $10
-	ld [hl], a
-	ret
-.asm_11cbd4
-	call PlayClickSFX
-.asm_11cbd7
-	ld de, Unknown_11cfba
-	call Function11cfce
-	call Function11c38a
-	ld hl, wcd24
-	set 4, [hl]
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-.asm_11cbeb
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ret
-.asm_11cbf0
-	ld a, [hl]
-	and a
-	ret nz
-	inc [hl]
-	ret
-
-Function11cbf5: ; 11cbf5 (47:4bf5)
-	call WaitSFX
-	ld hl, wcf64
-	dec [hl]
-	ret nz
-	dec hl
-	set 7, [hl]
-	ret
-; 11cc01 (47:4c01)
-
-Unknown_11cc01: ; 11cc01
-	dw String_11cc09
-	dw String_11cc23
-	dw String_11cc42
-	dw String_11cc60
-
-String_11cc09: ; 11cc09
-	db   "じこしょうかい は"
-	next "この あいさつで いいですか?@"
-
-String_11cc23: ; 11cc23
-	db   "たいせん ", $4a, "はじまるとき は"
-	next "この あいさつで いいですか?@"
-
-String_11cc42: ; 11cc42
-	db   "たいせん ", $1d, "かったとき は"
-	next "この あいさつで いいですか?@"
-
-String_11cc60: ; 11cc60
-	db   "たいせん ", $1d, "まけたとき は"
-	next "この あいさつで いいですか?@"
-; 11cc7e
-
-Unknown_11cc7e: ; 11cc7e
-	dw String_11cc86
-	dw String_11cc9d
-	dw String_11ccb9
-	dw String_11ccd4
-
-String_11cc86: ; 11cc86
-	db   "じこしょうかい の"
-	next "あいさつ", $1f, "とうろくした!@"
-
-String_11cc9d: ; 11cc9d
-	db   "たいせん ", $4a, "はじまるとき の"
-	next "あいさつ", $1f, "とうろくした!@"
-
-String_11ccb9: ; 11ccb9
-	db   "たいせん ", $1d, "かったとき の"
-	next "あいさつ", $1f, "とうろくした!@"
-
-String_11ccd4: ; 11ccd4
-	db   "たいせん ", $1d, "まけたとき の"
-	next "あいさつ", $1f, "とうろくした!@"
-; 11ccef
-
-Function11ccef: ; 11ccef (47:4cef)
-	ld de, Unknown_11cfc6
-	call Function11cfce
-	hlcoord 1, 14
-	ld de, String_11cd10
-	call PlaceString
-	call Function11ca19
-	call Function11cfb5
-
-Function11cd04: ; 11cd04 (47:4d04)
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and a
-	ret z
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; 11cd10 (47:4d10)
-
-String_11cd10: ; 11cd10
-	db "なにか ことば", $1f, "いれてください@"
-; 11cd20
-
-Function11cd20: ; 11cd20 (47:4d20)
-	call Function11c277
-	ld de, Unknown_11cfc6
-	call Function11cfce
-	hlcoord 1, 14
-	ld a, [wcd2b]
-	ld [wcd2c], a
-	and a
-	jr nz, .asm_11cd3a
-	ld de, String_11cdc7
-	jr .asm_11cd3d
-.asm_11cd3a
-	ld de, String_11cdd9
-.asm_11cd3d
-	call PlaceString
-	hlcoord 4, 8
-	ld de, String_11cdf5
-	call PlaceString
-	call Function11cdaa
-	ld hl, wcd24
-	res 5, [hl]
-	call Function11cfb5
-
-Function11cd54: ; 11cd54 (47:4d54)
-	ld hl, wcd2c
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and A_BUTTON
-	jr nz, .asm_11cd6f
-	ld a, [de]
-	and B_BUTTON
-	jr nz, .asm_11cd73
-	ld a, [de]
-	and D_UP
-	jr nz, .asm_11cd8b
-	ld a, [de]
-	and D_DOWN
-	jr nz, .asm_11cd94
-	ret
-
-.asm_11cd6f
-	ld a, [hl]
-	ld [wcd2b], a
-.asm_11cd73
-	ld a, [wcd2b]
-	and a
-	jr nz, .asm_11cd7d
-	ld a, $6
-	jr .asm_11cd7f
-
-.asm_11cd7d
-	ld a, $15
-.asm_11cd7f
-	ld [wJumptableIndex], a
-	ld hl, wcd24
-	set 5, [hl]
-	call PlayClickSFX
-	ret
-
-.asm_11cd8b
-	ld a, [hl]
-	and a
-	ret z
-	dec [hl]
-	ld de, String_11cdc7
-	jr .asm_11cd9b
-
-.asm_11cd94
-	ld a, [hl]
-	and a
-	ret nz
-	inc [hl]
-	ld de, String_11cdd9
-.asm_11cd9b
-	push de
-	ld de, Unknown_11cfc6
-	call Function11cfce
-	pop de
-	hlcoord 1, 14
-	call PlaceString
-	ret
-
-Function11cdaa: ; 11cdaa (47:4daa)
-	ld a, $2
-	hlcoord 0, 6, AttrMap
-	ld bc, $78
-	call ByteFill
-	ld a, $7
-	hlcoord 0, 12, AttrMap
-	ld bc, $50
-	call ByteFill
-	callba Function104061
-	ret
-; 11cdc7 (47:4dc7)
-
-String_11cdc7: ; 11cdc7
-	db   "ことば", $1f, "しゅるいべつに"
-	next "えらべます@"
-; 11cdd9
-
-String_11cdd9: ; 11cdd9
-	db   "ことば", $1f, "アイウエォ の"
-	next "じゅんばんで ひょうじ します@"
-; 11cdf5
-
-String_11cdf5: ; 11cdf5
-	db "しゅるいべつ モード"
-	next "アイウエォ  モード@"
-; 11ce0b
-
-Function11ce0b: ; 11ce0b (47:4e0b)
-	call Function11c277
-	hlcoord 1, 7
-	ld de, String_11cf79
-	call PlaceString
-	hlcoord 1, 17
-	ld de, String_11c62a
-	call PlaceString
-	call Function11c618
-	ld hl, wcd24
-	res 2, [hl]
-	call Function11cfb5
-
-Function11ce2b: ; 11ce2b (47:4e2b)
-	ld a, [CreditsTimer]
-	sla a
-	sla a
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_11ceb9
-	add hl, bc
-
-	ld de, hJoypadPressed ; $ffa3
-	ld a, [de]
-	and START
-	jr nz, .start
-	ld a, [de]
-	and SELECT
-	jr nz, .select
-	ld a, [de]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [de]
-	and B_BUTTON
-	jr nz, .b
-
-	ld de, hJoyLast
-	ld a, [de]
-	and D_UP
-	jr nz, .up
-	ld a, [de]
-	and D_DOWN
-	jr nz, .down
-	ld a, [de]
-	and D_LEFT
-	jr nz, .left
-	ld a, [de]
-	and D_RIGHT
-	jr nz, .right
-
-	ret
-
-.a
-	ld a, [CreditsTimer]
-	cp $2d
-	jr c, .asm_11ce92
-	sub $2d
-	jr z, .asm_11cea4
-	dec a
-	jr z, .asm_11ce96
-	jr .b
-
-.start
-	ld hl, wcd24
-	set 0, [hl]
-	ld a, $8
-	ld [BGMapBuffer], a ; wcd20 (aliases: CreditsPos)
-.b
-	ld a, $4
-	jr .asm_11ce98
-.select
-	ld a, [wcd2b]
-	xor $1
-	ld [wcd2b], a
-	ld a, $6
-	jr .asm_11ce98
-
-.asm_11ce92
-	ld a, $8
-	jr .asm_11ce98
-
-.asm_11ce96
-	ld a, $13
-.asm_11ce98
-	ld [wJumptableIndex], a
-	ld hl, wcd24
-	set 2, [hl]
-	call PlayClickSFX
-	ret
-.asm_11cea4
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
-	call Function11ca6a
-	call PlayClickSFX
-	ret
-
-.left
-	inc hl
-.down
-	inc hl
-.right
-	inc hl
-.up
-	ld a, [hl]
-	cp $ff
-	ret z
-	ld [CreditsTimer], a
-	ret
-; 11ceb9 (47:4eb9)
-
-Unknown_11ceb9: ; 11ceb9
-	; up left down right
-	db $ff, $01, $05, $ff
-	db $ff, $02, $06, $00
-	db $ff, $03, $07, $01
-	db $ff, $04, $08, $02
-	db $ff, $14, $09, $03
-	db $00, $06, $0a, $ff
-	db $01, $07, $0b, $05
-	db $02, $08, $0c, $06
-	db $03, $09, $0d, $07
-	db $04, $19, $0e, $08
-	db $05, $0b, $0f, $ff
-	db $06, $0c, $10, $0a
-	db $07, $0d, $11, $0b
-	db $08, $0e, $12, $0c
-	db $09, $1e, $13, $0d
-	db $0a, $10, $2d, $ff
-	db $0b, $11, $2d, $0f
-	db $0c, $12, $2d, $10
-	db $0d, $13, $2d, $11
-	db $0e, $26, $2d, $12
-	db $ff, $15, $19, $04
-	db $ff, $16, $1a, $14
-	db $ff, $17, $1b, $15
-	db $ff, $18, $1c, $16
-	db $ff, $23, $1d, $17
-	db $14, $1a, $1e, $09
-	db $15, $1b, $1f, $19
-	db $16, $1c, $20, $1a
-	db $17, $1d, $21, $1b
-	db $18, $2b, $22, $1c
-	db $19, $1f, $26, $0e
-	db $1a, $20, $27, $1e
-	db $1b, $21, $28, $1f
-	db $1c, $22, $29, $20
-	db $1d, $2c, $2a, $21
-	db $ff, $24, $2b, $18
-	db $ff, $25, $2b, $23
-	db $ff, $ff, $2b, $24
-	db $1e, $27, $2e, $13
-	db $1f, $28, $2e, $26
-	db $20, $29, $2e, $27
-	db $21, $2a, $2e, $28
-	db $22, $ff, $2e, $29
-	db $23, $ff, $2c, $1d
-	db $2b, $ff, $2f, $22
-	db $0f, $2e, $ff, $ff
-	db $26, $2f, $ff, $2d
-	db $2c, $ff, $ff, $2e
-; 11cf79
-
-String_11cf79: ; 11cf79
-	db   "あいうえお なにぬねの や ゆ よ"
-	next "かきくけこ はひふへほ わ"
-	next "さしすせそ まみむめも そのた"
-	next "たちつてと らりるれろ"
-	db   "@"
-; 11cfb5
-
-Function11cfb5: ; 11cfb5 (47:4fb5)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; 11cfba (47:4fba)
-
-Unknown_11cfba:
-	db  0,  0 ; start coords
-	db 20,  6 ; end coords
-
-Unknown_11cfbe:
-	db  0, 14 ; start coords
-	db 20,  4 ; end coords
-
-Unknown_11cfc2:
-	db  0,  6 ; start coords
-	db 20, 10 ; end coords
-
-Unknown_11cfc6:
-	db  0, 12 ; start coords
-	db 20,  6 ; end coords
-
-Unknown_11cfca:
-	db 14,  7 ; start coords
-	db  6,  5 ; end coords
-; 11cfce
-
-Function11cfce: ; 11cfce (47:4fce)
-	hlcoord 0, 0
-	ld bc, $14
-	ld a, [de]
-	inc de
-	push af
-	ld a, [de]
-	inc de
-	and a
-.asm_11cfda
-	jr z, .asm_11cfe0
-	add hl, bc
-	dec a
-	jr .asm_11cfda
-.asm_11cfe0
-	pop af
-	ld c, a
-	ld b, 0
-	add hl, bc
-	push hl
-	ld a, $79
-	ld [hli], a
-	ld a, [de]
-	inc de
-rept 2
-	dec a
-endr
-	jr z, .asm_11cff6
-	ld c, a
-	ld a, $7a
-.asm_11cff2
-	ld [hli], a
-	dec c
-	jr nz, .asm_11cff2
-.asm_11cff6
-	ld a, $7b
-	ld [hl], a
-	pop hl
-	ld bc, $14
-	add hl, bc
-	ld a, [de]
-	dec de
-rept 2
-	dec a
-endr
-	jr z, .asm_11d022
-	ld b, a
-.asm_11d005
-	push hl
-	ld a, $7c
-	ld [hli], a
-	ld a, [de]
-rept 2
-	dec a
-endr
-	jr z, .asm_11d015
-	ld c, a
-	ld a, $7f
-.asm_11d011
-	ld [hli], a
-	dec c
-	jr nz, .asm_11d011
-.asm_11d015
-	ld a, $7c
-	ld [hl], a
-	pop hl
-	push bc
-	ld bc, $14
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_11d005
-.asm_11d022
-	ld a, $7d
-	ld [hli], a
-	ld a, [de]
-rept 2
-	dec a
-endr
-	jr z, .asm_11d031
-	ld c, a
-	ld a, $7a
-.asm_11d02d
-	ld [hli], a
-	dec c
-	jr nz, .asm_11d02d
-.asm_11d031
-	ld a, $7e
-	ld [hl], a
-	ret
-
-Function11d035: ; 11d035 (47:5035)
-	hlcoord 0, 0
-	ld bc, $14
-	ld a, [de]
-	inc de
-	push af
-	ld a, [de]
-	inc de
-	and a
-.asm_11d041
-	jr z, .asm_11d047
-	add hl, bc
-	dec a
-	jr .asm_11d041
-.asm_11d047
-	pop af
-	ld c, a
-	ld b, $0
-	add hl, bc
-	push hl
-	ld a, $79
-	ld [hl], a
-	pop hl
-	push hl
-	ld a, [de]
-	dec a
-	inc de
-	ld c, a
-	add hl, bc
-	ld a, $7b
-	ld [hl], a
-	call Function11d0ac
-	ld a, $7e
-	ld [hl], a
-	pop hl
-	push hl
-	call Function11d0ac
-	ld a, $7d
-	ld [hl], a
-	pop hl
-	push hl
-	inc hl
-	push hl
-	call Function11d0ac
-	pop bc
-	dec de
-	ld a, [de]
-	cp $2
-	jr z, .asm_11d082
-rept 2
-	dec a
-endr
-.asm_11d078
-	push af
-	ld a, $7a
-	ld [hli], a
-	ld [bc], a
-	inc bc
-	pop af
-	dec a
-	jr nz, .asm_11d078
-.asm_11d082
-	pop hl
-	ld bc, $14
-	add hl, bc
-	push hl
-	ld a, [de]
-	dec a
-	ld c, a
-	ld b, $0
-	add hl, bc
-	pop bc
-	inc de
-	ld a, [de]
-	cp $2
-	ret z
-	push bc
-rept 2
-	dec a
-endr
-	ld c, a
-	ld b, a
-	ld de, $14
-.asm_11d09c
-	ld a, $7c
-	ld [hl], a
-	add hl, de
-	dec c
-	jr nz, .asm_11d09c
-	pop hl
-.asm_11d0a4
-	ld a, $7c
-	ld [hl], a
-	add hl, de
-	dec b
-	jr nz, .asm_11d0a4
-	ret
-
-Function11d0ac: ; 11d0ac (47:50ac)
-	ld a, [de]
-	dec a
-	ld bc, $14
-.asm_11d0b1
-	add hl, bc
-	dec a
-	jr nz, .asm_11d0b1
-	ret
-
-Function11d0b6: ; 11d0b6 (47:50b6)
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_11d0c7
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_11d0c7: ; 11d0c7 (47:50c7)
-	dw Function11d0dd
-	dw Function11d0e9
-	dw Function11d0f5
-	dw Function11d10f
-	dw Function11d134
-	dw Function11d145
-	dw Function11d156
-	dw Function11d175
-	dw Function11d1d7
-	dw Function11d1d1
-	dw Function11d1fc
-
-
-Function11d0dd: ; 11d0dd (47:50dd)
-	ld a, [BGMapBuffer] ; wcd20 (aliases: CreditsPos)
-	sla a
-	ld hl, Unknown_11d208
-	ld e, $1
-	jr asm_11d11e
-
-Function11d0e9: ; 11d0e9 (47:50e9)
-	ld a, [wcd21]
-	sla a
-	ld hl, Unknown_11d21a
-	ld e, $2
-	jr asm_11d11e
-
-Function11d0f5: ; 11d0f5 (47:50f5)
-	ld hl, Unknown_11d2be
-	ld a, [CreditsTimer]
-	ld e, a
-	ld d, $0
-	add hl, de
-	ld a, [hl]
-	call Function3b3c
-	ld a, [CreditsTimer]
-	sla a
-	ld hl, Unknown_11d23e
-	ld e, $4
-	jr asm_11d11e
-
-Function11d10f: ; 11d10f (47:510f)
-	ld a, $27
-	call Function3b3c
-	ld a, [wcd25]
-	sla a
-	ld hl, Unknown_11d29e
-	ld e, $8
-
-asm_11d11e: ; 11d11e (47:511e)
-	push de
-	ld e, a
-	ld d, $0
-	add hl, de
-	push hl
-	pop de
-	ld hl, $4
-	add hl, bc
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld a, [de]
-	ld [hl], a
-	pop de
-	ld a, e
-	call Function11d2ee
-	ret
-
-Function11d134: ; 11d134 (47:5134)
-	ld a, $27
-	call Function3b3c
-	ld a, [wcd2a]
-	sla a
-	ld hl, Unknown_11d2b6
-	ld e, $10
-	jr asm_11d11e
-
-Function11d145: ; 11d145 (47:5145)
-	ld a, $27
-	call Function3b3c
-	ld a, [wcd2c]
-	sla a
-	ld hl, Unknown_11d2ba
-	ld e, $20
-	jr asm_11d11e
-
-Function11d156: ; 11d156 (47:5156)
-	ld a, $2a
-	call Function3b3c
-	ld a, [wcd4a]
-	sla a
-	sla a
-	sla a
-	add $18
-	ld hl, $4
-	add hl, bc
-	ld [hli], a
-	ld a, $30
-	ld [hl], a
-	ld a, $1
-	ld e, a
-	call Function11d2ee
-	ret
-
-Function11d175: ; 11d175 (47:5175)
-	ld a, [wcd4d]
-	cp $4
-	jr z, .asm_11d180
-	ld a, $28
-	jr .asm_11d182
-.asm_11d180
-	ld a, $26
-.asm_11d182
-	call Function3b3c
-	ld a, [wcd4d]
-	cp $4
-	jr z, .asm_11d1b1
-	ld a, [wcd4c]
-	sla a
-	sla a
-	sla a
-	add $20
-	ld hl, $4
-	add hl, bc
-	ld [hli], a
-	ld a, [wcd4d]
-	sla a
-	sla a
-	sla a
-	sla a
-	add $48
-	ld [hl], a
-	ld a, $2
-	ld e, a
-	call Function11d2ee
-	ret
-.asm_11d1b1
-	ld a, [wcd4c]
-	sla a
-	sla a
-	sla a
-	ld e, a
-	sla a
-	sla a
-	add e
-	add $18
-	ld hl, $4
-	add hl, bc
-	ld [hli], a
-	ld a, $8a
-	ld [hl], a
-	ld a, $2
-	ld e, a
-	call Function11d2ee
-	ret
-
-Function11d1d1: ; 11d1d1 (47:51d1)
-	ld d, $98
-	ld a, $2c
-	jr asm_11d1db
-
-Function11d1d7: ; 11d1d7 (47:51d7)
-	ld d, $10
-	ld a, $2b
-
-asm_11d1db: ; 11d1db (47:51db)
-	push de
-	call Function3b3c
-	ld a, [wcd4a]
-	sla a
-	sla a
-	sla a
-	ld e, a
-	sla a
-	add e
-	add $40
-	ld hl, $5
-	add hl, bc
-	ld [hld], a
-	pop af
-	ld [hl], a
-	ld a, $4
-	ld e, a
-	call Function11d2ee
-	ret
-
-Function11d1fc: ; 11d1fc (47:51fc)
-	ld a, $26
-	call Function3b3c
-	ld a, $8
-	ld e, a
-	call Function11d2ee
-	ret
-; 11d208 (47:5208)
-
-Unknown_11d208: ; 11d208
-	db $0d, $1a
-	db $3d, $1a
-	db $6d, $1a
-	db $0d, $2a
-	db $3d, $2a
-	db $6d, $2a
-	db $0d, $8a
-	db $3d, $8a
-	db $6d, $8a
-
-Unknown_11d21a: ; 11d21a
-	db $0d, $42
-	db $3d, $42
-	db $6d, $42
-	db $0d, $52
-	db $3d, $52
-	db $6d, $52
-	db $0d, $62
-	db $3d, $62
-	db $6d, $62
-	db $0d, $72
-	db $3d, $72
-	db $6d, $72
-	db $0d, $82
-	db $3d, $82
-	db $6d, $82
-	db $0d, $92
-	db $3d, $92
-	db $6d, $92
-
-Unknown_11d23e: ; 11d23e
-	db $10, $48
-	db $18, $48
-	db $20, $48
-	db $28, $48
-	db $30, $48
-	db $10, $58
-	db $18, $58
-	db $20, $58
-	db $28, $58
-	db $30, $58
-	db $10, $68
-	db $18, $68
-	db $20, $68
-	db $28, $68
-	db $30, $68
-	db $10, $78
-	db $18, $78
-	db $20, $78
-	db $28, $78
-	db $30, $78
-	db $40, $48
-	db $48, $48
-	db $50, $48
-	db $58, $48
-	db $60, $48
-	db $40, $58
-	db $48, $58
-	db $50, $58
-	db $58, $58
-	db $60, $58
-	db $40, $68
-	db $48, $68
-	db $50, $68
-	db $58, $68
-	db $60, $68
-	db $70, $48
-	db $80, $48
-	db $90, $48
-	db $40, $78
-	db $48, $78
-	db $50, $78
-	db $58, $78
-	db $60, $78
-	db $70, $58
-	db $70, $68
-	db $0d, $92
-	db $3d, $92
-	db $6d, $92
-
-Unknown_11d29e: ; 11d29e
-	db $10, $50
-	db $40, $50
-	db $70, $50
-	db $10, $60
-	db $40, $60
-	db $70, $60
-	db $10, $70
-	db $40, $70
-	db $70, $70
-	db $10, $80
-	db $40, $80
-	db $70, $80
-
-Unknown_11d2b6: ; 11d2b6
-	db $80, $50
-	db $80, $60
-
-Unknown_11d2ba: ; 11d2ba
-	db $20, $50
-	db $20, $60
-
-Unknown_11d2be: ; 11d2be
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $28, $28
-	db $29, $26
-	db $26, $26
-
-Function11d2ee: ; 11d2ee (47:52ee)
-	ld hl, wcd24
-	and [hl]
-	jr nz, .asm_11d316
-	ld a, e
-	ld hl, wcd23
-	and [hl]
-	jr z, .asm_11d30f
-	ld hl, $e
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_11d305
-	dec [hl]
-	ret
-.asm_11d305
-	ld a, $0
-	ld [hld], a
-	ld a, $1
-	xor [hl]
-	ld [hl], a
-	and a
-	jr nz, .asm_11d316
-.asm_11d30f
-	ld hl, $7
-	add hl, bc
-	xor a
-	ld [hl], a
-	ret
-.asm_11d316
-	ld hl, $5
-	add hl, bc
-	ld a, $b0
-	sub [hl]
-	ld hl, $7
-	add hl, bc
-	ld [hl], a
-	ret
-
-Function11d323: ; 11d323
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld hl, Palette_11d33a
-	ld de, Unkn1Pals
-	ld bc, $0080
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	ret
-; 11d33a
-
-Palette_11d33a:
-	RGB 31, 31, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 31, 16, 31
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 23, 17, 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 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-	RGB 00, 00, 00
-; 11d3ba
-
-Function11d3ba: ; 11d3ba
-	ld a, [rSVBK]
-	push af
-	ld hl, BattleMonSpclDef
-	ld a, $0
-	ld [wcd2d], a
-	ld [hli], a
-	ld a, $d8
-	ld [wcd2e], a
-	ld [hl], a
-	ld a, $fe
-	ld [wcd2f], a
-	ld a, $54
-	ld [wcd30], a
-	ld a, $a8
-	ld [wcd31], a
-	ld a, $c6
-	ld [wcd32], a
-	ld a, $4a
-	ld [wcd33], a
-	ld a, $c6
-	ld [wcd34], a
-	ld hl, Unknown_11f23c
-	ld a, $2d
-
-Function11d3ef: ; 11d3ef
-	push af
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	push hl
-	ld hl, Unkn1Pals
-	add hl, de
-	ld a, [wcd2d]
-	ld e, a
-	ld a, [wcd2e]
-	ld d, a
-	push bc
-.asm_11d406
-	ld a, $3
-	ld [rSVBK], a
-	ld a, [hli]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	pop af
-	ld [de], a
-	inc de
-	ld a, $3
-	ld [rSVBK], a
-	ld a, [hli]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	pop af
-	ld [de], a
-	inc de
-	dec bc
-	ld a, c
-	or b
-	jr nz, .asm_11d406
-	ld a, [wcd2f]
-	ld l, a
-	ld a, [wcd30]
-	ld h, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld b, a
-	ld a, l
-	ld [wcd2f], a
-	ld a, h
-	ld [wcd30], a
-	push bc
-	pop hl
-	ld c, $0
-.asm_11d43d
-	ld a, [hl]
-	cp $ff
-	jr z, .asm_11d453
-	call Function11d493
-	jr nz, .asm_11d44a
-	inc hl
-	jr .asm_11d43d
-
-.asm_11d44a
-	ld a, [hli]
-	ld [de], a
-	inc de
-	xor a
-	ld [de], a
-	inc de
-	inc c
-	jr .asm_11d43d
-
-.asm_11d453
-	pop hl
-	ld b, $0
-	add hl, bc
-	push hl
-	pop bc
-	ld a, [wcd31]
-	ld l, a
-	ld a, [wcd32]
-	ld h, a
-	ld a, c
-	ld [hli], a
-	ld a, b
-	ld [hli], a
-	ld a, l
-	ld [wcd31], a
-	ld a, h
-	ld [wcd32], a
-	ld a, [wcd33]
-	ld l, a
-	ld a, [wcd34]
-	ld h, a
-	ld a, e
-	ld [wcd2d], a
-	ld [hli], a
-	ld a, d
-	ld [wcd2e], a
-	ld [hli], a
-	ld a, l
-	ld [wcd33], a
-	ld a, h
-	ld [wcd34], a
-	pop hl
-	pop af
-	dec a
-	jr z, .asm_11d48f
-	jp Function11d3ef
-
-.asm_11d48f
-	pop af
-	ld [rSVBK], a
-	ret
-; 11d493
-
-Function11d493: ; 11d493
-	push hl
-	push bc
-	push de
-	dec a
-	ld hl, rSVBK
-	ld e, $1
-	ld [hl], e
-	call CheckSeenMon
-	ld hl, rSVBK
-	ld e, $5
-	ld [hl], e
-	pop de
-	pop bc
-	pop hl
-	ret
-; 11d4aa
-
-Function11d4aa: ; 11d4aa
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, Unknown_11daac
-	ld bc, Unknown_11f220
-	xor a
-	ld [wcd2d], a
-	inc a
-	ld [wcd2e], a
-	ld a, $e
-.asm_11d4c1
-	push af
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	push hl
-	ld hl, $0005
-	add hl, de
-	ld a, [bc]
-rept 2
-	inc bc
-endr
-	push bc
-.asm_11d4cf
-	push af
-	push hl
-	ld a, [hli]
-	ld e, a
-	ld a, [hl]
-	ld d, a
-	ld hl, wd000
-	add hl, de
-	ld a, [wcd2d]
-	ld [hli], a
-	inc a
-	ld [wcd2d], a
-	ld a, [wcd2e]
-	ld [hl], a
-	pop hl
-	ld de, $0008
-	add hl, de
-	pop af
-	dec a
-	jr nz, .asm_11d4cf
-	ld hl, wcd2d
-	xor a
-	ld [hli], a
-	inc [hl]
-	pop bc
-	pop hl
-	pop af
-	dec a
-	jr nz, .asm_11d4c1
-	pop af
-	ld [rSVBK], a
-	ret
-; 11d4fe
-
-
-Unknown_11d4fe:
-; Pokemon sorted by kana.
-; Notably, Rhydon is missing.
-
-	dw Unknown_11d558
-	dw Unknown_11d55f
-	dw Unknown_11d565
-	dw Unknown_11d56c
-	dw Unknown_11d574
-	dw Unknown_11d57f
-	dw Unknown_11d58e
-	dw Unknown_11d598
-	dw Unknown_11d59f
-	dw Unknown_11d5a3
-	dw Unknown_11d5b2
-	dw Unknown_11d5bb
-	dw Unknown_11d5c0
-	dw Unknown_11d5c8
-	dw Unknown_11d5cb
-	dw Unknown_11d5cd
-	dw Unknown_11d5d1
-	dw Unknown_11d5d4
-	dw Unknown_11d5d6
-	dw Unknown_11d5dc
-	dw Unknown_11d5e7
-	dw Unknown_11d5ea
-	dw Unknown_11d5f7
-	dw Unknown_11d5f9
-	dw Unknown_11d5fc
-	dw Unknown_11d5fe
-	dw Unknown_11d60e
-	dw Unknown_11d61d
-	dw Unknown_11d62e
-	dw Unknown_11d636
-	dw Unknown_11d63e
-	dw Unknown_11d649
-	dw Unknown_11d64e
-	dw Unknown_11d651
-	dw Unknown_11d656
-	dw Unknown_11d65a
-	dw Unknown_11d660
-	dw Unknown_11d662
-	dw Unknown_11d665
-	dw Unknown_11d66d
-	dw Unknown_11d671
-	dw Unknown_11d674
-	dw Unknown_11d678
-	dw Unknown_11d67a
-	dw Unknown_11d67d
-
-Unknown_11d558:	db EKANS, ARBOK, SEAKING, ARIADOS, CROCONAW, UNOWN, $ff
-Unknown_11d55f:	db EEVEE, GEODUDE, SPINARAK, PILOSWINE, ONIX, $ff
-Unknown_11d565:	db ARCANINE, SUDOWOODO, WEEPINBELL, VICTREEBEL, WOOPER, SWINUB, $ff
-Unknown_11d56c:	db SKARMORY, AIPOM, ESPEON, HITMONCHAN, ELEKID, ELECTABUZZ, ENTEI, $ff
-Unknown_11d574:	db FERALIGATR, FURRET, OCTILLERY, PRIMEAPE, SENTRET, STANTLER, SPEAROW, FEAROW, OMASTAR, OMANYTE, $ff
-Unknown_11d57f:	db GROWLITHE, MACHAMP, DRAGONITE, PINSIR, SNORLAX, KABUTO, KABUTOPS, HITMONTOP, WARTORTLE, BLASTOISE, FARFETCH_D, CUBONE, MAROWAK, KANGASKHAN, $ff
-Unknown_11d58e:	db SUNFLORA, CATERPIE, GYARADOS, RAPIDASH, NINETALES, GIRAFARIG, BELLOSSOM, KINGDRA, KINGLER, $ff
-Unknown_11d598:	db GLOOM, PINECO, GLIGAR, KRABBY, GRANBULL, CROBAT, $ff
-Unknown_11d59f:	db ABRA, GENGAR, TAUROS, $ff
-Unknown_11d5a3:	db MAGIKARP, MAGNEMITE, GASTLY, HAUNTER, MACHOKE, KAKUNA, PSYDUCK, PHANPY, RATTATA, GOLDUCK, GOLBAT, GOLEM, GRAVELER, VENONAT, $ff
-Unknown_11d5b2:	db RHYHORN, PUPITAR, CORSOLA, HITMONLEE, ZAPDOS, JOLTEON, SANDSHREW, SANDSLASH, $ff
-Unknown_11d5bb:	db SEADRA, SHELLDER, VAPOREON, DEWGONG, $ff
-Unknown_11d5c0:	db SUICUNE, STARMIE, SCYTHER, ZUBAT, BEEDRILL, HYPNO, DROWZEE, $ff
-Unknown_11d5c8:	db SQUIRTLE, CELEBI, $ff
-Unknown_11d5cb:	db WOBBUFFET, $ff
-Unknown_11d5cd:	db DUGTRIO, HORSEA, EXEGGCUTE, $ff
-Unknown_11d5d1:	db CHIKORITA, CHINCHOU, $ff
-Unknown_11d5d4:	db SHUCKLE, $ff
-Unknown_11d5d6:	db DIGLETT, REMORAID, DELIBIRD, HOUNDOUR, AMPHAROS, $ff
-Unknown_11d5dc:	db DODUO, DODRIO, SMEARGLE, KOFFING, TENTACRUEL, TOGETIC, TOGEPI, GOLDEEN, METAPOD, DONPHAN, $ff
-Unknown_11d5e7:	db ODDISH, EXEGGUTOR, $ff
-Unknown_11d5ea:	db NIDOKING, NIDOQUEEN, NIDORAN_M, NIDORAN_F, NIDORINA, NIDORINO, MEOWTH, SNEASEL, POLIWHIRL, POLITOED, POLIWRATH, POLIWAG, $ff
-Unknown_11d5f7:	db QUAGSIRE, $ff
-Unknown_11d5f9:	db NATU, XATU, $ff
-Unknown_11d5fc:	db DUNSPARCE, $ff
-Unknown_11d5fe:	db SEEL, STEELIX, TYPHLOSION, DRAGONAIR, BUTTERFREE, SCIZOR, HOPPIP, BLISSEY, PARAS, PARASECT, QWILFISH, MR__MIME, TYROGUE, CLOYSTER, TYRANITAR, $ff
-Unknown_11d60e:	db CLEFFA, WEEDLE, PIKACHU, CLEFABLE, PIDGEOT, PIDGEOTTO, PICHU, CLEFAIRY, CHARMANDER, STARYU, CYNDAQUIL, SUNKERN, TEDDIURSA, VOLTORB, $ff
-Unknown_11d61d:	db MOLTRES, FLAREON, ALAKAZAM, MAGMAR, FORRETRESS, WIGGLYTUFF, IVYSAUR, BULBASAUR, VENUSAUR, AERODACTYL, MAGBY, IGGLYBUFF, UMBREON, ARTICUNO, JIGGLYPUFF, SNUBBULL, $ff
-Unknown_11d62e:	db BAYLEEF, GRIMER, MUK, HERACROSS, HOUNDOOM, PERSIAN, LICKITUNG, $ff
-Unknown_11d636:	db HO_OH, HOOTHOOT, PIDGEY, PONYTA, SKIPLOOM, PORYGON, PORYGON2, $ff
-Unknown_11d63e:	db MAGCARGO, SLUGMA, QUILAVA, BELLSPROUT, WEEZING, MARILL, AZUMARILL, ELECTRODE, MANKEY, MANTINE, $ff
-Unknown_11d649:	db DRATINI, MEW, MEWTWO, MILTANK, $ff
-Unknown_11d64e:	db MISDREAVUS, SMOOCHUM, $ff
-Unknown_11d651:	db MEGANIUM, DITTO, TENTACOOL, MAREEP, $ff
-Unknown_11d656:	db FLAAFFY, VENOMOTH, TANGELA, $ff
-Unknown_11d65a:	db SLOWKING, SLOWBRO, SLOWPOKE, MURKROW, YANMA, $ff
-Unknown_11d660:	db KADABRA, $ff
-Unknown_11d662:	db LARVITAR, NOCTOWL, $ff
-Unknown_11d665:	db RAIKOU, RAICHU, CHANSEY, RATICATE, LAPRAS, VILEPLUME, LANTURN, $ff
-Unknown_11d66d:	db CHARMELEON, CHARIZARD, URSARING, $ff
-Unknown_11d671:	db JYNX, LUGIA, $ff
-Unknown_11d674:	db MAGNETON, LEDIAN, LEDYBA, $ff
-Unknown_11d678:	db VULPIX, $ff
-Unknown_11d67a:	db JUMPLUFF, TOTODILE, MACHOP
-Unknown_11d67d:	db $ff
-; 11d67e
-
-GFX_11d67e:
-INCBIN "gfx/pokedex/select_start.2bpp"
-; 11d6de
-
-LZ_11d6de:
-INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
-; 11da52
-
-Strings_11da52: ; 11da52
-	db "ポケモン@@"
-	db "タイプ@@@"
-	db "あいさつ@@"
-	db "ひと@@@@"
-	db "バトル@@@"
-	db "こえ@@@@"
-	db "かいわ@@@"
-	db "きもち@@@"
-	db "じょうたい@"
-	db "せいかつ@@"
-	db "しゅみ@@@"
-	db "こうどう@@"
-	db "じかん@@@"
-	db "むすび@@@"
-	db "あれこれ@@"
-; 11daac
-
-Unknown_11daac: ; 11daac
-	dw Unknown_11dac8
-	dw Unknown_11db58
-	dw Unknown_11dc78
-	dw Unknown_11dea0
-	dw Unknown_11e0c8
-	dw Unknown_11e2d8
-	dw Unknown_11e4e8
-	dw Unknown_11e710
-	dw Unknown_11e920
-	dw Unknown_11ea58
-	dw Unknown_11eb90
-	dw Unknown_11edb8
-	dw Unknown_11eef0
-	dw Unknown_11f100
-
-Unknown_11dac8: ; 11dac8
-	db "あく@@@", $26, $0, $0
-	db "いわ@@@", $aa, $0, $0
-	db "エスパー@", $da, $0, $0
-	db "かくとう@", $4e, $1, $0
-	db "くさ@@@", $ba, $1, $0
-	db "ゴースト@", $e4, $1, $0
-	db "こおり@@", $e6, $1, $0
-	db "じめん@@", $68, $2, $0
-	db "タイプ@@", $e8, $2, $0
-	db "でんき@@", $8e, $3, $0
-	db "どく@@@", $ae, $3, $0
-	db "ドラゴン@", $bc, $3, $0
-	db "ノーマル@", $22, $4, $0
-	db "はがね@@", $36, $4, $0
-	db "ひこう@@", $5e, $4, $0
-	db "ほのお@@", $b2, $4, $0
-	db "みず@@@", $f4, $4, $0
-	db "むし@@@", $12, $5, $0
-
-Unknown_11db58: ; 11db58
-	db "ありがと@", $58, $0, $0
-	db "ありがとう", $5a, $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
-	db "おめでとう", $2a, $1, $0
-	db "ごめん@@", $f8, $1, $0
-	db "ごめんよ@", $fa, $1, $0
-	db "こらっ@@", $fc, $1, $0
-	db "こんちは!", $a, $2, $0
-	db "こんにちは", $10, $2, $0
-	db "さようなら", $28, $2, $0
-	db "サンキュー", $2e, $2, $0
-	db "さんじょう", $30, $2, $0
-	db "しっけい@", $48, $2, $0
-	db "しつれい@", $4c, $2, $0
-	db "じゃーね@", $6c, $2, $0
-	db "すいません", $8c, $2, $0
-	db "それじゃ@", $ca, $2, $0
-	db "どうも@@", $a6, $3, $0
-	db "なんじゃ@", $ee, $3, $0
-	db "ハーイ@@", $2c, $4, $0
-	db "はいはい@", $32, $4, $0
-	db "バイバイ@", $34, $4, $0
-	db "へイ@@@", $8a, $4, $0
-	db "またね@@", $de, $4, $0
-	db "もしもし@", $32, $5, $0
-	db "やあ@@@", $3e, $5, $0
-	db "やっほー@", $4e, $5, $0
-	db "よう@@@", $62, $5, $0
-	db "ようこそ@", $64, $5, $0
-	db "よろしく@", $80, $5, $0
-	db "らっしゃい", $94, $5, $0
-
-Unknown_11dc78: ; 11dc78
-	db "あいて@@", $1c, $0, $0
-	db "あたし@@", $36, $0, $0
-	db "あなた@@", $40, $0, $0
-	db "あなたが@", $42, $0, $0
-	db "あなたに@", $44, $0, $0
-	db "あなたの@", $46, $0, $0
-	db "あなたは@", $48, $0, $0
-	db "あなたを@", $4a, $0, $0
-	db "おかあさん", $e8, $0, $0
-	db "おじいさん", $fc, $0, $0
-	db "おじさん@", $2, $1, $0
-	db "おとうさん", $e, $1, $0
-	db "おとこのこ", $10, $1, $0
-	db "おとな@@", $14, $1, $0
-	db "おにいさん", $16, $1, $0
-	db "おねえさん", $18, $1, $0
-	db "おばあさん", $1c, $1, $0
-	db "おばさん@", $20, $1, $0
-	db "おれさま@", $34, $1, $0
-	db "おんなのこ", $3a, $1, $0
-	db "ガール@@", $40, $1, $0
-	db "かぞく@@", $52, $1, $0
-	db "かのじょ@", $72, $1, $0
-	db "かれ@@@", $7c, $1, $0
-	db "きみ@@@", $9a, $1, $0
-	db "きみが@@", $9c, $1, $0
-	db "きみに@@", $9e, $1, $0
-	db "きみの@@", $a0, $1, $0
-	db "きみは@@", $a2, $1, $0
-	db "きみを@@", $a4, $1, $0
-	db "ギャル@@", $ae, $1, $0
-	db "きょうだい", $b2, $1, $0
-	db "こども@@", $f0, $1, $0
-	db "じぶん@@", $54, $2, $0
-	db "じぶんが@", $56, $2, $0
-	db "じぶんに@", $58, $2, $0
-	db "じぶんの@", $5a, $2, $0
-	db "じぶんは@", $5c, $2, $0
-	db "じぶんを@", $5e, $2, $0
-	db "だれ@@@", $18, $3, $0
-	db "だれか@@", $1a, $3, $0
-	db "だれが@@", $1c, $3, $0
-	db "だれに@@", $1e, $3, $0
-	db "だれの@@", $20, $3, $0
-	db "だれも@@", $22, $3, $0
-	db "だれを@@", $24, $3, $0
-	db "ちゃん@@", $38, $3, $0
-	db "ともだち@", $b8, $3, $0
-	db "なかま@@", $d4, $3, $0
-	db "ひと@@@", $62, $4, $0
-	db "ボーイ@@", $98, $4, $0
-	db "ボク@@@", $a0, $4, $0
-	db "ボクが@@", $a2, $4, $0
-	db "ボクに@@", $a4, $4, $0
-	db "ボクの@@", $a6, $4, $0
-	db "ボクは@@", $a8, $4, $0
-	db "ボクを@@", $aa, $4, $0
-	db "みんな@@", $4, $5, $0
-	db "みんなが@", $6, $5, $0
-	db "みんなに@", $8, $5, $0
-	db "みんなの@", $a, $5, $0
-	db "みんなは@", $c, $5, $0
-	db "ライバル@", $8a, $5, $0
-	db "わたし@@", $c2, $5, $0
-	db "わたしが@", $c4, $5, $0
-	db "わたしに@", $c6, $5, $0
-	db "わたしの@", $c8, $5, $0
-	db "わたしは@", $ca, $5, $0
-	db "わたしを@", $cc, $5, $0
-
-Unknown_11dea0: ; 11dea0
-	db "あいしょう", $18, $0, $0
-	db "いけ!@@", $88, $0, $0
-	db "いちばん@", $96, $0, $0
-	db "かくご@@", $4c, $1, $0
-	db "かたせて@", $54, $1, $0
-	db "かち@@@", $56, $1, $0
-	db "かつ@@@", $58, $1, $0
-	db "かった@@", $60, $1, $0
-	db "かったら@", $62, $1, $0
-	db "かって@@", $64, $1, $0
-	db "かてない@", $66, $1, $0
-	db "かてる@@", $68, $1, $0
-	db "かなわない", $70, $1, $0
-	db "きあい@@", $84, $1, $0
-	db "きめた@@", $a8, $1, $0
-	db "きりふだ@", $b6, $1, $0
-	db "くらえ@@", $c2, $1, $0
-	db "こい!@@", $da, $1, $0
-	db "こうげき@", $e0, $1, $0
-	db "こうさん@", $e2, $1, $0
-	db "こんじょう", $8, $2, $0
-	db "さいのう@", $16, $2, $0
-	db "さくせん@", $1a, $2, $0
-	db "さばき@@", $22, $2, $0
-	db "しょうぶ@", $7e, $2, $0
-	db "しょうり@", $80, $2, $0
-	db "せめ@@@", $b4, $2, $0
-	db "センス@@", $b6, $2, $0
-	db "たいせん@", $e6, $2, $0
-	db "たたかい@", $f6, $2, $0
-	db "ちから@@", $32, $3, $0
-	db "チャレンジ", $36, $3, $0
-	db "つよい@@", $58, $3, $0
-	db "つよすぎ@", $5a, $3, $0
-	db "つらい@@", $5c, $3, $0
-	db "つらかった", $5e, $3, $0
-	db "てかげん@", $6c, $3, $0
-	db "てき@@@", $6e, $3, $0
-	db "てんさい@", $90, $3, $0
-	db "でんせつ@", $94, $3, $0
-	db "トレーナー", $c6, $3, $0
-	db "にげ@@@", $4, $4, $0
-	db "ぬるい@@", $10, $4, $0
-	db "ねらう@@", $16, $4, $0
-	db "バトル@@", $4a, $4, $0
-	db "ファイト@", $72, $4, $0
-	db "ふっかつ@", $78, $4, $0
-	db "ポイント@", $94, $4, $0
-	db "ポケモン@", $ac, $4, $0
-	db "ほんき@@", $bc, $4, $0
-	db "まいった!", $c4, $4, $0
-	db "まけ@@@", $c8, $4, $0
-	db "まけたら@", $ca, $4, $0
-	db "まけて@@", $cc, $4, $0
-	db "まける@@", $ce, $4, $0
-	db "まもり@@", $ea, $4, $0
-	db "みかた@@", $f2, $4, $0
-	db "みとめない", $fe, $4, $0
-	db "みとめる@", $0, $5, $0
-	db "むてき@@", $16, $5, $0
-	db "もらった!", $3c, $5, $0
-	db "よゆう@@", $7a, $5, $0
-	db "よわい@@", $82, $5, $0
-	db "よわすぎ@", $84, $5, $0
-	db "らくしょう", $8e, $5, $0
-	db "りーダー@", $9e, $5, $0
-	db "ルール@@", $a0, $5, $0
-	db "レべル@@", $a6, $5, $0
-	db "わざ@@@", $be, $5, $0
-
-Unknown_11e0c8: ; 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 "ー@@@@", $e, $0, $0
-	db "ーーー@@", $10, $0, $0
-	db "あーあ@@", $14, $0, $0
-	db "あーん@@", $16, $0, $0
-	db "あははー@", $52, $0, $0
-	db "あら@@@", $54, $0, $0
-	db "いえ@@@", $72, $0, $0
-	db "イエス@@", $74, $0, $0
-	db "うう@@@", $ac, $0, $0
-	db "うーん@@", $ae, $0, $0
-	db "うおー!@", $b0, $0, $0
-	db "うおりゃー", $b2, $0, $0
-	db "うひょー@", $bc, $0, $0
-	db "うふふ@@", $be, $0, $0
-	db "うわー@@", $ca, $0, $0
-	db "うわーん@", $cc, $0, $0
-	db "ええ@@@", $d2, $0, $0
-	db "えー@@@", $d4, $0, $0
-	db "えーん@@", $d6, $0, $0
-	db "えへへ@@", $dc, $0, $0
-	db "おいおい@", $e0, $0, $0
-	db "おお@@@", $e2, $0, $0
-	db "おっと@@", $c, $1, $0
-	db "がーん@@", $42, $1, $0
-	db "キャー@@", $aa, $1, $0
-	db "ギャー@@", $ac, $1, $0
-	db "ぐふふふふ", $bc, $1, $0
-	db "げっ@@@", $ce, $1, $0
-	db "しくしく@", $3e, $2, $0
-	db "ちえっ@@", $2e, $3, $0
-	db "てへ@@@", $86, $3, $0
-	db "ノー@@@", $20, $4, $0
-	db "はあー@@", $2a, $4, $0
-	db "はい@@@", $30, $4, $0
-	db "はっはっは", $48, $4, $0
-	db "ひいー@@", $56, $4, $0
-	db "ひゃあ@@", $6a, $4, $0
-	db "ふっふっふ", $7c, $4, $0
-	db "ふにゃ@@", $7e, $4, $0
-	db "ププ@@@", $80, $4, $0
-	db "ふふん@@", $82, $4, $0
-	db "ふん@@@", $88, $4, $0
-	db "へっへっへ", $8e, $4, $0
-	db "へへー@@", $90, $4, $0
-	db "ほーほほほ", $9c, $4, $0
-	db "ほら@@@", $b6, $4, $0
-	db "まあ@@@", $c0, $4, $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 "ラララ@@", $98, $5, $0
-	db "わーい@@", $ac, $5, $0
-	db "わーん!!", $b0, $5, $0
-	db "ワォ@@@", $b2, $5, $0
-	db "わっ!!@", $ce, $5, $0
-	db "わははは!", $d0, $5, $0
-
-Unknown_11e2d8: ; 11e2d8
-	db "あのね@@", $50, $0, $0
-	db "あんまり@", $6e, $0, $0
-	db "いじわる@", $8e, $0, $0
-	db "うそ@@@", $b6, $0, $0
-	db "うむ@@@", $c4, $0, $0
-	db "おーい@@", $e4, $0, $0
-	db "おすすめ@", $6, $1, $0
-	db "おばかさん", $1e, $1, $0
-	db "かなり@@", $6e, $1, $0
-	db "から@@@", $7a, $1, $0
-	db "きぶん@@", $98, $1, $0
-	db "けど@@@", $d6, $1, $0
-	db "こそ@@@", $ea, $1, $0
-	db "こと@@@", $ee, $1, $0
-	db "さあ@@@", $12, $2, $0
-	db "さっぱり@", $1e, $2, $0
-	db "さて@@@", $20, $2, $0
-	db "じゅうぶん", $72, $2, $0
-	db "すぐ@@@", $94, $2, $0
-	db "すごく@@", $98, $2, $0
-	db "すこしは@", $9a, $2, $0
-	db "すっっごい", $a0, $2, $0
-	db "ぜーんぜん", $b0, $2, $0
-	db "ぜったい@", $b2, $2, $0
-	db "それで@@", $ce, $2, $0
-	db "だけ@@@", $f2, $2, $0
-	db "だって@@", $fc, $2, $0
-	db "たぶん@@", $6, $3, $0
-	db "たら@@@", $14, $3, $0
-	db "ちょー@@", $3a, $3, $0
-	db "ちょっと@", $3c, $3, $0
-	db "ったら@@", $4e, $3, $0
-	db "って@@@", $50, $3, $0
-	db "ていうか@", $62, $3, $0
-	db "でも@@@", $88, $3, $0
-	db "どうしても", $9c, $3, $0
-	db "とうぜん@", $a0, $3, $0
-	db "どうぞ@@", $a2, $3, $0
-	db "とりあえず", $be, $3, $0
-	db "なあ@@@", $cc, $3, $0
-	db "なんて@@", $f4, $3, $0
-	db "なんでも@", $fc, $3, $0
-	db "なんとか@", $fe, $3, $0
-	db "には@@@", $8, $4, $0
-	db "バッチり@", $46, $4, $0
-	db "ばりばり@", $52, $4, $0
-	db "ほど@@@", $b0, $4, $0
-	db "ほんと@@", $be, $4, $0
-	db "まさに@@", $d0, $4, $0
-	db "マジ@@@", $d2, $4, $0
-	db "マジで@@", $d4, $4, $0
-	db "まったく@", $e4, $4, $0
-	db "まで@@@", $e6, $4, $0
-	db "まるで@@", $ec, $4, $0
-	db "ムード@@", $e, $5, $0
-	db "むしろ@@", $14, $5, $0
-	db "めちゃ@@", $24, $5, $0
-	db "めっぽう@", $28, $5, $0
-	db "もう@@@", $2c, $5, $0
-	db "モード@@", $2e, $5, $0
-	db "もっと@@", $36, $5, $0
-	db "もはや@@", $38, $5, $0
-	db "やっと@@", $4a, $5, $0
-	db "やっぱり@", $4c, $5, $0
-	db "より@@@", $7c, $5, $0
-	db "れば@@@", $a4, $5, $0
-
-Unknown_11e4e8: ; 11e4e8
-	db "あいたい@", $1a, $0, $0
-	db "あそびたい", $32, $0, $0
-	db "いきたい@", $7c, $0, $0
-	db "うかれて@", $b4, $0, $0
-	db "うれしい@", $c6, $0, $0
-	db "うれしさ@", $c8, $0, $0
-	db "エキサイト", $d8, $0, $0
-	db "えらい@@", $de, $0, $0
-	db "おかしい@", $ec, $0, $0
-	db "ォッケー@", $8, $1, $0
-	db "かえりたい", $48, $1, $0
-	db "がっくし@", $5a, $1, $0
-	db "かなしい@", $6c, $1, $0
-	db "がんばって", $80, $1, $0
-	db "きがしない", $86, $1, $0
-	db "きがする@", $88, $1, $0
-	db "ききたい@", $8a, $1, $0
-	db "きになる@", $90, $1, $0
-	db "きのせい@", $96, $1, $0
-	db "きらい@@", $b4, $1, $0
-	db "くやしい@", $be, $1, $0
-	db "くやしさ@", $c0, $1, $0
-	db "さみしい@", $24, $2, $0
-	db "ざんねん@", $32, $2, $0
-	db "しあわせ@", $36, $2, $0
-	db "したい@@", $44, $2, $0
-	db "したくない", $46, $2, $0
-	db "しまった@", $64, $2, $0
-	db "しょんぼり", $82, $2, $0
-	db "すき@@@", $92, $2, $0
-	db "だいきらい", $da, $2, $0
-	db "たいくつ@", $dc, $2, $0
-	db "だいじ@@", $de, $2, $0
-	db "だいすき@", $e4, $2, $0
-	db "たいへん@", $ea, $2, $0
-	db "たのしい@", $0, $3, $0
-	db "たのしすぎ", $2, $3, $0
-	db "たべたい@", $8, $3, $0
-	db "ダメダメ@", $e, $3, $0
-	db "たりない@", $16, $3, $0
-	db "ちくしょー", $34, $3, $0
-	db "どうしよう", $9e, $3, $0
-	db "ドキドキ@", $ac, $3, $0
-	db "ナイス@@", $d0, $3, $0
-	db "のみたい@", $26, $4, $0
-	db "びっくり@", $60, $4, $0
-	db "ふあん@@", $74, $4, $0
-	db "ふらふら@", $86, $4, $0
-	db "ほしい@@", $ae, $4, $0
-	db "ボロボロ@", $b8, $4, $0
-	db "まだまだ@", $e0, $4, $0
-	db "まてない@", $e8, $4, $0
-	db "まんぞく@", $f0, $4, $0
-	db "みたい@@", $f8, $4, $0
-	db "めずらしい", $22, $5, $0
-	db "メラメラ@", $2a, $5, $0
-	db "やだ@@@", $46, $5, $0
-	db "やったー@", $48, $5, $0
-	db "やばい@@", $50, $5, $0
-	db "やばすぎる", $52, $5, $0
-	db "やられた@", $54, $5, $0
-	db "やられて@", $56, $5, $0
-	db "よかった@", $6e, $5, $0
-	db "ラブラブ@", $96, $5, $0
-	db "ロマン@@", $a8, $5, $0
-	db "ろんがい@", $aa, $5, $0
-	db "わから@@", $b4, $5, $0
-	db "わかり@@", $b6, $5, $0
-	db "わくわく@", $ba, $5, $0
-
-Unknown_11e710: ; 11e710
-	db "あつい@@", $38, $0, $0
-	db "あった@@", $3a, $0, $0
-	db "あり@@@", $56, $0, $0
-	db "ある@@@", $5e, $0, $0
-	db "あわてて@", $6a, $0, $0
-	db "いい@@@", $70, $0, $0
-	db "いか@@@", $76, $0, $0
-	db "イカス@@", $78, $0, $0
-	db "いきおい@", $7a, $0, $0
-	db "いける@@", $8a, $0, $0
-	db "いじょう@", $8c, $0, $0
-	db "いそがしい", $90, $0, $0
-	db "いっしょに", $9a, $0, $0
-	db "いっぱい@", $9c, $0, $0
-	db "いない@@", $a0, $0, $0
-	db "いや@@@", $a4, $0, $0
-	db "いる@@@", $a8, $0, $0
-	db "うまい@@", $c0, $0, $0
-	db "うまく@@", $c2, $0, $0
-	db "おおきい@", $e6, $0, $0
-	db "おくれ@@", $f2, $0, $0
-	db "おしい@@", $fa, $0, $0
-	db "おもしろい", $2c, $1, $0
-	db "おもしろく", $2e, $1, $0
-	db "かっこいい", $5c, $1, $0
-	db "かわいい@", $7e, $1, $0
-	db "かんぺき@", $82, $1, $0
-	db "けっこう@", $d0, $1, $0
-	db "げんき@@", $d8, $1, $0
-	db "こわい@@", $6, $2, $0
-	db "さいこう@", $14, $2, $0
-	db "さむい@@", $26, $2, $0
-	db "さわやか@", $2c, $2, $0
-	db "しかたない", $38, $2, $0
-	db "すごい@@", $96, $2, $0
-	db "すごすぎ@", $9c, $2, $0
-	db "すてき@@", $a4, $2, $0
-	db "たいした@", $e0, $2, $0
-	db "だいじょぶ", $e2, $2, $0
-	db "たかい@@", $ec, $2, $0
-	db "ただしい@", $f8, $2, $0
-	db "だめ@@@", $c, $3, $0
-	db "ちいさい@", $2c, $3, $0
-	db "ちがう@@", $30, $3, $0
-	db "つかれ@@", $48, $3, $0
-	db "とくい@@", $b0, $3, $0
-	db "とまらない", $b6, $3, $0
-	db "ない@@@", $ce, $3, $0
-	db "なかった@", $d2, $3, $0
-	db "なし@@@", $d8, $3, $0
-	db "なって@@", $dc, $3, $0
-	db "はやい@@", $50, $4, $0
-	db "ひかる@@", $5a, $4, $0
-	db "ひくい@@", $5c, $4, $0
-	db "ひどい@@", $64, $4, $0
-	db "ひとりで@", $66, $4, $0
-	db "ひま@@@", $68, $4, $0
-	db "ふそく@@", $76, $4, $0
-	db "へた@@@", $8c, $4, $0
-	db "まちがって", $e2, $4, $0
-	db "やさしい@", $42, $5, $0
-	db "よく@@@", $70, $5, $0
-	db "よわって@", $86, $5, $0
-	db "らく@@@", $8c, $5, $0
-	db "らしい@@", $90, $5, $0
-	db "わるい@@", $d4, $5, $0
-
-Unknown_11e920: ; 11e920
-	db "アルバイト", $64, $0, $0
-	db "うち@@@", $ba, $0, $0
-	db "おかね@@", $ee, $0, $0
-	db "おこづかい", $f4, $0, $0
-	db "おふろ@@", $24, $1, $0
-	db "がっこう@", $5e, $1, $0
-	db "きねん@@", $92, $1, $0
-	db "グループ@", $c6, $1, $0
-	db "ゲット@@", $d2, $1, $0
-	db "こうかん@", $de, $1, $0
-	db "しごと@@", $40, $2, $0
-	db "しゅぎょう", $74, $2, $0
-	db "じゅぎょう", $76, $2, $0
-	db "じゅく@@", $78, $2, $0
-	db "しんか@@", $88, $2, $0
-	db "ずかん@@", $90, $2, $0
-	db "せいかつ@", $ae, $2, $0
-	db "せんせい@", $b8, $2, $0
-	db "センター@", $ba, $2, $0
-	db "タワー@@", $28, $3, $0
-	db "つうしん@", $40, $3, $0
-	db "テスト@@", $7e, $3, $0
-	db "テレビ@@", $8c, $3, $0
-	db "でんわ@@", $96, $3, $0
-	db "どうぐ@@", $9a, $3, $0
-	db "トレード@", $c4, $3, $0
-	db "なまえ@@", $e8, $3, $0
-	db "ニュース@", $a, $4, $0
-	db "にんき@@", $c, $4, $0
-	db "パーティー", $2e, $4, $0
-	db "べんきょう", $92, $4, $0
-	db "マシン@@", $d6, $4, $0
-	db "めいし@@", $1e, $5, $0
-	db "メッセージ", $26, $5, $0
-	db "もようがえ", $3a, $5, $0
-	db "ゆめ@@@", $5a, $5, $0
-	db "ようちえん", $66, $5, $0
-	db "ラジォ@@", $92, $5, $0
-	db "ワールド@", $ae, $5, $0
-
-Unknown_11ea58: ; 11ea58
-	db "アイドル@", $1e, $0, $0
-	db "アニメ@@", $4c, $0, $0
-	db "うた@@@", $b8, $0, $0
-	db "えいが@@", $d0, $0, $0
-	db "おかし@@", $ea, $0, $0
-	db "おしゃべり", $4, $1, $0
-	db "おままごと", $28, $1, $0
-	db "おもちゃ@", $30, $1, $0
-	db "おんがく@", $38, $1, $0
-	db "カード@@", $3e, $1, $0
-	db "かいもの@", $46, $1, $0
-	db "グルメ@@", $c8, $1, $0
-	db "ゲーム@@", $cc, $1, $0
-	db "ざっし@@", $1c, $2, $0
-	db "さんぽ@@", $34, $2, $0
-	db "じてんしゃ", $50, $2, $0
-	db "しゅみ@@", $7a, $2, $0
-	db "スポーツ@", $a8, $2, $0
-	db "ダイエット", $d8, $2, $0
-	db "たからもの", $f0, $2, $0
-	db "たび@@@", $4, $3, $0
-	db "ダンス@@", $2a, $3, $0
-	db "つり@@@", $60, $3, $0
-	db "デート@@", $6a, $3, $0
-	db "でんしゃ@", $92, $3, $0
-	db "ぬいぐるみ", $e, $4, $0
-	db "パソコン@", $3e, $4, $0
-	db "はな@@@", $4c, $4, $0
-	db "ヒーロー@", $58, $4, $0
-	db "ひるね@@", $6e, $4, $0
-	db "ヒロイン@", $70, $4, $0
-	db "ぼうけん@", $96, $4, $0
-	db "ボード@@", $9a, $4, $0
-	db "ボール@@", $9e, $4, $0
-	db "ほん@@@", $ba, $4, $0
-	db "マンガ@@", $ee, $4, $0
-	db "やくそく@", $40, $5, $0
-	db "やすみ@@", $44, $5, $0
-	db "よてい@@", $74, $5, $0
-
-Unknown_11eb90: ; 11eb90
-	db "あう@@@", $20, $0, $0
-	db "あきらめ@", $24, $0, $0
-	db "あげる@@", $28, $0, $0
-	db "あせる@@", $2e, $0, $0
-	db "あそび@@", $30, $0, $0
-	db "あそぶ@@", $34, $0, $0
-	db "あつめ@@", $3e, $0, $0
-	db "あるき@@", $60, $0, $0
-	db "あるく@@", $62, $0, $0
-	db "いく@@@", $7e, $0, $0
-	db "いけ@@@", $86, $0, $0
-	db "おき@@@", $f0, $0, $0
-	db "おこり@@", $f6, $0, $0
-	db "おこる@@", $f8, $0, $0
-	db "おしえ@@", $fe, $0, $0
-	db "おしえて@", $0, $1, $0
-	db "おねがい@", $1a, $1, $0
-	db "おぼえ@@", $26, $1, $0
-	db "かえる@@", $4a, $1, $0
-	db "がまん@@", $74, $1, $0
-	db "きく@@@", $8c, $1, $0
-	db "きたえ@@", $8e, $1, $0
-	db "きめ@@@", $a6, $1, $0
-	db "くる@@@", $c4, $1, $0
-	db "さがし@@", $18, $2, $0
-	db "さわぎ@@", $2a, $2, $0
-	db "した@@@", $42, $2, $0
-	db "しって@@", $4a, $2, $0
-	db "して@@@", $4e, $2, $0
-	db "しない@@", $52, $2, $0
-	db "しまう@@", $60, $2, $0
-	db "じまん@@", $66, $2, $0
-	db "しらない@", $84, $2, $0
-	db "しる@@@", $86, $2, $0
-	db "しんじて@", $8a, $2, $0
-	db "する@@@", $aa, $2, $0
-	db "たべる@@", $a, $3, $0
-	db "つかう@@", $42, $3, $0
-	db "つかえ@@", $44, $3, $0
-	db "つかって@", $46, $3, $0
-	db "できない@", $70, $3, $0
-	db "できる@@", $72, $3, $0
-	db "でない@@", $84, $3, $0
-	db "でる@@@", $8a, $3, $0
-	db "なげる@@", $d6, $3, $0
-	db "なやみ@@", $ea, $3, $0
-	db "ねられ@@", $18, $4, $0
-	db "ねる@@@", $1a, $4, $0
-	db "のがし@@", $24, $4, $0
-	db "のむ@@@", $28, $4, $0
-	db "はしり@@", $3a, $4, $0
-	db "はしる@@", $3c, $4, $0
-	db "はたらき@", $40, $4, $0
-	db "はたらく@", $42, $4, $0
-	db "はまって@", $4e, $4, $0
-	db "ぶつけ@@", $7a, $4, $0
-	db "ほめ@@@", $b4, $4, $0
-	db "みせて@@", $f6, $4, $0
-	db "みて@@@", $fc, $4, $0
-	db "みる@@@", $2, $5, $0
-	db "めざす@@", $20, $5, $0
-	db "もって@@", $34, $5, $0
-	db "ゆずる@@", $58, $5, $0
-	db "ゆるす@@", $5c, $5, $0
-	db "ゆるせ@@", $5e, $5, $0
-	db "られない@", $9a, $5, $0
-	db "られる@@", $9c, $5, $0
-	db "わかる@@", $b8, $5, $0
-	db "わすれ@@", $c0, $5, $0
-
-Unknown_11edb8: ; 11edb8
-	db "あき@@@", $22, $0, $0
-	db "あさ@@@", $2a, $0, $0
-	db "あした@@", $2c, $0, $0
-	db "いちにち@", $94, $0, $0
-	db "いつか@@", $98, $0, $0
-	db "いつも@@", $9e, $0, $0
-	db "いま@@@", $a2, $0, $0
-	db "えいえん@", $ce, $0, $0
-	db "おととい@", $12, $1, $0
-	db "おわり@@", $36, $1, $0
-	db "かようび@", $78, $1, $0
-	db "きのう@@", $94, $1, $0
-	db "きょう@@", $b0, $1, $0
-	db "きんようび", $b8, $1, $0
-	db "げつようび", $d4, $1, $0
-	db "このあと@", $f4, $1, $0
-	db "このまえ@", $f6, $1, $0
-	db "こんど@@", $c, $2, $0
-	db "じかん@@", $3c, $2, $0
-	db "じゅうねん", $70, $2, $0
-	db "すいようび", $8e, $2, $0
-	db "スタート@", $9e, $2, $0
-	db "ずっと@@", $a2, $2, $0
-	db "ストップ@", $a6, $2, $0
-	db "そのうち@", $c4, $2, $0
-	db "ついに@@", $3e, $3, $0
-	db "つぎ@@@", $4a, $3, $0
-	db "どようび@", $ba, $3, $0
-	db "なつ@@@", $da, $3, $0
-	db "にちようび", $6, $4, $0
-	db "はじめ@@", $38, $4, $0
-	db "はる@@@", $54, $4, $0
-	db "ひる@@@", $6c, $4, $0
-	db "ふゆ@@@", $84, $4, $0
-	db "まいにち@", $c6, $4, $0
-	db "もくようび", $30, $5, $0
-	db "よなか@@", $76, $5, $0
-	db "よる@@@", $7e, $5, $0
-	db "らいしゅう", $88, $5, $0
-
-Unknown_11eef0: ; 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 "かも@@@", $76, $1, $0
-	db "くれ@@@", $ca, $1, $0
-	db "ございます", $e8, $1, $0
-	db "しがち@@", $3a, $2, $0
-	db "します@@", $62, $2, $0
-	db "じゃ@@@", $6a, $2, $0
-	db "じゃん@@", $6e, $2, $0
-	db "しよう@@", $7c, $2, $0
-	db "ぜ!@@@", $ac, $2, $0
-	db "ぞ!@@@", $bc, $2, $0
-	db "た@@@@", $d4, $2, $0
-	db "だ@@@@", $d6, $2, $0
-	db "だからね@", $ee, $2, $0
-	db "だぜ@@@", $f4, $2, $0
-	db "だった@@", $fa, $2, $0
-	db "だね@@@", $fe, $2, $0
-	db "だよ@@@", $10, $3, $0
-	db "だよねー!", $12, $3, $0
-	db "だわ@@@", $26, $3, $0
-	db "ッス@@@", $4c, $3, $0
-	db "ってかんじ", $52, $3, $0
-	db "っぱなし@", $54, $3, $0
-	db "つもり@@", $56, $3, $0
-	db "ていない@", $64, $3, $0
-	db "ている@@", $66, $3, $0
-	db "でーす!@", $68, $3, $0
-	db "でした@@", $74, $3, $0
-	db "でしょ?@", $76, $3, $0
-	db "でしょー!", $78, $3, $0
-	db "です@@@", $7a, $3, $0
-	db "ですか?@", $7c, $3, $0
-	db "ですよ@@", $80, $3, $0
-	db "ですわ@@", $82, $3, $0
-	db "どうなの?", $a4, $3, $0
-	db "どうよ?@", $a8, $3, $0
-	db "とかいって", $aa, $3, $0
-	db "なの@@@", $e0, $3, $0
-	db "なのか@@", $e2, $3, $0
-	db "なのだ@@", $e4, $3, $0
-	db "なのよ@@", $e6, $3, $0
-	db "なんだね@", $f2, $3, $0
-	db "なんです@", $f8, $3, $0
-	db "なんてね@", $fa, $3, $0
-	db "ね@@@@", $12, $4, $0
-	db "ねー@@@", $14, $4, $0
-	db "の@@@@", $1c, $4, $0
-	db "の?@@@", $1e, $4, $0
-	db "ばっかり@", $44, $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 "よー@@@", $68, $5, $0
-	db "よーん@@", $6c, $5, $0
-	db "よね@@@", $78, $5, $0
-	db "るよ@@@", $a2, $5, $0
-	db "わけ@@@", $bc, $5, $0
-	db "わよ!@@", $d2, $5, $0
-
-Unknown_11f100: ; 11f100
-	db "ああ@@@", $12, $0, $0
-	db "あっち@@", $3c, $0, $0
-	db "あの@@@", $4e, $0, $0
-	db "ありゃ@@", $5c, $0, $0
-	db "あれ@@@", $66, $0, $0
-	db "あれは@@", $68, $0, $0
-	db "あんな@@", $6c, $0, $0
-	db "こう@@@", $dc, $1, $0
-	db "こっち@@", $ec, $1, $0
-	db "この@@@", $f2, $1, $0
-	db "こりゃ@@", $fe, $1, $0
-	db "これ@@@", $0, $2, $0
-	db "これだ!@", $2, $2, $0
-	db "これは@@", $4, $2, $0
-	db "こんな@@", $e, $2, $0
-	db "そう@@@", $be, $2, $0
-	db "そっち@@", $c0, $2, $0
-	db "その@@@", $c2, $2, $0
-	db "そりゃ@@", $c6, $2, $0
-	db "それ@@@", $c8, $2, $0
-	db "それだ!@", $cc, $2, $0
-	db "それは@@", $d0, $2, $0
-	db "そんな@@", $d2, $2, $0
-	db "どう@@@", $98, $3, $0
-	db "どっち@@", $b2, $3, $0
-	db "どの@@@", $b4, $3, $0
-	db "どりゃ@@", $c0, $3, $0
-	db "どれ@@@", $c2, $3, $0
-	db "どれを@@", $c8, $3, $0
-	db "どんな@@", $ca, $3, $0
-	db "なに@@@", $de, $3, $0
-	db "なんか@@", $ec, $3, $0
-	db "なんだ@@", $f0, $3, $0
-	db "なんで@@", $f6, $3, $0
-	db "なんなんだ", $0, $4, $0
-	db "なんの@@", $2, $4, $0
-; 11f220
-
-Unknown_11f220:
-	db $12, $01, $24, $02
-	db $45, $05, $45, $05
-	db $42, $05, $42, $05
-	db $45, $05, $42, $05
-	db $27, $03, $27, $03
-	db $45, $05, $27, $03
-	db $42, $05, $24, $02
-
-Unknown_11f23c:
-	db $12, $00, $2f, $00
-	db $70, $00, $1e, $00
-	db $ac, $00, $11, $00
-	db $ce, $00, $09, $00
-	db $e0, $00, $2e, $00
-	db $3c, $01, $24, $00
-	db $84, $01, $1b, $00
-	db $ba, $01, $09, $00
-	db $cc, $01, $07, $00
-	db $da, $01, $1c, $00
-	db $12, $02, $12, $00
-	db $36, $02, $2b, $00
-	db $8c, $02, $10, $00
-	db $ac, $02, $08, $00
-	db $bc, $02, $0c, $00
-	db $d4, $02, $2c, $00
-	db $2c, $03, $09, $00
-	db $3e, $03, $12, $00
-	db $62, $03, $1b, $00
-	db $98, $03, $1a, $00
-	db $cc, $03, $1c, $00
-	db $04, $04, $05, $00
-	db $0e, $04, $02, $00
-	db $12, $04, $05, $00
-	db $1c, $04, $07, $00
-	db $2a, $04, $16, $00
-	db $56, $04, $0e, $00
-	db $72, $04, $0c, $00
-	db $8a, $04, $05, $00
-	db $94, $04, $16, $00
-	db $c0, $04, $19, $00
-	db $f2, $04, $0e, $00
-	db $0e, $05, $08, $00
-	db $1e, $05, $07, $00
-	db $2c, $05, $09, $00
-	db $3e, $05, $0d, $00
-	db $58, $05, $04, $00
-	db $60, $05, $14, $00
-	db $88, $05, $0b, $00
-	db $9e, $05, $01, $00
-	db $a0, $05, $02, $00
-	db $a4, $05, $02, $00
-	db $a8, $05, $02, $00
-	db $ac, $05, $15, $00
-	db $00, $00, $09, $00
-
-Unknown_11f2f0:
-	db $00, $01, $01, $00, $00, $01
-	db $00, $01, $00, $00, $01, $00
-	db $00, $01, $00, $00, $00, $01
-	db $00, $00, $01, $00, $00, $00
-	db $01, $01, $00, $01, $01, $00
-	db $00, $00, $01, $01, $01, $00
-	db $00, $00, $01, $00, $00, $00
-	db $00, $00, $00, $00, $00, $00
-	db $00, $00, $00, $00, $01, $00
-	db $01, $00, $01, $00, $00, $01
-	db $01, $01, $00, $00, $00, $01
-
-
-BTTrainerTexts: ; 11f332
-	dw BTTrainerGreetings
-	dw BTTrainerPlayerLostTexts
-	dw BTTrainerPlayerWonTexts
-
-BTTrainerGreetings: ; 11f338
-	dw BattleTowerTextJump_0x11f42e
-	dw BattleTowerTextJump_0x11f43d
-	dw UnknownText_0x11f44c
-	dw UnknownText_0x11f45b
-	dw UnknownText_0x11f46a
-	dw UnknownText_0x11f479
-	dw UnknownText_0x11f488
-	dw UnknownText_0x11f497
-	dw UnknownText_0x11f4a6
-	dw UnknownText_0x11f4b5
-	dw UnknownText_0x11f4c4
-	dw UnknownText_0x11f4d3
-	dw UnknownText_0x11f4e2
-	dw UnknownText_0x11f4f1
-	dw UnknownText_0x11f500
-	dw UnknownText_0x11f50f
-	dw UnknownText_0x11f51e
-	dw UnknownText_0x11f52d
-	dw UnknownText_0x11f53c
-	dw UnknownText_0x11f54b
-	dw UnknownText_0x11f55a
-	dw UnknownText_0x11f569
-	dw UnknownText_0x11f578
-	dw UnknownText_0x11f587
-	dw UnknownText_0x11f596
-
-BTTrainerPlayerLostTexts: ; 11f36a
-	dw BattleTowerTextJump_0x11f433
-	dw UnknownText_0x11f442
-	dw UnknownText_0x11f451
-	dw UnknownText_0x11f460
-	dw UnknownText_0x11f46f
-	dw UnknownText_0x11f47e
-	dw UnknownText_0x11f48d
-	dw UnknownText_0x11f49c
-	dw UnknownText_0x11f4ab
-	dw UnknownText_0x11f4ba
-	dw UnknownText_0x11f4c9
-	dw UnknownText_0x11f4d8
-	dw UnknownText_0x11f4e7
-	dw UnknownText_0x11f4f6
-	dw UnknownText_0x11f505
-	dw UnknownText_0x11f514
-	dw UnknownText_0x11f523
-	dw UnknownText_0x11f532
-	dw UnknownText_0x11f541
-	dw UnknownText_0x11f550
-	dw UnknownText_0x11f55f
-	dw UnknownText_0x11f56e
-	dw UnknownText_0x11f57d
-	dw UnknownText_0x11f58c
-	dw UnknownText_0x11f59b
-
-BTTrainerPlayerWonTexts: ; 11f39c
-	dw UnknownText_0x11f438
-	dw UnknownText_0x11f447
-	dw UnknownText_0x11f456
-	dw UnknownText_0x11f465
-	dw UnknownText_0x11f474
-	dw UnknownText_0x11f483
-	dw UnknownText_0x11f492
-	dw UnknownText_0x11f4a1
-	dw UnknownText_0x11f4b0
-	dw UnknownText_0x11f4bf
-	dw UnknownText_0x11f4ce
-	dw UnknownText_0x11f4dd
-	dw UnknownText_0x11f4ec
-	dw UnknownText_0x11f4fb
-	dw UnknownText_0x11f50a
-	dw UnknownText_0x11f519
-	dw UnknownText_0x11f528
-	dw UnknownText_0x11f537
-	dw UnknownText_0x11f546
-	dw UnknownText_0x11f555
-	dw UnknownText_0x11f564
-	dw UnknownText_0x11f573
-	dw UnknownText_0x11f582
-	dw UnknownText_0x11f591
-	dw UnknownText_0x11f5a0
-
-
-Unknown_11f3ce:
-	dw Unknown_11f3d4
-	dw Unknown_11f3f2
-	dw Unknown_11f410
-
-Unknown_11f3d4: ; 11f3d4
-	dw UnknownText_0x11f5a5
-	dw UnknownText_0x11f5b4
-	dw UnknownText_0x11f5c3
-	dw UnknownText_0x11f5d2
-	dw UnknownText_0x11f5e1
-	dw UnknownText_0x11f5f0
-	dw UnknownText_0x11f5ff
-	dw UnknownText_0x11f60e
-	dw UnknownText_0x11f61d
-	dw UnknownText_0x11f62c
-	dw UnknownText_0x11f63b
-	dw UnknownText_0x11f64a
-	dw UnknownText_0x11f659
-	dw UnknownText_0x11f668
-	dw UnknownText_0x11f677
-
-Unknown_11f3f2: ; 11f3f2
-	dw UnknownText_0x11f5aa
-	dw UnknownText_0x11f5b9
-	dw UnknownText_0x11f5c8
-	dw UnknownText_0x11f5d7
-	dw UnknownText_0x11f5e6
-	dw UnknownText_0x11f5f5
-	dw UnknownText_0x11f604
-	dw UnknownText_0x11f613
-	dw UnknownText_0x11f622
-	dw UnknownText_0x11f631
-	dw UnknownText_0x11f640
-	dw UnknownText_0x11f64f
-	dw UnknownText_0x11f65e
-	dw UnknownText_0x11f66d
-	dw UnknownText_0x11f67c
-
-Unknown_11f410: ; 11f410
-	dw UnknownText_0x11f5af
-	dw UnknownText_0x11f5be
-	dw UnknownText_0x11f5cd
-	dw UnknownText_0x11f5dc
-	dw UnknownText_0x11f5eb
-	dw UnknownText_0x11f5fa
-	dw UnknownText_0x11f609
-	dw UnknownText_0x11f618
-	dw UnknownText_0x11f627
-	dw UnknownText_0x11f636
-	dw UnknownText_0x11f645
-	dw UnknownText_0x11f654
-	dw UnknownText_0x11f663
-	dw UnknownText_0x11f672
-	dw UnknownText_0x11f681
-
-
-BattleTowerTextJump_0x11f42e: ; 0x11f42e
-	text_jump BattleTowerText_0x1ec000
-	db "@"
-
-BattleTowerTextJump_0x11f433: ; 0x11f433
-	text_jump BattleTowerText_0x1ec03b
-	db "@"
-
-UnknownText_0x11f438: ; 0x11f438
-	text_jump UnknownText_0x1ec060
-	db "@"
-
-BattleTowerTextJump_0x11f43d: ; 0x11f43d
-	text_jump BattleTowerText_0x1ec080
-	db "@"
-
-UnknownText_0x11f442: ; 0x11f442
-	text_jump UnknownText_0x1ec0a3
-	db "@"
-
-UnknownText_0x11f447: ; 0x11f447
-	text_jump UnknownText_0x1ec0c4
-	db "@"
-
-UnknownText_0x11f44c: ; 0x11f44c
-	text_jump UnknownText_0x1ec0e1
-	db "@"
-
-UnknownText_0x11f451: ; 0x11f451
-	text_jump UnknownText_0x1ec108
-	db "@"
-
-UnknownText_0x11f456: ; 0x11f456
-	text_jump UnknownText_0x1ec12a
-	db "@"
-
-UnknownText_0x11f45b: ; 0x11f45b
-	text_jump UnknownText_0x1ec14d
-	db "@"
-
-UnknownText_0x11f460: ; 0x11f460
-	text_jump UnknownText_0x1ec16f
-	db "@"
-
-UnknownText_0x11f465: ; 0x11f465
-	text_jump UnknownText_0x1ec190
-	db "@"
-
-UnknownText_0x11f46a: ; 0x11f46a
-	text_jump UnknownText_0x1ec1ae
-	db "@"
-
-UnknownText_0x11f46f: ; 0x11f46f
-	text_jump UnknownText_0x1ec1d0
-	db "@"
-
-UnknownText_0x11f474: ; 0x11f474
-	text_jump UnknownText_0x1ec1f4
-	db "@"
-
-UnknownText_0x11f479: ; 0x11f479
-	text_jump UnknownText_0x1ec216
-	db "@"
-
-UnknownText_0x11f47e: ; 0x11f47e
-	text_jump UnknownText_0x1ec238
-	db "@"
-
-UnknownText_0x11f483: ; 0x11f483
-	text_jump UnknownText_0x1ec259
-	db "@"
-
-UnknownText_0x11f488: ; 0x11f488
-	text_jump UnknownText_0x1ec27b
-	db "@"
-
-UnknownText_0x11f48d: ; 0x11f48d
-	text_jump UnknownText_0x1ec2a0
-	db "@"
-
-UnknownText_0x11f492: ; 0x11f492
-	text_jump UnknownText_0x1ec2c0
-	db "@"
-
-UnknownText_0x11f497: ; 0x11f497
-	text_jump UnknownText_0x1ec2d9
-	db "@"
-
-UnknownText_0x11f49c: ; 0x11f49c
-	text_jump UnknownText_0x1ec2fe
-	db "@"
-
-UnknownText_0x11f4a1: ; 0x11f4a1
-	text_jump UnknownText_0x1ec320
-	db "@"
-
-UnknownText_0x11f4a6: ; 0x11f4a6
-	text_jump UnknownText_0x1ec33f
-	db "@"
-
-UnknownText_0x11f4ab: ; 0x11f4ab
-	text_jump UnknownText_0x1ec36c
-	db "@"
-
-UnknownText_0x11f4b0: ; 0x11f4b0
-	text_jump UnknownText_0x1ec389
-	db "@"
-
-UnknownText_0x11f4b5: ; 0x11f4b5
-	text_jump UnknownText_0x1ec3ad
-	db "@"
-
-UnknownText_0x11f4ba: ; 0x11f4ba
-	text_jump UnknownText_0x1ec3c5
-	db "@"
-
-UnknownText_0x11f4bf: ; 0x11f4bf
-	text_jump UnknownText_0x1ec3e5
-	db "@"
-
-UnknownText_0x11f4c4: ; 0x11f4c4
-	text_jump UnknownText_0x1ec402
-	db "@"
-
-UnknownText_0x11f4c9: ; 0x11f4c9
-	text_jump UnknownText_0x1ec411
-	db "@"
-
-UnknownText_0x11f4ce: ; 0x11f4ce
-	text_jump UnknownText_0x1ec41f
-	db "@"
-
-UnknownText_0x11f4d3: ; 0x11f4d3
-	text_jump UnknownText_0x1ec42e
-	db "@"
-
-UnknownText_0x11f4d8: ; 0x11f4d8
-	text_jump UnknownText_0x1ec461
-	db "@"
-
-UnknownText_0x11f4dd: ; 0x11f4dd
-	text_jump UnknownText_0x1ec4a0
-	db "@"
-
-UnknownText_0x11f4e2: ; 0x11f4e2
-	text_jump UnknownText_0x1ec4d6
-	db "@"
-
-UnknownText_0x11f4e7: ; 0x11f4e7
-	text_jump UnknownText_0x1ec4f5
-	db "@"
-
-UnknownText_0x11f4ec: ; 0x11f4ec
-	text_jump UnknownText_0x1ec512
-	db "@"
-
-UnknownText_0x11f4f1: ; 0x11f4f1
-	text_jump UnknownText_0x1ec532
-	db "@"
-
-UnknownText_0x11f4f6: ; 0x11f4f6
-	text_jump UnknownText_0x1ec54b
-	db "@"
-
-UnknownText_0x11f4fb: ; 0x11f4fb
-	text_jump UnknownText_0x1ec565
-	db "@"
-
-UnknownText_0x11f500: ; 0x11f500
-	text_jump UnknownText_0x1ec580
-	db "@"
-
-UnknownText_0x11f505: ; 0x11f505
-	text_jump UnknownText_0x1ec59d
-	db "@"
-
-UnknownText_0x11f50a: ; 0x11f50a
-	text_jump UnknownText_0x1ec5b5
-	db "@"
-
-UnknownText_0x11f50f: ; 0x11f50f
-	text_jump UnknownText_0x1ec5d3
-	db "@"
-
-UnknownText_0x11f514: ; 0x11f514
-	text_jump UnknownText_0x1ec5ee
-	db "@"
-
-UnknownText_0x11f519: ; 0x11f519
-	text_jump UnknownText_0x1ec60d
-	db "@"
-
-UnknownText_0x11f51e: ; 0x11f51e
-	text_jump UnknownText_0x1ec631
-	db "@"
-
-UnknownText_0x11f523: ; 0x11f523
-	text_jump UnknownText_0x1ec651
-	db "@"
-
-UnknownText_0x11f528: ; 0x11f528
-	text_jump UnknownText_0x1ec68f
-	db "@"
-
-UnknownText_0x11f52d: ; 0x11f52d
-	text_jump UnknownText_0x1ec6b1
-	db "@"
-
-UnknownText_0x11f532: ; 0x11f532
-	text_jump UnknownText_0x1ec6d0
-	db "@"
-
-UnknownText_0x11f537: ; 0x11f537
-	text_jump UnknownText_0x1ec708
-	db "@"
-
-UnknownText_0x11f53c: ; 0x11f53c
-	text_jump UnknownText_0x1ec720
-	db "@"
-
-UnknownText_0x11f541: ; 0x11f541
-	text_jump UnknownText_0x1ec73e
-	db "@"
-
-UnknownText_0x11f546: ; 0x11f546
-	text_jump UnknownText_0x1ec75b
-	db "@"
-
-UnknownText_0x11f54b: ; 0x11f54b
-	text_jump UnknownText_0x1ec77f
-	db "@"
-
-UnknownText_0x11f550: ; 0x11f550
-	text_jump UnknownText_0x1ec798
-	db "@"
-
-UnknownText_0x11f555: ; 0x11f555
-	text_jump UnknownText_0x1ec7bb
-	db "@"
-
-UnknownText_0x11f55a: ; 0x11f55a
-	text_jump UnknownText_0x1ec7d8
-	db "@"
-
-UnknownText_0x11f55f: ; 0x11f55f
-	text_jump UnknownText_0x1ec818
-	db "@"
-
-UnknownText_0x11f564: ; 0x11f564
-	text_jump UnknownText_0x1ec837
-	db "@"
-
-UnknownText_0x11f569: ; 0x11f569
-	text_jump UnknownText_0x1ec858
-	db "@"
-
-UnknownText_0x11f56e: ; 0x11f56e
-	text_jump UnknownText_0x1ec876
-	db "@"
-
-UnknownText_0x11f573: ; 0x11f573
-	text_jump UnknownText_0x1ec898
-	db "@"
-
-UnknownText_0x11f578: ; 0x11f578
-	text_jump UnknownText_0x1ec8b1
-	db "@"
-
-UnknownText_0x11f57d: ; 0x11f57d
-	text_jump UnknownText_0x1ec8d5
-	db "@"
-
-UnknownText_0x11f582: ; 0x11f582
-	text_jump UnknownText_0x1ec8f0
-	db "@"
-
-UnknownText_0x11f587: ; 0x11f587
-	text_jump UnknownText_0x1ec911
-	db "@"
-
-UnknownText_0x11f58c: ; 0x11f58c
-	text_jump UnknownText_0x1ec928
-	db "@"
-
-UnknownText_0x11f591: ; 0x11f591
-	text_jump UnknownText_0x1ec949
-	db "@"
-
-UnknownText_0x11f596: ; 0x11f596
-	text_jump UnknownText_0x1ec969
-	db "@"
-
-UnknownText_0x11f59b: ; 0x11f59b
-	text_jump UnknownText_0x1ec986
-	db "@"
-
-UnknownText_0x11f5a0: ; 0x11f5a0
-	text_jump UnknownText_0x1ec99b
-	db "@"
-
-
-
-
-UnknownText_0x11f5a5: ; 0x11f5a5
-	text_jump UnknownText_0x1ec9bd
-	db "@"
-
-UnknownText_0x11f5aa: ; 0x11f5aa
-	text_jump UnknownText_0x1ec9d9
-	db "@"
-
-UnknownText_0x11f5af: ; 0x11f5af
-	text_jump UnknownText_0x1ec9f7
-	db "@"
-
-UnknownText_0x11f5b4: ; 0x11f5b4
-	text_jump UnknownText_0x1eca0a
-	db "@"
-
-UnknownText_0x11f5b9: ; 0x11f5b9
-	text_jump UnknownText_0x1eca2a
-	db "@"
-
-UnknownText_0x11f5be: ; 0x11f5be
-	text_jump UnknownText_0x1eca47
-	db "@"
-
-UnknownText_0x11f5c3: ; 0x11f5c3
-	text_jump UnknownText_0x1eca64
-	db "@"
-
-UnknownText_0x11f5c8: ; 0x11f5c8
-	text_jump UnknownText_0x1eca82
-	db "@"
-
-UnknownText_0x11f5cd: ; 0x11f5cd
-	text_jump UnknownText_0x1eca9d
-	db "@"
-
-UnknownText_0x11f5d2: ; 0x11f5d2
-	text_jump UnknownText_0x1ecabf
-	db "@"
-
-UnknownText_0x11f5d7: ; 0x11f5d7
-	text_jump UnknownText_0x1ecade
-	db "@"
-
-UnknownText_0x11f5dc: ; 0x11f5dc
-	text_jump UnknownText_0x1ecafa
-	db "@"
-
-UnknownText_0x11f5e1: ; 0x11f5e1
-	text_jump UnknownText_0x1ecb19
-	db "@"
-
-UnknownText_0x11f5e6: ; 0x11f5e6
-	text_jump UnknownText_0x1ecb37
-	db "@"
-
-UnknownText_0x11f5eb: ; 0x11f5eb
-	text_jump UnknownText_0x1ecb55
-	db "@"
-
-UnknownText_0x11f5f0: ; 0x11f5f0
-	text_jump UnknownText_0x1ecb70
-	db "@"
-
-UnknownText_0x11f5f5: ; 0x11f5f5
-	text_jump UnknownText_0x1ecb92
-	db "@"
-
-UnknownText_0x11f5fa: ; 0x11f5fa
-	text_jump UnknownText_0x1ecbb6
-	db "@"
-
-UnknownText_0x11f5ff: ; 0x11f5ff
-	text_jump UnknownText_0x1ecbd9
-	db "@"
-
-UnknownText_0x11f604: ; 0x11f604
-	text_jump UnknownText_0x1ecbf3
-	db "@"
-
-UnknownText_0x11f609: ; 0x11f609
-	text_jump UnknownText_0x1ecc15
-	db "@"
-
-UnknownText_0x11f60e: ; 0x11f60e
-	text_jump UnknownText_0x1ecc39
-	db "@"
-
-UnknownText_0x11f613: ; 0x11f613
-	text_jump UnknownText_0x1ecc55
-	db "@"
-
-UnknownText_0x11f618: ; 0x11f618
-	text_jump UnknownText_0x1ecc75
-	db "@"
-
-UnknownText_0x11f61d: ; 0x11f61d
-	text_jump UnknownText_0x1ecc92
-	db "@"
-
-UnknownText_0x11f622: ; 0x11f622
-	text_jump UnknownText_0x1ecca7
-	db "@"
-
-UnknownText_0x11f627: ; 0x11f627
-	text_jump UnknownText_0x1eccc1
-	db "@"
-
-UnknownText_0x11f62c: ; 0x11f62c
-	text_jump UnknownText_0x1eccd7
-	db "@"
-
-UnknownText_0x11f631: ; 0x11f631
-	text_jump UnknownText_0x1eccef
-	db "@"
-
-UnknownText_0x11f636: ; 0x11f636
-	text_jump UnknownText_0x1ecd0e
-	db "@"
-
-UnknownText_0x11f63b: ; 0x11f63b
-	text_jump UnknownText_0x1ecd2b
-	db "@"
-
-UnknownText_0x11f640: ; 0x11f640
-	text_jump UnknownText_0x1ecd4d
-	db "@"
-
-UnknownText_0x11f645: ; 0x11f645
-	text_jump UnknownText_0x1ecd6b
-	db "@"
-
-UnknownText_0x11f64a: ; 0x11f64a
-	text_jump UnknownText_0x1ecd8d
-	db "@"
-
-UnknownText_0x11f64f: ; 0x11f64f
-	text_jump UnknownText_0x1ecdaf
-	db "@"
-
-UnknownText_0x11f654: ; 0x11f654
-	text_jump UnknownText_0x1ecdcf
-	db "@"
-
-UnknownText_0x11f659: ; 0x11f659
-	text_jump UnknownText_0x1ecded
-	db "@"
-
-UnknownText_0x11f65e: ; 0x11f65e
-	text_jump UnknownText_0x1ece0d
-	db "@"
-
-UnknownText_0x11f663: ; 0x11f663
-	text_jump UnknownText_0x1ece2a
-	db "@"
-
-UnknownText_0x11f668: ; 0x11f668
-	text_jump UnknownText_0x1ece4b
-	db "@"
-
-UnknownText_0x11f66d: ; 0x11f66d
-	text_jump UnknownText_0x1ece70
-	db "@"
-
-UnknownText_0x11f672: ; 0x11f672
-	text_jump UnknownText_0x1ece8a
-	db "@"
-
-UnknownText_0x11f677: ; 0x11f677
-	text_jump UnknownText_0x1ecea8
-	db "@"
-
-UnknownText_0x11f67c: ; 0x11f67c
-	text_jump UnknownText_0x1ecec9
-	db "@"
-
-UnknownText_0x11f681: ; 0x11f681
-	text_jump UnknownText_0x1ecee8
-	db "@"
-
-
-SECTION "bank5B", ROMX, BANK[$5B]
-
-Function16c000: ; 16c000
-	ld a, [hCGB]
-	and a
-	ret z
-	ld a, [$ffea]
-	and a
-	ret z
-	ld a, [wcfbe]
-	push af
-	set 7, a
-	ld [wcfbe], a
-	call Function16c108
-	callba Function100063
-	callba Function100082
-	call Function16c031
-	callba Function1000a4
-	xor a
-	ld [$ffea], a
-	pop af
-	ld [wcfbe], a
-	ret
-; 16c031
-
-Function16c031: ; 16c031
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [DefaultFlypoint], a
-	ld [wd003], a
-.asm_16c03e
-	call DelayFrame
-	callba Function10635c
-	ld a, [DefaultFlypoint]
-	ld hl, Jumptable_16c05c
-	rst JumpTable
-	call Function16cb2e
-	call Function16cbae
-	ld a, [DefaultFlypoint]
-	cp $ff
-	jr nz, .asm_16c03e
-	ret
-; 16c05c
-
-Jumptable_16c05c: ; 16c05c
-	dw Function16c074
-	dw Function16c0ba
-	dw Function16c089
-	dw Function16c09e
-	dw Function16c0a8
-	dw Function16c0dc
-	dw Function16c0ec
-	dw Function16c0ba
-	dw Function16c0ca
-	dw Function16c0dc
-	dw Function16c0ec
-	dw Function16c081
-; 16c074
-
-Function16c074: ; 16c074
-	ld a, [wcf64]
-	and a
-	ret z
-	ld [DefaultFlypoint], a
-	xor a
-	ld [wd003], a
-	ret
-; 16c081
-
-Function16c081: ; 16c081
-	push af
-	ld a, $ff
-	ld [DefaultFlypoint], a
-	pop af
-	ret
-; 16c089
-
-Function16c089: ; 16c089
-	ld a, $1
-	ld [Buffer2], a
-	ld [wd1f1], a
-	xor a
-	ld [hWY], a
-	call Function16c0fa
-	ld a, [DefaultFlypoint]
-	ld [wcf64], a
-	ret
-; 16c09e
-
-Function16c09e: ; 16c09e
-	ld a, [wcf64]
-	cp $4
-	ret nz
-	call Function16c0fa
-	ret
-; 16c0a8
-
-Function16c0a8: ; 16c0a8
-	xor a
-	ld [Buffer2], a
-	ld [wd1f1], a
-	call ClearSprites
-	ld a, $90
-	ld [hWY], a
-	call Function16c0fa
-	ret
-; 16c0ba
-
-Function16c0ba: ; 16c0ba
-	call Function16c943
-	push af
-	ld a, [wd003]
-	inc a
-	ld [wd003], a
-	pop af
-	call c, Function16c0fa
-	ret
-; 16c0ca
-
-Function16c0ca: ; 16c0ca
-	ld a, [wd003]
-	cp $28
-	push af
-	ld a, [wd003]
-	inc a
-	ld [wd003], a
-	pop af
-	call z, Function16c0fa
-	ret
-; 16c0dc
-
-Function16c0dc: ; 16c0dc
-	call Function16ca11
-	push af
-	ld a, [wd003]
-	inc a
-	ld [wd003], a
-	pop af
-	call c, Function16c0fa
-	ret
-; 16c0ec
-
-Function16c0ec: ; 16c0ec
-	call WhiteBGMap
-	call ClearScreen
-	push af
-	ld a, $ff
-	ld [DefaultFlypoint], a
-	pop af
-	ret
-; 16c0fa
-
-Function16c0fa: ; 16c0fa
-	push af
-	ld a, [DefaultFlypoint]
-	inc a
-	ld [DefaultFlypoint], a
-	xor a
-	ld [wd003], a
-	pop af
-	ret
-; 16c108
-
-Function16c108: ; 16c108
-	call DisableLCD
-	ld hl, VTiles2
-	ld de, GFX_16c173
-	lb bc, BANK(GFX_16c173), $68
-	call Get2bpp
-	call Function16c130
-	call Function16c145
-	call Function16c15c
-	ld hl, VBGMap0
-	call Function16cc73
-	call Function16cc02
-	xor a
-	ld [hBGMapMode], a
-	call EnableLCD
-	ret
-; 16c130
-
-Function16c130: ; 16c130
-	ld de, Unkn1Pals
-	ld hl, Unknown_16c903
-	ld bc, 8
-	ld a, $5
-	call FarCopyWRAM
-	callba Function96a4
-	ret
-; 16c145
-
-Function16c145: ; 16c145
-	hlcoord 0, 0
-	ld bc, 20
-	xor a
-	call ByteFill
-	ld hl, Tilemap_16c633
-	decoord 0, 1
-	ld bc, $0154
-	call CopyBytes
-	ret
-; 16c15c
-
-Function16c15c: ; 16c15c
-	hlcoord 0, 0, AttrMap
-	ld bc, $0014
-	xor a
-	call ByteFill
-	ld hl, Tilemap_16c79b
-	decoord 0, 1, AttrMap
-	ld bc, $0154
-	call CopyBytes
-	ret
-; 16c173
-
-GFX_16c173:
-INCBIN "gfx/unknown/16c173.2bpp"
-
-Tilemap_16c633:
-INCBIN "gfx/unknown/16c633.tilemap"
-
-Tilemap_16c79b:
-INCBIN "gfx/unknown/16c79b.tilemap"
-
-Unknown_16c903:
-	RGB 31, 31, 31
-	RGB 04, 10, 20
-	RGB 16, 19, 25
-	RGB 25, 27, 29
-	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
-; 16c943
-
-Function16c943: ; 16c943
-	ld a, [wd003]
-	and a
-	jr nz, .asm_16c95e
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld a, $ff
-	ld bc, $0008
-	ld hl, Unkn1Pals
-	call ByteFill
-	pop af
-	ld [rSVBK], a
-
-.asm_16c95e
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld e, $0
-	ld a, $0
-.asm_16c969
-	ld hl, Unknown_16c903
-	call Function16cab6
-	call Function16cabb
-	ld d, a
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cabb
-	cp d
-	jr z, .asm_16c991
-	ld b, $1
-.asm_16c981
-	dec a
-	cp d
-	jr z, .asm_16c988
-	dec b
-	jr nz, .asm_16c981
-
-.asm_16c988
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cadc
-
-.asm_16c991
-	ld hl, Unknown_16c903
-	call Function16cab6
-	call Function16cad8
-	ld d, a
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cad8
-	cp d
-	jr z, .asm_16c9b9
-	ld b, $1
-.asm_16c9a9
-	dec a
-	cp d
-	jr z, .asm_16c9b0
-	dec b
-	jr nz, .asm_16c9a9
-
-.asm_16c9b0
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cb08
-
-.asm_16c9b9
-	ld hl, Unknown_16c903
-	call Function16cab6
-	call Function16cac4
-	ld d, a
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cac4
-	cp d
-	jr z, .asm_16c9e1
-	ld b, $1
-.asm_16c9d1
-	dec a
-	cp d
-	jr z, .asm_16c9d8
-	dec b
-	jr nz, .asm_16c9d1
-
-.asm_16c9d8
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cae8
-
-.asm_16c9e1
-rept 2
-	inc e
-endr
-	ld a, e
-	cp $8
-	jr nz, .asm_16c969
-	callba Function96a4
-	call SetPalettes
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, [wd003]
-	cp $1f
-	jr z, .asm_16ca09
-	pop af
-	ld [rSVBK], a
-	ld e, $0
-	pop af
-	ld [rSVBK], a
-	and a
-	ret
-
-.asm_16ca09
-	pop af
-	ld [rSVBK], a
-	pop af
-	ld [rSVBK], a
-	scf
-	ret
-; 16ca11
-
-Function16ca11: ; 16ca11
-	ld a, [wd003]
-	and a
-	jr nz, .asm_16ca1d
-	callba Function96a4
-
-.asm_16ca1d
-	ld a, [rSVBK]
-	push af
-	ld a, $5
-	ld [rSVBK], a
-	ld e, $0
-	ld a, $0
-.asm_16ca28
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cabb
-	cp $1f
-	jr z, .asm_16ca48
-	ld b, $1
-.asm_16ca37
-	inc a
-	cp $1f
-	jr z, .asm_16ca3f
-	dec b
-	jr nz, .asm_16ca37
-
-.asm_16ca3f
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cadc
-
-.asm_16ca48
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cad8
-	cp $1f
-	jr z, .asm_16ca68
-	ld b, $1
-.asm_16ca57
-	inc a
-	cp $1f
-	jr z, .asm_16ca5f
-	dec b
-	jr nz, .asm_16ca57
-
-.asm_16ca5f
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cb08
-
-.asm_16ca68
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cac4
-	cp $1f
-	jr z, .asm_16ca88
-	ld b, $1
-.asm_16ca77
-	inc a
-	cp $1f
-	jr z, .asm_16ca7f
-	dec b
-	jr nz, .asm_16ca77
-
-.asm_16ca7f
-	ld hl, Unkn1Pals
-	call Function16cab6
-	call Function16cae8
-
-.asm_16ca88
-rept 2
-	inc e
-endr
-	ld a, e
-	cp $8
-	jr nz, .asm_16ca28
-	callba Function96a4
-	call SetPalettes
-	ld a, [rSVBK]
-	push af
-	ld a, $1
-	ld [rSVBK], a
-	ld a, [wd003]
-	cp $1f
-	jr z, .asm_16caae
-	pop af
-	ld [rSVBK], a
-	pop af
-	ld [rSVBK], a
-	and a
-	ret
-
-.asm_16caae
-	pop af
-	ld [rSVBK], a
-	pop af
-	ld [rSVBK], a
-	scf
-	ret
-; 16cab6
-
-Function16cab6: ; 16cab6
-	ld b, $0
-	ld c, e
-	add hl, bc
-	ret
-; 16cabb
-
-Function16cabb: ; 16cabb
-	inc hl
-	ld a, [hl]
-	srl a
-	srl a
-	and $1f
-	ret
-; 16cac4
-
-Function16cac4: ; 16cac4
-	inc hl
-	ld a, [hld]
-	and $3
-	ld b, a
-	ld a, [hl]
-	sla a
-	rl b
-	sla a
-	rl b
-	sla a
-	rl b
-	ld a, b
-	ret
-; 16cad8
-
-Function16cad8: ; 16cad8
-	ld a, [hl]
-	and $1f
-	ret
-; 16cadc
-
-Function16cadc: ; 16cadc
-	sla a
-	sla a
-	ld b, a
-	inc hl
-	ld a, [hl]
-	and $83
-	or b
-	ld [hl], a
-	ret
-; 16cae8
-
-Function16cae8: ; 16cae8
-	ld c, a
-	srl a
-	srl a
-	srl a
-	ld b, a
-	inc hl
-	ld a, [hl]
-	and $fc
-	or b
-	ld [hld], a
-	ld a, c
-	sla a
-	sla a
-	sla a
-	sla a
-	sla a
-	ld b, a
-	ld a, [hl]
-	and $1f
-	or b
-	ld [hl], a
-	ret
-; 16cb08
-
-Function16cb08: ; 16cb08
-	ld b, a
-	ld a, [hl]
-	and $e0
-	or b
-	ld [hl], a
-	ret
-; 16cb0f
-
-Function16cb0f: ; 16cb0f
-	xor a
-	ld [Buffer1], a
-	ld [Buffer2], a
-	xor a
-	ld [wd1ec], a
-	ld a, $70
-	ld [wd1ee], a
-	ld a, $4
-	ld [wd1ed], a
-	ld a, $a0
-	ld [wd1ef], a
-	xor a
-	ld [wd1f0], a
-	ret
-; 16cb2e
-
-Function16cb2e: ; 16cb2e
-	ld a, [Buffer2]
-	and a
-	ret z
-	call Function16cb40
-	ld hl, Unknown_16cb86
-	ld de, Sprites
-	call Function16cb5d
-	ret
-; 16cb40
-
-Function16cb40: ; 16cb40
-	ld hl, wd1ec
-	inc [hl]
-	ld a, [hl]
-	cp $18
-	ret c
-	xor a
-	ld [hl], a
-	ld a, [wd1ef]
-	cp $a0
-	jr nz, .asm_16cb57
-	ld a, $a7
-	ld [wd1ef], a
-	ret
-
-.asm_16cb57
-	ld a, $a0
-	ld [wd1ef], a
-	ret
-; 16cb5d
-
-Function16cb5d: ; 16cb5d
-	ld a, [hli]
-	and a
-	ret z
-.asm_16cb60
-	push af
-	ld a, [wd1ee]
-	add [hl]
-	add $10
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wd1ed]
-	add [hl]
-	add $8
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wd1ef]
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wd1f0]
-	or [hl]
-	ld [de], a
-	inc hl
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_16cb60
-	ret
-; 16cb86
-
-Unknown_16cb86:
-	db 7
-	db  0,  0, 0, 1
-	db  8,  0, 1, 1
-	db  8,  8, 2, 0
-	db  8, 16, 3, 0
-	db 16,  0, 4, 1
-	db 16,  8, 5, 0
-	db 16, 16, 6, 0
-; 16cba3
-
-Function16cba3: ; 16cba3
-	xor a
-	ld [wd1f1], a
-	ld [wd1f2], a
-	ld [wd1f3], a
-	ret
-; 16cbae
-
-Function16cbae: ; 16cbae
-	ld a, [wd1f1]
-	and a
-	ret z
-	call Function16cbba
-	call Function16cbd1
-	ret
-; 16cbba
-
-Function16cbba: ; 16cbba
-	ld hl, wd1f2
-	inc [hl]
-	ld a, [hl]
-	cp $c
-	ret c
-	xor a
-	ld [hl], a
-	ld a, [wd1f3]
-	inc a
-	cp $4
-	jr c, .asm_16cbcd
-	xor a
-
-.asm_16cbcd
-	ld [wd1f3], a
-	ret
-; 16cbd1
-
-Function16cbd1: ; 16cbd1
-	ld a, [wd1f3]
-	ld c, a
-	ld b, 0
-	ld hl, Unknown_16cbfb
-	add hl, bc
-	ld a, [hl]
-	ld bc, $0002
-	ld hl, Unknown_16cfa3
-	call AddNTimes
-	ld de, wd00c
-	ld bc, $0002
-	ld a, $5
-	call FarCopyWRAM
-	callba Function96a4
-	ld a, $1
-	ld [hCGBPalUpdate], a
-	ret
-; 16cbfb
-
-Unknown_16cbfb:
-	db 0, 1, 2, 1, 0, 1, 2
-; 16cc02
-
-Function16cc02: ; 16cc02
-	call Function16cc18
-	call Function16cc49
-	call Function16cc62
-	call Function16cc25
-	call Function16cc6e
-	call Function16cb0f
-	call Function16cba3
-	ret
-; 16cc18
-
-Function16cc18: ; 16cc18
-	ld hl, VTiles1
-	ld de, GFX_16cca3
-	lb bc, BANK(GFX_16cca3), $2e
-	call Get2bpp
-	ret
-; 16cc25
-
-Function16cc25: ; 16cc25
-	ld hl, Unknown_16cfa9
-	ld de, wd008
-	call Function16cc41
-	ld hl, Unknown_16cfb1
-	ld de, Unkn2Pals
-	call Function16cc41
-	ld hl, Unknown_16cfb9
-	ld de, wd048
-	call Function16cc41
-	ret
-; 16cc41
-
-Function16cc41: ; 16cc41
-	ld bc, $0008
-	ld a, $5
-	jp FarCopyWRAM
-; 16cc49
-
-Function16cc49: ; 16cc49
-	hlcoord 4, 15
-	ld a, $80
-	call Function16cc5a
-	hlcoord 4, 16
-	ld a, $90
-	call Function16cc5a
-	ret
-; 16cc5a
-
-Function16cc5a: ; 16cc5a
-	ld c, $10
-.asm_16cc5c
-	ld [hli], a
-	inc a
-	dec c
-	jr nz, .asm_16cc5c
-	ret
-; 16cc62
-
-Function16cc62: ; 16cc62
-	hlcoord 0, 15, AttrMap
-	ld bc, $0028
-	ld a, $1
-	call ByteFill
-	ret
-; 16cc6e
-
-Function16cc6e: ; 16cc6e
-	ld hl, VBGMap1
-	jr Function16cc73
-
-Function16cc73:
-	ld a, [rVBK]
-	push af
-	ld a, $0
-	ld [rVBK], a
-	push hl
-	decoord 0, 0
-	call Function16cc90
-	pop hl
-	ld a, $1
-	ld [rVBK], a
-	decoord 0, 0, AttrMap
-	call Function16cc90
-	pop af
-	ld [rVBK], a
-	ret
-; 16cc90
-
-Function16cc90: ; 16cc90
-	ld bc, $1214
-.asm_16cc93
-	push bc
-.asm_16cc94
-	ld a, [de]
-	inc de
-	ld [hli], a
-	dec c
-	jr nz, .asm_16cc94
-	ld bc, $000c
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_16cc93
-	ret
-; 16cca3
-
-GFX_16cca3:
-INCBIN "gfx/unknown/16cca3.2bpp"
-
-Unknown_16cfa3:
-	RGB 31, 31, 31
-	RGB 25, 27, 29
-	RGB 16, 19, 25
-
-Unknown_16cfa9:
-	RGB 31, 31, 31
-	RGB 25, 27, 29
-	RGB 31, 31, 31
-	RGB 07, 07, 07
-
-Unknown_16cfb1:
-	RGB 31, 31, 31
-	RGB 13, 09, 18
-	RGB 26, 21, 16
-	RGB 07, 07, 07
-
-Unknown_16cfb9:
-	RGB 31, 31, 31
-	RGB 18, 05, 02
-	RGB 27, 11, 12
-	RGB 07, 07, 07
-; 16cfc1
-
-GFX_16cfc1:
-INCBIN "gfx/unknown/16cfc1.2bpp"
-
-Function16d421: ; 16d421
-	ld de, GFX_16cfc1
-	ld hl, VTiles2
-	lb bc, BANK(GFX_16cfc1), $46
-	call Get2bpp
-	ret
-; 16d42e
-
-Function16d42e: ; 16d42e
-	ld hl, Tilemap_16d465
-	decoord 0, 0
-	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-	call CopyBytes
-	ret
-; 16d43b
-
-Function16d43b: ; 16d43b
-	call LoadMenuDataHeader_0x1d75
-	call WhiteBGMap
-	call ClearTileMap
-	call ClearSprites
-	callba Function16d421
-	callba Function16d42e
-	ld b, $8
-	call GetSGBLayout
-	call SetPalettes
-	call WaitBGMap
-	call JoyWaitAorB
-	call Call_ExitMenu
-	ret
-; 16d465
-
-Tilemap_16d465:
-INCBIN "gfx/unknown/16d465.tilemap"
-
-Tilemap_16d5cd:
-INCBIN "gfx/unknown/16d5cd.tilemap"
-
-Tilemap_16d5f5:
-INCBIN "gfx/unknown/16d5f5.tilemap"
-
-Function16d61d: ; 16d61d
-	ld h, d
-	ld l, e
-	push bc
-	push hl
-	call Function16d640
-	pop hl
-	pop bc
-	ld de, AttrMap - TileMap
-	add hl, de
-rept 2
-	inc b
-endr
-rept 2
-	inc c
-endr
-	ld a, $7
-.asm_16d630
-	push bc
-	push hl
-.asm_16d632
-	ld [hli], a
-	dec c
-	jr nz, .asm_16d632
-	pop hl
-	ld de, $0014
-	add hl, de
-	pop bc
-	dec b
-	jr nz, .asm_16d630
-	ret
-; 16d640
-
-Function16d640: ; 16d640
-	push hl
-	ld a, $30
-	ld [hli], a
-	inc a
-	call Function16d66d
-	inc a
-	ld [hl], a
-	pop hl
-	ld de, $0014
-	add hl, de
-.asm_16d64f
-	push hl
-	ld a, $33
-	ld [hli], a
-	ld a, $7f
-	call Function16d66d
-	ld [hl], $34
-	pop hl
-	ld de, $0014
-	add hl, de
-	dec b
-	jr nz, .asm_16d64f
-	ld a, $35
-	ld [hli], a
-	ld a, $36
-	call Function16d66d
-	ld [hl], $37
-	ret
-; 16d66d
-
-Function16d66d: ; 16d66d
-	ld d, c
-.asm_16d66e
-	ld [hli], a
-	dec d
-	jr nz, .asm_16d66e
-	ret
-; 16d673
-
-Function16d673: ; 16d673
-	call Function16d696
-	call Function16d6ae
-	callba Function49856
-	callba Functionfb60d
-	hlcoord 10, 17
-	ld de, String_16d68f
-	call PlaceString
-	ret
-; 16d68f
-
-String_16d68f: ; 16d68f
-	db "CANCEL@"
-; 16d696
-
-Function16d696: ; 16d696
-	call Function16d421
-	ret
-; 16d69a
-
-
-Function16d69a: ; 16d69a
-	ld de, GFX_16cfc1 + $300
-	ld hl, VTiles2 tile $76
-	lb bc, BANK(GFX_16cfc1), 8
-	call Get2bpp
-	ret
-; 16d6a7
-
-Function16d6a7: ; 16d6a7
-	callba Function49811
-	ret
-; 16d6ae
-
-Function16d6ae: ; 16d6ae
-	call Function16d42e
-	ld hl, Tilemap_16d5cd
-	decoord 0, 0
-	ld bc, $0028
-	call CopyBytes
-	ld hl, Tilemap_16d5f5
-	decoord 0, 16
-	ld bc, $0028
-	call CopyBytes
-	ret
-; 16d6ca
-
-Function16d6ca: ; 16d6ca
-	call Function16d61d
-	ret
-; 16d6ce
-
-Function16d6ce: ; 16d6ce
-	call LoadMenuDataHeader_0x1d75
-	call Function16d6e1
-	callba Function87d
-	call Call_ExitMenu
-	call Function3200
-	ret
-; 16d6e1
-
-Function16d6e1: ; 16d6e1
-	hlcoord 4, 10
-	ld b, $1
-	ld c, $a
-	predef Function28eef
-	hlcoord 5, 11
-	ld de, String_16d701
-	call PlaceString
-	call WaitBGMap
-	call Function3200
-	ld c, $32
-	jp DelayFrames
-; 16d701
-
-String_16d701: ; 16d701
-	db "WAITING..!@"
-; 16d70c
-
-Function16d70c: ; 16d70c
-	call Function16d725
-	call Function16d713
-	ret
-; 16d713
-
-Function16d713: ; 16d713
-	push bc
-	push af
-	ld a, [hJoyLast]
-	and $f0
-	ld b, a
-	ld a, [hJoyPressed]
-	and $f
-	or b
-	ld b, a
-	pop af
-	ld a, b
-	pop bc
-	ld d, a
-	ret
-; 16d725
-
-Function16d725: ; 16d725
-	ld hl, wcfa6
-	res 7, [hl]
-	ld a, [hBGMapMode]
-	push af
-	call Function16d734
-	pop af
-	ld [hBGMapMode], a
-	ret
-; 16d734
-
-Function16d734: ; 16d734
-.asm_16d734
-	call Function16d77a
-	call Function16d759
-	call Function16d76a
-	jr nc, .asm_16d758
-	callba Function24270
-	jr c, .asm_16d758
-	ld a, [wcfa5]
-	bit 7, a
-	jr nz, .asm_16d758
-	call Function16d713
-	ld b, a
-	ld a, [wcfa8]
-	and b
-	jr z, .asm_16d734
-
-.asm_16d758
-	ret
-; 16d759
-
-Function16d759: ; 16d759
-	ld a, [hOAMUpdate]
-	push af
-	ld a, $1
-	ld [hOAMUpdate], a
-	call WaitBGMap
-	pop af
-	ld [hOAMUpdate], a
-	xor a
-	ld [hBGMapMode], a
-	ret
-; 16d76a
-
-Function16d76a: ; 16d76a
-.asm_16d76a
-	call RTC
-	call Function16d7e7
-	ret c
-	ld a, [wcfa5]
-	bit 7, a
-	jr z, .asm_16d76a
-	and a
-	ret
-; 16d77a
-
-Function16d77a: ; 16d77a
-	ld hl, wcfac
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld a, [hl]
-	cp $1f
-	jr nz, .asm_16d792
-	ld a, [wcfab]
-	ld [hl], a
-	push hl
-	push bc
-	ld bc, $000b
-	add hl, bc
-	ld [hl], a
-	pop bc
-	pop hl
-
-.asm_16d792
-	ld a, [wcfa1]
-	ld b, a
-	ld a, [wcfa2]
-	ld c, a
-	call GetTileCoord
-	ld a, [wcfa7]
-	swap a
-	and $f
-	ld c, a
-	ld a, [wcfa9]
-	ld b, a
-	xor a
-	dec b
-	jr z, .asm_16d7b1
-.asm_16d7ad
-	add c
-	dec b
-	jr nz, .asm_16d7ad
-
-.asm_16d7b1
-	ld c, $14
-	call AddNTimes
-	ld a, [wcfa7]
-	and $f
-	ld c, a
-	ld a, [wcfaa]
-	ld b, a
-	xor a
-	dec b
-	jr z, .asm_16d7c8
-.asm_16d7c4
-	add c
-	dec b
-	jr nz, .asm_16d7c4
-
-.asm_16d7c8
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	cp $1f
-	jr z, .asm_16d7de
-	ld [wcfab], a
-	ld [hl], $1f
-	push hl
-	push bc
-	ld bc, $000b
-	add hl, bc
-	ld [hl], $1f
-	pop bc
-	pop hl
-
-.asm_16d7de
-	ld a, l
-	ld [wcfac], a
-	ld a, h
-	ld [wcfad], a
-	ret
-; 16d7e7
-
-Function16d7e7: ; 16d7e7
-	ld a, [wcfa5]
-	bit 6, a
-	jr z, .asm_16d7f4
-	callba Function8cf62
-
-.asm_16d7f4
-	call JoyTextDelay
-	call Function16d713
-	and a
-	ret z
-	scf
-	ret
-; 16d7fe
-
-
-SECTION "bank5C", ROMX, BANK[$5C]
-
-Function170000: ; 170000
-	ld a, [$c62b]
-	ld [$c6d0], a
-	ld hl, $c62e
-	ld de, $c6e7
-	ld bc, $0005
-	call CopyBytes
-	ld a, $50
-	ld [de], a
-	ld hl, $c663
-	ld de, $c6f2
-	ld bc, $0005
-	call CopyBytes
-	ld a, $50
-	ld [de], a
-	ld hl, $c648
-	ld a, [hli]
-	ld [$c6fd], a
-	ld a, [hl]
-	ld [$c6fe], a
-	ld hl, $c639
-	ld a, [hli]
-	ld [$c6ff], a
-	ld a, [hl]
-	ld [wc700], a
-	ld bc, $c633
-	callba GetCaughtGender
-	ld a, c
-	ld [wc701], a
-	ld a, [wcd81]
-	ld [wc74e], a
-	ld hl, $c608
-	ld de, $d800
-	ld bc, $008f
-	call CopyBytes
-	ret
-; 17005a
-
-Function17005a: ; 17005a
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$a824]
-	ld [wc702], a
-	ld hl, $a827
-	ld de, wc719
-	ld bc, $0005
-	call CopyBytes
-	ld a, $50
-	ld [de], a
-	ld hl, $a85c
-	ld de, wc724
-	ld bc, $0005
-	call CopyBytes
-	ld a, $50
-	ld [de], a
-	ld hl, $a841
-	ld a, [hli]
-	ld [wc72f], a
-	ld a, [hl]
-	ld [wc730], a
-	ld hl, $a832
-	ld a, [hli]
-	ld [wc731], a
-	ld a, [hl]
-	ld [wc732], a
-	ld bc, $a82c
-	callba GetCaughtGender
-	ld a, c
-	ld [wc733], a
-	ld a, [wcd81]
-	ld [wc74e], a
-	call CloseSRAM
-	ret
-; 1700b0
-
-Function1700b0: ; 1700b0
-	call Function17021e
-	callba Function118121
-	ret
-; 1700ba
-
-Function1700ba: ; 1700ba
-	call Function17021e
-	callba 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, $dffc
-	ld de, $aa41
-	ld bc, $0004
-	call CopyBytes
-	ld hl, $d202
-	ld de, $aa8e
-	ld bc, $0594
-	call CopyBytes
-	ld hl, $aa5d
-	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, $dffc
-	ld bc, $0004
-	call CopyBytes
-	call CloseSRAM
-	pop af
-	ld [rSVBK], a
-	ret
-; 170114
-
-Function170114: ; 170114
-	call Function17021e
-	call Function170121
-	callba Function11805f
-	ret
-; 170121
-
-Function170121: ; 170121
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a948
-	ld de, $c608
-	ld bc, $00f6
-	call CopyBytes
-	call CloseSRAM
-	call Function170c8b
-	ret
-; 170139
-
-Function170139: ; 170139
-	ld a, $5
-	call GetSRAMBank
-	ld de, $aa41
-	ld h, $0
-	ld l, h
-	ld bc, $03e8
-	call Function17020c
-	ld bc, $0064
-	call Function17020c
-	ld bc, $000a
-	call Function17020c
-	ld a, [de]
-	ld c, a
-	ld b, $0
-	add hl, bc
-	call CloseSRAM
-	ld a, h
-	ld [$c608], a
-	ld a, l
-	ld [$c608 + 1], a
-	ld hl, $c628
-	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, $0005
-	call CopyBytes
-	ld bc, PlayerID
-	ld de, PlayerGender
-	callba Function4e929
-	ld de, $c62c + 5
-	ld a, c
-	ld [de], a
-	inc de
-	ld a, $df
-	ld [wcd49], a
-	ld a, $dc
-	ld [wcd4a], a
-	ld a, $41
-	ld [wcd4b], a
-	ld a, $de
-	ld [wcd4c], a
-	ld a, $3
-.asm_1701ac
-	push af
-	ld a, [wcd49]
-	ld l, a
-	ld a, [wcd4a]
-	ld h, a
-	ld bc, $0030
-	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, .asm_1701ac
-	ld a, $4
-	call GetSRAMBank
-	ld hl, $a013
-	ld bc, $0024
-	call CopyBytes
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a894
-	ld bc, $0006
-	call CopyBytes
-	ld hl, $c608
-	ld de, $a948
-	ld bc, $00f6
-	call CopyBytes
-	call CloseSRAM
-	ret
-; 17020c
-
-Function17020c: ; 17020c
-	ld a, [de]
-	inc de
-	and a
-	ret z
-.asm_170210
-	add hl, bc
-	dec a
-	jr nz, .asm_170210
-	ret
-; 170215
-
-Function170215: ; 170215
-	xor a
-	ld [wJumptableIndex], a
-	call Function17022c
-	ret
-; 17021d
-
-Function17021d: ; 17021d
-	ret
-; 17021e
-
-Function17021e: ; 17021e
-	xor a
-	ld [wJumptableIndex], a
-	ld [wcf64], a
-	ld [wcf65], a
-	ld [wcf66], a
-	ret
-; 17022c
-
-Function17022c: ; 17022c
-.asm_17022c
-	call Jumpto_BattleTowerBattleFunction
-	call DelayFrame
-	ld a, [wJumptableIndex]
-	cp $1
-	jr nz, .asm_17022c
-	ret
-; 17023a
-
-Jumpto_BattleTowerBattleFunction: ; 17023a
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_BattleTowerBattleFunctions
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 170249
-
-Jumptable_BattleTowerBattleFunctions: ; 170249
-	dw RunBattleTowerBattle
-	dw SkipBattleTowerBattle
-; 17024d
-
-RunBattleTowerBattle: ; 17024d
-	ld a, [Options]
-	push af
-	ld hl, Options
-	set 6, [hl]
-	ld a, [InBattleTowerBattle]
-	push af
-	or $1
-	ld [InBattleTowerBattle], a
-	xor a
-	ld [wLinkMode], a
-	callba Mobile_HealParty
-	callba HealParty
-	call Function1702b7
-	call Function170bf7
-	predef StartBattle
-	callba LoadPokemonData
-	callba HealParty
-	ld a, [wBattleResult]
-	ld [ScriptVar], a
-	and a
-	jr nz, .asm_1702a9
-	ld a, BANK(sNrOfBeatenBattleTowerTrainers)
-	call GetSRAMBank
-	ld a, [sNrOfBeatenBattleTowerTrainers]
-	ld [wNrOfBeatenBattleTowerTrainers], a ; wcf64
-	call CloseSRAM
-	ld hl, StringBuffer3
-	ld a, [wNrOfBeatenBattleTowerTrainers] ; wcf64
-	add $f7
-	ld [hli], a
-	ld a, $50
-	ld [hl], a
-
-.asm_1702a9
-	pop af
-	ld [InBattleTowerBattle], a
-	pop af
-	ld [Options], a
-	ld a, $1
-	ld [wJumptableIndex], a
-	ret
-
-
-Function1702b7: ; 1702b7
-; Initialise the BattleTower-Trainer and his Pkmn
-	call CopyBTTrainer_FromBT_OTrainer_TowBT_OTTempCopy
-	ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn1Name ; $c643
-	ld c, PKMN_NAME_LENGTH
-	callba Function17d073
-	jr nc, .asm_1702db
-
-	ld a, [wBT_OTTempCopy + wBT_OTTempCopy_Pkmn1]
-	ld [wd265], a
-	call GetPokemonName
-	ld l, e
-	ld h, d
-	ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn1Name ; $c643
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.asm_1702db
-	ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn2Name ; $c67e
-	ld c, PKMN_NAME_LENGTH
-	callba Function17d073
-	jr nc, .asm_1702fc
-	ld a, [wBT_OTTempCopy + wBT_OTTempCopy_Pkmn2] ; [$c64e]
-	ld [wd265], a
-	call GetPokemonName
-	ld l, e
-	ld h, d
-	ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn2Name ; $c67e
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.asm_1702fc
-	ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn3Name ; $c686 + 51 = $c6b9
-	ld c, PKMN_NAME_LENGTH
-	callba Function17d073
-	jr nc, .asm_17031d
-	ld a, [wBT_OTTempCopy + wBT_OTTempCopy_Pkmn3] ; [$c689]
-	ld [wd265], a
-	call GetPokemonName
-	ld l, e
-	ld h, d
-	ld de, wBT_OTTempCopy + wBT_OTTempCopy_Pkmn3Name ; $c686 + 51 = $c6b9
-	ld bc, PKMN_NAME_LENGTH
-	call CopyBytes
-
-.asm_17031d
-	ld a, $50
-	ld [wBT_OTTempCopy + wBT_OTTempCopy_45], a ; $c64d
-	ld [wBT_OTTempCopy + wBT_OTTempCopy_80], a ; $c688
-	ld [wBT_OTTempCopy + wBT_OTTempCopy_BB], a ; $c68a + 57 = $c6c3
-	call Function170c98
-	ld de, wBT_OTTempCopy
-	ld c, $a
-	callba Function17d073
-	jr nc, .asm_17033d
-	ld hl, String_170426
-	jr .asm_170340
-
-.asm_17033d
-	ld hl, wBT_OTTempCopy ; 0xc608
-
-.asm_170340
-	ld de, wd26b
-	ld bc, $000a
-	call CopyBytes
-	ld a, $50
-	ld [de], a
-	ld hl, wBT_OTTempCopy + wBT_OTTempCopy_TrainerClass
-	ld a, [hli]
-	ld [OtherTrainerClass], a
-	ld a, $ea
-	ld [BGMapBuffer], a
-	ld a, $d3
-	ld [wcd21], 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
-.asm_170367
-	push af
-	ld a, [hl]
-	ld [bc], a
-	inc bc
-	push bc
-	ld bc, BATTLETOWER_PKMNSTRUCTLENGTH
-	call CopyBytes
-	push de
-	ld a, [BGMapBuffer]
-	ld e, a
-	ld a, [wcd21]
-	ld d, a
-	ld bc, $000b
-	call CopyBytes
-	ld a, e
-	ld [BGMapBuffer], a
-	ld a, d
-	ld [wcd21], a
-	pop de
-	pop bc
-	pop af
-	dec a
-	and a
-	jr nz, .asm_170367
-	ld a, $ff
-	ld [bc], a
-	ret
-; 170394
-
-Function170394: ; 170394
-	ld hl, $c608 + 11
-	ld d, $3
-.asm_170399
-	push de
-	push hl
-	ld b, h
-	ld c, l
-	ld a, [hl]
-	and a
-	jr z, .asm_1703b1
-	cp $ff
-	jr z, .asm_1703b1
-	cp $fe
-	jr z, .asm_1703b1
-	cp $fd
-	jr z, .asm_1703b1
-	cp $fc
-	jr nz, .asm_1703b4
-
-.asm_1703b1
-	ld a, $eb
-	ld [hl], a
-
-.asm_1703b4
-	ld [CurSpecies], a
-	call GetBaseData
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld e, a
-	ld hl, $001f
-	add hl, bc
-	ld a, [hl]
-	cp $2
-	ld a, $2
-	jr c, .asm_1703d6
-	ld a, [hl]
-	cp e
-	jr c, .asm_1703d7
-	ld a, e
-
-.asm_1703d6
-	ld [hl], a
-
-.asm_1703d7
-	ld [CurPartyLevel], a
-	ld hl, $0002
-	add hl, bc
-	ld d, $3
-	ld a, [hli]
-	and a
-	jr z, .asm_1703ea
-	cp $fc
-	jr nc, .asm_1703ea
-	jr .asm_1703f4
-
-.asm_1703ea
-	dec hl
-	ld a, $1
-	ld [hli], a
-	xor a
-rept 2
-	ld [hli], a
-endr
-	ld [hl], a
-	jr .asm_1703ff
-
-.asm_1703f4
-	ld a, [hl]
-	cp $fc
-	jr c, .asm_1703fb
-	ld [hl], $0
-
-.asm_1703fb
-	inc hl
-	dec d
-	jr nz, .asm_1703f4
-
-.asm_1703ff
-	ld hl, $0024
-	add hl, bc
-	ld d, h
-	ld e, l
-	push hl
-	push de
-	ld hl, $000a
-	add hl, bc
-	ld b, $1
-	predef CalcPkmnStats
-	pop de
-	pop hl
-rept 2
-	dec de
-endr
-	ld a, [hli]
-	ld [de], a
-	inc de
-	ld a, [hl]
-	ld [de], a
-	pop hl
-	ld bc, $003b
-	add hl, bc
-	pop de
-	dec d
-	jp nz, .asm_170399
-	ret
-; 170426
-
-String_170426: ; 170426
-	db "CHRIS@"
-; 17042c
-
-Function17042c: ; 17042c
-	ld hl, OTPartyMon2ID
-	ld a, $7
-.asm_170431
-	push af
-	push hl
-	ld c, $12
-.asm_170435
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	and a
-	jr z, .asm_170451
-	cp $f
-	jr nc, .asm_17045b
-	push hl
-	ld hl, Unknown_170470
-	dec a
-	ld e, a
-	ld d, 0
-	add hl, de
-	ld a, [hl]
-	pop hl
-	cp b
-	jr c, .asm_17045b
-	jr z, .asm_17045b
-	jr .asm_170456
-
-.asm_170451
-	ld a, b
-	cp $fc
-	jr nc, .asm_17045b
-
-.asm_170456
-	dec c
-	jr nz, .asm_170435
-	jr .asm_170466
-
-.asm_17045b
-	pop de
-	push de
-	ld hl, Unknown_17047e
-	ld bc, $0024
-	call CopyBytes
-
-.asm_170466
-	pop hl
-	ld de, $00e0
-	add hl, de
-	pop af
-	dec a
-	jr nz, .asm_170431
-	ret
-; 170470
-
-Unknown_170470:
-	db $12, $24, $45, $45, $42, $42, $45, $42, $27, $27, $45, $27, $42, $24
-
-Unknown_17047e:
-	db $03, $04, $05, $08
-	db $03, $05, $0e, $06
-	db $03, $02, $00, $00
-	db $39, $07, $07, $04
-	db $00, $05, $04, $07
-	db $01, $05, $00, $00
-	db $0f, $05, $14, $07
-	db $05, $05, $11, $0c
-	db $0c, $06, $06, $04
-
-
-CopyBTTrainer_FromBT_OTrainer_TowBT_OTTempCopy: ; 1704a2
-; copy the BattleTower-Trainer data that lies at 'BT_OTrainer' to 'wBT_OTTempCopy'
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, BT_OTrainer ; $d100
-	ld de, wBT_OTTempCopy ; $c608
-	ld bc, BT_OTrainerEnd - BT_OTrainer ; $e0 = $a + $1 + 3*$3b + $24
-                                        ;	  = $a + $1 + BATTLETOWER_NROFPKMNS * (BATTLETOWER_PKMNSTRUCTLENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH
-	call CopyBytes
-	pop af
-	ld [rSVBK], a
-	ld a, BANK(s1_be45)
-	call GetSRAMBank
-	ld a, $2
-	ld [s1_be45], a
-	ld hl, sNrOfBeatenBattleTowerTrainers
-	inc [hl]
-	call CloseSRAM
-SkipBattleTowerBattle: ; 1704c9
-	ret
-; 1704ca
-
-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
-
-Function1704e1: ; 1704e1
-	call SpeechTextBox
-	call FadeToMenu
-	call Function17021e
-	call Function1704f1
-	call Function2b3c
-	ret
-; 1704f1
-
-Function1704f1: ; 1704f1
-	call WhiteBGMap
-	call ClearSprites
-	call ClearScreen
-.asm_1704fa
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_17050f
-	call Function170510
-	callba Function104061
-	jr .asm_1704fa
-
-.asm_17050f
-	ret
-; 170510
-
-Function170510: ; 170510
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_17051f
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 17051f
-
-Jumptable_17051f: ; 17051f
-	dw Function170525
-	dw Function170571
-	dw Function170577
-; 170525
-
-Function170525: ; 170525
-	ld a, $5
-	call GetSRAMBank
-
-	ld hl, $a89c
-	ld de, StringBuffer3
-	ld bc, $0016
-	call CopyBytes
-
-	ld hl, $a8b2
-	ld de, $c608
-	ld bc, $0096
-	call CopyBytes
-
-	call CloseSRAM
-	hlcoord 1, 1
-	ld de, StringBuffer3
-	call PlaceString
-	hlcoord 1, 3
-	ld de, String_170676
-	call PlaceString
-	hlcoord 4, 3
-	ld de, StringBuffer4
-	call PlaceString
-	hlcoord 8, 3
-	ld de, String_17067a
-	call PlaceString
-	call Function1705b7
-	call Function1705f0
-	jr Function1705b2
-
-
-Function170571:
-	call SetPalettes
-	call Function1705b2
-
-
-Function170577:
-	ld hl, hJoyPressed
-	ld a, [hl]
-	and $1
-	jr nz, .asm_1705ac
-	ld a, [hl]
-	and $2
-	jr nz, .asm_1705ac
-	ld a, [hl]
-	and $40
-	jr nz, .asm_17058f
-	ld a, [hl]
-	and $80
-	jr nz, .asm_17059d
-	ret
-
-.asm_17058f
-	ld a, [wcf64]
-	and a
-	ret z
-	sub $f
-	ld [wcf64], a
-	call Function1705f0
-	ret
-
-.asm_17059d
-	ld a, [wcf64]
-	cp $3c
-	ret z
-	add $f
-	ld [wcf64], a
-	call Function1705f0
-	ret
-
-.asm_1705ac
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Function1705b2:
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-; 1705b7
-
-Function1705b7: ; 1705b7
-	hlcoord 0, 4
-	ld a, $79
-	ld [hli], a
-	ld c, $12
-.asm_1705bf
-	ld a, $7a
-	ld [hli], a
-	dec c
-	jr nz, .asm_1705bf
-	ld a, $7b
-	ld [hli], a
-	ld de, $0014
-	ld c, $c
-.asm_1705cd
-	ld a, $7c
-	ld [hl], a
-	add hl, de
-	dec c
-	jr nz, .asm_1705cd
-	ld a, $7d
-	ld [hli], a
-	ld c, $12
-.asm_1705d9
-	ld a, $7a
-	ld [hli], a
-	dec c
-	jr nz, .asm_1705d9
-	ld a, $7e
-	ld [hl], a
-	ld de, $ffec
-	add hl, de
-	ld c, $c
-.asm_1705e8
-	ld a, $7c
-	ld [hl], a
-	add hl, de
-	dec c
-	jr nz, .asm_1705e8
-	ret
-; 1705f0
-
-Function1705f0: ; 1705f0
-	call Function17064b
-	call Function17065d
-	ld a, $50
-	ld [wcd4e], a
-	ld hl, $c608
-	ld a, [wcf64]
-	ld c, a
-	xor a
-	ld b, a
-	add hl, bc
-	push hl
-	pop bc
-	hlcoord 1, 6
-	ld a, $6
-.asm_17060c
-	push af
-	push hl
-	ld a, $3
-.asm_170610
-	push af
-	ld de, wcd49
-	ld a, [bc]
-	and a
-	jr z, .asm_170625
-	ld a, $5
-.asm_17061a
-	push af
-	ld a, [bc]
-	ld [de], a
-	inc bc
-	inc de
-	pop af
-	dec a
-	jr nz, .asm_17061a
-	jr .asm_170631
-
-.asm_170625
-	ld a, $5
-.asm_170627
-	push af
-	ld a, $e3
-	ld [de], a
-	inc de
-	inc bc
-	pop af
-	dec a
-	jr nz, .asm_170627
-
-.asm_170631
-	ld de, wcd49
-	push bc
-	call PlaceString
-	ld de, $0006
-	add hl, de
-	pop bc
-	pop af
-	dec a
-	jr nz, .asm_170610
-	pop hl
-	ld de, $0028
-	add hl, de
-	pop af
-	dec a
-	jr nz, .asm_17060c
-	ret
-; 17064b
-
-Function17064b: ; 17064b
-	hlcoord 1, 5
-	xor a
-	ld b, $c
-.asm_170651
-	ld c, $12
-.asm_170653
-	ld [hli], a
-	dec c
-	jr nz, .asm_170653
-rept 2
-	inc hl
-endr
-	dec b
-	jr nz, .asm_170651
-	ret
-; 17065d
-
-Function17065d: ; 17065d
-	ld a, [wcf64]
-	and a
-	jr z, .asm_170669
-	hlcoord 18, 5
-	ld a, $61
-	ld [hl], a
-
-.asm_170669
-	ld a, [wcf64]
-	cp $3c
-	ret z
-	hlcoord 18, 16
-	ld a, $ee
-	ld [hl], a
-	ret
-; 170676
-
-String_170676: ; 170676
-	db "ルーム@"
-; 17067a
-
-String_17067a: ; 17067a
-	db "れきだいりーダーいちらん@"
-; 170687
-
-Function170687: ; 170687
-	ld a, [ScriptVar]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_170696
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-; 170696
-
-
-Jumptable_170696: ; 170696 (5c:4696)
-	dw Function17075f ; 0x00
-	dw Function170788 ; 0x01
-	dw Function170778 ; 0x02
-	dw Function170799 ; 0x03
-	dw Function17079d ; 0x04
-	dw Function1707ac ; 0x05
-	dw Function1707f4 ; 0x06
-	dw Function170868 ; 0x07
-	dw Function170881 ; 0x08
-	dw Function17089a ; 0x09
-	dw Function1708b1 ; 0x0a
-	dw Function1708b9 ; 0x0b
-	dw Function1708c8 ; 0x0c
-	dw Function1708f0 ; 0x0d
-	dw Function17093c ; 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 Function170ae8 ; 0x18
-	dw Function170b16 ; 0x19
-	dw ResetBattleTowerTrainersSRAM ; 0x1a
-	dw Function1706ee ; 0x1b
-	dw Function17071b ; 0x1c
-	dw Function170729 ; 0x1d
-	dw Function17073e ; 0x1e
-	dw Function170737 ; 0x1f
-
-
-; Reset the save memory for BattleTower-Trainers (Counter and all 7 TrainerBytes)
-ResetBattleTowerTrainersSRAM: ; 1706d6 (5c:46d6)
-	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
-
-Function1706ee: ; 1706ee (5c:46ee)
-	ld a, BANK(sbe50)
-	call GetSRAMBank
-
-	ld a, [sbe50]
-	call CloseSRAM
-	ld [ScriptVar], a
-	ld hl, NumItems
-	ld a, [hli]
-	cp $14
-	ret c
-	ld b, $14
-	ld a, [ScriptVar]
-	ld c, a
-.asm_170709
-	ld a, [hli]
-	cp c
-	jr nz, .asm_170711
-	ld a, [hl]
-	cp $5f
-	ret c
-.asm_170711
-	inc hl
-	dec b
-	jr nz, .asm_170709
-	ld a, $12
-	ld [ScriptVar], a
-	ret
-
-Function17071b: ; 17071b (5c:471b)
-	ld a, BANK(s1_be45)
-	call GetSRAMBank
-	ld a, $3
-	ld [s1_be45], a
-	call CloseSRAM
-	ret
-
-Function170729: ; 170729 (5c:4729)
-	ld a, BANK(s1_be45)
-	call GetSRAMBank
-	ld a, $4
-	ld [s1_be45], a
-	call CloseSRAM
-	ret
-
-Function170737: ; 170737 (5c:4737)
-	callba SaveOptions
-	ret
-
-Function17073e: ; 17073e (5c:473e)
-	call Random
-	ld a, [hRandomAdd] ; $ff00+$e1
-	and $7
-	cp $6
-	jr c, .asm_17074b
-	sub $6
-.asm_17074b
-	add $1a
-	cp $1e
-	jr z, Function17073e
-	push af
-	ld a, BANK(sbe50)
-	call GetSRAMBank
-	pop af
-	ld [sbe50], a
-	call CloseSRAM
-	ret
-
-Function17075f: ; 17075f (5c:475f)
-	call Function17089a
-	ld a, [ScriptVar]
-	and a
-	ret z
-	ld a, BANK(sbe4f)
-	call GetSRAMBank
-	ld a, [sbe4f]
-	and $2
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function170778: ; 170778 (5c:4778)
-	ld hl, s1_be45
-	ld a, BANK(s1_be45)
-	call GetSRAMBank
-	ld a, [hl]
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function170788: ; 170788 (5c:4788)
-	ld a, BANK(sbe4f)
-	call GetSRAMBank
-	ld a, [sbe4f]
-	or $2
-	ld [sbe4f], a
-	call CloseSRAM
-	ret
-
-Function170799: ; 170799 (5c:4799)
-	ld c, $1
-	jr asm_17079f
-
-Function17079d: ; 17079d (5c:479d)
-	ld c, $0
-asm_17079f: ; 17079f (5c:479f)
-	ld a, BANK(s1_be45)
-	call GetSRAMBank
-	ld a, c
-	ld [s1_be45], a
-	call CloseSRAM
-	ret
-
-Function1707ac: ; 1707ac (5c:47ac)
-	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)
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$be46], a
-	ld [$aa8b], a
-	ld [$aa8c], a
-	call CloseSRAM
-	ret
-
-Function170807: ; 170807 (5c:4807)
-	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)
-	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, $8c
-	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
-
-Function170868: ; 170868 (5c:4868)
-	ld a, BANK(sbe47)
-	call GetSRAMBank
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $3
-	ld [rSVBK], a ; $ff00+$70
-	ld a, [wd000 + $800]
-	ld [sbe47], a
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	call CloseSRAM
-	ret
-
-Function170881: ; 170881 (5c:4881)
-	ld a, BANK(sbe47)
-	call GetSRAMBank
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $3
-	ld [rSVBK], a ; $ff00+$70
-	ld a, [sbe47]
-	ld [wd000 + $800], a
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	call CloseSRAM
-	ret
-
-Function17089a: ; 17089a
-	ld a, [wcfcd]
-	and a
-	jr z, .asm_1708ad
-	callba Function14bcb
-	jr z, .asm_1708ab
-	xor a
-	jr .asm_1708ad
-
-.asm_1708ab
-	ld a, $1
-
-.asm_1708ad
-	ld [ScriptVar], a
-	ret
-; 1708b1
-
-
-Function1708b1: ; 1708b1 (5c:48b1)
-	xor a
-	ld [MusicFade], a
-	call MaxVolume
-	ret
-
-Function1708b9: ; 1708b9 (5c:48b9)
-	ld a, BANK(s1_be3c)
-	call GetSRAMBank
-	ld a, [s1_be3c]
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function1708c8: ; 1708c8 (5c:48c8)
-	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)
-	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
-
-
-Function17093c: ; 17093c (5c:493c)
-	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
-.asm_170955
-	ld a, [hli]
-	cp EGG
-	jr nz, .asm_17099f
-	push hl
-	ld hl, PartyMonOT ; wddff (aliases: PartyMonOT)
-	ld de, $6
-	ld a, b
-	and a
-	jr z, .asm_170969
-.asm_170965
-	add hl, de
-	dec a
-	jr nz, .asm_170965
-.asm_170969
-	ld de, String_1709a4
-	ld a, $6
-.asm_17096e
-	push af
-	ld a, [de]
-	inc de
-	cp [hl]
-	inc hl
-	jr nz, .asm_17099d
-	pop af
-	dec a
-	jr nz, .asm_17096e
-rept 4
-	dec hl
-endr
-	ld a, $50
-rept 2
-	ld [hli], a
-endr
-	pop hl
-	ld a, EGG_TICKET
-	ld [CurItem], a
-	ld a, $1
-	ld [wItemQuantityChangeBuffer], a
-	ld a, $ff
-	ld [wd107], a
-	ld hl, NumItems
-	call TossItem
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.asm_17099d
-	pop af
-	pop hl
-.asm_17099f
-	inc b
-	dec c
-	jr nz, .asm_170955
-	ret
-; 1709a4 (5c:49a4)
-
-String_1709a4: ; 1709a4
-	db "なぞナゾ@@"
-
-Function1709aa: ; 1709aa (5c:49aa)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $3
-	ld [rSVBK], a ; $ff00+$70
-	ld a, [StringBuffer2 + 10]
-	ld [ScriptVar], a
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-
-Function1709bb: ; 1709bb (5c:49bb)
-	xor a
-	ld [ScriptVar], a
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$a800]
-	call CloseSRAM
-	cp 6
-	jr nc, .asm_1709da
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_1709e7
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-.asm_1709da
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld [$a800], a
-	call CloseSRAM
-	ret
-; 1709e7 (5c:49e7)
-
-Jumptable_1709e7: ; 1709e7
-	dw Function170a00
-	dw Function170a00
-	dw Function1709f3
-	dw Function1709f3
-	dw Function170a01
-	dw Function170a33
-; 1709f3
-
-Function1709f3: ; 1709f3
-	ld a, $5
-	call GetSRAMBank
-	ld a, $1
-	ld [$a800], a
-	call CloseSRAM
-
-Function170a00: ; 170a00
-	ret
-; 170a01
-
-Function170a01: ; 170a01
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $b023
-	ld de, $c608
-	ld bc, $0069
-	call CopyBytes
-	ld a, [$a825]
-	ld [wcd30], a
-	ld a, [$a826]
-	ld [wcd31], a
-	call CloseSRAM
-	callba Function11b6b4
-	callba Function17d0f3
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-; 170a33
-
-Function170a33: ; 170a33
-	ld a, $0
-	call GetSRAMBank
-	ld hl, wRTC
-	ld de, $c608
-	ld bc, $0004
-	call CopyBytes
-	call CloseSRAM
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $b08c
-	ld de, $c608
-	ld c, $4
-.asm_170a54
-	ld a, [de]
-	inc de
-	cp [hl]
-	jr nz, .asm_170a78
-	inc hl
-	dec c
-	jr nz, .asm_170a54
-	call CloseSRAM
-	ld a, [MapGroup]
-	ld b, a
-	ld a, [MapNumber]
-	ld c, a
-	call GetMapTrigger
-	ld a, d
-	or e
-	jr z, .asm_170a72
-	ld a, [de]
-	and a
-	ret nz
-
-.asm_170a72
-	ld a, $1
-	ld [ScriptVar], a
-	ret
-
-.asm_170a78
-	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 GetMapTrigger
-	ld a, d
-	or e
-	jr z, .asm_170a9b
-	xor a
-	ld [de], a
-
-.asm_170a9b
-	ret
-; 170a9c
-
-Function170a9c: ; 170a9c (5c:4a9c)
-	ld c, $0
-	jr asm_170aa2
-
-Function170aa0: ; 170aa0 (5c:4aa0)
-	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)
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$aa8d]
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function170abe: ; 170abe (5c:4abe)
-	call Function17089a
-	ld a, [ScriptVar]
-	and a
-	ret z
-	ld a, BANK(sbe4f)
-	call GetSRAMBank
-	ld a, [sbe4f]
-	and $1
-	ld [ScriptVar], a
-	call CloseSRAM
-	ret
-
-Function170ad7: ; 170ad7 (5c:4ad7)
-	ld a, BANK(sbe4f)
-	call GetSRAMBank
-	ld a, [sbe4f]
-	or $1
-	ld [sbe4f], a
-	call CloseSRAM
-	ret
-
-Function170ae8: ; 170ae8 (5c:4ae8)
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld c, $a
-	call SimpleDivide
-	ld a, b
-	ld [wcd4f], a
-	xor a
-	ld [ScriptVar], a
-	callba Function119d93
-	ret nc
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld [ScriptVar], a
-	ret
-
-Function170b16: ; 170b16 (5c:4b16)
-	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
-	callba Function119dd1
-	ret nc
-	ld a, $5
-	call GetSRAMBank
-	ld a, [$b2fb]
-	call CloseSRAM
-	ld [ScriptVar], a
-	ret
-
-Function_LoadOpponentTrainerAndPokemonsWithOTSprite: ; 0x170b44
-	callba Function_LoadOpponentTrainerAndPokemons
-	ld a, [rSVBK]
-	push af
-	ld a, $3
-	ld [rSVBK], a
-	ld hl, wd10a
-	ld a, [hl]
-	dec a
-	ld c, a
-	ld b, $0
-	pop af
-	ld [rSVBK], a
-	ld hl, Unknown_170b90
-	add hl, bc
-	ld a, [hl]
-	ld [wcd49], 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, [wcd49]
-	ld [hl], a
-	ld hl, UsedSprites
-	add hl, de
-	ld [hli], a
-	ld [hUsedSpriteIndex], a
-	ld a, [hl]
-	ld [hUsedSpriteTile], a
-	callba Function143c8
-	ret
-; 170b90
-
-Unknown_170b90:
-	db $12, $13, $14, $15, $18, $17
-	db $16, $19, $04, $05, $11, $01
-	db $1c, $1b, $21, $1e, $1a, $1d
-	db $1f, $3c, $20, $27, $27, $27
-	db $28, $0a, $23, $24, $2a, $2b
-	db $35, $40, $2a, $29, $22, $25
-	db $3a, $2b, $24, $49, $2b, $07
-	db $2c, $2d, $4a, $0d, $4b, $3a
-	db $2b, $41, $35, $27, $28, $27
-	db $36, $3e, $30, $2c, $2d, $3d
-	db $26, $2e, $06, $07, $43, $36
-
-Function170bd2: ; 170bd2
-	ret
-; 170bd3
-
-SpecialCheckForBattleTowerRules: ; 170bd3
-	callba CheckForBattleTowerRules
-	jr c, .asm_170bde
-	xor a
-	jr .asm_170be0
-
-.asm_170bde
-	ld a, $1
-
-.asm_170be0
-	ld [ScriptVar], a
-	ret
-; 170be4
-
-Function170be4: ; 170be4
-	ld a, $5
-	call GetSRAMBank
-	xor a
-	ld hl, $a894
-	ld bc, $0008
-	call ByteFill
-	call CloseSRAM
-	ret
-; 170bf7
-
-Function170bf7: ; 170bf7
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a89a
-	xor a
-	ld [hli], a
-	ld [hl], a
-	call CloseSRAM
-	ret
-; 170c06
-
-Function170c06: ; 170c06
-	ld a, $5
-	call GetSRAMBank
-	ld hl, $a894
-	ld a, [wBattleResult]
-	and a
-	jr nz, .asm_170c15
-	inc [hl]
-
-.asm_170c15
-rept 2
-	inc hl
-endr
-	ld a, [$a89b]
-	add [hl]
-	ld [hld], a
-	ld a, [$a89a]
-	adc [hl]
-	ld [hli], a
-	jr nc, .asm_170c27
-	ld a, $ff
-	ld [hld], a
-	ld [hli], a
-
-.asm_170c27
-	inc hl
-	push hl
-	ld de, 0
-	xor a
-	ld [wd265], a
-.asm_170c30
-	ld hl, PartyMon1HP
-	ld a, [wd265]
-	call GetPartyLocation
-	ld a, [hli]
-	ld b, a
-	ld c, [hl]
-rept 2
-	inc hl
-endr
-	ld a, [hld]
-	sub c
-	ld c, a
-	ld a, [hl]
-	sbc b
-	ld b, a
-	push de
-	pop hl
-	add hl, bc
-	push hl
-	pop de
-	jr c, .asm_170c58
-	ld a, [wd265]
-	inc a
-	ld [wd265], a
-	cp $3
-	jr c, .asm_170c30
-	jr .asm_170c5b
-
-.asm_170c58
-	ld de, -1
-
-.asm_170c5b
-	pop hl
-	inc hl
-	ld a, e
-	add [hl]
-	ld [hld], a
-	ld a, d
-	adc [hl]
-	ld [hli], a
-	jr nc, .asm_170c69
-	ld a, $ff
-	ld [hld], a
-	ld [hli], a
-
-.asm_170c69
-	inc hl
-	push hl
-	ld b, $0
-	ld c, $0
-.asm_170c6f
-	ld hl, PartyMon1HP
-	ld a, b
-	push bc
-	call GetPartyLocation
-	pop bc
-	ld a, [hli]
-	or [hl]
-	jr nz, .asm_170c7d
-	inc c
-
-.asm_170c7d
-	inc b
-	ld a, b
-	cp $3
-	jr c, .asm_170c6f
-	pop hl
-	ld a, [hl]
-	add c
-	ld [hl], a
-	call CloseSRAM
-	ret
-; 170c8b
-
-Function170c8b: ; 170c8b
-	ld hl, LastPlayerCounterMove
-	ld b, $5
-.asm_170c90
-	ld a, [hl]
-	xor $ff
-	ld [hli], a
-	dec b
-	jr nz, .asm_170c90
-	ret
-; 170c98
-
-Function170c98: ; 170c98
-	ld c, $3
-	ld hl, $c608 + 13
-.asm_170c9d
-	push hl
-	ld a, [hl]
-	cp $fc
-	jr c, .asm_170ca6
-	ld a, $1
-	ld [hl], a
-
-.asm_170ca6
-	inc hl
-	ld b, $3
-.asm_170ca9
-	ld a, [hl]
-	and a
-	jr z, .asm_170cb1
-	cp $fc
-	jr c, .asm_170cb9
-
-.asm_170cb1
-	xor a
-	ld [hl], a
-	inc hl
-	dec b
-	jr nz, .asm_170cb1
-	jr .asm_170cbd
-
-.asm_170cb9
-	inc hl
-	dec b
-	jr nz, .asm_170ca9
-
-.asm_170cbd
-	pop hl
-	ld de, $003b
-	add hl, de
-	dec c
-	jr nz, .asm_170c9d
-	ret
-; 170cc6
-
-Function170cc6: ; 170cc6
-	ld a, [rSVBK]
-	push af
-	ld a, $6
-	ld [rSVBK], a
-	ld hl, LZ_170d16
-	ld de, wd000
-	call Decompress
-	ld a, $1
-	ld [rVBK], a
-	ld de, wd000
-	ld hl, VTiles0
-	lb bc, $6, $c1
-	call Get2bpp
-	xor a
-	ld [rVBK], a
-	ld hl, LZ_1715a4
-	ld de, wd000
-	call Decompress
-	ld de, Unkn1Pals
-	ld hl, VTiles0
-	lb bc, $6, $53
-	call Get2bpp
-	pop af
-	ld [rSVBK], a
-	ret
-; 170d02
-
-Function170d02: ; 170d02
-	ld a, $1
-	ld [rVBK], a
-	ld de, GFX_171848
-	ld hl, VTiles1 tile $41
-	lb bc, BANK(GFX_171848), $18
-	call Get2bpp
-	xor a
-	ld [rVBK], a
-	ret
-; 170d16
-
-LZ_170d16:
-INCBIN "gfx/unknown/170d16.2bpp.lz"
-
-LZ_1715a4:
-INCBIN "gfx/unknown/1715a4.2bpp.lz"
-
-GFX_171848:
-INCBIN "gfx/unknown/171848.2bpp"
-
-Function1719c8: ; 1719c8 (5c:59c8)
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call Function1719d6
-	pop af
-	ld [hInMenu], a
-	ret
-
-Function1719d6: ; 1719d6 (5c:59d6)
-	callba Function1183cb
-	call Function1719ed
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	call Function171a11
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-
-Function1719ed: ; 1719ed (5c:59ed)
-	xor a
-	ld [wcd49], a
-	ld [wcd4a], a
-	dec a
-	ld [wcd4b], a
-	call WhiteBGMap
-	call ClearSprites
-	callba Function171d2b
-	callba Function104061
-	callba Function8cf53
-	ret
-
-Function171a11: ; 171a11 (5c:5a11)
-	call JoyTextDelay
-	ld a, [wcd49]
-	bit 7, a
-	jr nz, .asm_171a2c
-	call Function171a36
-	callba Function8cf69
-	callba Function104061
-	jr Function171a11
-.asm_171a2c
-	callba Function8cf53
-	call ClearSprites
-	ret
-
-Function171a36: ; 171a36 (5c:5a36)
-	ld a, [wcd49]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_171a45
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_171a45: ; 171a45 (5c:5a45)
-	dw Function171a95
-	dw Function171ac9
-	dw Function171a5d
-	dw Function171ad7
-	dw Function171a5d
-	dw Function171aec
-	dw Function171b4b
-	dw Function171b85
-	dw Function171bcc
-	dw Function171c2c
-	dw Function171c39
-	dw Function171c41
-
-
-Function171a5d: ; 171a5d (5c:5a5d)
-	ld a, [wc821]
-	bit 1, a
-	jr nz, .asm_171a6a
-	bit 0, a
-	ret nz
-	jp Function171c66
-.asm_171a6a
-	ld a, $0
-	call Function3e32
-	ld [wc300], a
-	ld a, l
-	ld [wc301], a
-	ld a, h
-	ld [wc302], a
-	ld a, $a
-	call Function3e32
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
-	callba Function118452
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ld a, $a
-	ld [wcd49], a
-	ret
-
-Function171a95: ; 171a95 (5c:5a95)
-	callba Function171ccd
-	hlcoord 2, 8
-	ld de, String_171aa7
-	call PlaceString
-	jp Function171c66
-; 171aa7 (5c:5aa7)
-
-String_171aa7: ; 171aa7
-	db   "モバイルアダプタに"
-	next "せつぞく しています"
-	next "しばらく おまちください"
-	db   "@"
-; 171ac9
-
-Function171ac9: ; 171ac9 (5c:5ac9)
-	ld de, wcd81
-	ld hl, $5c
-	ld a, $2
-	call Function3e32
-	jp Function171c66
-
-Function171ad7: ; 171ad7 (5c:5ad7)
-	xor a
-	ld hl, $c608
-	ld bc, $66
-	call ByteFill
-	ld de, $c608
-	ld a, $c
-	call Function3e32
-	jp Function171c66
-
-Function171aec: ; 171aec (5c:5aec)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $1
-	ld [rSVBK], a ; $ff00+$70
-	callba Function118452
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	hlcoord 2, 6
-	ld a, $8
-.asm_171b01
-	push af
-	push hl
-	xor a
-	ld bc, $10
-	call ByteFill
-	pop hl
-	ld de, $14
-	add hl, de
-	pop af
-	dec a
-	jr nz, .asm_171b01
-	hlcoord 2, 7
-	ld a, $3
-	ld de, $c608
-.asm_171b1b
-	push af
-	push hl
-	ld a, [de]
-	and a
-	jr z, .asm_171b34
-	ld a, [wcd4b]
-	inc a
-	ld [wcd4b], a
-	push hl
-	call Function171b42
-	pop hl
-	ld bc, $ffec
-	add hl, bc
-	call Function171b42
-.asm_171b34
-	pop hl
-	ld bc, $14
-rept 3
-	add hl, bc
-endr
-	pop af
-	dec a
-	jr nz, .asm_171b1b
-	jp Function171c66
-
-Function171b42: ; 171b42 (5c:5b42)
-	ld a, [de]
-	inc de
-	and a
-	ret z
-	sub $20
-	ld [hli], a
-	jr Function171b42
-
-Function171b4b: ; 171b4b (5c:5b4b)
-	lb de, $40, $10
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $8
-	ld [hl], a
-	lb de, $40, $98
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $9
-	ld [hl], a
-	lb de, $8a, $70
-	ld a, $1d
-	call Function3b2a
-	ld hl, $c
-	add hl, bc
-	ld a, $a
-	ld [hl], a
-	ld a, $4
-	ld [wcd23], a
-	ld a, $8
-	ld [wcd24], a
-	jp Function171c66
-
-Function171b85: ; 171b85 (5c:5b85)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and $2
-	jp nz, Function171b9f
-	ld a, [hl]
-	and $1
-	jp nz, Function171bbd
-	ld a, [hl]
-	and $40
-	jr nz, asm_171ba5
-	ld a, [hl]
-	and $80
-	jr nz, asm_171baf
-	ret
-
-Function171b9f: ; 171b9f (5c:5b9f)
-	ld a, $80
-	ld [wcd49], a
-	ret
-asm_171ba5: ; 171ba5 (5c:5ba5)
-	ld a, [wcd4a]
-	and a
-	ret z
-	dec a
-	ld [wcd4a], a
-	ret
-asm_171baf: ; 171baf (5c:5baf)
-	ld a, [wcd4b]
-	ld c, a
-	ld a, [wcd4a]
-	cp c
-	ret z
-	inc a
-	ld [wcd4a], a
-	ret
-
-Function171bbd: ; 171bbd (5c:5bbd)
-	call PlayClickSFX
-	ld a, $8
-	ld [wcd23], a
-	xor a
-	ld [wcd24], a
-	jp Function171c66
-
-Function171bcc: ; 171bcc (5c:5bcc)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and $2
-	jp nz, Function171bdc
-	ld a, [hl]
-	and $1
-	jp nz, Function171beb
-	ret
-
-Function171bdc: ; 171bdc (5c:5bdc)
-	ld a, $4
-	ld [wcd23], a
-	ld a, $8
-	ld [wcd24], a
-	ld hl, wcd49
-	dec [hl]
-	ret
-
-Function171beb: ; 171beb (5c:5beb)
-	ld a, $5
-	call GetSRAMBank
-	ld a, [wcd4a]
-	ld [$aa4a], a
-	call CloseSRAM
-	ld hl, MenuDataHeader_171c6b
-	call LoadMenuDataHeader
-	call Function1cbb
-	call GetMemTileCoord
-	callba Function104061
-	hlcoord 1, 14
-	ld de, String_171c73
-	call PlaceString
-	ld a, [wcd4a]
-	cp $2
-	jr z, .asm_171c1f
-	ld a, $8
-	jr .asm_171c21
-.asm_171c1f
-	ld a, $c
-.asm_171c21
-	ld [wcd24], a
-	ld a, $1e
-	ld [wcd4c], a
-	call Function171c66
-
-Function171c2c: ; 171c2c (5c:5c2c)
-	ld hl, wcd4c
-	dec [hl]
-	ret nz
-	call ExitMenu
-	call WhiteBGMap
-	jr asm_171c60
-
-Function171c39: ; 171c39 (5c:5c39)
-	ld a, $28
-	ld [wcd4c], a
-	call Function171c66
-
-Function171c41: ; 171c41 (5c:5c41)
-	ld hl, wcd4c
-	dec [hl]
-	ret nz
-	call WhiteBGMap
-	callba Function106462
-	callba Function106464
-	ld a, $2
-	ld [wc303], a
-	callba Function17f555
-asm_171c60: ; 171c60 (5c:5c60)
-	ld a, $80
-	ld [wcd49], a
-	ret
-
-Function171c66: ; 171c66 (5c:5c66)
-	ld hl, wcd49
-	inc [hl]
-	ret
-; 171c6b (5c:5c6b)
-
-MenuDataHeader_171c6b: ; 171c6b
-	db $40 ; flags
-	db 12,  0 ; start coords
-	db 17, 19 ; end coords
-	dw NULL
-	db 0 ; default option
-; 171c73
-
-String_171c73: ; 171c73
-	db   "モバイルセンターを けってい"
-	next "しました@"
-; 171c87
-
-Function171c87: ; 171c87 (5c:5c87)
-	call DisableLCD
-	ld hl, GFX_171db1
-	ld de, VTiles2 tile $00
-	ld bc, $6e0
-	call CopyBytes
-	ld hl, LZ_172abd
-	ld de, VTiles0 tile $00
-	call Decompress
-	call EnableLCD
-	ld hl, Tilemap_172491
-	decoord 0, 0
-	ld bc, $168
-	call CopyBytes
-	ld hl, Attrmap_1727ed
-	decoord 0, 0, AttrMap
-	ld bc, $168
-	call CopyBytes
-	hlcoord 3, 2
-	ld de, String_172e31
-	call PlaceString
-	hlcoord 3, 16
-	ld de, String_172e3f
-	call PlaceString
-	ret
-
-Function171ccd: ; 171ccd (5c:5ccd)
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Palette_171d71
-	ld de, Unkn1Pals
-	ld bc, $40
-	call CopyBytes
-	ld hl, MovementAnimation
-	ld a, $ff
-	ld [hli], a
-	ld a, $7f
-	ld [hl], a
-	call SetPalettes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-
-Function171cf0: ; 171cf0 (5c:5cf0)
-	xor a
-	hlcoord 4, 15
-rept 2
-	ld [hli], a
-endr
-	ld a, [wcd4b]
-	xor $1
-	ld [wcd4b], a
-	and a
-	jr nz, .asm_171d16
-	ld hl, Tilemap_17251d
-	decoord 0, 7
-	ld bc, $8c
-	call CopyBytes
-	hlcoord 3, 16
-	ld de, String_172e3f
-	jp PlaceString
-.asm_171d16
-	ld hl, Tilemap_1725f9
-	decoord 0, 7
-	ld bc, $8c
-	call CopyBytes
-	hlcoord 3, 16
-	ld de, String_172e4e
-	jp PlaceString
-
-Function171d2b: ; 171d2b (5c:5d2b)
-	call DisableLCD
-	ld hl, GFX_171db1
-	ld de, VTiles2 tile $00
-	ld bc, $6e0
-	call CopyBytes
-	ld hl, LZ_172abd
-	ld de, VTiles0 tile $00
-	call Decompress
-	call EnableLCD
-	ld hl, Tilemap_172685
-	decoord 0, 0
-	ld bc, $168
-	call CopyBytes
-	ld hl, Attrmap_172955
-	decoord 0, 0, AttrMap
-	ld bc, $168
-	call CopyBytes
-	hlcoord 2, 2
-	ld de, String_172e5d
-	call PlaceString
-	hlcoord 14, 16
-	ld de, String_172e58
-	call PlaceString
-	ret
-; 171d71 (5c:5d71)
-
-Palette_171d71:
-	RGB  0,  0,  0
-	RGB  3,  0,  0
-	RGB  5,  0,  0
-	RGB 31, 31, 29
-	RGB  0,  2, 10
-	RGB  2, 10, 21
-	RGB  0,  0,  0
-	RGB 10, 26, 31
-	RGB  0,  0,  0
-	RGB  0,  7,  8
-	RGB 31,  8,  0
-	RGB  1, 17, 15
-	RGB 31, 16,  0
-	RGB 31, 22,  0
-	RGB 31, 27,  0
-	RGB 31, 31,  0
-	RGB 31, 18,  6
-	RGB  0,  3,  0
-	RGB  0,  9,  0
-	RGB  0, 12,  0
-	RGB  0, 16,  0
-	RGB  0, 22,  0
-	RGB  0, 25,  0
-	RGB  0, 27,  0
-	RGB  5,  5, 16
-	RGB  8, 19, 28
-	RGB  0,  0,  0
-	RGB 31, 31, 31
-	RGB 31, 31, 29
-	RGB 21, 21, 20
-	RGB 11, 11, 10
-	RGB  0,  0,  0
-GFX_171db1:
-INCBIN "gfx/unknown/171db1.2bpp"
-Tilemap_172491:
-INCBIN "gfx/unknown/172491.tilemap"
-Tilemap_17251d:
-INCBIN "gfx/unknown/17251d.tilemap"
-Tilemap_1725f9:
-INCBIN "gfx/unknown/1725f9.tilemap"
-Tilemap_172685:
-INCBIN "gfx/unknown/172685.tilemap"
-Attrmap_1727ed:
-INCBIN "gfx/unknown/1727ed.attrmap"
-Attrmap_172955:
-INCBIN "gfx/unknown/172955.attrmap"
-LZ_172abd:
-INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
-
-String_172e31: ; 172e31
-	db "パスワード", $1f, "いれてください@"
-String_172e3f: ; 172e3f
-	db "きりかえ やめる  けってい@"
-String_172e4e: ; 172e4e
-	db "きりかえ やめる  "
-String_172e58:
-	db "けってい@"
-String_172e5d: ; 172e5d
-	db "せつぞくする モバイルセンターを"
-	next "えらんで ください@"
-; 172e78
-
-
-Function172e78: ; 172e78 (5c:6e78)
-	ld a, $7f
-	hlcoord 0, 0
-	ld bc, $168
-	call ByteFill
-	ld a, $7
-	hlcoord 0, 0, AttrMap
-	ld bc, $168
-	call ByteFill
-	call DisableLCD
-	ld hl, GFX_172f1f
-	ld de, VTiles2 tile $00
-	ld bc, $610
-	call CopyBytes
-	call EnableLCD
-	ld hl, Tilemap_1733af
-	decoord 0, 0
-	ld bc, $168
-	call CopyBytes
-	ld hl, Attrmap_173517
-	decoord 0, 0, AttrMap
-	ld bc, $168
-	call CopyBytes
-	ret
-; 172eb9 (5c:6eb9)
-
-Function172eb9:
-	ld a, [rSVBK] ; $ff00+$70
-	push af
-	ld a, $5
-	ld [rSVBK], a ; $ff00+$70
-	ld hl, Palette_172edf
-	ld de, Unkn1Pals
-	ld bc, $40
-	call CopyBytes
-	ld hl, Palette_172edf
-	ld de, BGPals
-	ld bc, $40
-	call CopyBytes
-	call SetPalettes
-	pop af
-	ld [rSVBK], a ; $ff00+$70
-	ret
-; 172edf (5c:6edf)
-
-Palette_172edf:
-	RGB  5, 12, 17
-	RGB 31, 31, 31
-	RGB 18, 25, 28
-	RGB 10, 17, 21
-	RGB  6, 13, 18
-	RGB 31, 31, 31
-	RGB 20, 26, 28
-	RGB 12, 19, 23
-	RGB  3, 10, 16
-	RGB 31, 31, 31
-	RGB  6, 13, 18
-	RGB 20, 26, 28
-	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  5,  5, 16
-	RGB  8, 19, 28
-	RGB  0,  0,  0
-	RGB 31, 31, 31
-	RGB 31, 31, 31
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-	RGB  0,  0,  0
-
-GFX_172f1f:
-INCBIN "gfx/unknown/172f1f.2bpp"
-
-Tilemap_1733af:
-IF DEF(CORRUPT_TILES)
-INCBIN "gfx/unknown/1733af_corrupt.tilemap"
-ELSE
-INCBIN "gfx/unknown/1733af.tilemap"
-ENDC
-
-Attrmap_173517:
-INCBIN "gfx/unknown/173517.attrmap"
--- /dev/null
+++ b/misc/mobile_46.asm
@@ -1,0 +1,8033 @@
+SECTION "bank46", ROMX, BANK[$46]
+
+Function118000: ; 118000
+	ld a, $1
+	ld [wcd38], a
+	jr asm_11800b
+
+Function118007: ; 118007
+	xor a
+	ld [wcd38], a
+
+asm_11800b
+	call Function1183cb
+	ld a, $18
+	ld [wcd33], a
+	ld a, $19
+	ld [wcd34], a
+	ld a, $4
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_118024
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $1b
+	jr c, .asm_118037
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_118037
+	call Function1184a5
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_118024
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	call ReturnToMapFromSubmenu
+Function11805e: ; 11805e (46:405e)
+	ret
+; 11805f
+
+Function11805f: ; 11805f
+	ld a, $1
+	ld [wcd38], a
+	call Function1183cb
+	ld a, $18
+	ld [wcd33], a
+	ld a, $19
+	ld [wcd34], a
+	ld a, $4
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_11807d
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $1b
+	jr c, .asm_118090
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_118090
+	call Function11857c
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_11807d
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	call ReturnToMapFromSubmenu
+	ret
+; 1180b8
+
+Function1180b8: ; 1180b8
+	call Function1183cb
+	ld a, $22
+	ld [wcd33], a
+	ld a, $23
+	ld [wcd34], a
+	ld a, $4
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_1180d1
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $28
+	jr c, .asm_1180e4
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_1180e4
+	ld a, [wcf66]
+	cp $10
+	jr c, .asm_1180f2
+	cp $16
+	jr nc, .asm_1180f2
+	call Function11884c
+
+.asm_1180f2
+	call Function1184ec
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_1180d1
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	call ReturnToMapFromSubmenu
+	ret
+; 11811a
+
+Function11811a: ; 11811a
+	ld a, 1
+	ld [wcd38], a
+	jr Function118125
+
+Function118121: ; 118121
+	xor a
+	ld [wcd38], a
+
+Function118125: ; 118125
+	call Function1183cb
+	ld a, $3
+	ld [wcd33], a
+	ld a, $d
+	ld [wcd34], a
+	ld a, $4
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_11813e
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $f
+	jr c, .asm_118151
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_118151
+	call Function11854d
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_11813e
+	xor a
+	ld [wMapPals], a
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	call Function118180
+	call ReturnToMapFromSubmenu
+	ret
+; 118180
+
+Function118180: ; 118180
+	ld a, [ScriptVar]
+	and a
+	ret nz
+	ld a, [wcd38]
+	and a
+	ret z
+	ld a, $5
+	call GetSRAMBank
+	ld hl, wcd69
+	ld de, $a89c
+	ld bc, $0016
+	call CopyBytes
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld de, $d202
+	ld c, $96
+	callba Function17d0b3
+	jr c, .asm_1181d0
+	ld de, $d202
+	ld bc, $0196
+	callba Function17d1e1
+	jr c, .asm_1181d0
+	ld hl, $d202
+	ld de, $a8b2
+	ld bc, $0096
+	call CopyBytes
+.asm_1181c9
+	pop af
+	ld [rSVBK], a
+	call CloseSRAM
+	ret
+
+.asm_1181d0
+	ld a, $d3
+	ld [wc300], a
+	ld [ScriptVar], a
+	jr .asm_1181c9
+; 1181da
+
+Function1181da: ; 1181da
+	call Function1183cb
+	ld a, $2
+	ld [wcd38], a
+	ld a, $21
+	ld [wcd33], a
+	ld a, $22
+	ld [wcd34], a
+	ld a, $4
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_1181f8
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $28
+	jr c, .asm_11820b
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_11820b
+	call Function1185c3
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_1181f8
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	call ReturnToMapFromSubmenu
+	ret
+; 118233
+
+Function118233: ; 118233
+	call Function1183cb
+	ld a, $1b
+	ld [wcd33], a
+	ld a, $1c
+	ld [wcd34], a
+	ld a, $6
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_11824c
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $1e
+	jr c, .asm_11825f
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_11825f
+	call Function118624
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_11824c
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	ret
+; 118284
+
+Function118284: ; 118284
+	call Function1183cb
+	ld a, $19
+	ld [wcd33], a
+	ld a, $1e
+	ld [wcd34], a
+	ld a, $5
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_11829d
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $20
+	jr c, .asm_1182b0
+	ld a, [wcd34]
+	ld [wcf66], a
+.asm_1182b0
+	call Function1186f5
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_11829d
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	ret
+; 1182d5 (46:42d5)
+
+
+Function1182d5: ; 1182d5
+	call Function1183cb
+	ld a, $18
+	ld [wcd33], a
+	ld a, $19
+	ld [wcd34], a
+	ld a, $4
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_1182ee
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $1b
+	jr c, .asm_118301
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_118301
+	call Function118746
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_1182ee
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	call ReturnToMapFromSubmenu
+	ret
+; 118329
+
+Function118329: ; 118329
+	call Function1183cb
+	ld a, $15
+	ld [wcd33], a
+	ld a, $16
+	ld [wcd34], a
+	ld a, $6
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_118342
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $18
+	jr c, .asm_118355
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_118355
+	call Function118671
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_118342
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	ret
+; 11837a
+
+Function11837a: ; 11837a
+	call Function1183cb
+	ld a, $16
+	ld [wcd33], a
+	ld a, $17
+	ld [wcd34], a
+	ld a, $6
+	ld [wc3f0], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+.asm_118393
+	call JoyTextDelay
+	call Function118473
+	ld a, [wcf66]
+	cp $19
+	jr c, .asm_1183a6
+	ld a, [wcd34]
+	ld [wcf66], a
+
+.asm_1183a6
+	call Function1186b2
+	call Function11a8fa
+	callba Function115dd3
+	callba Function11619d
+	call DelayFrame
+	ld a, [wcf66]
+	ld hl, wcd33
+	cp [hl]
+	jr nz, .asm_118393
+	pop af
+	ld [rSVBK], a
+	call Function118452
+	ret
+; 1183cb
+
+Function1183cb: ; 1183cb
+	di
+	ld a, [rIE]
+	ld [wcd32], a
+	call DoubleSpeed
+	xor a
+	ld [rIF], a
+	ld [wc300], a
+	ld [wc301], a
+	ld [wc302], a
+	ld [wcd80], a
+	ld [wcd65], a
+	ld [wcd66], a
+	ld [wcd67], a
+	ld [wcd68], a
+	ld [wc314 + 6], a
+	ld [wcd89], a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	ld [wc3ec], a
+	ld [wc3ed], a
+	ld [wc3ee], a
+	ld [wc3ef], a
+	ld hl, VramState
+	ld a, [hl]
+	ld [wcd7f], a
+	set 1, [hl]
+	ld a, $f
+	ld [rIE], a
+	ld a, $1
+	ld [hFFC9], a
+	ld [hMobile], a
+	ei
+	callba Function106462
+	callba Function106464
+	callba Function115d99
+	callba Function11615a
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$bfff], a
+	call CloseSRAM
+	ret
+; 118440
+
+Function118440: ; 118440
+	push af
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$bfff]
+	inc a
+	ld [$bfff], a
+	call CloseSRAM
+	pop af
+	ret
+; 118452
+
+Function118452: ; 118452
+	di
+	xor a
+	ld [hFFC9], a
+	ld [hMobile], a
+	ld [hVBlank], a
+	call NormalSpeed
+	xor a
+	ld [rIF], a
+	ld a, [wcd32]
+	ld [rIE], a
+	ei
+	ld a, [wcd7f]
+	ld [VramState], a
+	ld a, [wc300]
+	ld [ScriptVar], a
+	ret
+; 118473
+
+Function118473: ; 118473
+	ld a, [wcd65]
+	and a
+	ret z
+	ld a, [wcd66]
+	inc a
+	ld [wcd66], a
+	cp $3c
+	ret nz
+	xor a
+	ld [wcd66], a
+	ld a, [wcd67]
+	inc a
+	ld [wcd67], a
+	cp $3c
+	ret nz
+	ld a, [wcd68]
+	inc a
+	ld [wcd68], a
+	cp $63
+	jr z, .asm_1184a0
+	xor a
+	ld [wcd67], a
+	ret
+
+.asm_1184a0
+	xor a
+	ld [wcd65], a
+	ret
+; 1184a5
+
+Function1184a5: ; 1184a5
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_1184b4
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1184b4
+
+Jumptable_1184b4: ; 1184b4
+	dw Function11886e
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function118a8f
+	dw Function11878d
+	dw Function118d80
+	dw Function118d9b
+	dw Function11878d
+	dw Function118ded
+	dw Function118e6d
+	dw Function11878d
+	dw Function11984e
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 1184ec
+
+Function1184ec: ; 1184ec
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_1184fb
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1184fb
+
+Jumptable_1184fb: ; 1184fb
+	dw Function11886e
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function119954
+	dw Function11878d
+	dw Function119973
+	dw Function11878d
+	dw Function119987
+	dw Function11878d
+	dw Function1199b4
+	dw Function1199ca
+	dw Function11878d
+	dw Function1199e2
+	dw Function119b0d
+	dw Function11878d
+	dw Function119b6b
+	dw Function119b3b
+	dw Function11878d
+	dw Function119b52
+	dw Function11878d
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function119b45
+	dw Function11878d
+	dw Function119ac9
+	dw Function118e76
+; 11854d
+
+Function11854d: ; 11854d
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11855c
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11855c
+
+Jumptable_11855c: ; 11855c
+	dw Function118922
+	dw Function118936
+	dw Function118982
+	dw Function11805e
+	dw Function119ca2
+	dw Function119cab
+	dw Function119cb8
+	dw Function119cc3
+	dw Function119cdf
+	dw Function119cec
+	dw Function119c97
+	dw Function119cab
+	dw Function119cb8
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 11857c
+
+Function11857c: ; 11857c
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11858b
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11858b
+
+Jumptable_11858b: ; 11858b
+	dw Function11886e
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function118a7a
+	dw Function11878d
+	dw Function11891c
+	dw Function1198ee
+	dw Function1198f7
+	dw Function11878d
+	dw Function119937
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 1185c3
+
+Function1185c3: ; 1185c3
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_1185d2
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1185d2
+
+Jumptable_1185d2: ; 1185d2
+	dw Function11886e
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function118aa4
+	dw Function11878d
+	dw Function118e92
+	dw Function11878d
+	dw Function118eb0
+	dw Function118ec6
+	dw Function118f0d
+	dw Function118f14
+	dw Function118f5e
+	dw Function11878d
+	dw Function118fc0
+	dw Function11878d
+	dw Function119054
+	dw Function1190d0
+	dw Function11878d
+	dw Function1190ec
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function119cc3
+	dw Function119cdf
+	dw Function119cec
+	dw Function11914e
+	dw Function118e76
+; 118624
+
+Function118624: ; 118624
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_118633
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 118633
+
+Jumptable_118633: ; 118633
+	dw Function118866
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function118aa4
+	dw Function11878d
+	dw Function118e92
+	dw Function11878d
+	dw Function11915d
+	dw Function118f68
+	dw Function11878d
+	dw Function119009
+	dw Function11878d
+	dw Function119054
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 118671
+
+Function118671: ; 118671
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_118680
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 118680
+
+Jumptable_118680: ; 118680
+	dw Function118866
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function119380
+	dw Function119388
+	dw Function1193a0
+	dw Function11878d
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 1186b2
+
+Function1186b2: ; 1186b2
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_1186c1
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 1186c1
+
+Jumptable_1186c1: ; 1186c1
+	dw Function118866
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function119380
+	dw Function1193e3
+	dw Function1193fb
+	dw Function11878d
+	dw Function119413
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 1186f5
+
+Function1186f5: ; 1186f5 (46:46f5)
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_118704
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 118704 (46:4704)
+
+Jumptable_118704: ; 118704 (46:4704)
+	dw Function11886a
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function118abc
+	dw Function11878d
+	dw Function119451
+	dw Function1195f8
+	dw Function119612
+	dw Function119629
+	dw Function119648
+	dw Function11878d
+	dw Function118e6d
+	dw Function11878d
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function11967d
+	dw Function119685
+	dw Function119665
+	dw Function11966d
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 118746 (46:4746)
+
+Function118746: ; 118746
+	ld a, [wcf66]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_118755
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 118755
+
+Jumptable_118755: ; 118755
+	dw Function11886e
+	dw Function118880
+	dw Function11878d
+	dw Function1188b0
+	dw Function11878d
+	dw Function1188b8
+	dw Function11878d
+	dw Function1188c0
+	dw Function11878d
+	dw Function1188c8
+	dw Function11878d
+	dw Function118903
+	dw Function118ad0
+	dw Function11878d
+	dw Function1196f2
+	dw Function1197c9
+	dw Function1197dc
+	dw Function11878d
+	dw Function118e6d
+	dw Function11878d
+	dw Function119800
+	dw Function118e76
+	dw Function118e7e
+	dw Function11878d
+	dw Function11805e
+	dw Function118e76
+	dw Function118e87
+	dw Function118e76
+; 11878d
+
+Function11878d: ; 11878d (46:478d)
+	ld a, [wc821]
+	bit 1, a
+	jr nz, .asm_1187af
+	bit 2, a
+	jr nz, .asm_1187d1
+	bit 0, a
+	jr nz, .asm_1187aa
+	ld a, [wcd89]
+	and $1
+	jr z, .asm_1187a7
+	ld a, $3
+	ld [rSVBK], a
+.asm_1187a7
+	jp Function119e2e
+.asm_1187aa
+	call Function118821
+	ret c
+	ret
+.asm_1187af
+	ld a, $0
+	call Function3e32
+	ld [wc300], a
+	ld a, l
+	ld [wc301], a
+	ld a, h
+	ld [wc302], a
+	ld a, $a
+	call Function3e32
+	ld a, [wc3f0]
+	ld [wc314 + 5], a
+	ld a, [wcd34]
+	ld [wcf66], a
+	ret
+.asm_1187d1
+	ld hl, wcd89
+	bit 0, [hl]
+	jr nz, .asm_118803
+	set 0, [hl]
+	ld a, $6
+	ld [rSVBK], a
+	ld de, wMapPals
+	ld bc, $1000
+	ld a, [hl]
+	sla a
+	jr c, .asm_1187f9
+	sla a
+	jr c, .asm_1187fd
+	sla a
+	jr c, .asm_1187f5
+	ld a, $24
+	jr .asm_1187ff
+.asm_1187f5
+	ld a, $28
+	jr .asm_1187ff
+.asm_1187f9
+	ld a, $2a
+	jr .asm_1187ff
+.asm_1187fd
+	ld a, $2c
+.asm_1187ff
+	call Function3e32
+	ret
+.asm_118803
+	ld a, $d3
+
+Function118805: ; 118805 (46:4805)
+	ld [wc300], a
+	xor a
+	ld [wc301], a
+	ld [wc302], a
+	ld a, $a
+	call Function3e32
+	ld a, [wc3f0]
+	ld [wc314 + 5], a
+	ld a, [wcd34]
+	ld [wcf66], a
+	ret
+
+Function118821: ; 118821 (46:4821)
+	ld a, [wc314 + 5]
+	cp $3
+	jr c, .asm_11884a
+	cp $4
+	jr z, .asm_11884a
+	ld a, [hJoyDown]
+	cp $5
+	jr nz, .asm_11884a
+	ld a, $a
+	call Function3e32
+	ld a, $a
+	ld [wc300], a
+	ld a, [wc3f0]
+	ld [wc314 + 5], a
+	ld a, [wcd34]
+	ld [wcf66], a
+	scf
+	ret
+.asm_11884a
+	and a
+	ret
+; 11884c (46:484c)
+
+Function11884c: ; 11884c
+	ld a, [hJoyDown]
+	cp $5
+	jr nz, .asm_118864
+	ld a, $a
+	call Function3e32
+	ld a, $a
+	ld [wc300], a
+	ld a, [wcd34]
+	ld [wcf66], a
+	scf
+	ret
+
+.asm_118864
+	and a
+	ret
+; 118866
+
+Function118866:
+	ld a, 2
+	jr asm_11886f
+
+Function11886a: ; 11886a (46:486a)
+	ld a, 1
+	jr asm_11886f
+; 11886e (46:486e)
+
+Function11886e:
+	xor a
+
+asm_11886f
+	ld [BGMapPalBuffer], a
+	ld a, $0
+	ld [wcd3c], a
+	call Function119e2e
+	ld a, [wcd33]
+	ld [wcd45], a
+
+Function118880: ; 118880 (46:4880)
+	call Function119ed8
+	ret c
+	xor a
+	ld [wcf64], a
+	ld [wc807], a
+	ld de, wcd81
+	ld hl, $46
+	ld a, $2
+	jp Function119e2b
+; 118896 (46:4896)
+
+Function118896: ; 118896
+	ld a, [wc821]
+	bit 1, a
+	jr nz, .asm_1188a5
+	bit 2, a
+	jr nz, .asm_1188a5
+	bit 0, a
+	jr z, .asm_1188aa
+
+.asm_1188a5
+	ld a, $34
+	jp Function119e2b
+
+.asm_1188aa
+	call Function119e2e
+	jp Function119e2e
+; 1188b0
+
+Function1188b0: ; 1188b0 (46:48b0)
+	ld de, wc314 + 48 + 2
+	ld a, $c
+	jp Function119e2b
+
+Function1188b8: ; 1188b8 (46:48b8)
+	ld de, wc3ac
+	ld a, $e
+	jp Function119e2b
+
+Function1188c0: ; 1188c0 (46:48c0)
+	ld de, wc3cd
+	ld a, $10
+	jp Function119e2b
+
+Function1188c8: ; 1188c8 (46:48c8)
+	ld a, $1
+	ld [wcd65], a
+	call Function1188e7
+	ld hl, wc708
+.asm_1188d3
+	ld a, [de]
+	inc de
+	ld [hli], a
+	and a
+	jr nz, .asm_1188d3
+	call Function119eb4
+	call Function119ec2
+	ld hl, wc708
+	ld a, $6
+	jp Function119e2b
+
+Function1188e7: ; 1188e7 (46:48e7)
+	ld de, wc314 + 48 + 2
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa4a]
+	call CloseSRAM
+	and a
+	ret z
+	sla a
+	ld c, a
+.asm_1188fa
+	ld a, [de]
+	inc de
+	and a
+	jr nz, .asm_1188fa
+	dec c
+	jr nz, .asm_1188fa
+	ret
+
+Function118903: ; 118903 (46:4903)
+	ld a, [wc3f0]
+	ld [wc314 + 5], a
+	ld c, $1
+	callba Function115e18
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	jp Function119e2e
+
+
+Function11891c: ; 11891c
+	call Function118b42
+	jp Function119e2e
+
+
+Function118922: ; 118922
+	ld a, [wcd38]
+	and a
+	jr nz, .asm_11892d
+	ld hl, Text_WhatLevelDoYouWantToChallenge
+	jr .asm_118930
+
+.asm_11892d
+	ld hl, Text_CheckBattleRoomListByMaxLevel
+
+.asm_118930
+	call Function11a9c0
+	call Function119e2e
+
+Function118936:
+	ld a, [wc314 + 6]
+	and a
+	ret nz
+	ld hl, MenuDataHeader_119cf7
+	call LoadMenuDataHeader
+	call MenuBox
+	call MenuBoxCoord2Tile
+	call Function321c
+	hlcoord 16, 8, AttrMap
+	ld a, $40
+	or [hl]
+	ld [hl], a
+	call Function3200
+	ld a, $1
+	ld [wcd4f], a
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [StatusFlags]
+	bit 6, a
+	jr nz, .asm_11896b
+	ld hl, Strings_Ll0ToL40		; Address to list of strings with the choosable levels
+	ld a, 5						; 4 levels to choose from, including 'Cancel'-option
+	jr .asm_118970
+
+.asm_11896b
+	ld hl, Strings_L10ToL100	; Address to list of strings with the choosable levels
+	ld a, 11					; 10 levels to choose from, including 'Cancel'-option
+
+.asm_118970
+	ld [wcd4a], a
+	ld a, l
+	ld [wcd4b], a
+	ld a, h
+	ld [wcd4c], a
+	ld a, $3
+	ld [rSVBK], a
+	call Function119e2e
+
+Function118982:
+	hlcoord 13, 8
+	ld de, String_119d07
+	call PlaceString
+	hlcoord 13, 10
+	ld de, String_119d07
+	call PlaceString
+	ld a, [wcd4b]
+	ld l, a
+	ld a, [wcd4c]
+	ld h, a
+	ld d, $0
+	ld a, [wcd4f]
+	dec a
+	rlca
+	rlca
+	rlca
+	ld e, a
+	add hl, de
+	ld a, l
+	ld e, a
+	ld a, h
+	ld d, a
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld bc, StringBuffer3
+.asm_1189b5
+	ld a, [hli]
+	cp $50
+	jr z, .asm_1189c4
+	cp $7f
+	jr z, .asm_1189c2
+	ld [bc], a
+	inc bc
+	jr .asm_1189b5
+
+.asm_1189c2
+	ld a, $50
+
+.asm_1189c4
+	ld [bc], a
+	pop af
+	ld [rSVBK], a
+	hlcoord 13, 9
+	call PlaceString
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and $2
+	jr nz, .asm_118a39
+	ld a, [hl]
+	and $1
+	jr nz, .asm_118a01
+	ld a, [hl]
+	and $80
+	jr nz, .asm_1189e6
+	ld a, [hl]
+	and $40
+	jr nz, .asm_1189f2
+.asm_1189e5
+	ret
+
+.asm_1189e6
+	ld hl, wcd4f
+	dec [hl]
+	jr nz, .asm_1189e5
+	ld a, [wcd4a]
+	ld [hl], a
+	jr .asm_1189e5
+
+.asm_1189f2
+	ld a, [wcd4a]
+	ld hl, wcd4f
+	inc [hl]
+	cp [hl]
+	jr nc, .asm_1189e5
+	ld a, $1
+	ld [hl], a
+	jr .asm_1189e5
+
+.asm_118a01
+	call PlayClickSFX
+	ld a, [wcd4f]
+	ld hl, wcd4a
+	cp [hl]
+	jr z, .asm_118a3c
+	dec a
+	and $fe
+	srl a
+	ld [wcf65], a
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	call WriteBackup
+	pop af
+	ld [rSVBK], a
+	ld a, [wcd38]
+	and a
+	jr nz, .asm_118a30
+	call Function119d93
+	ret c
+	call Function119dd1
+	ret c
+
+.asm_118a30
+	ld a, [wcd4f]
+	ld [wd000 + $800], a
+	jp Function119e2e
+
+.asm_118a39
+	call PlayClickSFX
+
+.asm_118a3c
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	call WriteBackup
+	pop af
+	ld [rSVBK], a
+	ld a, $7
+	ld [wcf66], a
+	ld a, $0
+	ld [wcd46], a
+	ret
+
+
+
+Function118a54: ; 118a54
+	ld a, [wcd55]
+	ld l, a
+	ld a, [wcd56]
+	ld h, a
+	ld de, wc3ec
+	ld bc, $0004
+	jp Function118ae4
+; 118a65
+
+Function118a65: ; 118a65
+	ld hl, BattleDownloadURL
+	ld de, wcc60
+	ld bc, $80
+	call CopyBytes
+	ld de, wMapPals
+	ld bc, $1000
+	jp Function118b10
+; 118a7a
+
+Function118a7a: ; 118a7a
+	ld hl, BattleDownloadURL
+	ld de, wcc60
+	ld bc, $80
+	call CopyBytes
+	ld de, wMapPals
+	ld bc, $1000
+	jp Function118b10
+; 118a8f
+
+Function118a8f: ; 118a8f
+	ld hl, ExchangeDownloadURL
+	ld de, wcc60
+	ld bc, $80
+	call CopyBytes
+	ld de, wMapPals
+	ld bc, $1000
+	jp Function118b10
+; 118aa4
+
+Function118aa4: ; 118aa4
+	ld hl, NewsDownloadURL
+	ld de, wcc60
+	ld bc, $80
+	call CopyBytes
+	ld a, $5
+	ld [rSVBK], a
+	ld de, LYOverrides
+	ld bc, $e00
+	jr Function118b10
+; 118abc
+
+Function118abc: ; 118abc (46:4abc)
+	ld hl, MenuDownloadURL
+	ld de, wcc60
+	ld bc, $80
+	call CopyBytes
+	ld de, wMapPals
+	ld bc, $1000
+	jr Function118b10
+; 118ad0 (46:4ad0)
+
+Function118ad0:
+	ld hl, IndexDownloadURL
+	ld de, wcc60
+	ld bc, $80
+	call CopyBytes
+	ld de, wMapPals
+	ld bc, $1000
+	jr Function118b10
+
+Function118ae4:
+	push bc
+	push de
+	push hl
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	pop hl
+	ld c, $0
+	ld de, wcc60
+.asm_118af5
+	ld a, [hli]
+	ld [de], a
+	inc de
+	and a
+	jr z, .asm_118b06
+	inc c
+	ld a, c
+	cp $a6
+	jr c, .asm_118af5
+	ld a, $da
+	jp Function118805
+
+.asm_118b06
+	call Function118b24
+	pop de
+	pop bc
+	ld a, $2a
+	jp Function119e2b
+; 118b10
+
+Function118b10:
+	push de
+	push bc
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	call Function118b24
+	pop bc
+	pop de
+	ld a, $2a
+	jp Function119e2b
+
+Function118b24: ; 118b24 (46:4b24)
+	ld hl, wc314 + 48 + 2
+	ld a, $8
+	ld [hli], a
+	ld a, $c7
+	ld [hli], a
+	ld a, $60
+	ld [hli], a
+	ld a, $cc
+	ld [hli], a
+	call Function119eb4
+	call Function119ec2
+	ld a, $80
+	ld [wcd89], a
+	ld hl, wc314 + 48 + 2
+	ret
+; 118b42 (46:4b42)
+
+Function118b42: ; 118b42
+	ld hl, wd002
+	ld a, l
+	ld [wcd51], a
+	ld a, h
+	ld [wcd52], a
+	call Function118b8c
+	ld a, l
+	ld [wcd55], a
+	ld [wcd59], a
+	ld a, h
+	ld [wcd56], a
+	ld [wcd5a], a
+	call Function118b8c
+	ld a, l
+	ld [wcd53], a
+	ld [wcd5d], a
+	ld a, h
+	ld [wcd54], a
+	ld [wcd5e], a
+	call Function118b8c
+	ld a, l
+	ld [wcd57], a
+	ld [wcd5b], a
+	ld a, h
+	ld [wcd58], a
+	ld [wcd5c], a
+	call Function118b8c
+	ld a, l
+	ld [wcd5f], a
+	ld a, h
+	ld [wcd60], a
+	ret
+; 118b8c
+
+Function118b8c: ; 118b8c
+.asm_118b8c
+	call Function118b9a
+	ret nc
+	ld a, [hli]
+	cp $d
+	jr nz, .asm_118b8c
+	dec hl
+	xor a
+rept 2
+	ld [hli], a
+endr
+	ret
+; 118b9a
+
+Function118b9a: ; 118b9a
+	ld a, h
+	cp $e0
+	ret c
+	ld a, $d3
+	call Function118805
+	and a
+	ret
+; 118ba5
+
+
+	charmap " ", $20 ; revert to ascii
+
+ExchangeDownloadURL: ; 0x118ba5
+	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/exchange/index.txt", 0
+
+BattleDownloadURL: ; 0x118bf7
+	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/battle/index.txt", 0
+
+NewsDownloadURL: ; 0x118c47
+	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/news/index.txt", 0
+
+MenuDownloadURL: ; 0x118c95
+	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/POKESTA/menu.cgb", 0
+
+IndexDownloadURL: ; 0x118ce5
+	db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/tamago/index.txt", 0
+
+
+Function118d35: ; 118d35
+	ld hl, LYOverridesBackup
+	ld a, [wcd38]
+	and a
+	jr nz, .asm_118d6e
+	ld a, [hli]
+	cp $94
+	jr nz, .asm_118d7b
+	ld a, [hl]
+	cp $5
+	jr nz, .asm_118d7b
+	ld a, [wcd4f]
+	sla a
+	ld b, a
+	sla a
+	sla a
+	add b
+	ld b, a
+	ld a, $5
+	call GetSRAMBank
+	ld a, b
+	ld [$b2fb], a
+	call CloseSRAM
+	callba Function170be4
+	callba Function1700c4
+	jr .asm_118d78
+
+.asm_118d6e
+	ld a, [hli]
+	cp $96
+	jr nz, .asm_118d7b
+	ld a, [hl]
+	cp $0
+	jr nz, .asm_118d7b
+
+.asm_118d78
+	jp Function119e2e
+
+.asm_118d7b
+	ld a, $d3
+	jp Function118805
+; 118d80
+
+Function118d80: ; 118d80
+	call Function118e06
+	ld a, [wcd38]
+	and a
+	jr z, .asm_118d8e
+	call Function119e2e
+	jr asm_118d9f
+
+.asm_118d8e
+	ld a, $9
+	ld [wcd3c], a
+	ld a, $12
+	ld [wcd45], a
+	call Function119e2e
+
+Function118d9b:
+	call Function119ed8
+	ret c
+
+asm_118d9f
+	ld hl, $c608
+	call Function119940
+	ld a, [wcd38]
+	and a
+	jr nz, .asm_118db2
+	ld a, $8f
+	ld [wcd3b], a
+	jr .asm_118db7
+
+.asm_118db2
+	ld a, $26
+	ld [wcd3b], a
+
+.asm_118db7
+	ld hl, $d800
+	ld a, $8
+	ld [hli], a
+	ld a, $c6
+	ld [hli], a
+	ld a, [wcd3b]
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld a, $8
+	ld [hli], a
+	ld a, $c7
+	ld [hli], a
+	ld a, [wcd39]
+	ld [hli], a
+	ld a, [wcd3a]
+	ld [hli], a
+	call Function119eb4
+	call Function119ec2
+	ld a, $40
+	ld [wcd89], a
+	ld hl, $d800
+	ld de, $de00
+	ld bc, $0200
+	ld a, $2c
+	jp Function119e2b
+; 118ded
+
+Function118ded: ; 118ded
+	ld a, [wcd38]
+	and a
+	jr z, .asm_118e03
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	callba Function11b93b
+	pop af
+	ld [rSVBK], a
+
+.asm_118e03
+	jp Function119e2e
+; 118e06
+
+Function118e06: ; 118e06
+	ld hl, wd002
+	ld a, [wcd38]
+	and a
+	jr z, .asm_118e1d
+.asm_118e0f
+	call Function118b9a
+	ret nc
+	ld a, [hli]
+	cp $d
+	jr nz, .asm_118e0f
+	ld a, [hli]
+	cp $a
+	jr nz, .asm_118e0f
+
+.asm_118e1d
+	ld a, l
+	ld [wcd39], a
+	ld a, h
+	ld [wcd3a], a
+.asm_118e25
+	call Function118b9a
+	ret nc
+	ld a, [hli]
+	cp $d
+	jr nz, .asm_118e25
+	ld a, [hli]
+	cp $a
+	jr nz, .asm_118e25
+	dec hl
+	xor a
+	ld [hld], a
+	ld [hl], a
+	jr asm_118e3e
+
+Function118e39: ; 118e39 (46:4e39)
+.asm_118e39
+	ld a, [hli]
+	and a
+	jr nz, .asm_118e39
+	dec hl
+asm_118e3e
+.asm_118e3e
+	ld a, [hld]
+	cp $2f
+	jr nz, .asm_118e3e
+rept 2
+	inc hl
+endr
+	ld de, wcd85
+	ld c, $4
+.asm_118e4a
+	ld a, [hli]
+	cp $2e
+	jr z, .asm_118e63
+	cp $30
+	jr c, .asm_118e67
+	cp $3a
+	jr nc, .asm_118e67
+	sub $30
+	add $f6
+	ld [de], a
+	inc de
+	dec c
+	jr nz, .asm_118e4a
+	ld de, wcd85
+.asm_118e63
+	ld a, $50
+	ld [de], a
+	ret
+.asm_118e67
+	ld a, $f3
+	ld [de], a
+	inc de
+	jr .asm_118e63
+
+Function118e6d: ; 118e6d (46:4e6d)
+	xor a
+	ld [wcd65], a
+	ld a, $a
+	jp Function119e2b
+
+Function118e76: ; 118e76 (46:4e76)
+	ld a, $c
+	ld [wcd3c], a
+	jp Function119e2e
+
+Function118e7e: ; 118e7e (46:4e7e)
+	call Function119ed8
+	ret c
+	ld a, $36
+	jp Function119e2b
+
+Function118e87: ; 118e87 (46:4e87)
+	call Function119ed8
+	ret c
+	ld a, [wcd33]
+	ld [wcf66], a
+	ret
+; 118e92 (46:4e92)
+
+Function118e92: ; 118e92
+	call Function118440
+	call Function1191d3
+	ld a, [wcd53]
+	ld l, a
+	ld a, [wcd54]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld de, $d800
+	ld bc, $0800
+	jp Function118b10
+; 118eb0
+
+Function118eb0: ; 118eb0
+	call Function118440
+	ld hl, $d802
+	ld de, BGMapBuffer
+	ld bc, $000c
+	call CopyBytes
+	call Function1192cc
+	ret c
+	jp Function119e2e
+; 118ec6
+
+Function118ec6: ; 118ec6
+	call Function118440
+	call SpeechTextBox
+	ld hl, $d80e
+	ld de, wc314 + 12
+	ld bc, $0026
+	call CopyBytes
+	xor a
+	ld [wc314 + 11], a
+	ld a, $20
+	ld [wc314 + 7], a
+	ld a, $c3
+	ld [wc314 + 8], a
+	hlcoord 1, 14
+	ld a, l
+	ld [wc314 + 9], a
+	ld a, h
+	ld [wc314 + 10], a
+	ld a, $2
+	ld [wc314 + 6], a
+	ld a, $1d
+	ld [wcd3c], a
+	ld a, $24
+	ld [wcd45], a
+	ld a, $11
+	ld [wcd46], a
+	ld a, $1c
+	ld [wcd47], a
+	jp Function119e2e
+; 118f0d
+
+Function118f0d: ; 118f0d
+	call Function119ed8
+	ret c
+	call Function118440
+
+Function118f14:
+	call Function118440
+	ld a, [wcd51]
+	ld l, a
+	ld a, [wcd52]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld a, [wcc60]
+	and a
+	jr z, .asm_118f32
+	ld hl, UnknownText_0x11aa13
+	call Function11a9c0
+
+.asm_118f32
+	ld a, [wcd57]
+	ld l, a
+	ld a, [wcd58]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld hl, wcc60
+	call Function118e39
+	ld a, $9
+	ld [wcd3c], a
+	ld a, $24
+	ld [wcd45], a
+	ld a, $13
+	ld [wcd46], a
+	ld a, $1c
+	ld [wcd47], a
+	jp Function119e2e
+; 118f5e
+
+Function118f5e: ; 118f5e
+	call Function119ed8
+	ret c
+	call Function118440
+	call DelayFrame
+
+Function118f68:
+	call Function119223
+	ret c
+	call Function118440
+	ld a, [wcd51]
+	ld l, a
+	ld a, [wcd52]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld a, [wcc60]
+	and a
+	jr z, .asm_118fba
+	ld hl, wc314 + 48 + 2
+	ld a, $c608 % $100
+	ld [hli], a
+	ld a, $c608 / $100
+	ld [hli], a
+	ld a, [wcd4b]
+	ld [hli], a
+	ld a, [wcd4c]
+	ld [hli], a
+	ld a, wc708 % $100
+	ld [hli], a
+	ld a, wc708 / $100
+	ld [hli], a
+	ld a, $60
+	ld [hli], a
+	ld a, $cc
+	ld [hli], a
+	call Function119eb4
+	call Function119ec2
+	ld a, $40
+	ld [wcd89], a
+	ld hl, wc314 + 48 + 2
+	ld de, $de00
+	ld bc, $0200
+	ld a, $2c
+	jp Function119e2b
+
+.asm_118fba
+	call Function119e2e
+	jp Function119e2e
+; 118fc0
+
+Function118fc0: ; 118fc0
+	call Function118440
+	ld a, [wcd55]
+	ld l, a
+	ld a, [wcd56]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld a, [wcc60]
+	and a
+	jr z, .asm_118ffa
+	ld a, [wcd51]
+	ld l, a
+	ld a, [wcd52]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld a, [wcc60]
+	and a
+	jr z, .asm_118ff2
+	ld hl, UnknownText_0x11aa2c
+	jr .asm_118ff5
+
+.asm_118ff2
+	ld hl, UnknownText_0x11aa4b
+
+.asm_118ff5
+	call Function11a9c0
+	jr Function119009
+
+.asm_118ffa
+	ld hl, UnknownText_0x11aa4b
+	call Function11a9c0
+	call Function119e2e
+	call Function119e2e
+	jp Function119e2e
+
+Function119009:
+	call Function118440
+	call Function119300
+	ld a, [wcd55]
+	ld l, a
+	ld a, [wcd56]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld hl, wc314 + 48 + 2
+	ld a, $8
+	ld [hli], a
+	ld a, $c6
+	ld [hli], a
+	ld a, [wcd4b]
+	ld [hli], a
+	ld a, [wcd4c]
+	ld [hli], a
+	ld a, $8
+	ld [hli], a
+	ld a, $c7
+	ld [hli], a
+	ld a, $60
+	ld [hli], a
+	ld a, $cc
+	ld [hli], a
+	call Function119eb4
+	call Function119ec2
+	ld a, $40
+	ld [wcd89], a
+	ld hl, wc314 + 48 + 2
+	ld de, wMapPals
+	ld bc, $1000
+	ld a, $2c
+	jp Function119e2b
+; 119054
+
+Function119054: ; 119054
+	ld a, $6
+	call GetSRAMBank
+	ld hl, wd002
+	ld a, [wcd4f]
+	ld e, a
+	ld a, [wcd50]
+	ld d, a
+	ld a, [wMapPals]
+	ld c, a
+	ld a, [wd001]
+	ld b, a
+	call Function119192
+	ret c
+	ld a, [wcd89]
+	and $1
+	jr z, .asm_11908a
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, wd002
+	ld a, [wMapPals]
+	ld c, a
+	ld a, [wd001]
+	ld b, a
+	call Function119192
+	ret c
+
+.asm_11908a
+	call CloseSRAM
+	ld a, $3
+	ld [rSVBK], a
+	ld a, $5
+	call GetSRAMBank
+	ld a, [wcd4f]
+	ld [$b1b3], a
+	ld a, [wcd50]
+	ld [$b1b4], a
+	ld hl, BGMapBuffer
+	ld de, $aa7f
+	ld bc, $000c
+	call CopyBytes
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [wd474]
+	ld [$b2f3], a
+	ld hl, wd475
+	ld de, $b2f4
+	ld bc, $0004
+	call CopyBytes
+	pop af
+	ld [rSVBK], a
+	call CloseSRAM
+	jp Function119e2e
+; 1190d0
+
+Function1190d0: ; 1190d0
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [wcd57]
+	ld l, a
+	ld a, [wcd58]
+	ld h, a
+	ld de, wcc60
+	call Function1191ad
+	ret c
+	ld de, wMapPals
+	ld bc, $1000
+	jp Function118b10
+; 1190ec
+
+Function1190ec: ; 1190ec
+	ld a, $5
+	call GetSRAMBank
+	ld hl, BGMapBuffer
+	ld de, $aa73
+	ld bc, $000c
+	call CopyBytes
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	ld a, $1
+	ld [$aa72], a
+	call CloseSRAM
+	ld a, $6
+	call GetSRAMBank
+	ld a, [wMapPals]
+	ld c, a
+	ld a, [wd001]
+	ld b, a
+	ld hl, wd002
+	ld de, $a000
+	call Function119192
+	ret c
+	ld a, [wcd89]
+	and $1
+	jr z, .asm_11913e
+	ld a, $6
+	ld [rSVBK], a
+	ld a, [wMapPals]
+	ld c, a
+	ld a, [wd001]
+	ld b, a
+	ld hl, wd002
+	call Function119192
+	ret c
+
+.asm_11913e
+	ld a, $3
+	ld [rSVBK], a
+	call CloseSRAM
+	ld hl, UnknownText_0x11aa5a
+	call Function11a9c0
+	jp Function119e2e
+; 11914e
+
+Function11914e: ; 11914e
+	call Function119ed8
+	ret c
+	ld a, $1c
+	ld [wcf66], a
+	ld a, $a
+	ld [wc300], a
+	ret
+; 11915d
+
+Function11915d: ; 11915d
+	ld hl, $d802
+	ld de, BGMapBuffer
+	ld bc, $000c
+	call CopyBytes
+	ld a, $5
+	call GetSRAMBank
+	ld hl, BGMapBuffer
+	ld de, $aa7f
+	ld c, $c
+.asm_119176
+	ld a, [de]
+	inc de
+	cp [hl]
+	jr nz, .asm_119184
+	inc hl
+	dec c
+	jr nz, .asm_119176
+	call Function119e2e
+	jr .asm_11918e
+
+.asm_119184
+	ld a, $16
+	ld [wcf66], a
+	ld a, $b
+	ld [wc300], a
+
+.asm_11918e
+	call CloseSRAM
+	ret
+; 119192
+
+Function119192: ; 119192
+	inc b
+	inc c
+	jr .asm_11919e
+
+.asm_119196
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, $bf
+	cp d
+	jr c, .asm_1191a6
+
+.asm_11919e
+	dec c
+	jr nz, .asm_119196
+	dec b
+	jr nz, .asm_119196
+	and a
+	ret
+
+.asm_1191a6
+	ld a, $d3
+	call Function118805
+	scf
+	ret
+; 1191ad
+
+Function1191ad: ; 1191ad
+	push bc
+	ld c, $0
+	ld a, $5
+	ld [rSVBK], a
+.asm_1191b4
+	ld a, [hli]
+	ld [de], a
+	inc de
+	and a
+	jr z, .asm_1191cc
+	inc c
+	ld a, c
+	cp $a6
+	jr c, .asm_1191b4
+	ld a, $da
+	call Function118805
+	ld a, $3
+	ld [rSVBK], a
+	pop bc
+	scf
+	ret
+
+.asm_1191cc
+	ld a, $3
+	ld [rSVBK], a
+	pop bc
+	and a
+	ret
+; 1191d3
+
+Function1191d3: ; 1191d3
+	ld hl, wd102
+	ld a, l
+	ld [wcd53], a
+	ld a, h
+	ld [wcd54], a
+	call Function11920f
+	ld a, l
+	ld [wcd51], a
+	ld a, [wcd4a]
+	ld a, h
+	ld [wcd52], a
+	call Function11920f
+	ld a, l
+	ld [wcd55], a
+	ld a, [wcd4a]
+	ld a, h
+	ld [wcd56], a
+	call Function11920f
+	ld a, [wcd49]
+	ld a, l
+	ld [wcd57], a
+	ld a, [wcd4a]
+	ld a, h
+	ld [wcd58], a
+	call Function11920f
+	ret
+; 11920f
+
+Function11920f: ; 11920f
+.asm_11920f
+	call Function118b9a
+	ret nc
+	ld a, [hli]
+	cp $d
+	jr nz, .asm_11920f
+	ld a, [hli]
+	cp $a
+	jr nz, .asm_11920f
+	dec hl
+	xor a
+	ld [hld], a
+	ld [hli], a
+	inc hl
+	ret
+; 119223
+
+Function119223: ; 119223
+	xor a
+	ld [wcd4b], a
+	ld [wcd4c], a
+	ld a, $5
+	call GetSRAMBank
+	ld hl, wc3cd
+	ld de, $b092
+	ld bc, $001f
+	call CopyBytes
+	dec de
+	xor a
+	ld [de], a
+	ld hl, $d810
+.asm_119241
+	ld a, [hli]
+	cp $50
+	jr nz, .asm_119241
+	ld a, [hli]
+	ld [wcd4f], a
+	ld a, [hli]
+	ld [wcd50], a
+	ld a, [hli]
+	ld [$b1b1], a
+	ld c, a
+	ld a, [hli]
+	ld [$b1b2], a
+	ld b, a
+	ld de, $b1d3
+	call CopyBytes
+	call CloseSRAM
+	ld e, l
+	ld d, h
+	ld hl, $c608
+.asm_119266
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .asm_1192c2
+	cp $fe
+	jr z, .asm_1192a5
+	call GetSRAMBank
+	ld a, [de]
+	inc de
+	ld c, a
+	ld a, [de]
+	inc de
+	ld b, a
+	ld a, [de]
+	inc de
+	push de
+	push af
+	ld a, [wcd4b]
+	ld e, a
+	ld a, [wcd4c]
+	ld d, a
+	pop af
+.asm_119286
+	push af
+	ld a, [bc]
+	inc bc
+	ld [hli], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_119286
+	call CloseSRAM
+	ld a, e
+	ld [wcd4b], a
+	ld a, d
+	ld [wcd4c], a
+	pop de
+.asm_11929b
+	and a
+	jr z, .asm_119266
+	ld a, $d3
+	call Function118805
+	scf
+	ret
+
+.asm_1192a5
+	ld a, [wcd4b]
+	ld c, a
+	ld a, [wcd4c]
+	ld b, a
+	ld a, [de]
+	inc de
+.asm_1192af
+	push af
+	ld a, [de]
+	inc de
+	ld [hli], a
+	inc bc
+	pop af
+	dec a
+	jr nz, .asm_1192af
+	ld a, c
+	ld [wcd4b], a
+	ld a, b
+	ld [wcd4c], a
+	jr .asm_11929b
+
+.asm_1192c2
+	ld a, e
+	ld [wcd4d], a
+	ld a, d
+	ld [wcd4e], a
+	and a
+	ret
+; 1192cc
+
+Function1192cc: ; 1192cc
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $aa73
+	ld de, $c608
+	ld bc, $000c
+	call CopyBytes
+	call CloseSRAM
+	ld hl, $c608
+	ld de, BGMapBuffer
+	ld c, $c
+.asm_1192e8
+	ld a, [de]
+	inc de
+	ld b, a
+	ld a, [hli]
+	cp b
+	jr nz, .asm_1192fe
+	dec c
+	jr nz, .asm_1192e8
+	ld a, $1f
+	ld [wcd3c], a
+	ld a, $27
+	ld [wcf66], a
+	scf
+	ret
+
+.asm_1192fe
+	and a
+	ret
+; 119300
+
+Function119300: ; 119300
+	xor a
+	ld [wcd4b], a
+	ld [wcd4c], a
+	ld a, [wcd4d]
+	ld e, a
+	ld a, [wcd4e]
+	ld d, a
+	ld hl, $c608
+	ld a, [wcd4b]
+	ld c, a
+	ld a, [wcd4c]
+	ld b, a
+.asm_11931a
+	ld a, [de]
+	inc de
+	cp $50
+	jr z, .asm_119324
+	ld [hli], a
+	inc bc
+	jr .asm_11931a
+
+.asm_119324
+	ld a, $3d
+	ld [hli], a
+	inc bc
+	ld a, c
+	ld [wcd4b], a
+	ld a, b
+	ld [wcd4c], a
+	ld a, [de]
+	inc de
+	call GetSRAMBank
+	ld a, [de]
+	inc de
+	ld c, a
+	ld a, [de]
+	inc de
+	ld b, a
+	ld a, [de]
+	inc de
+	push de
+	push af
+	ld a, [wcd4b]
+	ld e, a
+	ld a, [wcd4c]
+	ld d, a
+	pop af
+.asm_119348
+	push af
+	ld a, [bc]
+	and $f0
+	swap a
+	call Function1197bf
+	ld [hli], a
+	inc de
+	ld a, [bc]
+	inc bc
+	and $f
+	call Function1197bf
+	ld [hli], a
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_119348
+	call CloseSRAM
+	ld a, e
+	ld [wcd4b], a
+	ld a, d
+	ld [wcd4c], a
+	pop de
+	ld a, [de]
+	cp $50
+	jr z, .asm_11937f
+	ld a, [wcd4b]
+	ld c, a
+	ld a, [wcd4c]
+	ld b, a
+	ld a, $26
+	ld [hli], a
+	inc bc
+	jr .asm_11931a
+
+.asm_11937f
+	ret
+; 119380
+
+Function119380: ; 119380
+	ld a, $80
+	ld [wcd49], a
+	jp Function119e2e
+; 119388
+
+Function119388: ; 119388
+	ld hl, wcd49
+	dec [hl]
+	ret nz
+	ld hl, wcc60
+	call Function118e39
+	ld a, $9
+	ld [wcd3c], a
+	ld a, $10
+	ld [wcd45], a
+	call Function119e2e
+
+Function1193a0:
+	call Function119ed8
+	ret c
+	call DelayFrame
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	ld hl, wc314 + 48 + 2
+	ld a, wd000 % $100
+	ld [hli], a
+	ld a, wd000 / $100
+	ld [hli], a
+	ld a, [wcd3b]
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld a, wc708 % $100
+	ld [hli], a
+	ld a, wc708 / $100
+	ld [hli], a
+	ld a, $60
+	ld [hli], a
+	ld a, $cc
+	ld [hli], a
+	call Function119eb4
+	call Function119ec2
+	ld a, $40
+	ld [wcd89], a
+	ld hl, wc314 + 48 + 2
+	ld de, $de00
+	ld bc, $0200
+	ld a, $2c
+	jp Function119e2b
+; 1193e3
+
+Function1193e3: ; 1193e3
+	ld hl, wcd49
+	dec [hl]
+	ret nz
+	ld hl, wcc60
+	call Function118e39
+	ld a, $9
+	ld [wcd3c], a
+	ld a, $11
+	ld [wcd45], a
+	call Function119e2e
+
+Function1193fb:
+	call Function119ed8
+	ret c
+	call DelayFrame
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	ld de, wMapPals
+	ld bc, $1000
+	jp Function118b10
+; 119413
+
+Function119413: ; 119413
+	ld a, $6
+	call GetSRAMBank
+	ld a, [wMapPals]
+	ld c, a
+	ld a, [wd001]
+	ld b, a
+rept 2
+	dec bc
+endr
+	ld hl, wd002
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	call Function119192
+	ret c
+	ld a, [wcd89]
+	and $1
+	jr z, .asm_119447
+	ld a, $6
+	ld [rSVBK], a
+	ld a, [wd000]
+	ld c, a
+	ld a, [wd001]
+	ld b, a
+	ld hl, wd002
+	call Function119192
+	ret c
+
+.asm_119447
+	ld a, $3
+	ld [rSVBK], a
+	call CloseSRAM
+	jp Function119e2e
+; 119451
+
+Function119451: ; 119451 (46:5451)
+	ld a, [wcd89]
+	and $1
+	jr z, .asm_11945d
+	ld a, $d3
+	jp Function118805
+.asm_11945d
+	xor a
+	ld [wcd50], a
+	call Function119694
+	ld a, b
+	ld [wcd49], a
+	call Function1196cd
+	ld a, [wd002]
+	ld hl, wd003
+
+Function119471: ; 119471 (46:5471)
+	push af
+	ld a, [hli]
+	ld [$c608], a
+	ld a, [hli]
+	ld [$c608 + 3], a
+	ld a, [hli]
+	ld [$c608 + 1], a
+	ld a, [hli]
+	ld [$c608 + 2], a
+	ld a, [hli]
+	ld [$c608 + 4], a
+	ld a, [hli]
+	ld [$c608 + 5], a ; $c608 + 5
+	push hl
+	ld a, [$c608]
+	cp $ff
+	jr z, .asm_1194a7
+	ld a, [$c608 + 2]
+	cp $ff
+	jr z, .asm_1194a7
+	ld a, [$c608 + 1]
+	cp $ff
+	jr nz, .asm_1194a7
+	call Function119584
+	jr c, .asm_11950c
+	jr .asm_1194f0
+.asm_1194a7
+	ld hl, $c608
+	ld de, $c608 + 3
+	ld c, $3
+.asm_1194af
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr c, .asm_1194f3
+	jr z, .asm_1194b9
+	jr nc, .asm_1194bc
+.asm_1194b9
+	dec c
+	jr nz, .asm_1194af
+.asm_1194bc
+	ld c, $3
+	ld hl, wcd49
+	ld de, $c608
+.asm_1194c4
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .asm_1194d1
+	cp [hl]
+	jr z, .asm_1194d1
+	jr c, .asm_1194d5
+	jr nc, .asm_1194f0
+.asm_1194d1
+	inc hl
+	dec c
+	jr nz, .asm_1194c4
+.asm_1194d5
+	ld c, $3
+	ld hl, wcd49
+	ld de, $c608 + 3
+.asm_1194dd
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .asm_1194ea
+	cp [hl]
+	jr c, .asm_1194f0
+	jr z, .asm_1194ea
+	jr nc, .asm_11950c
+.asm_1194ea
+	inc hl
+	dec c
+	jr nz, .asm_1194dd
+	jr .asm_11950c
+.asm_1194f0
+	pop hl
+	jr .asm_119557
+.asm_1194f3
+	ld c, $3
+	ld hl, wcd49
+	ld de, $c608
+.asm_1194fb
+	ld a, [de]
+	inc de
+	cp $ff
+	jr z, .asm_119508
+	cp [hl]
+	jr c, .asm_11950c
+	jr z, .asm_119508
+	jr nc, .asm_1194d5
+.asm_119508
+	inc hl
+	dec c
+	jr nz, .asm_1194fb
+.asm_11950c
+	pop hl
+	ld a, $1
+	ld [wcd50], a
+	ld a, l
+	ld [$c608], a
+	ld a, h
+	ld [$c608 + 1], a
+	ld de, wcd69
+	ld c, $10
+	ld b, $0
+.asm_119521
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr nz, .asm_119528
+	inc b
+.asm_119528
+	dec c
+	jr nz, .asm_119521
+	ld a, $10
+	cp b
+	jr z, .asm_119536
+rept 4
+	inc hl
+endr
+	jr .asm_11957a
+.asm_119536
+	ld a, [hli]
+	cp $50
+	jr nz, .asm_119552
+	ld a, [hli]
+	cp $33
+	jr nz, .asm_119553
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, [wcd83]
+	cp c
+	jr nz, .asm_119576
+	ld a, [wcd84]
+	cp b
+	jr nz, .asm_119576
+	jr .asm_11955b
+.asm_119552
+	inc hl
+.asm_119553
+rept 2
+	inc hl
+endr
+	jr .asm_11955b
+.asm_119557
+	ld de, $14
+	add hl, de
+.asm_11955b
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	add hl, de
+	pop af
+	dec a
+	jp nz, Function119471
+	ld a, [wcd50]
+	and a
+	jr z, .asm_119571
+	ld a, $1a
+	ld [wcf66], a
+	ret
+.asm_119571
+	ld a, $d8
+	jp Function118805
+.asm_119576
+	ld a, $10
+	jr .asm_11957c
+.asm_11957a
+	ld a, $f
+.asm_11957c
+	ld [wcf66], a
+	pop af
+	call Function1195c4
+	ret
+
+Function119584: ; 119584 (46:5584)
+	ld a, [$c608]
+	ld b, a
+	ld a, [$c608 + 3]
+	ld c, a
+	cp b
+	jr c, .asm_11959c
+	ld a, [wcd49]
+	cp b
+	jr c, .asm_1195c2
+.asm_119595
+	cp c
+	jr c, .asm_1195a2
+	jr z, .asm_1195a2
+	jr .asm_1195c2
+.asm_11959c
+	ld a, [wcd49]
+	cp b
+	jr c, .asm_119595
+.asm_1195a2
+	ld a, [$c608 + 2]
+	ld b, a
+	ld a, [$c608 + 5] ; $c608 + 5
+	ld c, a
+	cp b
+	jr c, .asm_1195ba
+	ld a, [wcd4b]
+	cp b
+	jr c, .asm_1195c2
+.asm_1195b3
+	cp c
+	jr c, .asm_1195c0
+	jr z, .asm_1195c0
+	jr .asm_1195c2
+.asm_1195ba
+	ld a, [wcd4b]
+	cp b
+	jr c, .asm_1195b3
+.asm_1195c0
+	scf
+	ret
+.asm_1195c2
+	and a
+	ret
+
+Function1195c4: ; 1195c4 (46:55c4)
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld de, $a5
+	ld a, b
+	cp d
+	jr c, .asm_1195d9
+	jr z, .asm_1195d3
+	jr nc, .asm_1195f3
+.asm_1195d3
+	ld a, c
+	cp e
+	jr z, .asm_1195d9
+	jr nc, .asm_1195f3
+.asm_1195d9
+	ld de, wcc60
+	call CopyBytes
+	xor a
+	ld [de], a
+	ld a, [$c608]
+	ld l, a
+	ld a, [$c608 + 1]
+	ld h, a
+	ld de, wcd69
+	ld bc, $10
+	call CopyBytes
+	ret
+.asm_1195f3
+	ld a, $d8
+	jp Function118805
+
+Function1195f8: ; 1195f8 (46:55f8)
+	ld a, $11
+	ld [wcd3c], a
+	ld a, $1c
+	ld [wcd45], a
+	ld a, $f
+	ld [wcd46], a
+	ld a, $14
+	ld [wcd47], a
+	call Function119e2e
+	jp Function119e2e
+
+Function119612: ; 119612 (46:5612)
+	ld a, $14
+	ld [wcd3c], a
+	ld a, $1c
+	ld [wcd45], a
+	ld a, $10
+	ld [wcd46], a
+	ld a, $14
+	ld [wcd47], a
+	jp Function119e2e
+
+Function119629: ; 119629 (46:5629)
+	call Function119ed8
+	ret c
+	ld a, $60
+	ld l, a
+	ld a, $cc
+	ld h, a
+	call Function118e39
+	ld a, $9
+	ld [wcd3c], a
+	ld a, $1c
+	ld [wcd45], a
+	ld a, $14
+	ld [wcd47], a
+	call Function119e2e
+
+Function119648: ; 119648 (46:5648)
+	call Function119ed8
+	ret c
+	call DelayFrame
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	call Function118b24
+	ld de, wMapPals
+	ld bc, $1000
+	ld a, $2a
+	jp Function119e2b
+
+Function119665: ; 119665 (46:5665)
+	ld a, $1a
+	ld [wcd3c], a
+	call Function119e2e
+
+Function11966d: ; 11966d (46:566d)
+	call Function119ed8
+	ret c
+	ld a, [wcd47]
+	ld [wcf66], a
+	ld a, $a
+	ld [wc300], a
+	ret
+
+Function11967d: ; 11967d (46:567d)
+	ld a, $18
+	ld [wcd3c], a
+	call Function119e2e
+
+Function119685: ; 119685 (46:5685)
+	call Function119ed8
+	ret c
+	ld a, $14
+	ld [wcf66], a
+	ld a, $a
+	ld [wc300], a
+	ret
+
+Function119694: ; 119694 (46:5694)
+	ld b, 0
+	ld hl, Unknown_1196b8
+.asm_119699
+	ld de, wc708
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr nz, .asm_1196af
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr nz, .asm_1196b0
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr nz, .asm_1196b1
+	ret
+.asm_1196af
+	inc hl
+.asm_1196b0
+	inc hl
+.asm_1196b1
+	inc b
+	ld a, b
+	cp $7
+	jr nz, .asm_119699
+	ret
+; 1196b8 (46:56b8)
+
+Unknown_1196b8: ; 1196b8
+	db "Mon"
+	db "Tue"
+	db "Wed"
+	db "Thu"
+	db "Fri"
+	db "Sat"
+	db "Sun"
+; 1196cd
+
+SECTION "bank46_2", ROMX, BANK[$46]
+; A hack to use ascii above.
+
+Function1196cd: ; 1196cd (46:56cd)
+	ld de, wc719
+	call Function1196de
+	ld [wcd4a], a
+	inc de
+	call Function1196de
+	ld [wcd4b], a
+	ret
+
+Function1196de: ; 1196de (46:56de)
+	ld a, [de]
+	inc de
+	sub $30
+	sla a
+	ld b, a
+	sla a
+	sla a
+	add b
+	ld c, a
+	add hl, bc
+	ld a, [de]
+	inc de
+	sub $30
+	add c
+	ret
+; 1196f2 (46:56f2)
+
+Function1196f2: ; 1196f2
+	ld hl, wd002
+.asm_1196f5
+	call Function118b9a
+	ret nc
+	ld a, [hli]
+	cp $d
+	jr nz, .asm_1196f5
+	ld a, [hl]
+	cp $a
+	jr nz, .asm_1196f5
+	xor a
+	ld [hld], a
+	ld [hli], a
+	ld a, l
+	ld [wcd5b], a
+	ld a, h
+	ld [wcd5c], a
+	inc hl
+	ld e, l
+	ld d, h
+	ld a, [de]
+	inc de
+	cp $d
+	jr nz, .asm_119722
+	ld a, [de]
+	inc de
+	cp $a
+	jr nz, .asm_119722
+	ld a, $b
+	jp Function118805
+
+.asm_119722
+	call Random
+	ld c, $0
+	ld b, c
+.asm_119728
+	call Function119798
+	ld a, d
+	cp $ff
+	jr nz, .asm_119735
+	ld a, e
+	cp $ff
+	jr z, .asm_11974c
+
+.asm_119735
+	ld a, [hRandomSub]
+	cp d
+	jr c, .asm_11974c
+	jr z, .asm_11973e
+	jr .asm_119745
+
+.asm_11973e
+	ld a, [hRandomAdd]
+	cp e
+	jr c, .asm_11974c
+	jr z, .asm_11974c
+
+.asm_119745
+	inc bc
+	ld a, c
+	or b
+	jr z, .asm_119770
+	jr .asm_119728
+
+.asm_11974c
+	ld a, [wcd5b]
+	ld l, a
+	ld a, [wcd5c]
+	ld h, a
+.asm_119754
+	ld a, [hld]
+	cp $58
+	jr nz, .asm_119754
+	ld d, $0
+.asm_11975b
+	inc d
+	ld a, [hld]
+	cp $58
+	jr z, .asm_11975b
+rept 2
+	inc hl
+endr
+	ld a, d
+	dec a
+	jr z, .asm_11978e
+	dec a
+	jr z, .asm_119785
+	dec a
+	jr z, .asm_11977e
+	dec a
+	jr z, .asm_119775
+
+.asm_119770
+	ld a, $d3
+	jp Function118805
+
+.asm_119775
+	ld a, b
+	and $f0
+	swap a
+	call Function1197bf
+	ld [hli], a
+
+.asm_11977e
+	ld a, b
+	and $f
+	call Function1197bf
+	ld [hli], a
+
+.asm_119785
+	ld a, c
+	and $f0
+	swap a
+	call Function1197bf
+	ld [hli], a
+
+.asm_11978e
+	ld a, c
+	and $f
+	call Function1197bf
+	ld [hli], a
+	jp Function119e2e
+; 119798
+
+Function119798: ; 119798
+	ld d, $0
+	ld e, d
+	call Function1197b4
+	swap a
+	or d
+	ld d, a
+	call Function1197b4
+	or d
+	ld d, a
+	call Function1197b4
+	swap a
+	or e
+	ld e, a
+	call Function1197b4
+	or e
+	ld e, a
+	ret
+; 1197b4
+
+Function1197b4: ; 1197b4
+	ld a, [hli]
+	cp $61
+	jr nc, .asm_1197bc
+	sub $30
+	ret
+
+.asm_1197bc
+	sub $57
+	ret
+; 1197bf
+
+Function1197bf: ; 1197bf
+	cp $a
+	jr nc, .asm_1197c6
+	add $30
+	ret
+
+.asm_1197c6
+	add $57
+	ret
+; 1197c9
+
+Function1197c9: ; 1197c9
+	ld hl, wd002
+	call Function118e39
+	ld a, $9
+	ld [wcd3c], a
+	ld a, $12
+	ld [wcd45], a
+	call Function119e2e
+
+Function1197dc:
+	call Function119ed8
+	ret c
+	call DelayFrame
+	ld hl, wd002
+	ld de, wcc60
+	ld bc, $0080
+	call CopyBytes
+	dec de
+	xor a
+	ld [de], a
+	call Function118b24
+	ld de, wMapPals
+	ld bc, $1000
+	ld a, $2a
+	jp Function119e2b
+; 119800
+
+Function119800: ; 119800
+	ld a, $fd
+	ld [$c6d0], a
+	ld [wc702], a
+	ld a, [wcd81]
+	ld [wc74e], a
+	ld a, [wJumptableIndex]
+	push af
+	ld a, [wcf64]
+	push af
+	ld a, [wcf65]
+	push af
+	ld a, [wcf66]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	call FadeToMenu
+	callba Function10803d
+	call Function11a9ce
+	call RestartMapMusic
+	ld a, $3
+	ld [rSVBK], a
+	pop af
+	ld [wcf66], a
+	pop af
+	ld [wcf65], a
+	pop af
+	ld [wcf64], a
+	pop af
+	ld [wJumptableIndex], a
+	callba Function115dc3
+	jp Function119e2e
+; 11984e
+
+Function11984e: ; 11984e
+	ld a, [wcd80]
+	and a
+	jr nz, .asm_1198a0
+	ld a, [wcd38]
+	and a
+	jr nz, .asm_1198a8
+	callba Function170000
+	ld a, [wJumptableIndex]
+	push af
+	ld a, [wcf64]
+	push af
+	ld a, [wcf65]
+	push af
+	ld a, [wcf66]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	call FadeToMenu
+	callba Function108000
+	call Function11a9ce
+	call RestartMapMusic
+	ld a, $3
+	ld [rSVBK], a
+	pop af
+	ld [wcf66], a
+	pop af
+	ld [wcf65], a
+	pop af
+	ld [wcf64], a
+	pop af
+	ld [wJumptableIndex], a
+	callba Function115dc3
+	jp Function119e2e
+
+.asm_1198a0
+	ld a, $a
+	ld [wc300], a
+	jp Function119e2e
+
+.asm_1198a8
+	callba Function17005a
+	ld a, [wJumptableIndex]
+	push af
+	ld a, [wcf64]
+	push af
+	ld a, [wcf65]
+	push af
+	ld a, [wcf66]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	call FadeToMenu
+	callba Function108012
+	call Function11a9ce
+	call RestartMapMusic
+	ld a, $3
+	ld [rSVBK], a
+	pop af
+	ld [wcf66], a
+	pop af
+	ld [wcf65], a
+	pop af
+	ld [wcf64], a
+	pop af
+	ld [wJumptableIndex], a
+	callba Function115dc3
+	jp Function119e2e
+; 1198ee
+
+Function1198ee: ; 1198ee
+	ld hl, UnknownText_0x11aab2
+	call Function11a9c0
+	call Function119e2e
+
+Function1198f7:
+	ld a, [wc314 + 6]
+	and a
+	ret nz
+	ld hl, $c608 + 2
+	call Function119940
+	ld hl, $d800
+	ld a, $c608 % $100
+	ld [hli], a
+	ld a, $c608 / $100
+	ld [hli], a
+	ld a, $f6
+	ld [hli], a
+	xor a
+	ld [hli], a
+	ld a, wc708 % $100
+	ld [hli], a
+	ld a, wc708 / $100
+	ld [hli], a
+	ld a, [wcd51]
+	ld [hli], a
+	ld a, [wcd52]
+	ld [hli], a
+	call Function119eb4
+	call Function119ec2
+	ld a, $40
+	ld [wcd89], a
+	ld hl, $d800
+	ld de, $de00
+	ld bc, $0200
+	ld a, $2c
+	jp Function119e2b
+; 119937
+
+Function119937: ; 119937
+	callba Function1707f4
+	jp Function119e2e
+; 119940
+
+Function119940: ; 119940
+	ld de, wc3cd
+	ld c, $1e
+.asm_119945
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr z, .asm_119953
+	and a
+	jr nz, .asm_119945
+	xor a
+.asm_11994f
+	ld [hli], a
+	dec c
+	jr nz, .asm_11994f
+
+.asm_119953
+	ret
+; 119954
+
+Function119954: ; 119954
+	ld a, $1c
+	ld [wcd3c], a
+	call Function119ed8
+	ld hl, $c608
+	ld de, wc3cd
+.asm_119962
+	ld a, [de]
+	inc de
+	ld [hli], a
+	and a
+	jr nz, .asm_119962
+	call Function119ec2
+	ld hl, $c608
+	ld a, $1e
+	jp Function119e2b
+; 119973
+
+Function119973: ; 119973
+	ld a, $1
+	ld [wcf64], a
+	xor a
+	ld [wcf65], a
+	ld [StringBuffer2 + 10], a
+	ld de, wMapPals
+	ld a, $20
+	jp Function119e2b
+; 119987
+
+Function119987: ; 119987
+	ld hl, wd001
+	ld a, [wMapPals]
+	or [hl]
+	jr z, .asm_1199a0
+	ld a, [wcf64]
+	ld l, a
+	ld a, [wcf65]
+	ld h, a
+	ld de, BGPals
+	ld a, $22
+	jp Function119e2b
+
+.asm_1199a0
+	ld a, [StringBuffer2 + 10]
+	and a
+	jr z, .asm_1199ae
+	ld a, $16
+	ld [wcf66], a
+	jp Function119b0d
+
+.asm_1199ae
+	ld a, $1b
+	ld [wcf66], a
+	ret
+; 1199b4
+
+Function1199b4: ; 1199b4
+	ld a, [wd000 + 130]
+	and a
+	jr nz, .asm_1199c7
+	ld a, [wd000 + 129]
+	cp $7
+	jr nc, .asm_1199c7
+	call Function119e2e
+	jp Function1199ca
+
+.asm_1199c7
+	jp Function119ac9
+; 1199ca
+
+Function1199ca: ; 1199ca
+	ld a, $20
+	ld [wcd89], a
+	ld a, [wcf64]
+	ld l, a
+	ld a, [wcf65]
+	ld h, a
+	ld de, LYOverrides
+	ld bc, $0700
+	ld a, $28
+	jp Function119e2b
+; 1199e2
+
+Function1199e2: ; 1199e2
+	ld c, $c
+	ld de, Unknown_119e33
+	call Function119e4f
+	jp c, Function119ac9
+	ld a, c
+	cp $1
+	jp nz, Function119ac9
+	ld hl, $d880
+	ld bc, Unknown_119af1
+.asm_1199f9
+	ld a, [bc]
+	and a
+	jr z, .asm_119a05
+	cp [hl]
+	jp nz, Function119ac9
+	inc bc
+	inc hl
+	jr .asm_1199f9
+
+.asm_119a05
+	ld c, $17
+	ld de, Unknown_119e40
+	call Function119e4f
+	jp c, .asm_119aa7
+	ld a, c
+	cp $1
+	jp nz, .asm_119aa7
+	ld a, [wd000 + $880]
+	cp $31
+	jp nz, .asm_119aa7
+	ld a, [wd000 + $881]
+	cp $20
+	jp nz, .asm_119aa7
+	ld a, [wd000 + $88a]
+	cp $20
+	jp nz, .asm_119aa7
+	ld a, [wd000 + $894]
+	cp $20
+	jp nz, .asm_119aa7
+	xor a
+	ld [wd000 + $8a0], a
+	ld [wd000 + $8a1], a
+	ld [wd000 + $8a2], a
+	ld [wd000 + $8a3], a
+	ld hl, $d8a0
+	ld bc, $d889
+	call Function119e98
+	call Function119e98
+	ld hl, $d8a0
+	ld a, [wcd2d]
+	cp [hl]
+	jr nz, Function119ac9
+	inc hl
+	ld a, [wcd2c]
+	cp [hl]
+	jr nz, Function119ac9
+	inc hl
+	ld a, [wcd2b]
+	cp [hl]
+	jr nz, Function119ac9
+	inc hl
+	ld a, [wcd2a]
+	cp [hl]
+	jr nz, Function119ac9
+	xor a
+	ld [wd000 + $8a0], a
+	ld [wd000 + $8a1], a
+	ld [wd000 + $8a2], a
+	ld [wd000 + $8a3], a
+	ld hl, $d8a0
+	ld bc, $d88e
+	call Function119e98
+	ld bc, $d893
+	call Function119e98
+	ld hl, $d8a0
+	ld a, [wcd2f]
+	cp [hl]
+	jr nz, .asm_119aa7
+	inc hl
+	ld a, [wcd2e]
+	cp [hl]
+	jr nz, .asm_119aa7
+	inc hl
+	ld a, [wcd31]
+	cp [hl]
+	jr nz, .asm_119aa7
+	inc hl
+	ld a, [wcd30]
+	cp [hl]
+	jr z, .asm_119aaf
+
+.asm_119aa7
+	ld a, $25
+	ld [wcf66], a
+	jp Function119b45
+
+.asm_119aaf
+	ld a, [StringBuffer2 + 10]
+	and a
+	jr nz, .asm_119aa7
+	ld a, [wd000 + $895]
+	sub $30
+	ld [StringBuffer2 + 10], a
+	ld a, [wcf64]
+	ld [StringBuffer2 + 11], a
+	ld a, [wcf65]
+	ld [StringBuffer2 + 12], a
+
+Function119ac9:
+	ld a, [wMapPals]
+	ld l, a
+	ld a, [wd001]
+	ld h, a
+	dec hl
+	ld a, l
+	ld [wMapPals], a
+	ld a, h
+	ld [wd001], a
+	ld a, [wcf64]
+	ld l, a
+	ld a, [wcf65]
+	ld h, a
+	inc hl
+	ld a, l
+	ld [wcf64], a
+	ld a, h
+	ld [wcf65], a
+	ld a, $10
+	ld [wcf66], a
+	ret
+; 119af1
+
+Unknown_119af1:
+	INCBIN "data/mobile/x-game-code.txt"
+	INCBIN "data/mobile/x-game-result.txt"
+; 119b0d
+
+Function119b0d: ; 119b0d
+	ld a, $8
+	ld [wcd3c], a
+	call Function119ed8
+	ld a, [StringBuffer2 + 10]
+	cp $1
+	jr z, .asm_119b23
+	ld a, $19
+	ld [wcf66], a
+	jr Function119b3b
+
+.asm_119b23
+	ld a, $10
+	ld [wcd89], a
+	ld a, [StringBuffer2 + 11]
+	ld l, a
+	ld a, [StringBuffer2 + 12]
+	ld h, a
+	ld de, LYOverrides
+	ld bc, $0700
+	ld a, $24
+	jp Function119e2b
+
+Function119b3b:
+	ld a, [StringBuffer2 + 11]
+	ld l, a
+	ld a, [StringBuffer2 + 12]
+	ld h, a
+	jr asm_119b4d
+
+Function119b45:
+	ld a, [wcf64]
+	ld l, a
+	ld a, [wcf65]
+	ld h, a
+
+asm_119b4d
+	ld a, $26
+	jp Function119e2b
+; 119b52
+
+Function119b52: ; 119b52
+	ld a, [StringBuffer2 + 10]
+	cp $1
+	jr nz, .asm_119b66
+	ld a, $5
+	call GetSRAMBank
+	ld a, $4
+	ld [$a800], a
+	call CloseSRAM
+
+.asm_119b66
+	ld a, $1c
+	jp Function119e2b
+; 119b6b
+
+Function119b6b: ; 119b6b
+	ld a, [StringBuffer2 + 10]
+	cp $1
+	jr z, .asm_119b75
+	jp Function119e2e
+
+.asm_119b75
+	ld a, [LYOverrides]
+	ld b, a
+	ld a, [wd101]
+	or b
+	jr z, .asm_119be3
+	ld hl, $d800
+	ld de, wd102
+.asm_119b85
+	ld a, [de]
+	inc de
+	cp $d
+	jr nz, .asm_119b85
+	inc de
+	ld a, [de]
+	cp $d
+	jr nz, .asm_119b85
+rept 2
+	inc de
+endr
+.asm_119b93
+	ld a, [de]
+	inc de
+	cp $d
+	jr z, .asm_119bfa
+	call Function119c3e
+	ret c
+	ld [hli], a
+	ld a, [de]
+	inc de
+	call Function119c3e
+	ret c
+	ld [hli], a
+	ld a, [de]
+	inc de
+	call Function119c3e
+	ret c
+	ld [hli], a
+	ld a, [de]
+	inc de
+	call Function119c3e
+	ret c
+	ld [hl], a
+	push de
+	ld d, [hl]
+	dec hl
+	ld c, [hl]
+	dec hl
+	ld b, [hl]
+	dec hl
+	ld a, [hl]
+	sla b
+	sla b
+	sla b
+	rla
+	sla b
+	rla
+	ld [hli], a
+	ld [hl], b
+	inc hl
+	rrc c
+	rrc c
+	ld [hl], c
+	dec hl
+	ld a, $f
+	and c
+	or [hl]
+	ld [hli], a
+	ld a, [hli]
+	and $c0
+	or [hl]
+	dec hl
+	ld [hld], a
+	dec hl
+	pop de
+rept 3
+	inc hl
+endr
+	ld a, h
+	cp $e0
+	jr c, .asm_119b93
+
+.asm_119be3
+	ld a, $19
+	ld [wcf66], a
+	ld a, $5
+	call GetSRAMBank
+	ld a, $1
+	ld [$a800], a
+	call CloseSRAM
+	xor a
+	ld [StringBuffer2 + 10], a
+	ret
+
+.asm_119bfa
+	inc de
+	ld a, [de]
+	cp $d
+	jr nz, .asm_119b93
+	ld a, l
+	cp (wd000 + $800 + $69) % $100
+	jr nz, .asm_119be3
+	ld a, h
+	cp (wd000 + $800 + $69) / $100
+	jr nz, .asm_119be3
+	ld a, $5
+	call GetSRAMBank
+	ld a, [wcf64]
+	ld [$b090], a
+	ld a, [wcf65]
+	ld [$b091], a
+	ld hl, $d800
+	ld de, $b023
+	ld bc, $0069
+	call CopyBytes
+	ld a, $3
+	ld [$a800], a
+	call CloseSRAM
+	ld hl, $d800
+	ld de, $c608
+	ld bc, $0069
+	call CopyBytes
+	jp Function119e2e
+; 119c3e
+
+Function119c3e: ; 119c3e
+	cp $2b
+	jr c, .asm_119c68
+	jr z, .asm_119c80
+	cp $2f
+	jr c, .asm_119c68
+	jr z, .asm_119c84
+	cp $30
+	jr c, .asm_119c68
+	cp $3a
+	jr c, .asm_119c88
+	cp $3d
+	jr c, .asm_119c68
+	jr z, .asm_119c8c
+	cp $41
+	jr c, .asm_119c68
+	cp $5b
+	jr c, .asm_119c8f
+	cp $61
+	jr c, .asm_119c68
+	cp $7b
+	jr c, .asm_119c93
+
+.asm_119c68
+	ld a, $19
+	ld [wcf66], a
+	ld a, $5
+	call GetSRAMBank
+	ld a, $1
+	ld [$a800], a
+	call CloseSRAM
+	xor a
+	ld [StringBuffer2 + 10], a
+	scf
+	ret
+
+.asm_119c80
+	ld a, $3e
+	and a
+	ret
+
+.asm_119c84
+	ld a, $3f
+	and a
+	ret
+
+.asm_119c88
+	add $4
+	and a
+	ret
+
+.asm_119c8c
+	xor a
+	and a
+	ret
+
+.asm_119c8f
+	sub $41
+	and a
+	ret
+
+.asm_119c93
+	sub $47
+	and a
+	ret
+; 119c97
+
+Function119c97: ; 119c97
+	ld hl, UnknownText_0x11ab0f
+	call Function11a9c0
+	call Function119e2e
+	jr Function119cab
+
+Function119ca2:
+	ld hl, UnknownText_0x11aaf0
+	call Function11a9c0
+	call Function119e2e
+
+Function119cab:
+	ld a, [wc314 + 6]
+	and a
+	ret nz
+	ld a, $80
+	ld [wcd50], a
+	call Function119e2e
+
+Function119cb8:
+	ld hl, wcd50
+	dec [hl]
+	ret nz
+	ld a, $0
+	ld [wcf66], a
+	ret
+; 119cc3
+
+Function119cc3: ; 119cc3
+	ld a, [wcd38]
+	and a
+	jr z, .asm_119cd1
+	dec a
+	jr z, .asm_119cd6
+	ld hl, UnknownText_0x11aa6a
+	jr .asm_119cd9
+
+.asm_119cd1
+	ld hl, UnknownText_0x11ab4a
+	jr .asm_119cd9
+
+.asm_119cd6
+	ld hl, UnknownText_0x11ab6e
+
+.asm_119cd9
+	call Function11a9c0
+	call Function119e2e
+
+Function119cdf:
+	ld a, [wc314 + 6]
+	and a
+	ret nz
+	ld a, $f
+	ld [wcd3c], a
+	call Function119e2e
+
+Function119cec:
+	call Function119ed8
+	ret c
+	ld a, [wcd46]
+	ld [wcf66], a
+	ret
+; 119cf7
+
+MenuDataHeader_119cf7: ; 119cf7
+	db $40 ; flags
+	db  7, 12 ; start coords
+	db 11, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 119cff
+
+MenuData_119cff: ; 119cff
+	db $40 ; flags
+	db  7, 15 ; start coords
+	db 11, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 119d07
+
+String_119d07:
+	db "   ▼@"
+
+Strings_L10ToL100: ; 119d0c
+	db " L:10 @@"
+	db " L:20 @@"
+	db " L:30 @@"
+	db " L:40 @@"
+	db " L:50 @@"
+	db " L:60 @@"
+	db " L:70 @@"
+	db " L:80 @@"
+	db " L:90 @@"
+	db " L:100@@"
+	db "CANCEL@@"
+
+Strings_Ll0ToL40: ; 119d64
+	db " L:10 @@"
+	db " L:20 @@"
+	db " L:30 @@"
+	db " L:40 @@"
+	db "CANCEL@@"
+
+String_119d8c:
+	db "CANCEL@"
+; 119d93
+
+Function119d93: ; 119d93 (46:5d93)
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [wcd4f]
+	ld c, 10
+	call SimpleMultiply
+	ld hl, wcd50
+	ld [hl], a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld de, PartyMon1Level
+	ld a, [PartyCount]
+.asm_119daf
+	push af
+	ld a, [de]
+	push hl
+	push de
+	pop hl
+	add hl, bc
+	push hl
+	pop de
+	pop hl
+	cp [hl]
+	jr z, .asm_119dbd
+	jr nc, .asm_119dc6
+.asm_119dbd
+	pop af
+	dec a
+	jr nz, .asm_119daf
+	pop af
+	ld [rSVBK], a
+	and a
+	ret
+.asm_119dc6
+	pop af
+	ld a, $4
+	ld [wcf66], a
+	pop af
+	ld [rSVBK], a
+	scf
+	ret
+
+Function119dd1: ; 119dd1 (46:5dd1)
+	ld a, [rSVBK]
+	push af
+	ld a, [wcd4f]
+	cp 70 / 10
+	jr nc, .asm_119e08
+	ld a, $1
+	ld [rSVBK], a
+	ld hl, PartyMon1Level
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld de, PartySpecies
+	ld a, [PartyCount]
+.asm_119deb
+	push af
+	ld a, [de]
+	cp MEWTWO
+	jr z, .asm_119dfd
+	cp MEW
+	jr z, .asm_119dfd
+	cp LUGIA
+	jr c, .asm_119e02
+	cp NUM_POKEMON + 1
+	jr nc, .asm_119e02
+.asm_119dfd
+	ld a, [hl]
+	cp 70
+	jr c, .asm_119e0d
+.asm_119e02
+	add hl, bc
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_119deb
+.asm_119e08
+	pop af
+	ld [rSVBK], a
+	and a
+	ret
+.asm_119e0d
+	pop af
+	ld a, [de]
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	ld de, wcd49
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	ld a, $a
+	ld [wcf66], a
+	pop af
+	ld [rSVBK], a
+	scf
+	ret
+; 119e2b (46:5e2b)
+
+Function119e2b: ; 119e2b (46:5e2b)
+	call Function3e32
+
+Function119e2e: ; 119e2e (46:5e2e)
+	ld hl, wcf66
+	inc [hl]
+	ret
+; 119e33 (46:5e33)
+
+Unknown_119e33: ; 119e33
+	INCBIN "data/mobile/x-game-code-prefix.txt"
+Unknown_119e40:
+	INCBIN "data/mobile/x-game-result-prefix.txt"
+; 119e4f
+
+Function119e4f: ; 119e4f
+	push bc
+	ld hl, LYOverrides
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+.asm_119e57
+	ld a, [de]
+	cp [hl]
+	jr z, .asm_119e64
+.asm_119e5b
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_119e57
+.asm_119e61
+	pop bc
+	scf
+	ret
+
+.asm_119e64
+	push de
+.asm_119e65
+	ld a, [de]
+	inc de
+	cp "\n"
+	jr z, .asm_119e7a
+	cp [hl]
+	jr nz, .asm_119e77
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_119e65
+	pop de
+	jr .asm_119e61
+
+.asm_119e77
+	pop de
+	jr .asm_119e5b
+
+.asm_119e7a
+	pop de
+	pop bc
+	inc hl
+	ld de, $d880
+.asm_119e80
+	ld a, [hli]
+	ld [de], a
+	inc de
+	cp $d
+	jr z, .asm_119e8c
+	dec c
+	jr nz, .asm_119e80
+	scf
+	ret
+
+.asm_119e8c
+	and a
+	ret
+; 119e8e
+
+Function119e8e: ; 119e8e
+	cp $60
+	jr c, .asm_119e95
+	sub $57
+	ret
+
+.asm_119e95
+	sub $30
+	ret
+; 119e98
+
+Function119e98: ; 119e98
+	ld a, $2
+.asm_119e9a
+	push af
+	ld a, [bc]
+	dec bc
+	call Function119e8e
+	or [hl]
+	ld [hl], a
+	ld a, [bc]
+	dec bc
+	call Function119e8e
+	rlca
+	rlca
+	rlca
+	rlca
+	or [hl]
+	ld [hl], a
+	inc hl
+	pop af
+	dec a
+	and a
+	jr nz, .asm_119e9a
+	ret
+; 119eb4
+
+Function119eb4: ; 119eb4 (46:5eb4)
+	xor a
+	ld [wc3cc], a
+	ld de, wc3ac
+.asm_119ebb
+	ld a, [de]
+	inc de
+	ld [hli], a
+	and a
+	jr nz, .asm_119ebb
+	ret
+
+Function119ec2: ; 119ec2 (46:5ec2)
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$aa5c], a
+	ld de, $aa4c
+.asm_119ece
+	ld a, [de]
+	inc de
+	ld [hli], a
+	and a
+	jr nz, .asm_119ece
+	call CloseSRAM
+	ret
+
+Function119ed8: ; 119ed8 (46:5ed8)
+	ld a, [rSVBK]
+	ld [wcd8c], a
+	ld a, $1
+	ld [rSVBK], a
+	call Function119eee
+	ld a, [wcd8c]
+	ld [rSVBK], a
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+Function119eee: ; 119eee (46:5eee)
+	ld a, [wcd3c]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_119efd
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 119efd (46:5efd)
+
+Jumptable_119efd: ; 119efd
+	dw Function119f3f
+	dw Function119f45
+	dw Function119f56
+	dw Function119f76
+	dw Function119f98
+	dw Function11a113
+	dw Function11a129
+	dw Function11a131
+	dw Function11a13d
+	dw Function11a14b
+	dw Function11a16d
+	dw Function11a192
+	dw Function11a2e6
+	dw Function11a302
+	dw Function11a33a
+	dw Function11a207
+	dw Function11a235
+	dw Function11a357
+	dw Function11a36b
+	dw Function11a38d
+	dw Function11a3c5
+	dw Function11a3d9
+	dw Function11a3f9
+	dw Function11a41b
+	dw Function11a452
+	dw Function11a47a
+	dw Function11a488
+	dw Function11a49e
+	dw Function11a4db
+	dw Function11a4e8
+	dw Function11a4fe
+	dw Function11a466
+	dw Function11a47a
+; 119f3f
+
+Function119f3f: ; 119f3f
+	call Function11a5b9
+	jp Function11a5b0
+; 119f45
+
+Function119f45: ; 119f45
+	hlcoord 4, 2
+	ld de, String_11a661
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 119f56
+
+Function119f56: ; 119f56
+	ld a, [wcd44]
+	and a
+	jr z, .asm_119f62
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_119f62
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6aa
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 119f76
+
+Function119f76: ; 119f76
+	ld a, [wcd44]
+	and a
+	jr z, .asm_119f82
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_119f82
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a679
+	call PlaceString
+	call Function11a5f5
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 119f98
+
+Function119f98: ; 119f98
+	call Function11a536
+	ret c
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_119fef
+	call ExitMenu
+	call Function11a63c
+	xor a
+	ld [ScriptVar], a
+	call Function11a00e
+	ld a, [ScriptVar]
+	and a
+	jr z, .asm_119fd4
+	call ExitMenu
+	callba Function104061
+	callba Function115dc3
+	ld a, [wcd33]
+	ld [wcf66], a
+	ld a, $a
+	ld [wc300], a
+	scf
+	ret
+
+.asm_119fd4
+	hlcoord 4, 2
+	ld de, String_11a692
+	call PlaceString
+	ld a, $1
+	ld [wc30d], a
+	ld a, $1
+	ld [wc314], a
+	callba Function104061
+	and a
+	ret
+
+.asm_119fef
+	call ExitMenu
+	call ExitMenu
+	callba Function104061
+	ld a, [wcd45]
+	ld [wcf66], a
+	callba Function115dc3
+	ld a, $a
+	ld [wc300], a
+	scf
+	ret
+; 11a00e
+
+Function11a00e: ; 11a00e
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa4b]
+	and a
+	jr z, .asm_11a02a
+	ld a, [$aa4c]
+	call CloseSRAM
+	and a
+	ret nz
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$aa4b], a
+
+.asm_11a02a
+	call CloseSRAM
+	ld a, [BGMapPalBuffer]
+	and a
+	jr z, .asm_11a039
+	dec a
+	jr z, .asm_11a081
+	jp Function11a0ca
+
+.asm_11a039
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, $c608
+	ld de, $d800
+	ld bc, $00f6
+	call CopyBytes
+	ld a, $1
+	ld [rSVBK], a
+	call FadeToMenu
+	callba Function11765d
+	call Function11a9ce
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, $d800
+	ld de, $c608
+	ld bc, $00f6
+	call CopyBytes
+	ld a, $1
+	ld [rSVBK], a
+	callba Function115d99
+	ld c, $0
+	callba Function115e18
+	ld a, $1
+	ld [wc305], a
+	ret
+
+.asm_11a081
+	xor a
+	ld [wMenuBorderLeftCoord], a
+	ld [wMenuBorderTopCoord], a
+	ld a, $13
+	ld [wMenuBorderRightCoord], a
+	ld a, $5
+	ld [wMenuBorderBottomCoord], a
+	call BackUpTiles
+	callba Function11765d
+	callba Function117ab4
+	callba Function106462
+	callba Function106464
+	call ExitMenu
+	callba Function104061
+	callba Function115d99
+	ld c, $0
+	callba Function115e18
+	ld a, $1
+	ld [wc305], a
+	ret
+; 11a0ca
+
+Function11a0ca: ; 11a0ca
+	xor a
+	ld [wMenuBorderLeftCoord], a
+	ld [wMenuBorderTopCoord], a
+	ld a, $13
+	ld [wMenuBorderRightCoord], a
+	ld a, $11
+	ld [wMenuBorderBottomCoord], a
+	call BackUpTiles
+	callba Function11765d
+	callba Function17d3f6
+	callba Function106462
+	callba Function106464
+	call ExitMenu
+	callba Function104061
+	callba Function115d99
+	ld c, $0
+	callba Function115e18
+	ld a, $1
+	ld [wc305], a
+	ret
+; 11a113
+
+Function11a113: ; 11a113
+	call Function11a63c
+	ld c, $1
+	callba Function115e18
+	hlcoord 4, 2
+	ld de, String_11a6c8
+	call PlaceString
+	and a
+	ret
+; 11a129
+
+Function11a129: ; 11a129
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a131
+
+Function11a131: ; 11a131
+	ld hl, wcd44
+	dec [hl]
+	ret nz
+	ld a, [wcd3c]
+	inc a
+	ld [wcd3c], a
+
+Function11a13d:
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	and a
+	ret
+; 11a14b
+
+Function11a14b: ; 11a14b
+	ld hl, wcd85
+	ld a, [hl]
+	cp $f3
+	jr nz, .asm_11a155
+	and a
+	ret
+
+.asm_11a155
+	call Function11a1d6
+	ret c
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6f1
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a16d
+
+Function11a16d: ; 11a16d
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a179
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a179
+	call Function11a63c
+	call Function11a1e6
+	hlcoord 4, 2
+	ld de, wc314 + 48 + 2
+	call PlaceString
+	call Function11a5f5
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a192
+
+Function11a192: ; 11a192
+	call Function11a536
+	ret c
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a1b6
+	call ExitMenu
+	callba Function104061
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	and a
+	ret
+
+.asm_11a1b6
+	call ExitMenu
+	callba Function104061
+	ld a, [wcd45]
+	ld [wcf66], a
+	ld [wcd80], a
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	scf
+	ret
+; 11a1d6
+
+Function11a1d6: ; 11a1d6
+	ld a, [wcd85]
+	cp $50
+	jr nz, .asm_11a1e4
+	ld a, $d3
+	call Function118805
+	scf
+	ret
+
+.asm_11a1e4
+	and a
+	ret
+; 11a1e6
+
+Function11a1e6: ; 11a1e6
+	ld hl, String_11a706
+	ld de, wc314 + 48 + 2
+	call Function11a1ff
+	ld hl, wcd85
+	call Function11a1ff
+	ld hl, String_11a70b
+	call Function11a1ff
+	ld a, $50
+	ld [de], a
+	ret
+; 11a1ff
+
+Function11a1ff: ; 11a1ff
+.asm_11a1ff
+	ld a, [hli]
+	cp $50
+	ret z
+	ld [de], a
+	inc de
+	jr .asm_11a1ff
+; 11a207
+
+Function11a207: ; 11a207
+	ld hl, MenuDataHeader_11a2de
+	call LoadMenuDataHeader
+	call MenuBox
+	call MenuBoxCoord2Tile
+	call Function321c
+	hlcoord 16, 8
+	ld de, String_11a2cf
+	call PlaceString
+	hlcoord 16, 10
+	ld de, String_11a2d3
+	call PlaceString
+	hlcoord 15, 8
+	ld a, $ed
+	ld [hl], a
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a235
+
+Function11a235: ; 11a235
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_11a28f
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .asm_11a2c1
+	ld a, [hl]
+	and D_UP
+	jr nz, .asm_11a251
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .asm_11a270
+.asm_11a24c
+	call Function11a9f0
+	scf
+	ret
+
+.asm_11a251
+	xor a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a24c
+	xor a
+	ld [wcd44], a
+	hlcoord 15, 8
+	ld a, $ed
+	ld [hl], a
+	hlcoord 15, 10
+	ld a, $7f
+	ld [hl], a
+	jr .asm_11a24c
+
+.asm_11a270
+	xor a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a24c
+	inc a
+	ld [wcd44], a
+	hlcoord 15, 8
+	ld a, $7f
+	ld [hl], a
+	hlcoord 15, 10
+	ld a, $ed
+	ld [hl], a
+	jr .asm_11a24c
+
+.asm_11a28f
+	xor a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a2c4
+	call ExitMenu
+	callba Function104061
+	ld a, [wcd46]
+	cp $0
+	jr z, .asm_11a2b4
+	ld a, [wcd47]
+	jr .asm_11a2b7
+
+.asm_11a2b4
+	ld a, [wcd33]
+
+.asm_11a2b7
+	ld [wcf66], a
+	ld a, $a
+	ld [wc300], a
+	scf
+	ret
+
+.asm_11a2c1
+	call PlayClickSFX
+
+.asm_11a2c4
+	call ExitMenu
+	callba Function104061
+	and a
+	ret
+; 11a2cf
+
+String_11a2cf: ; 11a2cf
+	db "YES@"
+; 11a2d3
+
+String_11a2d3: ; 11a2d3
+	db "NO@"
+; 11a2d6
+
+MenuDataHeader_11a2d6: ; 11a2d6
+	db $40 ; flags
+	db  6, 14 ; start coords
+	db 10, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 11a2de
+
+MenuDataHeader_11a2de: ; 11a2de
+	db $40 ; flags
+	db  7, 14 ; start coords
+	db 11, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 11a2e6
+
+Function11a2e6: ; 11a2e6
+	call Function11a63c
+	ld c, $2
+	callba Function115e18
+	hlcoord 4, 2
+	ld de, String_11a71e
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a302
+
+Function11a302: ; 11a302
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a30e
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a30e
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a72a
+	call PlaceString
+	hlcoord 9, 4
+	ld de, wcd68
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	hlcoord 14, 4
+	ld de, wcd67
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a33a
+
+Function11a33a: ; 11a33a
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a346
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a346
+	call ExitMenu
+	callba Function104061
+	callba Function115dc3
+	and a
+	ret
+; 11a357
+
+Function11a357: ; 11a357
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a743
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a36b
+
+Function11a36b: ; 11a36b
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a377
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a377
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a755
+	call PlaceString
+	call Function11a5f5
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a38d
+
+Function11a38d: ; 11a38d
+	call Function11a536
+	ret c
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a3b1
+	call ExitMenu
+	callba Function104061
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	and a
+	ret
+
+.asm_11a3b1
+	call ExitMenu
+	callba Function104061
+	ld a, [wcd45]
+	ld [wcf66], a
+	ld [wcd80], a
+	scf
+	ret
+; 11a3c5
+
+Function11a3c5: ; 11a3c5
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a762
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a3d9
+
+Function11a3d9: ; 11a3d9
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a3e5
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a3e5
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a779
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a3f9
+
+Function11a3f9: ; 11a3f9
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a405
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a405
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a755
+	call PlaceString
+	call Function11a5f5
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a41b
+
+Function11a41b: ; 11a41b
+	call Function11a536
+	ret c
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a43f
+	call ExitMenu
+	callba Function104061
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	and a
+	ret
+
+.asm_11a43f
+	call ExitMenu
+	callba Function104061
+	ld a, $1c
+	ld [wcf66], a
+	ld [wcd80], a
+	scf
+	ret
+; 11a452
+
+Function11a452: ; 11a452
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a791
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a466
+
+Function11a466: ; 11a466
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a7c1
+	call PlaceString
+	ld a, $80
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a47a
+
+Function11a47a: ; 11a47a
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a486
+	dec a
+	ld [wcd44], a
+	scf
+	ret
+
+.asm_11a486
+	and a
+	ret
+; 11a488
+
+Function11a488: ; 11a488
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a7ac
+	call PlaceString
+	call Function11a5f5
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a49e
+
+Function11a49e: ; 11a49e
+	call Function11a536
+	ret c
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a4c7
+	call ExitMenu
+	callba Function104061
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	ld a, $14
+	ld [wcf66], a
+	and a
+	ret
+
+.asm_11a4c7
+	call ExitMenu
+	callba Function104061
+	ld a, [wcd46]
+	ld [wcf66], a
+	ld [wcd80], a
+	scf
+	ret
+; 11a4db
+
+Function11a4db: ; 11a4db
+	call Function11a63c
+	ld de, String_11a6db
+	hlcoord 4, 2
+	call PlaceString
+	ret
+; 11a4e8
+
+Function11a4e8: ; 11a4e8
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a7d7
+	call PlaceString
+	call Function11a5f5
+	xor a
+	ld [wcd44], a
+	jp Function11a5b0
+; 11a4fe
+
+Function11a4fe: ; 11a4fe
+	call Function11a536
+	ret c
+	call PlayClickSFX
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a522
+	call ExitMenu
+	callba Function104061
+	call Function11a63c
+	hlcoord 4, 2
+	ld de, String_11a6d2
+	call PlaceString
+	and a
+	ret
+
+.asm_11a522
+	call ExitMenu
+	callba Function104061
+	ld a, [wcd45]
+	ld [wcf66], a
+	ld [wcd80], a
+	scf
+	ret
+; 11a536
+
+Function11a536: ; 11a536
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and $1
+	jr nz, .asm_11a5a7
+	ld a, [hl]
+	and $2
+	jr nz, .asm_11a5a2
+	ld a, [hl]
+	and $40
+	jr nz, .asm_11a564
+	ld a, [hl]
+	and $80
+	jr nz, .asm_11a583
+.asm_11a54d
+	ld a, [wcd3c]
+	cp $4
+	jr z, .asm_11a562
+	call Function11a9f0
+	jr nz, .asm_11a562
+	call ExitMenu
+	callba Function104061
+
+.asm_11a562
+	scf
+	ret
+
+.asm_11a564
+	xor a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	ld a, [wcd44]
+	and a
+	jr z, .asm_11a54d
+	xor a
+	ld [wcd44], a
+	hlcoord 15, 7
+	ld a, $ed
+	ld [hl], a
+	hlcoord 15, 9
+	ld a, $7f
+	ld [hl], a
+	jr .asm_11a54d
+
+.asm_11a583
+	xor a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	ld a, [wcd44]
+	and a
+	jr nz, .asm_11a54d
+	inc a
+	ld [wcd44], a
+	hlcoord 15, 7
+	ld a, $7f
+	ld [hl], a
+	hlcoord 15, 9
+	ld a, $ed
+	ld [hl], a
+	jr .asm_11a54d
+
+.asm_11a5a2
+	ld a, $1
+	ld [wcd44], a
+
+.asm_11a5a7
+	xor a
+	ld [wcd8a], a
+	ld [wcd8b], a
+	and a
+	ret
+; 11a5b0
+
+Function11a5b0: ; 11a5b0
+	ld a, [wcd3c]
+	inc a
+	ld [wcd3c], a
+	scf
+	ret
+; 11a5b9
+
+Function11a5b9: ; 11a5b9
+	xor a
+	ld [wMenuBorderLeftCoord], a
+	ld [wMenuBorderTopCoord], a
+	ld a, $13
+	ld [wMenuBorderRightCoord], a
+	ld a, $5
+	ld [wMenuBorderBottomCoord], a
+	call BackUpTiles
+	hlcoord 0, 0, AttrMap
+	ld b, $6
+	ld c, $14
+	hlcoord 0, 0
+	ld b, $4
+	ld c, $12
+	call Function3eea
+	callba Function104061
+	call UpdateSprites
+	ld c, $0
+	callba Function115e18
+	ld a, $1
+	ld [wc305], a
+	ret
+; 11a5f5
+
+Function11a5f5: ; 11a5f5
+	ld a, $e
+	ld [wMenuBorderLeftCoord], a
+	ld a, $13
+	ld [wMenuBorderRightCoord], a
+	ld a, $6
+	ld [wMenuBorderTopCoord], a
+	ld a, $a
+	ld [wMenuBorderBottomCoord], a
+	call BackUpTiles
+	hlcoord 14, 6, AttrMap
+	ld b, $5
+	ld c, $6
+	hlcoord 14, 6
+	ld b, $3
+	ld c, $4
+	call Function3eea
+	hlcoord 16, 7
+	ld de, String_11a2cf
+	call PlaceString
+	hlcoord 16, 9
+	ld de, String_11a2d3
+	call PlaceString
+	hlcoord 15, 7
+	ld a, $ed
+	ld [hl], a
+	callba Function104061
+	ret
+; 11a63c
+
+Function11a63c: ; 11a63c
+	hlcoord 4, 1
+	ld de, String_11a7f4
+	call PlaceString
+	hlcoord 4, 2
+	ld de, String_11a7f4
+	call PlaceString
+	hlcoord 4, 3
+	ld de, String_11a7f4
+	call PlaceString
+	hlcoord 4, 4
+	ld de, String_11a7f4
+	call PlaceString
+	ret
+; 11a661
+
+String_11a661: ; 11a661
+	db   "これから モバイルセンターに"
+	next "でんわ", $1f, "かけます@"
+; 11a679
+
+String_11a679: ; 11a679
+	db   "モバイルアダプタ", $25, "じゅんびは"
+	next "できて いますか?@"
+; 11a692
+
+String_11a692: ; 11a692
+	db   "でんわ", $1f, "かけています"
+	next "しばらく おまちください@"
+; 11a6aa
+
+String_11a6aa: ; 11a6aa
+	db   "でんわをかけると つうわりょう"
+	next "せつぞくりょう", $4a, "かかります@"
+; 11a6c8
+
+String_11a6c8: ; 11a6c8
+	db   "せつぞく しました@"
+; 11a6d2
+
+String_11a6d2: ; 11a6d2
+	db   "つうしん ちゅう@"
+; 11a6db
+
+String_11a6db: ; 11a6db
+	db   "つうしん ちゅう"
+	next "セレクト エーでちゅうし@"
+; 11a6f1
+
+String_11a6f1: ; 11a6f1
+	db   "この サービスには"
+	next "つうわりょう", $25, "ほかに@"
+; 11a706
+
+String_11a706: ; 11a706
+	db   "おかね", $4a, "@"
+; 11a70b
+
+String_11a70b: ; 11a70b
+	db   "えん"
+	next "かかります よろしい ですか?@"
+; 11a71e
+
+String_11a71e: ; 11a71e
+	db   "つうしん しゅうりょう@"
+; 11a72a
+
+String_11a72a: ; 11a72a
+	db   "つないだ じかん"
+	next "  やく   ふん   びょう@"
+; 11a743
+
+String_11a743: ; 11a743
+	db   "もっていない データが"
+	next "あります!@"
+; 11a755
+
+String_11a755: ; 11a755
+	db   "データ", $1f, "よみこみますか?@"
+; 11a762
+
+String_11a762: ; 11a762
+	db   "おなじ データ", $1f, "よみこんだ"
+	next "こと", $4a, "ありますが@"
+; 11a779
+
+String_11a779: ; 11a779
+	db   "そのデータ", $24, "なくなっているか"
+	next "こわれて います@"
+; 11a791
+
+String_11a791: ; 11a791
+	db   "もっている データと"
+	next "おなじデータしか ありません!@"
+; 11a7ac
+
+String_11a7ac: ; 11a7ac
+	db   "データ", $25, "よみこみを"
+	next "ちゅうし しますか?@"
+; 11a7c1
+
+String_11a7c1: ; 11a7c1
+	db   "あたらしい ニュースは"
+	next "ありません でした@"
+; 11a7d7
+
+String_11a7d7: ; 11a7d7
+	db   "あたらしいニュース", $4a, "あります"
+	next "ニュース", $1f, "よみこみますか?@"
+; 11a7f4
+
+String_11a7f4: ; 11a7f4
+	db   "               @"
+; 11a804
+
+MenuDataHeader_11a804: ; 11a804
+	db $40 ; flags
+	db  0,  0 ; start coords
+	db  5, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 11a80c
+
+Function11a80c: ; 11a80c
+	ld de, hDivisor
+	ld bc, hDividend
+	ld hl, Unknown_11a89a
+	call Function11a88c
+	ld bc, hQuotient
+	ld hl, Unknown_11a8ba
+	call Function11a88c
+	ld bc, $ffb5
+	ld hl, Unknown_11a8da
+	call Function11a88c
+	xor a
+	ld b, a
+	ld a, [hDivisor]
+	and $f
+	ld e, a
+	ld a, [$ffb9]
+	and $f
+	call Function11a884
+	ld e, a
+	ld a, [$ffbb]
+	and $f
+	call Function11a884
+	ld [wcd62], a
+	ld e, b
+	xor a
+	ld b, a
+	ld a, [hDivisor]
+	and $f0
+	swap a
+	call Function11a884
+	ld e, a
+	ld a, [$ffb9]
+	and $f0
+	swap a
+	call Function11a884
+	ld e, a
+	ld a, [$ffbb]
+	and $f0
+	swap a
+	call Function11a884
+	ld [wcd63], a
+	ld e, b
+	xor a
+	ld b, a
+	ld a, [hMathBuffer]
+	and $f
+	call Function11a884
+	ld e, a
+	ld a, [$ffba]
+	and $f
+	call Function11a884
+	ld e, a
+	ld a, [$ffbc]
+	and $f
+	call Function11a884
+	ld [wcd64], a
+	ret
+; 11a884
+
+Function11a884: ; 11a884
+	add e
+	cp $a
+	ret c
+	sub $a
+	inc b
+	ret
+; 11a88c
+
+Function11a88c: ; 11a88c
+	ld a, [bc]
+	sla a
+	ld c, a
+	xor a
+	ld b, a
+	add hl, bc
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [hl]
+	ld [de], a
+	inc de
+	ret
+; 11a89a
+
+Unknown_11a89a: ; 11a89a
+x = 0
+rept 16
+	bcd x % 100, x / 100
+x = x + 1
+endr
+
+Unknown_11a8ba: ; 11a8ba
+x = 0
+rept 16
+	bcd x % 100, x / 100
+x = x + 16
+endr
+
+Unknown_11a8da: ; 11a8da
+x = 0
+rept 16
+	bcd x % 100, x / 100
+x = x + 256
+endr
+; 11a8fa
+
+Function11a8fa: ; 11a8fa
+	ld a, [wc314 + 6]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11a909
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11a909
+
+Jumptable_11a909: ; 11a909
+	dw Function11a970
+	dw Function11a90f
+	dw Function11a971
+; 11a90f
+
+Function11a90f: ; 11a90f
+	ld a, $1
+	ld [rSVBK], a
+	call SpeechTextBox
+	ld a, $50
+	ld hl, wc314 + 12
+	ld bc, $008c
+	call ByteFill
+	ld a, [wc314 + 7]
+	ld l, a
+	ld a, [wc314 + 8]
+	ld h, a
+	ld de, wc314 + 12
+.asm_11a92c
+	ld a, [hli]
+	cp $57
+	jr z, .asm_11a94f
+	cp $0
+	jr z, .asm_11a92c
+	cp $50
+	jr z, .asm_11a92c
+	cp $1
+	jr z, .asm_11a941
+	ld [de], a
+	inc de
+	jr .asm_11a92c
+
+.asm_11a941
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+.asm_11a945
+	ld a, [bc]
+	inc bc
+	cp $50
+	jr z, .asm_11a92c
+	ld [de], a
+	inc de
+	jr .asm_11a945
+
+.asm_11a94f
+	xor a
+	ld [wc314 + 11], a
+	ld a, $20
+	ld [wc314 + 7], a
+	ld a, $c3
+	ld [wc314 + 8], a
+	hlcoord 1, 14
+	ld a, l
+	ld [wc314 + 9], a
+	ld a, h
+	ld [wc314 + 10], a
+	ld hl, wc314 + 6
+	inc [hl]
+	ld a, $3
+	ld [rSVBK], a
+
+Function11a970:
+	ret
+; 11a971
+
+Function11a971: ; 11a971
+	ld hl, wc314 + 11
+	ld a, [hJoyDown]
+	and a
+	jr nz, .asm_11a97f
+	ld a, [hl]
+	and a
+	jr z, .asm_11a97f
+	dec [hl]
+	ret
+
+.asm_11a97f
+	ld a, [Options]
+	and $7
+	ld [hl], a
+	ld hl, wcd8d
+	ld a, [wc314 + 7]
+	ld e, a
+	ld a, [wc314 + 8]
+	ld d, a
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld a, e
+	ld [wc314 + 7], a
+	ld a, d
+	ld [wc314 + 8], a
+	ld a, $50
+	ld [hl], a
+	ld a, [wc314 + 9]
+	ld l, a
+	ld a, [wc314 + 10]
+	ld h, a
+	ld de, wcd8d
+	call PlaceString
+	ld a, c
+	ld [wc314 + 9], a
+	ld a, b
+	ld [wc314 + 10], a
+	ld a, [wcd8d]
+	cp $50
+	jr nz, .asm_11a9bf
+	xor a
+	ld [wc314 + 6], a
+
+.asm_11a9bf
+	ret
+; 11a9c0
+
+Function11a9c0: ; 11a9c0
+	ld a, l
+	ld [wc314 + 7], a
+	ld a, h
+	ld [wc314 + 8], a
+	ld a, $1
+	ld [wc314 + 6], a
+	ret
+; 11a9ce
+
+Function11a9ce: ; 11a9ce
+	call ClearBGPalettes
+	call Function2bae
+	call Call_ExitMenu
+	callba Function106462
+	callba Function106464
+	call Functiond90
+	callba Function2b5c
+	call UpdateSprites
+	ret
+; 11a9f0
+
+Function11a9f0: ; 11a9f0
+	ld a, $1
+	and a
+	ret
+; 11a9f4
+
+Function11a9f4: ; 11a9f4
+	ld a, [wcd8a]
+	ld l, a
+	ld a, [wcd8b]
+	ld h, a
+	inc hl
+	ld a, l
+	ld [wcd8a], a
+	ld a, h
+	ld [wcd8b], a
+	ld de, $d5d0
+	add hl, de
+	bit 7, h
+	ret nz
+	ld a, $d6
+	call Function118805
+	and a
+	ret
+; 11aa13
+
+UnknownText_0x11aa13: ; 0x11aa13
+	text "SAVE FILE will be"
+	line "sent."
+	done
+; 0x11aa2c
+
+UnknownText_0x11aa2c: ; 0x11aa2c
+	text "Sent SAVE FILE."
+	line "Reading NEWS…"
+	done
+; 0x11aa4b
+
+UnknownText_0x11aa4b: ; 0x11aa4b
+	text "Reading NEWS…"
+	done
+; 0x11aa5a
+
+UnknownText_0x11aa5a: ; 0x11aa5a
+	text "Received NEWS!"
+	done
+; 0x11aa6a
+
+UnknownText_0x11aa6a: ; 0x11aa6a
+	text "Quit reading NEWS?"
+	done
+; 0x11aa7e
+
+UnknownText_0x11aa7e: ; 0x11aa7e
+	text "Canceled sending"
+	line "SAVE FILE."
+	done
+; 0x11aa9b
+
+UnknownText_0x11aa9b: ; 0x11aa9b
+	text "ODD EGG"
+	line "was received!"
+	done
+; 0x11aab2
+
+UnknownText_0x11aab2: ; 0x11aab2
+	text "Registering your"
+	line "record…"
+	done
+; 0x11aacc
+
+UnknownText_0x11aacc: ; 0x11aacc
+	text "One visit per day"
+	line "per BATTLE ROOM!"
+	done
+; 0x11aaf0
+
+UnknownText_0x11aaf0: ; 0x11aaf0
+	text "A party #MON"
+	line "tops this level."
+	done
+; 0x11ab0f
+
+UnknownText_0x11ab0f: ; 0x11ab0f
+	text_from_ram wcd49
+	text " may go"
+	line "only to BATTLE"
+
+	para "ROOMS that are"
+	line "Lv.70 or higher."
+	done
+; 0x11ab4a
+
+UnknownText_0x11ab4a: ; 0x11ab4a
+	text "Cancel your BATTLE"
+	line "ROOM challenge?"
+	done
+; 0x11ab6e
+
+UnknownText_0x11ab6e: ; 0x11ab6e
+	text "Exit GYM LEADER"
+	line "HONOR ROLL?"
+	done
+; 0x11ab8b
+
+UnknownText_0x11ab8b: ; 0x11ab8b
+	text "Linking with the"
+	line "CENTER…"
+	done
+; 0x11aba5
+
+Text_WhatLevelDoYouWantToChallenge: ; 0x11aba5
+	text "What level do you"
+	line "want to challenge?"
+	done
+; 0x11abcb
+
+Text_CheckBattleRoomListByMaxLevel: ; 0x11abcb
+	text "Check BATTLE ROOM"
+	line "list by max level?"
+	done
+; 0x11abf1
+
+UnknownText_0x11abf1: ; 0x11abf1
+	text "Enter which"
+	line "BATTLE ROOM?"
+	done
+; 0x11ac0b
+
+UnknownText_0x11ac0b: ; 0x11ac0b
+	text "Which BATTLE ROOM?"
+	done
+; 0x11ac1f
+
+UnknownText_0x11ac1f: ; 0x11ac1f
+	text_from_ram StringBuffer3
+	text "'s ROOM"
+	line "@"
+	text_from_ram StringBuffer4
+	text "?"
+	cont "Please wait…"
+	done
+; 0x11ac3e
+
+Function11ac3e: ; 11ac3e
+	call SpeechTextBox
+	call FadeToMenu
+	callab InefficientlyClear121BytesAtwc300
+	call Function11ac51
+	call Function2b3c
+	ret
+; 11ac51
+
+Function11ac51: ; 11ac51
+	xor a
+	ld [hBGMapMode], a
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [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
+	ld [wcd49], a
+	ld [wcd4a], a
+	ld [wcd4c], a
+	ld [wcd4d], a
+	ld [wcd4e], a
+	call Function11ad1b
+	call DelayFrame
+.asm_11ac82
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_11aca8
+	call Function11b314
+	call Function11acb7
+	call Function11ad6e
+	ld a, $78
+	ld [wc3b5], a
+	callba Function8cf7a
+	callba Function104061
+	jr .asm_11ac82
+
+.asm_11aca8
+	call ClearSprites
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [Options], a
+	ret
+; 11acb7
+
+Function11acb7: ; 11acb7
+	ld hl, Unknown_11ba44
+	ld a, [wcd49]
+	ld c, a
+	ld b, $0
+	sla c
+	rl b
+	sla c
+	rl b
+	sla c
+	rl b
+	add hl, bc
+	decoord 6, 6
+	ld a, [hli]
+	ld [de], a
+	decoord 0, 7
+	ld bc, $0007
+	call CopyBytes
+	ld a, [wcd49]
+	inc a
+	ld [wcd49], a
+	ld a, [hl]
+	cp $ff
+	jr nz, .asm_11aceb
+	xor a
+	ld [wcd49], a
+
+.asm_11aceb
+	ld hl, Unknown_11bb7d
+	ld a, [wcd4a]
+	ld c, a
+	ld b, $0
+	sla c
+	rl b
+	sla c
+	rl b
+	sla c
+	rl b
+	add hl, bc
+	decoord 3, 9
+	ld bc, $0007
+	call CopyBytes
+	ld a, [wcd4a]
+	inc a
+	ld [wcd4a], a
+	inc hl
+	ld a, [hl]
+	cp $ff
+	ret nz
+	xor a
+	ld [wcd4a], a
+	ret
+; 11ad1b
+
+Function11ad1b: ; 11ad1b
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearTileMap
+	callba Function17c000
+	ld a, [MenuSelection2]
+	ld [wcd82], a
+	dec a
+	ld [hObjectStructIndexBuffer], a
+	ld a, $10
+	ld [wc3b7], a
+	ld hl, Function8e83f
+	ld a, BANK(Function8e83f)
+	ld e, $4
+	rst FarCall
+	ld hl, Function8e83f
+	ld a, BANK(Function8e83f)
+	ld e, $5
+	rst FarCall
+	ld hl, $c6d0
+	ld bc, $0115
+	xor a
+	call ByteFill
+	xor a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	ld [wcd30], a
+	ld a, $2
+	ld [wc7d4], a
+	callba Function40bdc
+	ret
+; 11ad6e
+
+Function11ad6e: ; 11ad6e
+	ld a, [wJumptableIndex]
+	ld hl, Jumptable_11ad78
+	call Function11b239
+	jp [hl]
+; 11ad78
+
+Jumptable_11ad78: ; 11ad78
+	dw Function11b082
+	dw Function11b0ff
+	dw Function11ad95
+	dw Function11adc4
+	dw Function11ae4e
+	dw Function11ae98
+	dw Function11ad8f
+	dw Function11af04
+	dw Function11af4e
+; 11ad8a
+
+Function11ad8a: ; 11ad8a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; 11ad8f
+
+Function11ad8f: ; 11ad8f
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+; 11ad95
+
+Function11ad95: ; 11ad95
+	ld hl, MenuDataHeader_11ae38
+	call LoadMenuDataHeader
+	call MenuBox
+	hlcoord 12, 12
+	ld de, String_11ae40
+	call PlaceString
+	hlcoord 10, 10, AttrMap
+	ld bc, $0808
+	call Function11afd6
+	callba Function104061
+	call Function11ad8a
+	ld a, $1
+	ld [MenuSelection2], a
+	ld hl, Unknown_11afcc
+	call Function11afb7
+
+Function11adc4:
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and a
+	ret z
+	ld a, [hl]
+	and $40
+	jr nz, .asm_11ade6
+	ld a, [hl]
+	and $80
+	jr nz, .asm_11aded
+	ld a, [hl]
+	and $1
+	jr nz, .asm_11ae06
+	ld a, [hl]
+	and $2
+	ret z
+	call PlayClickSFX
+	xor a
+	ld [wJumptableIndex], a
+	jr .asm_11ae2e
+
+.asm_11ade6
+	ld a, [MenuSelection2]
+	dec a
+	ret z
+	jr .asm_11adf4
+
+.asm_11aded
+	ld a, [MenuSelection2]
+	inc a
+	cp $4
+	ret z
+
+.asm_11adf4
+	push af
+	ld hl, Unknown_11afcc
+	call Function11afbb
+	pop af
+	ld [MenuSelection2], a
+	ld hl, Unknown_11afcc
+	call Function11afb7
+	ret
+
+.asm_11ae06
+	call PlayClickSFX
+	ld a, [MenuSelection2]
+	dec a
+	ld hl, wcd30
+	ld [hl], a
+	and a
+	jr z, .asm_11ae28
+	hlcoord 2, 14
+	ld a, [MenuSelection2]
+	cp $2
+	jr z, .asm_11ae23
+	call Function11b272
+	jr .asm_11ae2b
+
+.asm_11ae23
+	call Function11b267
+	jr .asm_11ae2b
+
+.asm_11ae28
+	ld a, $3
+	ld [hl], a
+
+.asm_11ae2b
+	call Function11ad8a
+
+.asm_11ae2e
+	call ExitMenu
+	callba Function104061
+	ret
+; 11ae38
+
+MenuDataHeader_11ae38: ; 11ae38
+	db $40 ; flags
+	db 10, 10 ; start coords
+	db 17, 17 ; end coords
+	dw NULL
+	db 0 ; default option
+; 11ae40
+
+String_11ae40: ; 11ae40
+	db   "どちらでも"
+	next "♂ォス"
+	next "♀メス"
+	db   "@"
+; 11ae4e
+
+Function11ae4e: ; 11ae4e
+	ld hl, MenuDataHeader_11afe8
+	call LoadMenuDataHeader
+	call MenuBox
+	hlcoord 10, 14
+	ld de, String_11aff0
+	call PlaceString
+	ld hl, MenuDataHeader_11b013
+	call LoadMenuDataHeader
+	call MenuBox
+	hlcoord 16, 8
+	ld de, String_11b01b
+	call PlaceString
+	hlcoord 14, 7, AttrMap
+	lb bc, 5, 6
+	call Function11afd6
+	hlcoord 9, 12, AttrMap
+	lb bc, 6, 11
+	call Function11afd6
+	callba Function104061
+	call Function11ad8a
+	ld a, $1
+	ld [MenuSelection2], a
+	ld hl, Unknown_11afd2
+	call Function11afb7
+
+Function11ae98:
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and a
+	ret z
+	ld a, [hl]
+	and D_UP
+	jr nz, .asm_11aec1
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .asm_11aec8
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_11aee1
+	ld a, [hl]
+	and B_BUTTON
+	ret z
+	call PlayClickSFX
+.asm_11aeb4
+	hlcoord 2, 14
+	ld a, $7f
+	ld [hl], a
+	ld a, $1
+	ld [wJumptableIndex], a
+	jr .asm_11aef7
+
+.asm_11aec1
+	ld a, [MenuSelection2]
+	dec a
+	ret z
+	jr .asm_11aecf
+
+.asm_11aec8
+	ld a, [MenuSelection2]
+	inc a
+	cp $3
+	ret z
+
+.asm_11aecf
+	push af
+	ld hl, Unknown_11afd2
+	call Function11afbb
+	pop af
+	ld [MenuSelection2], a
+	ld hl, Unknown_11afd2
+	call Function11afb7
+	ret
+
+.asm_11aee1
+	call PlayClickSFX
+	ld a, [MenuSelection2]
+	cp $2
+	jr z, .asm_11aeb4
+	ld a, [wcd4b]
+	ld [ScriptVar], a
+	call Function11b022
+	call Function11ad8a
+
+.asm_11aef7
+	call ExitMenu
+	call ExitMenu
+	callba Function104061
+	ret
+; 11af04
+
+Function11af04: ; 11af04
+	ld hl, MenuDataHeader_11afe8
+	call LoadMenuDataHeader
+	call MenuBox
+	hlcoord 10, 14
+	ld de, String_11b003
+	call PlaceString
+	ld hl, MenuDataHeader_11b013
+	call LoadMenuDataHeader
+	call MenuBox
+	hlcoord 16, 8
+	ld de, String_11b01b
+	call PlaceString
+	hlcoord 14, 7, AttrMap
+	lb bc, 5, 6
+	call Function11afd6
+	hlcoord 9, 12, AttrMap
+	lb bc, 6, 11
+	call Function11afd6
+	callba Function104061
+	call Function11ad8a
+	ld a, $2
+	ld [MenuSelection2], a
+	ld hl, Unknown_11afd2
+	call Function11afb7
+
+Function11af4e:
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and a
+	ret z
+	ld a, [hl]
+	and D_UP
+	jr nz, .asm_11af77
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .asm_11af7e
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .asm_11af97
+	ld a, [hl]
+	and B_BUTTON
+	ret z
+	call PlayClickSFX
+.asm_11af6a
+	hlcoord 2, 14
+	ld a, $7f
+	ld [hl], a
+	ld a, $1
+	ld [wJumptableIndex], a
+	jr .asm_11afaa
+
+.asm_11af77
+	ld a, [MenuSelection2]
+	dec a
+	ret z
+	jr .asm_11af85
+
+.asm_11af7e
+	ld a, [MenuSelection2]
+	inc a
+	cp $3
+	ret z
+
+.asm_11af85
+	push af
+	ld hl, Unknown_11afd2
+	call Function11afbb
+	pop af
+	ld [MenuSelection2], a
+	ld hl, Unknown_11afd2
+	call Function11afb7
+	ret
+
+.asm_11af97
+	call PlayClickSFX
+	ld a, [MenuSelection2]
+	cp $2
+	jr z, .asm_11af6a
+	ld a, $6
+	ld [wJumptableIndex], a
+	xor a
+	ld [ScriptVar], a
+
+.asm_11afaa
+	call ExitMenu
+	call ExitMenu
+	callba Function104061
+	ret
+; 11afb7
+
+Function11afb7: ; 11afb7
+	ld e, $ed
+	jr asm_11afbd
+
+Function11afbb:
+	ld e, $7f
+
+asm_11afbd:
+	ld a, [MenuSelection2]
+	dec a
+	ld c, a
+	ld b, 0
+rept 2
+	add hl, bc
+endr
+	ld a, e
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld [de], a
+	ret
+; 11afcc
+
+Unknown_11afcc:
+	dwcoord 11, 12
+	dwcoord 11, 14
+	dwcoord 11, 16
+
+Unknown_11afd2:
+	dwcoord 15,  8
+	dwcoord 15, 10
+; 11afd6
+
+Function11afd6: ; 11afd6
+	ld de, $0014
+	ld a, $3
+.asm_11afdb
+	push bc
+	push hl
+.asm_11afdd
+	ld [hli], a
+	dec c
+	jr nz, .asm_11afdd
+	pop hl
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_11afdb
+	ret
+; 11afe8
+
+MenuDataHeader_11afe8: ; 11afe8
+	db $40 ; flags
+	db 12,  9 ; start coords
+	db 17, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 11aff0
+
+String_11aff0: ; 11aff0
+	db   "この じょうけんで"
+	next "よろしいですか?@"
+; 11b003
+
+String_11b003: ; 11b003
+	db   "こうかんを"
+	next "ちゅうししますか?@"
+; 11b013
+
+MenuDataHeader_11b013: ; 11b013
+	db $40 ; flags
+	db  7, 14 ; start coords
+	db 11, 19 ; end coords
+	dw NULL
+	db 1 ; default option
+; 11b01b
+
+String_11b01b:
+	db   "はい"
+	next "いいえ@"
+; 11b022
+
+Function11b022: ; 11b022
+	ld a, [wcd2e]
+	and a
+	jr z, .asm_11b02e
+	ld hl, StringBuffer3
+	call Function11b03d
+
+.asm_11b02e
+	ld a, [wcd30]
+	and a
+	ret z
+	cp $3
+	ret z
+	ld hl, StringBuffer4
+	call Function11b03d
+	ret
+; 11b03d
+
+Function11b03d: ; 11b03d
+	push hl
+	push af
+	ld c, $1
+.asm_11b041
+	ld a, [hli]
+	cp $ef
+	jr z, .asm_11b051
+	cp $f5
+	jr z, .asm_11b051
+	cp $50
+	jr z, .asm_11b055
+	inc c
+	jr .asm_11b041
+
+.asm_11b051
+	dec hl
+	ld a, $50
+	ld [hli], a
+
+.asm_11b055
+	dec hl
+	push hl
+	ld e, $4
+	ld d, $0
+	add hl, de
+	ld e, l
+	ld d, h
+	pop hl
+.asm_11b05f
+	ld a, [hld]
+	ld [de], a
+	dec de
+	dec c
+	jr nz, .asm_11b05f
+	pop af
+	pop de
+	cp $1
+	jr nz, .asm_11b070
+	ld hl, String_11b07a
+	jr .asm_11b073
+
+.asm_11b070
+	ld hl, String_11b07e
+
+.asm_11b073
+	ld bc, 4
+	call CopyBytes
+	ret
+; 11b07a
+
+String_11b07a: db "ォスの "
+String_11b07e: db "メスの "
+
+Function11b082: ; 11b082
+	call Function11b242
+	ld a, $7
+	ld [wc7d3], a
+	call Function11b099
+	call Function11b295
+	call Function11b275
+	call SetPalettes
+	jp Function11ad8a
+; 11b099
+
+Function11b099: ; 11b099
+	ld c, $6
+	hlcoord 11, 1
+	ld a, [wc7d3]
+	add a
+	ld b, a
+	xor a
+	call Function11b236
+	ld a, [wc7d0]
+	ld e, a
+	ld d, $0
+	ld hl, $c6d0
+	add hl, de
+	ld e, l
+	ld d, h
+	hlcoord 11, 2
+	ld a, [wc7d3]
+.asm_11b0b9
+	push af
+	ld a, [de]
+	ld [wd265], a
+	push de
+	push hl
+	call Function11b0cf
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop de
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_11b0b9
+	ret
+; 11b0cf
+
+Function11b0cf: ; 11b0cf
+	and a
+	ret z
+	call Function11b0ec
+	ret c
+	call Function11b0e1
+	push hl
+	call GetPokemonName
+	pop hl
+	call PlaceString
+	ret
+; 11b0e1
+
+Function11b0e1: ; 11b0e1
+	call Function11b21e
+	jr nz, .asm_11b0e8
+	inc hl
+	ret
+
+.asm_11b0e8
+	ld a, $1
+	ld [hli], a
+	ret
+; 11b0ec
+
+Function11b0ec: ; 11b0ec
+	call Function11b22a
+	ret nz
+	inc hl
+	ld de, String_11b0f9
+	call PlaceString
+	scf
+	ret
+; 11b0f9
+
+String_11b0f9: ; 11b0f9
+	db "ーーーーー@"
+; 11b0ff
+
+Function11b0ff: ; 11b0ff
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and $2
+	jr nz, .asm_11b141
+	ld a, [hl]
+	and $1
+	jr nz, .asm_11b131
+	call Function11b175
+	jr nc, .asm_11b125
+	ld a, [wcd4c]
+	inc a
+	and $3
+	ld [wcd4c], a
+	xor a
+	ld [hBGMapMode], a
+	call Function11b099
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.asm_11b125
+	ld a, [wcd4c]
+	and a
+	ret z
+	inc a
+	and $3
+	ld [wcd4c], a
+	ret
+
+.asm_11b131
+	call Function11b20b
+	call Function11b22a
+	jr z, .asm_11b13d
+	ld a, $1
+	jr .asm_11b148
+
+.asm_11b13d
+	ld a, $2
+	jr .asm_11b148
+
+.asm_11b141
+	ld hl, wJumptableIndex
+	ld a, $7
+	ld [hl], a
+	ret
+
+.asm_11b148
+	call PlayClickSFX
+	ld [wcd4b], a
+	and a
+	jr z, .asm_11b16c
+	ld a, [wcf65]
+	cp $0
+	jr z, .asm_11b163
+	cp $fe
+	jr z, .asm_11b167
+	cp $ff
+	jr z, .asm_11b16b
+	jp Function11ad8a
+
+.asm_11b163
+	ld a, $1
+	jr .asm_11b16c
+
+.asm_11b167
+	ld a, $2
+	jr .asm_11b16c
+
+.asm_11b16b
+	xor a
+
+.asm_11b16c
+	ld [wcd30], a
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; 11b175
+
+Function11b175: ; 11b175
+	ld a, [wc7d3]
+	ld d, a
+	ld a, [wc7d2]
+	ld e, a
+	ld hl, hJoyLast
+	ld a, [hl]
+	and $40
+	jr nz, .asm_11b19a
+	ld a, [hl]
+	and $80
+	jr nz, .asm_11b1ae
+	ld a, d
+	cp e
+	jr nc, .asm_11b1ed
+	ld a, [hl]
+	and $20
+	jr nz, .asm_11b1c6
+	ld a, [hl]
+	and $10
+	jr nz, .asm_11b1d8
+	jr .asm_11b1ed
+
+.asm_11b19a
+	ld hl, wc7d1
+	ld a, [hl]
+	and a
+	jr z, .asm_11b1a4
+	dec [hl]
+	jr .asm_11b1ef
+
+.asm_11b1a4
+	ld hl, wc7d0
+	ld a, [hl]
+	and a
+	jr z, .asm_11b1ed
+	dec [hl]
+	jr .asm_11b1ef
+
+.asm_11b1ae
+	ld hl, wc7d1
+	ld a, [hl]
+	inc a
+	cp e
+	jr nc, .asm_11b1ed
+	cp d
+	jr nc, .asm_11b1bc
+	inc [hl]
+	jr .asm_11b1ef
+
+.asm_11b1bc
+	ld hl, wc7d0
+	add [hl]
+	cp e
+	jr nc, .asm_11b1ed
+	inc [hl]
+	jr .asm_11b1ef
+
+.asm_11b1c6
+	ld hl, wc7d0
+	ld a, [hl]
+	and a
+	jr z, .asm_11b1ed
+	cp d
+	jr nc, .asm_11b1d4
+	xor a
+	ld [hl], a
+	jr .asm_11b1ef
+
+.asm_11b1d4
+	sub d
+	ld [hl], a
+	jr .asm_11b1ef
+
+.asm_11b1d8
+	ld hl, wc7d0
+	ld a, d
+	add a
+	add [hl]
+	jr c, .asm_11b1e3
+	cp e
+	jr c, .asm_11b1e8
+
+.asm_11b1e3
+	ld a, e
+	sub d
+	ld [hl], a
+	jr .asm_11b1ef
+
+.asm_11b1e8
+	ld a, [hl]
+	add d
+	ld [hl], a
+	jr .asm_11b1ef
+
+.asm_11b1ed
+	and a
+	ret
+
+.asm_11b1ef
+	call Function11b295
+	call Function11b275
+	scf
+	ret
+; 11b1f7
+
+Function11b1f7: ; 11b1f7
+	hlcoord 0, 0
+	ld a, $32
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call ByteFill
+	ret
+; 11b203
+
+Function11b203: ; 11b203
+.asm_11b203
+	ld a, [de]
+	cp $ff
+	ret z
+	inc de
+	ld [hli], a
+	jr .asm_11b203
+; 11b20b
+
+Function11b20b: ; 11b20b
+	ld a, [wc7d1]
+	ld hl, wc7d0
+	add [hl]
+	ld e, a
+	ld d, $0
+	ld hl, $c6d0
+	add hl, de
+	ld a, [hl]
+	ld [wd265], a
+	ret
+; 11b21e
+
+Function11b21e: ; 11b21e
+	push de
+	push hl
+	ld a, [wd265]
+	dec a
+	call CheckCaughtMon
+	pop hl
+	pop de
+	ret
+; 11b22a
+
+Function11b22a: ; 11b22a
+	push de
+	push hl
+	ld a, [wd265]
+	dec a
+	call CheckSeenMon
+	pop hl
+	pop de
+	ret
+; 11b236
+
+Function11b236: ; 11b236
+	jp FillBoxWithByte
+; 11b239
+
+Function11b239: ; 11b239
+	ld e, a
+	ld d, 0
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ret
+; 11b242
+
+Function11b242: ; 11b242
+	hlcoord 3, 4
+	ld de, StringBuffer3
+	call PlaceString
+	xor a
+	ld [MonType], a
+	callba GetGender
+	hlcoord 1, 4
+	ld a, [CurPartySpecies]
+	ld bc, wcd2f
+	ld [bc], a
+	dec bc
+	jr c, asm_11b26a
+	jr z, asm_11b26f
+	ld a, $1
+	ld [bc], a
+
+Function11b267:
+	ld [hl], $ef
+	ret
+
+asm_11b26a
+	xor a
+	ld [bc], a
+	ld [hl], $7f
+	ret
+
+asm_11b26f
+	ld a, $2
+	ld [bc], a
+
+Function11b272:
+	ld [hl], $f5
+	ret
+; 11b275
+
+Function11b275: ; 11b275
+	call Function11b279
+	ret
+; 11b279
+
+Function11b279: ; 11b279
+	ld a, [wd265]
+	ld [CurSpecies], a
+	call Function11b22a
+	jr z, .asm_11b28f
+	call GetBaseData
+	ld a, [BaseGender]
+	ld [wcf65], a
+	jr .asm_11b294
+
+.asm_11b28f
+	ld a, $ff
+	ld [wcf65], a
+
+.asm_11b294
+	ret
+; 11b295
+
+Function11b295: ; 11b295
+	hlcoord 4, 13
+	ld de, String_11b308
+	call PlaceString
+	hlcoord 4, 14
+	ld de, String_11b308
+	call PlaceString
+	call Function11b20b
+	call Function11b22a
+	jr z, .asm_11b2d1
+	ld a, [$c608]
+	ld c, a
+	ld a, [$c608 + 1]
+	ld b, a
+	ld hl, $0007
+	add hl, bc
+	xor a
+	ld [hl], a
+	ld hl, $0003
+	add hl, bc
+	ld e, [hl]
+	callba Function8e9bc
+	hlcoord 4, 14
+	push hl
+	call GetPokemonName
+	jr .asm_11b2e7
+
+.asm_11b2d1
+	ld a, [$c608]
+	ld c, a
+	ld a, [$c608 + 1]
+	ld b, a
+	ld hl, $0007
+	add hl, bc
+	ld a, $50
+	ld [hl], a
+	hlcoord 4, 13
+	push hl
+	ld de, String_11b30e
+
+.asm_11b2e7
+	ld a, $6
+	ld bc, StringBuffer4
+.asm_11b2ec
+	push af
+	ld a, [de]
+	ld [bc], a
+	inc de
+	inc bc
+	pop af
+	dec a
+	and a
+	jr nz, .asm_11b2ec
+	pop hl
+	ld de, StringBuffer4
+	call PlaceString
+	ret
+; 11b2fe
+
+String_11b2fe: ; 11b2fe
+	db "あげる#@"
+; 11b303
+
+String_11b303: ; 11b303
+	db "ほしい#@"
+; 11b308
+
+String_11b308: ; 11b308
+	db "     @"
+; 11b30e
+
+String_11b30e: ; 11b30e
+	db "みはっけん@"
+; 11b314
+
+Function11b314: ; 11b314
+	call Function11b31b
+	call Function11b3d9
+	ret
+; 11b31b
+
+Function11b31b: ; 11b31b
+	ld hl, Unknown_11b350
+	ld a, [wJumptableIndex]
+	cp $2
+	jr c, .asm_11b349
+	ld a, [wc7d1]
+	cp $4
+	jr nc, .asm_11b344
+	cp $3
+	jr c, .asm_11b349
+	ld a, [wJumptableIndex]
+	cp $2
+	jr z, .asm_11b349
+	cp $3
+	jr z, .asm_11b349
+	cp $6
+	jr z, .asm_11b349
+
+	ld bc, Unknown_11b37b
+	jr .asm_11b34c
+
+.asm_11b344
+	ld bc, Unknown_11b389
+	jr .asm_11b34c
+
+.asm_11b349
+	ld bc, Unknown_11b36d
+
+.asm_11b34c
+	call Function11b397
+	ret
+; 11b350
+
+Unknown_11b350:
+	db $1a, $5e, $1a, $66, $1a, $6e, $1a, $76, $1a, $7e, $1a, $86, $1a, $8e
+	db $22, $5e, $22, $66, $22, $6e, $22, $76, $22, $7e, $22, $86, $22, $8e
+	db $ff
+
+Unknown_11b36d:
+	db $30, $31, $31, $31, $31, $31, $32, $40, $41, $41, $41, $41, $41, $42
+Unknown_11b37b:
+	db $30, $31, $31, $39, $39, $39, $39, $40, $41, $41, $39, $39, $39, $39
+Unknown_11b389:
+	db $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39, $39
+
+Function11b397: ; 11b397
+	ld de, Sprites
+.asm_11b39a
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, [wc7d1]
+	and $7
+	swap a
+	add [hl]
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	ld a, [bc]
+	inc bc
+	ld [de], a
+	inc de
+	ld a, $5
+	ld [de], a
+	inc de
+	jr .asm_11b39a
+; 11b3b6
+
+Function11b3b6: ; 11b3b6
+.asm_11b3b6
+	ld a, [hl]
+	cp $ff
+	ret z
+	ld a, [wcd4d]
+	and $7
+	swap a
+	add [hl]
+	inc hl
+	ld [de], a
+	inc de
+	ld a, [hli]
+	ld [de], a
+	inc de
+	push hl
+	ld l, c
+	ld h, b
+	ld a, [wcd4e]
+	add [hl]
+	inc bc
+	ld [de], a
+	inc de
+	pop hl
+	ld a, $5
+	ld [de], a
+	inc de
+	jr .asm_11b3b6
+; 11b3d9
+
+Function11b3d9: ; 11b3d9
+	ld de, Sprites + $70
+	push de
+	ld a, [wc7d2]
+	dec a
+	ld e, a
+	ld a, [wc7d1]
+	ld hl, wc7d0
+	add [hl]
+	cp e
+	jr z, .asm_11b40d
+	ld hl, 0
+	ld bc, $0070
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ld b, $0
+	ld a, d
+	or e
+	jr z, .asm_11b40f
+	ld a, [wc7d2]
+	ld c, a
+.asm_11b401
+	ld a, e
+	sub c
+	ld e, a
+	ld a, d
+	sbc $0
+	ld d, a
+	jr c, .asm_11b40f
+	inc b
+	jr .asm_11b401
+
+.asm_11b40d
+	ld b, $70
+
+.asm_11b40f
+	ld a, $15
+	add b
+	pop hl
+	ld [hli], a
+	cp $41
+	jr c, .asm_11b42b
+	ld a, [wJumptableIndex]
+	cp $4
+	jr z, .asm_11b43b
+	cp $5
+	jr z, .asm_11b43b
+	cp $7
+	jr z, .asm_11b43b
+	cp $8
+	jr z, .asm_11b43b
+
+.asm_11b42b
+	ld a, $9b
+	ld [hli], a
+	ld a, [wcd4c]
+	add $3c
+	ld [hli], a
+	ld a, [wcd4c]
+	add $1
+	ld [hl], a
+	ret
+
+.asm_11b43b
+	ld a, $9b
+	ld [hli], a
+	ld a, $39
+	ld [hli], a
+	xor a
+	ld [hl], a
+	ret
+; 11b444
+
+Function11b444: ; 11b444
+	call Function11b44b
+	call Function11b45c
+	ret
+; 11b44b
+
+Function11b44b: ; 11b44b
+	xor a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wcf65], a
+	ld [wcf66], a
+	call UpdateTime
+	ret
+; 11b45c
+
+Function11b45c: ; 11b45c
+.asm_11b45c
+	call Function11b46a
+	call DelayFrame
+	ld a, [wJumptableIndex]
+	cp $4
+	jr nz, .asm_11b45c
+	ret
+; 11b46a
+
+Function11b46a: ; 11b46a
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11b479
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11b479
+
+Jumptable_11b479: ; 11b479
+	dw Function11b483
+	dw Function11b570
+	dw Function11b5c0
+	dw Function11b5e0
+	dw Function11b5e7
+; 11b483
+
+Function11b483: ; 11b483
+	call Function11b538
+	ld hl, PlayerName
+	ld a, $5
+.asm_11b48b
+	push af
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	and a
+	jr nz, .asm_11b48b
+	ld de, $0030
+	ld hl, PartyMon1Species
+	ld a, [wcd82]
+	dec a
+	push af
+.asm_11b49f
+	and a
+	jr z, .asm_11b4a6
+	add hl, de
+	dec a
+	jr .asm_11b49f
+
+.asm_11b4a6
+	push bc
+	ld a, $30
+.asm_11b4a9
+	push af
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	and a
+	jr nz, .asm_11b4a9
+	pop de
+	push bc
+	ld a, [de]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld hl, $001f
+	add hl, de
+	ld a, [hl]
+	ld [CurPartyLevel], a
+	ld hl, $0024
+	add hl, de
+	push hl
+	ld hl, $000a
+	add hl, de
+	pop de
+	push de
+	ld b, $1
+	predef CalcPkmnStats
+	pop de
+	ld h, d
+	ld l, e
+rept 2
+	dec hl
+endr
+	ld a, [de]
+	ld [hli], a
+	inc de
+	ld a, [de]
+	ld [hl], a
+	pop bc
+	ld de, $000b
+	ld hl, PartyMonOT
+	pop af
+	push af
+.asm_11b4e8
+	and a
+	jr z, .asm_11b4ef
+	add hl, de
+	dec a
+	jr .asm_11b4e8
+
+.asm_11b4ef
+	ld a, $a
+.asm_11b4f1
+	push af
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	and a
+	jr nz, .asm_11b4f1
+	ld de, $000b
+	ld hl, PartyMonNicknames
+	pop af
+	push af
+.asm_11b502
+	and a
+	jr z, .asm_11b509
+	add hl, de
+	dec a
+	jr .asm_11b502
+
+.asm_11b509
+	ld a, $a
+.asm_11b50b
+	push af
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	and a
+	jr nz, .asm_11b50b
+	ld de, $002f
+	ld hl, $a600
+	pop af
+.asm_11b51b
+	and a
+	jr z, .asm_11b522
+	add hl, de
+	dec a
+	jr .asm_11b51b
+
+.asm_11b522
+	ld a, $0
+	call GetSRAMBank
+	ld a, $2f
+.asm_11b529
+	push af
+	ld a, [hli]
+	ld [bc], a
+	inc bc
+	pop af
+	dec a
+	and a
+	jr nz, .asm_11b529
+	call CloseSRAM
+	jp Function11ad8a
+; 11b538
+
+Function11b538: ; 11b538
+	ld bc, BattleMonNick + 5
+	ld a, [PlayerID]
+	ld [wcd2a], a
+	ld [bc], a
+	inc bc
+	ld a, [PlayerID + 1]
+	ld [wcd2b], a
+	ld [bc], a
+	inc bc
+	ld a, [wSecretID]
+	ld [wcd2c], a
+	ld [bc], a
+	inc bc
+	ld a, [wSecretID + 1]
+	ld [wcd2d], a
+	ld [bc], a
+	inc bc
+	ld a, [wcd2e]
+	ld [bc], a
+	inc bc
+	ld a, [wcd2f]
+	ld [bc], a
+	inc bc
+	ld a, [wcd30]
+	ld [bc], a
+	inc bc
+	ld a, [wd265]
+	ld [bc], a
+	inc bc
+	ret
+; 11b570
+
+Function11b570: ; 11b570
+	call Function118007
+	ld a, [ScriptVar]
+	and a
+	jr nz, .asm_11b57f
+	call Function11b585
+	jp Function11ad8a
+
+.asm_11b57f
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; 11b585
+
+Function11b585: ; 11b585
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, $d800
+	ld de, $c608
+	ld bc, $008f
+	call CopyBytes
+	ld a, $1
+	ld [rSVBK], a
+	ld a, $5
+	call GetSRAMBank
+	ld de, $a800
+	ld a, $1
+	ld [de], a
+	inc de
+	ld hl, $c608
+	ld bc, $008f
+	call CopyBytes
+	push de
+	pop hl
+	ld a, [hRTCMinutes]
+	ld [hli], a
+	ld a, [hRTCHours]
+	ld [hli], a
+	ld a, [hRTCDayLo]
+	ld [hli], a
+	ld a, [hRTCDayHi]
+	ld [hl], a
+	call CloseSRAM
+	ret
+; 11b5c0
+
+Function11b5c0: ; 11b5c0
+	ld a, [wcd82]
+	dec a
+	ld [CurPartyMon], a
+	xor a
+	ld [wd10b], a
+	callba Functione039
+	callba Function170807
+	callba Function14a58
+	jp Function11ad8a
+; 11b5e0
+
+Function11b5e0: ; 11b5e0
+	xor a
+	ld [ScriptVar], a
+	jp Function11ad8a
+; 11b5e7
+
+Function11b5e7: ; 11b5e7
+	ret
+; 11b5e8
+
+Function11b5e8: ; 11b5e8
+	ld a, $0
+	call GetSRAMBank
+	ld hl, wRTC
+	ld de, $c608
+	ld bc, $0004
+	call CopyBytes
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $c608
+	ld de, $b08c
+	ld bc, $0004
+	call CopyBytes
+	ld a, $2
+	ld [$a800], a
+	ld a, [$a81f]
+	ld [wcd2a], a
+	ld a, [$a820]
+	ld [wcd2b], a
+	ld a, [$a821]
+	ld [wcd2c], a
+	ld a, [$a822]
+	ld [wcd2d], a
+	ld a, [$a823]
+	ld [wcd2e], a
+	ld a, [$a824]
+	ld [wcd2f], a
+	ld a, [$a825]
+	ld [wcd30], a
+	ld a, [$a826]
+	ld [wcd31], a
+	call CloseSRAM
+	call Function11b44b
+	call Function11b64c
+	ret
+; 11b64c
+
+Function11b64c: ; 11b64c
+.asm_11b64c
+	call Function11b65a
+	call DelayFrame
+	ld a, [wJumptableIndex]
+	cp $1
+	jr nz, .asm_11b64c
+	ret
+; 11b65a
+
+Function11b65a: ; 11b65a
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_11b669
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 11b669
+
+Jumptable_11b669: ; 11b669
+	dw Function11b66d
+	dw Function11b6b3
+; 11b66d
+
+Function11b66d: ; 11b66d
+	call Function1180b8
+	ld a, [ScriptVar]
+	and a
+	jr nz, .asm_11b6b0
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [StringBuffer2 + 10]
+	ld b, a
+	pop af
+	ld [rSVBK], a
+	ld a, b
+	and a
+	jr z, .asm_11b691
+	cp $1
+	jr nz, .asm_11b6b0
+	call Function11b6b4
+	jr .asm_11b6b0
+
+.asm_11b691
+	callba Function17081d
+	ld a, [ScriptVar]
+	and a
+	jr z, .asm_11b6b0
+	xor a
+	ld [ScriptVar], a
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, $2
+	ld [StringBuffer2 + 10], a
+	pop af
+	ld [rSVBK], a
+
+.asm_11b6b0
+	jp Function11ad8a
+; 11b6b3
+
+Function11b6b3: ; 11b6b3
+	ret
+; 11b6b4
+
+Function11b6b4: ; 11b6b4
+	ld a, $5
+	call GetSRAMBank
+	ld a, [wcd30]
+	ld [wc708], a
+	ld a, [wcd31]
+	ld [wc709], a
+	ld a, $8
+	ld [BGMapBuffer], a
+	ld a, $c7
+	ld [wcd21], a
+	ld a, $d
+	ld [CreditsTimer], a
+	ld a, $c6
+	ld [wcd23], a
+	ld a, $3d
+	ld [wcd24], a
+	ld a, $c6
+	ld [wcd25], a
+	ld a, $42
+	ld [wcd26], a
+	ld a, $c6
+	ld [wcd27], a
+	ld a, $47
+	ld [wcd28], a
+	ld a, $c6
+	ld [wcd29], a
+	ld a, $46
+	ld [$c628], a
+	ld de, $c63d
+	ld c, $5
+	callba CheckStringForErrors
+	jr nc, .asm_11b70f
+	callba Function17d187
+
+.asm_11b70f
+	ld de, $c63d
+	ld bc, $0105
+	callba Function17d1e1
+	jr nc, .asm_11b723
+	callba Function17d187
+
+.asm_11b723
+	ld de, $c642
+	ld c, $5
+	callba CheckStringForErrors
+	jr nc, .asm_11b736
+	callba Function17d199
+
+.asm_11b736
+	ld de, $c642
+	ld bc, $0105
+	callba Function17d1e1
+	jr nc, .asm_11b74a
+	callba Function17d199
+
+.asm_11b74a
+	ld de, $c647
+	ld c, $21
+	callba CheckStringForErrors
+	jr nc, .asm_11b75d
+	callba Function17d1ab
+
+.asm_11b75d
+	ld de, $c647
+	ld bc, $0221
+	callba Function17d1e1
+	jr c, .asm_11b770
+	ld a, b
+	cp $2
+	jr nz, .asm_11b776
+
+.asm_11b770
+	callba Function17d1ab
+
+.asm_11b776
+	ld de, $c668
+	ld c, $5
+	callba CheckStringForErrors
+	jr nc, .asm_11b789
+	callba Function17d1c9
+
+.asm_11b789
+	ld de, $c668
+	ld bc, $0105
+	callba Function17d1e1
+	jr nc, .asm_11b79d
+	callba Function17d1c9
+
+.asm_11b79d
+	ld a, [$c608 + 6]
+	cp $ff
+	jr nz, .asm_11b7a8
+	xor a
+	ld [$c608 + 6], a
+
+.asm_11b7a8
+	ld a, [wcd31]
+	ld [$c608 + 5], a
+	ld [CurSpecies], a
+	call GetBaseData
+
+	ld hl, $c62c
+	ld a, [hl]
+	cp MIN_LEVEL
+	ld a, MIN_LEVEL
+	jr c, .asm_11b7c5
+	ld a, [hl]
+	cp MAX_LEVEL
+	jr c, .asm_11b7c6
+	ld a, MAX_LEVEL
+.asm_11b7c5
+	ld [hl], a
+.asm_11b7c6
+	ld [CurPartyLevel], a
+
+	ld hl, $c616 + 1
+	ld de, $c62c + 5
+	ld b, $1
+	predef CalcPkmnStats
+	ld de, $c62c + 5
+	ld hl, $c62c + 3
+	ld a, [de]
+	ld [hli], a
+	inc de
+	ld a, [de]
+	ld [hl], a
+	call Function11b98f
+	ret
+; 11b7e5
+
+Function11b7e5: ; 11b7e5
+	ld a, [$c608 + 5]
+	ld [wc702], a
+	ld [CurPartySpecies], a
+	ld a, [wcd81]
+	ld [wc74e], a
+	ld hl, $c63d
+	ld de, wc724
+	ld bc, $0005
+	call CopyBytes
+	ld a, $50
+	ld [de], a
+	ld a, [$c608 + 11]
+	ld [wEnemyWrapCount], a
+	ld a, [$c608 + 12]
+	ld [wPlayerCharging], a
+	ld hl, $c608 + 26
+	ld a, [hli]
+	ld [wEnemyTrappingMove], a
+	ld a, [hl]
+	ld [wPlayerWrapCount], a
+	ld bc, $c608 + 5
+	callba GetCaughtGender
+	ld a, c
+	ld [wEnemyCharging], a
+	call SpeechTextBox
+	call FadeToMenu
+	callba Function108016
+	callba Function17d1f1
+	ld a, $1
+	ld [wd1e9], a
+	ld a, $2
+	ld [wLinkMode], a
+	callba Function421d8
+	xor a
+	ld [wLinkMode], a
+	callba Function14a58
+	ld a, $5
+	call GetSRAMBank
+	ld a, $5
+	ld [$a800], a
+	call CloseSRAM
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetMapTrigger
+	ld a, d
+	or e
+	jr z, .asm_11b872
+	ld a, $1
+	ld [de], a
+
+.asm_11b872
+	call Function2b3c
+	call RestartMapMusic
+	ret
+; 11b879
+
+Function11b879: ; 11b879
+	callba Function17089a
+	ld a, [ScriptVar]
+	and a
+	ret z
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$a800]
+	ld [ScriptVar], a
+	ld a, [$a890]
+	ld [wcd49], a
+	ld a, [$a891]
+	ld [wcd4a], a
+	ld a, [$a892]
+	ld [wcd4b], a
+	ld a, [$a893]
+	ld [wcd4c], a
+	call CloseSRAM
+	ld a, [ScriptVar]
+	and a
+	ret z
+	ld hl, wcd4c
+	ld a, [hRTCDayHi]
+	cp [hl]
+	ret nz
+	dec hl
+	ld a, [hRTCDayLo]
+	cp [hl]
+	ret nz
+	ld hl, wcd4a
+	ld a, [hRTCHours]
+	cp [hl]
+	jr nc, .asm_11b8d8
+	ld a, $18
+	sub [hl]
+	ld hl, hRTCHours
+	add [hl]
+	ld [wcd4c], a
+	ld a, [hRTCMinutes]
+	ld [wcd4b], a
+	xor a
+	ld [wcd4a], a
+	jr .asm_11b8e2
+
+.asm_11b8d8
+	ld a, [hRTCMinutes]
+	ld [wcd4b], a
+	ld a, [hRTCHours]
+	ld [wcd4c], a
+
+.asm_11b8e2
+	xor a
+	ld l, a
+	ld h, a
+	ld b, a
+	ld d, a
+	ld a, [wcd4b]
+	ld e, a
+	ld a, [wcd4c]
+	ld c, $3c
+	call AddNTimes
+	add hl, de
+	push hl
+	xor a
+	ld l, a
+	ld h, a
+	ld b, a
+	ld d, a
+	ld a, [wcd49]
+	ld e, a
+	ld a, [wcd4a]
+	ld c, $3c
+	call AddNTimes
+	add hl, de
+	ld a, l
+	cpl
+	add $1
+	ld e, a
+	ld a, h
+	cpl
+	adc $0
+	ld d, a
+	pop hl
+	add hl, de
+	ld de, $ff88
+	add hl, de
+	bit 7, h
+	ret z
+	ld a, $2
+	ld [ScriptVar], a
+	ret
+; 11b920
+
+Function11b920: ; 11b920
+	call Function11b44b
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a81f
+	ld de, BattleMonNick + 5
+	ld bc, $0008
+	call CopyBytes
+	call CloseSRAM
+	call Function118000
+	ret
+; 11b93b
+
+Function11b93b: ; 11b93b
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$a800], a
+	ld hl, $a823
+	ld de, wEnemyMoveStruct
+	ld bc, $008f
+	call CopyBytes
+	call CloseSRAM
+	ld a, wEnemyMoveStruct % $100
+	ld [wcd20], a
+	ld a, wEnemyMoveStruct / $100
+	ld [wcd21], a
+	ld a, $c611 % $100
+	ld [wcd22], a
+	ld a, $c611 / $100
+	ld [wcd23], a
+	ld a, $c641 % $100
+	ld [wcd24], a
+	ld a, $c641 / $100
+	ld [wcd25], a
+	ld a, $c646 % $100
+	ld [wcd26], a
+	ld a, $c646 / $100
+	ld [wcd27], a
+	ld a, $c64b % $100
+	ld [wcd28], a
+	ld a, $c64b / $100
+	ld [wcd29], a
+	call Function11b98f
+	callba Function14a58
+	ret
+; 11b98f
+
+Function11b98f: ; 11b98f
+	ld hl, PartyCount
+	ld a, [hl]
+	ld e, a
+	inc [hl]
+	ld a, [wcd20]
+	ld l, a
+	ld a, [wcd21]
+	ld h, a
+	inc hl
+	ld bc, PartySpecies
+	ld d, e
+.loop1
+	inc bc
+	dec d
+	jr nz, .loop1
+	ld a, e
+	ld [CurPartyMon], a
+	ld a, [hl]
+	ld [bc], a
+	inc bc
+	ld a, $ff
+	ld [bc], a
+	ld hl, PartyMon1Species
+	ld bc, PARTYMON_STRUCT_LENGTH
+	ld a, e
+	ld [wcd2a], a
+.loop2
+	add hl, bc
+	dec a
+	and a
+	jr nz, .loop2
+	ld e, l
+	ld d, h
+	ld a, [CreditsTimer]
+	ld l, a
+	ld a, [wcd23]
+	ld h, a
+	ld bc, PARTYMON_STRUCT_LENGTH
+	call CopyBytes
+	ld hl, PartyMonOT
+	ld bc, NAME_LENGTH
+	ld a, [wcd2a]
+.loop3
+	add hl, bc
+	dec a
+	and a
+	jr nz, .loop3
+	ld e, l
+	ld d, h
+	ld a, [wcd24]
+	ld l, a
+	ld a, [wcd25]
+	ld h, a
+	ld bc, PKMN_NAME_LENGTH - 1
+	call CopyBytes
+	ld a, "@"
+	ld [de], a
+	ld hl, PartyMonNicknames
+	ld bc, PKMN_NAME_LENGTH
+	ld a, [wcd2a]
+.loop4
+	add hl, bc
+	dec a
+	and a
+	jr nz, .loop4
+	ld e, l
+	ld d, h
+	ld a, [wcd26]
+	ld l, a
+	ld a, [wcd27]
+	ld h, a
+	ld bc, PKMN_NAME_LENGTH - 1
+	call CopyBytes
+	ld a, "@"
+	ld [de], a
+	ld hl, sPartyScratch1
+	ld bc, PARTYMON_STRUCT_LENGTH - 1
+	ld a, [wcd2a]
+.loop5
+	add hl, bc
+	dec a
+	and a
+	jr nz, .loop5
+	ld a, $0
+	call GetSRAMBank
+	ld e, l
+	ld d, h
+	ld a, [wcd28]
+	ld l, a
+	ld a, [wcd29]
+	ld h, a
+	ld bc, PARTYMON_STRUCT_LENGTH - 1
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 11ba38
+
+Function11ba38: ; 11ba38
+	callba CheckCurPartyMonFainted
+	ret c
+	xor a
+	ld [ScriptVar], a
+	ret
+; 11ba44
+
+Unknown_11ba44:
+	db $47, $30, $0a, $0a, $0a, $0a, $0a, $56
+	db $46, $2f, $0a, $0a, $0a, $0a, $0a, $55
+	db $45, $3d, $0a, $0a, $0a, $0a, $0a, $54
+	db $44, $30, $0a, $0a, $0a, $0a, $0a, $53
+	db $43, $2f, $0a, $0a, $0a, $0a, $0a, $52
+	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $51
+	db $4a, $30, $0a, $0a, $0a, $0a, $0a, $50
+	db $4a, $2f, $0a, $0a, $0a, $0a, $0a, $4f
+	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $4e
+	db $4a, $30, $0a, $0a, $0a, $0a, $4d, $42
+	db $4a, $2f, $0a, $0a, $0a, $0a, $6b, $58
+	db $4a, $3d, $0a, $0a, $0a, $0a, $6a, $58
+	db $4a, $30, $0a, $0a, $0a, $0a, $69, $58
+	db $4a, $2f, $0a, $0a, $0a, $0a, $68, $58
+	db $4a, $3d, $0a, $0a, $0a, $66, $67, $58
+	db $4a, $30, $0a, $0a, $0a, $65, $0a, $58
+	db $4a, $2f, $0a, $0a, $0a, $64, $0a, $58
+	db $4a, $3d, $0a, $0a, $0a, $63, $0a, $58
+	db $4a, $30, $0a, $0a, $61, $62, $0a, $58
+	db $4a, $2f, $0a, $0a, $5f, $60, $0a, $58
+	db $4a, $3d, $0a, $61, $62, $0a, $0a, $58
+	db $4a, $30, $0a, $63, $0a, $0a, $0a, $58
+	db $4a, $2f, $69, $0a, $0a, $0a, $0a, $58
+	db $4a, $3d, $81, $0a, $0a, $0a, $0a, $58
+	db $4a, $30, $80, $0a, $0a, $0a, $0a, $58
+	db $4a, $2f, $7f, $0a, $0a, $0a, $0a, $58
+	db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $58
+	db $4a, $30, $0a, $0a, $0a, $0a, $0a, $58
+	db $4a, $2f, $68, $87, $88, $89, $0a, $58
+	db $4a, $3d, $6e, $6f, $70, $75, $76, $58
+	db $4a, $30, $75, $76, $5c, $5d, $5e, $58
+	db $4a, $2f, $71, $72, $73, $74, $6d, $58
+	db $4a, $3d, $75, $76, $77, $8a, $8b, $58
+	db $4a, $30, $66, $67, $65, $0a, $6a, $58
+	db $4a, $2f, $83, $84, $0a, $83, $84, $58
+	db $4a, $3d, $0a, $85, $82, $84, $0a, $58
+	db $4a, $30, $41, $80, $40, $0a, $0a, $58
+	db $4a, $2f, $83, $0a, $0a, $0a, $0a, $58
+	db $4a, $3d, $40, $0a, $0a, $0a, $0a, $58
+	db $ff
+
+Unknown_11bb7d:
+	db $0a, $0a, $0a, $0a, $0a, $0a, $16, $00
+	db $78, $0a, $0a, $0a, $0a, $0a, $8c, $00
+	db $79, $0a, $0a, $0a, $0a, $0a, $8d, $00
+	db $7a, $0a, $0a, $0a, $0a, $0a, $8e, $00
+	db $7b, $0a, $0a, $0a, $0a, $0a, $8c, $00
+	db $7c, $0a, $0a, $0a, $0a, $0a, $8d, $00
+	db $7d, $0a, $0a, $0a, $0a, $0a, $8e, $00
+	db $2e, $7e, $0a, $0a, $0a, $0a, $8c, $00
+	db $2e, $80, $0a, $0a, $0a, $0a, $8d, $00
+	db $2e, $81, $0a, $0a, $0a, $0a, $8e, $00
+	db $2e, $82, $0a, $0a, $0a, $0a, $8c, $00
+	db $2e, $69, $0a, $0a, $0a, $0a, $8d, $00
+	db $2e, $6a, $0a, $0a, $0a, $0a, $8e, $00
+	db $2e, $6b, $0a, $0a, $0a, $0a, $8c, $00
+	db $2e, $0a, $68, $0a, $0a, $0a, $8d, $00
+	db $2e, $0a, $69, $0a, $0a, $0a, $8e, $00
+	db $2e, $0a, $0a, $6a, $0a, $0a, $8c, $00
+	db $2e, $0a, $0a, $6b, $0a, $0a, $8d, $00
+	db $2e, $0a, $0a, $0a, $80, $0a, $8e, $00
+	db $2e, $0a, $0a, $0a, $82, $0a, $8c, $00
+	db $2e, $0a, $0a, $0a, $6c, $0a, $8d, $00
+	db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00
+	db $2e, $0a, $6b, $0a, $0a, $0a, $8c, $00
+	db $2e, $0a, $0a, $69, $0a, $0a, $8d, $00
+	db $2e, $0a, $0a, $6a, $0a, $0a, $8e, $00
+	db $2e, $0a, $0a, $0a, $68, $0a, $8c, $00
+	db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00
+	db $2e, $0a, $0a, $61, $62, $0a, $8e, $00
+	db $2e, $0a, $0a, $0a, $5f, $60, $8c, $00
+	db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00
+	db $2e, $0a, $0a, $0a, $0a, $69, $8c, $00
+	db $2e, $0a, $0a, $0a, $0a, $6b, $8d, $00
+	db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00
+	db $2e, $0a, $0a, $0a, $0a, $86, $8c, $00
+	db $2e, $0a, $85, $0a, $0a, $0a, $8d, $00
+	db $2e, $0a, $0a, $84, $0a, $0a, $8e, $00
+	db $ff
+
+
--- /dev/null
+++ b/misc/mobile_5b.asm
@@ -1,0 +1,1236 @@
+Function16c000: ; 16c000
+	ld a, [hCGB]
+	and a
+	ret z
+	ld a, [$ffea]
+	and a
+	ret z
+	ld a, [wcfbe]
+	push af
+	set 7, a
+	ld [wcfbe], a
+	call Function16c108
+	callba Function100063
+	callba Function100082
+	call Function16c031
+	callba Function1000a4
+	xor a
+	ld [$ffea], a
+	pop af
+	ld [wcfbe], a
+	ret
+; 16c031
+
+Function16c031: ; 16c031
+	xor a
+	ld [wJumptableIndex], a
+	ld [wcf64], a
+	ld [wd002], a
+	ld [wd003], a
+.asm_16c03e
+	call DelayFrame
+	callba Function10635c
+	ld a, [wd002]
+	ld hl, Jumptable_16c05c
+	rst JumpTable
+	call Function16cb2e
+	call Function16cbae
+	ld a, [wd002]
+	cp $ff
+	jr nz, .asm_16c03e
+	ret
+; 16c05c
+
+Jumptable_16c05c: ; 16c05c
+	dw Function16c074
+	dw Function16c0ba
+	dw Function16c089
+	dw Function16c09e
+	dw Function16c0a8
+	dw Function16c0dc
+	dw Function16c0ec
+	dw Function16c0ba
+	dw Function16c0ca
+	dw Function16c0dc
+	dw Function16c0ec
+	dw Function16c081
+; 16c074
+
+Function16c074: ; 16c074
+	ld a, [wcf64]
+	and a
+	ret z
+	ld [wd002], a
+	xor a
+	ld [wd003], a
+	ret
+; 16c081
+
+Function16c081: ; 16c081
+	push af
+	ld a, $ff
+	ld [wd002], a
+	pop af
+	ret
+; 16c089
+
+Function16c089: ; 16c089
+	ld a, $1
+	ld [Buffer2], a
+	ld [wd1f1], a
+	xor a
+	ld [hWY], a
+	call Function16c0fa
+	ld a, [wd002]
+	ld [wcf64], a
+	ret
+; 16c09e
+
+Function16c09e: ; 16c09e
+	ld a, [wcf64]
+	cp $4
+	ret nz
+	call Function16c0fa
+	ret
+; 16c0a8
+
+Function16c0a8: ; 16c0a8
+	xor a
+	ld [Buffer2], a
+	ld [wd1f1], a
+	call ClearSprites
+	ld a, $90
+	ld [hWY], a
+	call Function16c0fa
+	ret
+; 16c0ba
+
+Function16c0ba: ; 16c0ba
+	call Function16c943
+	push af
+	ld a, [wd003]
+	inc a
+	ld [wd003], a
+	pop af
+	call c, Function16c0fa
+	ret
+; 16c0ca
+
+Function16c0ca: ; 16c0ca
+	ld a, [wd003]
+	cp $28
+	push af
+	ld a, [wd003]
+	inc a
+	ld [wd003], a
+	pop af
+	call z, Function16c0fa
+	ret
+; 16c0dc
+
+Function16c0dc: ; 16c0dc
+	call Function16ca11
+	push af
+	ld a, [wd003]
+	inc a
+	ld [wd003], a
+	pop af
+	call c, Function16c0fa
+	ret
+; 16c0ec
+
+Function16c0ec: ; 16c0ec
+	call ClearBGPalettes
+	call ClearScreen
+	push af
+	ld a, $ff
+	ld [wd002], a
+	pop af
+	ret
+; 16c0fa
+
+Function16c0fa: ; 16c0fa
+	push af
+	ld a, [wd002]
+	inc a
+	ld [wd002], a
+	xor a
+	ld [wd003], a
+	pop af
+	ret
+; 16c108
+
+Function16c108: ; 16c108
+	call DisableLCD
+	ld hl, VTiles2
+	ld de, GFX_16c173
+	lb bc, BANK(GFX_16c173), $68
+	call Get2bpp
+	call Function16c130
+	call Function16c145
+	call Function16c15c
+	ld hl, VBGMap0
+	call Function16cc73
+	call Function16cc02
+	xor a
+	ld [hBGMapMode], a
+	call EnableLCD
+	ret
+; 16c130
+
+Function16c130: ; 16c130
+	ld de, wMapPals
+	ld hl, Unknown_16c903
+	ld bc, 8
+	ld a, $5
+	call FarCopyWRAM
+	callba Function96a4
+	ret
+; 16c145
+
+Function16c145: ; 16c145
+	hlcoord 0, 0
+	ld bc, 20
+	xor a
+	call ByteFill
+	ld hl, Tilemap_16c633
+	decoord 0, 1
+	ld bc, $0154
+	call CopyBytes
+	ret
+; 16c15c
+
+Function16c15c: ; 16c15c
+	hlcoord 0, 0, AttrMap
+	ld bc, SCREEN_WIDTH
+	xor a
+	call ByteFill
+	ld hl, Tilemap_16c79b
+	decoord 0, 1, AttrMap
+	ld bc, 17 * SCREEN_WIDTH
+	call CopyBytes
+	ret
+; 16c173
+
+GFX_16c173:
+INCBIN "gfx/unknown/16c173.2bpp"
+
+Tilemap_16c633:
+INCBIN "gfx/unknown/16c633.tilemap"
+
+Tilemap_16c79b:
+INCBIN "gfx/unknown/16c79b.tilemap"
+
+Unknown_16c903:
+	RGB 31, 31, 31
+	RGB 04, 10, 20
+	RGB 16, 19, 25
+	RGB 25, 27, 29
+
+	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
+
+; 16c943
+
+Function16c943: ; 16c943
+	ld a, [wd003]
+	and a
+	jr nz, .asm_16c95e
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld a, $ff
+	ld bc, $0008
+	ld hl, wMapPals
+	call ByteFill
+	pop af
+	ld [rSVBK], a
+
+.asm_16c95e
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld e, $0
+	ld a, $0
+.asm_16c969
+	ld hl, Unknown_16c903
+	call Function16cab6
+	call Function16cabb
+	ld d, a
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cabb
+	cp d
+	jr z, .asm_16c991
+	ld b, $1
+.asm_16c981
+	dec a
+	cp d
+	jr z, .asm_16c988
+	dec b
+	jr nz, .asm_16c981
+
+.asm_16c988
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cadc
+
+.asm_16c991
+	ld hl, Unknown_16c903
+	call Function16cab6
+	call Function16cad8
+	ld d, a
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cad8
+	cp d
+	jr z, .asm_16c9b9
+	ld b, $1
+.asm_16c9a9
+	dec a
+	cp d
+	jr z, .asm_16c9b0
+	dec b
+	jr nz, .asm_16c9a9
+
+.asm_16c9b0
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cb08
+
+.asm_16c9b9
+	ld hl, Unknown_16c903
+	call Function16cab6
+	call Function16cac4
+	ld d, a
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cac4
+	cp d
+	jr z, .asm_16c9e1
+	ld b, $1
+.asm_16c9d1
+	dec a
+	cp d
+	jr z, .asm_16c9d8
+	dec b
+	jr nz, .asm_16c9d1
+
+.asm_16c9d8
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cae8
+
+.asm_16c9e1
+rept 2
+	inc e
+endr
+	ld a, e
+	cp $8
+	jr nz, .asm_16c969
+	callba Function96a4
+	call SetPalettes
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [wd003]
+	cp $1f
+	jr z, .asm_16ca09
+	pop af
+	ld [rSVBK], a
+	ld e, $0
+	pop af
+	ld [rSVBK], a
+	and a
+	ret
+
+.asm_16ca09
+	pop af
+	ld [rSVBK], a
+	pop af
+	ld [rSVBK], a
+	scf
+	ret
+; 16ca11
+
+Function16ca11: ; 16ca11
+	ld a, [wd003]
+	and a
+	jr nz, .asm_16ca1d
+	callba Function96a4
+
+.asm_16ca1d
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld e, $0
+	ld a, $0
+.asm_16ca28
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cabb
+	cp $1f
+	jr z, .asm_16ca48
+	ld b, $1
+.asm_16ca37
+	inc a
+	cp $1f
+	jr z, .asm_16ca3f
+	dec b
+	jr nz, .asm_16ca37
+
+.asm_16ca3f
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cadc
+
+.asm_16ca48
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cad8
+	cp $1f
+	jr z, .asm_16ca68
+	ld b, $1
+.asm_16ca57
+	inc a
+	cp $1f
+	jr z, .asm_16ca5f
+	dec b
+	jr nz, .asm_16ca57
+
+.asm_16ca5f
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cb08
+
+.asm_16ca68
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cac4
+	cp $1f
+	jr z, .asm_16ca88
+	ld b, $1
+.asm_16ca77
+	inc a
+	cp $1f
+	jr z, .asm_16ca7f
+	dec b
+	jr nz, .asm_16ca77
+
+.asm_16ca7f
+	ld hl, wMapPals
+	call Function16cab6
+	call Function16cae8
+
+.asm_16ca88
+rept 2
+	inc e
+endr
+	ld a, e
+	cp $8
+	jr nz, .asm_16ca28
+	callba Function96a4
+	call SetPalettes
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [wd003]
+	cp $1f
+	jr z, .asm_16caae
+	pop af
+	ld [rSVBK], a
+	pop af
+	ld [rSVBK], a
+	and a
+	ret
+
+.asm_16caae
+	pop af
+	ld [rSVBK], a
+	pop af
+	ld [rSVBK], a
+	scf
+	ret
+; 16cab6
+
+Function16cab6: ; 16cab6
+	ld b, $0
+	ld c, e
+	add hl, bc
+	ret
+; 16cabb
+
+Function16cabb: ; 16cabb
+	inc hl
+	ld a, [hl]
+	srl a
+	srl a
+	and $1f
+	ret
+; 16cac4
+
+Function16cac4: ; 16cac4
+	inc hl
+	ld a, [hld]
+	and $3
+	ld b, a
+	ld a, [hl]
+	sla a
+	rl b
+	sla a
+	rl b
+	sla a
+	rl b
+	ld a, b
+	ret
+; 16cad8
+
+Function16cad8: ; 16cad8
+	ld a, [hl]
+	and $1f
+	ret
+; 16cadc
+
+Function16cadc: ; 16cadc
+	sla a
+	sla a
+	ld b, a
+	inc hl
+	ld a, [hl]
+	and $83
+	or b
+	ld [hl], a
+	ret
+; 16cae8
+
+Function16cae8: ; 16cae8
+	ld c, a
+	srl a
+	srl a
+	srl a
+	ld b, a
+	inc hl
+	ld a, [hl]
+	and $fc
+	or b
+	ld [hld], a
+	ld a, c
+	sla a
+	sla a
+	sla a
+	sla a
+	sla a
+	ld b, a
+	ld a, [hl]
+	and $1f
+	or b
+	ld [hl], a
+	ret
+; 16cb08
+
+Function16cb08: ; 16cb08
+	ld b, a
+	ld a, [hl]
+	and $e0
+	or b
+	ld [hl], a
+	ret
+; 16cb0f
+
+Function16cb0f: ; 16cb0f
+	xor a
+	ld [Buffer1], a
+	ld [Buffer2], a
+	xor a
+	ld [wd1ec], a
+	ld a, $70
+	ld [wd1ee], a
+	ld a, $4
+	ld [wd1ed], a
+	ld a, $a0
+	ld [wd1ef], a
+	xor a
+	ld [wd1f0], a
+	ret
+; 16cb2e
+
+Function16cb2e: ; 16cb2e
+	ld a, [Buffer2]
+	and a
+	ret z
+	call Function16cb40
+	ld hl, Unknown_16cb86
+	ld de, Sprites
+	call Function16cb5d
+	ret
+; 16cb40
+
+Function16cb40: ; 16cb40
+	ld hl, wd1ec
+	inc [hl]
+	ld a, [hl]
+	cp $18
+	ret c
+	xor a
+	ld [hl], a
+	ld a, [wd1ef]
+	cp $a0
+	jr nz, .asm_16cb57
+	ld a, $a7
+	ld [wd1ef], a
+	ret
+
+.asm_16cb57
+	ld a, $a0
+	ld [wd1ef], a
+	ret
+; 16cb5d
+
+Function16cb5d: ; 16cb5d
+	ld a, [hli]
+	and a
+	ret z
+.asm_16cb60
+	push af
+	ld a, [wd1ee]
+	add [hl]
+	add $10
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wd1ed]
+	add [hl]
+	add $8
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wd1ef]
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wd1f0]
+	or [hl]
+	ld [de], a
+	inc hl
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_16cb60
+	ret
+; 16cb86
+
+Unknown_16cb86:
+	db 7
+	db  0,  0, 0, 1
+	db  8,  0, 1, 1
+	db  8,  8, 2, 0
+	db  8, 16, 3, 0
+	db 16,  0, 4, 1
+	db 16,  8, 5, 0
+	db 16, 16, 6, 0
+; 16cba3
+
+Function16cba3: ; 16cba3
+	xor a
+	ld [wd1f1], a
+	ld [wd1f2], a
+	ld [wd1f3], a
+	ret
+; 16cbae
+
+Function16cbae: ; 16cbae
+	ld a, [wd1f1]
+	and a
+	ret z
+	call Function16cbba
+	call Function16cbd1
+	ret
+; 16cbba
+
+Function16cbba: ; 16cbba
+	ld hl, wd1f2
+	inc [hl]
+	ld a, [hl]
+	cp $c
+	ret c
+	xor a
+	ld [hl], a
+	ld a, [wd1f3]
+	inc a
+	cp $4
+	jr c, .asm_16cbcd
+	xor a
+
+.asm_16cbcd
+	ld [wd1f3], a
+	ret
+; 16cbd1
+
+Function16cbd1: ; 16cbd1
+	ld a, [wd1f3]
+	ld c, a
+	ld b, 0
+	ld hl, Unknown_16cbfb
+	add hl, bc
+	ld a, [hl]
+	ld bc, $0002
+	ld hl, Unknown_16cfa3
+	call AddNTimes
+	ld de, wd00c
+	ld bc, $0002
+	ld a, $5
+	call FarCopyWRAM
+	callba Function96a4
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+; 16cbfb
+
+Unknown_16cbfb:
+	db 0, 1, 2, 1, 0, 1, 2
+; 16cc02
+
+Function16cc02: ; 16cc02
+	call Function16cc18
+	call Function16cc49
+	call Function16cc62
+	call Function16cc25
+	call Function16cc6e
+	call Function16cb0f
+	call Function16cba3
+	ret
+; 16cc18
+
+Function16cc18: ; 16cc18
+	ld hl, VTiles1
+	ld de, GFX_16cca3
+	lb bc, BANK(GFX_16cca3), $2e
+	call Get2bpp
+	ret
+; 16cc25
+
+Function16cc25: ; 16cc25
+	ld hl, Unknown_16cfa9
+	ld de, wd008
+	call Function16cc41
+	ld hl, Unknown_16cfb1
+	ld de, Unkn2Pals
+	call Function16cc41
+	ld hl, Unknown_16cfb9
+	ld de, wd048
+	call Function16cc41
+	ret
+; 16cc41
+
+Function16cc41: ; 16cc41
+	ld bc, $0008
+	ld a, $5
+	jp FarCopyWRAM
+; 16cc49
+
+Function16cc49: ; 16cc49
+	hlcoord 4, 15
+	ld a, $80
+	call Function16cc5a
+	hlcoord 4, 16
+	ld a, $90
+	call Function16cc5a
+	ret
+; 16cc5a
+
+Function16cc5a: ; 16cc5a
+	ld c, $10
+.asm_16cc5c
+	ld [hli], a
+	inc a
+	dec c
+	jr nz, .asm_16cc5c
+	ret
+; 16cc62
+
+Function16cc62: ; 16cc62
+	hlcoord 0, 15, AttrMap
+	ld bc, $0028
+	ld a, $1
+	call ByteFill
+	ret
+; 16cc6e
+
+Function16cc6e: ; 16cc6e
+	ld hl, VBGMap1
+	jr Function16cc73
+
+Function16cc73:
+	ld a, [rVBK]
+	push af
+	ld a, $0
+	ld [rVBK], a
+	push hl
+	decoord 0, 0
+	call Function16cc90
+	pop hl
+	ld a, $1
+	ld [rVBK], a
+	decoord 0, 0, AttrMap
+	call Function16cc90
+	pop af
+	ld [rVBK], a
+	ret
+; 16cc90
+
+Function16cc90: ; 16cc90
+	ld bc, $1214
+.asm_16cc93
+	push bc
+.asm_16cc94
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_16cc94
+	ld bc, $000c
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_16cc93
+	ret
+; 16cca3
+
+GFX_16cca3:
+INCBIN "gfx/unknown/16cca3.2bpp"
+
+Unknown_16cfa3:
+	RGB 31, 31, 31
+	RGB 25, 27, 29
+	RGB 16, 19, 25
+
+Unknown_16cfa9:
+	RGB 31, 31, 31
+	RGB 25, 27, 29
+	RGB 31, 31, 31
+	RGB 07, 07, 07
+
+
+Unknown_16cfb1:
+	RGB 31, 31, 31
+	RGB 13, 09, 18
+	RGB 26, 21, 16
+	RGB 07, 07, 07
+
+
+Unknown_16cfb9:
+	RGB 31, 31, 31
+	RGB 18, 05, 02
+	RGB 27, 11, 12
+	RGB 07, 07, 07
+
+; 16cfc1
+
+GFX_16cfc1:
+INCBIN "gfx/unknown/16cfc1.2bpp"
+
+Function16d421: ; 16d421
+	ld de, GFX_16cfc1
+	ld hl, VTiles2
+	lb bc, BANK(GFX_16cfc1), $46
+	call Get2bpp
+	ret
+; 16d42e
+
+Function16d42e: ; 16d42e
+	ld hl, Tilemap_16d465
+	decoord 0, 0
+	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+	call CopyBytes
+	ret
+; 16d43b
+
+Function16d43b: ; 16d43b
+	call LoadStandardMenuDataHeader
+	call ClearBGPalettes
+	call ClearTileMap
+	call ClearSprites
+	callba Function16d421
+	callba Function16d42e
+	ld b, $8
+	call GetSGBLayout
+	call SetPalettes
+	call WaitBGMap
+	call JoyWaitAorB
+	call Call_ExitMenu
+	ret
+; 16d465
+
+Tilemap_16d465:
+INCBIN "gfx/unknown/16d465.tilemap"
+
+Tilemap_16d5cd:
+INCBIN "gfx/unknown/16d5cd.tilemap"
+
+Tilemap_16d5f5:
+INCBIN "gfx/unknown/16d5f5.tilemap"
+
+Function16d61d: ; 16d61d
+	ld h, d
+	ld l, e
+	push bc
+	push hl
+	call Function16d640
+	pop hl
+	pop bc
+	ld de, AttrMap - TileMap
+	add hl, de
+rept 2
+	inc b
+endr
+rept 2
+	inc c
+endr
+	ld a, $7
+.asm_16d630
+	push bc
+	push hl
+.asm_16d632
+	ld [hli], a
+	dec c
+	jr nz, .asm_16d632
+	pop hl
+	ld de, $0014
+	add hl, de
+	pop bc
+	dec b
+	jr nz, .asm_16d630
+	ret
+; 16d640
+
+Function16d640: ; 16d640
+	push hl
+	ld a, $30
+	ld [hli], a
+	inc a
+	call Function16d66d
+	inc a
+	ld [hl], a
+	pop hl
+	ld de, $0014
+	add hl, de
+.asm_16d64f
+	push hl
+	ld a, $33
+	ld [hli], a
+	ld a, $7f
+	call Function16d66d
+	ld [hl], $34
+	pop hl
+	ld de, $0014
+	add hl, de
+	dec b
+	jr nz, .asm_16d64f
+	ld a, $35
+	ld [hli], a
+	ld a, $36
+	call Function16d66d
+	ld [hl], $37
+	ret
+; 16d66d
+
+Function16d66d: ; 16d66d
+	ld d, c
+.asm_16d66e
+	ld [hli], a
+	dec d
+	jr nz, .asm_16d66e
+	ret
+; 16d673
+
+Function16d673: ; 16d673
+	call Function16d696
+	call Function16d6ae
+	callba Function49856
+	callba Functionfb60d
+	hlcoord 10, 17
+	ld de, String_16d68f
+	call PlaceString
+	ret
+; 16d68f
+
+String_16d68f: ; 16d68f
+	db "CANCEL@"
+; 16d696
+
+Function16d696: ; 16d696
+	call Function16d421
+	ret
+; 16d69a
+
+
+Function16d69a: ; 16d69a
+	ld de, GFX_16cfc1 + $300
+	ld hl, VTiles2 tile $76
+	lb bc, BANK(GFX_16cfc1), 8
+	call Get2bpp
+	ret
+; 16d6a7
+
+Function16d6a7: ; 16d6a7
+	callba Function49811
+	ret
+; 16d6ae
+
+Function16d6ae: ; 16d6ae
+	call Function16d42e
+	ld hl, Tilemap_16d5cd
+	decoord 0, 0
+	ld bc, $0028
+	call CopyBytes
+	ld hl, Tilemap_16d5f5
+	decoord 0, 16
+	ld bc, $0028
+	call CopyBytes
+	ret
+; 16d6ca
+
+Function16d6ca: ; 16d6ca
+	call Function16d61d
+	ret
+; 16d6ce
+
+Function16d6ce: ; 16d6ce
+	call LoadStandardMenuDataHeader
+	call Function16d6e1
+	callba Function87d
+	call Call_ExitMenu
+	call Function3200
+	ret
+; 16d6e1
+
+Function16d6e1: ; 16d6e1
+	hlcoord 4, 10
+	ld b, $1
+	ld c, $a
+	predef Function28eef
+	hlcoord 5, 11
+	ld de, String_16d701
+	call PlaceString
+	call WaitBGMap
+	call Function3200
+	ld c, $32
+	jp DelayFrames
+; 16d701
+
+String_16d701: ; 16d701
+	db "WAITING..!@"
+; 16d70c
+
+Function16d70c: ; 16d70c
+	call Function16d725
+	call Function16d713
+	ret
+; 16d713
+
+Function16d713: ; 16d713
+	push bc
+	push af
+	ld a, [hJoyLast]
+	and $f0
+	ld b, a
+	ld a, [hJoyPressed]
+	and $f
+	or b
+	ld b, a
+	pop af
+	ld a, b
+	pop bc
+	ld d, a
+	ret
+; 16d725
+
+Function16d725: ; 16d725
+	ld hl, wcfa6
+	res 7, [hl]
+	ld a, [hBGMapMode]
+	push af
+	call Function16d734
+	pop af
+	ld [hBGMapMode], a
+	ret
+; 16d734
+
+Function16d734: ; 16d734
+.asm_16d734
+	call Function16d77a
+	call Function16d759
+	call Function16d76a
+	jr nc, .asm_16d758
+	callba Function24270
+	jr c, .asm_16d758
+	ld a, [wcfa5]
+	bit 7, a
+	jr nz, .asm_16d758
+	call Function16d713
+	ld b, a
+	ld a, [wcfa8]
+	and b
+	jr z, .asm_16d734
+
+.asm_16d758
+	ret
+; 16d759
+
+Function16d759: ; 16d759
+	ld a, [hOAMUpdate]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call WaitBGMap
+	pop af
+	ld [hOAMUpdate], a
+	xor a
+	ld [hBGMapMode], a
+	ret
+; 16d76a
+
+Function16d76a: ; 16d76a
+.asm_16d76a
+	call RTC
+	call Function16d7e7
+	ret c
+	ld a, [wcfa5]
+	bit 7, a
+	jr z, .asm_16d76a
+	and a
+	ret
+; 16d77a
+
+Function16d77a: ; 16d77a
+	ld hl, wcfac
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [hl]
+	cp $1f
+	jr nz, .asm_16d792
+	ld a, [wcfab]
+	ld [hl], a
+	push hl
+	push bc
+	ld bc, $000b
+	add hl, bc
+	ld [hl], a
+	pop bc
+	pop hl
+
+.asm_16d792
+	ld a, [wcfa1]
+	ld b, a
+	ld a, [wcfa2]
+	ld c, a
+	call Coord2Tile
+	ld a, [wcfa7]
+	swap a
+	and $f
+	ld c, a
+	ld a, [MenuSelection2]
+	ld b, a
+	xor a
+	dec b
+	jr z, .asm_16d7b1
+.asm_16d7ad
+	add c
+	dec b
+	jr nz, .asm_16d7ad
+
+.asm_16d7b1
+	ld c, $14
+	call AddNTimes
+	ld a, [wcfa7]
+	and $f
+	ld c, a
+	ld a, [wcfaa]
+	ld b, a
+	xor a
+	dec b
+	jr z, .asm_16d7c8
+.asm_16d7c4
+	add c
+	dec b
+	jr nz, .asm_16d7c4
+
+.asm_16d7c8
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	cp $1f
+	jr z, .asm_16d7de
+	ld [wcfab], a
+	ld [hl], $1f
+	push hl
+	push bc
+	ld bc, $000b
+	add hl, bc
+	ld [hl], $1f
+	pop bc
+	pop hl
+
+.asm_16d7de
+	ld a, l
+	ld [wcfac], a
+	ld a, h
+	ld [wcfad], a
+	ret
+; 16d7e7
+
+Function16d7e7: ; 16d7e7
+	ld a, [wcfa5]
+	bit 6, a
+	jr z, .asm_16d7f4
+	callba Function8cf62
+
+.asm_16d7f4
+	call JoyTextDelay
+	call Function16d713
+	and a
+	ret z
+	scf
+	ret
+; 16d7fe
+
+
--- /dev/null
+++ b/misc/mobile_5c.asm
@@ -1,0 +1,2181 @@
+Function170000: ; 170000
+	ld a, [$c62b]
+	ld [$c6d0], a
+	ld hl, $c62e
+	ld de, $c6e7
+	ld bc, $0005
+	call CopyBytes
+	ld a, $50
+	ld [de], a
+	ld hl, $c663
+	ld de, $c6f2
+	ld bc, $0005
+	call CopyBytes
+	ld a, $50
+	ld [de], a
+	ld hl, $c648
+	ld a, [hli]
+	ld [$c6fd], a
+	ld a, [hl]
+	ld [$c6fe], a
+	ld hl, $c639
+	ld a, [hli]
+	ld [$c6ff], a
+	ld a, [hl]
+	ld [wc700], a
+	ld bc, $c633
+	callba GetCaughtGender
+	ld a, c
+	ld [wc701], a
+	ld a, [wcd81]
+	ld [wc74e], a
+	ld hl, $c608
+	ld de, $d800
+	ld bc, $008f
+	call CopyBytes
+	ret
+; 17005a
+
+Function17005a: ; 17005a
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$a824]
+	ld [wc702], a
+	ld hl, $a827
+	ld de, wc719
+	ld bc, $0005
+	call CopyBytes
+	ld a, $50
+	ld [de], a
+	ld hl, $a85c
+	ld de, wc724
+	ld bc, $0005
+	call CopyBytes
+	ld a, $50
+	ld [de], a
+	ld hl, $a841
+	ld a, [hli]
+	ld [wEnemyTrappingMove], a
+	ld a, [hl]
+	ld [wPlayerWrapCount], a
+	ld hl, $a832
+	ld a, [hli]
+	ld [wEnemyWrapCount], a
+	ld a, [hl]
+	ld [wPlayerCharging], a
+	ld bc, $a82c
+	callba GetCaughtGender
+	ld a, c
+	ld [wEnemyCharging], a
+	ld a, [wcd81]
+	ld [wc74e], a
+	call CloseSRAM
+	ret
+; 1700b0
+
+Function1700b0: ; 1700b0
+	call Function17021e
+	callba Function118121
+	ret
+; 1700ba
+
+Function1700ba: ; 1700ba
+	call Function17021e
+	callba 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, $dffc
+	ld de, $aa41
+	ld bc, $0004
+	call CopyBytes
+	ld hl, $d202
+	ld de, $aa8e
+	ld bc, $0594
+	call CopyBytes
+	ld hl, $aa5d
+	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, $dffc
+	ld bc, $0004
+	call CopyBytes
+	call CloseSRAM
+	pop af
+	ld [rSVBK], a
+	ret
+; 170114
+
+Function170114: ; 170114
+	call Function17021e
+	call Function170121
+	callba Function11805f
+	ret
+; 170121
+
+Function170121: ; 170121
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a948
+	ld de, $c608
+	ld bc, $00f6
+	call CopyBytes
+	call CloseSRAM
+	call Function170c8b
+	ret
+; 170139
+
+Function170139: ; 170139
+	ld a, $5
+	call GetSRAMBank
+	ld de, $aa41
+	ld h, $0
+	ld l, h
+	ld bc, $03e8
+	call Function17020c
+	ld bc, $0064
+	call Function17020c
+	ld bc, $000a
+	call Function17020c
+	ld a, [de]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	call CloseSRAM
+	ld a, h
+	ld [$c608], a
+	ld a, l
+	ld [$c608 + 1], a
+	ld hl, $c628
+	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, $0005 ; Japanese name length
+	call CopyBytes
+	ld bc, PlayerID
+	ld de, PlayerGender
+	callba Function4e929
+	ld de, $c62c + 5
+	ld a, c
+	ld [de], a
+	inc de
+	ld a, $df
+	ld [wcd49], a
+	ld a, $dc
+	ld [wcd4a], a
+	ld a, $41
+	ld [wcd4b], a
+	ld a, $de
+	ld [wcd4c], a
+	ld a, $3
+.asm_1701ac
+	push af
+	ld a, [wcd49]
+	ld l, a
+	ld a, [wcd4a]
+	ld h, a
+	ld bc, $0030
+	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, .asm_1701ac
+	ld a, $4
+	call GetSRAMBank
+	ld hl, $a013
+	ld bc, $0024
+	call CopyBytes
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a894
+	ld bc, $0006
+	call CopyBytes
+	ld hl, $c608
+	ld de, $a948
+	ld bc, $00f6
+	call CopyBytes
+	call CloseSRAM
+	ret
+; 17020c
+
+Function17020c: ; 17020c
+	ld a, [de]
+	inc de
+	and a
+	ret z
+.asm_170210
+	add hl, bc
+	dec a
+	jr nz, .asm_170210
+	ret
+; 170215
+
+INCLUDE "misc/battle_tower_5c.asm"
+
+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
+
+Function1704e1: ; 1704e1
+	call SpeechTextBox
+	call FadeToMenu
+	call Function17021e
+	call Function1704f1
+	call Function2b3c
+	ret
+; 1704f1
+
+Function1704f1: ; 1704f1
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearScreen
+.asm_1704fa
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_17050f
+	call Function170510
+	callba Function104061
+	jr .asm_1704fa
+
+.asm_17050f
+	ret
+; 170510
+
+Function170510: ; 170510
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_17051f
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 17051f
+
+Jumptable_17051f: ; 17051f
+	dw Function170525
+	dw Function170571
+	dw Function170577
+; 170525
+
+Function170525: ; 170525
+	ld a, $5
+	call GetSRAMBank
+
+	ld hl, $a89c
+	ld de, StringBuffer3
+	ld bc, $0016
+	call CopyBytes
+
+	ld hl, $a8b2
+	ld de, $c608
+	ld bc, $0096
+	call CopyBytes
+
+	call CloseSRAM
+	hlcoord 1, 1
+	ld de, StringBuffer3
+	call PlaceString
+	hlcoord 1, 3
+	ld de, String_170676
+	call PlaceString
+	hlcoord 4, 3
+	ld de, StringBuffer4
+	call PlaceString
+	hlcoord 8, 3
+	ld de, String_17067a
+	call PlaceString
+	call Function1705b7
+	call Function1705f0
+	jr Function1705b2
+
+
+Function170571:
+	call SetPalettes
+	call Function1705b2
+
+
+Function170577:
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and $1
+	jr nz, .asm_1705ac
+	ld a, [hl]
+	and $2
+	jr nz, .asm_1705ac
+	ld a, [hl]
+	and $40
+	jr nz, .asm_17058f
+	ld a, [hl]
+	and $80
+	jr nz, .asm_17059d
+	ret
+
+.asm_17058f
+	ld a, [wcf64]
+	and a
+	ret z
+	sub $f
+	ld [wcf64], a
+	call Function1705f0
+	ret
+
+.asm_17059d
+	ld a, [wcf64]
+	cp $3c
+	ret z
+	add $f
+	ld [wcf64], a
+	call Function1705f0
+	ret
+
+.asm_1705ac
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Function1705b2:
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+; 1705b7
+
+Function1705b7: ; 1705b7
+	hlcoord 0, 4
+	ld a, $79
+	ld [hli], a
+	ld c, $12
+.asm_1705bf
+	ld a, $7a
+	ld [hli], a
+	dec c
+	jr nz, .asm_1705bf
+	ld a, $7b
+	ld [hli], a
+	ld de, $0014
+	ld c, $c
+.asm_1705cd
+	ld a, $7c
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_1705cd
+	ld a, $7d
+	ld [hli], a
+	ld c, $12
+.asm_1705d9
+	ld a, $7a
+	ld [hli], a
+	dec c
+	jr nz, .asm_1705d9
+	ld a, $7e
+	ld [hl], a
+	ld de, $ffec
+	add hl, de
+	ld c, $c
+.asm_1705e8
+	ld a, $7c
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_1705e8
+	ret
+; 1705f0
+
+Function1705f0: ; 1705f0
+	call Function17064b
+	call Function17065d
+	ld a, $50
+	ld [wcd4e], a
+	ld hl, $c608
+	ld a, [wcf64]
+	ld c, a
+	xor a
+	ld b, a
+	add hl, bc
+	push hl
+	pop bc
+	hlcoord 1, 6
+	ld a, $6
+.asm_17060c
+	push af
+	push hl
+	ld a, $3
+.asm_170610
+	push af
+	ld de, wcd49
+	ld a, [bc]
+	and a
+	jr z, .asm_170625
+	ld a, $5
+.asm_17061a
+	push af
+	ld a, [bc]
+	ld [de], a
+	inc bc
+	inc de
+	pop af
+	dec a
+	jr nz, .asm_17061a
+	jr .asm_170631
+
+.asm_170625
+	ld a, $5
+.asm_170627
+	push af
+	ld a, $e3
+	ld [de], a
+	inc de
+	inc bc
+	pop af
+	dec a
+	jr nz, .asm_170627
+
+.asm_170631
+	ld de, wcd49
+	push bc
+	call PlaceString
+	ld de, $0006
+	add hl, de
+	pop bc
+	pop af
+	dec a
+	jr nz, .asm_170610
+	pop hl
+	ld de, $0028
+	add hl, de
+	pop af
+	dec a
+	jr nz, .asm_17060c
+	ret
+; 17064b
+
+Function17064b: ; 17064b
+	hlcoord 1, 5
+	xor a
+	ld b, $c
+.asm_170651
+	ld c, $12
+.asm_170653
+	ld [hli], a
+	dec c
+	jr nz, .asm_170653
+rept 2
+	inc hl
+endr
+	dec b
+	jr nz, .asm_170651
+	ret
+; 17065d
+
+Function17065d: ; 17065d
+	ld a, [wcf64]
+	and a
+	jr z, .asm_170669
+	hlcoord 18, 5
+	ld a, $61
+	ld [hl], a
+
+.asm_170669
+	ld a, [wcf64]
+	cp $3c
+	ret z
+	hlcoord 18, 16
+	ld a, $ee
+	ld [hl], a
+	ret
+; 170676
+
+String_170676: ; 170676
+	db "ルーム@"
+; 17067a
+
+String_17067a: ; 17067a
+	db "れきだいりーダーいちらん@"
+; 170687
+
+BattleTowerAction: ; 170687
+	ld a, [ScriptVar]
+	ld e, a
+	ld d, 0
+	ld hl, .jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 170696
+
+
+.jumptable: ; 170696 (5c:4696)
+	dw Function17075f ; 0x00
+	dw Function170788 ; 0x01
+	dw Function170778 ; 0x02
+	dw Function170799 ; 0x03
+	dw Function17079d ; 0x04
+	dw Function1707ac ; 0x05
+	dw Function1707f4 ; 0x06
+	dw Function170868 ; 0x07
+	dw Function170881 ; 0x08
+	dw Function17089a ; 0x09
+	dw Function1708b1 ; 0x0a
+	dw CheckMobileEventIndex ; 0x0b
+	dw Function1708c8 ; 0x0c
+	dw Function1708f0 ; 0x0d
+	dw Function17093c ; 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 Function170ae8 ; 0x18
+	dw Function170b16 ; 0x19
+	dw ResetBattleTowerTrainersSRAM ; 0x1a
+	dw Function1706ee ; 0x1b
+	dw Function17071b ; 0x1c
+	dw Function170729 ; 0x1d
+	dw Function17073e ; 0x1e
+	dw Function170737 ; 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
+
+Function1706ee: ; 1706ee (5c:46ee)
+	ld a, BANK(sbe50)
+	call GetSRAMBank
+
+	ld a, [sbe50]
+	call CloseSRAM
+	ld [ScriptVar], a
+	ld hl, NumItems
+	ld a, [hli]
+	cp $14
+	ret c
+	ld b, $14
+	ld a, [ScriptVar]
+	ld c, a
+.asm_170709
+	ld a, [hli]
+	cp c
+	jr nz, .asm_170711
+	ld a, [hl]
+	cp $5f
+	ret c
+.asm_170711
+	inc hl
+	dec b
+	jr nz, .asm_170709
+	ld a, $12
+	ld [ScriptVar], a
+	ret
+
+Function17071b: ; 17071b (5c:471b)
+	ld a, BANK(s1_be45)
+	call GetSRAMBank
+	ld a, $3
+	ld [s1_be45], a
+	call CloseSRAM
+	ret
+
+Function170729: ; 170729 (5c:4729)
+	ld a, BANK(s1_be45)
+	call GetSRAMBank
+	ld a, $4
+	ld [s1_be45], a
+	call CloseSRAM
+	ret
+
+Function170737: ; 170737 (5c:4737)
+	callba SaveOptions
+	ret
+
+Function17073e: ; 17073e (5c:473e)
+	call Random
+	ld a, [hRandomAdd]
+	and $7
+	cp $6
+	jr c, .asm_17074b
+	sub $6
+.asm_17074b
+	add $1a
+	cp $1e
+	jr z, Function17073e
+	push af
+	ld a, BANK(sbe50)
+	call GetSRAMBank
+	pop af
+	ld [sbe50], a
+	call CloseSRAM
+	ret
+
+Function17075f: ; 17075f (5c:475f)
+	call Function17089a
+	ld a, [ScriptVar]
+	and a
+	ret z
+	ld a, BANK(sbe4f)
+	call GetSRAMBank
+	ld a, [sbe4f]
+	and $2
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function170778: ; 170778 (5c:4778)
+	ld hl, s1_be45
+	ld a, BANK(s1_be45)
+	call GetSRAMBank
+	ld a, [hl]
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function170788: ; 170788 (5c:4788)
+	ld a, BANK(sbe4f)
+	call GetSRAMBank
+	ld a, [sbe4f]
+	or $2
+	ld [sbe4f], a
+	call CloseSRAM
+	ret
+
+Function170799: ; 170799 (5c:4799)
+	ld c, $1
+	jr asm_17079f
+
+Function17079d: ; 17079d (5c:479d)
+	ld c, $0
+asm_17079f: ; 17079f (5c:479f)
+	ld a, BANK(s1_be45)
+	call GetSRAMBank
+	ld a, c
+	ld [s1_be45], a
+	call CloseSRAM
+	ret
+
+Function1707ac: ; 1707ac (5c:47ac)
+	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)
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld [$be46], a
+	ld [$aa8b], a
+	ld [$aa8c], a
+	call CloseSRAM
+	ret
+
+Function170807: ; 170807 (5c:4807)
+	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)
+	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, $8c
+	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
+
+Function170868: ; 170868 (5c:4868)
+	ld a, BANK(sbe47)
+	call GetSRAMBank
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [wd000 + $800]
+	ld [sbe47], a
+	pop af
+	ld [rSVBK], a
+	call CloseSRAM
+	ret
+
+Function170881: ; 170881 (5c:4881)
+	ld a, BANK(sbe47)
+	call GetSRAMBank
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld a, [sbe47]
+	ld [wd000 + $800], a
+	pop af
+	ld [rSVBK], a
+	call CloseSRAM
+	ret
+
+Function17089a: ; 17089a
+	ld a, [wcfcd]
+	and a
+	jr z, .asm_1708ad
+	callba Function14bcb
+	jr z, .asm_1708ab
+	xor a
+	jr .asm_1708ad
+
+.asm_1708ab
+	ld a, $1
+
+.asm_1708ad
+	ld [ScriptVar], a
+	ret
+; 1708b1
+
+
+Function1708b1: ; 1708b1 (5c:48b1)
+	xor a
+	ld [MusicFade], a
+	call MaxVolume
+	ret
+
+CheckMobileEventIndex: ; 1708b9 (5c:48b9) 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)
+	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)
+	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
+
+
+Function17093c: ; 17093c (5c:493c)
+	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 ; wddff (aliases: PartyMonOT)
+	ld de, $6
+	ld a, b
+	and a
+	jr z, .skip
+.loop2
+	add hl, de
+	dec a
+	jr nz, .loop2
+.skip
+	ld de, String_1709a4
+	ld a, $6
+.asm_17096e
+	push af
+	ld a, [de]
+	inc de
+	cp [hl]
+	inc hl
+	jr nz, .asm_17099d
+	pop af
+	dec a
+	jr nz, .asm_17096e
+rept 4
+	dec hl
+endr
+	ld a, $50
+rept 2
+	ld [hli], a
+endr
+	pop hl
+	ld a, EGG_TICKET
+	ld [CurItem], a
+	ld a, $1
+	ld [wItemQuantityChangeBuffer], a
+	ld a, $ff
+	ld [wd107], a
+	ld hl, NumItems
+	call TossItem
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_17099d
+	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)
+	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)
+	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
+rept 2
+	add hl, de
+endr
+	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 Function170a00
+	dw Function170a00
+	dw Function1709f3
+	dw Function1709f3
+	dw Function170a01
+	dw Function170a33
+; 1709f3
+
+Function1709f3: ; 1709f3
+	ld a, $5
+	call GetSRAMBank
+	ld a, $1
+	ld [$a800], a
+	call CloseSRAM
+
+Function170a00: ; 170a00
+	ret
+; 170a01
+
+Function170a01: ; 170a01
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $b023
+	ld de, $c608
+	ld bc, $0069
+	call CopyBytes
+	ld a, [$a825]
+	ld [wcd30], a
+	ld a, [$a826]
+	ld [wcd31], a
+	call CloseSRAM
+	callba Function11b6b4
+	callba Function17d0f3
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+; 170a33
+
+Function170a33: ; 170a33
+	ld a, $0
+	call GetSRAMBank
+	ld hl, wRTC
+	ld de, $c608
+	ld bc, $0004
+	call CopyBytes
+	call CloseSRAM
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $b08c
+	ld de, $c608
+	ld c, $4
+.asm_170a54
+	ld a, [de]
+	inc de
+	cp [hl]
+	jr nz, .asm_170a78
+	inc hl
+	dec c
+	jr nz, .asm_170a54
+	call CloseSRAM
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+	call GetMapTrigger
+	ld a, d
+	or e
+	jr z, .asm_170a72
+	ld a, [de]
+	and a
+	ret nz
+
+.asm_170a72
+	ld a, $1
+	ld [ScriptVar], a
+	ret
+
+.asm_170a78
+	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 GetMapTrigger
+	ld a, d
+	or e
+	jr z, .asm_170a9b
+	xor a
+	ld [de], a
+
+.asm_170a9b
+	ret
+; 170a9c
+
+Function170a9c: ; 170a9c (5c:4a9c)
+	ld c, $0
+	jr asm_170aa2
+
+Function170aa0: ; 170aa0 (5c:4aa0)
+	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)
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$aa8d]
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function170abe: ; 170abe (5c:4abe)
+	call Function17089a
+	ld a, [ScriptVar]
+	and a
+	ret z
+	ld a, BANK(sbe4f)
+	call GetSRAMBank
+	ld a, [sbe4f]
+	and $1
+	ld [ScriptVar], a
+	call CloseSRAM
+	ret
+
+Function170ad7: ; 170ad7 (5c:4ad7)
+	ld a, BANK(sbe4f)
+	call GetSRAMBank
+	ld a, [sbe4f]
+	or $1
+	ld [sbe4f], a
+	call CloseSRAM
+	ret
+
+Function170ae8: ; 170ae8 (5c:4ae8)
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld c, $a
+	call SimpleDivide
+	ld a, b
+	ld [wcd4f], a
+	xor a
+	ld [ScriptVar], a
+	callba Function119d93
+	ret nc
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld [ScriptVar], a
+	ret
+
+Function170b16: ; 170b16 (5c:4b16)
+	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
+	callba Function119dd1
+	ret nc
+	ld a, $5
+	call GetSRAMBank
+	ld a, [$b2fb]
+	call CloseSRAM
+	ld [ScriptVar], a
+	ret
+
+Function_LoadOpponentTrainerAndPokemonsWithOTSprite: ; 0x170b44
+	callba Function_LoadOpponentTrainerAndPokemons
+	ld a, [rSVBK]
+	push af
+	ld a, $3
+	ld [rSVBK], a
+	ld hl, wd10a
+	ld a, [hl]
+	dec a
+	ld c, a
+	ld b, $0
+	pop af
+	ld [rSVBK], a
+	ld hl, Unknown_170b90
+	add hl, bc
+	ld a, [hl]
+	ld [wcd49], 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, [wcd49]
+	ld [hl], a
+	ld hl, UsedSprites
+	add hl, de
+	ld [hli], a
+	ld [hUsedSpriteIndex], a
+	ld a, [hl]
+	ld [hUsedSpriteTile], a
+	callba Function143c8
+	ret
+; 170b90
+
+Unknown_170b90:
+	db $12, $13, $14, $15, $18, $17
+	db $16, $19, $04, $05, $11, $01
+	db $1c, $1b, $21, $1e, $1a, $1d
+	db $1f, $3c, $20, $27, $27, $27
+	db $28, $0a, $23, $24, $2a, $2b
+	db $35, $40, $2a, $29, $22, $25
+	db $3a, $2b, $24, $49, $2b, $07
+	db $2c, $2d, $4a, $0d, $4b, $3a
+	db $2b, $41, $35, $27, $28, $27
+	db $36, $3e, $30, $2c, $2d, $3d
+	db $26, $2e, $06, $07, $43, $36
+
+Function170bd2: ; 170bd2
+	ret
+; 170bd3
+
+SpecialCheckForBattleTowerRules: ; 170bd3
+	callba CheckForBattleTowerRules
+	jr c, .asm_170bde
+	xor a
+	jr .asm_170be0
+
+.asm_170bde
+	ld a, $1
+
+.asm_170be0
+	ld [ScriptVar], a
+	ret
+; 170be4
+Function170be4: ; 170be4
+	ld a, $5
+	call GetSRAMBank
+	xor a
+	ld hl, $a894
+	ld bc, $0008
+	call ByteFill
+	call CloseSRAM
+	ret
+; 170bf7
+
+Clears5_a89a: ; 170bf7
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a89a
+	xor a
+	ld [hli], a
+	ld [hl], a
+	call CloseSRAM
+	ret
+; 170c06
+
+Function170c06: ; 170c06
+	ld a, $5
+	call GetSRAMBank
+	ld hl, $a894
+	ld a, [wBattleResult]
+	and a
+	jr nz, .asm_170c15
+	inc [hl]
+
+.asm_170c15
+rept 2
+	inc hl
+endr
+	ld a, [$a89b]
+	add [hl]
+	ld [hld], a
+	ld a, [$a89a]
+	adc [hl]
+	ld [hli], a
+	jr nc, .asm_170c27
+	ld a, $ff
+	ld [hld], a
+	ld [hli], a
+
+.asm_170c27
+	inc hl
+	push hl
+	ld de, 0
+	xor a
+	ld [wd265], a
+.asm_170c30
+	ld hl, PartyMon1HP
+	ld a, [wd265]
+	call GetPartyLocation
+	ld a, [hli]
+	ld b, a
+	ld c, [hl]
+rept 2
+	inc hl
+endr
+	ld a, [hld]
+	sub c
+	ld c, a
+	ld a, [hl]
+	sbc b
+	ld b, a
+	push de
+	pop hl
+	add hl, bc
+	push hl
+	pop de
+	jr c, .asm_170c58
+	ld a, [wd265]
+	inc a
+	ld [wd265], a
+	cp $3
+	jr c, .asm_170c30
+	jr .asm_170c5b
+
+.asm_170c58
+	ld de, -1
+
+.asm_170c5b
+	pop hl
+	inc hl
+	ld a, e
+	add [hl]
+	ld [hld], a
+	ld a, d
+	adc [hl]
+	ld [hli], a
+	jr nc, .asm_170c69
+	ld a, $ff
+	ld [hld], a
+	ld [hli], a
+
+.asm_170c69
+	inc hl
+	push hl
+	ld b, $0
+	ld c, $0
+.asm_170c6f
+	ld hl, PartyMon1HP
+	ld a, b
+	push bc
+	call GetPartyLocation
+	pop bc
+	ld a, [hli]
+	or [hl]
+	jr nz, .asm_170c7d
+	inc c
+
+.asm_170c7d
+	inc b
+	ld a, b
+	cp $3
+	jr c, .asm_170c6f
+	pop hl
+	ld a, [hl]
+	add c
+	ld [hl], a
+	call CloseSRAM
+	ret
+; 170c8b
+
+Function170c8b: ; 170c8b
+	ld hl, LastPlayerCounterMove
+	ld b, $5
+.asm_170c90
+	ld a, [hl]
+	xor $ff
+	ld [hli], a
+	dec b
+	jr nz, .asm_170c90
+	ret
+; 170c98
+
+CheckBTMonMovesForErrors: ; 170c98
+	ld c, BATTLETOWER_NROFPKMNS
+	ld hl, wBT_OTTempPkmn1Moves
+.loop
+	push hl
+	ld a, [hl]
+	cp NUM_ATTACKS + 1
+	jr c, .okay
+	ld a, POUND
+	ld [hl], a
+
+.okay
+	inc hl
+	ld b, NUM_MOVES - 1
+.loop2
+	ld a, [hl]
+	and a
+	jr z, .loop3
+	cp NUM_ATTACKS + 1
+	jr c, .next
+
+.loop3
+	xor a
+	ld [hl], a
+	inc hl
+	dec b
+	jr nz, .loop3
+	jr .done
+
+.next
+	inc hl
+	dec b
+	jr nz, .loop2
+
+.done
+	pop hl
+	ld de, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+	add hl, de
+	dec c
+	jr nz, .loop
+	ret
+; 170cc6
+
+Function170cc6: ; 170cc6
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	ld hl, LZ_170d16
+	ld de, wd000
+	call Decompress
+	ld a, $1
+	ld [rVBK], a
+	ld de, wd000
+	ld hl, VTiles0
+	lb bc, $6, $c1
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ld hl, LZ_1715a4
+	ld de, wd000
+	call Decompress
+	ld de, wMapPals
+	ld hl, VTiles0
+	lb bc, $6, $53
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+; 170d02
+
+Function170d02: ; 170d02
+	ld a, $1
+	ld [rVBK], a
+	ld de, GFX_171848
+	ld hl, VTiles1 tile $41
+	lb bc, BANK(GFX_171848), $18
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+; 170d16
+
+LZ_170d16:
+INCBIN "gfx/unknown/170d16.2bpp.lz"
+
+LZ_1715a4:
+INCBIN "gfx/unknown/1715a4.2bpp.lz"
+
+GFX_171848:
+INCBIN "gfx/unknown/171848.2bpp"
+
+Function1719c8: ; 1719c8 (5c:59c8)
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call Function1719d6
+	pop af
+	ld [hInMenu], a
+	ret
+
+Function1719d6: ; 1719d6 (5c:59d6)
+	callba Function1183cb
+	call Function1719ed
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	call Function171a11
+	pop af
+	ld [rSVBK], a
+	ret
+
+Function1719ed: ; 1719ed (5c:59ed)
+	xor a
+	ld [wcd49], a
+	ld [wcd4a], a
+	dec a
+	ld [wcd4b], a
+	call ClearBGPalettes
+	call ClearSprites
+	callba Function171d2b
+	callba Function104061
+	callba Function8cf53
+	ret
+
+Function171a11: ; 171a11 (5c:5a11)
+	call JoyTextDelay
+	ld a, [wcd49]
+	bit 7, a
+	jr nz, .asm_171a2c
+	call Function171a36
+	callba Function8cf69
+	callba Function104061
+	jr Function171a11
+.asm_171a2c
+	callba Function8cf53
+	call ClearSprites
+	ret
+
+Function171a36: ; 171a36 (5c:5a36)
+	ld a, [wcd49]
+	ld e, a
+	ld d, 0
+	ld hl, Jumptable_171a45
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_171a45: ; 171a45 (5c:5a45)
+	dw Function171a95
+	dw Function171ac9
+	dw Function171a5d
+	dw Function171ad7
+	dw Function171a5d
+	dw Function171aec
+	dw Function171b4b
+	dw Function171b85
+	dw Function171bcc
+	dw Function171c2c
+	dw Function171c39
+	dw Function171c41
+
+
+Function171a5d: ; 171a5d (5c:5a5d)
+	ld a, [wc821]
+	bit 1, a
+	jr nz, .asm_171a6a
+	bit 0, a
+	ret nz
+	jp Function171c66
+.asm_171a6a
+	ld a, $0
+	call Function3e32
+	ld [wc300], a
+	ld a, l
+	ld [wc301], a
+	ld a, h
+	ld [wc302], a
+	ld a, $a
+	call Function3e32
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	callba Function118452
+	pop af
+	ld [rSVBK], a
+	ld a, $a
+	ld [wcd49], a
+	ret
+
+Function171a95: ; 171a95 (5c:5a95)
+	callba Function171ccd
+	hlcoord 2, 8
+	ld de, String_171aa7
+	call PlaceString
+	jp Function171c66
+; 171aa7 (5c:5aa7)
+
+String_171aa7: ; 171aa7
+	db   "モバイルアダプタに"
+	next "せつぞく しています"
+	next "しばらく おまちください"
+	db   "@"
+; 171ac9
+
+Function171ac9: ; 171ac9 (5c:5ac9)
+	ld de, wcd81
+	ld hl, $5c
+	ld a, $2
+	call Function3e32
+	jp Function171c66
+
+Function171ad7: ; 171ad7 (5c:5ad7)
+	xor a
+	ld hl, $c608
+	ld bc, $66
+	call ByteFill
+	ld de, $c608
+	ld a, $c
+	call Function3e32
+	jp Function171c66
+
+Function171aec: ; 171aec (5c:5aec)
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	callba Function118452
+	pop af
+	ld [rSVBK], a
+	hlcoord 2, 6
+	ld a, $8
+.asm_171b01
+	push af
+	push hl
+	xor a
+	ld bc, $10
+	call ByteFill
+	pop hl
+	ld de, $14
+	add hl, de
+	pop af
+	dec a
+	jr nz, .asm_171b01
+	hlcoord 2, 7
+	ld a, $3
+	ld de, $c608
+.asm_171b1b
+	push af
+	push hl
+	ld a, [de]
+	and a
+	jr z, .asm_171b34
+	ld a, [wcd4b]
+	inc a
+	ld [wcd4b], a
+	push hl
+	call Function171b42
+	pop hl
+	ld bc, $ffec
+	add hl, bc
+	call Function171b42
+.asm_171b34
+	pop hl
+	ld bc, $14
+rept 3
+	add hl, bc
+endr
+	pop af
+	dec a
+	jr nz, .asm_171b1b
+	jp Function171c66
+
+Function171b42: ; 171b42 (5c:5b42)
+	ld a, [de]
+	inc de
+	and a
+	ret z
+	sub $20
+	ld [hli], a
+	jr Function171b42
+
+Function171b4b: ; 171b4b (5c:5b4b)
+	lb de, $40, $10
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $8
+	ld [hl], a
+	lb de, $40, $98
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $9
+	ld [hl], a
+	lb de, $8a, $70
+	ld a, $1d
+	call Function3b2a
+	ld hl, $c
+	add hl, bc
+	ld a, $a
+	ld [hl], a
+	ld a, $4
+	ld [wcd23], a
+	ld a, $8
+	ld [wcd24], a
+	jp Function171c66
+
+Function171b85: ; 171b85 (5c:5b85)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and $2
+	jp nz, Function171b9f
+	ld a, [hl]
+	and $1
+	jp nz, Function171bbd
+	ld a, [hl]
+	and $40
+	jr nz, asm_171ba5
+	ld a, [hl]
+	and $80
+	jr nz, asm_171baf
+	ret
+
+Function171b9f: ; 171b9f (5c:5b9f)
+	ld a, $80
+	ld [wcd49], a
+	ret
+asm_171ba5: ; 171ba5 (5c:5ba5)
+	ld a, [wcd4a]
+	and a
+	ret z
+	dec a
+	ld [wcd4a], a
+	ret
+asm_171baf: ; 171baf (5c:5baf)
+	ld a, [wcd4b]
+	ld c, a
+	ld a, [wcd4a]
+	cp c
+	ret z
+	inc a
+	ld [wcd4a], a
+	ret
+
+Function171bbd: ; 171bbd (5c:5bbd)
+	call PlayClickSFX
+	ld a, $8
+	ld [wcd23], a
+	xor a
+	ld [wcd24], a
+	jp Function171c66
+
+Function171bcc: ; 171bcc (5c:5bcc)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and $2
+	jp nz, Function171bdc
+	ld a, [hl]
+	and $1
+	jp nz, Function171beb
+	ret
+
+Function171bdc: ; 171bdc (5c:5bdc)
+	ld a, $4
+	ld [wcd23], a
+	ld a, $8
+	ld [wcd24], a
+	ld hl, wcd49
+	dec [hl]
+	ret
+
+Function171beb: ; 171beb (5c:5beb)
+	ld a, $5
+	call GetSRAMBank
+	ld a, [wcd4a]
+	ld [$aa4a], a
+	call CloseSRAM
+	ld hl, MenuDataHeader_171c6b
+	call LoadMenuDataHeader
+	call MenuBox
+	call MenuBoxCoord2Tile
+	callba Function104061
+	hlcoord 1, 14
+	ld de, String_171c73
+	call PlaceString
+	ld a, [wcd4a]
+	cp $2
+	jr z, .asm_171c1f
+	ld a, $8
+	jr .asm_171c21
+.asm_171c1f
+	ld a, $c
+.asm_171c21
+	ld [wcd24], a
+	ld a, $1e
+	ld [wcd4c], a
+	call Function171c66
+
+Function171c2c: ; 171c2c (5c:5c2c)
+	ld hl, wcd4c
+	dec [hl]
+	ret nz
+	call ExitMenu
+	call ClearBGPalettes
+	jr asm_171c60
+
+Function171c39: ; 171c39 (5c:5c39)
+	ld a, $28
+	ld [wcd4c], a
+	call Function171c66
+
+Function171c41: ; 171c41 (5c:5c41)
+	ld hl, wcd4c
+	dec [hl]
+	ret nz
+	call ClearBGPalettes
+	callba Function106462
+	callba Function106464
+	ld a, $2
+	ld [wc303], a
+	callba Function17f555
+asm_171c60: ; 171c60 (5c:5c60)
+	ld a, $80
+	ld [wcd49], a
+	ret
+
+Function171c66: ; 171c66 (5c:5c66)
+	ld hl, wcd49
+	inc [hl]
+	ret
+; 171c6b (5c:5c6b)
+
+MenuDataHeader_171c6b: ; 171c6b
+	db $40 ; flags
+	db 12,  0 ; start coords
+	db 17, 19 ; end coords
+	dw NULL
+	db 0 ; default option
+; 171c73
+
+String_171c73: ; 171c73
+	db   "モバイルセンターを けってい"
+	next "しました@"
+; 171c87
+
+Function171c87: ; 171c87 (5c:5c87)
+	call DisableLCD
+	ld hl, GFX_171db1
+	ld de, VTiles2 tile $00
+	ld bc, $6e0
+	call CopyBytes
+	ld hl, LZ_172abd
+	ld de, VTiles0 tile $00
+	call Decompress
+	call EnableLCD
+	ld hl, Tilemap_172491
+	decoord 0, 0
+	ld bc, $168
+	call CopyBytes
+	ld hl, Attrmap_1727ed
+	decoord 0, 0, AttrMap
+	ld bc, $168
+	call CopyBytes
+	hlcoord 3, 2
+	ld de, String_172e31
+	call PlaceString
+	hlcoord 3, 16
+	ld de, String_172e3f
+	call PlaceString
+	ret
+
+Function171ccd: ; 171ccd (5c:5ccd)
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_171d71
+	ld de, wMapPals
+	ld bc, $40
+	call CopyBytes
+	ld hl, MovementAnimation
+	ld a, $ff
+	ld [hli], a
+	ld a, $7f
+	ld [hl], a
+	call SetPalettes
+	pop af
+	ld [rSVBK], a
+	ret
+
+Function171cf0: ; 171cf0 (5c:5cf0)
+	xor a
+	hlcoord 4, 15
+rept 2
+	ld [hli], a
+endr
+	ld a, [wcd4b]
+	xor $1
+	ld [wcd4b], a
+	and a
+	jr nz, .asm_171d16
+	ld hl, Tilemap_17251d
+	decoord 0, 7
+	ld bc, $8c
+	call CopyBytes
+	hlcoord 3, 16
+	ld de, String_172e3f
+	jp PlaceString
+.asm_171d16
+	ld hl, Tilemap_1725f9
+	decoord 0, 7
+	ld bc, $8c
+	call CopyBytes
+	hlcoord 3, 16
+	ld de, String_172e4e
+	jp PlaceString
+
+Function171d2b: ; 171d2b (5c:5d2b)
+	call DisableLCD
+	ld hl, GFX_171db1
+	ld de, VTiles2 tile $00
+	ld bc, $6e0
+	call CopyBytes
+	ld hl, LZ_172abd
+	ld de, VTiles0 tile $00
+	call Decompress
+	call EnableLCD
+	ld hl, Tilemap_172685
+	decoord 0, 0
+	ld bc, $168
+	call CopyBytes
+	ld hl, Attrmap_172955
+	decoord 0, 0, AttrMap
+	ld bc, $168
+	call CopyBytes
+	hlcoord 2, 2
+	ld de, String_172e5d
+	call PlaceString
+	hlcoord 14, 16
+	ld de, String_172e58
+	call PlaceString
+	ret
+; 171d71 (5c:5d71)
+
+Palette_171d71:
+	RGB  0,  0,  0
+	RGB  3,  0,  0
+	RGB  5,  0,  0
+	RGB 31, 31, 29
+	RGB  0,  2, 10
+	RGB  2, 10, 21
+	RGB  0,  0,  0
+	RGB 10, 26, 31
+	RGB  0,  0,  0
+	RGB  0,  7,  8
+	RGB 31,  8,  0
+	RGB  1, 17, 15
+	RGB 31, 16,  0
+	RGB 31, 22,  0
+	RGB 31, 27,  0
+	RGB 31, 31,  0
+	RGB 31, 18,  6
+	RGB  0,  3,  0
+	RGB  0,  9,  0
+	RGB  0, 12,  0
+	RGB  0, 16,  0
+	RGB  0, 22,  0
+	RGB  0, 25,  0
+	RGB  0, 27,  0
+	RGB  5,  5, 16
+	RGB  8, 19, 28
+	RGB  0,  0,  0
+	RGB 31, 31, 31
+	RGB 31, 31, 29
+	RGB 21, 21, 20
+	RGB 11, 11, 10
+	RGB  0,  0,  0
+GFX_171db1:
+INCBIN "gfx/unknown/171db1.2bpp"
+Tilemap_172491:
+INCBIN "gfx/unknown/172491.tilemap"
+Tilemap_17251d:
+INCBIN "gfx/unknown/17251d.tilemap"
+Tilemap_1725f9:
+INCBIN "gfx/unknown/1725f9.tilemap"
+Tilemap_172685:
+INCBIN "gfx/unknown/172685.tilemap"
+Attrmap_1727ed:
+INCBIN "gfx/unknown/1727ed.attrmap"
+Attrmap_172955:
+INCBIN "gfx/unknown/172955.attrmap"
+LZ_172abd:
+INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
+
+String_172e31: ; 172e31
+	db "パスワード", $1f, "いれてください@"
+String_172e3f: ; 172e3f
+	db "きりかえ やめる  けってい@"
+String_172e4e: ; 172e4e
+	db "きりかえ やめる  "
+String_172e58:
+	db "けってい@"
+String_172e5d: ; 172e5d
+	db "せつぞくする モバイルセンターを"
+	next "えらんで ください@"
+; 172e78
+
+
+Function172e78: ; 172e78 (5c:6e78)
+	ld a, $7f
+	hlcoord 0, 0
+	ld bc, $168
+	call ByteFill
+	ld a, $7
+	hlcoord 0, 0, AttrMap
+	ld bc, $168
+	call ByteFill
+	call DisableLCD
+	ld hl, GFX_172f1f
+	ld de, VTiles2 tile $00
+	ld bc, $610
+	call CopyBytes
+	call EnableLCD
+	ld hl, Tilemap_1733af
+	decoord 0, 0
+	ld bc, $168
+	call CopyBytes
+	ld hl, Attrmap_173517
+	decoord 0, 0, AttrMap
+	ld bc, $168
+	call CopyBytes
+	ret
+; 172eb9 (5c:6eb9)
+
+Function172eb9:
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, Palette_172edf
+	ld de, wMapPals
+	ld bc, $40
+	call CopyBytes
+	ld hl, Palette_172edf
+	ld de, BGPals
+	ld bc, $40
+	call CopyBytes
+	call SetPalettes
+	pop af
+	ld [rSVBK], a
+	ret
+; 172edf (5c:6edf)
+
+Palette_172edf:
+	RGB  5, 12, 17
+	RGB 31, 31, 31
+	RGB 18, 25, 28
+	RGB 10, 17, 21
+	RGB  6, 13, 18
+	RGB 31, 31, 31
+	RGB 20, 26, 28
+	RGB 12, 19, 23
+	RGB  3, 10, 16
+	RGB 31, 31, 31
+	RGB  6, 13, 18
+	RGB 20, 26, 28
+	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  5,  5, 16
+	RGB  8, 19, 28
+	RGB  0,  0,  0
+	RGB 31, 31, 31
+	RGB 31, 31, 31
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+	RGB  0,  0,  0
+
+GFX_172f1f:
+INCBIN "gfx/unknown/172f1f.2bpp"
+
+Tilemap_1733af:
+IF DEF(CORRUPT_TILES)
+INCBIN "gfx/unknown/1733af_corrupt.tilemap"
+ELSE
+INCBIN "gfx/unknown/1733af.tilemap"
+ENDC
+
+Attrmap_173517:
+INCBIN "gfx/unknown/173517.attrmap"
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -10,8 +10,8 @@
 	xor a
 	call ByteFill
 
-	call Functione51
-	call Functione5f
+	call LoadStandardFont
+	call LoadFontsExtra
 
 	ld hl, HaveWantMap
 	decoord 0, 0
@@ -48,11 +48,11 @@
 	ld a, [rSVBK]
 	push af
 
-	ld a, 5 ; BANK(Unkn1Pals)
+	ld a, 5 ; BANK(wMapPals)
 	ld [rSVBK], a
 
 	ld hl, HaveWantPals
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $80
 	call CopyBytes
 
@@ -178,48 +178,50 @@
 	RGB  0,  0,  0
 
 
-Function17d073: ; 17d073
-.asm_17d073
+CheckStringForErrors: ; 17d073
+; Valid character ranges:
+; $00, $05 - $13, $19 - $1c, $26 - $34, $3a - $3e, $40 - $48, $60 - $ff
+.loop
 	ld a, [de]
 	inc de
 	and a
-	jr z, .asm_17d0ae
+	jr z, .NextChar
 	cp $60
-	jr nc, .asm_17d0ae
+	jr nc, .NextChar
 	cp $4e
-	jr z, .asm_17d0ae
-	cp $50
-	jr z, .asm_17d0b1
+	jr z, .NextChar
+	cp "@"
+	jr z, .Done
 	cp $5
-	jr c, .asm_17d0ac
-	cp $14
-	jr c, .asm_17d0ae
+	jr c, .Fail
+	cp "<PLAY_G>"
+	jr c, .NextChar
 	cp $19
-	jr c, .asm_17d0ac
+	jr c, .Fail
 	cp $1d
-	jr c, .asm_17d0ae
+	jr c, .NextChar
 	cp $26
-	jr c, .asm_17d0ac
+	jr c, .Fail
 	cp $35
-	jr c, .asm_17d0ae
+	jr c, .NextChar
 	cp $3a
-	jr c, .asm_17d0ac
+	jr c, .Fail
 	cp $3f
-	jr c, .asm_17d0ae
+	jr c, .NextChar
 	cp $40
-	jr c, .asm_17d0ac
+	jr c, .Fail
 	cp $49
-	jr c, .asm_17d0ae
+	jr c, .NextChar
 
-.asm_17d0ac
+.Fail
 	scf
 	ret
 
-.asm_17d0ae
+.NextChar
 	dec c
-	jr nz, .asm_17d073
+	jr nz, .loop
 
-.asm_17d0b1
+.Done
 	and a
 	ret
 ; 17d0b3
@@ -281,18 +283,18 @@
 	ld a, $50
 	ld [de], a
 	ld a, [$c608 + 11]
-	ld [wc731], a
+	ld [wEnemyWrapCount], a
 	ld a, [$c608 + 12]
-	ld [wc732], a
+	ld [wPlayerCharging], a
 	ld hl, $c608 + 26
 	ld a, [hli]
-	ld [wc72f], a
+	ld [wEnemyTrappingMove], a
 	ld a, [hl]
-	ld [wc730], a
+	ld [wPlayerWrapCount], a
 	ld bc, $c608 + 5
 	callba GetCaughtGender
 	ld a, c
-	ld [wc733], a
+	ld [wEnemyCharging], a
 	call SpeechTextBox
 	call FadeToMenu
 	callba Function10804d
@@ -410,7 +412,7 @@
 	ld hl, PartyMon1DVs
 	ld a, [PartyCount]
 	dec a
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	call AddNTimes
 	predef GetUnownLetter
 	callab Functionfba18
@@ -462,7 +464,7 @@
 	ld a, [ScriptVar]
 	cp $5
 	jr nz, .asm_17d25d
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $3
 	ret z
 	jr c, .asm_17d25d
@@ -470,7 +472,7 @@
 	jr .asm_17d260
 
 .asm_17d25d
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 
 .asm_17d260
 	ld [ScriptVar], a
@@ -559,7 +561,7 @@
 	ld a, d
 	ld [MusicFadeIDHi], a
 	call PlayMusic
-	call Function222a
+	call ReturnToMapFromSubmenu
 	call Function2b3c
 	ret
 ; 17d314
@@ -624,7 +626,7 @@
 	ld [wcd79], a
 	dec a
 	ld [wcd6c], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
 	callba Function104061
@@ -662,7 +664,7 @@
 	ld a, $6
 	call GetSRAMBank
 	ld hl, $a006
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $1000
 	call CopyBytes
 	call CloseSRAM
@@ -670,7 +672,7 @@
 ; 17d3f6
 
 Function17d3f6: ; 17d3f6
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearSprites
 	call ClearScreen
 	callba Function104061
@@ -703,7 +705,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, Palette_17eff6
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	call CopyBytes
 	call SetPalettes
@@ -983,7 +985,7 @@
 	ld a, $5
 	ld [rSVBK], a
 	ld hl, $c608
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	call CopyBytes
 	ld a, $4
@@ -1237,13 +1239,13 @@
 	call GetSRAMBank
 	ld hl, $a006
 	add hl, bc
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $1000
 	call CopyBytes
 	call CloseSRAM
 	xor a
 	ld [wcd77], a
-	call WhiteBGMap
+	call ClearBGPalettes
 	ret
 ; 17d7b4
 
@@ -1361,7 +1363,7 @@
 	ld a, [hli]
 	ld d, a
 	push hl
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	add hl, de
 	ld de, wcc60
 .asm_17d86c
@@ -1430,7 +1432,7 @@
 	ld a, $3
 	ld [rSVBK], a
 	ld hl, $c608
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld b, $0
 	call CopyBytes
 	ld a, $4
@@ -1465,7 +1467,7 @@
 	call Function17e41e
 	call Function17e32b
 	pop de
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	add hl, de
 	ld de, wcc60
 .asm_17d918
@@ -1926,19 +1928,19 @@
 	ld a, $5c
 	ld [wc70e], a
 	ld a, $1
-	ld [wc70f], a
+	ld [wEnemyGoesFirst], a
 	ld hl, wc708
 	call LoadMenuDataHeader
 	call InterpretMenu2
 	jr nc, .asm_17dc6e
 	ld a, $2
-	ld [wcfa9], a
+	ld [MenuSelection2], a
 
 .asm_17dc6e
 	call WriteBackup
 	pop af
 	ld [rSVBK], a
-	ld a, [wcfa9]
+	ld a, [MenuSelection2]
 	cp $1
 	jr nz, .asm_17dc85
 	ld a, [$c68a]
@@ -1982,7 +1984,7 @@
 Function17dcaf:
 	ld a, $5
 	ld [rSVBK], a
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	ld de, $0008
 	ld c, $8
 .asm_17dcbb
@@ -2153,7 +2155,7 @@
 	jr .asm_17ddc9
 
 .asm_17ddb7
-	ld a, [wc70f]
+	ld a, [wEnemyGoesFirst]
 	ld l, a
 	ld a, [wc710]
 	ld h, a
@@ -2217,7 +2219,7 @@
 	jr nz, .asm_17de26
 	ld a, [wc70e]
 	ld l, a
-	ld a, [wc70f]
+	ld a, [wEnemyGoesFirst]
 	ld h, a
 	jr .asm_17de2e
 
@@ -2275,7 +2277,7 @@
 .asm_17de78
 	ld a, [wc70e]
 	ld l, a
-	ld a, [wc70f]
+	ld a, [wEnemyGoesFirst]
 	ld h, a
 	jr .asm_17de8a
 
@@ -2398,7 +2400,7 @@
 	ld a, [hli]
 	ld b, a
 	push hl
-	callba SetPkmnCaughtData
+	callba SetPartymonCaughtData
 	pop hl
 	pop bc
 	jr .asm_17df5e
@@ -2585,7 +2587,7 @@
 	ld b, a
 	push hl
 	call CloseSRAM
-	callba Function4db92
+	callba SetBoxMonCaughtData
 	ld a, $1
 	call GetSRAMBank
 	pop hl
@@ -2877,7 +2879,7 @@
 	jr .asm_17e250
 
 .asm_17e23e
-	ld a, [wc70f]
+	ld a, [wEnemyGoesFirst]
 	ld l, a
 	ld a, [wc710]
 	ld h, a
@@ -3123,7 +3125,7 @@
 	ld a, $1
 	ld [rSVBK], a
 	callba MobileFn_106155
-	callba Function106187
+	callba BackupMobileEventIndex
 	pop af
 	ld [rSVBK], a
 	ret
@@ -3163,7 +3165,7 @@
 ; 17e40f
 
 Function17e40f: ; 17e40f
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	add hl, de
 	jr Function17e41e
 
@@ -3855,7 +3857,7 @@
 	ld b, a
 	ld a, [wcd57]
 	ld c, a
-	call Function31a4
+	call MobilePrintNum
 	ld a, l
 	ld [wcd52], a
 	ld a, h
@@ -4246,7 +4248,7 @@
 	ld b, $1
 	ld a, [wcd54]
 	ld c, a
-	call Function31a4
+	call MobilePrintNum
 	ld a, l
 	ld [wcd52], a
 	ld a, h
@@ -4417,7 +4419,7 @@
 	ld e, a
 	ld a, [hli]
 	ld d, a
-	ld hl, Unkn1Pals
+	ld hl, wMapPals
 	add hl, de
 	ld e, l
 	ld d, h
@@ -4562,7 +4564,7 @@
 	ld b, a
 	ld a, [wcd58]
 	ld c, a
-	call Function31a4
+	call MobilePrintNum
 	ld a, l
 	ld [wcd52], a
 	ld a, h
--- a/misc/unused_title.asm
+++ b/misc/unused_title.asm
@@ -3,7 +3,7 @@
 
 UnusedTitleScreen: ; 10c000
 
-	call WhiteBGMap
+	call ClearBGPalettes
 	call ClearTileMap
 	call DisableLCD
 	xor a
@@ -67,7 +67,7 @@
 	ld [rSVBK], a
 
 	ld hl, UnusedTitleBG_Palettes
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $40
 	call CopyBytes
 
--- a/predef/cgb.asm
+++ b/predef/cgb.asm
@@ -69,11 +69,11 @@
 
 Function8db8: ; 8db8
 	ld hl, PalPacket_9c66 + 1
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld c, $4
 	call CopyPalettes
 	ld hl, PalPacket_9c66 + 1
-	ld de, Unkn1Pals + $20
+	ld de, wMapPals + $20
 	ld c, $4
 	call CopyPalettes
 	ld hl, PalPacket_9c66 + 1
@@ -83,7 +83,7 @@
 	jr Function8e23
 
 Function8ddb: ; 8ddb
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	call Function9729
 	push hl
 	call Function9643
@@ -168,7 +168,7 @@
 	ld hl, Palette_b309
 
 .asm_8e93
-	ld de, Unkn1Pals + 8 * 7
+	ld de, wMapPals + 8 * 7
 	ld bc, $0008
 	ld a, $5
 	call FarCopyWRAM
@@ -182,7 +182,7 @@
 	ld hl, Palette_b309
 
 .asm_8ead
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0008
 	ld a, $5
 	call FarCopyWRAM
@@ -200,7 +200,7 @@
 	ld hl, Palettes_b729
 
 .asm_8ec8
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0030
 	ld a, $5
 	call FarCopyWRAM
@@ -211,7 +211,7 @@
 ; 8edb
 
 Function8edb: ; 8edb
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, [wcda1]
 	ld l, a
 	ld h, $0
@@ -228,7 +228,7 @@
 	ld hl, Palettes_a8ca
 	call Function9643
 	ld hl, Palette8f52
-	ld de, Unkn1Pals + 8 * 3
+	ld de, wMapPals + 8 * 3
 	ld bc, $0018
 	ld a, $5
 	call FarCopyWRAM
@@ -286,7 +286,7 @@
 ; 8f70
 
 Function8f70: ; 8f70
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $1d
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -334,7 +334,7 @@
 ; 8fca
 
 Function8fca: ; 8fca
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $1d
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -395,7 +395,7 @@
 ; 903e
 
 Function903e: ; 903e
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $1d
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -417,7 +417,7 @@
 
 Function906e: ; 906e
 	ld hl, Palettes_b7a9
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0080
 	ld a, $5
 	call FarCopyWRAM
@@ -508,7 +508,7 @@
 
 Function9133: ; 9133
 	ld hl, Palette_914e
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	call LoadHLPaletteIntoDE
 	ld hl, Palette_9156
 	ld de, Unkn2Pals
@@ -538,7 +538,7 @@
 ; 9166
 
 Function9166: ; 9166
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $38
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -563,7 +563,7 @@
 
 Function9195: ; 9195
 	ld hl, Palettes_b789
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0028
 	ld a, $5
 	call FarCopyWRAM
@@ -575,7 +575,7 @@
 
 Function91ad: ; 91ad
 	ld hl, Palettes_b641
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0080
 	ld a, $5
 	call FarCopyWRAM
@@ -604,7 +604,7 @@
 ; 91e4
 
 Function91e4: ; 91e4
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, c
 	and a
 	jr z, .asm_91f5
@@ -615,7 +615,7 @@
 
 .asm_91f5
 	ld hl, PartyMon1DVs
-	ld bc, PartyMon2 - PartyMon1
+	ld bc, PARTYMON_STRUCT_LENGTH
 	ld a, [CurPartyMon]
 	call AddNTimes
 	ld c, l
@@ -640,7 +640,7 @@
 
 Function9228: ; 9228
 	ld hl, Palettes_b6f1
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0028
 	ld a, $5
 	call FarCopyWRAM
@@ -689,7 +689,7 @@
 ; 9289
 
 Function9289: ; 9289
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	xor a
 	call Function976b
 	call Function9643
@@ -794,7 +794,7 @@
 ; 9373
 
 Function9373: ; 9373
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $10
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -831,7 +831,7 @@
 ; 93ba
 
 Function93ba: ; 93ba
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $1d
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -859,7 +859,7 @@
 	ld hl, Palettes_9439
 
 .asm_93e9
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0040
 	ld a, $5
 	call FarCopyWRAM
@@ -1000,7 +1000,7 @@
 ; 94fa
 
 Function94fa: ; 94fa
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, $4e
 	call GetAthPalletFromPalettes9df6
 	call LoadHLPaletteIntoDE
@@ -1024,7 +1024,7 @@
 ; 9529
 
 Function9529: ; 9529
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
 	call Function974b
@@ -1036,7 +1036,7 @@
 ; 9542
 
 Function9542: ; 9542
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, [CurPartySpecies]
 	call Function9775
 	call Function9643
@@ -1062,7 +1062,7 @@
 ; 9578
 
 Function9578: ; 9578
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld a, [CurPartySpecies]
 	ld bc, TempMonDVs
 	call Function9764
@@ -1075,7 +1075,7 @@
 
 Function9591: ; 9591
 	ld hl, Palette95e0
-	ld de, Unkn1Pals
+	ld de, wMapPals
 	ld bc, $0010
 	ld a, $5
 	call FarCopyWRAM
--- a/sram.asm
+++ b/sram.asm
@@ -1,16 +1,20 @@
+SRAM_Begin EQU $a000
+SRAM_End   EQU $c000
+GLOBAL SRAM_Begin, SRAM_End
+
+
 SECTION "Scratch", SRAM, BANK [0]
-SRAM_Begin::
 sScratch::
 
 
 SECTION "SRAM Bank 0", SRAM [$a600], BANK [0]
 
-s0_a600:: ds 6 * (party_struct_length + PartyMon1 - PartyMon1Item)
-s0_a71a:: ds 6 * (party_struct_length + PartyMon1 - PartyMon1Item)
+sPartyScratch1:: ds 6 * SCRATCHMON_STRUCT_LENGTH
+sPartyScratch2:: ds 6 * SCRATCHMON_STRUCT_LENGTH
 s0_a834:: ds 1
-s0_a835:: ds 10 * (party_struct_length + PartyMon1 - PartyMon1Item)
+s0_a835:: ds 10 * SCRATCHMON_STRUCT_LENGTH
 s0_aa0b:: ds 1
-s0_aa0c:: ds 10 * (party_struct_length + PartyMon1 - PartyMon1Item)
+s0_aa0c:: ds 10 * SCRATCHMON_STRUCT_LENGTH
 
 sMysteryGiftItem:: ds 1
 s0_abe3:: ds 1
@@ -52,8 +56,6 @@
 sBackupChecksum:: ds 2
 s0_bf0f:: ds 1
 sStackTop:: ds 2
-	ds $ee
-SRAM_End::
 
 
 SECTION "SRAM Bank 1", SRAM, BANK [1]
@@ -79,13 +81,17 @@
 	box sBox
 ; b160
 
-	ds $100
+	ds $f4
+s1_b254:: ds $c
 
 sLinkBattleStats:: ; b260
 sLinkBattleWins::   ds 2
-sLinkBattleLosses:: ds 2
-sLinkBattleDraws::  ds 2
-	ds $5a
+sLinkBattleLosses:: ds 2 ; b262
+sLinkBattleDraws::  ds 2 ; b264
+s1_b266::
+	ds 17
+s1_b277::
+	ds 73
 sLinkBattleStatsEnd::
 
 sHallOfFame:: ; b2c0
@@ -92,11 +98,11 @@
 	ds HOF_LENGTH * NUM_HOF_TEAMS
 sHallOfFameEnd::
 
-s1_be3c:: ds 1
+sMobileEventIndex:: ds 1
 
 sCrystalData::
 	ds wCrystalDataEnd - wCrystalData
-s1_be44:: ds 1
+sMobileEventIndexBackup:: ds 1
 s1_be45:: ds 1
 
 ; data of the BattleTower must be in SRAM because you can save and leave between battles
--- a/tilesets/animations.asm
+++ b/tilesets/animations.asm
@@ -958,7 +958,7 @@
 	jr z, .color2
 	
 .color1
-	ld hl, Unkn1Pals + $1a ; pal 3 color 1
+	ld hl, wMapPals + $1a ; pal 3 color 1
 	ld a, [hli]
 	ld [rBGPD], a
 	ld a, [hli]
@@ -966,7 +966,7 @@
 	jr .end
 	
 .color0
-	ld hl, Unkn1Pals + $18 ; pal 3 color 0
+	ld hl, wMapPals + $18 ; pal 3 color 0
 	ld a, [hli]
 	ld [rBGPD], a
 	ld a, [hli]
@@ -974,7 +974,7 @@
 	jr .end
 	
 .color2
-	ld hl, Unkn1Pals + $1c ; pal 3 color 2
+	ld hl, wMapPals + $1c ; pal 3 color 2
 	ld a, [hli]
 	ld [rBGPD], a
 	ld a, [hli]
@@ -1008,14 +1008,14 @@
 ; Ready for BGPD input...
 	ld a, %10100000 ; auto-increment, index $20 (pal 4 color 0)
 	ld [rBGPI], a
-	ld a, [$ff9b]
+	ld a, [hVBlankCounter]
 	and %00000010
 	jr nz, .bit1set
-	ld hl, Unkn1Pals + $20 ; pal 4 color 0
+	ld hl, wMapPals + $20 ; pal 4 color 0
 	jr .okay
 
 .bit1set
-	ld hl, Unkn1Pals + $22 ; pal 4 color 2
+	ld hl, wMapPals + $22 ; pal 4 color 2
 
 .okay
 	ld a, [hli]
--- a/tilesets/tileset_headers.asm
+++ b/tilesets/tileset_headers.asm
@@ -1,7 +1,5 @@
 tileset: macro
-	dbw BANK(\1GFX),  \1GFX
-	dbw BANK(\1Meta), \1Meta
-	dbw BANK(\1Coll), \1Coll
+	dba \1GFX, \1Meta, \1Coll
 	dw \1Anim
 	dw NULL
 	dw \1PalMap
--- /dev/null
+++ b/unknown/013a47.asm
@@ -1,0 +1,230 @@
+Function13a47: ; unreferenced
+	ld hl, PartyCount
+	ld a, [hl]
+	and a
+	ret z
+
+	cp PARTY_LENGTH + 1
+	jr c, .asm_13a54
+	ld a, PARTY_LENGTH
+	ld [hl], a
+.asm_13a54
+	inc hl
+
+	ld b, a
+	ld c, 0
+.asm_13a58
+	ld a, [hl]
+	and a
+	jr z, .asm_13a64
+	cp $fc
+	jr z, .asm_13a64
+	cp $fe
+	jr c, .asm_13a73
+
+.asm_13a64
+	ld [hl], SMEARGLE
+	push hl
+	push bc
+	ld a, c
+	ld hl, PartyMon1Species
+	call GetPartyLocation
+	ld [hl], SMEARGLE
+	pop bc
+	pop hl
+
+.asm_13a73
+	inc hl
+	inc c
+	dec b
+	jr nz, .asm_13a58
+	ld [hl], $ff
+
+	ld hl, PartyMon1
+	ld a, [PartyCount]
+	ld d, a
+	ld e, 0
+.asm_13a83
+	push de
+	push hl
+	ld b, h
+	ld c, l
+	ld a, [hl]
+	and a
+	jr z, .asm_13a8f
+	cp NUM_POKEMON + 1
+	jr c, .asm_13a9c
+
+.asm_13a8f
+	ld [hl], SMEARGLE
+	push de
+	ld d, 0
+	ld hl, PartySpecies
+	add hl, de
+	pop de
+	ld a, SMEARGLE
+	ld [hl], a
+
+.asm_13a9c
+	ld [CurSpecies], a
+	call GetBaseData
+	ld hl, MON_LEVEL
+	add hl, bc
+	ld a, [hl]
+	cp MIN_LEVEL
+	ld a, MIN_LEVEL
+	jr c, .asm_13ab4
+	ld a, [hl]
+	cp MAX_LEVEL
+	jr c, .asm_13ab5
+	ld a, MAX_LEVEL
+.asm_13ab4
+	ld [hl], a
+.asm_13ab5
+	ld [CurPartyLevel], a
+
+	ld hl, MON_MAXHP
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, MON_EXP + 2
+	add hl, bc
+	ld b, $1
+	predef CalcPkmnStats
+	pop hl
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop de
+	inc e
+	dec d
+	jr nz, .asm_13a83
+
+	ld de, PartyMonNicknames
+	ld a, [PartyCount]
+	ld b, a
+	ld c, 0
+.asm_13adc
+	push bc
+	call Function13b71
+	push de
+	callba CheckStringForErrors
+	pop hl
+	pop bc
+	jr nc, .asm_13b0e
+
+	push bc
+	push hl
+	ld hl, PartySpecies
+	push bc
+	ld b, 0
+	add hl, bc
+	pop bc
+	ld a, [hl]
+	cp EGG
+	ld hl, .TAMAGO
+	jr z, .asm_13b06
+	ld [wd265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+.asm_13b06
+	pop de
+	ld bc, PKMN_NAME_LENGTH
+	call CopyBytes
+	pop bc
+
+.asm_13b0e
+	inc c
+	dec b
+	jr nz, .asm_13adc
+
+	ld de, PartyMonOT
+	ld a, [PartyCount]
+	ld b, a
+	ld c, 0
+.asm_13b1b
+	push bc
+	call Function13b71
+	push de
+	callba CheckStringForErrors
+	pop hl
+	jr nc, .asm_13b34
+	ld d, h
+	ld e, l
+	ld hl, PlayerName
+	ld bc, NAME_LENGTH
+	call CopyBytes
+.asm_13b34
+	pop bc
+	inc c
+	dec b
+	jr nz, .asm_13b1b
+
+	ld hl, PartyMon1Moves
+	ld a, [PartyCount]
+	ld b, a
+.asm_13b40
+	push hl
+	ld c, NUM_MOVES
+	ld a, [hl]
+	and a
+	jr z, .asm_13b4b
+	cp NUM_ATTACKS + 1
+	jr c, .asm_13b4d
+.asm_13b4b
+	ld [hl], POUND
+
+.asm_13b4d
+	ld a, [hl]
+	and a
+	jr z, .asm_13b55
+	cp NUM_ATTACKS + 1
+	jr c, .asm_13b5c
+
+.asm_13b55
+	xor a
+	ld [hli], a
+	dec c
+	jr nz, .asm_13b55
+	jr .asm_13b60
+
+.asm_13b5c
+	inc hl
+	dec c
+	jr nz, .asm_13b4d
+
+.asm_13b60
+	pop hl
+	push bc
+	ld bc, PARTYMON_STRUCT_LENGTH
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_13b40
+	ret
+; 13b6b
+
+.TAMAGO: ; 13b6b
+	db "タマゴ@@@"
+; 13b71
+
+Function13b71: ; 13b71
+	push de
+	ld c, 1
+	ld b, 6
+.loop
+	ld a, [de]
+	cp "@"
+	jr z, .done
+	inc de
+	inc c
+	dec b
+	jr nz, .loop
+	dec c
+	dec de
+	ld a, "@"
+	ld [de], a
+
+.done
+	pop de
+	ret
+; 13b87
--- a/wram.asm
+++ b/wram.asm
@@ -4,7 +4,6 @@
 	ds ((\1) + 7) / 8
 ENDM
 
-box_struct_length EQU 24 + NUM_MOVES * 2 ; 32
 box_struct: MACRO
 \1Species::        db
 \1Item::           db
@@ -30,7 +29,6 @@
 \1End::
 ENDM
 
-party_struct_length EQU box_struct_length + 16
 party_struct: MACRO
 	box_struct \1
 \1Status::         db
@@ -68,6 +66,7 @@
 \1Type::
 \1Type1::     db
 \1Type2::     db
+\1StructEnd::
 ENDM
 
 box: MACRO
@@ -76,7 +75,7 @@
 \1Species::         ds MONS_PER_BOX + 1
 \1Mons::
 \1Mon1::            box_struct \1Mon1
-\1Mon2::            ds box_struct_length * (MONS_PER_BOX +- 1)
+\1Mon2::            ds BOXMON_STRUCT_LENGTH * (MONS_PER_BOX +- 1)
 \1MonOT::           ds NAME_LENGTH * MONS_PER_BOX
 \1MonNicknames::    ds PKMN_NAME_LENGTH * MONS_PER_BOX
 \1MonNicknamesEnd::
@@ -129,8 +128,23 @@
                       ds 1 ; c131
                       ds 1 ; c132
 ENDM
-GLOBAL box_struct_length, party_struct_length
 
+battle_tower_struct: MACRO
+\1Name:: ds NAME_LENGTH +- 1
+\1TrainerClass:: ds 1
+\1Pkmn1:: party_struct \1Pkmn1
+\1Pkmn1Name:: ds PKMN_NAME_LENGTH
+\1Pkmn1NameEnd::
+\1Pkmn2:: party_struct \1Pkmn2
+\1Pkmn2Name:: ds PKMN_NAME_LENGTH
+\1Pkmn2NameEnd::
+\1Pkmn3:: party_struct \1Pkmn3
+\1Pkmn3Name:: ds PKMN_NAME_LENGTH
+\1Pkmn3NameEnd::
+\1TrainerData:: ds BATTLETOWER_TRAINERDATALENGTH
+\1TrainerEnd::
+endm
+
 INCLUDE "vram.asm"
 
 SECTION "Stack", WRAM0
@@ -292,9 +306,9 @@
 wc2d5:: ds 1
 wc2d6:: ds 1
 wc2d7:: ds 1
-wc2d8:: ds 1
-wc2d9:: ds 1
-wc2da:: ds 2
+wPreviousLandmark:: ds 1
+wCurrentLandmark:: ds 1
+wLandmarkSignTimer:: ds 2
 wLinkMode:: ; c2dc
 ; 0 not in link battle
 ; 1 link battle
@@ -307,10 +321,10 @@
 wc2de:: ds 1
 wc2df:: ds 3
 wMovementPerson:: ds 1
-wMovementDataPointer:: ds 3
+wMovementDataPointer:: ds 3 ; dba
 wc2e6:: ds 4
 wc2ea:: ds 1
-wMovementPointer:: ds 2
+wMovementPointer:: ds 2 ; c2eb
 	ds 3
 wc2f0:: ds 1
 wc2f1:: ds 1
@@ -320,7 +334,8 @@
 wc2f5:: ds 1
 wc2f6:: ds 1
 wc2f7:: ds 1
-wc2f8:: ds 2
+wc2f8:: ds 1
+	ds 1
 
 TileDown:: ; c2fa
 	ds 1
@@ -341,6 +356,11 @@
 	ds 1
 
 	ds 1
+
+SECTION "PARTY ICONS", WRAM0 [$c300]
+; wc300 - wc313 is a 10x2 dictionary.
+wDict_c300:: ds 10 * 2
+	ds wDict_c300 - @
 wc300:: ds 1
 wc301:: ds 1
 wc302:: ds 1
@@ -360,11 +380,22 @@
 wc311:: ds 1
 wc312:: ds 1
 wc313:: ds 1
-wPartyMonMenuIconAnims:: ds 96 ; c314
-wc374:: ds 48 ; c374
-wc3a4:: ds 8 ; c3b4
-wc3ac:: ds 8 ; c3bc
-wc3b4:: ds 1 ; c3b4
+; wPartyMonMenuIconAnims::
+; Field  0: Index
+; Fields 1-3: Loaded from Unknown_8d1c4
+wc314:: ds 16 ; c314
+wc324:: ds 16 ; c324
+wc334:: ds 16 ; c334
+wc344:: ds 16 ; c344
+wc354:: ds 16 ; c354
+wc364:: ds 16 ; c364
+wc374:: ds 16 ; c374
+wc384:: ds 16 ; c384
+wc394:: ds 16 ; c394
+wc3a4:: ds 8  ; c3a4
+wc3ac:: ds 8  ; c3ac
+; wPartyMonMenuIconAnimsEnd::
+wc3b4:: ds 1 ; something to do with wc314
 wc3b5:: ds 1
 
 CurIcon:: ; c3b6
@@ -372,8 +403,7 @@
 
 
 wc3b7:: ds 1
-wc3b8:: ds 1
-wc3b9:: ds 1
+wc3b8:: dw
 wc3ba:: ds 1
 wc3bb:: ds 1
 wc3bc:: ds 1
@@ -437,10 +467,12 @@
 wOddEggOTName:: ds PKMN_NAME_LENGTH
 	ds -70
 
+wBT_OTTemp:: battle_tower_struct wBT_OTTemp
+	ds wBT_OTTemp - @
+
 wMisc::
 wBattle::
 wc608::
-wBT_OTTempCopy:: ; used to copy the data of the BattleTower-Trainer and the 3 Pkmn
 
 wEnemyMoveStruct::  ds MOVE_LENGTH ; c608
 wc60f::
@@ -457,9 +489,11 @@
 	ds 1
 
 wc64d:: ds 1
-wc64e:: ds 2
-wc650:: ds 1
-wc651:: ds 1
+wWildMon::
+wc64e:: ds 1
+	ds 1
+wEnemyTrainerItem1:: ds 1
+wEnemyTrainerItem2:: ds 1
 wc652:: ds 4
 wc656::
 OTName:: ds NAME_LENGTH ; c656
@@ -470,7 +504,14 @@
 CurOTMon:: ; c663
 	ds 1
 
-wc664:: ds 1
+wBattleParticipantsNotFainted::
+; Bit array.  Bits 0 - 5 correspond to party members 1 - 6.
+; Bit set if the mon appears in battle.
+; Bit cleared if the mon faints.
+; Backed up if the enemy switches.
+; All bits cleared if the enemy faints.
+	ds 1
+
 TypeModifier:: ; c665
 ; >10: super-effective
 ;  10: normal
@@ -536,8 +577,8 @@
 ; 7 cant run
 ; 6 destiny bond
 ; 5 lock-on
-; 4
-; 3
+; 4 encore
+; 3 transformed
 ; 2
 ; 1
 ; 0 toxic
@@ -601,7 +642,8 @@
 
 wc686:: ds 2
 wc688:: ds 1
-wc689:: ds 1
+wKickCounter::
+wPresentPower:: ds 1
 wc68a::
 BattleScriptBuffer:: ; c68a
 	ds 40
@@ -609,7 +651,8 @@
 BattleScriptBufferLoc:: ; c6b2
 	ds 2
 
-wc6b4:: ds 2
+wTurnEnded:: ds 1
+	ds 1
 
 PlayerStats:: ; c6b6
 	ds 10
@@ -697,13 +740,15 @@
 CurEnemyMoveNum:: ; c6e9
 	ds 1
 
+wEnemyHPAtTimeOfPlayerSwitch::
 wc6ea:: ds 1
 wc6eb:: ds 1
 wPayDayMoney:: ds 3 ; c6ec
 
-	ds 1
-
+wSafariMonAngerCount:: ds 1
+wSafariMonEating::
 wc6f0:: ds 2
+wEnemyBackupDVs:: ; used when enemy is transformed
 wc6f2:: ds 2
 AlreadyDisobeyed:: ; c6f4
 	ds 1
@@ -721,7 +766,7 @@
 LastPlayerCounterMove:: ; c6f9
 	ds 1
 
-wc6fa:: ds 1
+wEnemyMinimized:: ds 1 ; c6fa
 
 AlreadyFailed:: ; c6fb
 	ds 1
@@ -728,7 +773,8 @@
 
 wc6fc:: ds 1
 wc6fd:: ds 1
-wc6fe:: ds 1
+wc6fe::
+wPlayerMinimized:: ds 1 ; c6fe
 wc6ff::
 PlayerScreens:: ; c6ff
 ; bit
@@ -791,7 +837,7 @@
 FailedMessage:: ; c70e
 	ds 1
 
-wc70f:: ds 1
+wEnemyGoesFirst:: ds 1
 wc710::
 wPlayerIsSwitching:: ds 1 ; c710
 wc711::
@@ -804,8 +850,9 @@
 	ds NUM_MOVES
 
 wc716:: ds 1
+wEnemySwitchMonParam::
 wc717:: ds 1
-wc718:: ds 1
+wEnemySwitchMonIndex:: ds 1
 wc719:: ds 1
 LastPlayerMon:: ; c71a
 wc71a:: ds 1
@@ -814,33 +861,35 @@
 LastEnemyMove:: ; c71c
 	ds 1
 
-wc71d:: ds 1
-wc71e:: ds 1
+wPlayerFutureSightCount:: ds 1
+wEnemyFutureSightCount:: ds 1
 wc71f:: ds 1
 wc720:: ds 4 ; copy from/to EnemyMonBaseStats, length=7
 wc724:: ds 3
 wc727:: ds 2
 wc729:: ds 2
-wc72b:: ds 1
-wc72c:: ds 1
+wPlayerRageCounter:: ds 1
+wEnemyRageCounter:: ds 1
 wc72d:: ds 1 ; if 0 then PrintButItFailed
-wc72e:: ds 1
-wc72f:: ds 1
-wc730:: ds 1
-wc731:: ds 1
-wc732:: ds 1
-wc733:: ds 1
+wPlayerTrappingMove:: ds 1
+wEnemyTrappingMove:: ds 1
+wPlayerWrapCount:: ds 1
+wEnemyWrapCount:: ds 1
+wPlayerCharging:: ds 1
+wEnemyCharging:: ds 1
 wc734::
 BattleEnded:: ; c734
 	ds 1
 
+wWildMonMoves::
 wc735:: ds 1
 wc736:: ds 3
+wWildMonPP::
 wc739:: ds 4
 wc73d:: ds 1
 wc73e:: ds 1
-wc73f:: ds 1
-wc740:: ds 1
+wPlayerJustGotFrozen:: ds 1
+wEnemyJustGotFrozen:: ds 1
 wc741::
 wBattleEnd::
 ; c741
@@ -883,25 +932,6 @@
 
 wc7e8:: ds 24
 
-
-RSSET 0 ; Offsets for wBT_OTTempCopy:: @ $c608
-wBT_OTTempCopy_0			RB 10	                 ; $c608
-wBT_OTTempCopy_TrainerClass	RB 1	                 ; $c608 + $a = $c612
-wBT_OTTempCopy_Pkmn1		RB party_struct_length   ; $c608 + $b = $c613
-wBT_OTTempCopy_Pkmn1Name	RB PKMN_NAME_LENGTH + -1 ; $c608 + $45 = $c64d
-wBT_OTTempCopy_45           RB 1
-wBT_OTTempCopy_Pkmn2		RB party_struct_length   ; $c608 + $46 = $c64e
-wBT_OTTempCopy_Pkmn2Name	RB PKMN_NAME_LENGTH + -1 ; $c608 + $76 = $c67e
-wBT_OTTempCopy_80           RB 1
-wBT_OTTempCopy_Pkmn3		RB party_struct_length   ; $c608 + $81 = $c689
-wBT_OTTempCopy_Pkmn3Name	RB PKMN_NAME_LENGTH + -1 ; $c608 + $b1 = $c6b9
-wBT_OTTempCopy_BB           RB 1
-
-GLOBAL wBT_OTTempCopy_TrainerClass, wBT_OTTempCopy_Pkmn1, wBT_OTTempCopy_Pkmn1Name, wBT_OTTempCopy_Pkmn2, wBT_OTTempCopy_Pkmn2Name, wBT_OTTempCopy_Pkmn3, wBT_OTTempCopy_Pkmn3Name
-GLOBAL wBT_OTTempCopy_45, wBT_OTTempCopy_80, wBT_OTTempCopy_BB
-
-
-
 SECTION "Overworld Map", WRAM0 [$c800]
 
 wc800::
@@ -975,8 +1005,15 @@
 wca85:: ds 1
 wca86:: ds 1
 wca87:: ds 1
+
+; Gameboy Printer
 wca88:: ds 1
-wca89:: ds 1
+wca89::
+; bit 7: set if error 1
+; bit 6: set if error 4
+; bit 5: set if error 3
+	ds 1
+
 wca8a:: ds 1
 wca8b:: ds 1
 wca8c:: ds 1
@@ -983,6 +1020,8 @@
 wca8d:: ds 1
 wca8e:: ds 1
 wca8f:: ds 1
+
+; tilemap backup?
 wca90:: ds 16
 wcaa0:: ds 3
 wcaa3:: ds 2
@@ -1017,6 +1056,7 @@
 wcbe8:: ds 1
 wcbe9:: ds 1
 wcbea:: ds 14
+
 wcbf8:: ds 2
 wcbfa:: ds 1
 wcbfb:: ds 79
@@ -1186,11 +1226,13 @@
 	ds 1
 
 CurSpecies:: ; cf60
+CurMove::
 	ds 1
 
 wNamedObjectTypeBuffer:: ds 1
 	ds 1
-wJumptableIndex:: ds 1
+wJumptableIndex::
+wcf63:: ds 1
 wNrOfBeatenBattleTowerTrainers::
 wMomBankDigitCursorPosition::
 wIntroSceneFrameCounter::
@@ -1217,6 +1259,7 @@
 Requested1bppDest:: ; cf6f
 	ds 2
 
+; something to do with menu
 wcf71:: ds 1
 wcf72:: ds 1
 wcf73:: ds 1
@@ -1228,22 +1271,32 @@
 wcf77:: ds 1
 wcf78:: ds 9
 
-; menu data header buffer (ds 16)
-wcf81:: ds 1
-
-; dw related to tilemap
+; menu data header
+wMenuDataHeader:: ; cf81
+wMenuFlags:: ds 1
 wMenuBorderTopCoord:: ds 1
 wMenuBorderLeftCoord:: ds 1
 wMenuBorderBottomCoord:: ds 1
 wMenuBorderRightCoord:: ds 1
-
-wcf86:: ds 1
-wcf87:: ds 1
+wMenuData2Pointer:: ds 2
 wMenuCursorBuffer:: ds 2
-wcf8a:: ds 7 ; menu data 2 bank?
-wcf91:: ds 1
+; end menu data header
+wMenuDataBank:: ds 1 ; menu data bank?
+	ds 6
+wMenuDataHeaderEnd::
 
-wcf92:: ds 1
+wMenuData2::
+wMenuData2Flags:: ds 1 ; cf91
+; bit 7: When set, start printing text one tile to the right of the border
+; bit 6: When set, start printing text one tile below the border
+; bit 5: ????
+; bit 4: ????
+; bit 3: ????
+; bit 2: ????
+; bit 1: ????
+; bit 0: ????
+
+wMenuData2Items:: ds 1
 wcf93:: ds 1
 wcf94:: ds 1
 wcf95:: ds 1 ; bank
@@ -1252,15 +1305,17 @@
 wcf98:: ds 3
 wcf9b:: ds 3
 wcf9e:: ds 3
+wMenuData2End::
 wcfa1:: ds 1
+
 wcfa2:: ds 1
 wcfa3:: ds 1
 wcfa4:: ds 1
-wcfa5:: ds 1
-wcfa6:: ds 1
+wcfa5:: ds 1 ; dynamic menu flags?
+wcfa6:: ds 1 ; dynamic menu flags?
 wcfa7:: ds 1
 wcfa8:: ds 1
-wcfa9:: ds 1
+MenuSelection2:: ds 1
 wcfaa:: ds 1
 wcfab:: ds 1
 wcfac:: ds 1
@@ -1279,7 +1334,7 @@
 	ds 2
 PredefAddress:: ; cfb7
 	ds 2
-
+wFarCallBCBuffer:: ; cfb9
 	ds 2
 
 wcfbb:: ds 1
@@ -1362,60 +1417,79 @@
 
 SECTION "WRAM 1", WRAMX, BANK [1]
 
-MiscBuffer0::
 wd000:: ds 1
-MiscBuffer1::
+DefaultSpawnpoint::
 wd001:: ds 1
 wd002::
-MiscBuffer2::
 PhoneScriptBank::
-DefaultFlypoint:: ; d002
 LuckyNumberDigit1Buffer::
+wCurrentRadioLine::
+wMovementBufferCount::
+wMartItem1BCD::
 	ds 1
 wd003::
-MiscBuffer3::
 LuckyNumberDigit2Buffer::
 PhoneCallerLo::
+wNextRadioLine::
+wMovementBufferPerson::
 	ds 1
 wd004::
-MiscBuffer4::
 LuckyNumberDigit3Buffer::
 PhoneCallerHi::
+wRadioTextDelay::
 	ds 1
 wd005::
-MiscBuffer5::
 LuckyNumberDigit4Buffer::
 StartFlypoint:: ; d005
+wNumRadioLinesPrinted::
+wMartItem2BCD::
 	ds 1
 wd006::
-MiscBuffer6::
 LuckyNumberDigit5Buffer::
 EndFlypoint:: ; d006
+wOaksPkmnTalkSegmentCounter::
 	ds 1
 
 wd007::
-MiscBuffer7::
 MovementBuffer:: ; d007
 	ds 1
 
+wMartItem3BCD::
 wd008:: ds 2
 wd00a:: ds 1
+wMartItem4BCD::
 wd00b:: ds 1
+
+wRadioText:: ds 2 * SCREEN_WIDTH
+wRadioTextEnd::
+	ds wRadioText - @
+
 wd00c:: ds 1
 wd00d:: ds 1
+wMartItem5BCD::
 wd00e:: ds 1
 wd00f:: ds 1
 wd010:: ds 1
+wMartItem6BCD::
 wd011:: ds 1
 wd012:: ds 1
 wd013:: ds 1
+wMartItem7BCD::
 wd014:: ds 2
 wd016:: ds 1
+wMartItem8BCD::
 wd017:: ds 1
+
+wd018_Mon:: party_struct wd018_Mon
+	ds wd018_Mon - @
+
 wd018:: ds 1
 wd019:: ds 1
-wd01a:: ds 5
+wMartItem9BCD::
+wd01a:: ds 3
+wMartItem10BCD:: ds 2
 wd01f:: ds 1
+wMartItemBCDEnd::
 wd020:: ds 3
 wd023:: ds 5
 wd028:: ds 2
@@ -1437,7 +1511,9 @@
 CurInput::
 EngineBuffer1:: ; d03e
 	ds 1
+
 wd03f::
+wJumpStdScriptBuffer::
 CurFruit:: ; d03f
 MartPointerBank::
 EngineBuffer2::
@@ -1450,20 +1526,29 @@
 
 wd041::
 EngineBuffer4::
+wTempTrainerEventFlagLo::
 	ds 1
+
+wTempTrainerEventFlagHi::
 MovementAnimation:: ; d042
 	ds 1
 
+wTempTrainerClass::
 WalkingDirection:: ; d043
+wBargainShopFlags::
 	ds 1
 
+wTempTrainerID::
 FacingDirection:: ; d044
 	ds 1
 
-WalkingX:: ; d045
+wSeenTextPointer::
+WalkingX::
+wd045:: ; d045
 	ds 1
 WalkingY:: ; d046
 	ds 1
+
 WalkingTile:: ; d047
 wWinTextPointer::
 	ds 1
@@ -1470,11 +1555,13 @@
 
 wd048:: ds 1
 wLossTextPointer:: ds 2
+wScriptAfterPointer::
 wd04b:: ds 2
 wd04d:: ds 1
 MenuItemsListEnd::
 wd04e:: ds 2
-wd050:: ds 10
+wOaksPkmnTalkPkmnNameBuffer::
+wd050:: ds PKMN_NAME_LENGTH +- 1
 wd05a:: ds 12
 wd066:: ds 10
 wd070:: ds 3
@@ -1513,6 +1600,7 @@
 wd0e0:: ds 1
 wd0e1:: ds 1
 wd0e2:: ds 1
+wMoveSwapBuffer::
 wd0e3:: ds 1
 wd0e4:: ds 4
 wQueuedScriptBank:: ds 1
@@ -1535,7 +1623,7 @@
 	ds 1
 wd0f1:: ds 1
 wd0f2:: ds 14
-
+CurMartEnd::
 wd100:: ds 1
 
 wd101:: ds 1
@@ -1548,6 +1636,7 @@
 	ds 1
 
 ItemCountBuffer:: ; d107
+wMartItemID::
 wd107:: ds 1
 
 CurPartySpecies:: ; d108
@@ -1560,6 +1649,11 @@
 	ds 1
 
 wd10a:: ds 1
+wPokemonWithdrawDepositParameter::
+; 0: Take from PC
+; 1: Put into PC
+; 2: Take from Daycare
+; 3: Put into Daycare
 wd10b:: ds 1
 wItemQuantityChangeBuffer:: ds 1
 wItemQuantityBuffer:: ds 1
@@ -1568,7 +1662,7 @@
 TempMon::
 	party_struct TempMon
 
-wd13e:: ds 1
+wSpriteFlags:: ds 1
 
 wd13f:: ds 2
 
@@ -1583,14 +1677,23 @@
 	ds 1
 
 wd144:: ds 2
+
+; used when following a map warp
+wNextWarp::
 wd146:: ds 1
+wNextMapGroup::
 wd147:: ds 1
+wNextMapNumber::
 wd148:: ds 1
+wPrevWarp::
 wd149:: ds 1
+wPrevMapGroup::
 wd14a:: ds 1
+wPrevMapNumber::
 wd14b:: ds 1
-wd14c:: ds 1
-wd14d:: ds 1
+
+wd14c:: ds 1 ; used in FollowNotExact
+wd14d:: ds 1 ; used in FollowNotExact
 wd14e:: ds 1
 wd14f:: ds 1
 wd150:: ds 1
@@ -1598,7 +1701,11 @@
 wd152:: ds 1
 wd153:: ds 1
 
-UsedSprites:: ; d154
+UsedSprites:: ds 64
+UsedSpritesEnd::
+	ds UsedSprites - @
+
+wd154:: ; d154
 	ds 31 ; 64
 
 wd173:: ds 1
@@ -1610,14 +1717,13 @@
 wd191:: ds 1
 wd192:: ds 1
 wd193:: ds 1
-UsedSpritesEnd::
-wd194:: ds 1
-wd195:: ds 1
+wd194:: dw
 wd196:: ds 1
-wd197:: ds 2
-wd199:: ds 1
+wd197:: ds 1
+wSecondMapHeaderBank:: ds 1
+wTileset:: ds 1
 wPermission:: ds 1
-	ds 2
+wSecondMapHeaderAddr:: dw
 
 ; width/height are in blocks (2x2 walkable tiles, 4x4 graphics tiles)
 MapHeader:: ; d19d
@@ -1760,6 +1866,7 @@
 wd1ed:: ds 1
 Buffer5::
 wd1ee:: ds 1
+Buffer6::
 wd1ef:: ds 1
 wd1f0:: ds 1
 wd1f1:: ds 1
@@ -1815,7 +1922,7 @@
 ; (Joey, Mikey, Albert, etc.)
 	ds 1
 
-wd232:: ds 1
+wForcedSwitch:: ds 1
 
 TrainerClass:: ; d233
 	ds 1
@@ -1885,6 +1992,7 @@
 wFoundMatchingIDInParty::
 wNamedObjectIndexBuffer::
 wCurTMHM::
+wTypeMatchup::
 wd265:: ds 1
 wd266:: ds 1
 wd267:: ds 1
@@ -1895,11 +2003,16 @@
 
 	ds 1
 SECTION "Enemy Party", WRAMX, BANK [1]
-OTPlayerName::
+OTPlayerName:: ds NAME_LENGTH
+	ds OTPlayerName - @
+wPokedexShowPointerAddr::
 wd26b:: ds 1
 wd26c:: ds 1
-wd26d:: ds 4
+wPokedexShowPointerBank::
+wd26d:: ds 1
+	ds 3
 wd271:: ds 5
+OTPlayerID::
 wd276:: ds 10
 
 OTPartyCount::   ds 1 ; d280
@@ -2056,7 +2169,7 @@
 \1Palette:: ds 1
 \1Walking:: ds 1
 \1Direction:: ds 1
-	ds 1
+\1Object09:: ds 1
 \1StepDuration:: ds 1
 \1Action:: ds 1
 \1Object12:: ds 1
@@ -2091,10 +2204,42 @@
 	object_struct Object12
 
 wd6de::
-	ds 64
+	ds $40
 
+map_object: MACRO
+\1Object::
+\1ObjectStructID::  ds 1
+\1ObjectSprite::    ds 1
+\1ObjectYCoord::    ds 1
+\1ObjectXCoord::    ds 1
+\1ObjectMovement::  ds 1
+\1ObjectRadius::    ds 1
+\1ObjectHour::      ds 1
+\1ObjectTimeOfDay:: ds 1
+\1ObjectColor::     ds 1
+\1ObjectRange::     ds 1
+\1ObjectScript::    ds 2
+\1ObjectEventFlag:: ds 2
+	ds 2
+endm
+
 MapObjects:: ; d71e
-	ds OBJECT_LENGTH * NUM_OBJECTS
+	map_object Player
+	map_object Map1
+	map_object Map2
+	map_object Map3
+	map_object Map4
+	map_object Map5
+	map_object Map6
+	map_object Map7
+	map_object Map8
+	map_object Map9
+	map_object Map10
+	map_object Map11
+	map_object Map12
+	map_object Map13
+	map_object Map14
+	map_object Map15
 
 wObjectMasks:: ds NUM_OBJECTS ; d81e
 
@@ -2101,8 +2246,8 @@
 VariableSprites:: ; d82e
 	ds $10
 
-wd83e:: ds 3
-
+wEnteredMapFromContinue:: ds 1 ; d83e
+	ds 2
 TimeOfDayPal:: ; d841
 	ds 1
 	ds 4
@@ -2324,7 +2469,7 @@
 	ds 2
 
 ; 8 chars + $50
-wBoxNames:: ds 9 * NUM_BOXES ; db75
+wBoxNames:: ds BOX_NAME_LENGTH * NUM_BOXES ; db75
 
 wCelebiEvent:: ds 1
 	ds 1
@@ -2346,9 +2491,12 @@
 wCurrentMapXYTriggerHeaderPointer:: ds 1
 wdc00:: ds 1
 wCurrentMapSignpostCount:: ds 1
+wCurrentMapSignpostHeaderPointer::
 wdc02:: ds 1
 wdc03:: ds 1
+wCurrentMapPersonEventCount::
 wdc04:: ds 1
+wCurrentMapPersonEventHeaderPointer::
 wdc05:: ds 1
 wdc06:: ds 1
 wCurrMapTriggerCount:: ds 1
@@ -2431,8 +2579,10 @@
 
 	ds 2
 wdc77:: ds 2
-wdc79:: ds 1
-wdc7a:: ds 2
+wdc79::
+wParkBallsRemaining::
+wSafariBallsRemaining:: ds 1
+wSafariTimeRemaining:: ds 2
 wPhoneList:: ds CONTACT_LIST_SIZE
 	ds 23
 wLuckyNumberShowFlag:: ds 2 ; dc9d
@@ -2452,10 +2602,10 @@
 wdca9:: ds 1
 wdcaa:: ds 1
 wdcab:: ds 1
-wdcac:: ds 1
-
 ; used on maps like second floor pokécenter, which are reused, so we know which
 ; map to return to
+BackupWarpNumber:: ; dcac
+	ds 1
 BackupMapGroup:: ; dcad
 	ds 1
 BackupMapNumber:: ; dcae
@@ -2463,7 +2613,9 @@
 
 	ds 3
 
+wLastSpawnMapGroup::
 wdcb2:: ds 1
+wLastSpawnMapNumber::
 wdcb3:: ds 1
 
 WarpNumber:: ; dcb4
@@ -2561,7 +2713,8 @@
 wEggOT::   ds NAME_LENGTH ; df70
 wEggMon::  box_struct wEggMon ; df7b
 
-wdf9b:: ds 1
+wdf9b::
+wBugContestSecondPartySpecies:: ds 1
 
 
 wdf9c::
@@ -2598,20 +2751,19 @@
 
 SECTION "Pic Animations", WRAMX, BANK [2]
 
-w2_d000::
+TempTileMap::
 ; 20x18 grid of 8x8 tiles
 	ds SCREEN_WIDTH * SCREEN_HEIGHT ; $168 = 360
-
-w2_d168:: ds 1
-w2_d169:: ds 1
-w2_d16a:: ds 1
-w2_d16b:: ds 1
-w2_d16c:: ds 1
-w2_d16d:: ds 1
+; PokeAnim Header
+wPokeAnimSceneIndex:: ds 1
+wPokeAnimPointer:: ds 2
+wPokeAnimSpecies:: ds 1
+wPokeAnimUnownLetter:: ds 1
+wPokeAnimSpeciesOrUnown:: ds 1
 w2_d16e:: ds 1
-w2_d16f:: ds 1
-w2_d170:: ds 1
-w2_d171:: ds 1
+wPokeAnimCoord:: ds 2
+wPokeAnimFrontpicHeight:: ds 1
+; PokeAnim Data
 w2_d172:: ds 1
 w2_d173:: ds 1
 w2_d174:: ds 1
@@ -2627,7 +2779,7 @@
 w2_d17e:: ds 1
 w2_d17f:: ds 1
 w2_d180:: ds 1
-w2_d181:: ds 1
+wPokeAnimWaitCounter:: ds 1
 w2_d182:: ds 1
 w2_d183:: ds 1
 w2_d184:: ds 1
@@ -2635,47 +2787,36 @@
 w2_d186:: ds 1
 w2_d187:: ds 1
 w2_d188:: ds 1
+	ds 8
+wPokeAnimStructEnd::
 
 
 SECTION "WRAM 3", WRAMX, BANK [3]
 
 w3_d000:: ; d000
-	ds $100
+	ds $80
+w3_d080::
+	ds $10
+w3_d090::
+	ds $70
 
-BT_OTrainer::
 w3_d100:: ; BattleTower OpponentTrainer-Data (length = 0xe0 = $a + $1 + 3*$3b + $24)
-BT_OTrainer_Name::
-	ds $A
-BT_OTrainer_TrainerClass::
-	ds $1
-BT_OTPkmn1:: ; w3_d10b
-	ds $1
-BT_OTPkmn1Item::
-	ds $3b-1
-BT_OTPkmn2:: ; w3_d146
-	ds $1
-BT_OTPkmn2Item::
-	ds $3b-1
-BT_OTPkmn3:: ; w3_d181
-	ds $1
-BT_OTPkmn3Item::
-	ds $3b-1
-	
-	ds $24
-BT_OTrainerEnd:: ; we_d1e0
-	
+BT_OTTrainer:: battle_tower_struct BT_OT
+; d1e0	
 	ds $20
-	
+BT_TrainerTextIndex::
 	ds $600
 
 wBTChoiceOfLvlGroup::
-w3_d800:: ds 1
+w3_d800:: ds $400
+w3_dc00:: ds $168
+w3_dd68::
 
 
 SECTION "GBC Video", WRAMX, BANK [5]
 
 ; 8 4-color palettes
-Unkn1Pals:: ds 8 * 8 ; d000
+wMapPals:: ds 8 * 8 ; d000
 Unkn2Pals:: ds 8 * 8 ; d040
 BGPals::    ds 8 * 8 ; d080
 OBPals::    ds 8 * 8 ; d0c0
@@ -2682,7 +2823,7 @@
 
 LYOverrides:: ; d100
 	ds SCREEN_HEIGHT_PX
-LYOverridesEnd::
+LYOverridesEnd:: ; d190
 
 	ds 1
 w5_d191:: ds 1
@@ -2732,8 +2873,21 @@
 BattleAnimTemps:: ; d419
 	ds 8
 	ds 1
-w5_d422:: ds $40
+w5_d422:: ds $32
+wBattleAnimEnd::
+	ds $e
+; d462
 
+SECTION "WRAM 5 MOBILE", WRAMX [$d800], BANK [5]
+w5_d800:: ds $200
+w5_da00:: ds $200
+w5_dc00:: ds $d
+w5_dc0d:: ds 4
+w5_dc11:: ds 9
+w5_dc1a:: ds $c
+w5_dc26:: ds $c
+w5_dc32:: ds $c
+w5_dc3e:: ds $c
 
 SECTION "WRAM 6", WRAMX, BANK [6]
 
--